@taiga-ui/core 3.17.0 → 3.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/taiga-ui-core-abstract.umd.js +1 -0
- package/bundles/taiga-ui-core-abstract.umd.js.map +1 -1
- package/bundles/taiga-ui-core-components-dialog.umd.js +189 -167
- package/bundles/taiga-ui-core-components-dialog.umd.js.map +1 -1
- package/bundles/taiga-ui-core-components-notification.umd.js +2 -2
- package/bundles/taiga-ui-core-components-notification.umd.js.map +1 -1
- package/bundles/taiga-ui-core-components-primitive-textfield.umd.js +1 -1
- package/bundles/taiga-ui-core-components-primitive-textfield.umd.js.map +1 -1
- package/bundles/taiga-ui-core-components-root.umd.js +1 -1
- package/bundles/taiga-ui-core-components-svg.umd.js +100 -20
- package/bundles/taiga-ui-core-components-svg.umd.js.map +1 -1
- package/bundles/taiga-ui-core-components-tooltip.umd.js +31 -13
- package/bundles/taiga-ui-core-components-tooltip.umd.js.map +1 -1
- package/bundles/taiga-ui-core-directives-dropdown.umd.js +45 -25
- package/bundles/taiga-ui-core-directives-dropdown.umd.js.map +1 -1
- package/bundles/taiga-ui-core-directives-hint.umd.js +67 -63
- package/bundles/taiga-ui-core-directives-hint.umd.js.map +1 -1
- package/bundles/taiga-ui-core-tokens.umd.js +39 -1
- package/bundles/taiga-ui-core-tokens.umd.js.map +1 -1
- package/components/dialog/dialog-close.service.d.ts +15 -0
- package/components/dialog/dialog.component.d.ts +5 -4
- package/components/dialog/dialog.tokens.d.ts +2 -0
- package/components/dialog/index.d.ts +1 -1
- package/components/notification/notification.component.d.ts +2 -2
- package/components/svg/deprecated-icons.d.ts +1 -0
- package/components/svg/index.d.ts +2 -0
- package/components/svg/svg-options.d.ts +14 -0
- package/components/svg/svg.component.d.ts +5 -7
- package/components/tooltip/tooltip.component.d.ts +2 -2
- package/components/tooltip/tooltip.module.d.ts +5 -4
- package/directives/dropdown/dropdown-hover-options.directive.d.ts +9 -0
- package/directives/dropdown/dropdown-hover.directive.d.ts +3 -1
- package/directives/dropdown/dropdown-position-sided.directive.d.ts +2 -2
- package/directives/dropdown/dropdown-position.directive.d.ts +2 -2
- package/directives/dropdown/index.d.ts +1 -0
- package/directives/hint/hint-hover.directive.d.ts +4 -2
- package/directives/hint/hint-position.directive.d.ts +2 -2
- package/esm2015/abstract/rect-accessor.js +2 -1
- package/esm2015/components/dialog/dialog-close.service.js +51 -0
- package/esm2015/components/dialog/dialog.component.js +26 -10
- package/esm2015/components/dialog/dialog.tokens.js +5 -1
- package/esm2015/components/dialog/index.js +2 -2
- package/esm2015/components/notification/notification.component.js +3 -3
- package/esm2015/components/primitive-textfield/primitive-textfield.component.js +2 -2
- package/esm2015/components/root/root.component.js +1 -1
- package/esm2015/components/svg/deprecated-icons.js +59 -0
- package/esm2015/components/svg/index.js +3 -1
- package/esm2015/components/svg/svg-options.js +29 -0
- package/esm2015/components/svg/svg.component.js +13 -18
- package/esm2015/components/tooltip/tooltip.component.js +13 -13
- package/esm2015/components/tooltip/tooltip.module.js +21 -4
- package/esm2015/directives/dropdown/dropdown-hover-options.directive.js +14 -0
- package/esm2015/directives/dropdown/dropdown-hover.directive.js +10 -5
- package/esm2015/directives/dropdown/dropdown-position-sided.directive.js +12 -12
- package/esm2015/directives/dropdown/dropdown-position.directive.js +11 -11
- package/esm2015/directives/dropdown/index.js +2 -1
- package/esm2015/directives/hint/hint-hover.directive.js +13 -10
- package/esm2015/directives/hint/hint-options.directive.js +2 -2
- package/esm2015/directives/hint/hint-position.directive.js +12 -11
- package/esm2015/directives/hint/hint.component.js +3 -2
- package/esm2015/interfaces/dialog-options.js +1 -1
- package/esm2015/tokens/icon-place.js +5 -2
- package/esm2015/tokens/icons-path.js +4 -1
- package/esm2015/tokens/index.js +2 -1
- package/esm2015/tokens/svg-content-processor.js +4 -1
- package/esm2015/tokens/svg-src-processor.js +4 -1
- package/esm2015/tokens/viewport.js +26 -0
- package/fesm2015/taiga-ui-core-abstract.js +1 -0
- package/fesm2015/taiga-ui-core-abstract.js.map +1 -1
- package/fesm2015/taiga-ui-core-components-dialog.js +85 -69
- package/fesm2015/taiga-ui-core-components-dialog.js.map +1 -1
- package/fesm2015/taiga-ui-core-components-notification.js +2 -2
- package/fesm2015/taiga-ui-core-components-notification.js.map +1 -1
- package/fesm2015/taiga-ui-core-components-primitive-textfield.js +1 -1
- package/fesm2015/taiga-ui-core-components-primitive-textfield.js.map +1 -1
- package/fesm2015/taiga-ui-core-components-root.js +1 -1
- package/fesm2015/taiga-ui-core-components-svg.js +98 -21
- package/fesm2015/taiga-ui-core-components-svg.js.map +1 -1
- package/fesm2015/taiga-ui-core-components-tooltip.js +32 -15
- package/fesm2015/taiga-ui-core-components-tooltip.js.map +1 -1
- package/fesm2015/taiga-ui-core-directives-dropdown.js +42 -25
- package/fesm2015/taiga-ui-core-directives-dropdown.js.map +1 -1
- package/fesm2015/taiga-ui-core-directives-hint.js +30 -27
- package/fesm2015/taiga-ui-core-directives-hint.js.map +1 -1
- package/fesm2015/taiga-ui-core-tokens.js +38 -2
- package/fesm2015/taiga-ui-core-tokens.js.map +1 -1
- package/interfaces/dialog-options.d.ts +4 -3
- package/package.json +4 -4
- package/styles/mixins/textfield.less +4 -22
- package/styles/mixins/textfield.scss +3 -22
- package/styles/theme/wrapper/icon.less +17 -27
- package/tokens/icon-place.d.ts +3 -0
- package/tokens/icons-path.d.ts +3 -0
- package/tokens/index.d.ts +1 -0
- package/tokens/svg-content-processor.d.ts +3 -0
- package/tokens/svg-src-processor.d.ts +3 -0
- package/tokens/viewport.d.ts +4 -0
- package/components/dialog/dialog.providers.d.ts +0 -5
- package/esm2015/components/dialog/dialog.providers.js +0 -51
|
@@ -1,51 +1,41 @@
|
|
|
1
1
|
@import '../../taiga-ui-local.less';
|
|
2
2
|
|
|
3
3
|
/* stylelint-disable order/order */
|
|
4
|
+
/* stylelint-disable selector-max-specificity */
|
|
4
5
|
[tuiWrapper][data-appearance='icon'] {
|
|
5
|
-
|
|
6
|
-
color: var(--tui-
|
|
6
|
+
.transition(opacity);
|
|
7
|
+
color: var(--tui-text-01);
|
|
8
|
+
opacity: 0.5;
|
|
9
|
+
|
|
10
|
+
[tuiWrapper]:not([data-state='readonly']):hover .t-textfield-icon & {
|
|
11
|
+
opacity: 0.65;
|
|
12
|
+
}
|
|
7
13
|
|
|
8
14
|
&[data-mode='onDark'] {
|
|
9
15
|
color: var(--tui-text-01-night);
|
|
10
|
-
opacity: var(--tui-disabled-opacity);
|
|
11
|
-
|
|
12
|
-
.wrapper-focus({
|
|
13
|
-
--tui-focus: var(--tui-base-01);
|
|
14
|
-
});
|
|
15
16
|
|
|
16
|
-
.
|
|
17
|
-
color: var(--tui-text-01-night);
|
|
17
|
+
[tuiWrapper]:not([data-state='readonly']):hover .t-textfield-icon & {
|
|
18
18
|
opacity: 1;
|
|
19
|
-
}
|
|
19
|
+
}
|
|
20
20
|
|
|
21
|
-
.wrapper-
|
|
22
|
-
|
|
23
|
-
opacity: 1;
|
|
21
|
+
.wrapper-focus({
|
|
22
|
+
--tui-focus: var(--tui-base-01);
|
|
24
23
|
});
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
&[data-mode='onLight'] {
|
|
28
|
-
color: var(--tui-text-01);
|
|
29
|
-
opacity: var(--tui-disabled-opacity);
|
|
30
24
|
|
|
31
25
|
.wrapper-hover({
|
|
32
|
-
color: var(--tui-text-01);
|
|
33
|
-
opacity: 1;
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
.wrapper-active({
|
|
37
|
-
color: var(--tui-text-01);
|
|
38
26
|
opacity: 1;
|
|
39
27
|
});
|
|
40
28
|
}
|
|
41
29
|
|
|
42
30
|
.wrapper-hover({
|
|
43
|
-
|
|
44
|
-
opacity: 1;
|
|
31
|
+
opacity: 0.65;
|
|
45
32
|
});
|
|
46
33
|
|
|
47
34
|
.wrapper-active({
|
|
48
|
-
color: var(--tui-base-08);
|
|
49
35
|
opacity: 1;
|
|
50
36
|
});
|
|
37
|
+
|
|
38
|
+
.wrapper-disabled({
|
|
39
|
+
opacity: calc(0.5 * var(--tui-disabled-opacity));
|
|
40
|
+
});
|
|
51
41
|
}
|
package/tokens/icon-place.d.ts
CHANGED
package/tokens/icons-path.d.ts
CHANGED
package/tokens/index.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
2
|
import { SafeHtml } from '@angular/platform-browser';
|
|
3
3
|
import { TuiHandler } from '@taiga-ui/cdk';
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated Use {@link TUI_SVG_OPTIONS} instead
|
|
6
|
+
*/
|
|
4
7
|
export declare const TUI_SVG_CONTENT_PROCESSOR: InjectionToken<TuiHandler<string | SafeHtml, string | SafeHtml>>;
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
2
|
import { SafeHtml } from '@angular/platform-browser';
|
|
3
3
|
import { TuiHandler } from '@taiga-ui/cdk';
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated Use {@link TUI_SVG_OPTIONS} instead
|
|
6
|
+
*/
|
|
4
7
|
export declare const TUI_SVG_SRC_PROCESSOR: InjectionToken<TuiHandler<string | SafeHtml, string | SafeHtml>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { InjectionToken, Provider, Type } from '@angular/core';
|
|
2
|
+
import { TuiRectAccessor } from '@taiga-ui/core/abstract';
|
|
3
|
+
export declare const TUI_VIEWPORT: InjectionToken<TuiRectAccessor>;
|
|
4
|
+
export declare function tuiAsViewport(useExisting: Type<TuiRectAccessor>): Provider;
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { InjectionToken, Provider } from '@angular/core';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
export declare const TUI_DIALOGS_CLOSE: InjectionToken<Observable<unknown>>;
|
|
4
|
-
export declare const TUI_DIALOG_CLOSE_STREAM: InjectionToken<Observable<unknown>>;
|
|
5
|
-
export declare const TUI_DIALOG_PROVIDERS: Provider[];
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { DOCUMENT } from '@angular/common';
|
|
2
|
-
import { ElementRef, InjectionToken } from '@angular/core';
|
|
3
|
-
import { WINDOW } from '@ng-web-apis/common';
|
|
4
|
-
import { tuiContainsOrAfter, TuiDestroyService, tuiGetActualTarget, tuiIsCurrentTarget, tuiIsElement, tuiTypedFromEvent, } from '@taiga-ui/cdk';
|
|
5
|
-
import { tuiGetViewportWidth } from '@taiga-ui/core/utils/dom';
|
|
6
|
-
import { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';
|
|
7
|
-
import { EMPTY, merge } from 'rxjs';
|
|
8
|
-
import { filter, switchMap, take, takeUntil } from 'rxjs/operators';
|
|
9
|
-
export const TUI_DIALOGS_CLOSE = new InjectionToken(`[TUI_DIALOGS_CLOSE]: A stream to close dialogs`, {
|
|
10
|
-
factory: () => EMPTY,
|
|
11
|
-
});
|
|
12
|
-
const SCROLLBAR_PLACEHOLDER = 17;
|
|
13
|
-
export const TUI_DIALOG_CLOSE_STREAM = new InjectionToken(`[TUI_DIALOG_CLOSE_STREAM]: Dialogs closing stream`);
|
|
14
|
-
export const TUI_DIALOG_PROVIDERS = [
|
|
15
|
-
TuiDestroyService,
|
|
16
|
-
{
|
|
17
|
-
provide: TUI_DIALOG_CLOSE_STREAM,
|
|
18
|
-
deps: [
|
|
19
|
-
DOCUMENT,
|
|
20
|
-
WINDOW,
|
|
21
|
-
ElementRef,
|
|
22
|
-
TUI_DIALOGS_CLOSE,
|
|
23
|
-
TuiDestroyService,
|
|
24
|
-
POLYMORPHEUS_CONTEXT,
|
|
25
|
-
],
|
|
26
|
-
useFactory: (documentRef, windowRef, { nativeElement }, close$, destroy$, { dismissible }) => {
|
|
27
|
-
return dismissible
|
|
28
|
-
? merge(tuiTypedFromEvent(nativeElement, `click`).pipe(filter(tuiIsCurrentTarget)), tuiTypedFromEvent(documentRef, `keydown`).pipe(filter(event => {
|
|
29
|
-
const key = event.key;
|
|
30
|
-
const target = tuiGetActualTarget(event);
|
|
31
|
-
return (key === `Escape` &&
|
|
32
|
-
tuiIsElement(target) &&
|
|
33
|
-
(!tuiContainsOrAfter(nativeElement, target) ||
|
|
34
|
-
nativeElement.contains(target)));
|
|
35
|
-
})), tuiTypedFromEvent(documentRef, `mousedown`).pipe(filter(event => {
|
|
36
|
-
const target = tuiGetActualTarget(event);
|
|
37
|
-
const clientX = event.clientX;
|
|
38
|
-
return (tuiIsElement(target) &&
|
|
39
|
-
tuiGetViewportWidth(windowRef) - clientX >
|
|
40
|
-
SCROLLBAR_PLACEHOLDER &&
|
|
41
|
-
!tuiContainsOrAfter(nativeElement, target));
|
|
42
|
-
}), switchMap(() => tuiTypedFromEvent(documentRef, `mouseup`).pipe(take(1), filter(event => {
|
|
43
|
-
const target = tuiGetActualTarget(event);
|
|
44
|
-
return (tuiIsElement(target) &&
|
|
45
|
-
!tuiContainsOrAfter(nativeElement, target));
|
|
46
|
-
})))), close$).pipe(takeUntil(destroy$))
|
|
47
|
-
: close$;
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
];
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnByb3ZpZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9kaWFsb2cvZGlhbG9nLnByb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLFVBQVUsRUFBRSxjQUFjLEVBQVcsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsaUJBQWlCLEVBRWpCLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQy9DLGdEQUFnRCxFQUNoRDtJQUNJLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLO0NBQ3ZCLENBQ0osQ0FBQztBQUVGLE1BQU0scUJBQXFCLEdBQUcsRUFBRSxDQUFDO0FBRWpDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUNyRCxtREFBbUQsQ0FDdEQsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFlO0lBQzVDLGlCQUFpQjtJQUNqQjtRQUNJLE9BQU8sRUFBRSx1QkFBdUI7UUFDaEMsSUFBSSxFQUFFO1lBQ0YsUUFBUTtZQUNSLE1BQU07WUFDTixVQUFVO1lBQ1YsaUJBQWlCO1lBQ2pCLGlCQUFpQjtZQUNqQixvQkFBb0I7U0FDdkI7UUFDRCxVQUFVLEVBQUUsQ0FDUixXQUFxQixFQUNyQixTQUFpQixFQUNqQixFQUFDLGFBQWEsRUFBMEIsRUFDeEMsTUFBd0IsRUFDeEIsUUFBMEIsRUFDMUIsRUFBQyxXQUFXLEVBQWdELEVBQ3pDLEVBQUU7WUFDckIsT0FBTyxXQUFXO2dCQUNkLENBQUMsQ0FBQyxLQUFLLENBQ0QsaUJBQWlCLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDMUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQzdCLEVBQ0QsaUJBQWlCLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FDMUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNYLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7b0JBQ3RCLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUV6QyxPQUFPLENBQ0gsR0FBRyxLQUFLLFFBQVE7d0JBQ2hCLFlBQVksQ0FBQyxNQUFNLENBQUM7d0JBQ3BCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDOzRCQUN2QyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQ3RDLENBQUM7Z0JBQ04sQ0FBQyxDQUFDLENBQ0wsRUFDRCxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUM1QyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ1gsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3pDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7b0JBRTlCLE9BQU8sQ0FDSCxZQUFZLENBQUMsTUFBTSxDQUFDO3dCQUNwQixtQkFBbUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxPQUFPOzRCQUNwQyxxQkFBcUI7d0JBQ3pCLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUM3QyxDQUFDO2dCQUNOLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDWCxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUMxQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNYLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUV6QyxPQUFPLENBQ0gsWUFBWSxDQUFDLE1BQU0sQ0FBQzt3QkFDcEIsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQzdDLENBQUM7Z0JBQ04sQ0FBQyxDQUFDLENBQ0wsQ0FDSixDQUNKLEVBQ0QsTUFBTSxDQUNULENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNqQixDQUFDO0tBQ0o7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7RWxlbWVudFJlZiwgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7V0lORE9XfSBmcm9tICdAbmctd2ViLWFwaXMvY29tbW9uJztcbmltcG9ydCB7XG4gICAgdHVpQ29udGFpbnNPckFmdGVyLFxuICAgIFR1aURlc3Ryb3lTZXJ2aWNlLFxuICAgIFR1aURpYWxvZyxcbiAgICB0dWlHZXRBY3R1YWxUYXJnZXQsXG4gICAgdHVpSXNDdXJyZW50VGFyZ2V0LFxuICAgIHR1aUlzRWxlbWVudCxcbiAgICB0dWlUeXBlZEZyb21FdmVudCxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1R1aURpYWxvZ09wdGlvbnN9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2ludGVyZmFjZXMnO1xuaW1wb3J0IHt0dWlHZXRWaWV3cG9ydFdpZHRofSBmcm9tICdAdGFpZ2EtdWkvY29yZS91dGlscy9kb20nO1xuaW1wb3J0IHtQT0xZTU9SUEhFVVNfQ09OVEVYVH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcbmltcG9ydCB7RU1QVFksIG1lcmdlLCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCBzd2l0Y2hNYXAsIHRha2UsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY29uc3QgVFVJX0RJQUxPR1NfQ0xPU0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48T2JzZXJ2YWJsZTx1bmtub3duPj4oXG4gICAgYFtUVUlfRElBTE9HU19DTE9TRV06IEEgc3RyZWFtIHRvIGNsb3NlIGRpYWxvZ3NgLFxuICAgIHtcbiAgICAgICAgZmFjdG9yeTogKCkgPT4gRU1QVFksXG4gICAgfSxcbik7XG5cbmNvbnN0IFNDUk9MTEJBUl9QTEFDRUhPTERFUiA9IDE3O1xuXG5leHBvcnQgY29uc3QgVFVJX0RJQUxPR19DTE9TRV9TVFJFQU0gPSBuZXcgSW5qZWN0aW9uVG9rZW48T2JzZXJ2YWJsZTx1bmtub3duPj4oXG4gICAgYFtUVUlfRElBTE9HX0NMT1NFX1NUUkVBTV06IERpYWxvZ3MgY2xvc2luZyBzdHJlYW1gLFxuKTtcbmV4cG9ydCBjb25zdCBUVUlfRElBTE9HX1BST1ZJREVSUzogUHJvdmlkZXJbXSA9IFtcbiAgICBUdWlEZXN0cm95U2VydmljZSxcbiAgICB7XG4gICAgICAgIHByb3ZpZGU6IFRVSV9ESUFMT0dfQ0xPU0VfU1RSRUFNLFxuICAgICAgICBkZXBzOiBbXG4gICAgICAgICAgICBET0NVTUVOVCxcbiAgICAgICAgICAgIFdJTkRPVyxcbiAgICAgICAgICAgIEVsZW1lbnRSZWYsXG4gICAgICAgICAgICBUVUlfRElBTE9HU19DTE9TRSxcbiAgICAgICAgICAgIFR1aURlc3Ryb3lTZXJ2aWNlLFxuICAgICAgICAgICAgUE9MWU1PUlBIRVVTX0NPTlRFWFQsXG4gICAgICAgIF0sXG4gICAgICAgIHVzZUZhY3Rvcnk6IChcbiAgICAgICAgICAgIGRvY3VtZW50UmVmOiBEb2N1bWVudCxcbiAgICAgICAgICAgIHdpbmRvd1JlZjogV2luZG93LFxuICAgICAgICAgICAge25hdGl2ZUVsZW1lbnR9OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgICAgIGNsb3NlJDogT2JzZXJ2YWJsZTx2b2lkPixcbiAgICAgICAgICAgIGRlc3Ryb3kkOiBPYnNlcnZhYmxlPHZvaWQ+LFxuICAgICAgICAgICAge2Rpc21pc3NpYmxlfTogVHVpRGlhbG9nPFR1aURpYWxvZ09wdGlvbnM8dW5rbm93bj4sIHVua25vd24+LFxuICAgICAgICApOiBPYnNlcnZhYmxlPHVua25vd24+ID0+IHtcbiAgICAgICAgICAgIHJldHVybiBkaXNtaXNzaWJsZVxuICAgICAgICAgICAgICAgID8gbWVyZ2UoXG4gICAgICAgICAgICAgICAgICAgICAgdHVpVHlwZWRGcm9tRXZlbnQobmF0aXZlRWxlbWVudCwgYGNsaWNrYCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKHR1aUlzQ3VycmVudFRhcmdldCksXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICB0dWlUeXBlZEZyb21FdmVudChkb2N1bWVudFJlZiwgYGtleWRvd25gKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gdHVpR2V0QWN0dWFsVGFyZ2V0KGV2ZW50KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkgPT09IGBFc2NhcGVgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpSXNFbGVtZW50KHRhcmdldCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIXR1aUNvbnRhaW5zT3JBZnRlcihuYXRpdmVFbGVtZW50LCB0YXJnZXQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgdHVpVHlwZWRGcm9tRXZlbnQoZG9jdW1lbnRSZWYsIGBtb3VzZWRvd25gKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gdHVpR2V0QWN0dWFsVGFyZ2V0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsaWVudFggPSBldmVudC5jbGllbnRYO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aUlzRWxlbWVudCh0YXJnZXQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpR2V0Vmlld3BvcnRXaWR0aCh3aW5kb3dSZWYpIC0gY2xpZW50WCA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDUk9MTEJBUl9QTEFDRUhPTERFUiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICF0dWlDb250YWluc09yQWZ0ZXIobmF0aXZlRWxlbWVudCwgdGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpVHlwZWRGcm9tRXZlbnQoZG9jdW1lbnRSZWYsIGBtb3VzZXVwYCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHR1aUdldEFjdHVhbFRhcmdldChldmVudCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aUlzRWxlbWVudCh0YXJnZXQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhdHVpQ29udGFpbnNPckFmdGVyKG5hdGl2ZUVsZW1lbnQsIHRhcmdldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICBjbG9zZSQsXG4gICAgICAgICAgICAgICAgICApLnBpcGUodGFrZVVudGlsKGRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICA6IGNsb3NlJDtcbiAgICAgICAgfSxcbiAgICB9LFxuXTtcbiJdfQ==
|