@fundamental-ngx/core 0.47.2-rc.0 → 0.47.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/action-bar/action-bar.component.mjs +2 -2
- package/esm2022/action-sheet/action-sheet.component.mjs +3 -3
- package/esm2022/avatar/avatar.component.mjs +3 -3
- package/esm2022/avatar-group/avatar-group.component.mjs +3 -3
- package/esm2022/bar/bar.component.mjs +2 -2
- package/esm2022/breadcrumb/breadcrumb.component.mjs +3 -3
- package/esm2022/busy-indicator/busy-indicator.component.mjs +3 -3
- package/esm2022/button/button.component.mjs +3 -3
- package/esm2022/calendar/calendar.component.mjs +3 -3
- package/esm2022/card/card.component.mjs +3 -3
- package/esm2022/carousel/carousel.component.mjs +3 -3
- package/esm2022/checkbox/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/dialog/dialog.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page.component.mjs +3 -3
- package/esm2022/dynamic-side-content/dynamic-side-content.component.mjs +3 -3
- package/esm2022/facets/facet/facet.component.mjs +3 -3
- package/esm2022/feed-input/feed-input.component.mjs +2 -2
- package/esm2022/feed-list-item/components/list/feed-list.component.mjs +2 -2
- package/esm2022/file-uploader/file-uploader.component.mjs +3 -3
- package/esm2022/fixed-card-layout/fixed-card-layout.component.mjs +3 -3
- package/esm2022/flexible-column-layout/flexible-column-layout.component.mjs +3 -3
- package/esm2022/form/fieldset/fieldset.component.mjs +2 -2
- package/esm2022/form/form-control/form-control.component.mjs +3 -3
- package/esm2022/form/form-group/form-group.component.mjs +2 -2
- package/esm2022/form/form-header/form-header.component.mjs +2 -2
- package/esm2022/form/form-item/form-item.component.mjs +2 -2
- package/esm2022/form/form-label/form-label.component.mjs +3 -3
- package/esm2022/form/form-message/form-message.component.mjs +2 -2
- package/esm2022/generic-tag/generic-tag.component.mjs +3 -3
- package/esm2022/grid-list/components/grid-list/grid-list.component.mjs +2 -2
- package/esm2022/icon/icon.component.mjs +2 -2
- package/esm2022/illustrated-message/illustrated-message.component.mjs +3 -3
- package/esm2022/info-label/info-label.component.mjs +3 -3
- package/esm2022/input-group/input-group.component.mjs +3 -3
- package/esm2022/layout-grid/layout-grid.component.mjs +3 -3
- package/esm2022/layout-panel/layout-panel.component.mjs +2 -2
- package/esm2022/link/link.component.mjs +3 -3
- package/esm2022/list/list-item/list-item.component.mjs +1 -4
- package/esm2022/list/list-navigation-item/list-navigation-item.component.mjs +3 -3
- package/esm2022/list/list.component.mjs +2 -2
- package/esm2022/menu/menu.component.mjs +2 -2
- package/esm2022/message-box/message-box.component.mjs +2 -2
- package/esm2022/message-page/message-page.component.mjs +3 -3
- package/esm2022/message-strip/message-strip.component.mjs +3 -3
- package/esm2022/message-toast/message-toast.component.mjs +3 -3
- package/esm2022/micro-process-flow/components/micro-process-flow/micro-process-flow.component.mjs +3 -3
- package/esm2022/multi-combobox/multi-combobox.component.mjs +3 -3
- package/esm2022/notification/notification/notification.component.mjs +2 -2
- package/esm2022/object-attribute/object-attribute.component.mjs +3 -3
- package/esm2022/object-identifier/object-identifier.component.mjs +3 -3
- package/esm2022/object-marker/object-marker.component.mjs +3 -3
- package/esm2022/object-number/object-number.component.mjs +3 -3
- package/esm2022/object-status/object-status.component.mjs +3 -3
- package/esm2022/pagination/pagination.component.mjs +3 -3
- package/esm2022/panel/panel.component.mjs +3 -3
- package/esm2022/popover/popover-body/popover-body.component.mjs +3 -3
- package/esm2022/product-switch/product-switch-body/product-switch-body.component.mjs +3 -3
- package/esm2022/progress-indicator/progress-indicator.component.mjs +3 -3
- package/esm2022/quick-view/quick-view/quick-view.component.mjs +2 -2
- package/esm2022/radio/radio-button/radio-button.component.mjs +3 -3
- package/esm2022/rating-indicator/components/rating-indicator.component.mjs +3 -3
- package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.mjs +3 -3
- package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs +2 -2
- package/esm2022/segmented-button/segmented-button.component.mjs +2 -2
- package/esm2022/select/select.component.mjs +3 -3
- package/esm2022/shellbar/shellbar.component.mjs +3 -3
- package/esm2022/side-navigation/side-navigation.component.mjs +3 -3
- package/esm2022/skeleton/components/skeleton.component.mjs +3 -3
- package/esm2022/slider/slider.component.mjs +3 -3
- package/esm2022/split-button/split-button.component.mjs +3 -3
- package/esm2022/splitter/splitter.component.mjs +2 -2
- package/esm2022/status-indicator/status-indicator.component.mjs +3 -3
- package/esm2022/step-input/step-input.component.mjs +3 -3
- package/esm2022/switch/switch.component.mjs +3 -3
- package/esm2022/table/table-wrapper.component.mjs +2 -2
- package/esm2022/table/table.component.mjs +2 -2
- package/esm2022/tabs/tab-list.component.mjs +3 -3
- package/esm2022/tabs/tab-nav/tab-nav.component.mjs +2 -2
- package/esm2022/text/text.component.mjs +3 -3
- package/esm2022/tile/tile.component.mjs +3 -3
- package/esm2022/time/time.component.mjs +3 -3
- package/esm2022/title/title.component.mjs +2 -2
- package/esm2022/token/token.component.mjs +3 -3
- package/esm2022/token/tokenizer.component.mjs +3 -3
- package/esm2022/toolbar/toolbar.component.mjs +3 -3
- package/esm2022/tree/tree.component.mjs +3 -3
- package/esm2022/upload-collection/upload-collection.component.mjs +3 -3
- package/esm2022/vertical-navigation/vertical-navigation-main-navigation.component.mjs +3 -3
- package/esm2022/vertical-navigation/vertical-navigation.component.mjs +3 -3
- package/esm2022/wizard/wizard.component.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-action-bar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-action-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-avatar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-bar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-calendar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-card.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-carousel.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-checkbox.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dialog.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-facets.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-facets.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-feed-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-file-uploader.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-file-uploader.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs +14 -14
- package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-generic-tag.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-generic-tag.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-grid-list.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-icon.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-icon.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-illustrated-message.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-info-label.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-input-group.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-layout-grid.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-layout-grid.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-layout-panel.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-layout-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-list.mjs +4 -7
- package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-menu.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-box.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-page.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-strip.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-toast.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-toast.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-notification.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-attribute.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-attribute.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-marker.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-marker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-number.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-status.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-pagination.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-panel.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-popover.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-product-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-progress-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-progress-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-quick-view.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-quick-view.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-radio.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-select.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-shellbar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-side-navigation.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-side-navigation.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-skeleton.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-skeleton.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-slider.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-split-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-splitter.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-splitter.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-status-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-status-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-step-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-table.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tabs.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-text.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tile.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-tile.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-title.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-title.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-token.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-toolbar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tree.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-wizard.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/fundamental-ngx-core-v0.47.2.tgz +0 -0
- package/package.json +5 -5
- package/schematics/add-dependencies/index.js +8 -8
- package/fundamental-ngx-core-v0.47.2-rc.0.tgz +0 -0
|
@@ -332,7 +332,7 @@ export class FixedCardLayoutComponent {
|
|
|
332
332
|
}));
|
|
333
333
|
}
|
|
334
334
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: FixedCardLayoutComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
335
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: FixedCardLayoutComponent, isStandalone: true, selector: "fd-fixed-card-layout", inputs: { disableDragDrop: "disableDragDrop", dragStartDelay: "dragStartDelay", cardMinimumWidth: "cardMinimumWidth", columnsWidthConfig: "columnsWidthConfig", maxColumns: "maxColumns" }, outputs: { layoutChange: "layoutChange", cardDraggedDropped: "cardDraggedDropped" }, host: { listeners: { "keydown": "handleKeydown($event)" }, classAttribute: "fd-fixed-card-layout" }, queries: [{ propertyName: "_cards", predicate: CardDefinitionDirective }], viewQueries: [{ propertyName: "_layout", first: true, predicate: ["layout"], descendants: true }, { propertyName: "_cardContainers", predicate: FixedCardLayoutItemComponent, descendants: true }, { propertyName: "_dragList", predicate: CdkDrag, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #layout\n cdkDropListGroup\n fdDndKeyboardGroup\n class=\"fd-fixed-card-layout__card-layout fd-fixed-card-layout__card-layout--columns-{{ this._numberOfColumns }}\"\n [style.height]=\"_containerHeight + 'px'\"\n [groups]=\"_cardColumns\"\n orientation=\"horizontal\"\n [customMoveFn]=\"_customMoveFn\"\n [customTransferFn]=\"_customTransferFn\"\n [disableKeyboardDragDrop]=\"disableDragDrop\"\n [cdkDropListGroupDisabled]=\"disableDragDrop\"\n [attr.dir]=\"_dir\"\n>\n <div\n *ngFor=\"let card of _cardsArray; let cardIndex = index\"\n cdkDropList\n class=\"fd-fixed-card-layout__card\"\n [class.fd-fixed-card-layout__card--single]=\"_singleItemColumns.has(card.fdCardDef)\"\n [style.min-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [style.max-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [style.display]=\"_hiddenCard === card ? 'none' : 'block'\"\n [cdkDropListData]=\"cardIndex\"\n [cdkDropListSortPredicate]=\"_sortPredicateFn\"\n (cdkDropListEntered)=\"_onDropListEntered($event)\"\n >\n <div\n cdkDrag\n fdDndKeyboardItem\n tabindex=\"0\"\n cdkDragPreviewClass=\"fd-fixed-card-layout__card-preview\"\n [cdkDragData]=\"card\"\n [cdkDragStartDelay]=\"dragStartDelay\"\n [itemIndex]=\"_itemIndexes.get(card.fdCardDef)!\"\n [groupIndex]=\"_groupIndexes.get(card.fdCardDef)!\"\n (cdkDragStarted)=\"_onDragStarted($event)\"\n (cdkDragDropped)=\"_onDragDropped($event)\"\n >\n <fd-fixed-card-layout-item>\n <ng-container *ngTemplateOutlet=\"card?.template || null\"> </ng-container>\n </fd-fixed-card-layout-item>\n\n <div\n *cdkDragPlaceholder\n class=\"fd-fixed-card-layout__card-placeholder\"\n [style.margin-bottom.rem]=\"+_placeholderMargin\"\n >\n <ng-container *ngTemplateOutlet=\"card?.template || null\"></ng-container>\n </div>\n </div>\n </div>\n\n <ng-container *ngFor=\"let column of _cardColumns; let last = last; let index = index\">\n <div *ngIf=\"!last\" class=\"fd-fixed-card-layout__clearfix\" [style.order]=\"index + 1\"></div>\n </ng-container>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.32.0-rc.7\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-fixed-card-layout{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-fixed-card-layout:after,.fd-fixed-card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout{-webkit-box-sizing:border-box;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-box-align:center;-ms-flex-align:center;-ms-flex-wrap:wrap;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:flex-start;line-height:var(--sapContent_LineHeight);margin:-1rem 0 0 -1rem;padding:0}.fd-fixed-card-layout__card-layout:after,.fd-fixed-card-layout__card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card-layout{margin-left:0;margin-right:-1rem}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card{width:50%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(2n){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(odd){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card{width:33.3333333333%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card{width:25%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card{width:20%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card{width:16.6666666667%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card{width:14.2857142857%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card{width:12.5%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card{width:11.1111111111%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n){order:9}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card{width:10%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n){order:10}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+9){order:9}.fd-fixed-card-layout__card,.fd-fixed-card-layout__card-placeholder{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;min-height:.0625rem;min-width:20rem;padding:0}.fd-fixed-card-layout__card-placeholder:after,.fd-fixed-card-layout__card-placeholder:before,.fd-fixed-card-layout__card:after,.fd-fixed-card-layout__card:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{order:1;padding-left:1rem;padding-top:1rem}.fd-fixed-card-layout__card[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card{padding-left:0;padding-right:1rem}.fd-fixed-card-layout__card--single{flex-basis:100%}.fd-fixed-card-layout__card:empty{padding-top:0}.fd-fixed-card-layout__card-placeholder{border:.125rem dashed var(--sapContent_DragAndDropActiveColor);cursor:grabbing;opacity:.3}.fd-fixed-card-layout__card-preview{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--sapContent_Shadow2);border:0;border-radius:var(--sapElement_BorderCornerRadius);box-shadow:var(--sapContent_Shadow2);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-fixed-card-layout__card-preview:after,.fd-fixed-card-layout__card-preview:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__clearfix{-webkit-box-sizing:border-box;-ms-flex-preferred-size:100%;border:0;box-sizing:border-box;color:var(--sapTextColor);flex-basis:100%;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;width:0}.fd-fixed-card-layout__clearfix:after,.fd-fixed-card-layout__clearfix:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{width:100%}.fd-fixed-card-layout__card-layout{align-items:flex-start}.fd-fixed-card-layout__card-placeholder{width:100%;min-width:100%;max-width:100%}\n"], dependencies: [{ kind: "directive", type: CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "ngmodule", type: DragAndDropModule }, { kind: "directive", type: i1.DndKeyboardGroupDirective, selector: "[fdkDndKeyboardGroup], [fdDndKeyboardGroup]", inputs: ["groups", "disableKeyboardDragDrop", "orientation", "customMoveFn", "customTransferFn"] }, { kind: "directive", type: i1.DndKeyboardItemDirective, selector: "[fdkDndKeyboardItem], [fdDndKeyboardItem]", inputs: ["itemIndex", "groupIndex"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: FixedCardLayoutItemComponent, selector: "fd-fixed-card-layout-item" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
335
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: FixedCardLayoutComponent, isStandalone: true, selector: "fd-fixed-card-layout", inputs: { disableDragDrop: "disableDragDrop", dragStartDelay: "dragStartDelay", cardMinimumWidth: "cardMinimumWidth", columnsWidthConfig: "columnsWidthConfig", maxColumns: "maxColumns" }, outputs: { layoutChange: "layoutChange", cardDraggedDropped: "cardDraggedDropped" }, host: { listeners: { "keydown": "handleKeydown($event)" }, classAttribute: "fd-fixed-card-layout" }, queries: [{ propertyName: "_cards", predicate: CardDefinitionDirective }], viewQueries: [{ propertyName: "_layout", first: true, predicate: ["layout"], descendants: true }, { propertyName: "_cardContainers", predicate: FixedCardLayoutItemComponent, descendants: true }, { propertyName: "_dragList", predicate: CdkDrag, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #layout\n cdkDropListGroup\n fdDndKeyboardGroup\n class=\"fd-fixed-card-layout__card-layout fd-fixed-card-layout__card-layout--columns-{{ this._numberOfColumns }}\"\n [style.height]=\"_containerHeight + 'px'\"\n [groups]=\"_cardColumns\"\n orientation=\"horizontal\"\n [customMoveFn]=\"_customMoveFn\"\n [customTransferFn]=\"_customTransferFn\"\n [disableKeyboardDragDrop]=\"disableDragDrop\"\n [cdkDropListGroupDisabled]=\"disableDragDrop\"\n [attr.dir]=\"_dir\"\n>\n <div\n *ngFor=\"let card of _cardsArray; let cardIndex = index\"\n cdkDropList\n class=\"fd-fixed-card-layout__card\"\n [class.fd-fixed-card-layout__card--single]=\"_singleItemColumns.has(card.fdCardDef)\"\n [style.min-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [style.max-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [style.display]=\"_hiddenCard === card ? 'none' : 'block'\"\n [cdkDropListData]=\"cardIndex\"\n [cdkDropListSortPredicate]=\"_sortPredicateFn\"\n (cdkDropListEntered)=\"_onDropListEntered($event)\"\n >\n <div\n cdkDrag\n fdDndKeyboardItem\n tabindex=\"0\"\n cdkDragPreviewClass=\"fd-fixed-card-layout__card-preview\"\n [cdkDragData]=\"card\"\n [cdkDragStartDelay]=\"dragStartDelay\"\n [itemIndex]=\"_itemIndexes.get(card.fdCardDef)!\"\n [groupIndex]=\"_groupIndexes.get(card.fdCardDef)!\"\n (cdkDragStarted)=\"_onDragStarted($event)\"\n (cdkDragDropped)=\"_onDragDropped($event)\"\n >\n <fd-fixed-card-layout-item>\n <ng-container *ngTemplateOutlet=\"card?.template || null\"> </ng-container>\n </fd-fixed-card-layout-item>\n\n <div\n *cdkDragPlaceholder\n class=\"fd-fixed-card-layout__card-placeholder\"\n [style.margin-bottom.rem]=\"+_placeholderMargin\"\n >\n <ng-container *ngTemplateOutlet=\"card?.template || null\"></ng-container>\n </div>\n </div>\n </div>\n\n <ng-container *ngFor=\"let column of _cardColumns; let last = last; let index = index\">\n <div *ngIf=\"!last\" class=\"fd-fixed-card-layout__clearfix\" [style.order]=\"index + 1\"></div>\n </ng-container>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.32.0\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-fixed-card-layout{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-fixed-card-layout:after,.fd-fixed-card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout{-webkit-box-sizing:border-box;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-box-align:center;-ms-flex-align:center;-ms-flex-wrap:wrap;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:flex-start;line-height:var(--sapContent_LineHeight);margin:-1rem 0 0 -1rem;padding:0}.fd-fixed-card-layout__card-layout:after,.fd-fixed-card-layout__card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card-layout{margin-left:0;margin-right:-1rem}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card{width:50%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(2n){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(odd){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card{width:33.3333333333%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card{width:25%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card{width:20%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card{width:16.6666666667%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card{width:14.2857142857%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card{width:12.5%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card{width:11.1111111111%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n){order:9}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card{width:10%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n){order:10}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+9){order:9}.fd-fixed-card-layout__card,.fd-fixed-card-layout__card-placeholder{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;min-height:.0625rem;min-width:20rem;padding:0}.fd-fixed-card-layout__card-placeholder:after,.fd-fixed-card-layout__card-placeholder:before,.fd-fixed-card-layout__card:after,.fd-fixed-card-layout__card:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{order:1;padding-left:1rem;padding-top:1rem}.fd-fixed-card-layout__card[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card{padding-left:0;padding-right:1rem}.fd-fixed-card-layout__card--single{flex-basis:100%}.fd-fixed-card-layout__card:empty{padding-top:0}.fd-fixed-card-layout__card-placeholder{border:.125rem dashed var(--sapContent_DragAndDropActiveColor);cursor:grabbing;opacity:.3}.fd-fixed-card-layout__card-preview{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--sapContent_Shadow2);border:0;border-radius:var(--sapElement_BorderCornerRadius);box-shadow:var(--sapContent_Shadow2);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-fixed-card-layout__card-preview:after,.fd-fixed-card-layout__card-preview:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__clearfix{-webkit-box-sizing:border-box;-ms-flex-preferred-size:100%;border:0;box-sizing:border-box;color:var(--sapTextColor);flex-basis:100%;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;width:0}.fd-fixed-card-layout__clearfix:after,.fd-fixed-card-layout__clearfix:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{width:100%}.fd-fixed-card-layout__card-layout{align-items:flex-start}.fd-fixed-card-layout__card-placeholder{width:100%;min-width:100%;max-width:100%}\n"], dependencies: [{ kind: "directive", type: CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "ngmodule", type: DragAndDropModule }, { kind: "directive", type: i1.DndKeyboardGroupDirective, selector: "[fdkDndKeyboardGroup], [fdDndKeyboardGroup]", inputs: ["groups", "disableKeyboardDragDrop", "orientation", "customMoveFn", "customTransferFn"] }, { kind: "directive", type: i1.DndKeyboardItemDirective, selector: "[fdkDndKeyboardItem], [fdDndKeyboardItem]", inputs: ["itemIndex", "groupIndex"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: FixedCardLayoutItemComponent, selector: "fd-fixed-card-layout-item" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
336
336
|
}
|
|
337
337
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: FixedCardLayoutComponent, decorators: [{
|
|
338
338
|
type: Component,
|
|
@@ -348,7 +348,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
|
|
|
348
348
|
NgTemplateOutlet,
|
|
349
349
|
CdkDragPlaceholder,
|
|
350
350
|
NgIf
|
|
351
|
-
], template: "<div\n #layout\n cdkDropListGroup\n fdDndKeyboardGroup\n class=\"fd-fixed-card-layout__card-layout fd-fixed-card-layout__card-layout--columns-{{ this._numberOfColumns }}\"\n [style.height]=\"_containerHeight + 'px'\"\n [groups]=\"_cardColumns\"\n orientation=\"horizontal\"\n [customMoveFn]=\"_customMoveFn\"\n [customTransferFn]=\"_customTransferFn\"\n [disableKeyboardDragDrop]=\"disableDragDrop\"\n [cdkDropListGroupDisabled]=\"disableDragDrop\"\n [attr.dir]=\"_dir\"\n>\n <div\n *ngFor=\"let card of _cardsArray; let cardIndex = index\"\n cdkDropList\n class=\"fd-fixed-card-layout__card\"\n [class.fd-fixed-card-layout__card--single]=\"_singleItemColumns.has(card.fdCardDef)\"\n [style.min-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [style.max-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [style.display]=\"_hiddenCard === card ? 'none' : 'block'\"\n [cdkDropListData]=\"cardIndex\"\n [cdkDropListSortPredicate]=\"_sortPredicateFn\"\n (cdkDropListEntered)=\"_onDropListEntered($event)\"\n >\n <div\n cdkDrag\n fdDndKeyboardItem\n tabindex=\"0\"\n cdkDragPreviewClass=\"fd-fixed-card-layout__card-preview\"\n [cdkDragData]=\"card\"\n [cdkDragStartDelay]=\"dragStartDelay\"\n [itemIndex]=\"_itemIndexes.get(card.fdCardDef)!\"\n [groupIndex]=\"_groupIndexes.get(card.fdCardDef)!\"\n (cdkDragStarted)=\"_onDragStarted($event)\"\n (cdkDragDropped)=\"_onDragDropped($event)\"\n >\n <fd-fixed-card-layout-item>\n <ng-container *ngTemplateOutlet=\"card?.template || null\"> </ng-container>\n </fd-fixed-card-layout-item>\n\n <div\n *cdkDragPlaceholder\n class=\"fd-fixed-card-layout__card-placeholder\"\n [style.margin-bottom.rem]=\"+_placeholderMargin\"\n >\n <ng-container *ngTemplateOutlet=\"card?.template || null\"></ng-container>\n </div>\n </div>\n </div>\n\n <ng-container *ngFor=\"let column of _cardColumns; let last = last; let index = index\">\n <div *ngIf=\"!last\" class=\"fd-fixed-card-layout__clearfix\" [style.order]=\"index + 1\"></div>\n </ng-container>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.32.0-rc.7\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-fixed-card-layout{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-fixed-card-layout:after,.fd-fixed-card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout{-webkit-box-sizing:border-box;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-box-align:center;-ms-flex-align:center;-ms-flex-wrap:wrap;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:flex-start;line-height:var(--sapContent_LineHeight);margin:-1rem 0 0 -1rem;padding:0}.fd-fixed-card-layout__card-layout:after,.fd-fixed-card-layout__card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card-layout{margin-left:0;margin-right:-1rem}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card{width:50%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(2n){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(odd){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card{width:33.3333333333%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card{width:25%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card{width:20%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card{width:16.6666666667%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card{width:14.2857142857%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card{width:12.5%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card{width:11.1111111111%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n){order:9}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card{width:10%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n){order:10}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+9){order:9}.fd-fixed-card-layout__card,.fd-fixed-card-layout__card-placeholder{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;min-height:.0625rem;min-width:20rem;padding:0}.fd-fixed-card-layout__card-placeholder:after,.fd-fixed-card-layout__card-placeholder:before,.fd-fixed-card-layout__card:after,.fd-fixed-card-layout__card:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{order:1;padding-left:1rem;padding-top:1rem}.fd-fixed-card-layout__card[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card{padding-left:0;padding-right:1rem}.fd-fixed-card-layout__card--single{flex-basis:100%}.fd-fixed-card-layout__card:empty{padding-top:0}.fd-fixed-card-layout__card-placeholder{border:.125rem dashed var(--sapContent_DragAndDropActiveColor);cursor:grabbing;opacity:.3}.fd-fixed-card-layout__card-preview{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--sapContent_Shadow2);border:0;border-radius:var(--sapElement_BorderCornerRadius);box-shadow:var(--sapContent_Shadow2);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-fixed-card-layout__card-preview:after,.fd-fixed-card-layout__card-preview:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__clearfix{-webkit-box-sizing:border-box;-ms-flex-preferred-size:100%;border:0;box-sizing:border-box;color:var(--sapTextColor);flex-basis:100%;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;width:0}.fd-fixed-card-layout__clearfix:after,.fd-fixed-card-layout__clearfix:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{width:100%}.fd-fixed-card-layout__card-layout{align-items:flex-start}.fd-fixed-card-layout__card-placeholder{width:100%;min-width:100%;max-width:100%}\n"] }]
|
|
351
|
+
], template: "<div\n #layout\n cdkDropListGroup\n fdDndKeyboardGroup\n class=\"fd-fixed-card-layout__card-layout fd-fixed-card-layout__card-layout--columns-{{ this._numberOfColumns }}\"\n [style.height]=\"_containerHeight + 'px'\"\n [groups]=\"_cardColumns\"\n orientation=\"horizontal\"\n [customMoveFn]=\"_customMoveFn\"\n [customTransferFn]=\"_customTransferFn\"\n [disableKeyboardDragDrop]=\"disableDragDrop\"\n [cdkDropListGroupDisabled]=\"disableDragDrop\"\n [attr.dir]=\"_dir\"\n>\n <div\n *ngFor=\"let card of _cardsArray; let cardIndex = index\"\n cdkDropList\n class=\"fd-fixed-card-layout__card\"\n [class.fd-fixed-card-layout__card--single]=\"_singleItemColumns.has(card.fdCardDef)\"\n [style.min-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [style.max-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [style.display]=\"_hiddenCard === card ? 'none' : 'block'\"\n [cdkDropListData]=\"cardIndex\"\n [cdkDropListSortPredicate]=\"_sortPredicateFn\"\n (cdkDropListEntered)=\"_onDropListEntered($event)\"\n >\n <div\n cdkDrag\n fdDndKeyboardItem\n tabindex=\"0\"\n cdkDragPreviewClass=\"fd-fixed-card-layout__card-preview\"\n [cdkDragData]=\"card\"\n [cdkDragStartDelay]=\"dragStartDelay\"\n [itemIndex]=\"_itemIndexes.get(card.fdCardDef)!\"\n [groupIndex]=\"_groupIndexes.get(card.fdCardDef)!\"\n (cdkDragStarted)=\"_onDragStarted($event)\"\n (cdkDragDropped)=\"_onDragDropped($event)\"\n >\n <fd-fixed-card-layout-item>\n <ng-container *ngTemplateOutlet=\"card?.template || null\"> </ng-container>\n </fd-fixed-card-layout-item>\n\n <div\n *cdkDragPlaceholder\n class=\"fd-fixed-card-layout__card-placeholder\"\n [style.margin-bottom.rem]=\"+_placeholderMargin\"\n >\n <ng-container *ngTemplateOutlet=\"card?.template || null\"></ng-container>\n </div>\n </div>\n </div>\n\n <ng-container *ngFor=\"let column of _cardColumns; let last = last; let index = index\">\n <div *ngIf=\"!last\" class=\"fd-fixed-card-layout__clearfix\" [style.order]=\"index + 1\"></div>\n </ng-container>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.32.0\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-fixed-card-layout{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-fixed-card-layout:after,.fd-fixed-card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout{-webkit-box-sizing:border-box;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-box-align:center;-ms-flex-align:center;-ms-flex-wrap:wrap;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:flex-start;line-height:var(--sapContent_LineHeight);margin:-1rem 0 0 -1rem;padding:0}.fd-fixed-card-layout__card-layout:after,.fd-fixed-card-layout__card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card-layout{margin-left:0;margin-right:-1rem}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card{width:50%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(2n){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(odd){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card{width:33.3333333333%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card{width:25%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card{width:20%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card{width:16.6666666667%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card{width:14.2857142857%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card{width:12.5%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card{width:11.1111111111%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n){order:9}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card{width:10%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n){order:10}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+9){order:9}.fd-fixed-card-layout__card,.fd-fixed-card-layout__card-placeholder{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;min-height:.0625rem;min-width:20rem;padding:0}.fd-fixed-card-layout__card-placeholder:after,.fd-fixed-card-layout__card-placeholder:before,.fd-fixed-card-layout__card:after,.fd-fixed-card-layout__card:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{order:1;padding-left:1rem;padding-top:1rem}.fd-fixed-card-layout__card[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card{padding-left:0;padding-right:1rem}.fd-fixed-card-layout__card--single{flex-basis:100%}.fd-fixed-card-layout__card:empty{padding-top:0}.fd-fixed-card-layout__card-placeholder{border:.125rem dashed var(--sapContent_DragAndDropActiveColor);cursor:grabbing;opacity:.3}.fd-fixed-card-layout__card-preview{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--sapContent_Shadow2);border:0;border-radius:var(--sapElement_BorderCornerRadius);box-shadow:var(--sapContent_Shadow2);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-fixed-card-layout__card-preview:after,.fd-fixed-card-layout__card-preview:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__clearfix{-webkit-box-sizing:border-box;-ms-flex-preferred-size:100%;border:0;box-sizing:border-box;color:var(--sapTextColor);flex-basis:100%;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;width:0}.fd-fixed-card-layout__clearfix:after,.fd-fixed-card-layout__clearfix:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{width:100%}.fd-fixed-card-layout__card-layout{align-items:flex-start}.fd-fixed-card-layout__card-placeholder{width:100%;min-width:100%;max-width:100%}\n"] }]
|
|
352
352
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.RtlService, decorators: [{
|
|
353
353
|
type: Optional
|
|
354
354
|
}] }]; }, propDecorators: { disableDragDrop: [{
|
|
@@ -407,4 +407,4 @@ function adjustCardRank(draggedCard, replacedCard) {
|
|
|
407
407
|
draggedCard.fdCardDef = replacedCard.fdCardDef;
|
|
408
408
|
replacedCard.fdCardDef = draggedCardRank;
|
|
409
409
|
}
|
|
410
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZml4ZWQtY2FyZC1sYXlvdXQvZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZml4ZWQtY2FyZC1sYXlvdXQvZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxPQUFPLEVBR1Asa0JBQWtCLEVBRWxCLFdBQVcsRUFDWCxnQkFBZ0IsRUFDbkIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RSxPQUFPLEVBQWUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hFLE9BQU8sRUFDSCxpQkFBaUIsRUFFakIsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDbkIsTUFBTSw0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QUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtJQUM3RyxNQUFNLG9CQUFvQixHQUFHLHNCQUFzQixHQUFHLFNBQVMsR0FBRyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQztJQUNoSCxNQUFNLFdBQVcsR0FBRyxvQkFBb0IsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUM7SUFFaEgsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsNERBQTREO0FBQzVELFNBQVMsY0FBYyxDQUFDLFdBQW9DLEVBQUUsWUFBcUM7SUFDL0YsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztJQUM5QyxXQUFXLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7SUFDL0MsWUFBWSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzS2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7XG4gICAgQ2RrRHJhZyxcbiAgICBDZGtEcmFnRHJvcCxcbiAgICBDZGtEcmFnRW50ZXIsXG4gICAgQ2RrRHJhZ1BsYWNlaG9sZGVyLFxuICAgIENka0RyYWdTdGFydCxcbiAgICBDZGtEcm9wTGlzdCxcbiAgICBDZGtEcm9wTGlzdEdyb3VwXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIHNraXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTnVtYmVySW5wdXQsIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IE5nRm9yLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgRHJhZ0FuZERyb3BNb2R1bGUsXG4gICAgTnVsbGFibGUsXG4gICAgUnRsU2VydmljZSxcbiAgICBnZXREb2N1bWVudEZvbnRTaXplLFxuICAgIHJlc2l6ZU9ic2VydmFibGVcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRml4ZWRDYXJkTGF5b3V0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZml4ZWQtY2FyZC1sYXlvdXQtaXRlbS9maXhlZC1jYXJkLWxheW91dC1pdGVtLmNvbXBvbmVudCc7XG5cbmNvbnN0IFJFTV9JTl9QWCA9IGdldERvY3VtZW50Rm9udFNpemUoKTtcbmNvbnN0IENBUkRfTUlOSU1VTV9XSURUSCA9IFJFTV9JTl9QWCAqIDIwOyAvLyAyMHJlbVxuY29uc3QgQ0FSRF9HQVBfV0lEVEggPSBSRU1fSU5fUFg7IC8vIDFyZW1cbmNvbnN0IERSQUdfU1RBUlRfREVMQVkgPSAyMDA7IC8vIGluIG1zXG5jb25zdCBNQVhfQ09MVU1OUyA9IDEwO1xuXG5sZXQgY2FyZFJhbmsgPSAxO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZENhcmREZWZdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIENhcmREZWZpbml0aW9uRGlyZWN0aXZlIHtcbiAgICAvKipcbiAgICAgKiBCZWhhdmVzIGxpa2UgcmFuayBvZiBjYXJkLlxuICAgICAqIFVzZWZ1bCBpbiBjcmVhdGluZyBsYXlvdXQgYWdhaW4gYWZ0ZXIgZHJhZyBhbmQgZHJvcC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBmZENhcmREZWYodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2ZkQ2FyZERlZiA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IGZkQ2FyZERlZigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmRDYXJkRGVmO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZmRDYXJkRGVmOiBudW1iZXIgPSBjYXJkUmFuaysrO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGF5b3V0IHtcbiAgICBudW1iZXJPZkNvbHVtbnM/OiBudW1iZXI7XG4gICAgc2NyZWVuU2l6ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhcmREcm9wcGVkIHtcbiAgICBwcmV2aW91c0luZGV4OiBudW1iZXI7XG4gICAgY3VycmVudEluZGV4OiBudW1iZXI7XG4gICAgbGF5b3V0Q29sdW1uczogbnVtYmVyO1xuICAgIGl0ZW1zOiBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZVtdO1xufVxuXG50eXBlIENvbHVtbnMgPSAxIHwgMiB8IDMgfCA0IHwgNSB8IDYgfCA3IHwgOCB8IDkgfCAxMDtcblxuZXhwb3J0IHR5cGUgQ29sdW1uc1dpZHRoQ29uZmlnID0geyBbQyBpbiBDb2x1bW5zXT86IG51bWJlciB9O1xuXG50eXBlIENhcmRDb2x1bW4gPSBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZVtdO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLWZpeGVkLWNhcmQtbGF5b3V0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpeGVkLWNhcmQtbGF5b3V0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtZml4ZWQtY2FyZC1sYXlvdXQnXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ2RrRHJvcExpc3RHcm91cCxcbiAgICAgICAgRHJhZ0FuZERyb3BNb2R1bGUsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBDZGtEcm9wTGlzdCxcbiAgICAgICAgQ2RrRHJhZyxcbiAgICAgICAgRml4ZWRDYXJkTGF5b3V0SXRlbUNvbXBvbmVudCxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgQ2RrRHJhZ1BsYWNlaG9sZGVyLFxuICAgICAgICBOZ0lmXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGaXhlZENhcmRMYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvKiogRHJhZyBkcm9wIGJlaGF2aW9yIGNhbiBiZSBkaXNhYmxlZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZURyYWdEcm9wOiBib29sZWFuO1xuXG4gICAgLyoqIERyYWcgc3RhcnQgZGVsYXkgaW4gbWlsbGlzZWNvbmRzLCBkZWZhdWx0IHRvIDIwMG1zIGZvciBzYWZlIHNjcm9sbGluZyBvbiBtb2JpbGUgd2l0aCB0b3VjaHNjcmVlbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZHJhZ1N0YXJ0RGVsYXkgPSBEUkFHX1NUQVJUX0RFTEFZO1xuXG4gICAgLyoqIENhcmQncyBtaW5pbXVtIHdpZHRoIGluIHBpeGVscy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjYXJkTWluaW11bVdpZHRoKHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgICAgICBjb25zdCBjb2VyY2VkVmFsdWUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKGNvZXJjZWRWYWx1ZSA8IENBUkRfTUlOSU1VTV9XSURUSCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2FyZE1pbmltdW1XaWR0aCA9IGNvZXJjZWRWYWx1ZTtcbiAgICB9XG4gICAgZ2V0IGNhcmRNaW5pbXVtV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhcmRNaW5pbXVtV2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIENvbmZpZyB3aXRoIHRoZSB3aWR0aCByYXRpb3MgdGhhdCBzaG91bGQgdGFrZSBldmVyeSBjb2x1bW4uIEZsZXgtZ3JvdyBwcmluY2lwZS4gTWlzc2VkIHZhbHVlcyBzZXQgdG8gMC4gcyovXG4gICAgQElucHV0KClcbiAgICBjb2x1bW5zV2lkdGhDb25maWc6IENvbHVtbnNXaWR0aENvbmZpZztcblxuICAgIC8qKiBMaW1pdCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMuIERlZmF1bHQgaXMgMTAuICovXG4gICAgQElucHV0KClcbiAgICBtYXhDb2x1bW5zID0gTUFYX0NPTFVNTlM7XG5cbiAgICAvKiogRXZlbnQgdG8gZW1pdCwgd2hlbiBsYXlvdXQgY2hhbmdlcyAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGxheW91dENoYW5nZTogRXZlbnRFbWl0dGVyPExheW91dD4gPSBuZXcgRXZlbnRFbWl0dGVyPExheW91dD4oKTtcblxuICAgIC8qKiBFdmVudCB0byBlbWl0IG9uIENhcmQgZHJhZ2dlZCBhbmQgZHJvcHBlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNhcmREcmFnZ2VkRHJvcHBlZDogRXZlbnRFbWl0dGVyPENhcmREcm9wcGVkPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FyZERyb3BwZWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oQ2FyZERlZmluaXRpb25EaXJlY3RpdmUpXG4gICAgX2NhcmRzOiBRdWVyeUxpc3Q8Q2FyZERlZmluaXRpb25EaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKEZpeGVkQ2FyZExheW91dEl0ZW1Db21wb25lbnQpXG4gICAgX2NhcmRDb250YWluZXJzOiBRdWVyeUxpc3Q8Rml4ZWRDYXJkTGF5b3V0SXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oQ2RrRHJhZylcbiAgICBfZHJhZ0xpc3Q6IFF1ZXJ5TGlzdDxDZGtEcmFnPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnbGF5b3V0JylcbiAgICBfbGF5b3V0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NhcmRzQXJyYXk6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlW107XG5cbiAgICAvKiogQGhpZGRlbiBOdW1iZXIgb2YgQ29sdW1ucyBpbiBsYXlvdXQgKi9cbiAgICBfbnVtYmVyT2ZDb2x1bW5zOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jYXJkQ29sdW1uczogQ2FyZENvbHVtbltdO1xuXG4gICAgLyoqIEBoaWRkZW4qL1xuICAgIF9jb250YWluZXJIZWlnaHQgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gaGFuZGxlcyBydGwgc2VydmljZSAqL1xuICAgIF9kaXIgPSAnbHRyJztcblxuICAgIC8qKiBAaGlkZGVuIGZpcnN0IG51bWJlciBpcyB0aGUgQ2FyZERlZmluaXRpb24gcmFuaywgaS5lLiBpZCAqL1xuICAgIF9ncm91cEluZGV4ZXMgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gZmlyc3QgbnVtYmVyIGlzIHRoZSBDYXJkRGVmaW5pdGlvbiByYW5rLCBpLmUuIGlkICovXG4gICAgX2l0ZW1JbmRleGVzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuIGZpcnN0IG51bWJlciBpcyB0aGUgQ2FyZERlZmluaXRpb24gcmFuaywgaS5lLiBpZCAqL1xuICAgIF9zaW5nbGVJdGVtQ29sdW1ucyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29sdW1uc1dpZHRoID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuIFJldHVybiBhdmFpbGFibGUgd2lkdGggZm9yIGZpeGVkIGNhcmQgbGF5b3V0ICovXG4gICAgZ2V0IF9hdmFpbGFibGVXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGF5b3V0Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcGxhY2Vob2xkZXJNYXJnaW46IGJvb2xlYW47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9saXN0ZW5SZXNpemUgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGlkZGVuQ2FyZDogTnVsbGFibGU8Q2FyZERlZmluaXRpb25EaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gRm9jdXNLZXlNYW5hZ2VyIGluc3RhbmNlICovXG4gICAgcHJpdmF0ZSBfa2V5Ym9hcmRFdmVudHNNYW5hZ2VyOiBGb2N1c0tleU1hbmFnZXI8Rml4ZWRDYXJkTGF5b3V0SXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhcmRNaW5pbXVtV2lkdGggPSBDQVJEX01JTklNVU1fV0lEVEg7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhcmRzU2l6ZUNoYW5nZVN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuIEFuIFJ4SlMgU3ViamVjdCB0aGF0IHdpbGwga2lsbCB0aGUgZGF0YSBzdHJlYW0gdXBvbiBjb21wb25lbnTigJlzIGRlc3RydWN0aW9uIChmb3IgdW5zdWJzY3JpYmluZykgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2VcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb1J0bCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wcm9jZXNzQ2FyZHMoKTtcblxuICAgICAgICB0aGlzLl9saXN0ZW5PblJlc2l6ZSgpO1xuICAgICAgICB0aGlzLl9saXN0ZW5PbkNhcmRzQ2hhbmdlKCk7XG4gICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlTZXR1cCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICAvLyBTa2lwIGFsbCBjaGFuZ2VzIHVubGVzcyB3ZSBkb24ndCBoYXZlIGluaXRpYWwgbGF5b3V0IGNyZWF0ZWRcbiAgICAgICAgaWYgKCF0aGlzLl9jYXJkc0FycmF5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoJ21heENvbHVtbnMnIGluIGNoYW5nZXMgfHwgJ2NhcmRNaW5pbXVtV2lkdGgnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoJ2NvbHVtbnNXaWR0aENvbmZpZycgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5fc2V0Q2FyZENvbHVtbnNXaWR0aCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FyZHNTaXplQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlcj8uZGVzdHJveSgpO1xuXG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIGlmICh0aGlzLl9rZXlib2FyZEV2ZW50c01hbmFnZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIERpc3RyaWJ1dGUgY2FyZHMgb24gd2luZG93IHJlc2l6ZSAqL1xuICAgIHVwZGF0ZUxheW91dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuUmVzaXplID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuX2NhcmRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgcG9zc2libGVOdW1iZXJPZkNvbHVtbnMgPSBnZXROdW1iZXJPZkNvbHVtbnModGhpcy5fYXZhaWxhYmxlV2lkdGgsIHRoaXMuY2FyZE1pbmltdW1XaWR0aCk7XG5cbiAgICAgICAgICAgIHRoaXMuX251bWJlck9mQ29sdW1ucyA9IE1hdGgubWluKFxuICAgICAgICAgICAgICAgIHBvc3NpYmxlTnVtYmVyT2ZDb2x1bW5zLFxuICAgICAgICAgICAgICAgIHRoaXMuX2NhcmRzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICB0aGlzLm1heENvbHVtbnMgfHwgTUFYX0NPTFVNTlMsXG4gICAgICAgICAgICAgICAgTUFYX0NPTFVNTlNcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9udW1iZXJPZkNvbHVtbnMgPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sYXlvdXRDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBudW1iZXJPZkNvbHVtbnM6IHRoaXMuX251bWJlck9mQ29sdW1ucyxcbiAgICAgICAgICAgIHNjcmVlblNpemU6IHRoaXMuX2F2YWlsYWJsZVdpZHRoXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3NldENhcmRDb2x1bW5zKCk7XG4gICAgICAgIHRoaXMuX3NldENhcmRDb2x1bW5zV2lkdGgoKTtcbiAgICAgICAgdGhpcy5fc2V0Q29udGFpbmVySGVpZ2h0KCk7XG5cbiAgICAgICAgdGhpcy5fbGlzdGVuUmVzaXplID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkRyYWdTdGFydGVkKGV2ZW50OiBDZGtEcmFnU3RhcnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuUmVzaXplID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2hpZGRlbkNhcmQgPSBldmVudC5zb3VyY2UuZGF0YTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkRyb3BMaXN0RW50ZXJlZChldmVudDogQ2RrRHJhZ0VudGVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckl0ZW1DYXJkRGVmID0gKGV2ZW50LmNvbnRhaW5lci5nZXRTb3J0ZWRJdGVtcygpWzBdLmRhdGEgYXMgQ2FyZERlZmluaXRpb25EaXJlY3RpdmUpLmZkQ2FyZERlZjtcbiAgICAgICAgY29uc3QgZHJhZ0l0ZW1DYXJkRGVmID0gKGV2ZW50Lml0ZW0uZGF0YSBhcyBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZSkuZmRDYXJkRGVmO1xuXG4gICAgICAgIHRoaXMuX3BsYWNlaG9sZGVyTWFyZ2luID0gY29udGFpbmVySXRlbUNhcmREZWYgIT09IGRyYWdJdGVtQ2FyZERlZjtcblxuICAgICAgICBjb25zdCBjb2x1bW5JbmRleFRvQWRkU3BhY2UgPSB0aGlzLl9jYXJkQ29sdW1ucy5maW5kSW5kZXgoKGNvbHVtbikgPT5cbiAgICAgICAgICAgIGNvbHVtbi5maW5kKChjYXJkKSA9PiBldmVudC5jb250YWluZXIuZ2V0U29ydGVkSXRlbXMoKVswXS5kYXRhID09PSBjYXJkKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzcGFjZVRvQWRkID1cbiAgICAgICAgICAgIGV2ZW50Lml0ZW0uZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCArXG4gICAgICAgICAgICAoZXZlbnQuY29udGFpbmVyLmdldFNvcnRlZEl0ZW1zKCkubGVuZ3RoID8gUkVNX0lOX1BYIDogMCk7XG5cbiAgICAgICAgLy8gV2hlbiB3ZSBtb3ZlIHRoZSBjYXJkIGludG8gYSBjZXJ0YWluIGNvbHVtbiB3ZSBzaG91bGQgaW5jcmVhc2UgdGhlIGhlaWdodCBvZiB0aGF0IGNvbHVtbiBieSB0aGUgY2FyZCBoZWlnaHRcbiAgICAgICAgdGhpcy5fc2V0Q29udGFpbmVySGVpZ2h0KGNvbHVtbkluZGV4VG9BZGRTcGFjZSwgc3BhY2VUb0FkZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25EcmFnRHJvcHBlZChldmVudDogQ2RrRHJhZ0Ryb3A8bnVtYmVyLCBudW1iZXI+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hpZGRlbkNhcmQgPSBudWxsO1xuXG4gICAgICAgIGlmIChldmVudC5jb250YWluZXIuZGF0YSA9PT0gZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcGxhY2Vob2xkZXJNYXJnaW4gPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBtb3ZlZENhcmQgPSBldmVudC5wcmV2aW91c0NvbnRhaW5lci5nZXRTb3J0ZWRJdGVtcygpWzBdLmRhdGE7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VkQ2FyZCA9IGV2ZW50LmNvbnRhaW5lci5nZXRTb3J0ZWRJdGVtcygpWzBdLmRhdGE7XG5cbiAgICAgICAgY29uc3QgbW92ZWRDYXJkQ29sdW1uID0gdGhpcy5fY2FyZENvbHVtbnMuZmluZCgoY29sdW1uKSA9PlxuICAgICAgICAgICAgY29sdW1uLmZpbmQoKGNhcmQpID0+IGNhcmQuZmRDYXJkRGVmID09PSBtb3ZlZENhcmQuZmRDYXJkRGVmKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCByZXBsYWNlZENhcmRDb2x1bW4gPSB0aGlzLl9jYXJkQ29sdW1ucy5maW5kKChjb2x1bW4pID0+XG4gICAgICAgICAgICBjb2x1bW4uZmluZCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYpXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gSWYgd2UgZHJhZ2dlZCB0aGUgY2FyZCBmcm9tIHRoZSBzYW1lIGNvbHVtbiBhcyB0aGUgY29sdW1uIHdlJ3JlIGRyb3BwaW5nIGludG9cbiAgICAgICAgLy8gVGhlcmUgbWF5IGJlIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSBvcmRlciBzaG91bGRuJ3QgY2hhbmdlIGJ1dCBzaW5jZSB0aGVyZSBhcmUgYSBkaWZmZXJlbnQgZHJvcCBsaXN0cyBpdCB3aWxsIGNoYW5nZVxuICAgICAgICAvLyBXZSBzaG91bGQgcHJldmVudCB0aGlzXG4gICAgICAgIGlmIChtb3ZlZENhcmRDb2x1bW4gPT09IHJlcGxhY2VkQ2FyZENvbHVtbiAmJiBtb3ZlZENhcmRDb2x1bW4/Lmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgaWYgKG1vdmVkQ2FyZC5mZENhcmREZWYgPCByZXBsYWNlZENhcmQuZmRDYXJkRGVmICYmIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEgPCBldmVudC5jb250YWluZXIuZGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1vdmVkQ2FyZC5mZENhcmREZWYgPiByZXBsYWNlZENhcmQuZmRDYXJkRGVmICYmIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEgPiBldmVudC5jb250YWluZXIuZGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NEcmFnRHJvcChldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLCBldmVudC5jb250YWluZXIuZGF0YSwgbW92ZWRDYXJkLCByZXBsYWNlZENhcmQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NvcnRQcmVkaWNhdGVGbiA9IChpbmRleDogbnVtYmVyKTogYm9vbGVhbiA9PiBpbmRleCA9PT0gMDtcblxuICAgIC8qKiBAaGlkZGVuIEZvciB0aGUga2V5Ym9hcmQgZHJhZyZkcm9wIGRpcmVjdGl2ZSAqL1xuICAgIF9jdXN0b21Nb3ZlRm4gPSAoZ3JvdXA6IENhcmRDb2x1bW4sIGluZGV4RnJvbTogbnVtYmVyLCBpbmRleFRvOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgbW92ZWRDYXJkID0gZ3JvdXBbaW5kZXhGcm9tXTtcbiAgICAgICAgY29uc3QgcmVwbGFjZWRDYXJkID0gZ3JvdXBbaW5kZXhUb107XG5cbiAgICAgICAgY29uc3QgaW5kZXhGcm9tQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IG1vdmVkQ2FyZC5mZENhcmREZWYpO1xuICAgICAgICBjb25zdCBpbmRleFRvQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYpO1xuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NEcmFnRHJvcChpbmRleEZyb21BcnJheSwgaW5kZXhUb0FycmF5LCBtb3ZlZENhcmQsIHJlcGxhY2VkQ2FyZCk7XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuIEZvciB0aGUga2V5Ym9hcmQgZHJhZyZkcm9wIGRpcmVjdGl2ZSAqL1xuICAgIF9jdXN0b21UcmFuc2ZlckZuID0gKHByZXZHcm91cDogQ2FyZENvbHVtbiwgbmV4dEdyb3VwOiBDYXJkQ29sdW1uLCBpbmRleEZyb206IG51bWJlciwgaW5kZXhUbzogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IG1vdmVkQ2FyZCA9IHByZXZHcm91cFtpbmRleEZyb21dO1xuICAgICAgICBjb25zdCByZXBsYWNlZENhcmQgPSBuZXh0R3JvdXBbaW5kZXhUb107XG5cbiAgICAgICAgY29uc3QgaW5kZXhGcm9tQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IG1vdmVkQ2FyZC5mZENhcmREZWYpO1xuICAgICAgICBjb25zdCBpbmRleFRvQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYpO1xuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NEcmFnRHJvcChpbmRleEZyb21BcnJheSwgaW5kZXhUb0FycmF5LCBtb3ZlZENhcmQsIHJlcGxhY2VkQ2FyZCk7XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuIEFycmFuZ2VzIGNhcmRzIG9uIGRyb3Agb2YgZHJhZ2dlZCBjYXJkICovXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc0RyYWdEcm9wKFxuICAgICAgICBwcmV2SW5kZXg6IG51bWJlcixcbiAgICAgICAgbmV3SW5kZXg6IG51bWJlcixcbiAgICAgICAgcHJldkNhcmQ6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlLFxuICAgICAgICBuZXdDYXJkOiBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZVxuICAgICk6IHZvaWQge1xuICAgICAgICAvLyBtb3ZlSXRlbUluQXJyYXkgZnJvbSBDREsgd29uJ3Qgd29yayBhcyBpdCBjaGFuZ2VzIG9yZGVyIG9mIG90aGVyIGNhcmRzXG4gICAgICAgIGNvbnN0IHJlcGxhY2VkQ2FyZCA9IHRoaXMuX2NhcmRzQXJyYXlbbmV3SW5kZXhdO1xuICAgICAgICB0aGlzLl9jYXJkc0FycmF5W25ld0luZGV4XSA9IHRoaXMuX2NhcmRzQXJyYXlbcHJldkluZGV4XTtcbiAgICAgICAgdGhpcy5fY2FyZHNBcnJheVtwcmV2SW5kZXhdID0gcmVwbGFjZWRDYXJkO1xuXG4gICAgICAgIGFkanVzdENhcmRSYW5rKHByZXZDYXJkLCBuZXdDYXJkKTtcblxuICAgICAgICB0aGlzLmNhcmREcmFnZ2VkRHJvcHBlZC5lbWl0KHtcbiAgICAgICAgICAgIHByZXZpb3VzSW5kZXg6IHByZXZJbmRleCxcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleDogbmV3SW5kZXgsXG4gICAgICAgICAgICBsYXlvdXRDb2x1bW5zOiB0aGlzLl9udW1iZXJPZkNvbHVtbnMsXG4gICAgICAgICAgICBpdGVtczogdGhpcy5fY2FyZHMudG9BcnJheSgpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hY2Nlc3NpYmlsaXR5U2V0dXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlcj8uZGVzdHJveSgpO1xuICAgICAgICB0aGlzLl9rZXlib2FyZEV2ZW50c01hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyKHRoaXMuX2NhcmRDb250YWluZXJzKS53aXRoV3JhcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJ0bCBjaGFuZ2Ugc3Vic2NyaXB0aW9uICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9SdGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3J0bFNlcnZpY2U/LnJ0bC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpc1J0bCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZGlyID0gaXNSdGwgPyAncnRsJyA6ICdsdHInO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIExpc3RlbiB3aW5kb3cgcmVzaXplIGFuZCBkaXN0cmlidXRlIGNhcmRzIG9uIGNvbHVtbiBjaGFuZ2UgKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PblJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgcmVzaXplT2JzZXJ2YWJsZSh0aGlzLl9sYXlvdXQubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgyMCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoZW50cmllcykgPT4gdGhpcy5fbGlzdGVuUmVzaXplICYmICEhKGVudHJpZXNbMF0uY29udGVudFJlY3QuaGVpZ2h0IHx8IGVudHJpZXNbMF0uY29udGVudFJlY3Qud2lkdGgpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVMYXlvdXQoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTGlzdGVuIGNhcmQgY2hhbmdlIGFuZCBkaXN0cmlidXRlIGNhcmRzIG9uIGNvbHVtbiBjaGFuZ2UgKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PbkNhcmRzQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYXJkcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9wcm9jZXNzQ2FyZHMoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc0NhcmRzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYXJkc0FycmF5ID0gdGhpcy5fY2FyZHNcbiAgICAgICAgICAgIC50b0FycmF5KClcbiAgICAgICAgICAgIC5zb3J0KChmaXJzdENhcmQsIHNlY29uZENhcmQpID0+IGZpcnN0Q2FyZC5mZENhcmREZWYgLSBzZWNvbmRDYXJkLmZkQ2FyZERlZik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gRGlzdHJpYnV0ZSBjYXJkcyBhbW9uZyBjb2x1bW5zIHRvIGFycmFuZ2UgdGhlbSBpbiBcIlpcIiBmbG93ICovXG4gICAgcHJpdmF0ZSBfc2V0Q2FyZENvbHVtbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2dyb3VwSW5kZXhlcyA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG4gICAgICAgIHRoaXMuX2l0ZW1JbmRleGVzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbiAgICAgICAgdGhpcy5fc2luZ2xlSXRlbUNvbHVtbnMgPSBuZXcgU2V0PG51bWJlcj4oKTtcblxuICAgICAgICBjb25zdCBjb2x1bW5zOiBDYXJkQ29sdW1uW10gPSBuZXcgQXJyYXkodGhpcy5fbnVtYmVyT2ZDb2x1bW5zKS5maWxsKDApLm1hcCgoKSA9PiBuZXcgQXJyYXkoMCkpO1xuXG4gICAgICAgIHRoaXMuX2NhcmRzQXJyYXkuZm9yRWFjaCgoY2FyZCwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VyckNvbHVtbkluZGV4ID0gaSAlIHRoaXMuX251bWJlck9mQ29sdW1ucztcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IGNvbHVtbnNbY3VyckNvbHVtbkluZGV4XS5sZW5ndGg7XG5cbiAgICAgICAgICAgIGNvbHVtbnNbY3VyckNvbHVtbkluZGV4XS5wdXNoKGNhcmQpO1xuXG4gICAgICAgICAgICB0aGlzLl9ncm91cEluZGV4ZXMuc2V0KGNhcmQuZmRDYXJkRGVmLCBjdXJyQ29sdW1uSW5kZXgpO1xuICAgICAgICAgICAgdGhpcy5faXRlbUluZGV4ZXMuc2V0KGNhcmQuZmRDYXJkRGVmLCBpdGVtSW5kZXgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jYXJkQ29sdW1ucyA9IGNvbHVtbnM7XG5cbiAgICAgICAgdGhpcy5fY2FyZENvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29sdW1uLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NpbmdsZUl0ZW1Db2x1bW5zLmFkZChjb2x1bW5bMF0uZmRDYXJkRGVmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fbGlzdGVuT25DYXJkc0hlaWdodENoYW5nZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0Q2FyZENvbHVtbnNXaWR0aCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29sdW1uc1dpZHRoID0gbmV3IE1hcCgpO1xuXG4gICAgICAgIGNvbnN0IGNvbmZpZ1ByZXNlbnQgPVxuICAgICAgICAgICAgdGhpcy5jb2x1bW5zV2lkdGhDb25maWcgJiZcbiAgICAgICAgICAgIHR5cGVvZiB0aGlzLmNvbHVtbnNXaWR0aENvbmZpZyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuY29sdW1uc1dpZHRoQ29uZmlnKS5sZW5ndGg7XG5cbiAgICAgICAgaWYgKCFjb25maWdQcmVzZW50IHx8IHRoaXMuX251bWJlck9mQ29sdW1ucyA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZml4ZWRXaWR0aE1vZGlmaWVycyA9IGZpeFdpZHRoTW9kaWZpZXJzKHRoaXMuY29sdW1uc1dpZHRoQ29uZmlnLCB0aGlzLl9udW1iZXJPZkNvbHVtbnMpO1xuICAgICAgICBjb25zdCB0b3RhbFdpZHRoTW9kaWZpZXJzID0gZml4ZWRXaWR0aE1vZGlmaWVycy5yZWR1Y2UoKHN1bSwgd2lkdGgpID0+IChzdW0gKz0gd2lkdGgpLCAwKTtcbiAgICAgICAgY29uc3QgZnJlZVNwYWNlID0gdGhpcy5fYXZhaWxhYmxlV2lkdGggLSB0aGlzLmNhcmRNaW5pbXVtV2lkdGggKiB0aGlzLl9udW1iZXJPZkNvbHVtbnM7XG5cbiAgICAgICAgdGhpcy5fY2FyZENvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSBNYXRoLnJvdW5kKFxuICAgICAgICAgICAgICAgIHRoaXMuY2FyZE1pbmltdW1XaWR0aCArIChmcmVlU3BhY2UgLyB0b3RhbFdpZHRoTW9kaWZpZXJzKSAqIGZpeGVkV2lkdGhNb2RpZmllcnNbaW5kZXhdXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb2x1bW4uZm9yRWFjaCgoY2FyZCkgPT4gdGhpcy5fY29sdW1uc1dpZHRoLnNldChjYXJkLmZkQ2FyZERlZiwgY29sdW1uV2lkdGgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENhbGN1bGF0ZSBjb250YWluZXIgaGVpZ2h0IGFjY29yZGluZ2x5IHRvIHRoZSB0aGUgY2FyZCBjb2x1bW5zIGhlaWdodFxuICAgICAqIFBhcmFtZXRlcnMgdXNlZCB0byBpbmNyZWFzZSB0aGUgaGVpZ2h0IG9mIHRoZSBjb2x1bW4gd2hlcmUgZHJhZyduJ2Ryb3AgcGxhY2Vob2xkZXIgY3VycmVudGx5IGlzXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2V0Q29udGFpbmVySGVpZ2h0KGNvbHVtbkluZGV4VG9BZGRTcGFjZSA9IC0xLCBzcGFjZVRvQWRkID0gMCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgY29uc3QgY2FyZENvbHVtbnMgPSB0aGlzLl9jYXJkQ29sdW1ucy5tYXAoKGNvbHVtbikgPT5cbiAgICAgICAgICAgIGNvbHVtblxuICAgICAgICAgICAgICAgIC5tYXAoKGNhcmQpID0+IHRoaXMuX2RyYWdMaXN0LmZpbmQoKGRyYWcpID0+IGRyYWcuZGF0YSA9PT0gY2FyZCkpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoY2RrRHJhZykgPT4gIWNka0RyYWc/Ll9kcmFnUmVmLmlzRHJhZ2dpbmcoKSAmJiAhIWNka0RyYWc/LmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgICAgICAgLm1hcCgoY2RrRHJhZykgPT4gY2RrRHJhZz8uZWxlbWVudClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBjb2x1bW5zSGVpZ2h0cyA9IGNhcmRDb2x1bW5zXG4gICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IGNvbHVtbi5tYXAoKGNhcmRFbFJlZikgPT4gY2FyZEVsUmVmPy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCB8fCAwKSlcbiAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgICAgKGNvbHVtbiwgY29sdW1uSW5kZXgpID0+XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5yZWR1Y2UoKGNhcmRzSGVpZ2h0LCBoZWlnaHQpID0+IChjYXJkc0hlaWdodCArPSBoZWlnaHQgKyBSRU1fSU5fUFgpLCAwKSArXG4gICAgICAgICAgICAgICAgICAgIChjb2x1bW5JbmRleCA9PT0gY29sdW1uSW5kZXhUb0FkZFNwYWNlID8gc3BhY2VUb0FkZCA6IDApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHByZXZDb250YWluZXJIZWlnaHQgPSB0aGlzLl9jb250YWluZXJIZWlnaHQ7XG5cbiAgICAgICAgLy8gKzRweCBiZWNhdXNlIGl0J3MgdGhlIHRvcCAmIGJvdHRvbSBib3JkZXJzIG9mIGNhcmQgcGxhY2Vob2xkZXJcbiAgICAgICAgdGhpcy5fY29udGFpbmVySGVpZ2h0ID0gTWF0aC5jZWlsKE1hdGgubWF4KC4uLmNvbHVtbnNIZWlnaHRzKSArIDQpO1xuXG4gICAgICAgIGlmICh0aGlzLl9jb250YWluZXJIZWlnaHQgIT09IHByZXZDb250YWluZXJIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25DYXJkc0hlaWdodENoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FyZHNTaXplQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2NhcmRzU2l6ZUNoYW5nZVN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgdGhpcy5fY2FyZENvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PlxuICAgICAgICAgICAgY29sdW1uXG4gICAgICAgICAgICAgICAgLm1hcCgoY2FyZCkgPT4gdGhpcy5fZHJhZ0xpc3QuZmluZCgod3JhcHBlcikgPT4gd3JhcHBlci5kYXRhID09PSBjYXJkKT8uZWxlbWVudClcbiAgICAgICAgICAgICAgICAuZmlsdGVyKCh2KTogdiBpcyBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiA9PiAhIXYpXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKGNhcmQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FyZHNTaXplQ2hhbmdlU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZU9ic2VydmFibGUoY2FyZC5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMjApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5fbGlzdGVuUmVzaXplICYmICEhdGhpcy5fbGF5b3V0Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3NldENvbnRhaW5lckhlaWdodCgpKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuXG4vKiogQGhpZGRlbiAqL1xuZnVuY3Rpb24gZml4V2lkdGhNb2RpZmllcnMoY29uZmlnOiBDb2x1bW5zV2lkdGhDb25maWcsIG51bWJlck9mQ29sdW1uczogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IG1vZGlmaWVycyA9IG5ldyBBcnJheShudW1iZXJPZkNvbHVtbnMpLmZpbGwoMCk7XG5cbiAgICByZXR1cm4gbW9kaWZpZXJzLm1hcCgoXywgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgY29sdW1uV2lkdGhNb2RpZmllciA9IGNvbmZpZ1tpbmRleCArIDFdO1xuXG4gICAgICAgIGlmICghY29sdW1uV2lkdGhNb2RpZmllciB8fCBjb2x1bW5XaWR0aE1vZGlmaWVyIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29sdW1uV2lkdGhNb2RpZmllcjtcbiAgICB9KTtcbn1cblxuLyoqIEBoaWRkZW4gUmV0dXJucyBudW1iZXIgb2YgY29sdW1ucyB0aGF0IGNhbiBmaXQgaW4gY3VycmVudCBhdmFpbGFibGUgd2lkdGggZm9yIGZkLWNhcmQtbGF5b3V0ICovXG5mdW5jdGlvbiBnZXROdW1iZXJPZkNvbHVtbnMoY29udGFpbmVyV2lkdGg6IG51bWJlciwgY2FyZFdpZHRoOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnRhaW5lcldpZHRoID0gY29udGFpbmVyV2lkdGggfHwgMTtcbiAgICBjYXJkV2lkdGggPSBjYXJkV2lkdGggfHwgMTtcblxuICAgIGNvbnN0IG51bWJlck9mQ2FyZHNXaXRoTm9HYXAgPSBNYXRoLm1heChNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoIC8gY2FyZFdpZHRoKSwgMSk7IC8vIEV4YW1wbGU6IDk2MCAvIDMyMCA9IDNcbiAgICBjb25zdCByZXF1aXJlZFdpZHRoV2l0aEdhcCA9IG51bWJlck9mQ2FyZHNXaXRoTm9HYXAgKiBjYXJkV2lkdGggKyAobnVtYmVyT2ZDYXJkc1dpdGhOb0dhcCAtIDEpICogQ0FSRF9HQVBfV0lEVEg7XG4gICAgY29uc3QgY29sdW1uQ291bnQgPSByZXF1aXJlZFdpZHRoV2l0aEdhcCA+IGNvbnRhaW5lcldpZHRoID8gbnVtYmVyT2ZDYXJkc1dpdGhOb0dhcCAtIDEgOiBudW1iZXJPZkNhcmRzV2l0aE5vR2FwO1xuXG4gICAgcmV0dXJuIE1hdGgubWF4KGNvbHVtbkNvdW50LCAxKTtcbn1cblxuLyoqIEBoaWRkZW4gTWV0aG9kIHRvIHVwZGF0ZSByYW5rIGFmdGVyIGNhcmRzIGFyZSBkcmFnZ2VkICovXG5mdW5jdGlvbiBhZGp1c3RDYXJkUmFuayhkcmFnZ2VkQ2FyZDogQ2FyZERlZmluaXRpb25EaXJlY3RpdmUsIHJlcGxhY2VkQ2FyZDogQ2FyZERlZmluaXRpb25EaXJlY3RpdmUpOiB2b2lkIHtcbiAgICBjb25zdCBkcmFnZ2VkQ2FyZFJhbmsgPSBkcmFnZ2VkQ2FyZC5mZENhcmREZWY7XG4gICAgZHJhZ2dlZENhcmQuZmRDYXJkRGVmID0gcmVwbGFjZWRDYXJkLmZkQ2FyZERlZjtcbiAgICByZXBsYWNlZENhcmQuZmRDYXJkRGVmID0gZHJhZ2dlZENhcmRSYW5rO1xufVxuIiwiPGRpdlxuICAgICNsYXlvdXRcbiAgICBjZGtEcm9wTGlzdEdyb3VwXG4gICAgZmREbmRLZXlib2FyZEdyb3VwXG4gICAgY2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2FyZC1sYXlvdXQgZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmQtbGF5b3V0LS1jb2x1bW5zLXt7IHRoaXMuX251bWJlck9mQ29sdW1ucyB9fVwiXG4gICAgW3N0eWxlLmhlaWdodF09XCJfY29udGFpbmVySGVpZ2h0ICsgJ3B4J1wiXG4gICAgW2dyb3Vwc109XCJfY2FyZENvbHVtbnNcIlxuICAgIG9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgW2N1c3RvbU1vdmVGbl09XCJfY3VzdG9tTW92ZUZuXCJcbiAgICBbY3VzdG9tVHJhbnNmZXJGbl09XCJfY3VzdG9tVHJhbnNmZXJGblwiXG4gICAgW2Rpc2FibGVLZXlib2FyZERyYWdEcm9wXT1cImRpc2FibGVEcmFnRHJvcFwiXG4gICAgW2Nka0Ryb3BMaXN0R3JvdXBEaXNhYmxlZF09XCJkaXNhYmxlRHJhZ0Ryb3BcIlxuICAgIFthdHRyLmRpcl09XCJfZGlyXCJcbj5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0Zvcj1cImxldCBjYXJkIG9mIF9jYXJkc0FycmF5OyBsZXQgY2FyZEluZGV4ID0gaW5kZXhcIlxuICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICBjbGFzcz1cImZkLWZpeGVkLWNhcmQtbGF5b3V0X19jYXJkXCJcbiAgICAgICAgW2NsYXNzLmZkLWZpeGVkLWNhcmQtbGF5b3V0X19jYXJkLS1zaW5nbGVdPVwiX3NpbmdsZUl0ZW1Db2x1bW5zLmhhcyhjYXJkLmZkQ2FyZERlZilcIlxuICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cIl9jb2x1bW5zV2lkdGguZ2V0KGNhcmQuZmRDYXJkRGVmKVwiXG4gICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwiX2NvbHVtbnNXaWR0aC5nZXQoY2FyZC5mZENhcmREZWYpXCJcbiAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiX2hpZGRlbkNhcmQgPT09IGNhcmQgPyAnbm9uZScgOiAnYmxvY2snXCJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjYXJkSW5kZXhcIlxuICAgICAgICBbY2RrRHJvcExpc3RTb3J0UHJlZGljYXRlXT1cIl9zb3J0UHJlZGljYXRlRm5cIlxuICAgICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cIl9vbkRyb3BMaXN0RW50ZXJlZCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgIGZkRG5kS2V5Ym9hcmRJdGVtXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgY2RrRHJhZ1ByZXZpZXdDbGFzcz1cImZkLWZpeGVkLWNhcmQtbGF5b3V0X19jYXJkLXByZXZpZXdcIlxuICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cImNhcmRcIlxuICAgICAgICAgICAgW2Nka0RyYWdTdGFydERlbGF5XT1cImRyYWdTdGFydERlbGF5XCJcbiAgICAgICAgICAgIFtpdGVtSW5kZXhdPVwiX2l0ZW1JbmRleGVzLmdldChjYXJkLmZkQ2FyZERlZikhXCJcbiAgICAgICAgICAgIFtncm91cEluZGV4XT1cIl9ncm91cEluZGV4ZXMuZ2V0KGNhcmQuZmRDYXJkRGVmKSFcIlxuICAgICAgICAgICAgKGNka0RyYWdTdGFydGVkKT1cIl9vbkRyYWdTdGFydGVkKCRldmVudClcIlxuICAgICAgICAgICAgKGNka0RyYWdEcm9wcGVkKT1cIl9vbkRyYWdEcm9wcGVkKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZmQtZml4ZWQtY2FyZC1sYXlvdXQtaXRlbT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FyZD8udGVtcGxhdGUgfHwgbnVsbFwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZmQtZml4ZWQtY2FyZC1sYXlvdXQtaXRlbT5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpjZGtEcmFnUGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWZpeGVkLWNhcmQtbGF5b3V0X19jYXJkLXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWFyZ2luLWJvdHRvbS5yZW1dPVwiK19wbGFjZWhvbGRlck1hcmdpblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhcmQ/LnRlbXBsYXRlIHx8IG51bGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBfY2FyZENvbHVtbnM7IGxldCBsYXN0ID0gbGFzdDsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFsYXN0XCIgY2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2xlYXJmaXhcIiBbc3R5bGUub3JkZXJdPVwiaW5kZXggKyAxXCI+PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|
|
410
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZml4ZWQtY2FyZC1sYXlvdXQvZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZml4ZWQtY2FyZC1sYXlvdXQvZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxPQUFPLEVBR1Asa0JBQWtCLEVBRWxCLFdBQVcsRUFDWCxnQkFBZ0IsRUFDbkIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RSxPQUFPLEVBQWUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hFLE9BQU8sRUFDSCxpQkFBaUIsRUFFakIsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDbkIsTUFBTSw0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QUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtJQUM3RyxNQUFNLG9CQUFvQixHQUFHLHNCQUFzQixHQUFHLFNBQVMsR0FBRyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQztJQUNoSCxNQUFNLFdBQVcsR0FBRyxvQkFBb0IsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUM7SUFFaEgsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsNERBQTREO0FBQzVELFNBQVMsY0FBYyxDQUFDLFdBQW9DLEVBQUUsWUFBcUM7SUFDL0YsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztJQUM5QyxXQUFXLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7SUFDL0MsWUFBWSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzS2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7XG4gICAgQ2RrRHJhZyxcbiAgICBDZGtEcmFnRHJvcCxcbiAgICBDZGtEcmFnRW50ZXIsXG4gICAgQ2RrRHJhZ1BsYWNlaG9sZGVyLFxuICAgIENka0RyYWdTdGFydCxcbiAgICBDZGtEcm9wTGlzdCxcbiAgICBDZGtEcm9wTGlzdEdyb3VwXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIHNraXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTnVtYmVySW5wdXQsIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IE5nRm9yLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgRHJhZ0FuZERyb3BNb2R1bGUsXG4gICAgTnVsbGFibGUsXG4gICAgUnRsU2VydmljZSxcbiAgICBnZXREb2N1bWVudEZvbnRTaXplLFxuICAgIHJlc2l6ZU9ic2VydmFibGVcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRml4ZWRDYXJkTGF5b3V0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZml4ZWQtY2FyZC1sYXlvdXQtaXRlbS9maXhlZC1jYXJkLWxheW91dC1pdGVtLmNvbXBvbmVudCc7XG5cbmNvbnN0IFJFTV9JTl9QWCA9IGdldERvY3VtZW50Rm9udFNpemUoKTtcbmNvbnN0IENBUkRfTUlOSU1VTV9XSURUSCA9IFJFTV9JTl9QWCAqIDIwOyAvLyAyMHJlbVxuY29uc3QgQ0FSRF9HQVBfV0lEVEggPSBSRU1fSU5fUFg7IC8vIDFyZW1cbmNvbnN0IERSQUdfU1RBUlRfREVMQVkgPSAyMDA7IC8vIGluIG1zXG5jb25zdCBNQVhfQ09MVU1OUyA9IDEwO1xuXG5sZXQgY2FyZFJhbmsgPSAxO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZENhcmREZWZdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIENhcmREZWZpbml0aW9uRGlyZWN0aXZlIHtcbiAgICAvKipcbiAgICAgKiBCZWhhdmVzIGxpa2UgcmFuayBvZiBjYXJkLlxuICAgICAqIFVzZWZ1bCBpbiBjcmVhdGluZyBsYXlvdXQgYWdhaW4gYWZ0ZXIgZHJhZyBhbmQgZHJvcC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBmZENhcmREZWYodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2ZkQ2FyZERlZiA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IGZkQ2FyZERlZigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmRDYXJkRGVmO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZmRDYXJkRGVmOiBudW1iZXIgPSBjYXJkUmFuaysrO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGF5b3V0IHtcbiAgICBudW1iZXJPZkNvbHVtbnM/OiBudW1iZXI7XG4gICAgc2NyZWVuU2l6ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhcmREcm9wcGVkIHtcbiAgICBwcmV2aW91c0luZGV4OiBudW1iZXI7XG4gICAgY3VycmVudEluZGV4OiBudW1iZXI7XG4gICAgbGF5b3V0Q29sdW1uczogbnVtYmVyO1xuICAgIGl0ZW1zOiBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZVtdO1xufVxuXG50eXBlIENvbHVtbnMgPSAxIHwgMiB8IDMgfCA0IHwgNSB8IDYgfCA3IHwgOCB8IDkgfCAxMDtcblxuZXhwb3J0IHR5cGUgQ29sdW1uc1dpZHRoQ29uZmlnID0geyBbQyBpbiBDb2x1bW5zXT86IG51bWJlciB9O1xuXG50eXBlIENhcmRDb2x1bW4gPSBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZVtdO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLWZpeGVkLWNhcmQtbGF5b3V0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpeGVkLWNhcmQtbGF5b3V0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtZml4ZWQtY2FyZC1sYXlvdXQnXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ2RrRHJvcExpc3RHcm91cCxcbiAgICAgICAgRHJhZ0FuZERyb3BNb2R1bGUsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBDZGtEcm9wTGlzdCxcbiAgICAgICAgQ2RrRHJhZyxcbiAgICAgICAgRml4ZWRDYXJkTGF5b3V0SXRlbUNvbXBvbmVudCxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgQ2RrRHJhZ1BsYWNlaG9sZGVyLFxuICAgICAgICBOZ0lmXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGaXhlZENhcmRMYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvKiogRHJhZyBkcm9wIGJlaGF2aW9yIGNhbiBiZSBkaXNhYmxlZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZURyYWdEcm9wOiBib29sZWFuO1xuXG4gICAgLyoqIERyYWcgc3RhcnQgZGVsYXkgaW4gbWlsbGlzZWNvbmRzLCBkZWZhdWx0IHRvIDIwMG1zIGZvciBzYWZlIHNjcm9sbGluZyBvbiBtb2JpbGUgd2l0aCB0b3VjaHNjcmVlbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZHJhZ1N0YXJ0RGVsYXkgPSBEUkFHX1NUQVJUX0RFTEFZO1xuXG4gICAgLyoqIENhcmQncyBtaW5pbXVtIHdpZHRoIGluIHBpeGVscy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjYXJkTWluaW11bVdpZHRoKHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgICAgICBjb25zdCBjb2VyY2VkVmFsdWUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKGNvZXJjZWRWYWx1ZSA8IENBUkRfTUlOSU1VTV9XSURUSCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2FyZE1pbmltdW1XaWR0aCA9IGNvZXJjZWRWYWx1ZTtcbiAgICB9XG4gICAgZ2V0IGNhcmRNaW5pbXVtV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhcmRNaW5pbXVtV2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIENvbmZpZyB3aXRoIHRoZSB3aWR0aCByYXRpb3MgdGhhdCBzaG91bGQgdGFrZSBldmVyeSBjb2x1bW4uIEZsZXgtZ3JvdyBwcmluY2lwZS4gTWlzc2VkIHZhbHVlcyBzZXQgdG8gMC4gcyovXG4gICAgQElucHV0KClcbiAgICBjb2x1bW5zV2lkdGhDb25maWc6IENvbHVtbnNXaWR0aENvbmZpZztcblxuICAgIC8qKiBMaW1pdCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMuIERlZmF1bHQgaXMgMTAuICovXG4gICAgQElucHV0KClcbiAgICBtYXhDb2x1bW5zID0gTUFYX0NPTFVNTlM7XG5cbiAgICAvKiogRXZlbnQgdG8gZW1pdCwgd2hlbiBsYXlvdXQgY2hhbmdlcyAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGxheW91dENoYW5nZTogRXZlbnRFbWl0dGVyPExheW91dD4gPSBuZXcgRXZlbnRFbWl0dGVyPExheW91dD4oKTtcblxuICAgIC8qKiBFdmVudCB0byBlbWl0IG9uIENhcmQgZHJhZ2dlZCBhbmQgZHJvcHBlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNhcmREcmFnZ2VkRHJvcHBlZDogRXZlbnRFbWl0dGVyPENhcmREcm9wcGVkPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FyZERyb3BwZWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oQ2FyZERlZmluaXRpb25EaXJlY3RpdmUpXG4gICAgX2NhcmRzOiBRdWVyeUxpc3Q8Q2FyZERlZmluaXRpb25EaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKEZpeGVkQ2FyZExheW91dEl0ZW1Db21wb25lbnQpXG4gICAgX2NhcmRDb250YWluZXJzOiBRdWVyeUxpc3Q8Rml4ZWRDYXJkTGF5b3V0SXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oQ2RrRHJhZylcbiAgICBfZHJhZ0xpc3Q6IFF1ZXJ5TGlzdDxDZGtEcmFnPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnbGF5b3V0JylcbiAgICBfbGF5b3V0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NhcmRzQXJyYXk6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlW107XG5cbiAgICAvKiogQGhpZGRlbiBOdW1iZXIgb2YgQ29sdW1ucyBpbiBsYXlvdXQgKi9cbiAgICBfbnVtYmVyT2ZDb2x1bW5zOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jYXJkQ29sdW1uczogQ2FyZENvbHVtbltdO1xuXG4gICAgLyoqIEBoaWRkZW4qL1xuICAgIF9jb250YWluZXJIZWlnaHQgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gaGFuZGxlcyBydGwgc2VydmljZSAqL1xuICAgIF9kaXIgPSAnbHRyJztcblxuICAgIC8qKiBAaGlkZGVuIGZpcnN0IG51bWJlciBpcyB0aGUgQ2FyZERlZmluaXRpb24gcmFuaywgaS5lLiBpZCAqL1xuICAgIF9ncm91cEluZGV4ZXMgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gZmlyc3QgbnVtYmVyIGlzIHRoZSBDYXJkRGVmaW5pdGlvbiByYW5rLCBpLmUuIGlkICovXG4gICAgX2l0ZW1JbmRleGVzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuIGZpcnN0IG51bWJlciBpcyB0aGUgQ2FyZERlZmluaXRpb24gcmFuaywgaS5lLiBpZCAqL1xuICAgIF9zaW5nbGVJdGVtQ29sdW1ucyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29sdW1uc1dpZHRoID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuIFJldHVybiBhdmFpbGFibGUgd2lkdGggZm9yIGZpeGVkIGNhcmQgbGF5b3V0ICovXG4gICAgZ2V0IF9hdmFpbGFibGVXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGF5b3V0Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcGxhY2Vob2xkZXJNYXJnaW46IGJvb2xlYW47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9saXN0ZW5SZXNpemUgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGlkZGVuQ2FyZDogTnVsbGFibGU8Q2FyZERlZmluaXRpb25EaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gRm9jdXNLZXlNYW5hZ2VyIGluc3RhbmNlICovXG4gICAgcHJpdmF0ZSBfa2V5Ym9hcmRFdmVudHNNYW5hZ2VyOiBGb2N1c0tleU1hbmFnZXI8Rml4ZWRDYXJkTGF5b3V0SXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhcmRNaW5pbXVtV2lkdGggPSBDQVJEX01JTklNVU1fV0lEVEg7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhcmRzU2l6ZUNoYW5nZVN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuIEFuIFJ4SlMgU3ViamVjdCB0aGF0IHdpbGwga2lsbCB0aGUgZGF0YSBzdHJlYW0gdXBvbiBjb21wb25lbnTigJlzIGRlc3RydWN0aW9uIChmb3IgdW5zdWJzY3JpYmluZykgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2VcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb1J0bCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wcm9jZXNzQ2FyZHMoKTtcblxuICAgICAgICB0aGlzLl9saXN0ZW5PblJlc2l6ZSgpO1xuICAgICAgICB0aGlzLl9saXN0ZW5PbkNhcmRzQ2hhbmdlKCk7XG4gICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlTZXR1cCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICAvLyBTa2lwIGFsbCBjaGFuZ2VzIHVubGVzcyB3ZSBkb24ndCBoYXZlIGluaXRpYWwgbGF5b3V0IGNyZWF0ZWRcbiAgICAgICAgaWYgKCF0aGlzLl9jYXJkc0FycmF5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoJ21heENvbHVtbnMnIGluIGNoYW5nZXMgfHwgJ2NhcmRNaW5pbXVtV2lkdGgnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoJ2NvbHVtbnNXaWR0aENvbmZpZycgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5fc2V0Q2FyZENvbHVtbnNXaWR0aCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FyZHNTaXplQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlcj8uZGVzdHJveSgpO1xuXG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIGlmICh0aGlzLl9rZXlib2FyZEV2ZW50c01hbmFnZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIERpc3RyaWJ1dGUgY2FyZHMgb24gd2luZG93IHJlc2l6ZSAqL1xuICAgIHVwZGF0ZUxheW91dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuUmVzaXplID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuX2NhcmRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgcG9zc2libGVOdW1iZXJPZkNvbHVtbnMgPSBnZXROdW1iZXJPZkNvbHVtbnModGhpcy5fYXZhaWxhYmxlV2lkdGgsIHRoaXMuY2FyZE1pbmltdW1XaWR0aCk7XG5cbiAgICAgICAgICAgIHRoaXMuX251bWJlck9mQ29sdW1ucyA9IE1hdGgubWluKFxuICAgICAgICAgICAgICAgIHBvc3NpYmxlTnVtYmVyT2ZDb2x1bW5zLFxuICAgICAgICAgICAgICAgIHRoaXMuX2NhcmRzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICB0aGlzLm1heENvbHVtbnMgfHwgTUFYX0NPTFVNTlMsXG4gICAgICAgICAgICAgICAgTUFYX0NPTFVNTlNcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9udW1iZXJPZkNvbHVtbnMgPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sYXlvdXRDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBudW1iZXJPZkNvbHVtbnM6IHRoaXMuX251bWJlck9mQ29sdW1ucyxcbiAgICAgICAgICAgIHNjcmVlblNpemU6IHRoaXMuX2F2YWlsYWJsZVdpZHRoXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3NldENhcmRDb2x1bW5zKCk7XG4gICAgICAgIHRoaXMuX3NldENhcmRDb2x1bW5zV2lkdGgoKTtcbiAgICAgICAgdGhpcy5fc2V0Q29udGFpbmVySGVpZ2h0KCk7XG5cbiAgICAgICAgdGhpcy5fbGlzdGVuUmVzaXplID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkRyYWdTdGFydGVkKGV2ZW50OiBDZGtEcmFnU3RhcnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuUmVzaXplID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2hpZGRlbkNhcmQgPSBldmVudC5zb3VyY2UuZGF0YTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkRyb3BMaXN0RW50ZXJlZChldmVudDogQ2RrRHJhZ0VudGVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckl0ZW1DYXJkRGVmID0gKGV2ZW50LmNvbnRhaW5lci5nZXRTb3J0ZWRJdGVtcygpWzBdLmRhdGEgYXMgQ2FyZERlZmluaXRpb25EaXJlY3RpdmUpLmZkQ2FyZERlZjtcbiAgICAgICAgY29uc3QgZHJhZ0l0ZW1DYXJkRGVmID0gKGV2ZW50Lml0ZW0uZGF0YSBhcyBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZSkuZmRDYXJkRGVmO1xuXG4gICAgICAgIHRoaXMuX3BsYWNlaG9sZGVyTWFyZ2luID0gY29udGFpbmVySXRlbUNhcmREZWYgIT09IGRyYWdJdGVtQ2FyZERlZjtcblxuICAgICAgICBjb25zdCBjb2x1bW5JbmRleFRvQWRkU3BhY2UgPSB0aGlzLl9jYXJkQ29sdW1ucy5maW5kSW5kZXgoKGNvbHVtbikgPT5cbiAgICAgICAgICAgIGNvbHVtbi5maW5kKChjYXJkKSA9PiBldmVudC5jb250YWluZXIuZ2V0U29ydGVkSXRlbXMoKVswXS5kYXRhID09PSBjYXJkKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzcGFjZVRvQWRkID1cbiAgICAgICAgICAgIGV2ZW50Lml0ZW0uZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCArXG4gICAgICAgICAgICAoZXZlbnQuY29udGFpbmVyLmdldFNvcnRlZEl0ZW1zKCkubGVuZ3RoID8gUkVNX0lOX1BYIDogMCk7XG5cbiAgICAgICAgLy8gV2hlbiB3ZSBtb3ZlIHRoZSBjYXJkIGludG8gYSBjZXJ0YWluIGNvbHVtbiB3ZSBzaG91bGQgaW5jcmVhc2UgdGhlIGhlaWdodCBvZiB0aGF0IGNvbHVtbiBieSB0aGUgY2FyZCBoZWlnaHRcbiAgICAgICAgdGhpcy5fc2V0Q29udGFpbmVySGVpZ2h0KGNvbHVtbkluZGV4VG9BZGRTcGFjZSwgc3BhY2VUb0FkZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25EcmFnRHJvcHBlZChldmVudDogQ2RrRHJhZ0Ryb3A8bnVtYmVyLCBudW1iZXI+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hpZGRlbkNhcmQgPSBudWxsO1xuXG4gICAgICAgIGlmIChldmVudC5jb250YWluZXIuZGF0YSA9PT0gZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcGxhY2Vob2xkZXJNYXJnaW4gPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBtb3ZlZENhcmQgPSBldmVudC5wcmV2aW91c0NvbnRhaW5lci5nZXRTb3J0ZWRJdGVtcygpWzBdLmRhdGE7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VkQ2FyZCA9IGV2ZW50LmNvbnRhaW5lci5nZXRTb3J0ZWRJdGVtcygpWzBdLmRhdGE7XG5cbiAgICAgICAgY29uc3QgbW92ZWRDYXJkQ29sdW1uID0gdGhpcy5fY2FyZENvbHVtbnMuZmluZCgoY29sdW1uKSA9PlxuICAgICAgICAgICAgY29sdW1uLmZpbmQoKGNhcmQpID0+IGNhcmQuZmRDYXJkRGVmID09PSBtb3ZlZENhcmQuZmRDYXJkRGVmKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCByZXBsYWNlZENhcmRDb2x1bW4gPSB0aGlzLl9jYXJkQ29sdW1ucy5maW5kKChjb2x1bW4pID0+XG4gICAgICAgICAgICBjb2x1bW4uZmluZCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYpXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gSWYgd2UgZHJhZ2dlZCB0aGUgY2FyZCBmcm9tIHRoZSBzYW1lIGNvbHVtbiBhcyB0aGUgY29sdW1uIHdlJ3JlIGRyb3BwaW5nIGludG9cbiAgICAgICAgLy8gVGhlcmUgbWF5IGJlIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSBvcmRlciBzaG91bGRuJ3QgY2hhbmdlIGJ1dCBzaW5jZSB0aGVyZSBhcmUgYSBkaWZmZXJlbnQgZHJvcCBsaXN0cyBpdCB3aWxsIGNoYW5nZVxuICAgICAgICAvLyBXZSBzaG91bGQgcHJldmVudCB0aGlzXG4gICAgICAgIGlmIChtb3ZlZENhcmRDb2x1bW4gPT09IHJlcGxhY2VkQ2FyZENvbHVtbiAmJiBtb3ZlZENhcmRDb2x1bW4/Lmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgaWYgKG1vdmVkQ2FyZC5mZENhcmREZWYgPCByZXBsYWNlZENhcmQuZmRDYXJkRGVmICYmIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEgPCBldmVudC5jb250YWluZXIuZGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1vdmVkQ2FyZC5mZENhcmREZWYgPiByZXBsYWNlZENhcmQuZmRDYXJkRGVmICYmIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEgPiBldmVudC5jb250YWluZXIuZGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NEcmFnRHJvcChldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLCBldmVudC5jb250YWluZXIuZGF0YSwgbW92ZWRDYXJkLCByZXBsYWNlZENhcmQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NvcnRQcmVkaWNhdGVGbiA9IChpbmRleDogbnVtYmVyKTogYm9vbGVhbiA9PiBpbmRleCA9PT0gMDtcblxuICAgIC8qKiBAaGlkZGVuIEZvciB0aGUga2V5Ym9hcmQgZHJhZyZkcm9wIGRpcmVjdGl2ZSAqL1xuICAgIF9jdXN0b21Nb3ZlRm4gPSAoZ3JvdXA6IENhcmRDb2x1bW4sIGluZGV4RnJvbTogbnVtYmVyLCBpbmRleFRvOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgbW92ZWRDYXJkID0gZ3JvdXBbaW5kZXhGcm9tXTtcbiAgICAgICAgY29uc3QgcmVwbGFjZWRDYXJkID0gZ3JvdXBbaW5kZXhUb107XG5cbiAgICAgICAgY29uc3QgaW5kZXhGcm9tQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IG1vdmVkQ2FyZC5mZENhcmREZWYpO1xuICAgICAgICBjb25zdCBpbmRleFRvQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYpO1xuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NEcmFnRHJvcChpbmRleEZyb21BcnJheSwgaW5kZXhUb0FycmF5LCBtb3ZlZENhcmQsIHJlcGxhY2VkQ2FyZCk7XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuIEZvciB0aGUga2V5Ym9hcmQgZHJhZyZkcm9wIGRpcmVjdGl2ZSAqL1xuICAgIF9jdXN0b21UcmFuc2ZlckZuID0gKHByZXZHcm91cDogQ2FyZENvbHVtbiwgbmV4dEdyb3VwOiBDYXJkQ29sdW1uLCBpbmRleEZyb206IG51bWJlciwgaW5kZXhUbzogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IG1vdmVkQ2FyZCA9IHByZXZHcm91cFtpbmRleEZyb21dO1xuICAgICAgICBjb25zdCByZXBsYWNlZENhcmQgPSBuZXh0R3JvdXBbaW5kZXhUb107XG5cbiAgICAgICAgY29uc3QgaW5kZXhGcm9tQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IG1vdmVkQ2FyZC5mZENhcmREZWYpO1xuICAgICAgICBjb25zdCBpbmRleFRvQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYpO1xuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NEcmFnRHJvcChpbmRleEZyb21BcnJheSwgaW5kZXhUb0FycmF5LCBtb3ZlZENhcmQsIHJlcGxhY2VkQ2FyZCk7XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuIEFycmFuZ2VzIGNhcmRzIG9uIGRyb3Agb2YgZHJhZ2dlZCBjYXJkICovXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc0RyYWdEcm9wKFxuICAgICAgICBwcmV2SW5kZXg6IG51bWJlcixcbiAgICAgICAgbmV3SW5kZXg6IG51bWJlcixcbiAgICAgICAgcHJldkNhcmQ6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlLFxuICAgICAgICBuZXdDYXJkOiBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZVxuICAgICk6IHZvaWQge1xuICAgICAgICAvLyBtb3ZlSXRlbUluQXJyYXkgZnJvbSBDREsgd29uJ3Qgd29yayBhcyBpdCBjaGFuZ2VzIG9yZGVyIG9mIG90aGVyIGNhcmRzXG4gICAgICAgIGNvbnN0IHJlcGxhY2VkQ2FyZCA9IHRoaXMuX2NhcmRzQXJyYXlbbmV3SW5kZXhdO1xuICAgICAgICB0aGlzLl9jYXJkc0FycmF5W25ld0luZGV4XSA9IHRoaXMuX2NhcmRzQXJyYXlbcHJldkluZGV4XTtcbiAgICAgICAgdGhpcy5fY2FyZHNBcnJheVtwcmV2SW5kZXhdID0gcmVwbGFjZWRDYXJkO1xuXG4gICAgICAgIGFkanVzdENhcmRSYW5rKHByZXZDYXJkLCBuZXdDYXJkKTtcblxuICAgICAgICB0aGlzLmNhcmREcmFnZ2VkRHJvcHBlZC5lbWl0KHtcbiAgICAgICAgICAgIHByZXZpb3VzSW5kZXg6IHByZXZJbmRleCxcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleDogbmV3SW5kZXgsXG4gICAgICAgICAgICBsYXlvdXRDb2x1bW5zOiB0aGlzLl9udW1iZXJPZkNvbHVtbnMsXG4gICAgICAgICAgICBpdGVtczogdGhpcy5fY2FyZHMudG9BcnJheSgpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hY2Nlc3NpYmlsaXR5U2V0dXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlcj8uZGVzdHJveSgpO1xuICAgICAgICB0aGlzLl9rZXlib2FyZEV2ZW50c01hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyKHRoaXMuX2NhcmRDb250YWluZXJzKS53aXRoV3JhcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJ0bCBjaGFuZ2Ugc3Vic2NyaXB0aW9uICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9SdGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3J0bFNlcnZpY2U/LnJ0bC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpc1J0bCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZGlyID0gaXNSdGwgPyAncnRsJyA6ICdsdHInO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIExpc3RlbiB3aW5kb3cgcmVzaXplIGFuZCBkaXN0cmlidXRlIGNhcmRzIG9uIGNvbHVtbiBjaGFuZ2UgKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PblJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgcmVzaXplT2JzZXJ2YWJsZSh0aGlzLl9sYXlvdXQubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgyMCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoZW50cmllcykgPT4gdGhpcy5fbGlzdGVuUmVzaXplICYmICEhKGVudHJpZXNbMF0uY29udGVudFJlY3QuaGVpZ2h0IHx8IGVudHJpZXNbMF0uY29udGVudFJlY3Qud2lkdGgpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVMYXlvdXQoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTGlzdGVuIGNhcmQgY2hhbmdlIGFuZCBkaXN0cmlidXRlIGNhcmRzIG9uIGNvbHVtbiBjaGFuZ2UgKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PbkNhcmRzQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYXJkcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9wcm9jZXNzQ2FyZHMoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc0NhcmRzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYXJkc0FycmF5ID0gdGhpcy5fY2FyZHNcbiAgICAgICAgICAgIC50b0FycmF5KClcbiAgICAgICAgICAgIC5zb3J0KChmaXJzdENhcmQsIHNlY29uZENhcmQpID0+IGZpcnN0Q2FyZC5mZENhcmREZWYgLSBzZWNvbmRDYXJkLmZkQ2FyZERlZik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gRGlzdHJpYnV0ZSBjYXJkcyBhbW9uZyBjb2x1bW5zIHRvIGFycmFuZ2UgdGhlbSBpbiBcIlpcIiBmbG93ICovXG4gICAgcHJpdmF0ZSBfc2V0Q2FyZENvbHVtbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2dyb3VwSW5kZXhlcyA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG4gICAgICAgIHRoaXMuX2l0ZW1JbmRleGVzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbiAgICAgICAgdGhpcy5fc2luZ2xlSXRlbUNvbHVtbnMgPSBuZXcgU2V0PG51bWJlcj4oKTtcblxuICAgICAgICBjb25zdCBjb2x1bW5zOiBDYXJkQ29sdW1uW10gPSBuZXcgQXJyYXkodGhpcy5fbnVtYmVyT2ZDb2x1bW5zKS5maWxsKDApLm1hcCgoKSA9PiBuZXcgQXJyYXkoMCkpO1xuXG4gICAgICAgIHRoaXMuX2NhcmRzQXJyYXkuZm9yRWFjaCgoY2FyZCwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VyckNvbHVtbkluZGV4ID0gaSAlIHRoaXMuX251bWJlck9mQ29sdW1ucztcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IGNvbHVtbnNbY3VyckNvbHVtbkluZGV4XS5sZW5ndGg7XG5cbiAgICAgICAgICAgIGNvbHVtbnNbY3VyckNvbHVtbkluZGV4XS5wdXNoKGNhcmQpO1xuXG4gICAgICAgICAgICB0aGlzLl9ncm91cEluZGV4ZXMuc2V0KGNhcmQuZmRDYXJkRGVmLCBjdXJyQ29sdW1uSW5kZXgpO1xuICAgICAgICAgICAgdGhpcy5faXRlbUluZGV4ZXMuc2V0KGNhcmQuZmRDYXJkRGVmLCBpdGVtSW5kZXgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jYXJkQ29sdW1ucyA9IGNvbHVtbnM7XG5cbiAgICAgICAgdGhpcy5fY2FyZENvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29sdW1uLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NpbmdsZUl0ZW1Db2x1bW5zLmFkZChjb2x1bW5bMF0uZmRDYXJkRGVmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fbGlzdGVuT25DYXJkc0hlaWdodENoYW5nZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0Q2FyZENvbHVtbnNXaWR0aCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29sdW1uc1dpZHRoID0gbmV3IE1hcCgpO1xuXG4gICAgICAgIGNvbnN0IGNvbmZpZ1ByZXNlbnQgPVxuICAgICAgICAgICAgdGhpcy5jb2x1bW5zV2lkdGhDb25maWcgJiZcbiAgICAgICAgICAgIHR5cGVvZiB0aGlzLmNvbHVtbnNXaWR0aENvbmZpZyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuY29sdW1uc1dpZHRoQ29uZmlnKS5sZW5ndGg7XG5cbiAgICAgICAgaWYgKCFjb25maWdQcmVzZW50IHx8IHRoaXMuX251bWJlck9mQ29sdW1ucyA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZml4ZWRXaWR0aE1vZGlmaWVycyA9IGZpeFdpZHRoTW9kaWZpZXJzKHRoaXMuY29sdW1uc1dpZHRoQ29uZmlnLCB0aGlzLl9udW1iZXJPZkNvbHVtbnMpO1xuICAgICAgICBjb25zdCB0b3RhbFdpZHRoTW9kaWZpZXJzID0gZml4ZWRXaWR0aE1vZGlmaWVycy5yZWR1Y2UoKHN1bSwgd2lkdGgpID0+IChzdW0gKz0gd2lkdGgpLCAwKTtcbiAgICAgICAgY29uc3QgZnJlZVNwYWNlID0gdGhpcy5fYXZhaWxhYmxlV2lkdGggLSB0aGlzLmNhcmRNaW5pbXVtV2lkdGggKiB0aGlzLl9udW1iZXJPZkNvbHVtbnM7XG5cbiAgICAgICAgdGhpcy5fY2FyZENvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSBNYXRoLnJvdW5kKFxuICAgICAgICAgICAgICAgIHRoaXMuY2FyZE1pbmltdW1XaWR0aCArIChmcmVlU3BhY2UgLyB0b3RhbFdpZHRoTW9kaWZpZXJzKSAqIGZpeGVkV2lkdGhNb2RpZmllcnNbaW5kZXhdXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb2x1bW4uZm9yRWFjaCgoY2FyZCkgPT4gdGhpcy5fY29sdW1uc1dpZHRoLnNldChjYXJkLmZkQ2FyZERlZiwgY29sdW1uV2lkdGgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENhbGN1bGF0ZSBjb250YWluZXIgaGVpZ2h0IGFjY29yZGluZ2x5IHRvIHRoZSB0aGUgY2FyZCBjb2x1bW5zIGhlaWdodFxuICAgICAqIFBhcmFtZXRlcnMgdXNlZCB0byBpbmNyZWFzZSB0aGUgaGVpZ2h0IG9mIHRoZSBjb2x1bW4gd2hlcmUgZHJhZyduJ2Ryb3AgcGxhY2Vob2xkZXIgY3VycmVudGx5IGlzXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2V0Q29udGFpbmVySGVpZ2h0KGNvbHVtbkluZGV4VG9BZGRTcGFjZSA9IC0xLCBzcGFjZVRvQWRkID0gMCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgY29uc3QgY2FyZENvbHVtbnMgPSB0aGlzLl9jYXJkQ29sdW1ucy5tYXAoKGNvbHVtbikgPT5cbiAgICAgICAgICAgIGNvbHVtblxuICAgICAgICAgICAgICAgIC5tYXAoKGNhcmQpID0+IHRoaXMuX2RyYWdMaXN0LmZpbmQoKGRyYWcpID0+IGRyYWcuZGF0YSA9PT0gY2FyZCkpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoY2RrRHJhZykgPT4gIWNka0RyYWc/Ll9kcmFnUmVmLmlzRHJhZ2dpbmcoKSAmJiAhIWNka0RyYWc/LmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgICAgICAgLm1hcCgoY2RrRHJhZykgPT4gY2RrRHJhZz8uZWxlbWVudClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBjb2x1bW5zSGVpZ2h0cyA9IGNhcmRDb2x1bW5zXG4gICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IGNvbHVtbi5tYXAoKGNhcmRFbFJlZikgPT4gY2FyZEVsUmVmPy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCB8fCAwKSlcbiAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgICAgKGNvbHVtbiwgY29sdW1uSW5kZXgpID0+XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5yZWR1Y2UoKGNhcmRzSGVpZ2h0LCBoZWlnaHQpID0+IChjYXJkc0hlaWdodCArPSBoZWlnaHQgKyBSRU1fSU5fUFgpLCAwKSArXG4gICAgICAgICAgICAgICAgICAgIChjb2x1bW5JbmRleCA9PT0gY29sdW1uSW5kZXhUb0FkZFNwYWNlID8gc3BhY2VUb0FkZCA6IDApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHByZXZDb250YWluZXJIZWlnaHQgPSB0aGlzLl9jb250YWluZXJIZWlnaHQ7XG5cbiAgICAgICAgLy8gKzRweCBiZWNhdXNlIGl0J3MgdGhlIHRvcCAmIGJvdHRvbSBib3JkZXJzIG9mIGNhcmQgcGxhY2Vob2xkZXJcbiAgICAgICAgdGhpcy5fY29udGFpbmVySGVpZ2h0ID0gTWF0aC5jZWlsKE1hdGgubWF4KC4uLmNvbHVtbnNIZWlnaHRzKSArIDQpO1xuXG4gICAgICAgIGlmICh0aGlzLl9jb250YWluZXJIZWlnaHQgIT09IHByZXZDb250YWluZXJIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25DYXJkc0hlaWdodENoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FyZHNTaXplQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2NhcmRzU2l6ZUNoYW5nZVN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgdGhpcy5fY2FyZENvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PlxuICAgICAgICAgICAgY29sdW1uXG4gICAgICAgICAgICAgICAgLm1hcCgoY2FyZCkgPT4gdGhpcy5fZHJhZ0xpc3QuZmluZCgod3JhcHBlcikgPT4gd3JhcHBlci5kYXRhID09PSBjYXJkKT8uZWxlbWVudClcbiAgICAgICAgICAgICAgICAuZmlsdGVyKCh2KTogdiBpcyBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiA9PiAhIXYpXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKGNhcmQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FyZHNTaXplQ2hhbmdlU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZU9ic2VydmFibGUoY2FyZC5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMjApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5fbGlzdGVuUmVzaXplICYmICEhdGhpcy5fbGF5b3V0Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3NldENvbnRhaW5lckhlaWdodCgpKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuXG4vKiogQGhpZGRlbiAqL1xuZnVuY3Rpb24gZml4V2lkdGhNb2RpZmllcnMoY29uZmlnOiBDb2x1bW5zV2lkdGhDb25maWcsIG51bWJlck9mQ29sdW1uczogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IG1vZGlmaWVycyA9IG5ldyBBcnJheShudW1iZXJPZkNvbHVtbnMpLmZpbGwoMCk7XG5cbiAgICByZXR1cm4gbW9kaWZpZXJzLm1hcCgoXywgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgY29sdW1uV2lkdGhNb2RpZmllciA9IGNvbmZpZ1tpbmRleCArIDFdO1xuXG4gICAgICAgIGlmICghY29sdW1uV2lkdGhNb2RpZmllciB8fCBjb2x1bW5XaWR0aE1vZGlmaWVyIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29sdW1uV2lkdGhNb2RpZmllcjtcbiAgICB9KTtcbn1cblxuLyoqIEBoaWRkZW4gUmV0dXJucyBudW1iZXIgb2YgY29sdW1ucyB0aGF0IGNhbiBmaXQgaW4gY3VycmVudCBhdmFpbGFibGUgd2lkdGggZm9yIGZkLWNhcmQtbGF5b3V0ICovXG5mdW5jdGlvbiBnZXROdW1iZXJPZkNvbHVtbnMoY29udGFpbmVyV2lkdGg6IG51bWJlciwgY2FyZFdpZHRoOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnRhaW5lcldpZHRoID0gY29udGFpbmVyV2lkdGggfHwgMTtcbiAgICBjYXJkV2lkdGggPSBjYXJkV2lkdGggfHwgMTtcblxuICAgIGNvbnN0IG51bWJlck9mQ2FyZHNXaXRoTm9HYXAgPSBNYXRoLm1heChNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoIC8gY2FyZFdpZHRoKSwgMSk7IC8vIEV4YW1wbGU6IDk2MCAvIDMyMCA9IDNcbiAgICBjb25zdCByZXF1aXJlZFdpZHRoV2l0aEdhcCA9IG51bWJlck9mQ2FyZHNXaXRoTm9HYXAgKiBjYXJkV2lkdGggKyAobnVtYmVyT2ZDYXJkc1dpdGhOb0dhcCAtIDEpICogQ0FSRF9HQVBfV0lEVEg7XG4gICAgY29uc3QgY29sdW1uQ291bnQgPSByZXF1aXJlZFdpZHRoV2l0aEdhcCA+IGNvbnRhaW5lcldpZHRoID8gbnVtYmVyT2ZDYXJkc1dpdGhOb0dhcCAtIDEgOiBudW1iZXJPZkNhcmRzV2l0aE5vR2FwO1xuXG4gICAgcmV0dXJuIE1hdGgubWF4KGNvbHVtbkNvdW50LCAxKTtcbn1cblxuLyoqIEBoaWRkZW4gTWV0aG9kIHRvIHVwZGF0ZSByYW5rIGFmdGVyIGNhcmRzIGFyZSBkcmFnZ2VkICovXG5mdW5jdGlvbiBhZGp1c3RDYXJkUmFuayhkcmFnZ2VkQ2FyZDogQ2FyZERlZmluaXRpb25EaXJlY3RpdmUsIHJlcGxhY2VkQ2FyZDogQ2FyZERlZmluaXRpb25EaXJlY3RpdmUpOiB2b2lkIHtcbiAgICBjb25zdCBkcmFnZ2VkQ2FyZFJhbmsgPSBkcmFnZ2VkQ2FyZC5mZENhcmREZWY7XG4gICAgZHJhZ2dlZENhcmQuZmRDYXJkRGVmID0gcmVwbGFjZWRDYXJkLmZkQ2FyZERlZjtcbiAgICByZXBsYWNlZENhcmQuZmRDYXJkRGVmID0gZHJhZ2dlZENhcmRSYW5rO1xufVxuIiwiPGRpdlxuICAgICNsYXlvdXRcbiAgICBjZGtEcm9wTGlzdEdyb3VwXG4gICAgZmREbmRLZXlib2FyZEdyb3VwXG4gICAgY2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2FyZC1sYXlvdXQgZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmQtbGF5b3V0LS1jb2x1bW5zLXt7IHRoaXMuX251bWJlck9mQ29sdW1ucyB9fVwiXG4gICAgW3N0eWxlLmhlaWdodF09XCJfY29udGFpbmVySGVpZ2h0ICsgJ3B4J1wiXG4gICAgW2dyb3Vwc109XCJfY2FyZENvbHVtbnNcIlxuICAgIG9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgW2N1c3RvbU1vdmVGbl09XCJfY3VzdG9tTW92ZUZuXCJcbiAgICBbY3VzdG9tVHJhbnNmZXJGbl09XCJfY3VzdG9tVHJhbnNmZXJGblwiXG4gICAgW2Rpc2FibGVLZXlib2FyZERyYWdEcm9wXT1cImRpc2FibGVEcmFnRHJvcFwiXG4gICAgW2Nka0Ryb3BMaXN0R3JvdXBEaXNhYmxlZF09XCJkaXNhYmxlRHJhZ0Ryb3BcIlxuICAgIFthdHRyLmRpcl09XCJfZGlyXCJcbj5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0Zvcj1cImxldCBjYXJkIG9mIF9jYXJkc0FycmF5OyBsZXQgY2FyZEluZGV4ID0gaW5kZXhcIlxuICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICBjbGFzcz1cImZkLWZpeGVkLWNhcmQtbGF5b3V0X19jYXJkXCJcbiAgICAgICAgW2NsYXNzLmZkLWZpeGVkLWNhcmQtbGF5b3V0X19jYXJkLS1zaW5nbGVdPVwiX3NpbmdsZUl0ZW1Db2x1bW5zLmhhcyhjYXJkLmZkQ2FyZERlZilcIlxuICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cIl9jb2x1bW5zV2lkdGguZ2V0KGNhcmQuZmRDYXJkRGVmKVwiXG4gICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwiX2NvbHVtbnNXaWR0aC5nZXQoY2FyZC5mZENhcmREZWYpXCJcbiAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiX2hpZGRlbkNhcmQgPT09IGNhcmQgPyAnbm9uZScgOiAnYmxvY2snXCJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjYXJkSW5kZXhcIlxuICAgICAgICBbY2RrRHJvcExpc3RTb3J0UHJlZGljYXRlXT1cIl9zb3J0UHJlZGljYXRlRm5cIlxuICAgICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cIl9vbkRyb3BMaXN0RW50ZXJlZCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgIGZkRG5kS2V5Ym9hcmRJdGVtXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgY2RrRHJhZ1ByZXZpZXdDbGFzcz1cImZkLWZpeGVkLWNhcmQtbGF5b3V0X19jYXJkLXByZXZpZXdcIlxuICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cImNhcmRcIlxuICAgICAgICAgICAgW2Nka0RyYWdTdGFydERlbGF5XT1cImRyYWdTdGFydERlbGF5XCJcbiAgICAgICAgICAgIFtpdGVtSW5kZXhdPVwiX2l0ZW1JbmRleGVzLmdldChjYXJkLmZkQ2FyZERlZikhXCJcbiAgICAgICAgICAgIFtncm91cEluZGV4XT1cIl9ncm91cEluZGV4ZXMuZ2V0KGNhcmQuZmRDYXJkRGVmKSFcIlxuICAgICAgICAgICAgKGNka0RyYWdTdGFydGVkKT1cIl9vbkRyYWdTdGFydGVkKCRldmVudClcIlxuICAgICAgICAgICAgKGNka0RyYWdEcm9wcGVkKT1cIl9vbkRyYWdEcm9wcGVkKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZmQtZml4ZWQtY2FyZC1sYXlvdXQtaXRlbT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FyZD8udGVtcGxhdGUgfHwgbnVsbFwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZmQtZml4ZWQtY2FyZC1sYXlvdXQtaXRlbT5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpjZGtEcmFnUGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWZpeGVkLWNhcmQtbGF5b3V0X19jYXJkLXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWFyZ2luLWJvdHRvbS5yZW1dPVwiK19wbGFjZWhvbGRlck1hcmdpblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhcmQ/LnRlbXBsYXRlIHx8IG51bGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBfY2FyZENvbHVtbnM7IGxldCBsYXN0ID0gbGFzdDsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFsYXN0XCIgY2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2xlYXJmaXhcIiBbc3R5bGUub3JkZXJdPVwiaW5kZXggKyAxXCI+PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|