@po-ui/ng-components 16.7.0 → 16.8.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/esm2022/lib/components/po-progress/enums/po-progress-size.enum.mjs +13 -0
- package/esm2022/lib/components/po-progress/index.mjs +2 -1
- package/esm2022/lib/components/po-progress/literals/po-progress.literals.mjs +19 -0
- package/esm2022/lib/components/po-progress/po-progress-bar/po-progress-bar.component.mjs +24 -9
- package/esm2022/lib/components/po-progress/po-progress-base.component.mjs +39 -2
- package/esm2022/lib/components/po-progress/po-progress.component.mjs +77 -54
- package/esm2022/lib/components/po-progress/po-progress.module.mjs +7 -4
- package/esm2022/lib/components/po-search/enum/po-search-filter-mode.enum.mjs +17 -0
- package/esm2022/lib/components/po-search/index.mjs +3 -2
- package/esm2022/lib/components/po-search/literals/po-search-literals-default.mjs +19 -0
- package/esm2022/lib/components/po-search/literals/po-search-literals.mjs +1 -1
- package/esm2022/lib/components/po-search/po-search-base.component.mjs +177 -10
- package/esm2022/lib/components/po-search/po-search.component.mjs +52 -48
- package/esm2022/lib/components/po-table/po-table-base.component.mjs +3 -3
- package/fesm2022/po-ui-ng-components.mjs +413 -124
- package/fesm2022/po-ui-ng-components.mjs.map +1 -1
- package/lib/components/po-progress/enums/po-progress-size.enum.d.ts +11 -0
- package/lib/components/po-progress/index.d.ts +1 -0
- package/lib/components/po-progress/literals/po-progress.literals.d.ts +18 -0
- package/lib/components/po-progress/po-progress-base.component.d.ts +30 -3
- package/lib/components/po-progress/po-progress.component.d.ts +5 -1
- package/lib/components/po-progress/po-progress.module.d.ts +4 -1
- package/lib/components/po-search/{po-search-filter-mode.enum.d.ts → enum/po-search-filter-mode.enum.d.ts} +2 -2
- package/lib/components/po-search/index.d.ts +2 -1
- package/lib/components/po-search/literals/po-search-literals-default.d.ts +7 -0
- package/lib/components/po-search/literals/po-search-literals.d.ts +11 -1
- package/lib/components/po-search/po-search-base.component.d.ts +140 -5
- package/lib/components/po-search/po-search.component.d.ts +23 -8
- package/lib/components/po-table/po-table-base.component.d.ts +2 -2
- package/package.json +4 -4
- package/po-ui-ng-components-16.8.0.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v14/index.js +1 -1
- package/schematics/ng-update/v15/index.js +1 -1
- package/schematics/ng-update/v16/index.js +1 -1
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/esm2022/lib/components/po-search/po-search-filter-mode.enum.mjs +0 -17
- package/po-ui-ng-components-16.7.0.tgz +0 -0
|
@@ -1,35 +1,202 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { poLocaleDefault } from '../../services/po-language/po-language.constant';
|
|
2
2
|
import { Directive, EventEmitter, Input, Output } from '@angular/core';
|
|
3
3
|
import { convertToBoolean } from '../../utils/util';
|
|
4
|
+
import { poSearchLiteralsDefault } from './literals/po-search-literals-default';
|
|
5
|
+
import { PoSearchFilterMode } from './enum/po-search-filter-mode.enum';
|
|
4
6
|
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../../services/po-language/po-language.service";
|
|
8
|
+
/**
|
|
9
|
+
* @description
|
|
10
|
+
*
|
|
11
|
+
* O componente search, também conhecido como barra de pesquisa, é utilizado para ajudar os usuários a localizar um determinado conteúdo
|
|
12
|
+
*
|
|
13
|
+
* Normalmente localizado no canto superior direito, junto com o ícone de lupa, uma vez que este ícone é amplamente reconhecido.
|
|
14
|
+
*
|
|
15
|
+
* Portanto, é de extrema importância que, ao utilizar este componente, as pessoas responsáveis por seu desenvolvimento considerem os seguintes critérios.
|
|
16
|
+
*
|
|
17
|
+
* #### Boas práticas
|
|
18
|
+
*
|
|
19
|
+
* Foram estruturados os padrões de usabilidade para auxiliar na utilização do componente e garantir uma boa experiência aos usuários. Por isso, é muito importante que ao utilizar este componente, as pessoas que o projetarem devem levar em consideração os seguintes critérios:
|
|
20
|
+
* - Utilize labels para apresentar resultados que estão sendo exibidos e apresente os resultados mais relevantes primeiro.
|
|
21
|
+
* - Exiba uma mensagem clara quando não forem encontrados resultados para busca e sempre que possível ofereça outras sugestões de busca.
|
|
22
|
+
* - Mantenha o texto original no campo de input, que facilita a ação do usuário caso queira fazer uma nova busca com alguma modificação na pesquisa.
|
|
23
|
+
* - Caso seja possível detectar um erro de digitação, mostre os resultados para a palavra "corrigida", isso evita a frustração de não obter resultados e não força o usuário a realizar uma nova busca.
|
|
24
|
+
* - Quando apropriado, destaque os termos da busca nos resultados.
|
|
25
|
+
* - A entrada do campo de pesquisa deve caber em uma linha. Não use entradas de pesquisa de várias linhas.
|
|
26
|
+
* - Recomenda-se ter apenas uma pesquisa por página. Se você precisar de várias pesquisas, rotule-as claramente para indicar sua finalidade.
|
|
27
|
+
* - Se possível, forneça sugestões de pesquisa, seja em um helptext ou sugestão de pesquisa que é um autocomplete. Isso ajuda os usuários a encontrar o que estão procurando, especialmente se os itens pesquisáveis forem complexos.
|
|
28
|
+
*
|
|
29
|
+
* #### Acessibilidade tratada no componente
|
|
30
|
+
*
|
|
31
|
+
* Algumas diretrizes de acessibilidade já são tratadas no componente, internamente, e não podem ser alteradas pelo proprietário do conteúdo. São elas:
|
|
32
|
+
*
|
|
33
|
+
* - Permitir a interação via teclado (2.1.1: Keyboard (A));
|
|
34
|
+
* - Alteração entre os estados precisa ser indicada por mais de um elemento além da cor (1.4.1: Use of Color);
|
|
35
|
+
*/
|
|
5
36
|
export class PoSearchBaseComponent {
|
|
37
|
+
_literals;
|
|
38
|
+
_ariaLabel;
|
|
39
|
+
language;
|
|
40
|
+
/**
|
|
41
|
+
* @optional
|
|
42
|
+
*
|
|
43
|
+
* @description
|
|
44
|
+
*
|
|
45
|
+
* Desabilita o po-search e não permite que o usuário interaja com o mesmo.
|
|
46
|
+
*
|
|
47
|
+
* @default `false`
|
|
48
|
+
*/
|
|
6
49
|
disabled;
|
|
7
|
-
|
|
50
|
+
/**
|
|
51
|
+
* @optional
|
|
52
|
+
*
|
|
53
|
+
* @description
|
|
54
|
+
*
|
|
55
|
+
* Lista de itens que serão utilizados para pesquisa
|
|
56
|
+
*/
|
|
8
57
|
items = [];
|
|
58
|
+
/**
|
|
59
|
+
* @optional
|
|
60
|
+
*
|
|
61
|
+
* @description
|
|
62
|
+
*
|
|
63
|
+
* Define um aria-label para o po-search.
|
|
64
|
+
*
|
|
65
|
+
* > Devido o componente não possuir uma label assim como outros campos de texto, o `aria-label` é utilizado para acessibilidade.
|
|
66
|
+
*/
|
|
67
|
+
set ariaLabel(value) {
|
|
68
|
+
this._ariaLabel = value;
|
|
69
|
+
if (value !== this.literals.search) {
|
|
70
|
+
this._ariaLabel = `${this._ariaLabel} ${this.literals.search}`;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
get ariaLabel() {
|
|
74
|
+
return this._ariaLabel;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* @optional
|
|
78
|
+
*
|
|
79
|
+
* @description
|
|
80
|
+
*
|
|
81
|
+
* Deve ser informado o nome da propriedade do objeto que será utilizado para a conversão dos itens apresentados na lista do componente (p-items), esta propriedade será responsável pelo texto de apresentação de cada item da lista.
|
|
82
|
+
*/
|
|
9
83
|
filterKeys = [];
|
|
10
|
-
|
|
84
|
+
/**
|
|
85
|
+
* @optional
|
|
86
|
+
*
|
|
87
|
+
* @description
|
|
88
|
+
*
|
|
89
|
+
* Deve ser informado o nome da propriedade do objeto que será utilizado para a conversão dos itens apresentados na lista do componente (p-items), esta propriedade será responsável pelo texto de apresentação de cada item da lista.
|
|
90
|
+
*/
|
|
91
|
+
icon;
|
|
92
|
+
/**
|
|
93
|
+
* @optional
|
|
94
|
+
*
|
|
95
|
+
* @description
|
|
96
|
+
*
|
|
97
|
+
* Objeto com as literais usadas no `po-search`.
|
|
98
|
+
*
|
|
99
|
+
* Para utilizar basta passar a literal que deseja customizar:
|
|
100
|
+
*
|
|
101
|
+
* ```
|
|
102
|
+
* const customLiterals: PoSearchLiterals = {
|
|
103
|
+
* search: 'Pesquisar',
|
|
104
|
+
* clean: 'Limpar',
|
|
105
|
+
* };
|
|
106
|
+
* ```
|
|
107
|
+
*
|
|
108
|
+
* E para carregar a literal customizada, basta apenas passar o objeto para o componente.
|
|
109
|
+
*
|
|
110
|
+
* ```
|
|
111
|
+
* <po-search
|
|
112
|
+
* [p-literals]="customLiterals">
|
|
113
|
+
* </po-search>
|
|
114
|
+
* ```
|
|
115
|
+
*
|
|
116
|
+
* > O objeto padrão de literais será traduzido de acordo com o idioma do
|
|
117
|
+
* [`PoI18nService`](/documentation/po-i18n) ou do browser.
|
|
118
|
+
*/
|
|
119
|
+
set literals(value) {
|
|
120
|
+
if (value instanceof Object && !(value instanceof Array)) {
|
|
121
|
+
this._literals = {
|
|
122
|
+
...poSearchLiteralsDefault[poLocaleDefault],
|
|
123
|
+
...poSearchLiteralsDefault[this.language],
|
|
124
|
+
...value
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
this._literals = poSearchLiteralsDefault[this.language];
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
get literals() {
|
|
132
|
+
return this._literals || poSearchLiteralsDefault[this.language];
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* @optional
|
|
136
|
+
*
|
|
137
|
+
* @description
|
|
138
|
+
*
|
|
139
|
+
* Define o modo de pesquisa utilizado no campo de busca, quando habilitado. Valores definidos no enum: PoSearchFilterMode
|
|
140
|
+
*
|
|
141
|
+
* @default `startsWith`
|
|
142
|
+
*/
|
|
143
|
+
filterType = PoSearchFilterMode.startsWith;
|
|
144
|
+
/**
|
|
145
|
+
* @optional
|
|
146
|
+
*
|
|
147
|
+
* @description
|
|
148
|
+
*
|
|
149
|
+
* Evento disparado ao alterar valor do model.
|
|
150
|
+
*/
|
|
151
|
+
changeModel = new EventEmitter();
|
|
152
|
+
/**
|
|
153
|
+
* @optional
|
|
154
|
+
*
|
|
155
|
+
* @description
|
|
156
|
+
*
|
|
157
|
+
* Pode ser informada uma função que será disparada quando houver alterações no input.
|
|
158
|
+
*/
|
|
11
159
|
filteredItemsChange = new EventEmitter();
|
|
160
|
+
/**
|
|
161
|
+
* @optional
|
|
162
|
+
*
|
|
163
|
+
* @description
|
|
164
|
+
*
|
|
165
|
+
* Pode ser informada uma função que será disparada quando houver alterações nos filtros.
|
|
166
|
+
*/
|
|
12
167
|
filter = new EventEmitter();
|
|
13
|
-
|
|
14
|
-
|
|
168
|
+
constructor(languageService) {
|
|
169
|
+
this.language = languageService.getShortLanguage();
|
|
170
|
+
}
|
|
171
|
+
static ɵfac = function PoSearchBaseComponent_Factory(t) { return new (t || PoSearchBaseComponent)(i0.ɵɵdirectiveInject(i1.PoLanguageService)); };
|
|
172
|
+
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoSearchBaseComponent, inputs: { disabled: ["p-disabled", "disabled", convertToBoolean], items: ["p-items", "items"], ariaLabel: ["p-aria-label", "ariaLabel"], filterKeys: ["p-filter-keys", "filterKeys"], icon: ["p-icon", "icon"], literals: ["p-literals", "literals"], filterType: ["p-filter-type", "filterType"] }, outputs: { changeModel: "p-change-model", filteredItemsChange: "p-filtered-items-change", filter: "p-filter" }, features: [i0.ɵɵInputTransformsFeature] });
|
|
15
173
|
}
|
|
16
174
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoSearchBaseComponent, [{
|
|
17
175
|
type: Directive
|
|
18
|
-
}],
|
|
176
|
+
}], function () { return [{ type: i1.PoLanguageService }]; }, { disabled: [{
|
|
19
177
|
type: Input,
|
|
20
178
|
args: [{ alias: 'p-disabled', transform: convertToBoolean }]
|
|
21
|
-
}], loading: [{
|
|
22
|
-
type: Input,
|
|
23
|
-
args: ['p-loading']
|
|
24
179
|
}], items: [{
|
|
25
180
|
type: Input,
|
|
26
181
|
args: ['p-items']
|
|
182
|
+
}], ariaLabel: [{
|
|
183
|
+
type: Input,
|
|
184
|
+
args: ['p-aria-label']
|
|
27
185
|
}], filterKeys: [{
|
|
28
186
|
type: Input,
|
|
29
187
|
args: ['p-filter-keys']
|
|
188
|
+
}], icon: [{
|
|
189
|
+
type: Input,
|
|
190
|
+
args: ['p-icon']
|
|
191
|
+
}], literals: [{
|
|
192
|
+
type: Input,
|
|
193
|
+
args: ['p-literals']
|
|
30
194
|
}], filterType: [{
|
|
31
195
|
type: Input,
|
|
32
196
|
args: ['p-filter-type']
|
|
197
|
+
}], changeModel: [{
|
|
198
|
+
type: Output,
|
|
199
|
+
args: ['p-change-model']
|
|
33
200
|
}], filteredItemsChange: [{
|
|
34
201
|
type: Output,
|
|
35
202
|
args: ['p-filtered-items-change']
|
|
@@ -37,4 +204,4 @@ export class PoSearchBaseComponent {
|
|
|
37
204
|
type: Output,
|
|
38
205
|
args: ['p-filter']
|
|
39
206
|
}] }); })();
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc2VhcmNoLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLXNlYXJjaC9wby1zZWFyY2gtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTVELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBR3BELE1BQU0sT0FBTyxxQkFBcUI7SUFDNkIsUUFBUSxDQUFXO0lBRTVELE9BQU8sQ0FBVTtJQUVuQixLQUFLLEdBQWUsRUFBRSxDQUFDO0lBRWpCLFVBQVUsR0FBZSxFQUFFLENBQUM7SUFFNUIsVUFBVSxHQUFpQixZQUFZLENBQUMsVUFBVSxDQUFDO0lBRXhDLG1CQUFtQixHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7SUFFcEUsTUFBTSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDOytFQWI3RCxxQkFBcUI7NkRBQXJCLHFCQUFxQixpREFDUyxnQkFBZ0I7O3VGQUQ5QyxxQkFBcUI7Y0FEakMsU0FBUztnQkFFcUQsUUFBUTtrQkFBcEUsS0FBSzttQkFBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBRXZDLE9BQU87a0JBQTFCLEtBQUs7bUJBQUMsV0FBVztZQUVBLEtBQUs7a0JBQXRCLEtBQUs7bUJBQUMsU0FBUztZQUVRLFVBQVU7a0JBQWpDLEtBQUs7bUJBQUMsZUFBZTtZQUVFLFVBQVU7a0JBQWpDLEtBQUs7bUJBQUMsZUFBZTtZQUVhLG1CQUFtQjtrQkFBckQsTUFBTTttQkFBQyx5QkFBeUI7WUFFYixNQUFNO2tCQUF6QixNQUFNO21CQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb0ZpbHRlck1vZGUgfSBmcm9tICcuL3BvLXNlYXJjaC1maWx0ZXItbW9kZS5lbnVtJztcblxuaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlscy91dGlsJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgUG9TZWFyY2hCYXNlQ29tcG9uZW50IHtcbiAgQElucHV0KHsgYWxpYXM6ICdwLWRpc2FibGVkJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICBASW5wdXQoJ3AtbG9hZGluZycpIGxvYWRpbmc6IGJvb2xlYW47XG5cbiAgQElucHV0KCdwLWl0ZW1zJykgaXRlbXM6IEFycmF5PGFueT4gPSBbXTtcblxuICBASW5wdXQoJ3AtZmlsdGVyLWtleXMnKSBmaWx0ZXJLZXlzOiBBcnJheTxhbnk+ID0gW107XG5cbiAgQElucHV0KCdwLWZpbHRlci10eXBlJykgZmlsdGVyVHlwZTogUG9GaWx0ZXJNb2RlID0gUG9GaWx0ZXJNb2RlLnN0YXJ0c1dpdGg7XG5cbiAgQE91dHB1dCgncC1maWx0ZXJlZC1pdGVtcy1jaGFuZ2UnKSBmaWx0ZXJlZEl0ZW1zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxhbnk+PigpO1xuXG4gIEBPdXRwdXQoJ3AtZmlsdGVyJykgZmlsdGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xufVxuIl19
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc2VhcmNoLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLXNlYXJjaC9wby1zZWFyY2gtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRWxGLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7OztBQUV2RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBRUgsTUFBTSxPQUFPLHFCQUFxQjtJQUN4QixTQUFTLENBQW9CO0lBQzdCLFVBQVUsQ0FBVTtJQUNwQixRQUFRLENBQVM7SUFFekI7Ozs7Ozs7O09BUUc7SUFDMEQsUUFBUSxDQUFXO0lBRWhGOzs7Ozs7T0FNRztJQUNlLEtBQUssR0FBZSxFQUFFLENBQUM7SUFFekM7Ozs7Ozs7O09BUUc7SUFDSCxJQUEyQixTQUFTLENBQUMsS0FBYTtRQUNoRCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUV4QixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2hFO0lBQ0gsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ3FCLFVBQVUsR0FBZSxFQUFFLENBQUM7SUFFcEQ7Ozs7OztPQU1HO0lBQ2MsSUFBSSxDQUE2QjtJQUVsRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0EwQkc7SUFDSCxJQUF5QixRQUFRLENBQUMsS0FBdUI7UUFDdkQsSUFBSSxLQUFLLFlBQVksTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLFlBQVksS0FBSyxDQUFDLEVBQUU7WUFDeEQsSUFBSSxDQUFDLFNBQVMsR0FBRztnQkFDZixHQUFHLHVCQUF1QixDQUFDLGVBQWUsQ0FBQztnQkFDM0MsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUN6QyxHQUFHLEtBQUs7YUFDVCxDQUFDO1NBQ0g7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3pEO0lBQ0gsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ3FCLFVBQVUsR0FBdUIsa0JBQWtCLENBQUMsVUFBVSxDQUFDO0lBRXZGOzs7Ozs7T0FNRztJQUN1QixXQUFXLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFOUU7Ozs7OztPQU1HO0lBQ2dDLG1CQUFtQixHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7SUFFeEY7Ozs7OztPQU1HO0lBQ2lCLE1BQU0sR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUV4RSxZQUFZLGVBQWtDO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDckQsQ0FBQzsrRUFuSlUscUJBQXFCOzZEQUFyQixxQkFBcUIsaURBY1MsZ0JBQWdCOzt1RkFkOUMscUJBQXFCO2NBRGpDLFNBQVM7b0VBZXFELFFBQVE7a0JBQXBFLEtBQUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQVN6QyxLQUFLO2tCQUF0QixLQUFLO21CQUFDLFNBQVM7WUFXVyxTQUFTO2tCQUFuQyxLQUFLO21CQUFDLGNBQWM7WUFtQkcsVUFBVTtrQkFBakMsS0FBSzttQkFBQyxlQUFlO1lBU0wsSUFBSTtrQkFBcEIsS0FBSzttQkFBQyxRQUFRO1lBNkJVLFFBQVE7a0JBQWhDLEtBQUs7bUJBQUMsWUFBWTtZQXlCSyxVQUFVO2tCQUFqQyxLQUFLO21CQUFDLGVBQWU7WUFTSSxXQUFXO2tCQUFwQyxNQUFNO21CQUFDLGdCQUFnQjtZQVNXLG1CQUFtQjtrQkFBckQsTUFBTTttQkFBQyx5QkFBeUI7WUFTYixNQUFNO2tCQUF6QixNQUFNO21CQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgcG9Mb2NhbGVEZWZhdWx0IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2UuY29uc3RhbnQnO1xuXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IFBvU2VhcmNoTGl0ZXJhbHMgfSBmcm9tICcuL2xpdGVyYWxzL3BvLXNlYXJjaC1saXRlcmFscyc7XG5pbXBvcnQgeyBwb1NlYXJjaExpdGVyYWxzRGVmYXVsdCB9IGZyb20gJy4vbGl0ZXJhbHMvcG8tc2VhcmNoLWxpdGVyYWxzLWRlZmF1bHQnO1xuaW1wb3J0IHsgUG9TZWFyY2hGaWx0ZXJNb2RlIH0gZnJvbSAnLi9lbnVtL3BvLXNlYXJjaC1maWx0ZXItbW9kZS5lbnVtJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBPIGNvbXBvbmVudGUgc2VhcmNoLCB0YW1iw6ltIGNvbmhlY2lkbyBjb21vIGJhcnJhIGRlIHBlc3F1aXNhLCDDqSB1dGlsaXphZG8gcGFyYSBhanVkYXIgb3MgdXN1w6FyaW9zIGEgbG9jYWxpemFyIHVtIGRldGVybWluYWRvIGNvbnRlw7pkb1xuICpcbiAqIE5vcm1hbG1lbnRlIGxvY2FsaXphZG8gbm8gY2FudG8gc3VwZXJpb3IgZGlyZWl0bywganVudG8gY29tIG8gw61jb25lIGRlIGx1cGEsIHVtYSB2ZXogcXVlIGVzdGUgw61jb25lIMOpIGFtcGxhbWVudGUgcmVjb25oZWNpZG8uXG4gKlxuICogUG9ydGFudG8sIMOpIGRlIGV4dHJlbWEgaW1wb3J0w6JuY2lhIHF1ZSwgYW8gdXRpbGl6YXIgZXN0ZSBjb21wb25lbnRlLCBhcyBwZXNzb2FzIHJlc3BvbnPDoXZlaXMgcG9yIHNldSBkZXNlbnZvbHZpbWVudG8gY29uc2lkZXJlbSBvcyBzZWd1aW50ZXMgY3JpdMOpcmlvcy5cbiAqXG4gKiAjIyMjIEJvYXMgcHLDoXRpY2FzXG4gKlxuICogRm9yYW0gZXN0cnV0dXJhZG9zIG9zIHBhZHLDtWVzIGRlIHVzYWJpbGlkYWRlIHBhcmEgYXV4aWxpYXIgbmEgdXRpbGl6YcOnw6NvIGRvIGNvbXBvbmVudGUgZSBnYXJhbnRpciB1bWEgYm9hIGV4cGVyacOqbmNpYSBhb3MgdXN1w6FyaW9zLiBQb3IgaXNzbywgw6kgbXVpdG8gaW1wb3J0YW50ZSBxdWUgYW8gdXRpbGl6YXIgZXN0ZSBjb21wb25lbnRlLCBhcyBwZXNzb2FzIHF1ZSBvIHByb2pldGFyZW0gZGV2ZW0gbGV2YXIgZW0gY29uc2lkZXJhw6fDo28gb3Mgc2VndWludGVzIGNyaXTDqXJpb3M6XG4gKiAtIFV0aWxpemUgbGFiZWxzIHBhcmEgYXByZXNlbnRhciByZXN1bHRhZG9zIHF1ZSBlc3TDo28gc2VuZG8gZXhpYmlkb3MgZSBhcHJlc2VudGUgb3MgcmVzdWx0YWRvcyBtYWlzIHJlbGV2YW50ZXMgcHJpbWVpcm8uXG4gKiAtIEV4aWJhIHVtYSBtZW5zYWdlbSBjbGFyYSBxdWFuZG8gbsOjbyBmb3JlbSBlbmNvbnRyYWRvcyByZXN1bHRhZG9zIHBhcmEgYnVzY2EgZSBzZW1wcmUgcXVlIHBvc3PDrXZlbCBvZmVyZcOnYSBvdXRyYXMgc3VnZXN0w7VlcyBkZSBidXNjYS5cbiAqIC0gTWFudGVuaGEgbyB0ZXh0byBvcmlnaW5hbCBubyBjYW1wbyBkZSBpbnB1dCwgcXVlIGZhY2lsaXRhIGEgYcOnw6NvIGRvIHVzdcOhcmlvIGNhc28gcXVlaXJhIGZhemVyIHVtYSBub3ZhIGJ1c2NhIGNvbSBhbGd1bWEgbW9kaWZpY2HDp8OjbyBuYSBwZXNxdWlzYS5cbiAqIC0gQ2FzbyBzZWphIHBvc3PDrXZlbCBkZXRlY3RhciB1bSBlcnJvIGRlIGRpZ2l0YcOnw6NvLCBtb3N0cmUgb3MgcmVzdWx0YWRvcyBwYXJhIGEgcGFsYXZyYSBcImNvcnJpZ2lkYVwiLCBpc3NvIGV2aXRhIGEgZnJ1c3RyYcOnw6NvIGRlIG7Do28gb2J0ZXIgcmVzdWx0YWRvcyBlIG7Do28gZm9yw6dhIG8gdXN1w6FyaW8gYSByZWFsaXphciB1bWEgbm92YSBidXNjYS5cbiAqIC0gUXVhbmRvIGFwcm9wcmlhZG8sIGRlc3RhcXVlIG9zIHRlcm1vcyBkYSBidXNjYSBub3MgcmVzdWx0YWRvcy5cbiAqIC0gQSBlbnRyYWRhIGRvIGNhbXBvIGRlIHBlc3F1aXNhIGRldmUgY2FiZXIgZW0gdW1hIGxpbmhhLiBOw6NvIHVzZSBlbnRyYWRhcyBkZSBwZXNxdWlzYSBkZSB2w6FyaWFzIGxpbmhhcy5cbiAqIC0gUmVjb21lbmRhLXNlIHRlciBhcGVuYXMgdW1hIHBlc3F1aXNhIHBvciBww6FnaW5hLiBTZSB2b2PDqiBwcmVjaXNhciBkZSB2w6FyaWFzIHBlc3F1aXNhcywgcm90dWxlLWFzIGNsYXJhbWVudGUgcGFyYSBpbmRpY2FyIHN1YSBmaW5hbGlkYWRlLlxuICogLSBTZSBwb3Nzw612ZWwsIGZvcm5lw6dhIHN1Z2VzdMO1ZXMgZGUgcGVzcXVpc2EsIHNlamEgZW0gdW0gaGVscHRleHQgb3Ugc3VnZXN0w6NvIGRlIHBlc3F1aXNhIHF1ZSDDqSB1bSBhdXRvY29tcGxldGUuIElzc28gYWp1ZGEgb3MgdXN1w6FyaW9zIGEgZW5jb250cmFyIG8gcXVlIGVzdMOjbyBwcm9jdXJhbmRvLCBlc3BlY2lhbG1lbnRlIHNlIG9zIGl0ZW5zIHBlc3F1aXPDoXZlaXMgZm9yZW0gY29tcGxleG9zLlxuICpcbiAqICMjIyMgQWNlc3NpYmlsaWRhZGUgdHJhdGFkYSBubyBjb21wb25lbnRlXG4gKlxuICogIEFsZ3VtYXMgZGlyZXRyaXplcyBkZSBhY2Vzc2liaWxpZGFkZSBqw6Egc8OjbyB0cmF0YWRhcyBubyBjb21wb25lbnRlLCBpbnRlcm5hbWVudGUsIGUgbsOjbyBwb2RlbSBzZXIgYWx0ZXJhZGFzIHBlbG8gcHJvcHJpZXTDoXJpbyBkbyBjb250ZcO6ZG8uIFPDo28gZWxhczpcbiAqXG4gKiAtIFBlcm1pdGlyIGEgaW50ZXJhw6fDo28gdmlhIHRlY2xhZG8gKDIuMS4xOiBLZXlib2FyZCAoQSkpO1xuICogLSBBbHRlcmHDp8OjbyBlbnRyZSBvcyBlc3RhZG9zIHByZWNpc2Egc2VyIGluZGljYWRhIHBvciBtYWlzIGRlIHVtIGVsZW1lbnRvIGFsw6ltIGRhIGNvciAoMS40LjE6IFVzZSBvZiBDb2xvcik7XG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIFBvU2VhcmNoQmFzZUNvbXBvbmVudCB7XG4gIHByaXZhdGUgX2xpdGVyYWxzPzogUG9TZWFyY2hMaXRlcmFscztcbiAgcHJpdmF0ZSBfYXJpYUxhYmVsPzogc3RyaW5nO1xuICBwcml2YXRlIGxhbmd1YWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVzYWJpbGl0YSBvIHBvLXNlYXJjaCBlIG7Do28gcGVybWl0ZSBxdWUgbyB1c3XDoXJpbyBpbnRlcmFqYSBjb20gbyBtZXNtby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWRpc2FibGVkJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBMaXN0YSBkZSBpdGVucyBxdWUgc2Vyw6NvIHV0aWxpemFkb3MgcGFyYSBwZXNxdWlzYVxuICAgKi9cbiAgQElucHV0KCdwLWl0ZW1zJykgaXRlbXM6IEFycmF5PGFueT4gPSBbXTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgdW0gYXJpYS1sYWJlbCBwYXJhIG8gcG8tc2VhcmNoLlxuICAgKlxuICAgKiA+IERldmlkbyBvIGNvbXBvbmVudGUgbsOjbyBwb3NzdWlyIHVtYSBsYWJlbCBhc3NpbSBjb21vIG91dHJvcyBjYW1wb3MgZGUgdGV4dG8sIG8gYGFyaWEtbGFiZWxgIMOpIHV0aWxpemFkbyBwYXJhIGFjZXNzaWJpbGlkYWRlLlxuICAgKi9cbiAgQElucHV0KCdwLWFyaWEtbGFiZWwnKSBzZXQgYXJpYUxhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9hcmlhTGFiZWwgPSB2YWx1ZTtcblxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5saXRlcmFscy5zZWFyY2gpIHtcbiAgICAgIHRoaXMuX2FyaWFMYWJlbCA9IGAke3RoaXMuX2FyaWFMYWJlbH0gJHt0aGlzLmxpdGVyYWxzLnNlYXJjaH1gO1xuICAgIH1cbiAgfVxuXG4gIGdldCBhcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYXJpYUxhYmVsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGV2ZSBzZXIgaW5mb3JtYWRvIG8gbm9tZSBkYSBwcm9wcmllZGFkZSBkbyBvYmpldG8gcXVlIHNlcsOhIHV0aWxpemFkbyBwYXJhIGEgY29udmVyc8OjbyBkb3MgaXRlbnMgYXByZXNlbnRhZG9zIG5hIGxpc3RhIGRvIGNvbXBvbmVudGUgKHAtaXRlbXMpLCBlc3RhIHByb3ByaWVkYWRlIHNlcsOhIHJlc3BvbnPDoXZlbCBwZWxvIHRleHRvIGRlIGFwcmVzZW50YcOnw6NvIGRlIGNhZGEgaXRlbSBkYSBsaXN0YS5cbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXIta2V5cycpIGZpbHRlcktleXM6IEFycmF5PGFueT4gPSBbXTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZXZlIHNlciBpbmZvcm1hZG8gbyBub21lIGRhIHByb3ByaWVkYWRlIGRvIG9iamV0byBxdWUgc2Vyw6EgdXRpbGl6YWRvIHBhcmEgYSBjb252ZXJzw6NvIGRvcyBpdGVucyBhcHJlc2VudGFkb3MgbmEgbGlzdGEgZG8gY29tcG9uZW50ZSAocC1pdGVtcyksIGVzdGEgcHJvcHJpZWRhZGUgc2Vyw6EgcmVzcG9uc8OhdmVsIHBlbG8gdGV4dG8gZGUgYXByZXNlbnRhw6fDo28gZGUgY2FkYSBpdGVtIGRhIGxpc3RhLlxuICAgKi9cbiAgQElucHV0KCdwLWljb24nKSBpY29uOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBPYmpldG8gY29tIGFzIGxpdGVyYWlzIHVzYWRhcyBubyBgcG8tc2VhcmNoYC5cbiAgICpcbiAgICogUGFyYSB1dGlsaXphciBiYXN0YSBwYXNzYXIgYSBsaXRlcmFsIHF1ZSBkZXNlamEgY3VzdG9taXphcjpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9TZWFyY2hMaXRlcmFscyA9IHtcbiAgICogICAgc2VhcmNoOiAnUGVzcXVpc2FyJyxcbiAgICogICAgY2xlYW46ICdMaW1wYXInLFxuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIEUgcGFyYSBjYXJyZWdhciBhIGxpdGVyYWwgY3VzdG9taXphZGEsIGJhc3RhIGFwZW5hcyBwYXNzYXIgbyBvYmpldG8gcGFyYSBvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tc2VhcmNoXG4gICAqICAgW3AtbGl0ZXJhbHNdPVwiY3VzdG9tTGl0ZXJhbHNcIj5cbiAgICogPC9wby1zZWFyY2g+XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IE8gb2JqZXRvIHBhZHLDo28gZGUgbGl0ZXJhaXMgc2Vyw6EgdHJhZHV6aWRvIGRlIGFjb3JkbyBjb20gbyBpZGlvbWEgZG9cbiAgICogW2BQb0kxOG5TZXJ2aWNlYF0oL2RvY3VtZW50YXRpb24vcG8taTE4bikgb3UgZG8gYnJvd3Nlci5cbiAgICovXG4gIEBJbnB1dCgncC1saXRlcmFscycpIHNldCBsaXRlcmFscyh2YWx1ZTogUG9TZWFyY2hMaXRlcmFscykge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiAhKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICB0aGlzLl9saXRlcmFscyA9IHtcbiAgICAgICAgLi4ucG9TZWFyY2hMaXRlcmFsc0RlZmF1bHRbcG9Mb2NhbGVEZWZhdWx0XSxcbiAgICAgICAgLi4ucG9TZWFyY2hMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV0sXG4gICAgICAgIC4uLnZhbHVlXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9saXRlcmFscyA9IHBvU2VhcmNoTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdO1xuICAgIH1cbiAgfVxuXG4gIGdldCBsaXRlcmFscygpIHtcbiAgICByZXR1cm4gdGhpcy5fbGl0ZXJhbHMgfHwgcG9TZWFyY2hMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgbyBtb2RvIGRlIHBlc3F1aXNhIHV0aWxpemFkbyBubyBjYW1wbyBkZSBidXNjYSwgcXVhbmRvIGhhYmlsaXRhZG8uIFZhbG9yZXMgZGVmaW5pZG9zIG5vIGVudW06IFBvU2VhcmNoRmlsdGVyTW9kZVxuICAgKlxuICAgKiBAZGVmYXVsdCBgc3RhcnRzV2l0aGBcbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXItdHlwZScpIGZpbHRlclR5cGU6IFBvU2VhcmNoRmlsdGVyTW9kZSA9IFBvU2VhcmNoRmlsdGVyTW9kZS5zdGFydHNXaXRoO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gYWx0ZXJhciB2YWxvciBkbyBtb2RlbC5cbiAgICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlLW1vZGVsJykgY2hhbmdlTW9kZWw6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBvZGUgc2VyIGluZm9ybWFkYSB1bWEgZnVuw6fDo28gcXVlIHNlcsOhIGRpc3BhcmFkYSBxdWFuZG8gaG91dmVyIGFsdGVyYcOnw7VlcyBubyBpbnB1dC5cbiAgICovXG4gIEBPdXRwdXQoJ3AtZmlsdGVyZWQtaXRlbXMtY2hhbmdlJykgZmlsdGVyZWRJdGVtc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8YW55Pj4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQb2RlIHNlciBpbmZvcm1hZGEgdW1hIGZ1bsOnw6NvIHF1ZSBzZXLDoSBkaXNwYXJhZGEgcXVhbmRvIGhvdXZlciBhbHRlcmHDp8O1ZXMgbm9zIGZpbHRyb3MuXG4gICAqL1xuICBAT3V0cHV0KCdwLWZpbHRlcicpIGZpbHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBjb25zdHJ1Y3RvcihsYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlKSB7XG4gICAgdGhpcy5sYW5ndWFnZSA9IGxhbmd1YWdlU2VydmljZS5nZXRTaG9ydExhbmd1YWdlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,59 +1,63 @@
|
|
|
1
|
-
import { PoFilterMode } from './po-search-filter-mode.enum';
|
|
2
1
|
import { Component, ElementRef, ViewChild } from '@angular/core';
|
|
3
2
|
import { PoSearchBaseComponent } from './po-search-base.component';
|
|
3
|
+
import { PoSearchFilterMode } from './enum/po-search-filter-mode.enum';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "../../services/po-language/po-language.service";
|
|
6
6
|
import * as i2 from "@angular/common";
|
|
7
|
-
import * as i3 from "../po-
|
|
8
|
-
import * as i4 from "../po-icon/po-icon.component";
|
|
9
|
-
import * as i5 from "../po-loading/po-loading-icon/po-loading-icon.component";
|
|
7
|
+
import * as i3 from "../po-icon/po-icon.component";
|
|
10
8
|
const _c0 = ["poSearchInput"];
|
|
11
|
-
function
|
|
12
|
-
i0.ɵɵ
|
|
13
|
-
|
|
14
|
-
function
|
|
15
|
-
i0.ɵɵelement(
|
|
16
|
-
} }
|
|
17
|
-
function PoSearchComponent_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
18
|
-
const _r5 = i0.ɵɵgetCurrentView();
|
|
19
|
-
i0.ɵɵelementStart(0, "div", 9)(1, "po-clean", 10);
|
|
20
|
-
i0.ɵɵlistener("p-change-event", function PoSearchComponent_div_6_Template_po_clean_p_change_event_1_listener() { i0.ɵɵrestoreView(_r5); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.clearSearch()); });
|
|
9
|
+
function PoSearchComponent_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
10
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
11
|
+
i0.ɵɵelementStart(0, "div", 6)(1, "button", 7);
|
|
12
|
+
i0.ɵɵlistener("click", function PoSearchComponent_div_5_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.clearSearch()); })("keydown.enter", function PoSearchComponent_div_5_Template_button_keydown_enter_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.clearSearch()); });
|
|
13
|
+
i0.ɵɵelement(2, "po-icon", 8);
|
|
21
14
|
i0.ɵɵelementEnd()();
|
|
22
15
|
} if (rf & 2) {
|
|
23
|
-
const
|
|
24
|
-
const _r2 = i0.ɵɵreference(5);
|
|
25
|
-
i0.ɵɵproperty("tabindex", !ctx_r3.disabled ? 0 : -1);
|
|
16
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
26
17
|
i0.ɵɵadvance(1);
|
|
27
|
-
i0.ɵɵproperty("
|
|
18
|
+
i0.ɵɵproperty("ariaLabel", ctx_r1.literals.clean);
|
|
28
19
|
} }
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
20
|
+
/**
|
|
21
|
+
* @docsExtends PoSearchBaseComponent
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
*
|
|
25
|
+
* <example name="po-search-basic" title="PO Search Basic">
|
|
26
|
+
* <file name="sample-po-search-basic/sample-po-search-basic.component.html"> </file>
|
|
27
|
+
* <file name="sample-po-search-basic/sample-po-search-basic.component.ts"> </file>
|
|
28
|
+
* </example>
|
|
29
|
+
*
|
|
30
|
+
* <example name="po-search-labs" title="PO Search Labs">
|
|
31
|
+
* <file name="sample-po-search-labs/sample-po-search-labs.component.html"> </file>
|
|
32
|
+
* <file name="sample-po-search-labs/sample-po-search-labs.component.ts"> </file>
|
|
33
|
+
* <file name="sample-po-search-labs/sample-po-search-labs.service.ts"> </file>
|
|
34
|
+
* </example>
|
|
35
|
+
*
|
|
36
|
+
* <example name="po-search-find-people" title="PO Search Find People">
|
|
37
|
+
* <file name="sample-po-search-find-people/sample-po-search-find-people.component.html"> </file>
|
|
38
|
+
* <file name="sample-po-search-find-people/sample-po-search-find-people.component.ts"> </file>
|
|
39
|
+
* <file name="sample-po-search-find-people/sample-po-search-find-people.service.ts"> </file>
|
|
40
|
+
* </example>
|
|
41
|
+
*
|
|
42
|
+
*/
|
|
35
43
|
export class PoSearchComponent extends PoSearchBaseComponent {
|
|
36
44
|
languageService;
|
|
37
45
|
renderer;
|
|
38
46
|
poSearchInput;
|
|
39
47
|
filteredItems = [];
|
|
40
|
-
literals;
|
|
41
48
|
constructor(languageService, renderer) {
|
|
42
|
-
super();
|
|
49
|
+
super(languageService);
|
|
43
50
|
this.languageService = languageService;
|
|
44
51
|
this.renderer = renderer;
|
|
45
52
|
}
|
|
46
53
|
ngOnInit() {
|
|
47
|
-
this.literals = {
|
|
48
|
-
...poSearchLiteralsDefault[this.languageService?.getLanguageDefault()],
|
|
49
|
-
...poSearchLiteralsDefault[this.languageService?.getShortLanguage()]
|
|
50
|
-
};
|
|
51
54
|
this.filteredItems = this.items;
|
|
52
55
|
}
|
|
53
56
|
clearSearch() {
|
|
54
57
|
this.poSearchInput.nativeElement.value = '';
|
|
55
58
|
this.onSearchChange('');
|
|
56
59
|
this.filteredItemsChange.emit(this.items);
|
|
60
|
+
this.poSearchInput.nativeElement.focus();
|
|
57
61
|
}
|
|
58
62
|
onBlur() {
|
|
59
63
|
this.renderer.removeClass(this.poSearchInput.nativeElement.parentElement, 'po-search-focused');
|
|
@@ -70,13 +74,13 @@ export class PoSearchComponent extends PoSearchBaseComponent {
|
|
|
70
74
|
value = value != null ? value.toString() : null;
|
|
71
75
|
}
|
|
72
76
|
value = value != null ? value.toLowerCase() : null;
|
|
73
|
-
if (this.filterType ===
|
|
77
|
+
if (this.filterType === PoSearchFilterMode.startsWith) {
|
|
74
78
|
return value != null && value.startsWith(searchText);
|
|
75
79
|
}
|
|
76
|
-
else if (this.filterType ===
|
|
80
|
+
else if (this.filterType === PoSearchFilterMode.contains) {
|
|
77
81
|
return value != null && value.includes(searchText);
|
|
78
82
|
}
|
|
79
|
-
else if (this.filterType ===
|
|
83
|
+
else if (this.filterType === PoSearchFilterMode.endsWith) {
|
|
80
84
|
return value != null && value.endsWith(searchText);
|
|
81
85
|
}
|
|
82
86
|
return false;
|
|
@@ -87,6 +91,7 @@ export class PoSearchComponent extends PoSearchBaseComponent {
|
|
|
87
91
|
this.filteredItems = [];
|
|
88
92
|
this.filteredItemsChange.emit(this.filteredItems);
|
|
89
93
|
}
|
|
94
|
+
this.changeModel.emit(searchText);
|
|
90
95
|
}
|
|
91
96
|
static ɵfac = function PoSearchComponent_Factory(t) { return new (t || PoSearchComponent)(i0.ɵɵdirectiveInject(i1.PoLanguageService), i0.ɵɵdirectiveInject(i0.Renderer2)); };
|
|
92
97
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoSearchComponent, selectors: [["po-search"]], viewQuery: function PoSearchComponent_Query(rf, ctx) { if (rf & 1) {
|
|
@@ -94,33 +99,32 @@ export class PoSearchComponent extends PoSearchBaseComponent {
|
|
|
94
99
|
} if (rf & 2) {
|
|
95
100
|
let _t;
|
|
96
101
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.poSearchInput = _t.first);
|
|
97
|
-
} }, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
102
|
+
} }, features: [i0.ɵɵInheritDefinitionFeature], decls: 6, vars: 9, consts: [[1, "po-search"], [1, "po-search-icon"], [3, "p-icon"], ["type", "text", 1, "po-search-input", 3, "ariaLabel", "disabled", "placeholder", "blur", "focus", "input"], ["poSearchInput", ""], ["class", "po-search-container-clean", 4, "ngIf"], [1, "po-search-container-clean"], [1, "po-search-clean", 3, "ariaLabel", "click", "keydown.enter"], ["p-icon", "po-icon-clear-content"]], template: function PoSearchComponent_Template(rf, ctx) { if (rf & 1) {
|
|
98
103
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
|
|
99
|
-
i0.ɵɵ
|
|
100
|
-
i0.ɵɵtemplate(3, PoSearchComponent_po_loading_icon_3_Template, 1, 0, "po-loading-icon", 3);
|
|
104
|
+
i0.ɵɵelement(2, "po-icon", 2);
|
|
101
105
|
i0.ɵɵelementEnd();
|
|
102
|
-
i0.ɵɵelementStart(
|
|
103
|
-
i0.ɵɵlistener("blur", function
|
|
106
|
+
i0.ɵɵelementStart(3, "input", 3, 4);
|
|
107
|
+
i0.ɵɵlistener("blur", function PoSearchComponent_Template_input_blur_3_listener() { return ctx.onBlur(); })("focus", function PoSearchComponent_Template_input_focus_3_listener() { return ctx.onFocus(); })("input", function PoSearchComponent_Template_input_input_3_listener($event) { return ctx.onSearchChange($event.target.value); });
|
|
104
108
|
i0.ɵɵelementEnd();
|
|
105
|
-
i0.ɵɵtemplate(
|
|
109
|
+
i0.ɵɵtemplate(5, PoSearchComponent_div_5_Template, 3, 1, "div", 5);
|
|
106
110
|
i0.ɵɵelementEnd();
|
|
107
111
|
} if (rf & 2) {
|
|
108
|
-
const
|
|
112
|
+
const _r0 = i0.ɵɵreference(4);
|
|
113
|
+
i0.ɵɵclassProp("po-search-disabled", ctx.disabled);
|
|
109
114
|
i0.ɵɵadvance(2);
|
|
110
|
-
i0.ɵɵproperty("
|
|
111
|
-
i0.ɵɵadvance(1);
|
|
112
|
-
i0.ɵɵproperty("ngIf", ctx.loading);
|
|
115
|
+
i0.ɵɵproperty("p-icon", ctx.icon ? ctx.icon : "po-icon-search");
|
|
113
116
|
i0.ɵɵadvance(1);
|
|
114
|
-
i0.ɵɵ
|
|
117
|
+
i0.ɵɵclassProp("po-search-icon-right", !!_r0.value && !ctx.disabled);
|
|
118
|
+
i0.ɵɵproperty("ariaLabel", ctx.ariaLabel)("disabled", ctx.disabled)("placeholder", ctx.literals.search);
|
|
115
119
|
i0.ɵɵadvance(2);
|
|
116
|
-
i0.ɵɵproperty("ngIf", !!
|
|
117
|
-
} }, dependencies: [i2.NgIf, i3.
|
|
120
|
+
i0.ɵɵproperty("ngIf", !!_r0.value && !ctx.disabled);
|
|
121
|
+
} }, dependencies: [i2.NgIf, i3.PoIconComponent], encapsulation: 2 });
|
|
118
122
|
}
|
|
119
123
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoSearchComponent, [{
|
|
120
124
|
type: Component,
|
|
121
|
-
args: [{ selector: 'po-search', template: "<div class=\"po-search\">\n <div class=\"po-search-icon\">\n <po-icon
|
|
125
|
+
args: [{ selector: 'po-search', template: "<div class=\"po-search\" [class.po-search-disabled]=\"disabled\">\n <div class=\"po-search-icon\">\n <po-icon [p-icon]=\"icon ? icon : 'po-icon-search'\"></po-icon>\n </div>\n\n <input\n #poSearchInput\n type=\"text\"\n class=\"po-search-input\"\n [ariaLabel]=\"ariaLabel\"\n [class.po-search-icon-right]=\"!!poSearchInput.value && !disabled\"\n [disabled]=\"disabled\"\n [placeholder]=\"literals.search\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n (input)=\"onSearchChange($event.target.value)\"\n />\n\n <div *ngIf=\"!!poSearchInput.value && !disabled\" class=\"po-search-container-clean\">\n <button\n class=\"po-search-clean\"\n [ariaLabel]=\"literals.clean\"\n (click)=\"clearSearch()\"\n (keydown.enter)=\"clearSearch()\"\n >\n <po-icon p-icon=\"po-icon-clear-content\"></po-icon>\n </button>\n </div>\n</div>\n" }]
|
|
122
126
|
}], function () { return [{ type: i1.PoLanguageService }, { type: i0.Renderer2 }]; }, { poSearchInput: [{
|
|
123
127
|
type: ViewChild,
|
|
124
128
|
args: ['poSearchInput', { read: ElementRef, static: true }]
|
|
125
129
|
}] }); })();
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1zZWFyY2gvcG8tc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1zZWFyY2gvcG8tc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7O0lDZXJFLDhCQUFrRixnQkFBQTtJQUk5RSw4SkFBUyxlQUFBLG9CQUFhLENBQUEsSUFBQyxpS0FDTixlQUFBLG9CQUFhLENBQUEsSUFEUDtJQUd2Qiw2QkFBa0Q7SUFDcEQsaUJBQVMsRUFBQTs7O0lBTFAsZUFBNEI7SUFBNUIsaURBQTRCOztBRGhCbEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFLSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEscUJBQXFCO0lBS3ZDO0lBQTRDO0lBSkMsYUFBYSxDQUFhO0lBRTFGLGFBQWEsR0FBZSxFQUFFLENBQUM7SUFFL0IsWUFBbUIsZUFBa0MsRUFBVSxRQUFtQjtRQUNoRixLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFETixvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO0lBRWxGLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEs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QUNSLGlCQUFNOzs7WUE1QmlCLGtEQUFxQztZQUUvQyxlQUF5QztZQUF6QywrREFBeUM7WUFRbEQsZUFBaUU7WUFBakUsb0VBQWlFO1lBRGpFLHlDQUF1QiwwQkFBQSxvQ0FBQTtZQVNuQixlQUF3QztZQUF4QyxtREFBd0M7Ozt1RkRjbkMsaUJBQWlCO2NBSjdCLFNBQVM7MkJBQ0UsV0FBVzs0RkFJMkMsYUFBYTtrQkFBNUUsU0FBUzttQkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBQb1NlYXJjaEJhc2VDb21wb25lbnQgfSBmcm9tICcuL3BvLXNlYXJjaC1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1NlYXJjaEZpbHRlck1vZGUgfSBmcm9tICcuL2VudW0vcG8tc2VhcmNoLWZpbHRlci1tb2RlLmVudW0nO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb1NlYXJjaEJhc2VDb21wb25lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1zZWFyY2gtYmFzaWNcIiB0aXRsZT1cIlBPIFNlYXJjaCBCYXNpY1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc2VhcmNoLWJhc2ljL3NhbXBsZS1wby1zZWFyY2gtYmFzaWMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc2VhcmNoLWJhc2ljL3NhbXBsZS1wby1zZWFyY2gtYmFzaWMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tc2VhcmNoLWxhYnNcIiB0aXRsZT1cIlBPIFNlYXJjaCBMYWJzXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zZWFyY2gtbGFicy9zYW1wbGUtcG8tc2VhcmNoLWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc2VhcmNoLWxhYnMvc2FtcGxlLXBvLXNlYXJjaC1sYWJzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zZWFyY2gtbGFicy9zYW1wbGUtcG8tc2VhcmNoLWxhYnMuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXNlYXJjaC1maW5kLXBlb3BsZVwiIHRpdGxlPVwiUE8gU2VhcmNoIEZpbmQgUGVvcGxlXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zZWFyY2gtZmluZC1wZW9wbGUvc2FtcGxlLXBvLXNlYXJjaC1maW5kLXBlb3BsZS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zZWFyY2gtZmluZC1wZW9wbGUvc2FtcGxlLXBvLXNlYXJjaC1maW5kLXBlb3BsZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc2VhcmNoLWZpbmQtcGVvcGxlL3NhbXBsZS1wby1zZWFyY2gtZmluZC1wZW9wbGUuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1zZWFyY2gnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tc2VhcmNoLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQb1NlYXJjaENvbXBvbmVudCBleHRlbmRzIFBvU2VhcmNoQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3BvU2VhcmNoSW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBwb1NlYXJjaElucHV0OiBFbGVtZW50UmVmO1xuXG4gIGZpbHRlcmVkSXRlbXM6IEFycmF5PGFueT4gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7XG4gICAgc3VwZXIobGFuZ3VhZ2VTZXJ2aWNlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IHRoaXMuaXRlbXM7XG4gIH1cblxuICBjbGVhclNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnBvU2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIHRoaXMub25TZWFyY2hDaGFuZ2UoJycpO1xuICAgIHRoaXMuZmlsdGVyZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuaXRlbXMpO1xuICAgIHRoaXMucG9TZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnBvU2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LCAncG8tc2VhcmNoLWZvY3VzZWQnKTtcbiAgfVxuXG4gIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnBvU2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LCAncG8tc2VhcmNoLWZvY3VzZWQnKTtcbiAgfVxuXG4gIG9uU2VhcmNoQ2hhbmdlKHNlYXJjaFRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHNlYXJjaFRleHQgPSBzZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAodGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKGl0ZW0gPT5cbiAgICAgICAgdGhpcy5maWx0ZXJLZXlzLnNvbWUoa2V5ID0+IHtcbiAgICAgICAgICBsZXQgdmFsdWUgPSBpdGVtW2tleV07XG5cbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSAhPSBudWxsID8gdmFsdWUudG9TdHJpbmcoKSA6IG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZSAhPSBudWxsID8gdmFsdWUudG9Mb3dlckNhc2UoKSA6IG51bGw7XG5cbiAgICAgICAgICBpZiAodGhpcy5maWx0ZXJUeXBlID09PSBQb1NlYXJjaEZpbHRlck1vZGUuc3RhcnRzV2l0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdmFsdWUuc3RhcnRzV2l0aChzZWFyY2hUZXh0KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZmlsdGVyVHlwZSA9PT0gUG9TZWFyY2hGaWx0ZXJNb2RlLmNvbnRhaW5zKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS5pbmNsdWRlcyhzZWFyY2hUZXh0KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZmlsdGVyVHlwZSA9PT0gUG9TZWFyY2hGaWx0ZXJNb2RlLmVuZHNXaXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS5lbmRzV2l0aChzZWFyY2hUZXh0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zQ2hhbmdlLmVtaXQodGhpcy5maWx0ZXJlZEl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gW107XG4gICAgICB0aGlzLmZpbHRlcmVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLmZpbHRlcmVkSXRlbXMpO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZU1vZGVsLmVtaXQoc2VhcmNoVGV4dCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwby1zZWFyY2hcIiBbY2xhc3MucG8tc2VhcmNoLWRpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gIDxkaXYgY2xhc3M9XCJwby1zZWFyY2gtaWNvblwiPlxuICAgIDxwby1pY29uIFtwLWljb25dPVwiaWNvbiA/IGljb24gOiAncG8taWNvbi1zZWFyY2gnXCI+PC9wby1pY29uPlxuICA8L2Rpdj5cblxuICA8aW5wdXRcbiAgICAjcG9TZWFyY2hJbnB1dFxuICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICBjbGFzcz1cInBvLXNlYXJjaC1pbnB1dFwiXG4gICAgW2FyaWFMYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgIFtjbGFzcy5wby1zZWFyY2gtaWNvbi1yaWdodF09XCIhIXBvU2VhcmNoSW5wdXQudmFsdWUgJiYgIWRpc2FibGVkXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJsaXRlcmFscy5zZWFyY2hcIlxuICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAoaW5wdXQpPVwib25TZWFyY2hDaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAvPlxuXG4gIDxkaXYgKm5nSWY9XCIhIXBvU2VhcmNoSW5wdXQudmFsdWUgJiYgIWRpc2FibGVkXCIgY2xhc3M9XCJwby1zZWFyY2gtY29udGFpbmVyLWNsZWFuXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJwby1zZWFyY2gtY2xlYW5cIlxuICAgICAgW2FyaWFMYWJlbF09XCJsaXRlcmFscy5jbGVhblwiXG4gICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2goKVwiXG4gICAgICAoa2V5ZG93bi5lbnRlcik9XCJjbGVhclNlYXJjaCgpXCJcbiAgICA+XG4gICAgICA8cG8taWNvbiBwLWljb249XCJwby1pY29uLWNsZWFyLWNvbnRlbnRcIj48L3BvLWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|