@senior-agronegocio/angular-components 0.0.9863 → 0.0.9864

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.
Files changed (59) hide show
  1. package/bundles/senior-agronegocio-angular-components.umd.js +330 -25
  2. package/bundles/senior-agronegocio-angular-components.umd.js.map +1 -1
  3. package/bundles/senior-agronegocio-angular-components.umd.min.js +2 -2
  4. package/bundles/senior-agronegocio-angular-components.umd.min.js.map +1 -1
  5. package/common/agro-object-stringifier.class.d.ts +16 -0
  6. package/common/agro-regex.constant.d.ts +3 -0
  7. package/common/agro-string-utils.class.d.ts +8 -0
  8. package/esm2015/common/agro-object-stringifier.class.js +31 -0
  9. package/esm2015/common/agro-platform-utils.class.js +8 -7
  10. package/esm2015/common/agro-regex.constant.js +5 -2
  11. package/esm2015/common/agro-string-utils.class.js +89 -11
  12. package/esm2015/pipe/cnpj-cpf/cnpj-cpf.pipe.js +28 -0
  13. package/esm2015/pipe/cnpj-cpf/cnpj-cpf.pipe.module.js +15 -0
  14. package/esm2015/pipe/cnpj-cpf/index.js +3 -0
  15. package/esm2015/pipe/index.js +4 -1
  16. package/esm2015/pipe/stringifier/index.js +3 -0
  17. package/esm2015/pipe/stringifier/stringifier.pipe.js +13 -0
  18. package/esm2015/pipe/stringifier/stringifier.pipe.module.js +15 -0
  19. package/esm2015/pipe/telephone/index.js +3 -0
  20. package/esm2015/pipe/telephone/telephone.pipe.js +91 -0
  21. package/esm2015/pipe/telephone/telephone.pipe.module.js +15 -0
  22. package/esm2015/public-api.js +3 -3
  23. package/esm2015/senior-agronegocio-angular-components.js +3 -2
  24. package/esm2015/services/lib-translation.service.js +2 -2
  25. package/esm5/common/agro-object-stringifier.class.js +35 -0
  26. package/esm5/common/agro-platform-utils.class.js +8 -7
  27. package/esm5/common/agro-regex.constant.js +5 -2
  28. package/esm5/common/agro-string-utils.class.js +106 -17
  29. package/esm5/pipe/cnpj-cpf/cnpj-cpf.pipe.js +35 -0
  30. package/esm5/pipe/cnpj-cpf/cnpj-cpf.pipe.module.js +18 -0
  31. package/esm5/pipe/cnpj-cpf/index.js +3 -0
  32. package/esm5/pipe/index.js +4 -1
  33. package/esm5/pipe/stringifier/index.js +3 -0
  34. package/esm5/pipe/stringifier/stringifier.pipe.js +16 -0
  35. package/esm5/pipe/stringifier/stringifier.pipe.module.js +18 -0
  36. package/esm5/pipe/telephone/index.js +3 -0
  37. package/esm5/pipe/telephone/telephone.pipe.js +95 -0
  38. package/esm5/pipe/telephone/telephone.pipe.module.js +18 -0
  39. package/esm5/public-api.js +3 -3
  40. package/esm5/senior-agronegocio-angular-components.js +3 -2
  41. package/esm5/services/lib-translation.service.js +2 -2
  42. package/fesm2015/senior-agronegocio-angular-components.js +280 -19
  43. package/fesm2015/senior-agronegocio-angular-components.js.map +1 -1
  44. package/fesm5/senior-agronegocio-angular-components.js +323 -25
  45. package/fesm5/senior-agronegocio-angular-components.js.map +1 -1
  46. package/package.json +7 -55
  47. package/pipe/cnpj-cpf/cnpj-cpf.pipe.d.ts +4 -0
  48. package/pipe/cnpj-cpf/cnpj-cpf.pipe.module.d.ts +2 -0
  49. package/pipe/cnpj-cpf/index.d.ts +2 -0
  50. package/pipe/index.d.ts +3 -0
  51. package/pipe/stringifier/index.d.ts +2 -0
  52. package/pipe/stringifier/stringifier.pipe.d.ts +9 -0
  53. package/pipe/stringifier/stringifier.pipe.module.d.ts +2 -0
  54. package/pipe/telephone/index.d.ts +2 -0
  55. package/pipe/telephone/telephone.pipe.d.ts +21 -0
  56. package/pipe/telephone/telephone.pipe.module.d.ts +2 -0
  57. package/public-api.d.ts +2 -2
  58. package/senior-agronegocio-angular-components.d.ts +2 -1
  59. package/senior-agronegocio-angular-components.metadata.json +1 -1
@@ -0,0 +1,16 @@
1
+ import { PipeTransform } from "@angular/core";
2
+ export declare type UsePipes = {
3
+ [key: string]: PipeTransform;
4
+ };
5
+ export declare class AgroObjectStringifier {
6
+ /**
7
+ * Formata um objeto concatenando valores segundo as chaves e pipes informados.
8
+ *
9
+ * @param separator Separador entre os valores (ex: "-")
10
+ * @param fields Campos a extrair. Podem conter subpropriedades ("propriedade.subPropriedade") e pipes ("propriedade|nomeDaPipe:arg1:arg2")
11
+ * @param obj Objeto origem
12
+ */
13
+ static formatObject(separator: string, fields: string[], obj: any, usePipes?: UsePipes): string;
14
+ /** Resolve um caminho tipo "empresa.cargo" dentro de um objeto */
15
+ private static resolvePath;
16
+ }
@@ -149,4 +149,7 @@ export declare const AGRO_REGEX: {
149
149
  * Formato: AAA-0000
150
150
  */
151
151
  isOldLicensePlate: RegExp;
152
+ isISODate: RegExp;
153
+ isISOTime: RegExp;
154
+ isISODateTime: RegExp;
152
155
  };
@@ -83,6 +83,11 @@ export declare class AgroStringUtils {
83
83
  static uncapitalize(str: string): string;
84
84
  /** Conta o número de ocorrências de uma substring dentro de uma string */
85
85
  static countMatches(str: string, substring: string): number;
86
+ /**
87
+ * Remove uma máscara simples da string fornecida.O padrão de máscaras é definido pelo enum AgroStringMasks ou
88
+ * pode ser uma string personalizada onde '9' representa um dígito a ser mantido da string.
89
+ */
90
+ static removeMask(value: string, mask: AgroStringMasks | string): string;
86
91
  /**
87
92
  * Aplica uma máscara simples à string fornecida.O padrão de máscaras é definido pelo enum AgroStringMasks ou
88
93
  * pode ser uma string personalizada onde '9' representa um dígito a ser substituído pelo caractere correspondente
@@ -91,4 +96,7 @@ export declare class AgroStringUtils {
91
96
  static applyMask(value: string, mask: AgroStringMasks | string): string;
92
97
  static isValid(str: NullableString): boolean;
93
98
  static isInvalid(str: NullableString): boolean;
99
+ static isISODate(value: string): boolean;
100
+ static isISOTime(value: string): boolean;
101
+ static isISODatetime(value: string): boolean;
94
102
  }
@@ -0,0 +1,31 @@
1
+ import { AgroStringUtils } from "./agro-string-utils.class";
2
+ export class AgroObjectStringifier {
3
+ /**
4
+ * Formata um objeto concatenando valores segundo as chaves e pipes informados.
5
+ *
6
+ * @param separator Separador entre os valores (ex: "-")
7
+ * @param fields Campos a extrair. Podem conter subpropriedades ("propriedade.subPropriedade") e pipes ("propriedade|nomeDaPipe:arg1:arg2")
8
+ * @param obj Objeto origem
9
+ */
10
+ static formatObject(separator, fields, obj, usePipes) {
11
+ function mapField(field) {
12
+ const value = AgroObjectStringifier.resolvePath(obj, field);
13
+ if (usePipes === null || usePipes === void 0 ? void 0 : usePipes.hasOwnProperty(field)) {
14
+ return usePipes[field].transform(value);
15
+ }
16
+ return value !== null && value !== void 0 ? value : "";
17
+ }
18
+ function filterValid(v) {
19
+ return typeof v === "number" || AgroStringUtils.isValid(v);
20
+ }
21
+ return fields.map(mapField).filter(filterValid).join(` ${separator} `);
22
+ }
23
+ /** Resolve um caminho tipo "empresa.cargo" dentro de um objeto */
24
+ static resolvePath(obj, path) {
25
+ function reducer(acc, key) {
26
+ return acc === null || acc === void 0 ? void 0 : acc[key];
27
+ }
28
+ return path.split(".").reduce(reducer, obj);
29
+ }
30
+ }
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1vYmplY3Qtc3RyaW5naWZpZXIuY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9hZ3JvLW9iamVjdC1zdHJpbmdpZmllci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFNNUQsTUFBTSxPQUFPLHFCQUFxQjtJQUM5Qjs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQWlCLEVBQUUsTUFBZ0IsRUFBRSxHQUFRLEVBQUUsUUFBbUI7UUFDbEYsU0FBUyxRQUFRLENBQUMsS0FBYTtZQUMzQixNQUFNLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVELElBQUksUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLGNBQWMsQ0FBQyxLQUFLLEdBQUc7Z0JBQ2pDLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMzQztZQUNELE9BQU8sS0FBSyxhQUFMLEtBQUssY0FBTCxLQUFLLEdBQUksRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxTQUFTLFdBQVcsQ0FBQyxDQUFrQjtZQUNuQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELGtFQUFrRTtJQUMxRCxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQVEsRUFBRSxJQUFZO1FBQzdDLFNBQVMsT0FBTyxDQUFDLEdBQVEsRUFBRSxHQUFXO1lBQ2xDLE9BQU8sR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFHLEdBQUcsRUFBRTtRQUN0QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZVRyYW5zZm9ybSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFncm9TdHJpbmdVdGlscyB9IGZyb20gXCIuL2Fncm8tc3RyaW5nLXV0aWxzLmNsYXNzXCI7XHJcblxyXG5leHBvcnQgdHlwZSBVc2VQaXBlcyA9IHtcclxuICAgIFtrZXk6IHN0cmluZ106IFBpcGVUcmFuc2Zvcm07XHJcbn07XHJcblxyXG5leHBvcnQgY2xhc3MgQWdyb09iamVjdFN0cmluZ2lmaWVyIHtcclxuICAgIC8qKlxyXG4gICAgICogRm9ybWF0YSB1bSBvYmpldG8gY29uY2F0ZW5hbmRvIHZhbG9yZXMgc2VndW5kbyBhcyBjaGF2ZXMgZSBwaXBlcyBpbmZvcm1hZG9zLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBzZXBhcmF0b3IgU2VwYXJhZG9yIGVudHJlIG9zIHZhbG9yZXMgKGV4OiBcIi1cIilcclxuICAgICAqIEBwYXJhbSBmaWVsZHMgQ2FtcG9zIGEgZXh0cmFpci4gUG9kZW0gY29udGVyIHN1YnByb3ByaWVkYWRlcyAoXCJwcm9wcmllZGFkZS5zdWJQcm9wcmllZGFkZVwiKSBlIHBpcGVzIChcInByb3ByaWVkYWRlfG5vbWVEYVBpcGU6YXJnMTphcmcyXCIpXHJcbiAgICAgKiBAcGFyYW0gb2JqIE9iamV0byBvcmlnZW1cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGZvcm1hdE9iamVjdChzZXBhcmF0b3I6IHN0cmluZywgZmllbGRzOiBzdHJpbmdbXSwgb2JqOiBhbnksIHVzZVBpcGVzPzogVXNlUGlwZXMpOiBzdHJpbmcge1xyXG4gICAgICAgIGZ1bmN0aW9uIG1hcEZpZWxkKGZpZWxkOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IEFncm9PYmplY3RTdHJpbmdpZmllci5yZXNvbHZlUGF0aChvYmosIGZpZWxkKTtcclxuICAgICAgICAgICAgaWYgKHVzZVBpcGVzPy5oYXNPd25Qcm9wZXJ0eShmaWVsZCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB1c2VQaXBlc1tmaWVsZF0udHJhbnNmb3JtKHZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgPz8gXCJcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGZpbHRlclZhbGlkKHY6IHN0cmluZyB8IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIHYgPT09IFwibnVtYmVyXCIgfHwgQWdyb1N0cmluZ1V0aWxzLmlzVmFsaWQodik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmllbGRzLm1hcChtYXBGaWVsZCkuZmlsdGVyKGZpbHRlclZhbGlkKS5qb2luKGAgJHtzZXBhcmF0b3J9IGApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBSZXNvbHZlIHVtIGNhbWluaG8gdGlwbyBcImVtcHJlc2EuY2FyZ29cIiBkZW50cm8gZGUgdW0gb2JqZXRvICovXHJcbiAgICBwcml2YXRlIHN0YXRpYyByZXNvbHZlUGF0aChvYmo6IGFueSwgcGF0aDogc3RyaW5nKTogYW55IHtcclxuICAgICAgICBmdW5jdGlvbiByZWR1Y2VyKGFjYzogYW55LCBrZXk6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhY2M/LltrZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGF0aC5zcGxpdChcIi5cIikucmVkdWNlKHJlZHVjZXIsIG9iaik7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -12,7 +12,7 @@ export class AgroPlatformUtils {
12
12
  * @returns
13
13
  */
14
14
  static getCurrentTenant() {
15
- const tenant = AgroPlatformUtils.getTokenField('tenantName');
15
+ const tenant = AgroPlatformUtils.getTokenField("tenantName");
16
16
  if (tenant) {
17
17
  return tenant;
18
18
  }
@@ -24,17 +24,18 @@ export class AgroPlatformUtils {
24
24
  * @returns
25
25
  */
26
26
  static getCurrentTenantLocale() {
27
- const locale = AgroPlatformUtils.getTokenField('locale');
27
+ const locale = AgroPlatformUtils.getTokenField("locale");
28
28
  if (locale) {
29
29
  return locale;
30
30
  }
31
- throw new Error(`Cookie: "${COOKIE_TOKEN}" não encontrado.`);
31
+ throw new Error(`'locale' não encontrado para o tenant atual.`);
32
32
  }
33
33
  /**
34
34
  * @deprecated Use getCurrentTenantLocale()
35
35
  * Mantido por compatibilidade retroativa.
36
36
  */
37
37
  static getCurrenTenantLocale() {
38
+ // legacy typo retained
38
39
  return AgroPlatformUtils.getCurrentTenantLocale();
39
40
  }
40
41
  /**
@@ -43,7 +44,7 @@ export class AgroPlatformUtils {
43
44
  * @returns string || null
44
45
  */
45
46
  static getCurrentUserName() {
46
- const name = AgroPlatformUtils.getTokenField('fullName');
47
+ const name = AgroPlatformUtils.getTokenField("fullName");
47
48
  return name || null;
48
49
  }
49
50
  /**
@@ -52,7 +53,7 @@ export class AgroPlatformUtils {
52
53
  * @returns string
53
54
  */
54
55
  static getCurrentUserEmail() {
55
- const email = AgroPlatformUtils.getTokenField('email');
56
+ const email = AgroPlatformUtils.getTokenField("email");
56
57
  if (!email) {
57
58
  console.info(`Cookie: "${COOKIE_TOKEN}" não encontrado.`);
58
59
  }
@@ -87,7 +88,7 @@ export class AgroPlatformUtils {
87
88
  * Caso contrário, retorna uma instância de Error
88
89
  */
89
90
  static getCurrentAccessToken() {
90
- const token = AgroPlatformUtils.getTokenField('access_token');
91
+ const token = AgroPlatformUtils.getTokenField("access_token");
91
92
  if (!token) {
92
93
  console.info(`Cookie: "${COOKIE_TOKEN}" não encontrado.`);
93
94
  }
@@ -105,4 +106,4 @@ export class AgroPlatformUtils {
105
106
  return obj[field];
106
107
  }
107
108
  }
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1wbGF0Zm9ybS11dGlscy5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tbW9uL2Fncm8tcGxhdGZvcm0tdXRpbHMuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV4RCx3QkFBd0I7QUFDeEIsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUM7QUFDeEMsTUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUM7QUFDOUMsTUFBTSxtQkFBbUIsR0FBRyx5QkFBeUIsQ0FBQztBQUV0RCxPQUFPLEVBQUMsaUJBQWlCLElBQUksR0FBRyxFQUFFLGlCQUFpQixJQUFJLGFBQWEsRUFBQyxDQUFDO0FBRXRFLE1BQU0sT0FBTyxpQkFBaUI7SUFFMUI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0I7UUFDbkIsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdELElBQUksTUFBTSxFQUFFO1lBQ1IsT0FBTyxNQUFNLENBQUM7U0FDakI7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksWUFBWSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLHNCQUFzQjtRQUN6QixNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekQsSUFBSSxNQUFNLEVBQUU7WUFDUixPQUFPLE1BQU0sQ0FBQztTQUNqQjtRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxZQUFZLG1CQUFtQixDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxxQkFBcUI7UUFDeEIsT0FBTyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLGtCQUFrQjtRQUNyQixNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekQsT0FBTyxJQUFJLElBQUksSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLG1CQUFtQjtRQUN0QixNQUFNLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxZQUFZLG1CQUFtQixDQUFDLENBQUM7U0FDN0Q7UUFDRCxPQUFPLEtBQUssSUFBSSxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsVUFBVTtRQUNiLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDMUQsSUFBSSxNQUFNLEVBQUU7WUFDUixPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLGVBQWUsbUJBQW1CLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxjQUFjO1FBQ2pCLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUM5RCxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEMsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNyQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxtQkFBbUIsbUJBQW1CLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLHFCQUFxQjtRQUN4QixNQUFNLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxZQUFZLG1CQUFtQixDQUFDLENBQUM7U0FDN0Q7UUFDRCxPQUFPLEtBQUssSUFBSSxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFhO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU8sU0FBUyxDQUFDO1NBQ3BCO1FBQ0QsTUFBTSxHQUFHLEdBQUcsZUFBZSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5RCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QixDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZ3JvQ29va2llVXRpbHMgfSBmcm9tIFwiLi9hZ3JvLWNvb2tpZS11dGlscy5jbGFzc1wiO1xyXG5pbXBvcnQgeyBBZ3JvT2JqZWN0VXRpbHMgfSBmcm9tIFwiLi9hZ3JvLW9iamVjdC11dGlscy5jbGFzc1wiO1xyXG5pbXBvcnQgeyBTdHJpbmdVdGlscyB9IGZyb20gXCIuL2Fncm8tc3RyaW5nLXV0aWxzLmNsYXNzXCI7XHJcblxyXG4vLyBDb29raWUgbmFtZSBjb25zdGFudHNcclxuY29uc3QgQ09PS0lFX1RPS0VOID0gJ2NvbS5zZW5pb3IudG9rZW4nO1xyXG5jb25zdCBDT09LSUVfQkFTRV9VUkwgPSAnY29tLnNlbmlvci5iYXNlLnVybCc7XHJcbmNvbnN0IENPT0tJRV9TRVJWSUNFU19VUkwgPSAnY29tLnNlbmlvci5zZXJ2aWNlcy51cmwnO1xyXG5cclxuZXhwb3J0IHtBZ3JvUGxhdGZvcm1VdGlscyBhcyBBUFUsIEFncm9QbGF0Zm9ybVV0aWxzIGFzIFBsYXRmb3JtVXRpbHN9O1xyXG5cclxuZXhwb3J0IGNsYXNzIEFncm9QbGF0Zm9ybVV0aWxzIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldG9ybmEgbyB0ZW5hbnQgYXR1YWxcclxuICAgICAqIENhc28gY29udHLDoXJpbywgcmV0b3JuYSB1bWEgaW5zdMOibmNpYSBkZSBFcnJvclxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldEN1cnJlbnRUZW5hbnQoKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCB0ZW5hbnQgPSBBZ3JvUGxhdGZvcm1VdGlscy5nZXRUb2tlbkZpZWxkKCd0ZW5hbnROYW1lJyk7XHJcbiAgICAgICAgaWYgKHRlbmFudCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGVuYW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvb2tpZTogXCIke0NPT0tJRV9UT0tFTn1cIiBuw6NvIGVuY29udHJhZG8uYCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRvcm5hIG8gbG9jYWxlIGRvIHRlbmFudCBhdHVhbFxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRDdXJyZW50VGVuYW50TG9jYWxlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgbG9jYWxlID0gQWdyb1BsYXRmb3JtVXRpbHMuZ2V0VG9rZW5GaWVsZCgnbG9jYWxlJyk7XHJcbiAgICAgICAgaWYgKGxvY2FsZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvb2tpZTogXCIke0NPT0tJRV9UT0tFTn1cIiBuw6NvIGVuY29udHJhZG8uYCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgZ2V0Q3VycmVudFRlbmFudExvY2FsZSgpXHJcbiAgICAgKiBNYW50aWRvIHBvciBjb21wYXRpYmlsaWRhZGUgcmV0cm9hdGl2YS5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldEN1cnJlblRlbmFudExvY2FsZSgpOiBzdHJpbmcgeyAvLyBsZWdhY3kgdHlwbyByZXRhaW5lZFxyXG4gICAgICAgIHJldHVybiBBZ3JvUGxhdGZvcm1VdGlscy5nZXRDdXJyZW50VGVuYW50TG9jYWxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRvcm5hIG8gdXN1w6FyaW8gbG9nYWRvXHJcbiAgICAgKiBDYXNvIGNvbnRyw6FyaW8sIHJldG9ybmEgdW1hIGluc3TDom5jaWEgZGUgRXJyb3JcclxuICAgICAqIEByZXR1cm5zIHN0cmluZyB8fCBudWxsXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRDdXJyZW50VXNlck5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IEFncm9QbGF0Zm9ybVV0aWxzLmdldFRva2VuRmllbGQoJ2Z1bGxOYW1lJyk7XHJcbiAgICAgICAgcmV0dXJuIG5hbWUgfHwgbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldG9ybmEgbyBlLW1haWwgZG8gdXN1w6FyaW8gbG9nYWRvXHJcbiAgICAgKiBDYXNvIGNvbnRyw6FyaW8sIHJldG9ybmEgdW1hIGluc3TDom5jaWEgZGUgRXJyb3JcclxuICAgICAqIEByZXR1cm5zIHN0cmluZ1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2V0Q3VycmVudFVzZXJFbWFpbCgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBjb25zdCBlbWFpbCA9IEFncm9QbGF0Zm9ybVV0aWxzLmdldFRva2VuRmllbGQoJ2VtYWlsJyk7XHJcbiAgICAgICAgaWYgKCFlbWFpbCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmluZm8oYENvb2tpZTogXCIke0NPT0tJRV9UT0tFTn1cIiBuw6NvIGVuY29udHJhZG8uYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBlbWFpbCB8fCBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0b3JuYSB1bWEgc3RyaW5nIGNvbSBhIGJhc2VVUkwgYXR1YWxcclxuICAgICAqIENhc28gY29udHLDoXJpbywgcmV0b3JuYSB1bWEgaW5zdMOibmNpYSBkZSBFcnJvclxyXG4gICAgICogQGV4YW1wbGUgXCJodHRwczovL2Nsb3VkLWxlYWYuc2VuaW9yLmNvbS5iclwiIHx8IFwiaHR0cHM6Ly9wbGF0Zm9ybS5zZW5pb3IuY29tLmJyXCJcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldEJhc2VVUkwoKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBjb29raWUgPSBBZ3JvQ29va2llVXRpbHMuZ2V0Q29va2llKENPT0tJRV9CQVNFX1VSTCk7XHJcbiAgICAgICAgaWYgKGNvb2tpZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGNvb2tpZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29va2llOiBcIiR7Q09PS0lFX0JBU0VfVVJMfVwiIG7Do28gZW5jb250cmFkby5gKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldG9ybmEgdW1hIHN0cmluZyBjb20gYSBVUkwgZG9zIHNlcnZpw6dvc1xyXG4gICAgICogQ2FzbyBjb250csOhcmlvLCByZXRvcm5hIHVtYSBpbnN0w6JuY2lhIGRlIEVycm9yXHJcbiAgICAgKiBAZXhhbXBsZSBcImh0dHBzOi8vY2xvdWQtbGVhZi5zZW5pb3IuY29tLmJyL3Qvc2VuaW9yLmNvbS5ici9icmlkZ2UvMS4wL1wiXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRTZXJ2aWNlc1VSTCgpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGNvb2tpZSA9IEFncm9Db29raWVVdGlscy5nZXRDb29raWUoQ09PS0lFX1NFUlZJQ0VTX1VSTCk7XHJcbiAgICAgICAgaWYgKFN0cmluZ1V0aWxzLmlzTm90RW1wdHkoY29va2llKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGNvb2tpZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29va2llOiBcIiR7Q09PS0lFX1NFUlZJQ0VTX1VSTH1cIiBuw6NvIGVuY29udHJhZG8uYCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRvcm5hIHVtYSBzdHJpbmcgY29tIG8gdG9rZW4gZGUgYWNlc3NvIGF0dWFsXHJcbiAgICAgKiBDYXNvIGNvbnRyw6FyaW8sIHJldG9ybmEgdW1hIGluc3TDom5jaWEgZGUgRXJyb3JcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldEN1cnJlbnRBY2Nlc3NUb2tlbigpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBjb25zdCB0b2tlbiA9IEFncm9QbGF0Zm9ybVV0aWxzLmdldFRva2VuRmllbGQoJ2FjY2Vzc190b2tlbicpO1xyXG4gICAgICAgIGlmICghdG9rZW4pIHtcclxuICAgICAgICAgICAgY29uc29sZS5pbmZvKGBDb29raWU6IFwiJHtDT09LSUVfVE9LRU59XCIgbsOjbyBlbmNvbnRyYWRvLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdG9rZW4gfHwgbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBwYXJhIGV4dHJhaXIgdW0gY2FtcG8gZG8gY29va2llIGRlIHRva2VuLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN0YXRpYyBnZXRUb2tlbkZpZWxkKGZpZWxkOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IGNvb2tpZSA9IEFncm9Db29raWVVdGlscy5nZXRDb29raWUoQ09PS0lFX1RPS0VOKTtcclxuICAgICAgICBpZiAoIWNvb2tpZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBvYmogPSBBZ3JvQ29va2llVXRpbHMucGFyc2VDb29raWVUb09iamVjdChjb29raWUsIHRydWUpO1xyXG4gICAgICAgIHJldHVybiBvYmpbZmllbGRdO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1wbGF0Zm9ybS11dGlscy5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tbW9uL2Fncm8tcGxhdGZvcm0tdXRpbHMuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV4RCx3QkFBd0I7QUFDeEIsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUM7QUFDeEMsTUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUM7QUFDOUMsTUFBTSxtQkFBbUIsR0FBRyx5QkFBeUIsQ0FBQztBQUV0RCxPQUFPLEVBQUMsaUJBQWlCLElBQUksR0FBRyxFQUFFLGlCQUFpQixJQUFJLGFBQWEsRUFBQyxDQUFDO0FBRXRFLE1BQU0sT0FBTyxpQkFBaUI7SUFDMUI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0I7UUFDbkIsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdELElBQUksTUFBTSxFQUFFO1lBQ1IsT0FBTyxNQUFNLENBQUM7U0FDakI7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksWUFBWSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLHNCQUFzQjtRQUN6QixNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekQsSUFBSSxNQUFNLEVBQUU7WUFDUixPQUFPLE1BQU0sQ0FBQztTQUNqQjtRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLHFCQUFxQjtRQUN4Qix1QkFBdUI7UUFDdkIsT0FBTyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLGtCQUFrQjtRQUNyQixNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekQsT0FBTyxJQUFJLElBQUksSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLG1CQUFtQjtRQUN0QixNQUFNLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxZQUFZLG1CQUFtQixDQUFDLENBQUM7U0FDN0Q7UUFDRCxPQUFPLEtBQUssSUFBSSxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsVUFBVTtRQUNiLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDMUQsSUFBSSxNQUFNLEVBQUU7WUFDUixPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLGVBQWUsbUJBQW1CLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxjQUFjO1FBQ2pCLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUM5RCxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEMsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNyQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxtQkFBbUIsbUJBQW1CLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLHFCQUFxQjtRQUN4QixNQUFNLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxZQUFZLG1CQUFtQixDQUFDLENBQUM7U0FDN0Q7UUFDRCxPQUFPLEtBQUssSUFBSSxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFhO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU8sU0FBUyxDQUFDO1NBQ3BCO1FBQ0QsTUFBTSxHQUFHLEdBQUcsZUFBZSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5RCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZ3JvQ29va2llVXRpbHMgfSBmcm9tIFwiLi9hZ3JvLWNvb2tpZS11dGlscy5jbGFzc1wiO1xyXG5pbXBvcnQgeyBBZ3JvT2JqZWN0VXRpbHMgfSBmcm9tIFwiLi9hZ3JvLW9iamVjdC11dGlscy5jbGFzc1wiO1xyXG5pbXBvcnQgeyBTdHJpbmdVdGlscyB9IGZyb20gXCIuL2Fncm8tc3RyaW5nLXV0aWxzLmNsYXNzXCI7XHJcblxyXG4vLyBDb29raWUgbmFtZSBjb25zdGFudHNcclxuY29uc3QgQ09PS0lFX1RPS0VOID0gJ2NvbS5zZW5pb3IudG9rZW4nO1xyXG5jb25zdCBDT09LSUVfQkFTRV9VUkwgPSAnY29tLnNlbmlvci5iYXNlLnVybCc7XHJcbmNvbnN0IENPT0tJRV9TRVJWSUNFU19VUkwgPSAnY29tLnNlbmlvci5zZXJ2aWNlcy51cmwnO1xyXG5cclxuZXhwb3J0IHtBZ3JvUGxhdGZvcm1VdGlscyBhcyBBUFUsIEFncm9QbGF0Zm9ybVV0aWxzIGFzIFBsYXRmb3JtVXRpbHN9O1xyXG5cclxuZXhwb3J0IGNsYXNzIEFncm9QbGF0Zm9ybVV0aWxzIHtcclxuICAgIC8qKlxyXG4gICAgICogUmV0b3JuYSBvIHRlbmFudCBhdHVhbFxyXG4gICAgICogQ2FzbyBjb250csOhcmlvLCByZXRvcm5hIHVtYSBpbnN0w6JuY2lhIGRlIEVycm9yXHJcbiAgICAgKiBAcmV0dXJuc1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2V0Q3VycmVudFRlbmFudCgpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHRlbmFudCA9IEFncm9QbGF0Zm9ybVV0aWxzLmdldFRva2VuRmllbGQoXCJ0ZW5hbnROYW1lXCIpO1xyXG4gICAgICAgIGlmICh0ZW5hbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRlbmFudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb29raWU6IFwiJHtDT09LSUVfVE9LRU59XCIgbsOjbyBlbmNvbnRyYWRvLmApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0b3JuYSBvIGxvY2FsZSBkbyB0ZW5hbnQgYXR1YWxcclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJuc1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2V0Q3VycmVudFRlbmFudExvY2FsZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGxvY2FsZSA9IEFncm9QbGF0Zm9ybVV0aWxzLmdldFRva2VuRmllbGQoXCJsb2NhbGVcIik7XHJcbiAgICAgICAgaWYgKGxvY2FsZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCdsb2NhbGUnIG7Do28gZW5jb250cmFkbyBwYXJhIG8gdGVuYW50IGF0dWFsLmApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIGdldEN1cnJlbnRUZW5hbnRMb2NhbGUoKVxyXG4gICAgICogTWFudGlkbyBwb3IgY29tcGF0aWJpbGlkYWRlIHJldHJvYXRpdmEuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRDdXJyZW5UZW5hbnRMb2NhbGUoKTogc3RyaW5nIHtcclxuICAgICAgICAvLyBsZWdhY3kgdHlwbyByZXRhaW5lZFxyXG4gICAgICAgIHJldHVybiBBZ3JvUGxhdGZvcm1VdGlscy5nZXRDdXJyZW50VGVuYW50TG9jYWxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRvcm5hIG8gdXN1w6FyaW8gbG9nYWRvXHJcbiAgICAgKiBDYXNvIGNvbnRyw6FyaW8sIHJldG9ybmEgdW1hIGluc3TDom5jaWEgZGUgRXJyb3JcclxuICAgICAqIEByZXR1cm5zIHN0cmluZyB8fCBudWxsXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRDdXJyZW50VXNlck5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IEFncm9QbGF0Zm9ybVV0aWxzLmdldFRva2VuRmllbGQoXCJmdWxsTmFtZVwiKTtcclxuICAgICAgICByZXR1cm4gbmFtZSB8fCBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0b3JuYSBvIGUtbWFpbCBkbyB1c3XDoXJpbyBsb2dhZG9cclxuICAgICAqIENhc28gY29udHLDoXJpbywgcmV0b3JuYSB1bWEgaW5zdMOibmNpYSBkZSBFcnJvclxyXG4gICAgICogQHJldHVybnMgc3RyaW5nXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRDdXJyZW50VXNlckVtYWlsKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IGVtYWlsID0gQWdyb1BsYXRmb3JtVXRpbHMuZ2V0VG9rZW5GaWVsZChcImVtYWlsXCIpO1xyXG4gICAgICAgIGlmICghZW1haWwpIHtcclxuICAgICAgICAgICAgY29uc29sZS5pbmZvKGBDb29raWU6IFwiJHtDT09LSUVfVE9LRU59XCIgbsOjbyBlbmNvbnRyYWRvLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZW1haWwgfHwgbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldG9ybmEgdW1hIHN0cmluZyBjb20gYSBiYXNlVVJMIGF0dWFsXHJcbiAgICAgKiBDYXNvIGNvbnRyw6FyaW8sIHJldG9ybmEgdW1hIGluc3TDom5jaWEgZGUgRXJyb3JcclxuICAgICAqIEBleGFtcGxlIFwiaHR0cHM6Ly9jbG91ZC1sZWFmLnNlbmlvci5jb20uYnJcIiB8fCBcImh0dHBzOi8vcGxhdGZvcm0uc2VuaW9yLmNvbS5iclwiXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRCYXNlVVJMKCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgY29va2llID0gQWdyb0Nvb2tpZVV0aWxzLmdldENvb2tpZShDT09LSUVfQkFTRV9VUkwpO1xyXG4gICAgICAgIGlmIChjb29raWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChjb29raWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvb2tpZTogXCIke0NPT0tJRV9CQVNFX1VSTH1cIiBuw6NvIGVuY29udHJhZG8uYCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRvcm5hIHVtYSBzdHJpbmcgY29tIGEgVVJMIGRvcyBzZXJ2acOnb3NcclxuICAgICAqIENhc28gY29udHLDoXJpbywgcmV0b3JuYSB1bWEgaW5zdMOibmNpYSBkZSBFcnJvclxyXG4gICAgICogQGV4YW1wbGUgXCJodHRwczovL2Nsb3VkLWxlYWYuc2VuaW9yLmNvbS5ici90L3Nlbmlvci5jb20uYnIvYnJpZGdlLzEuMC9cIlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2V0U2VydmljZXNVUkwoKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBjb29raWUgPSBBZ3JvQ29va2llVXRpbHMuZ2V0Q29va2llKENPT0tJRV9TRVJWSUNFU19VUkwpO1xyXG4gICAgICAgIGlmIChTdHJpbmdVdGlscy5pc05vdEVtcHR5KGNvb2tpZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChjb29raWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvb2tpZTogXCIke0NPT0tJRV9TRVJWSUNFU19VUkx9XCIgbsOjbyBlbmNvbnRyYWRvLmApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0b3JuYSB1bWEgc3RyaW5nIGNvbSBvIHRva2VuIGRlIGFjZXNzbyBhdHVhbFxyXG4gICAgICogQ2FzbyBjb250csOhcmlvLCByZXRvcm5hIHVtYSBpbnN0w6JuY2lhIGRlIEVycm9yXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRDdXJyZW50QWNjZXNzVG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgY29uc3QgdG9rZW4gPSBBZ3JvUGxhdGZvcm1VdGlscy5nZXRUb2tlbkZpZWxkKFwiYWNjZXNzX3Rva2VuXCIpO1xyXG4gICAgICAgIGlmICghdG9rZW4pIHtcclxuICAgICAgICAgICAgY29uc29sZS5pbmZvKGBDb29raWU6IFwiJHtDT09LSUVfVE9LRU59XCIgbsOjbyBlbmNvbnRyYWRvLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdG9rZW4gfHwgbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBwYXJhIGV4dHJhaXIgdW0gY2FtcG8gZG8gY29va2llIGRlIHRva2VuLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN0YXRpYyBnZXRUb2tlbkZpZWxkKGZpZWxkOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IGNvb2tpZSA9IEFncm9Db29raWVVdGlscy5nZXRDb29raWUoQ09PS0lFX1RPS0VOKTtcclxuICAgICAgICBpZiAoIWNvb2tpZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBvYmogPSBBZ3JvQ29va2llVXRpbHMucGFyc2VDb29raWVUb09iamVjdChjb29raWUsIHRydWUpO1xyXG4gICAgICAgIHJldHVybiBvYmpbZmllbGRdO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -148,6 +148,9 @@ export const AGRO_REGEX = {
148
148
  * Validação de Placa de Veículo Antiga
149
149
  * Formato: AAA-0000
150
150
  */
151
- isOldLicensePlate: /^[A-Z]{3}[0-9]{4}$/
151
+ isOldLicensePlate: /^[A-Z]{3}\d{4}$/,
152
+ isISODate: /^\d{4}-\d{2}-\d{2}$/,
153
+ isISOTime: /^\d{2}:\d{2}:\d{2}$/,
154
+ isISODateTime: /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z$/,
152
155
  };
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1yZWdleC5jb25zdGFudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tbW9uL2Fncm8tcmVnZXguY29uc3RhbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3RCOztPQUVHO0lBQ0gsT0FBTyxFQUFFLDRCQUE0QjtJQUVyQzs7T0FFRztJQUNILGVBQWUsRUFBRSxZQUFZO0lBRTdCOztPQUVHO0lBQ0gsZUFBZSxFQUFFLGFBQWE7SUFFOUI7O09BRUc7SUFDSCxlQUFlLEVBQUUsT0FBTztJQUV4Qjs7T0FFRztJQUNILE9BQU8sRUFBRSx1QkFBdUI7SUFFaEM7O09BRUc7SUFDSCxRQUFRLEVBQUUsV0FBVztJQUVyQjs7T0FFRztJQUNILE1BQU0sRUFBRSw0RkFBNEY7SUFFcEc7O09BRUc7SUFDSCxRQUFRLEVBQUUsU0FBUztJQUVuQjs7T0FFRztJQUNILFNBQVMsRUFBRSxhQUFhO0lBRXhCOztPQUVHO0lBQ0gsY0FBYyxFQUFFLHNDQUFzQztJQUV0RDs7T0FFRztJQUNILGFBQWEsRUFBRSx3QkFBd0I7SUFFdkM7O09BRUc7SUFDSCxNQUFNLEVBQUUscUJBQXFCO0lBRTdCOztPQUVHO0lBQ0gsTUFBTSxFQUFFLDRCQUE0QjtJQUVwQzs7T0FFRztJQUNILFVBQVUsRUFBRSw4Q0FBOEM7SUFFMUQ7O09BRUc7SUFDSCxLQUFLLEVBQUUsd0RBQXdEO0lBRS9EOztPQUVHO0lBQ0gsV0FBVyxFQUFFLGdCQUFnQjtJQUU3Qjs7T0FFRztJQUNILFFBQVEsRUFBRSx3QkFBd0I7SUFFbEM7O09BRUc7SUFDSCxVQUFVLEVBQUUsWUFBWTtJQUV4Qjs7T0FFRztJQUNILGNBQWMsRUFBRSxnQkFBZ0I7SUFFaEM7O09BRUc7SUFDSCxNQUFNLEVBQUUsY0FBYztJQUV0Qjs7T0FFRztJQUNILFlBQVksRUFBRSwyQkFBMkI7SUFFekM7O09BRUc7SUFDSCxhQUFhLEVBQUUsZ0JBQWdCO0lBRS9COztPQUVHO0lBQ0gsVUFBVSxFQUFFLG1CQUFtQjtJQUUvQjs7T0FFRztJQUNILFlBQVksRUFBRSx5Q0FBeUM7SUFFdkQ7O09BRUc7SUFDSCxTQUFTLEVBQUUsMkNBQTJDO0lBRXREOztPQUVHO0lBQ0gsb0JBQW9CLEVBQUUsdUJBQXVCO0lBRTdDOztPQUVHO0lBQ0gsZ0JBQWdCLEVBQUUsc0VBQXNFO0lBRXhGOztPQUVHO0lBQ0gsWUFBWSxFQUFFLGFBQWE7SUFFM0I7O09BRUc7SUFDSCxZQUFZLEVBQUUsbUNBQW1DO0lBRWpEOztPQUVHO0lBQ0gsVUFBVSxFQUFFLHFDQUFxQztJQUVqRDs7T0FFRztJQUNILFdBQVcsRUFBRSxxREFBcUQ7SUFFbEU7O09BRUc7SUFDSCxZQUFZLEVBQUUsMkNBQTJDO0lBRXpEOztPQUVHO0lBQ0gsc0JBQXNCLEVBQUUsMEJBQTBCO0lBRWxEOztPQUVHO0lBQ0gsS0FBSyxFQUFFLHFCQUFxQjtJQUU1Qjs7T0FFRztJQUNILGdCQUFnQixFQUFFLFVBQVU7SUFFNUI7OztPQUdHO0lBQ0gsc0JBQXNCLEVBQUUsb0NBQW9DO0lBRzVEOzs7T0FHRztJQUNILGlCQUFpQixFQUFFLG9CQUFvQjtDQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFHUk9fUkVHRVggPSB7XHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIEUtbWFpbFxyXG4gICAgICovXHJcbiAgICBpc0VtYWlsOiAvXlteXFxzQF0rQFteXFxzQF0rXFwuW15cXHNAXSskLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm9zIEludGVpcm9zIFBvc2l0aXZvc1xyXG4gICAgICovXHJcbiAgICBwb3NpdGl2ZUludGVnZXI6IC9eWzEtOV1cXGQqJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBOw7ptZXJvcyBEZWNpbWFpcyBQb3NpdGl2b3NcclxuICAgICAqL1xyXG4gICAgcG9zaXRpdmVEZWNpbWFsOiAvXlxcZCpcXC4/XFxkKyQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgc3RyaW5nIHF1ZSBjb25zaXN0ZSBhcGVuYXMgZW0gZXNwYcOnb3MgZW0gYnJhbmNvIG91IGVzdMOhIHZhemlhLlxyXG4gICAgICovXHJcbiAgICBvbmx5QmxhbmtTcGFjZXM6IC9eXFxzKiQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgQ0VQIChDw7NkaWdvIFBvc3RhbClcclxuICAgICAqL1xyXG4gICAgemlwQ29kZTogL15cXGR7OH0kfF5cXGR7NX0tXFxkezN9JC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBTdHJpbmcgKHF1YWxxdWVyIGNhcmFjdGVyZSlcclxuICAgICAqL1xyXG4gICAgaXNTdHJpbmc6IC9eW1xcc1xcU10qJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBVVUlEXHJcbiAgICAgKi9cclxuICAgIGlzVVVJRDogL15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMS01XVswLTlhLWZBLUZdezN9LVs4OWFiQUJdWzAtOWEtZkEtRl17M30tWzAtOWEtZkEtRl17MTJ9JC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBOw7ptZXJvXHJcbiAgICAgKi9cclxuICAgIGlzTnVtYmVyOiAvXi0/XFxkKyQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgTsO6bWVybyBEZWNpbWFsXHJcbiAgICAgKi9cclxuICAgIGlzRGVjaW1hbDogL15cXGQqXFwuP1xcZCskLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIFBsYWNhIGRlIFZlw61jdWxvXHJcbiAgICAgKi9cclxuICAgIGlzTGljZW5zZVBsYXRlOiAvXltBLVphLXowLTldezEsN30tP1tBLVphLXowLTldezEsN30kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm8gZGUgVGVsZWZvbmVcclxuICAgICAqL1xyXG4gICAgaXNQaG9uZU51bWJlcjogL15cXCs/XFxkezEsNH0tP1xcZHs2LDExfSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgRGF0YSAoRm9ybWF0byBZWVlZLU1NLUREKVxyXG4gICAgICovXHJcbiAgICBpc0RhdGU6IC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIEhvcmEgKEZvcm1hdG8gSEg6bW0pXHJcbiAgICAgKi9cclxuICAgIGlzVGltZTogL14oMFxcZHwxXFxkfDJbMC0zXSk6WzAtNV1cXGQkLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIERhdGEgZSBIb3JhIChGb3JtYXRvIFlZWVktTU0tREQgSEg6bW0pXHJcbiAgICAgKi9cclxuICAgIGlzRGF0ZVRpbWU6IC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0gKDBcXGR8MVxcZHwyWzAtM10pOlswLTVdXFxkJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBVUkxcclxuICAgICAqL1xyXG4gICAgaXNVUkw6IC9eKGh0dHB8aHR0cHMpOlxcL1xcLyhbXFx3LV0rXFwuKStbXFx3LV0rKFxcL1tcXHctIC4vPyUmPV0qKT8kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm8gSGV4YWRlY2ltYWxcclxuICAgICAqL1xyXG4gICAgaXNIZXhOdW1iZXI6IC9eWzAtOWEtZkEtRl0rJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBCYXNlNjRcclxuICAgICAqL1xyXG4gICAgaXNCYXNlNjQ6IC9eW2EtekEtWjAtOSsvXSs9ezAsMn0kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE5vbWUgZGUgVXN1w6FyaW8gKDMgYSAyMCBjYXJhY3RlcmVzIGFsZmFudW3DqXJpY29zKVxyXG4gICAgICovXHJcbiAgICBpc1VzZXJuYW1lOiAvXlxcd3szLDIwfSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgQWxmYW51bcOpcmljb1xyXG4gICAgICovXHJcbiAgICBpc0FscGhhbnVtZXJpYzogL15bYS16QS1aMC05XSskLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIFNsdWcgKGxldHJhcyBtaW7DunNjdWxhcywgbsO6bWVyb3MgZSB0cmHDp29zKVxyXG4gICAgICovXHJcbiAgICBpc1NsdWc6IC9eW2EtejAtOS1dKyQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgTsO6bWVybyBkZSBDYXJ0w6NvIGRlIENyw6lkaXRvXHJcbiAgICAgKi9cclxuICAgIGlzQ3JlZGl0Q2FyZDogL15cXGR7NH0tXFxkezR9LVxcZHs0fS1cXGR7NH0kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm8gSGV4YWRlY2ltYWxcclxuICAgICAqL1xyXG4gICAgaXNIZXhhZGVjaW1hbDogL15bMC05YS1mQS1GXSskLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE1vZWRhXHJcbiAgICAgKi9cclxuICAgIGlzQ3VycmVuY3k6IC9eXFxkKyhcXC5cXGR7MSwyfSk/JC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBQb3JjZW50YWdlbVxyXG4gICAgICovXHJcbiAgICBpc1BlcmNlbnRhZ2U6IC9eKDEwMChcXC4wezEsMn0pP3xbMS05XT9cXGQoXFwuXFxkezEsMn0pPykkLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIFRhZyBIVE1MIFNpbXBsZXNcclxuICAgICAqL1xyXG4gICAgaXNIVE1MVGFnOiAvXjwoW2Etel0rKShbXjxdKykqKD86PiguKik8XFwvXFwxPnxcXHMrXFwvPikkLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE5vbWUgZGUgVXN1w6FyaW8gY29tIEVzcGHDp29zICgzIGEgMjAgY2FyYWN0ZXJlcyBhbGZhbnVtw6lyaWNvcyBlIGVzcGHDp29zKVxyXG4gICAgICovXHJcbiAgICBpc1VzZXJuYW1lV2l0aFNwYWNlczogL15bYS16QS1aMC05XyBdezMsMjB9JC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBTZW5oYSBGb3J0ZSAobcOtbmltbyA4IGNhcmFjdGVyZXMsIHVtYSBsZXRyYSBtaW7DunNjdWxhLCB1bWEgbGV0cmEgbWFpw7pzY3VsYSwgdW0gbsO6bWVybyBlIHVtIGNhcmFjdGVyZSBlc3BlY2lhbClcclxuICAgICAqL1xyXG4gICAgaXNTdHJvbmdQYXNzd29yZDogL14oPz0uKlthLXpdKSg/PS4qW0EtWl0pKD89LipcXGQpKD89LipbQCQhJSo/Jl0pW0EtWmEtelxcZEAkISUqPyZdezgsfSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgU3RyaW5nIEFsZmFiw6l0aWNhXHJcbiAgICAgKi9cclxuICAgIGlzQWxwaGFiZXRpYzogL15bYS16QS1aXSskLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIEhvcmEgbm8gRm9ybWF0byBkZSAxMiBIb3Jhc1xyXG4gICAgICovXHJcbiAgICBpc1RpbWUxMkhvdXI6IC9eKDA/WzEtOV18MVswLTJdKTpcXGR7Mn0gKEFNfFBNKSQvaSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIExhdGl0dWRlXHJcbiAgICAgKi9cclxuICAgIGlzTGF0aXR1ZGU6IC9eWy0rXT8oWzEtOF0/XFxkKFxcLlxcZCspP3w5MChcXC4wKyk/KSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgTG9uZ2l0dWRlXHJcbiAgICAgKi9cclxuICAgIGlzTG9uZ2l0dWRlOiAvXlstK10/KDE4MChcXC4wKyk/fCgoMVswLTddXFxkKXwoWzEtOV0/XFxkKSkoXFwuXFxkKyk/KSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgRW5kZXJlw6dvIE1BQ1xyXG4gICAgICovXHJcbiAgICBpc01BQ0FkZHJlc3M6IC9eKFswLTlBLUZhLWZdezJ9WzotXSl7NX0oWzAtOUEtRmEtZl17Mn0pJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBEYXRhIGRlIEV4cGlyYcOnw6NvIGRlIENhcnTDo28gZGUgQ3LDqWRpdG9cclxuICAgICAqL1xyXG4gICAgaXNDcmVkaXRDYXJkRXhwaXJhdGlvbjogL14oMFsxLTldfDFbMC0yXSlcXC9cXGR7Mn0kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm8gZGUgU2VndXJvIFNvY2lhbCAoU1NOKVxyXG4gICAgICovXHJcbiAgICBpc1NTTjogL15cXGR7M30tXFxkezJ9LVxcZHs0fSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gc2UgdG9kb3Mgb3MgZMOtZ2l0b3Mgc8OjbyBpZ3VhaXNcclxuICAgICAqL1xyXG4gICAgaXNBbGxEaWdpdHNFcXVhbDogL14oLilcXDErJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBQbGFjYSBkZSBWZcOtY3VsbyBkbyBNZXJjb3N1bFxyXG4gICAgICogRm9ybWF0bzogQUJDMUQyM1xyXG4gICAgICovXHJcbiAgICBpc01lcmNvc3VsTGljZW5zZVBsYXRlOiAvXltBLVpdezN9WzAtOV17MX1bQS1aXXsxfVswLTldezJ9JC8sXHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgUGxhY2EgZGUgVmXDrWN1bG8gQW50aWdhXHJcbiAgICAgKiBGb3JtYXRvOiBBQUEtMDAwMFxyXG4gICAgICovXHJcbiAgICBpc09sZExpY2Vuc2VQbGF0ZTogL15bQS1aXXszfVswLTldezR9JC9cclxuICB9O1xyXG4iXX0=
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1yZWdleC5jb25zdGFudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tbW9uL2Fncm8tcmVnZXguY29uc3RhbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3RCOztPQUVHO0lBQ0gsT0FBTyxFQUFFLDRCQUE0QjtJQUVyQzs7T0FFRztJQUNILGVBQWUsRUFBRSxZQUFZO0lBRTdCOztPQUVHO0lBQ0gsZUFBZSxFQUFFLGFBQWE7SUFFOUI7O09BRUc7SUFDSCxlQUFlLEVBQUUsT0FBTztJQUV4Qjs7T0FFRztJQUNILE9BQU8sRUFBRSx1QkFBdUI7SUFFaEM7O09BRUc7SUFDSCxRQUFRLEVBQUUsV0FBVztJQUVyQjs7T0FFRztJQUNILE1BQU0sRUFBRSw0RkFBNEY7SUFFcEc7O09BRUc7SUFDSCxRQUFRLEVBQUUsU0FBUztJQUVuQjs7T0FFRztJQUNILFNBQVMsRUFBRSxhQUFhO0lBRXhCOztPQUVHO0lBQ0gsY0FBYyxFQUFFLHNDQUFzQztJQUV0RDs7T0FFRztJQUNILGFBQWEsRUFBRSx3QkFBd0I7SUFFdkM7O09BRUc7SUFDSCxNQUFNLEVBQUUscUJBQXFCO0lBRTdCOztPQUVHO0lBQ0gsTUFBTSxFQUFFLDRCQUE0QjtJQUVwQzs7T0FFRztJQUNILFVBQVUsRUFBRSw4Q0FBOEM7SUFFMUQ7O09BRUc7SUFDSCxLQUFLLEVBQUUsd0RBQXdEO0lBRS9EOztPQUVHO0lBQ0gsV0FBVyxFQUFFLGdCQUFnQjtJQUU3Qjs7T0FFRztJQUNILFFBQVEsRUFBRSx3QkFBd0I7SUFFbEM7O09BRUc7SUFDSCxVQUFVLEVBQUUsWUFBWTtJQUV4Qjs7T0FFRztJQUNILGNBQWMsRUFBRSxnQkFBZ0I7SUFFaEM7O09BRUc7SUFDSCxNQUFNLEVBQUUsY0FBYztJQUV0Qjs7T0FFRztJQUNILFlBQVksRUFBRSwyQkFBMkI7SUFFekM7O09BRUc7SUFDSCxhQUFhLEVBQUUsZ0JBQWdCO0lBRS9COztPQUVHO0lBQ0gsVUFBVSxFQUFFLG1CQUFtQjtJQUUvQjs7T0FFRztJQUNILFlBQVksRUFBRSx5Q0FBeUM7SUFFdkQ7O09BRUc7SUFDSCxTQUFTLEVBQUUsMkNBQTJDO0lBRXREOztPQUVHO0lBQ0gsb0JBQW9CLEVBQUUsdUJBQXVCO0lBRTdDOztPQUVHO0lBQ0gsZ0JBQWdCLEVBQUUsc0VBQXNFO0lBRXhGOztPQUVHO0lBQ0gsWUFBWSxFQUFFLGFBQWE7SUFFM0I7O09BRUc7SUFDSCxZQUFZLEVBQUUsbUNBQW1DO0lBRWpEOztPQUVHO0lBQ0gsVUFBVSxFQUFFLHFDQUFxQztJQUVqRDs7T0FFRztJQUNILFdBQVcsRUFBRSxxREFBcUQ7SUFFbEU7O09BRUc7SUFDSCxZQUFZLEVBQUUsMkNBQTJDO0lBRXpEOztPQUVHO0lBQ0gsc0JBQXNCLEVBQUUsMEJBQTBCO0lBRWxEOztPQUVHO0lBQ0gsS0FBSyxFQUFFLHFCQUFxQjtJQUU1Qjs7T0FFRztJQUNILGdCQUFnQixFQUFFLFVBQVU7SUFFNUI7OztPQUdHO0lBQ0gsc0JBQXNCLEVBQUUsb0NBQW9DO0lBRTVEOzs7T0FHRztJQUNILGlCQUFpQixFQUFFLGlCQUFpQjtJQUVwQyxTQUFTLEVBQUUscUJBQXFCO0lBQ2hDLFNBQVMsRUFBRSxxQkFBcUI7SUFDaEMsYUFBYSxFQUFFLGtEQUFrRDtDQUNwRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFHUk9fUkVHRVggPSB7XHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIEUtbWFpbFxyXG4gICAgICovXHJcbiAgICBpc0VtYWlsOiAvXlteXFxzQF0rQFteXFxzQF0rXFwuW15cXHNAXSskLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm9zIEludGVpcm9zIFBvc2l0aXZvc1xyXG4gICAgICovXHJcbiAgICBwb3NpdGl2ZUludGVnZXI6IC9eWzEtOV1cXGQqJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBOw7ptZXJvcyBEZWNpbWFpcyBQb3NpdGl2b3NcclxuICAgICAqL1xyXG4gICAgcG9zaXRpdmVEZWNpbWFsOiAvXlxcZCpcXC4/XFxkKyQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgc3RyaW5nIHF1ZSBjb25zaXN0ZSBhcGVuYXMgZW0gZXNwYcOnb3MgZW0gYnJhbmNvIG91IGVzdMOhIHZhemlhLlxyXG4gICAgICovXHJcbiAgICBvbmx5QmxhbmtTcGFjZXM6IC9eXFxzKiQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgQ0VQIChDw7NkaWdvIFBvc3RhbClcclxuICAgICAqL1xyXG4gICAgemlwQ29kZTogL15cXGR7OH0kfF5cXGR7NX0tXFxkezN9JC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBTdHJpbmcgKHF1YWxxdWVyIGNhcmFjdGVyZSlcclxuICAgICAqL1xyXG4gICAgaXNTdHJpbmc6IC9eW1xcc1xcU10qJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBVVUlEXHJcbiAgICAgKi9cclxuICAgIGlzVVVJRDogL15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMS01XVswLTlhLWZBLUZdezN9LVs4OWFiQUJdWzAtOWEtZkEtRl17M30tWzAtOWEtZkEtRl17MTJ9JC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBOw7ptZXJvXHJcbiAgICAgKi9cclxuICAgIGlzTnVtYmVyOiAvXi0/XFxkKyQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgTsO6bWVybyBEZWNpbWFsXHJcbiAgICAgKi9cclxuICAgIGlzRGVjaW1hbDogL15cXGQqXFwuP1xcZCskLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIFBsYWNhIGRlIFZlw61jdWxvXHJcbiAgICAgKi9cclxuICAgIGlzTGljZW5zZVBsYXRlOiAvXltBLVphLXowLTldezEsN30tP1tBLVphLXowLTldezEsN30kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm8gZGUgVGVsZWZvbmVcclxuICAgICAqL1xyXG4gICAgaXNQaG9uZU51bWJlcjogL15cXCs/XFxkezEsNH0tP1xcZHs2LDExfSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgRGF0YSAoRm9ybWF0byBZWVlZLU1NLUREKVxyXG4gICAgICovXHJcbiAgICBpc0RhdGU6IC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIEhvcmEgKEZvcm1hdG8gSEg6bW0pXHJcbiAgICAgKi9cclxuICAgIGlzVGltZTogL14oMFxcZHwxXFxkfDJbMC0zXSk6WzAtNV1cXGQkLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIERhdGEgZSBIb3JhIChGb3JtYXRvIFlZWVktTU0tREQgSEg6bW0pXHJcbiAgICAgKi9cclxuICAgIGlzRGF0ZVRpbWU6IC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0gKDBcXGR8MVxcZHwyWzAtM10pOlswLTVdXFxkJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBVUkxcclxuICAgICAqL1xyXG4gICAgaXNVUkw6IC9eKGh0dHB8aHR0cHMpOlxcL1xcLyhbXFx3LV0rXFwuKStbXFx3LV0rKFxcL1tcXHctIC4vPyUmPV0qKT8kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm8gSGV4YWRlY2ltYWxcclxuICAgICAqL1xyXG4gICAgaXNIZXhOdW1iZXI6IC9eWzAtOWEtZkEtRl0rJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBCYXNlNjRcclxuICAgICAqL1xyXG4gICAgaXNCYXNlNjQ6IC9eW2EtekEtWjAtOSsvXSs9ezAsMn0kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE5vbWUgZGUgVXN1w6FyaW8gKDMgYSAyMCBjYXJhY3RlcmVzIGFsZmFudW3DqXJpY29zKVxyXG4gICAgICovXHJcbiAgICBpc1VzZXJuYW1lOiAvXlxcd3szLDIwfSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgQWxmYW51bcOpcmljb1xyXG4gICAgICovXHJcbiAgICBpc0FscGhhbnVtZXJpYzogL15bYS16QS1aMC05XSskLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIFNsdWcgKGxldHJhcyBtaW7DunNjdWxhcywgbsO6bWVyb3MgZSB0cmHDp29zKVxyXG4gICAgICovXHJcbiAgICBpc1NsdWc6IC9eW2EtejAtOS1dKyQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgTsO6bWVybyBkZSBDYXJ0w6NvIGRlIENyw6lkaXRvXHJcbiAgICAgKi9cclxuICAgIGlzQ3JlZGl0Q2FyZDogL15cXGR7NH0tXFxkezR9LVxcZHs0fS1cXGR7NH0kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm8gSGV4YWRlY2ltYWxcclxuICAgICAqL1xyXG4gICAgaXNIZXhhZGVjaW1hbDogL15bMC05YS1mQS1GXSskLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE1vZWRhXHJcbiAgICAgKi9cclxuICAgIGlzQ3VycmVuY3k6IC9eXFxkKyhcXC5cXGR7MSwyfSk/JC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBQb3JjZW50YWdlbVxyXG4gICAgICovXHJcbiAgICBpc1BlcmNlbnRhZ2U6IC9eKDEwMChcXC4wezEsMn0pP3xbMS05XT9cXGQoXFwuXFxkezEsMn0pPykkLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIFRhZyBIVE1MIFNpbXBsZXNcclxuICAgICAqL1xyXG4gICAgaXNIVE1MVGFnOiAvXjwoW2Etel0rKShbXjxdKykqKD86PiguKik8XFwvXFwxPnxcXHMrXFwvPikkLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE5vbWUgZGUgVXN1w6FyaW8gY29tIEVzcGHDp29zICgzIGEgMjAgY2FyYWN0ZXJlcyBhbGZhbnVtw6lyaWNvcyBlIGVzcGHDp29zKVxyXG4gICAgICovXHJcbiAgICBpc1VzZXJuYW1lV2l0aFNwYWNlczogL15bYS16QS1aMC05XyBdezMsMjB9JC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBTZW5oYSBGb3J0ZSAobcOtbmltbyA4IGNhcmFjdGVyZXMsIHVtYSBsZXRyYSBtaW7DunNjdWxhLCB1bWEgbGV0cmEgbWFpw7pzY3VsYSwgdW0gbsO6bWVybyBlIHVtIGNhcmFjdGVyZSBlc3BlY2lhbClcclxuICAgICAqL1xyXG4gICAgaXNTdHJvbmdQYXNzd29yZDogL14oPz0uKlthLXpdKSg/PS4qW0EtWl0pKD89LipcXGQpKD89LipbQCQhJSo/Jl0pW0EtWmEtelxcZEAkISUqPyZdezgsfSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgU3RyaW5nIEFsZmFiw6l0aWNhXHJcbiAgICAgKi9cclxuICAgIGlzQWxwaGFiZXRpYzogL15bYS16QS1aXSskLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIEhvcmEgbm8gRm9ybWF0byBkZSAxMiBIb3Jhc1xyXG4gICAgICovXHJcbiAgICBpc1RpbWUxMkhvdXI6IC9eKDA/WzEtOV18MVswLTJdKTpcXGR7Mn0gKEFNfFBNKSQvaSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIExhdGl0dWRlXHJcbiAgICAgKi9cclxuICAgIGlzTGF0aXR1ZGU6IC9eWy0rXT8oWzEtOF0/XFxkKFxcLlxcZCspP3w5MChcXC4wKyk/KSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgTG9uZ2l0dWRlXHJcbiAgICAgKi9cclxuICAgIGlzTG9uZ2l0dWRlOiAvXlstK10/KDE4MChcXC4wKyk/fCgoMVswLTddXFxkKXwoWzEtOV0/XFxkKSkoXFwuXFxkKyk/KSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgRW5kZXJlw6dvIE1BQ1xyXG4gICAgICovXHJcbiAgICBpc01BQ0FkZHJlc3M6IC9eKFswLTlBLUZhLWZdezJ9WzotXSl7NX0oWzAtOUEtRmEtZl17Mn0pJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBEYXRhIGRlIEV4cGlyYcOnw6NvIGRlIENhcnTDo28gZGUgQ3LDqWRpdG9cclxuICAgICAqL1xyXG4gICAgaXNDcmVkaXRDYXJkRXhwaXJhdGlvbjogL14oMFsxLTldfDFbMC0yXSlcXC9cXGR7Mn0kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm8gZGUgU2VndXJvIFNvY2lhbCAoU1NOKVxyXG4gICAgICovXHJcbiAgICBpc1NTTjogL15cXGR7M30tXFxkezJ9LVxcZHs0fSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gc2UgdG9kb3Mgb3MgZMOtZ2l0b3Mgc8OjbyBpZ3VhaXNcclxuICAgICAqL1xyXG4gICAgaXNBbGxEaWdpdHNFcXVhbDogL14oLilcXDErJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBQbGFjYSBkZSBWZcOtY3VsbyBkbyBNZXJjb3N1bFxyXG4gICAgICogRm9ybWF0bzogQUJDMUQyM1xyXG4gICAgICovXHJcbiAgICBpc01lcmNvc3VsTGljZW5zZVBsYXRlOiAvXltBLVpdezN9WzAtOV17MX1bQS1aXXsxfVswLTldezJ9JC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBQbGFjYSBkZSBWZcOtY3VsbyBBbnRpZ2FcclxuICAgICAqIEZvcm1hdG86IEFBQS0wMDAwXHJcbiAgICAgKi9cclxuICAgIGlzT2xkTGljZW5zZVBsYXRlOiAvXltBLVpdezN9XFxkezR9JC8sXHJcblxyXG4gICAgaXNJU09EYXRlOiAvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9JC8sXHJcbiAgICBpc0lTT1RpbWU6IC9eXFxkezJ9OlxcZHsyfTpcXGR7Mn0kLyxcclxuICAgIGlzSVNPRGF0ZVRpbWU6IC9eXFxkezR9LVxcZHsyfS1cXGR7Mn1UXFxkezJ9OlxcZHsyfTpcXGR7Mn0oPzpcXC5cXGQrKT9aJC8sXHJcbn07XHJcbiJdfQ==
@@ -38,13 +38,19 @@ export class AgroStringUtils {
38
38
  */
39
39
  static isEmpty(str) {
40
40
  var _a;
41
- return !str || ((_a = str.trim()) === null || _a === void 0 ? void 0 : _a.length) === AGRO_NUMBERS.ZERO;
41
+ if (str && AgroStringUtils.isString(str)) {
42
+ return ((_a = str === null || str === void 0 ? void 0 : str.trim()) === null || _a === void 0 ? void 0 : _a.length) === AGRO_NUMBERS.ZERO;
43
+ }
44
+ return true;
42
45
  }
43
46
  /**
44
47
  * Verifica se a string não está vazia.
45
48
  */
46
49
  static isNotEmpty(str) {
47
- return !AgroStringUtils.isEmpty(str);
50
+ if (str && AgroStringUtils.isString(str)) {
51
+ return !AgroStringUtils.isEmpty(str);
52
+ }
53
+ return false;
48
54
  }
49
55
  /** Verifica se a string é nula, indefinida ou contém apenas espaços em branco */
50
56
  static isBlank(str) {
@@ -99,7 +105,7 @@ export class AgroStringUtils {
99
105
  return AGRO_REGEX.isUUID.test(str);
100
106
  }
101
107
  static isNumber(str) {
102
- return AGRO_REGEX.isNumber.test(str);
108
+ return [AGRO_REGEX.isNumber.test(str), AGRO_REGEX.isDecimal.test(str)].includes(true);
103
109
  }
104
110
  static validateCPF(cpf) {
105
111
  cpf = cpf.replace(/\D/g, "");
@@ -116,7 +122,7 @@ export class AgroStringUtils {
116
122
  };
117
123
  const digit1 = calcVerifier(cpf, AGRO_NUMBERS.NINE);
118
124
  const digit2 = calcVerifier(cpf, AGRO_NUMBERS.TEN);
119
- return digit1 === parseInt(cpf[AGRO_NUMBERS.NINE], AGRO_NUMBERS.TEN) && digit2 === parseInt(cpf[AGRO_NUMBERS.TEN], AGRO_NUMBERS.TEN);
125
+ return (digit1 === parseInt(cpf[AGRO_NUMBERS.NINE], AGRO_NUMBERS.TEN) && digit2 === parseInt(cpf[AGRO_NUMBERS.TEN], AGRO_NUMBERS.TEN));
120
126
  }
121
127
  /**
122
128
  * Detecta automaticamente se é CNPJ antigo ou novo formato.
@@ -159,7 +165,8 @@ export class AgroStringUtils {
159
165
  }
160
166
  resto = soma % AGRO_NUMBERS.ELEVEN;
161
167
  const digito2 = resto < AGRO_NUMBERS.TWO ? AGRO_NUMBERS.ZERO : AGRO_NUMBERS.ELEVEN - resto;
162
- return parseInt(cnpj.charAt(AGRO_NUMBERS.TWELVE), AGRO_NUMBERS.TEN) === digito1 && parseInt(cnpj.charAt(AGRO_NUMBERS.THIRTEEN), AGRO_NUMBERS.TEN) === digito2;
168
+ return (parseInt(cnpj.charAt(AGRO_NUMBERS.TWELVE), AGRO_NUMBERS.TEN) === digito1 &&
169
+ parseInt(cnpj.charAt(AGRO_NUMBERS.THIRTEEN), AGRO_NUMBERS.TEN) === digito2);
163
170
  }
164
171
  /**
165
172
  * Valida o CNPJ em formato alfanumérico (padrão 2026)
@@ -255,13 +262,75 @@ export class AgroStringUtils {
255
262
  const matches = str.match(regex);
256
263
  return matches ? matches.length : AGRO_NUMBERS.ZERO;
257
264
  }
265
+ /**
266
+ * Remove uma máscara simples da string fornecida.O padrão de máscaras é definido pelo enum AgroStringMasks ou
267
+ * pode ser uma string personalizada onde '9' representa um dígito a ser mantido da string.
268
+ */
269
+ static removeMask(value, mask) {
270
+ if (!value || !mask) {
271
+ return value;
272
+ }
273
+ const valueChars = value.toString().split("");
274
+ const maskChars = mask.split("");
275
+ let unmaskedValue = "";
276
+ let j = 0;
277
+ const isDigit = (c) => /\d/.test(c);
278
+ const isAlpha = (c) => /[A-Za-z]/.test(c);
279
+ const isAlnum = (c) => /[A-Za-z0-9]/.test(c);
280
+ const extractNext = (testFn) => {
281
+ let k = j;
282
+ while (k < valueChars.length && !testFn(valueChars[k])) {
283
+ k++;
284
+ }
285
+ if (k < valueChars.length) {
286
+ const found = valueChars[k];
287
+ j = k + 1;
288
+ return found;
289
+ }
290
+ const fallback = valueChars[j];
291
+ j++;
292
+ return fallback;
293
+ };
294
+ const processMaskChar = (maskChar) => {
295
+ var _a, _b;
296
+ if (j >= valueChars.length) {
297
+ return;
298
+ }
299
+ const current = valueChars[j];
300
+ switch (maskChar) {
301
+ case "9":
302
+ unmaskedValue += (_a = extractNext(isDigit)) !== null && _a !== void 0 ? _a : "";
303
+ break;
304
+ case "A":
305
+ unmaskedValue += (_b = extractNext(isAlpha)) !== null && _b !== void 0 ? _b : "";
306
+ break;
307
+ default:
308
+ handleSeparator(maskChar, current);
309
+ break;
310
+ }
311
+ };
312
+ const handleSeparator = (maskChar, current) => {
313
+ if (current === maskChar) {
314
+ j++; // separador presente no valor
315
+ }
316
+ if (isAlnum(current)) {
317
+ unmaskedValue += current;
318
+ j++;
319
+ }
320
+ // se for pontuação diferente, apenas ignora (não consome j)
321
+ };
322
+ for (const maskChar of maskChars) {
323
+ processMaskChar(maskChar);
324
+ }
325
+ return unmaskedValue;
326
+ }
258
327
  /**
259
328
  * Aplica uma máscara simples à string fornecida.O padrão de máscaras é definido pelo enum AgroStringMasks ou
260
329
  * pode ser uma string personalizada onde '9' representa um dígito a ser substituído pelo caractere correspondente
261
330
  * da string.
262
331
  */
263
332
  static applyMask(value, mask) {
264
- const valueChars = value.toString().split("");
333
+ const valueChars = AgroStringUtils.removeMask(value, mask).toString().split("");
265
334
  const maskChars = mask.split("");
266
335
  let maskedValue = "";
267
336
  let j = AGRO_NUMBERS.ZERO;
@@ -285,6 +354,15 @@ export class AgroStringUtils {
285
354
  static isInvalid(str) {
286
355
  return !AgroStringUtils.isValid(str);
287
356
  }
357
+ static isISODate(value) {
358
+ return AGRO_REGEX.isISODate.test(value);
359
+ }
360
+ static isISOTime(value) {
361
+ return AGRO_REGEX.isISOTime.test(value);
362
+ }
363
+ static isISODatetime(value) {
364
+ return AGRO_REGEX.isISODateTime.test(value);
365
+ }
288
366
  }
289
367
  AgroStringUtils.CNPJ_TRADICIONAL_PESOS_1 = [
290
368
  AGRO_NUMBERS.FIVE,
@@ -298,7 +376,7 @@ AgroStringUtils.CNPJ_TRADICIONAL_PESOS_1 = [
298
376
  AGRO_NUMBERS.FIVE,
299
377
  AGRO_NUMBERS.FOUR,
300
378
  AGRO_NUMBERS.THREE,
301
- AGRO_NUMBERS.TWO
379
+ AGRO_NUMBERS.TWO,
302
380
  ];
303
381
  AgroStringUtils.CNPJ_TRADICIONAL_PESOS_2 = [
304
382
  AGRO_NUMBERS.SIX,
@@ -313,7 +391,7 @@ AgroStringUtils.CNPJ_TRADICIONAL_PESOS_2 = [
313
391
  AGRO_NUMBERS.FIVE,
314
392
  AGRO_NUMBERS.FOUR,
315
393
  AGRO_NUMBERS.THREE,
316
- AGRO_NUMBERS.TWO
394
+ AGRO_NUMBERS.TWO,
317
395
  ];
318
396
  // Pesos utilizados para cálculo de dígitos verificadores do CNPJ alfanumérico (2026)
319
397
  AgroStringUtils.CNPJ_ALFANUMERICO_PESOS_1 = [
@@ -328,7 +406,7 @@ AgroStringUtils.CNPJ_ALFANUMERICO_PESOS_1 = [
328
406
  AGRO_NUMBERS.FIVE,
329
407
  AGRO_NUMBERS.FOUR,
330
408
  AGRO_NUMBERS.THREE,
331
- AGRO_NUMBERS.TWO
409
+ AGRO_NUMBERS.TWO,
332
410
  ];
333
411
  AgroStringUtils.CNPJ_ALFANUMERICO_PESOS_2 = [
334
412
  AGRO_NUMBERS.SIX,
@@ -343,6 +421,6 @@ AgroStringUtils.CNPJ_ALFANUMERICO_PESOS_2 = [
343
421
  AGRO_NUMBERS.FIVE,
344
422
  AGRO_NUMBERS.FOUR,
345
423
  AGRO_NUMBERS.THREE,
346
- AGRO_NUMBERS.TWO
424
+ AGRO_NUMBERS.TWO,
347
425
  ];
348
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1zdHJpbmctdXRpbHMuY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9hZ3JvLXN0cmluZy11dGlscy5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFtQixNQUFNLFVBQVUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGVBQWUsSUFBSSxXQUFXLEVBQUUsQ0FBQztBQUkxQzs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBNER4QixvREFBb0Q7SUFDcEQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFtQjtRQUNwQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ04sT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELDJEQUEyRDtJQUMzRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQW1CO1FBQ2pDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDTixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQscURBQXFEO0lBQ3JELE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBbUI7UUFDcEMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNOLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCwyREFBMkQ7SUFDM0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFtQjtRQUNqQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ04sT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxPQUFP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LFlBQVksQ0FBQyxHQUFHO0lBQ2hCLFlBQVksQ0FBQyxJQUFJO0lBQ2pCLFlBQVksQ0FBQyxLQUFLO0lBQ2xCLFlBQVksQ0FBQyxLQUFLO0lBQ2xCLFlBQVksQ0FBQyxHQUFHO0lBQ2hCLFlBQVksQ0FBQyxJQUFJO0lBQ2pCLFlBQVksQ0FBQyxJQUFJO0lBQ2pCLFlBQVksQ0FBQyxLQUFLO0lBQ2xCLFlBQVksQ0FBQyxHQUFHO0NBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBR1JPX05VTUJFUlMsIEFncm9TdHJpbmdNYXNrcyB9IGZyb20gXCIuLi9lbnVtc1wiO1xyXG5pbXBvcnQgeyBBR1JPX1JFR0VYIH0gZnJvbSBcIi4vYWdyby1yZWdleC5jb25zdGFudFwiO1xyXG5cclxuZXhwb3J0IHsgQWdyb1N0cmluZ1V0aWxzIGFzIFN0cmluZ1V0aWxzIH07XHJcblxyXG5leHBvcnQgdHlwZSBOdWxsYWJsZVN0cmluZyA9IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XHJcblxyXG4vKipcclxuICogQ2xhc3NlIHV0aWxpdMOhcmlhIHBhcmEgb3BlcmHDp8O1ZXMgZGUgc3RyaW5nLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEFncm9TdHJpbmdVdGlscyB7XHJcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBDTlBKX1RSQURJQ0lPTkFMX1BFU09TXzE6IG51bWJlcltdID0gW1xyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5GSVZFLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5GT1VSLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5USFJFRSxcclxuICAgICAgICBBR1JPX05VTUJFUlMuVFdPLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5OSU5FLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5FSUdIVCxcclxuICAgICAgICBBR1JPX05VTUJFUlMuU0VWRU4sXHJcbiAgICAgICAgQUdST19OVU1CRVJTLlNJWCxcclxuICAgICAgICBBR1JPX05VTUJFUlMuRklWRSxcclxuICAgICAgICBBR1JPX05VTUJFUlMuRk9VUixcclxuICAgICAgICBBR1JPX05VTUJFUlMuVEhSRUUsXHJcbiAgICAgICAgQUdST19OVU1CRVJTLlRXT1xyXG4gICAgXTtcclxuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IENOUEpfVFJBRElDSU9OQUxfUEVTT1NfMjogbnVtYmVyW10gPSBbXHJcbiAgICAgICAgQUdST19OVU1CRVJTLlNJWCxcclxuICAgICAgICBBR1JPX05VTUJFUlMuRklWRSxcclxuICAgICAgICBBR1JPX05VTUJFUlMuRk9VUixcclxuICAgICAgICBBR1JPX05VTUJFUlMuVEhSRUUsXHJcbiAgICAgICAgQUdST19OVU1CRVJTLlRXTyxcclxuICAgICAgICBBR1JPX05VTUJFUlMuTklORSxcclxuICAgICAgICBBR1JPX05VTUJFUlMuRUlHSFQsXHJcbiAgICAgICAgQUdST19OVU1CRVJTLlNFVkVOLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5TSVgsXHJcbiAgICAgICAgQUdST19OVU1CRVJTLkZJVkUsXHJcbiAgICAgICAgQUdST19OVU1CRVJTLkZPVVIsXHJcbiAgICAgICAgQUdST19OVU1CRVJTLlRIUkVFLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5UV09cclxuICAgIF07XHJcbiAgICAvLyBQZXNvcyB1dGlsaXphZG9zIHBhcmEgY8OhbGN1bG8gZGUgZMOtZ2l0b3MgdmVyaWZpY2Fkb3JlcyBkbyBDTlBKIGFsZmFudW3DqXJpY28gKDIwMjYpXHJcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBDTlBKX0FMRkFOVU1FUklDT19QRVNPU18xOiBudW1iZXJbXSA9IFtcclxuICAgICAgICBBR1JPX05VTUJFUlMuRklWRSxcclxuICAgICAgICBBR1JPX05VTUJFUlMuRk9VUixcclxuICAgICAgICBBR1JPX05VTUJFUlMuVEhSRUUsXHJcbiAgICAgICAgQUdST19OVU1CRVJTLlRXTyxcclxuICAgICAgICBBR1JPX05VTUJFUlMuTklORSxcclxuICAgICAgICBBR1JPX05VTUJFUlMuRUlHSFQsXHJcbiAgICAgICAgQUdST19OVU1CRVJTLlNFVkVOLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5TSVgsXHJcbiAgICAgICAgQUdST19OVU1CRVJTLkZJVkUsXHJcbiAgICAgICAgQUdST19OVU1CRVJTLkZPVVIsXHJcbiAgICAgICAgQUdST19OVU1CRVJTLlRIUkVFLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5UV09cclxuICAgIF07XHJcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBDTlBKX0FMRkFOVU1FUklDT19QRVNPU18yOiBudW1iZXJbXSA9IFtcclxuICAgICAgICBBR1JPX05VTUJFUlMuU0lYLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5GSVZFLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5GT1VSLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5USFJFRSxcclxuICAgICAgICBBR1JPX05VTUJFUlMuVFdPLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5OSU5FLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5FSUdIVCxcclxuICAgICAgICBBR1JPX05VTUJFUlMuU0VWRU4sXHJcbiAgICAgICAgQUdST19OVU1CRVJTLlNJWCxcclxuICAgICAgICBBR1JPX05VTUJFUlMuRklWRSxcclxuICAgICAgICBBR1JPX05VTUJFUlMuRk9VUixcclxuICAgICAgICBBR1JPX05VTUJFUlMuVEhSRUUsXHJcbiAgICAgICAgQUdST19OVU1CRVJTLlRXT1xyXG4gICAgXTtcclxuICAgIC8qKiBSZXRvcm5hIHRydWUgc2UgYSBzdHJpbmcgY29udMOpbSBhcGVuYXMgbGV0cmFzICovXHJcbiAgICBzdGF0aWMgaXNPbmx5TGV0dGVycyhzdHI6IE51bGxhYmxlU3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFzdHIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gL15bQS1aYS16XSskLy50ZXN0KHN0cik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFJldG9ybmEgdHJ1ZSBzZSBhIHN0cmluZyBjb250w6ltIHBlbG8gbWVub3MgdW1hIGxldHJhICovXHJcbiAgICBzdGF0aWMgaGFzTGV0dGVycyhzdHI6IE51bGxhYmxlU3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFzdHIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gL1tBLVphLXpdLy50ZXN0KHN0cik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFJldG9ybmEgdHJ1ZSBzZSBhIHN0cmluZyBjb250w6ltIGFwZW5hcyBuw7ptZXJvcyAqL1xyXG4gICAgc3RhdGljIGlzT25seU51bWJlcnMoc3RyOiBOdWxsYWJsZVN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghc3RyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIC9eXFxkKyQvLnRlc3Qoc3RyKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUmV0b3JuYSB0cnVlIHNlIGEgc3RyaW5nIGNvbnTDqW0gcGVsbyBtZW5vcyB1bSBuw7ptZXJvICovXHJcbiAgICBzdGF0aWMgaGFzTnVtYmVycyhzdHI6IE51bGxhYmxlU3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFzdHIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gL1xcZC8udGVzdChzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgYSBzdHJpbmcgZXN0w6EgdmF6aWEuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc0VtcHR5KHN0cjogTnVsbGFibGVTdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIXN0ciB8fCBzdHIudHJpbSgpPy5sZW5ndGggPT09IEFHUk9fTlVNQkVSUy5aRVJPO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgYSBzdHJpbmcgbsOjbyBlc3TDoSB2YXppYS5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzTm90RW1wdHkoc3RyOiBOdWxsYWJsZVN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhQWdyb1N0cmluZ1V0aWxzLmlzRW1wdHkoc3RyKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogVmVyaWZpY2Egc2UgYSBzdHJpbmcgw6kgbnVsYSwgaW5kZWZpbmlkYSBvdSBjb250w6ltIGFwZW5hcyBlc3Bhw6dvcyBlbSBicmFuY28gKi9cclxuICAgIHN0YXRpYyBpc0JsYW5rKHN0cjogTnVsbGFibGVTdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIXN0ciB8fCBBR1JPX1JFR0VYLm9ubHlCbGFua1NwYWNlcy50ZXN0KHN0cik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFZlcmlmaWNhIHNlIGEgc3RyaW5nIG7Do28gw6kgbnVsYSwgaW5kZWZpbmlkYSBvdSBjb250w6ltIGFwZW5hcyBlc3Bhw6dvcyBlbSBicmFuY28gKi9cclxuICAgIHN0YXRpYyBpc05vdEJsYW5rKHN0cjogTnVsbGFibGVTdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIUFncm9TdHJpbmdVdGlscy5pc0JsYW5rKHN0cik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmUgZXNwYcOnb3MgZW0gYnJhbmNvIGRvIGluw61jaW8gZSBkbyBmaW0gZGEgc3RyaW5nLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgdHJpbVRvTnVsbChzdHI6IE51bGxhYmxlU3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKCFzdHIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRyaW1tZWQgPSBzdHIudHJpbSgpO1xyXG4gICAgICAgIHJldHVybiB0cmltbWVkID09PSBcIlwiID8gbnVsbCA6IHRyaW1tZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb21wYXJhIGR1YXMgc3RyaW5ncyBpZ25vcmFuZG8gZGlmZXJlbsOnYXMgZW50cmUgbWFpw7pzY3VsYXMgZSBtaW7DunNjdWxhcy5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGVxdWFsc0lnbm9yZUNhc2Uoc3RyMTogTnVsbGFibGVTdHJpbmcsIHN0cjI6IE51bGxhYmxlU3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHN0cjE/LnRvTG93ZXJDYXNlKCkgPT09IHN0cjI/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb21wYXJhIGR1YXMgc3RyaW5ncyBjb25zaWRlcmFuZG8gZGlmZXJlbsOnYXMgZW50cmUgbWFpw7pzY3VsYXMgZSBtaW7DunNjdWxhcy5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGVxdWFscyhzdHIxOiBOdWxsYWJsZVN0cmluZywgc3RyMjogTnVsbGFibGVTdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gc3RyMSA9PT0gc3RyMjtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgcmV2ZXJzZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHN0ci5zcGxpdChcIlwiKS5yZXZlcnNlKCkuam9pbihcIlwiKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNFbWFpbChzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBBR1JPX1JFR0VYLmlzRW1haWwudGVzdChzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc1Bvc2l0aXZlSW50ZWdlcihzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBBR1JPX1JFR0VYLnBvc2l0aXZlSW50ZWdlci50ZXN0KHN0cik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFJldG9ybmEgdHJ1ZSBzZSBhIHN0cmluZyDDqSB1bWEgc3RyaW5nIHbDoWxpZGEgKG7Do28gbnVsbCwgbsOjbyB1bmRlZmluZWQsIG7Do28gdmF6aWEpICovXHJcbiAgICBzdGF0aWMgaXNTdHJpbmcodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS50cmltKCkubGVuZ3RoID4gQUdST19OVU1CRVJTLlpFUk87XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzUG9zaXRpdmVEZWNpbWFsKHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIEFHUk9fUkVHRVgucG9zaXRpdmVEZWNpbWFsLnRlc3Qoc3RyKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNaaXBDb2RlKHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIEFHUk9fUkVHRVguemlwQ29kZS50ZXN0KHN0cik7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzVVVJRChzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBBR1JPX1JFR0VYLmlzVVVJRC50ZXN0KHN0cik7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzTnVtYmVyKHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIEFHUk9fUkVHRVguaXNOdW1iZXIudGVzdChzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyB2YWxpZGF0ZUNQRihjcGY6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNwZiA9IGNwZi5yZXBsYWNlKC9cXEQvZywgXCJcIik7XHJcblxyXG4gICAgICAgIGlmIChjcGYubGVuZ3RoICE9PSBBR1JPX05VTUJFUlMuRUxFVkVOIHx8IC9eKFxcZClcXDErJC8udGVzdChjcGYpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgY29uc3QgY2FsY1ZlcmlmaWVyID0gKGNwZjogc3RyaW5nLCBsZW5ndGg6IG51bWJlcik6IG51bWJlciA9PiB7XHJcbiAgICAgICAgICAgIGxldCBzdW0gPSBBR1JPX05VTUJFUlMuWkVSTztcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IEFHUk9fTlVNQkVSUy5aRVJPOyBpIDwgbGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBzdW0gKz0gcGFyc2VJbnQoY3BmW2ldLCBBR1JPX05VTUJFUlMuVEVOKSAqIChsZW5ndGggKyBBR1JPX05VTUJFUlMuT05FIC0gaSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gc3VtICUgQUdST19OVU1CRVJTLkVMRVZFTjtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCA8IEFHUk9fTlVNQkVSUy5UV08gPyBBR1JPX05VTUJFUlMuWkVSTyA6IEFHUk9fTlVNQkVSUy5FTEVWRU4gLSByZXN1bHQ7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICBjb25zdCBkaWdpdDEgPSBjYWxjVmVyaWZpZXIoY3BmLCBBR1JPX05VTUJFUlMuTklORSk7XHJcbiAgICBjb25zdCBkaWdpdDIgPSBjYWxjVmVyaWZpZXIoY3BmLCBBR1JPX05VTUJFUlMuVEVOKTtcclxuXHJcbiAgICByZXR1cm4gZGlnaXQxID09PSBwYXJzZUludChjcGZbQUdST19OVU1CRVJTLk5JTkVdLCBBR1JPX05VTUJFUlMuVEVOKSAmJiBkaWdpdDIgPT09IHBhcnNlSW50KGNwZltBR1JPX05VTUJFUlMuVEVOXSwgQUdST19OVU1CRVJTLlRFTik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXRlY3RhIGF1dG9tYXRpY2FtZW50ZSBzZSDDqSBDTlBKIGFudGlnbyBvdSBub3ZvIGZvcm1hdG8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyB2YWxpZGF0ZUNOUEooY25wajogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFjbnBqKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY25waiA9IGNucGoudHJpbSgpO1xyXG5cclxuICAgICAgICAvLyBTZSBjb250w6ltIGxldHJhcyDihpIgdmFsaWRhIGZvcm1hdG8gYWxmYW51bcOpcmljb1xyXG4gICAgICAgIGlmIChBZ3JvU3RyaW5nVXRpbHMuaGFzTGV0dGVycyhjbnBqKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gQWdyb1N0cmluZ1V0aWxzLnZhbGlkYXRlQ05QSkFsZmFudW1lcmljbyhjbnBqKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENhc28gY29udHLDoXJpbywgdmFsaWRhIGNvbW8gQ05QSiB0cmFkaWNpb25hbFxyXG4gICAgICAgIHJldHVybiBBZ3JvU3RyaW5nVXRpbHMudmFsaWRhdGVDTlBKQW50aWdvKGNucGopO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhIG8gQ05QSiB0cmFkaWNpb25hbCAoc29tZW50ZSBuw7ptZXJvcylcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgdmFsaWRhdGVDTlBKQW50aWdvKGNucGo6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNucGogPSBjbnBqLnJlcGxhY2UoL1xcRC9nLCBcIlwiKTtcclxuXHJcbiAgICAgICAgaWYgKCFBZ3JvU3RyaW5nVXRpbHMuaXNPbmx5TnVtYmVycyhjbnBqKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjbnBqLmxlbmd0aCAhPT0gQUdST19OVU1CRVJTLkZPVVJURUVOKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKC9eKFxcZClcXDF7MTN9JC8udGVzdChjbnBqKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgc29tYSA9IEFHUk9fTlVNQkVSUy5aRVJPO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBBR1JPX05VTUJFUlMuWkVSTzsgaSA8IEFHUk9fTlVNQkVSUy5UV0VMVkU7IGkrKykge1xyXG4gICAgICAgICAgICBzb21hICs9IHBhcnNlSW50KGNucGouY2hhckF0KGkpLCBBR1JPX05VTUJFUlMuVEVOKSAqIEFncm9TdHJpbmdVdGlscy5DTlBKX1RSQURJQ0lPTkFMX1BFU09TXzFbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCByZXN0byA9IHNvbWEgJSBBR1JPX05VTUJFUlMuRUxFVkVOO1xyXG4gICAgICAgIGNvbnN0IGRpZ2l0bzEgPSByZXN0byA8IEFHUk9fTlVNQkVSUy5UV08gPyBBR1JPX05VTUJFUlMuWkVSTyA6IEFHUk9fTlVNQkVSUy5FTEVWRU4gLSByZXN0bztcclxuXHJcbiAgICAgICAgc29tYSA9IEFHUk9fTlVNQkVSUy5aRVJPO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBBR1JPX05VTUJFUlMuWkVSTzsgaSA8IEFHUk9fTlVNQkVSUy5USElSVEVFTjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHNvbWEgKz0gcGFyc2VJbnQoY25wai5jaGFyQXQoaSksIEFHUk9fTlVNQkVSUy5URU4pICogQWdyb1N0cmluZ1V0aWxzLkNOUEpfVFJBRElDSU9OQUxfUEVTT1NfMltpXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzdG8gPSBzb21hICUgQUdST19OVU1CRVJTLkVMRVZFTjtcclxuICAgICAgICBjb25zdCBkaWdpdG8yID0gcmVzdG8gPCBBR1JPX05VTUJFUlMuVFdPID8gQUdST19OVU1CRVJTLlpFUk8gOiBBR1JPX05VTUJFUlMuRUxFVkVOIC0gcmVzdG87XHJcblxyXG4gICAgcmV0dXJuIHBhcnNlSW50KGNucGouY2hhckF0KEFHUk9fTlVNQkVSUy5UV0VMVkUpLCBBR1JPX05VTUJFUlMuVEVOKSA9PT0gZGlnaXRvMSAmJiBwYXJzZUludChjbnBqLmNoYXJBdChBR1JPX05VTUJFUlMuVEhJUlRFRU4pLCBBR1JPX05VTUJFUlMuVEVOKSA9PT0gZGlnaXRvMjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYSBvIENOUEogZW0gZm9ybWF0byBhbGZhbnVtw6lyaWNvIChwYWRyw6NvIDIwMjYpXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3RhdGljIHZhbGlkYXRlQ05QSkFsZmFudW1lcmljbyhjbnBqOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIUFncm9TdHJpbmdVdGlscy5pc1N0cmluZyhjbnBqKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBSZW1vdmUgY2FyYWN0ZXJlcyBlc3BlY2lhaXMgKHBvbnRvcywgYmFycmEsIHRyYcOnbywgZXNwYcOnb3MpXHJcbiAgICAgICAgY29uc3QgY2xlYW4gPSBjbnBqLnJlcGxhY2UoL1teQS1aYS16MC05XS9nLCBcIlwiKS50b1VwcGVyQ2FzZSgpO1xyXG5cclxuICAgICAgICAvLyBPIENOUEogZGV2ZSB0ZXIgZXhhdGFtZW50ZSAxNCBwb3Npw6fDtWVzXHJcbiAgICAgICAgaWYgKGNsZWFuLmxlbmd0aCAhPT0gQUdST19OVU1CRVJTLkZPVVJURUVOKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFZlcmlmaWNhIHNlIGjDoSBwZWxvIG1lbm9zIHVtYSBsZXRyYSBlIHVtIG7Dum1lcm9cclxuICAgICAgICBpZiAoIUFncm9TdHJpbmdVdGlscy5oYXNMZXR0ZXJzKGNsZWFuKSB8fCAhQWdyb1N0cmluZ1V0aWxzLmhhc051bWJlcnMoY2xlYW4pKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENhbGN1bGEgbyBwcmltZWlybyBkw61naXRvIHZlcmlmaWNhZG9yXHJcbiAgICBjb25zdCBwZXNvczEgPSBBZ3JvU3RyaW5nVXRpbHMuQ05QSl9BTEZBTlVNRVJJQ09fUEVTT1NfMTtcclxuICAgIGNvbnN0IHBlc29zMiA9IEFncm9TdHJpbmdVdGlscy5DTlBKX0FMRkFOVU1FUklDT19QRVNPU18yO1xyXG5cclxuICAgICAgICAvLyBQZWdhIG9zIDEyIHByaW1laXJvcyBjYXJhY3RlcmVzXHJcbiAgICBjb25zdCBiYXNlID0gY2xlYW4uc3Vic3RyaW5nKEFHUk9fTlVNQkVSUy5aRVJPLCBBR1JPX05VTUJFUlMuVFdFTFZFKTtcclxuICAgIGNvbnN0IGR2SW5mb3JtYWRvID0gY2xlYW4uc3Vic3RyaW5nKEFHUk9fTlVNQkVSUy5UV0VMVkUsIEFHUk9fTlVNQkVSUy5GT1VSVEVFTik7XHJcblxyXG4gICAgICAgIGNvbnN0IGNhbGN1bGFEViA9IChzdHI6IHN0cmluZywgcGVzb3M6IG51bWJlcltdKTogbnVtYmVyID0+IHtcclxuICAgICAgICAgICAgbGV0IHNvbWEgPSBBR1JPX05VTUJFUlMuWkVSTztcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IEFHUk9fTlVNQkVSUy5aRVJPOyBpIDwgcGVzb3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgPSBzdHIuY2hhckF0KGkpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYXNjaWlWYWx1ZSA9IGNoYXIuY2hhckNvZGVBdCgwKSAtIEFHUk9fTlVNQkVSUy5GT1JUWV9FSUdIVDsgLy8gY29uZm9ybWUgZG9jdW1lbnRvICg0OCA9ICcwJylcclxuICAgICAgICAgICAgICAgIHNvbWEgKz0gYXNjaWlWYWx1ZSAqIHBlc29zW2ldOyAvLyBhc2NpaVZhbHVlIGrDoSBjYWxjdWxhZG8gYSBwYXJ0aXIgZG8gZW51bSBGT1JUWV9FSUdIVFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3RvID0gc29tYSAlIEFHUk9fTlVNQkVSUy5FTEVWRU47XHJcbiAgICAgICAgICAgIGNvbnN0IGRpZ2l0byA9IEFHUk9fTlVNQkVSUy5FTEVWRU4gLSByZXN0bztcclxuICAgICAgICAgICAgcmV0dXJuIGRpZ2l0byA+IEFHUk9fTlVNQkVSUy5OSU5FID8gQUdST19OVU1CRVJTLlpFUk8gOiBkaWdpdG87IC8vIHNlZ3VlIG1lc21hIHJlZ3JhIGRvIENOUEogdHJhZGljaW9uYWxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCBkdjEgPSBjYWxjdWxhRFYoYmFzZSwgcGVzb3MxKTtcclxuICAgICAgICBjb25zdCBkdjIgPSBjYWxjdWxhRFYoYmFzZSArIGR2MS50b1N0cmluZygpLCBwZXNvczIpO1xyXG5cclxuICAgICAgICBjb25zdCBkdkNhbGN1bGFkbyA9IGAke2R2MX0ke2R2Mn1gO1xyXG5cclxuICAgICAgICByZXR1cm4gZHZDYWxjdWxhZG8gPT09IGR2SW5mb3JtYWRvO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBDYWxjdWxhIGEgZGlmZXJlbsOnYSBlbnRyZSBkdWFzIHN0cmluZ3MgZW0gdGVybW9zIGRlIG7Dum1lcm8gZGUgY2FyYWN0ZXJlcyBkaWZlcmVudGVzICovXHJcbiAgICBzdGF0aWMgZGlmZmVyZW5jZShzdHIxOiBzdHJpbmcsIHN0cjI6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICAgICAgY29uc3QgbGVuMSA9IHN0cjEubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IGxlbjIgPSBzdHIyLmxlbmd0aDtcclxuICAgICAgICBsZXQgZGlmZiA9IE1hdGguYWJzKGxlbjEgLSBsZW4yKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gQUdST19OVU1CRVJTLlpFUk87IGkgPCBNYXRoLm1pbihsZW4xLCBsZW4yKTsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChzdHIxW2ldICE9PSBzdHIyW2ldKSB7XHJcbiAgICAgICAgICAgICAgICBkaWZmKys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRpZmY7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFZlcmlmaWNhIHNlIHN0cjEgdGVybWluYSBjb20gc3RyMiAqL1xyXG4gICAgc3RhdGljIGVuZHNXaXRoKHN0cjE6IHN0cmluZywgc3RyMjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHN0cjEuZW5kc1dpdGgoc3RyMik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFZlcmlmaWNhIHNlIHN0cjEgY29tZcOnYSBjb20gc3RyMiAqL1xyXG4gICAgc3RhdGljIHN0YXJ0c1dpdGgoc3RyMTogc3RyaW5nLCBzdHIyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gc3RyMS5zdGFydHNXaXRoKHN0cjIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBWZXJpZmljYSBzZSBzdHIxIGNvbnTDqW0gc3RyMiAqL1xyXG4gICAgc3RhdGljIGNvbnRhaW5zKHN0cjE6IHN0cmluZywgc3RyMjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHN0cjEuaW5jbHVkZXMoc3RyMik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFZlcmlmaWNhIHNlIHN0cjEgY29tZcOnYSBjb20gc3RyMiwgaWdub3JhbmRvIG1hacO6c2N1bGFzIGUgbWluw7pzY3VsYXMgKi9cclxuICAgIHN0YXRpYyBzdGFydHNXaXRoSWdub3JlQ2FzZShzdHIxOiBzdHJpbmcsIHN0cjI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBzdHIxLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChzdHIyLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBWZXJpZmljYSBzZSBzdHIxIHRlcm1pbmEgY29tIHN0cjIsIGlnbm9yYW5kbyBtYWnDunNjdWxhcyBlIG1pbsO6c2N1bGFzICovXHJcbiAgICBzdGF0aWMgZW5kc1dpdGhJZ25vcmVDYXNlKHN0cjE6IHN0cmluZywgc3RyMjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHN0cjEudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChzdHIyLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBJbnZlcnRlIG8gY2FzbyBkZSBjYWRhIGxldHJhIG5hIHN0cmluZyAqL1xyXG4gICAgc3RhdGljIHN3YXBDYXNlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgc3dhcHBlZCA9IFwiXCI7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IEFHUk9fTlVNQkVSUy5aRVJPOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoYXIgPSBzdHJbaV07XHJcbiAgICAgICAgICAgIHN3YXBwZWQgKz0gY2hhciA9PT0gY2hhci50b1VwcGVyQ2FzZSgpID8gY2hhci50b0xvd2VyQ2FzZSgpIDogY2hhci50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3dhcHBlZDtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQ29sb2NhIGEgcHJpbWVpcmEgbGV0cmEgZGEgc3RyaW5nIGVtIG1hacO6c2N1bG8gKi9cclxuICAgIHN0YXRpYyBjYXBpdGFsaXplKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gc3RyLmNoYXJBdChBR1JPX05VTUJFUlMuWkVSTykudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQ29sb2NhIGEgcHJpbWVpcmEgbGV0cmEgZGEgc3RyaW5nIGVtIG1pbsO6c2N1bG8gKi9cclxuICAgIHN0YXRpYyB1bmNhcGl0YWxpemUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBzdHIuY2hhckF0KEFHUk9fTlVNQkVSUy5aRVJPKS50b0xvd2VyQ2FzZSgpICsgc3RyLnNsaWNlKDEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBDb250YSBvIG7Dum1lcm8gZGUgb2NvcnLDqm5jaWFzIGRlIHVtYSBzdWJzdHJpbmcgZGVudHJvIGRlIHVtYSBzdHJpbmcgKi9cclxuICAgIHN0YXRpYyBjb3VudE1hdGNoZXMoc3RyOiBzdHJpbmcsIHN1YnN0cmluZzogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoc3Vic3RyaW5nLCBcImdcIik7XHJcbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9IHN0ci5tYXRjaChyZWdleCk7XHJcbiAgICByZXR1cm4gbWF0Y2hlcyA/IG1hdGNoZXMubGVuZ3RoIDogQUdST19OVU1CRVJTLlpFUk87XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcGxpY2EgdW1hIG3DoXNjYXJhIHNpbXBsZXMgw6Agc3RyaW5nIGZvcm5lY2lkYS5PIHBhZHLDo28gZGUgbcOhc2NhcmFzIMOpIGRlZmluaWRvIHBlbG8gZW51bSBBZ3JvU3RyaW5nTWFza3Mgb3VcclxuICAgICAqIHBvZGUgc2VyIHVtYSBzdHJpbmcgcGVyc29uYWxpemFkYSBvbmRlICc5JyByZXByZXNlbnRhIHVtIGTDrWdpdG8gYSBzZXIgc3Vic3RpdHXDrWRvIHBlbG8gY2FyYWN0ZXJlIGNvcnJlc3BvbmRlbnRlXHJcbiAgICAgKiBkYSBzdHJpbmcuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBhcHBseU1hc2sodmFsdWU6IHN0cmluZywgbWFzazogQWdyb1N0cmluZ01hc2tzIHwgc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCB2YWx1ZUNoYXJzID0gdmFsdWUudG9TdHJpbmcoKS5zcGxpdChcIlwiKTtcclxuICAgICAgICBjb25zdCBtYXNrQ2hhcnMgPSBtYXNrLnNwbGl0KFwiXCIpO1xyXG4gICAgICAgIGxldCBtYXNrZWRWYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgbGV0IGogPSBBR1JPX05VTUJFUlMuWkVSTztcclxuICAgICAgICBmb3IgKGNvbnN0IG1hc2tDaGFyIG9mIG1hc2tDaGFycykge1xyXG4gICAgICAgICAgICBpZiAoaiA+PSB2YWx1ZUNoYXJzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG1hc2tDaGFyID09PSBcIjlcIikge1xyXG4gICAgICAgICAgICAgICAgbWFza2VkVmFsdWUgKz0gdmFsdWVDaGFyc1tqXTtcclxuICAgICAgICAgICAgICAgIGogKz0gQUdST19OVU1CRVJTLk9ORTsgLy8gaW5jcmVtZW50IGV4dHJhY3RlZCBwZXIgU29uYXIgcmVjb21tZW5kYXRpb25cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG1hc2tlZFZhbHVlICs9IG1hc2tDaGFyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtYXNrZWRWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNWYWxpZChzdHI6IE51bGxhYmxlU3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBzdHIgIT09IFwidW5kZWZpbmVkXCIgJiYgc3RyICE9PSBudWxsICYmIHRoaXMuaXNOb3RFbXB0eShzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0ludmFsaWQoc3RyOiBOdWxsYWJsZVN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhQWdyb1N0cmluZ1V0aWxzLmlzVmFsaWQoc3RyKTtcclxuICAgIH1cclxufVxyXG4iXX0=
426
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1zdHJpbmctdXRpbHMuY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9hZ3JvLXN0cmluZy11dGlscy5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFtQixNQUFNLFVBQVUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGVBQWUsSUFBSSxXQUFXLEVBQUUsQ0FBQztBQUkxQzs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBNER4QixvREFBb0Q7SUFDcEQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFtQjtRQUNwQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ04sT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELDJEQUEyRDtJQUMzRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQW1CO1FBQ2pDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDTixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQscURBQXFEO0lBQ3JELE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBbUI7UUFDcEMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNOLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCwyREFBMkQ7SUFDM0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFtQjtRQUNqQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ04sT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxPQUFP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WSxDQUFDLEtBQUs7SUFDbEIsWUFBWSxDQUFDLEdBQUc7SUFDaEIsWUFBWSxDQUFDLElBQUk7SUFDakIsWUFBWSxDQUFDLElBQUk7SUFDakIsWUFBWSxDQUFDLEtBQUs7SUFDbEIsWUFBWSxDQUFDLEdBQUc7Q0FDbkIsQ0FBQztBQUNGLHFGQUFxRjtBQUM3RCx5Q0FBeUIsR0FBYTtJQUMxRCxZQUFZLENBQUMsSUFBSTtJQUNqQixZQUFZLENBQUMsSUFBSTtJQUNqQixZQUFZLENBQUMsS0FBSztJQUNsQixZQUFZLENBQUMsR0FBRztJQUNoQixZQUFZLENBQUMsSUFBSTtJQUNqQixZQUFZLENBQUMsS0FBSztJQUNsQixZQUFZLENBQUMsS0FBSztJQUNsQixZQUFZLENBQUMsR0FBRztJQUNoQixZQUFZLENBQUMsSUFBSTtJQUNqQixZQUFZLENBQUMsSUFBSTtJQUNqQixZQUFZLENBQUMsS0FBSztJQUNsQixZQUFZLENBQUMsR0FBRztDQUNuQixDQUFDO0FBQ3NCLHlDQUF5QixHQUFhO0lBQzFELFlBQVksQ0FBQyxHQUFHO0lBQ2hCLFlBQVksQ0FBQyxJQUFJO0lBQ2pCLFlBQVksQ0FBQyxJQUFJO0lBQ2pCLFlBQVksQ0FBQyxLQUFLO0lBQ2xCLFlBQVksQ0FBQyxHQUFHO0lBQ2hCLFlBQVksQ0FBQyxJQUFJO0lBQ2pCLFlBQVksQ0FBQyxLQUFLO0lBQ2xCLFlBQVksQ0FBQyxLQUFLO0lBQ2xCLFlBQVksQ0FBQyxHQUFHO0lBQ2hCLFlBQVksQ0FBQyxJQUFJO0lBQ2pCLFlBQVksQ0FBQyxJQUFJO0lBQ2pCLFlBQVksQ0FBQyxLQUFLO0lBQ2xCLFlBQVksQ0FBQyxHQUFHO0NBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBR1JPX05VTUJFUlMsIEFncm9TdHJpbmdNYXNrcyB9IGZyb20gXCIuLi9lbnVtc1wiO1xyXG5pbXBvcnQgeyBBR1JPX1JFR0VYIH0gZnJvbSBcIi4vYWdyby1yZWdleC5jb25zdGFudFwiO1xyXG5cclxuZXhwb3J0IHsgQWdyb1N0cmluZ1V0aWxzIGFzIFN0cmluZ1V0aWxzIH07XHJcblxyXG5leHBvcnQgdHlwZSBOdWxsYWJsZVN0cmluZyA9IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XHJcblxyXG4vKipcclxuICogQ2xhc3NlIHV0aWxpdMOhcmlhIHBhcmEgb3BlcmHDp8O1ZXMgZGUgc3RyaW5nLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEFncm9TdHJpbmdVdGlscyB7XHJcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBDTlBKX1RSQURJQ0lPTkFMX1BFU09TXzE6IG51bWJlcltdID0gW1xyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5GSVZFLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5GT1VSLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5USFJFRSxcclxuICAgICAgICBBR1JPX05VTUJFUlMuVFdPLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5OSU5FLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5FSUdIVCxcclxuICAgICAgICBBR1JPX05VTUJFUlMuU0VWRU4sXHJcbiAgICAgICAgQUdST19OVU1CRVJTLlNJWCxcclxuICAgICAgICBBR1JPX05VTUJFUlMuRklWRSxcclxuICAgICAgICBBR1JPX05VTUJFUlMuRk9VUixcclxuICAgICAgICBBR1JPX05VTUJFUlMuVEhSRUUsXHJcbiAgICAgICAgQUdST19OVU1CRVJTLlRXTyxcclxuICAgIF07XHJcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBDTlBKX1RSQURJQ0lPTkFMX1BFU09TXzI6IG51bWJlcltdID0gW1xyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5TSVgsXHJcbiAgICAgICAgQUdST19OVU1CRVJTLkZJVkUsXHJcbiAgICAgICAgQUdST19OVU1CRVJTLkZPVVIsXHJcbiAgICAgICAgQUdST19OVU1CRVJTLlRIUkVFLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5UV08sXHJcbiAgICAgICAgQUdST19OVU1CRVJTLk5JTkUsXHJcbiAgICAgICAgQUdST19OVU1CRVJTLkVJR0hULFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5TRVZFTixcclxuICAgICAgICBBR1JPX05VTUJFUlMuU0lYLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5GSVZFLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5GT1VSLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5USFJFRSxcclxuICAgICAgICBBR1JPX05VTUJFUlMuVFdPLFxyXG4gICAgXTtcclxuICAgIC8vIFBlc29zIHV0aWxpemFkb3MgcGFyYSBjw6FsY3VsbyBkZSBkw61naXRvcyB2ZXJpZmljYWRvcmVzIGRvIENOUEogYWxmYW51bcOpcmljbyAoMjAyNilcclxuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IENOUEpfQUxGQU5VTUVSSUNPX1BFU09TXzE6IG51bWJlcltdID0gW1xyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5GSVZFLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5GT1VSLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5USFJFRSxcclxuICAgICAgICBBR1JPX05VTUJFUlMuVFdPLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5OSU5FLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5FSUdIVCxcclxuICAgICAgICBBR1JPX05VTUJFUlMuU0VWRU4sXHJcbiAgICAgICAgQUdST19OVU1CRVJTLlNJWCxcclxuICAgICAgICBBR1JPX05VTUJFUlMuRklWRSxcclxuICAgICAgICBBR1JPX05VTUJFUlMuRk9VUixcclxuICAgICAgICBBR1JPX05VTUJFUlMuVEhSRUUsXHJcbiAgICAgICAgQUdST19OVU1CRVJTLlRXTyxcclxuICAgIF07XHJcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBDTlBKX0FMRkFOVU1FUklDT19QRVNPU18yOiBudW1iZXJbXSA9IFtcclxuICAgICAgICBBR1JPX05VTUJFUlMuU0lYLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5GSVZFLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5GT1VSLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5USFJFRSxcclxuICAgICAgICBBR1JPX05VTUJFUlMuVFdPLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5OSU5FLFxyXG4gICAgICAgIEFHUk9fTlVNQkVSUy5FSUdIVCxcclxuICAgICAgICBBR1JPX05VTUJFUlMuU0VWRU4sXHJcbiAgICAgICAgQUdST19OVU1CRVJTLlNJWCxcclxuICAgICAgICBBR1JPX05VTUJFUlMuRklWRSxcclxuICAgICAgICBBR1JPX05VTUJFUlMuRk9VUixcclxuICAgICAgICBBR1JPX05VTUJFUlMuVEhSRUUsXHJcbiAgICAgICAgQUdST19OVU1CRVJTLlRXTyxcclxuICAgIF07XHJcbiAgICAvKiogUmV0b3JuYSB0cnVlIHNlIGEgc3RyaW5nIGNvbnTDqW0gYXBlbmFzIGxldHJhcyAqL1xyXG4gICAgc3RhdGljIGlzT25seUxldHRlcnMoc3RyOiBOdWxsYWJsZVN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghc3RyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIC9eW0EtWmEtel0rJC8udGVzdChzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBSZXRvcm5hIHRydWUgc2UgYSBzdHJpbmcgY29udMOpbSBwZWxvIG1lbm9zIHVtYSBsZXRyYSAqL1xyXG4gICAgc3RhdGljIGhhc0xldHRlcnMoc3RyOiBOdWxsYWJsZVN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghc3RyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIC9bQS1aYS16XS8udGVzdChzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBSZXRvcm5hIHRydWUgc2UgYSBzdHJpbmcgY29udMOpbSBhcGVuYXMgbsO6bWVyb3MgKi9cclxuICAgIHN0YXRpYyBpc09ubHlOdW1iZXJzKHN0cjogTnVsbGFibGVTdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXN0cikge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAvXlxcZCskLy50ZXN0KHN0cik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFJldG9ybmEgdHJ1ZSBzZSBhIHN0cmluZyBjb250w6ltIHBlbG8gbWVub3MgdW0gbsO6bWVybyAqL1xyXG4gICAgc3RhdGljIGhhc051bWJlcnMoc3RyOiBOdWxsYWJsZVN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghc3RyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIC9cXGQvLnRlc3Qoc3RyKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIGEgc3RyaW5nIGVzdMOhIHZhemlhLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNFbXB0eShzdHI6IE51bGxhYmxlU3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHN0ciAmJiBBZ3JvU3RyaW5nVXRpbHMuaXNTdHJpbmcoc3RyKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gc3RyPy50cmltKCk/Lmxlbmd0aCA9PT0gQUdST19OVU1CRVJTLlpFUk87XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgYSBzdHJpbmcgbsOjbyBlc3TDoSB2YXppYS5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzTm90RW1wdHkoc3RyOiBOdWxsYWJsZVN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChzdHIgJiYgQWdyb1N0cmluZ1V0aWxzLmlzU3RyaW5nKHN0cikpIHtcclxuICAgICAgICAgICAgcmV0dXJuICFBZ3JvU3RyaW5nVXRpbHMuaXNFbXB0eShzdHIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFZlcmlmaWNhIHNlIGEgc3RyaW5nIMOpIG51bGEsIGluZGVmaW5pZGEgb3UgY29udMOpbSBhcGVuYXMgZXNwYcOnb3MgZW0gYnJhbmNvICovXHJcbiAgICBzdGF0aWMgaXNCbGFuayhzdHI6IE51bGxhYmxlU3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICFzdHIgfHwgQUdST19SRUdFWC5vbmx5QmxhbmtTcGFjZXMudGVzdChzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBWZXJpZmljYSBzZSBhIHN0cmluZyBuw6NvIMOpIG51bGEsIGluZGVmaW5pZGEgb3UgY29udMOpbSBhcGVuYXMgZXNwYcOnb3MgZW0gYnJhbmNvICovXHJcbiAgICBzdGF0aWMgaXNOb3RCbGFuayhzdHI6IE51bGxhYmxlU3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICFBZ3JvU3RyaW5nVXRpbHMuaXNCbGFuayhzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlIGVzcGHDp29zIGVtIGJyYW5jbyBkbyBpbsOtY2lvIGUgZG8gZmltIGRhIHN0cmluZy5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIHRyaW1Ub051bGwoc3RyOiBOdWxsYWJsZVN0cmluZyk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgIGlmICghc3RyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB0cmltbWVkID0gc3RyLnRyaW0oKTtcclxuICAgICAgICByZXR1cm4gdHJpbW1lZCA9PT0gXCJcIiA/IG51bGwgOiB0cmltbWVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29tcGFyYSBkdWFzIHN0cmluZ3MgaWdub3JhbmRvIGRpZmVyZW7Dp2FzIGVudHJlIG1hacO6c2N1bGFzIGUgbWluw7pzY3VsYXMuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBlcXVhbHNJZ25vcmVDYXNlKHN0cjE6IE51bGxhYmxlU3RyaW5nLCBzdHIyOiBOdWxsYWJsZVN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBzdHIxPy50b0xvd2VyQ2FzZSgpID09PSBzdHIyPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29tcGFyYSBkdWFzIHN0cmluZ3MgY29uc2lkZXJhbmRvIGRpZmVyZW7Dp2FzIGVudHJlIG1hacO6c2N1bGFzIGUgbWluw7pzY3VsYXMuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBlcXVhbHMoc3RyMTogTnVsbGFibGVTdHJpbmcsIHN0cjI6IE51bGxhYmxlU3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHN0cjEgPT09IHN0cjI7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHJldmVyc2Uoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBzdHIuc3BsaXQoXCJcIikucmV2ZXJzZSgpLmpvaW4oXCJcIik7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzRW1haWwoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gQUdST19SRUdFWC5pc0VtYWlsLnRlc3Qoc3RyKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNQb3NpdGl2ZUludGVnZXIoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gQUdST19SRUdFWC5wb3NpdGl2ZUludGVnZXIudGVzdChzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBSZXRvcm5hIHRydWUgc2UgYSBzdHJpbmcgw6kgdW1hIHN0cmluZyB2w6FsaWRhIChuw6NvIG51bGwsIG7Do28gdW5kZWZpbmVkLCBuw6NvIHZhemlhKSAqL1xyXG4gICAgc3RhdGljIGlzU3RyaW5nKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPiBBR1JPX05VTUJFUlMuWkVSTztcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNQb3NpdGl2ZURlY2ltYWwoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gQUdST19SRUdFWC5wb3NpdGl2ZURlY2ltYWwudGVzdChzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc1ppcENvZGUoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gQUdST19SRUdFWC56aXBDb2RlLnRlc3Qoc3RyKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNVVUlEKHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIEFHUk9fUkVHRVguaXNVVUlELnRlc3Qoc3RyKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNOdW1iZXIoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gW0FHUk9fUkVHRVguaXNOdW1iZXIudGVzdChzdHIpLCBBR1JPX1JFR0VYLmlzRGVjaW1hbC50ZXN0KHN0cildLmluY2x1ZGVzKHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyB2YWxpZGF0ZUNQRihjcGY6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNwZiA9IGNwZi5yZXBsYWNlKC9cXEQvZywgXCJcIik7XHJcblxyXG4gICAgICAgIGlmIChjcGYubGVuZ3RoICE9PSBBR1JPX05VTUJFUlMuRUxFVkVOIHx8IC9eKFxcZClcXDErJC8udGVzdChjcGYpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGNhbGNWZXJpZmllciA9IChjcGY6IHN0cmluZywgbGVuZ3RoOiBudW1iZXIpOiBudW1iZXIgPT4ge1xyXG4gICAgICAgICAgICBsZXQgc3VtID0gQUdST19OVU1CRVJTLlpFUk87XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBBR1JPX05VTUJFUlMuWkVSTzsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBzdW0gKz0gcGFyc2VJbnQoY3BmW2ldLCBBR1JPX05VTUJFUlMuVEVOKSAqIChsZW5ndGggKyBBR1JPX05VTUJFUlMuT05FIC0gaSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gc3VtICUgQUdST19OVU1CRVJTLkVMRVZFTjtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCA8IEFHUk9fTlVNQkVSUy5UV08gPyBBR1JPX05VTUJFUlMuWkVSTyA6IEFHUk9fTlVNQkVSUy5FTEVWRU4gLSByZXN1bHQ7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc3QgZGlnaXQxID0gY2FsY1ZlcmlmaWVyKGNwZiwgQUdST19OVU1CRVJTLk5JTkUpO1xyXG4gICAgICAgIGNvbnN0IGRpZ2l0MiA9IGNhbGNWZXJpZmllcihjcGYsIEFHUk9fTlVNQkVSUy5URU4pO1xyXG5cclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICBkaWdpdDEgPT09IHBhcnNlSW50KGNwZltBR1JPX05VTUJFUlMuTklORV0sIEFHUk9fTlVNQkVSUy5URU4pICYmIGRpZ2l0MiA9PT0gcGFyc2VJbnQoY3BmW0FHUk9fTlVNQkVSUy5URU5dLCBBR1JPX05VTUJFUlMuVEVOKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXRlY3RhIGF1dG9tYXRpY2FtZW50ZSBzZSDDqSBDTlBKIGFudGlnbyBvdSBub3ZvIGZvcm1hdG8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyB2YWxpZGF0ZUNOUEooY25wajogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFjbnBqKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY25waiA9IGNucGoudHJpbSgpO1xyXG5cclxuICAgICAgICAvLyBTZSBjb250w6ltIGxldHJhcyDihpIgdmFsaWRhIGZvcm1hdG8gYWxmYW51bcOpcmljb1xyXG4gICAgICAgIGlmIChBZ3JvU3RyaW5nVXRpbHMuaGFzTGV0dGVycyhjbnBqKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gQWdyb1N0cmluZ1V0aWxzLnZhbGlkYXRlQ05QSkFsZmFudW1lcmljbyhjbnBqKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENhc28gY29udHLDoXJpbywgdmFsaWRhIGNvbW8gQ05QSiB0cmFkaWNpb25hbFxyXG4gICAgICAgIHJldHVybiBBZ3JvU3RyaW5nVXRpbHMudmFsaWRhdGVDTlBKQW50aWdvKGNucGopO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhIG8gQ05QSiB0cmFkaWNpb25hbCAoc29tZW50ZSBuw7ptZXJvcylcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgdmFsaWRhdGVDTlBKQW50aWdvKGNucGo6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNucGogPSBjbnBqLnJlcGxhY2UoL1xcRC9nLCBcIlwiKTtcclxuXHJcbiAgICAgICAgaWYgKCFBZ3JvU3RyaW5nVXRpbHMuaXNPbmx5TnVtYmVycyhjbnBqKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjbnBqLmxlbmd0aCAhPT0gQUdST19OVU1CRVJTLkZPVVJURUVOKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKC9eKFxcZClcXDF7MTN9JC8udGVzdChjbnBqKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgc29tYSA9IEFHUk9fTlVNQkVSUy5aRVJPO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBBR1JPX05VTUJFUlMuWkVSTzsgaSA8IEFHUk9fTlVNQkVSUy5UV0VMVkU7IGkrKykge1xyXG4gICAgICAgICAgICBzb21hICs9IHBhcnNlSW50KGNucGouY2hhckF0KGkpLCBBR1JPX05VTUJFUlMuVEVOKSAqIEFncm9TdHJpbmdVdGlscy5DTlBKX1RSQURJQ0lPTkFMX1BFU09TXzFbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCByZXN0byA9IHNvbWEgJSBBR1JPX05VTUJFUlMuRUxFVkVOO1xyXG4gICAgICAgIGNvbnN0IGRpZ2l0bzEgPSByZXN0byA8IEFHUk9fTlVNQkVSUy5UV08gPyBBR1JPX05VTUJFUlMuWkVSTyA6IEFHUk9fTlVNQkVSUy5FTEVWRU4gLSByZXN0bztcclxuXHJcbiAgICAgICAgc29tYSA9IEFHUk9fTlVNQkVSUy5aRVJPO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBBR1JPX05VTUJFUlMuWkVSTzsgaSA8IEFHUk9fTlVNQkVSUy5USElSVEVFTjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHNvbWEgKz0gcGFyc2VJbnQoY25wai5jaGFyQXQoaSksIEFHUk9fTlVNQkVSUy5URU4pICogQWdyb1N0cmluZ1V0aWxzLkNOUEpfVFJBRElDSU9OQUxfUEVTT1NfMltpXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzdG8gPSBzb21hICUgQUdST19OVU1CRVJTLkVMRVZFTjtcclxuICAgICAgICBjb25zdCBkaWdpdG8yID0gcmVzdG8gPCBBR1JPX05VTUJFUlMuVFdPID8gQUdST19OVU1CRVJTLlpFUk8gOiBBR1JPX05VTUJFUlMuRUxFVkVOIC0gcmVzdG87XHJcblxyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIHBhcnNlSW50KGNucGouY2hhckF0KEFHUk9fTlVNQkVSUy5UV0VMVkUpLCBBR1JPX05VTUJFUlMuVEVOKSA9PT0gZGlnaXRvMSAmJlxyXG4gICAgICAgICAgICBwYXJzZUludChjbnBqLmNoYXJBdChBR1JPX05VTUJFUlMuVEhJUlRFRU4pLCBBR1JPX05VTUJFUlMuVEVOKSA9PT0gZGlnaXRvMlxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGEgbyBDTlBKIGVtIGZvcm1hdG8gYWxmYW51bcOpcmljbyAocGFkcsOjbyAyMDI2KVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZUNOUEpBbGZhbnVtZXJpY28oY25wajogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFBZ3JvU3RyaW5nVXRpbHMuaXNTdHJpbmcoY25waikpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUmVtb3ZlIGNhcmFjdGVyZXMgZXNwZWNpYWlzIChwb250b3MsIGJhcnJhLCB0cmHDp28sIGVzcGHDp29zKVxyXG4gICAgICAgIGNvbnN0IGNsZWFuID0gY25wai5yZXBsYWNlKC9bXkEtWmEtejAtOV0vZywgXCJcIikudG9VcHBlckNhc2UoKTtcclxuXHJcbiAgICAgICAgLy8gTyBDTlBKIGRldmUgdGVyIGV4YXRhbWVudGUgMTQgcG9zacOnw7Vlc1xyXG4gICAgICAgIGlmIChjbGVhbi5sZW5ndGggIT09IEFHUk9fTlVNQkVSUy5GT1VSVEVFTikge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBWZXJpZmljYSBzZSBow6EgcGVsbyBtZW5vcyB1bWEgbGV0cmEgZSB1bSBuw7ptZXJvXHJcbiAgICAgICAgaWYgKCFBZ3JvU3RyaW5nVXRpbHMuaGFzTGV0dGVycyhjbGVhbikgfHwgIUFncm9TdHJpbmdVdGlscy5oYXNOdW1iZXJzKGNsZWFuKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDYWxjdWxhIG8gcHJpbWVpcm8gZMOtZ2l0byB2ZXJpZmljYWRvclxyXG4gICAgICAgIGNvbnN0IHBlc29zMSA9IEFncm9TdHJpbmdVdGlscy5DTlBKX0FMRkFOVU1FUklDT19QRVNPU18xO1xyXG4gICAgICAgIGNvbnN0IHBlc29zMiA9IEFncm9TdHJpbmdVdGlscy5DTlBKX0FMRkFOVU1FUklDT19QRVNPU18yO1xyXG5cclxuICAgICAgICAvLyBQZWdhIG9zIDEyIHByaW1laXJvcyBjYXJhY3RlcmVzXHJcbiAgICAgICAgY29uc3QgYmFzZSA9IGNsZWFuLnN1YnN0cmluZyhBR1JPX05VTUJFUlMuWkVSTywgQUdST19OVU1CRVJTLlRXRUxWRSk7XHJcbiAgICAgICAgY29uc3QgZHZJbmZvcm1hZG8gPSBjbGVhbi5zdWJzdHJpbmcoQUdST19OVU1CRVJTLlRXRUxWRSwgQUdST19OVU1CRVJTLkZPVVJURUVOKTtcclxuXHJcbiAgICAgICAgY29uc3QgY2FsY3VsYURWID0gKHN0cjogc3RyaW5nLCBwZXNvczogbnVtYmVyW10pOiBudW1iZXIgPT4ge1xyXG4gICAgICAgICAgICBsZXQgc29tYSA9IEFHUk9fTlVNQkVSUy5aRVJPO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gQUdST19OVU1CRVJTLlpFUk87IGkgPCBwZXNvcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hhciA9IHN0ci5jaGFyQXQoaSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhc2NpaVZhbHVlID0gY2hhci5jaGFyQ29kZUF0KDApIC0gQUdST19OVU1CRVJTLkZPUlRZX0VJR0hUOyAvLyBjb25mb3JtZSBkb2N1bWVudG8gKDQ4ID0gJzAnKVxyXG4gICAgICAgICAgICAgICAgc29tYSArPSBhc2NpaVZhbHVlICogcGVzb3NbaV07IC8vIGFzY2lpVmFsdWUgasOhIGNhbGN1bGFkbyBhIHBhcnRpciBkbyBlbnVtIEZPUlRZX0VJR0hUXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgcmVzdG8gPSBzb21hICUgQUdST19OVU1CRVJTLkVMRVZFTjtcclxuICAgICAgICAgICAgY29uc3QgZGlnaXRvID0gQUdST19OVU1CRVJTLkVMRVZFTiAtIHJlc3RvO1xyXG4gICAgICAgICAgICByZXR1cm4gZGlnaXRvID4gQUdST19OVU1CRVJTLk5JTkUgPyBBR1JPX05VTUJFUlMuWkVSTyA6IGRpZ2l0bzsgLy8gc2VndWUgbWVzbWEgcmVncmEgZG8gQ05QSiB0cmFkaWNpb25hbFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IGR2MSA9IGNhbGN1bGFEVihiYXNlLCBwZXNvczEpO1xyXG4gICAgICAgIGNvbnN0IGR2MiA9IGNhbGN1bGFEVihiYXNlICsgZHYxLnRvU3RyaW5nKCksIHBlc29zMik7XHJcblxyXG4gICAgICAgIGNvbnN0IGR2Q2FsY3VsYWRvID0gYCR7ZHYxfSR7ZHYyfWA7XHJcblxyXG4gICAgICAgIHJldHVybiBkdkNhbGN1bGFkbyA9PT0gZHZJbmZvcm1hZG87XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIENhbGN1bGEgYSBkaWZlcmVuw6dhIGVudHJlIGR1YXMgc3RyaW5ncyBlbSB0ZXJtb3MgZGUgbsO6bWVybyBkZSBjYXJhY3RlcmVzIGRpZmVyZW50ZXMgKi9cclxuICAgIHN0YXRpYyBkaWZmZXJlbmNlKHN0cjE6IHN0cmluZywgc3RyMjogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgICAgICBjb25zdCBsZW4xID0gc3RyMS5sZW5ndGg7XHJcbiAgICAgICAgY29uc3QgbGVuMiA9IHN0cjIubGVuZ3RoO1xyXG4gICAgICAgIGxldCBkaWZmID0gTWF0aC5hYnMobGVuMSAtIGxlbjIpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBBR1JPX05VTUJFUlMuWkVSTzsgaSA8IE1hdGgubWluKGxlbjEsIGxlbjIpOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHN0cjFbaV0gIT09IHN0cjJbaV0pIHtcclxuICAgICAgICAgICAgICAgIGRpZmYrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGlmZjtcclxuICAgIH1cclxuXHJcbiAgICAvKiogVmVyaWZpY2Egc2Ugc3RyMSB0ZXJtaW5hIGNvbSBzdHIyICovXHJcbiAgICBzdGF0aWMgZW5kc1dpdGgoc3RyMTogc3RyaW5nLCBzdHIyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gc3RyMS5lbmRzV2l0aChzdHIyKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogVmVyaWZpY2Egc2Ugc3RyMSBjb21lw6dhIGNvbSBzdHIyICovXHJcbiAgICBzdGF0aWMgc3RhcnRzV2l0aChzdHIxOiBzdHJpbmcsIHN0cjI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBzdHIxLnN0YXJ0c1dpdGgoc3RyMik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFZlcmlmaWNhIHNlIHN0cjEgY29udMOpbSBzdHIyICovXHJcbiAgICBzdGF0aWMgY29udGFpbnMoc3RyMTogc3RyaW5nLCBzdHIyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gc3RyMS5pbmNsdWRlcyhzdHIyKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogVmVyaWZpY2Egc2Ugc3RyMSBjb21lw6dhIGNvbSBzdHIyLCBpZ25vcmFuZG8gbWFpw7pzY3VsYXMgZSBtaW7DunNjdWxhcyAqL1xyXG4gICAgc3RhdGljIHN0YXJ0c1dpdGhJZ25vcmVDYXNlKHN0cjE6IHN0cmluZywgc3RyMjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHN0cjEudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHN0cjIudG9Mb3dlckNhc2UoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFZlcmlmaWNhIHNlIHN0cjEgdGVybWluYSBjb20gc3RyMiwgaWdub3JhbmRvIG1hacO6c2N1bGFzIGUgbWluw7pzY3VsYXMgKi9cclxuICAgIHN0YXRpYyBlbmRzV2l0aElnbm9yZUNhc2Uoc3RyMTogc3RyaW5nLCBzdHIyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gc3RyMS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKHN0cjIudG9Mb3dlckNhc2UoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEludmVydGUgbyBjYXNvIGRlIGNhZGEgbGV0cmEgbmEgc3RyaW5nICovXHJcbiAgICBzdGF0aWMgc3dhcENhc2Uoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBzd2FwcGVkID0gXCJcIjtcclxuICAgICAgICBmb3IgKGxldCBpID0gQUdST19OVU1CRVJTLlpFUk87IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgY2hhciA9IHN0cltpXTtcclxuICAgICAgICAgICAgc3dhcHBlZCArPSBjaGFyID09PSBjaGFyLnRvVXBwZXJDYXNlKCkgPyBjaGFyLnRvTG93ZXJDYXNlKCkgOiBjaGFyLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzd2FwcGVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBDb2xvY2EgYSBwcmltZWlyYSBsZXRyYSBkYSBzdHJpbmcgZW0gbWFpw7pzY3VsbyAqL1xyXG4gICAgc3RhdGljIGNhcGl0YWxpemUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBzdHIuY2hhckF0KEFHUk9fTlVNQkVSUy5aRVJPKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBDb2xvY2EgYSBwcmltZWlyYSBsZXRyYSBkYSBzdHJpbmcgZW0gbWluw7pzY3VsbyAqL1xyXG4gICAgc3RhdGljIHVuY2FwaXRhbGl6ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHN0ci5jaGFyQXQoQUdST19OVU1CRVJTLlpFUk8pLnRvTG93ZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIENvbnRhIG8gbsO6bWVybyBkZSBvY29ycsOqbmNpYXMgZGUgdW1hIHN1YnN0cmluZyBkZW50cm8gZGUgdW1hIHN0cmluZyAqL1xyXG4gICAgc3RhdGljIGNvdW50TWF0Y2hlcyhzdHI6IHN0cmluZywgc3Vic3RyaW5nOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChzdWJzdHJpbmcsIFwiZ1wiKTtcclxuICAgICAgICBjb25zdCBtYXRjaGVzID0gc3RyLm1hdGNoKHJlZ2V4KTtcclxuICAgICAgICByZXR1cm4gbWF0Y2hlcyA/IG1hdGNoZXMubGVuZ3RoIDogQUdST19OVU1CRVJTLlpFUk87XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmUgdW1hIG3DoXNjYXJhIHNpbXBsZXMgZGEgc3RyaW5nIGZvcm5lY2lkYS5PIHBhZHLDo28gZGUgbcOhc2NhcmFzIMOpIGRlZmluaWRvIHBlbG8gZW51bSBBZ3JvU3RyaW5nTWFza3Mgb3VcclxuICAgICAqIHBvZGUgc2VyIHVtYSBzdHJpbmcgcGVyc29uYWxpemFkYSBvbmRlICc5JyByZXByZXNlbnRhIHVtIGTDrWdpdG8gYSBzZXIgbWFudGlkbyBkYSBzdHJpbmcuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyByZW1vdmVNYXNrKHZhbHVlOiBzdHJpbmcsIG1hc2s6IEFncm9TdHJpbmdNYXNrcyB8IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCAhbWFzaykge3JldHVybiB2YWx1ZTt9XHJcblxyXG4gICAgICAgIGNvbnN0IHZhbHVlQ2hhcnMgPSB2YWx1ZS50b1N0cmluZygpLnNwbGl0KFwiXCIpO1xyXG4gICAgICAgIGNvbnN0IG1hc2tDaGFycyA9IG1hc2suc3BsaXQoXCJcIik7XHJcbiAgICAgICAgbGV0IHVubWFza2VkVmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIGxldCBqID0gMDtcclxuXHJcbiAgICAgICAgY29uc3QgaXNEaWdpdCA9IChjOiBzdHJpbmcpID0+IC9cXGQvLnRlc3QoYyk7XHJcbiAgICAgICAgY29uc3QgaXNBbHBoYSA9IChjOiBzdHJpbmcpID0+IC9bQS1aYS16XS8udGVzdChjKTtcclxuICAgICAgICBjb25zdCBpc0FsbnVtID0gKGM6IHN0cmluZykgPT4gL1tBLVphLXowLTldLy50ZXN0KGMpO1xyXG5cclxuICAgICAgICBjb25zdCBleHRyYWN0TmV4dCA9ICh0ZXN0Rm46IChjOiBzdHJpbmcpID0+IGJvb2xlYW4pOiBzdHJpbmcgfCBudWxsID0+IHtcclxuICAgICAgICAgICAgbGV0IGsgPSBqO1xyXG4gICAgICAgICAgICB3aGlsZSAoayA8IHZhbHVlQ2hhcnMubGVuZ3RoICYmICF0ZXN0Rm4odmFsdWVDaGFyc1trXSkpIHtrKys7fVxyXG4gICAgICAgICAgICBpZiAoayA8IHZhbHVlQ2hhcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmb3VuZCA9IHZhbHVlQ2hhcnNba107XHJcbiAgICAgICAgICAgICAgICBqID0gayArIDE7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZm91bmQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZmFsbGJhY2sgPSB2YWx1ZUNoYXJzW2pdO1xyXG4gICAgICAgICAgICBqKys7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxsYmFjaztcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCBwcm9jZXNzTWFza0NoYXIgPSAobWFza0NoYXI6IHN0cmluZyk6IHZvaWQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaiA+PSB2YWx1ZUNoYXJzLmxlbmd0aCkge3JldHVybjt9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gdmFsdWVDaGFyc1tqXTtcclxuICAgICAgICAgICAgc3dpdGNoIChtYXNrQ2hhcikge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIjlcIjpcclxuICAgICAgICAgICAgICAgICAgICB1bm1hc2tlZFZhbHVlICs9IGV4dHJhY3ROZXh0KGlzRGlnaXQpID8/IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiQVwiOlxyXG4gICAgICAgICAgICAgICAgICAgIHVubWFza2VkVmFsdWUgKz0gZXh0cmFjdE5leHQoaXNBbHBoYSkgPz8gXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2VwYXJhdG9yKG1hc2tDaGFyLCBjdXJyZW50KTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IGhhbmRsZVNlcGFyYXRvciA9IChtYXNrQ2hhcjogc3RyaW5nLCBjdXJyZW50OiBzdHJpbmcpOiB2b2lkID0+IHtcclxuICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT09IG1hc2tDaGFyKSB7XHJcbiAgICAgICAgICAgICAgICBqKys7IC8vIHNlcGFyYWRvciBwcmVzZW50ZSBubyB2YWxvclxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpc0FsbnVtKGN1cnJlbnQpKSB7XHJcbiAgICAgICAgICAgICAgICB1bm1hc2tlZFZhbHVlICs9IGN1cnJlbnQ7XHJcbiAgICAgICAgICAgICAgICBqKys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gc2UgZm9yIHBvbnR1YcOnw6NvIGRpZmVyZW50ZSwgYXBlbmFzIGlnbm9yYSAobsOjbyBjb25zb21lIGopXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBtYXNrQ2hhciBvZiBtYXNrQ2hhcnMpIHtcclxuICAgICAgICAgICAgcHJvY2Vzc01hc2tDaGFyKG1hc2tDaGFyKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB1bm1hc2tlZFZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXBsaWNhIHVtYSBtw6FzY2FyYSBzaW1wbGVzIMOgIHN0cmluZyBmb3JuZWNpZGEuTyBwYWRyw6NvIGRlIG3DoXNjYXJhcyDDqSBkZWZpbmlkbyBwZWxvIGVudW0gQWdyb1N0cmluZ01hc2tzIG91XHJcbiAgICAgKiBwb2RlIHNlciB1bWEgc3RyaW5nIHBlcnNvbmFsaXphZGEgb25kZSAnOScgcmVwcmVzZW50YSB1bSBkw61naXRvIGEgc2VyIHN1YnN0aXR1w61kbyBwZWxvIGNhcmFjdGVyZSBjb3JyZXNwb25kZW50ZVxyXG4gICAgICogZGEgc3RyaW5nLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgYXBwbHlNYXNrKHZhbHVlOiBzdHJpbmcsIG1hc2s6IEFncm9TdHJpbmdNYXNrcyB8IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVDaGFycyA9IEFncm9TdHJpbmdVdGlscy5yZW1vdmVNYXNrKHZhbHVlLCBtYXNrKS50b1N0cmluZygpLnNwbGl0KFwiXCIpO1xyXG5cclxuICAgICAgICBjb25zdCBtYXNrQ2hhcnMgPSBtYXNrLnNwbGl0KFwiXCIpO1xyXG4gICAgICAgIGxldCBtYXNrZWRWYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgbGV0IGogPSBBR1JPX05VTUJFUlMuWkVSTztcclxuICAgICAgICBmb3IgKGNvbnN0IG1hc2tDaGFyIG9mIG1hc2tDaGFycykge1xyXG4gICAgICAgICAgICBpZiAoaiA+PSB2YWx1ZUNoYXJzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG1hc2tDaGFyID09PSBcIjlcIikge1xyXG4gICAgICAgICAgICAgICAgbWFza2VkVmFsdWUgKz0gdmFsdWVDaGFyc1tqXTtcclxuICAgICAgICAgICAgICAgIGogKz0gQUdST19OVU1CRVJTLk9ORTsgLy8gaW5jcmVtZW50IGV4dHJhY3RlZCBwZXIgU29uYXIgcmVjb21tZW5kYXRpb25cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG1hc2tlZFZhbHVlICs9IG1hc2tDaGFyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtYXNrZWRWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNWYWxpZChzdHI6IE51bGxhYmxlU3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBzdHIgIT09IFwidW5kZWZpbmVkXCIgJiYgc3RyICE9PSBudWxsICYmIHRoaXMuaXNOb3RFbXB0eShzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0ludmFsaWQoc3RyOiBOdWxsYWJsZVN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhQWdyb1N0cmluZ1V0aWxzLmlzVmFsaWQoc3RyKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNJU09EYXRlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gQUdST19SRUdFWC5pc0lTT0RhdGUudGVzdCh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzSVNPVGltZSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIEFHUk9fUkVHRVguaXNJU09UaW1lLnRlc3QodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0lTT0RhdGV0aW1lKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gQUdST19SRUdFWC5pc0lTT0RhdGVUaW1lLnRlc3QodmFsdWUpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,28 @@
1
+ import { __decorate } from "tslib";
2
+ import { Pipe } from "@angular/core";
3
+ import { AgroStringUtils } from "../../common";
4
+ import { AgroStringMasks } from "../../enums";
5
+ let CnpjCpfPipe = class CnpjCpfPipe {
6
+ transform(value, ...args) {
7
+ if (typeof value !== "string" && typeof value === "number") {
8
+ value = value === null || value === void 0 ? void 0 : value.toString();
9
+ }
10
+ if (typeof value !== "string") {
11
+ return value;
12
+ }
13
+ if (AgroStringUtils.validateCNPJ(value)) {
14
+ return AgroStringUtils.applyMask(value, AgroStringMasks.CNPJ);
15
+ }
16
+ if (AgroStringUtils.validateCPF(value)) {
17
+ return AgroStringUtils.applyMask(value, AgroStringMasks.CPF);
18
+ }
19
+ return value;
20
+ }
21
+ };
22
+ CnpjCpfPipe = __decorate([
23
+ Pipe({
24
+ name: "cnpjCpf",
25
+ })
26
+ ], CnpjCpfPipe);
27
+ export { CnpjCpfPipe };
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY25wai1jcGYucGlwZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsicGlwZS9jbnBqLWNwZi9jbnBqLWNwZi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFLOUMsSUFBYSxXQUFXLEdBQXhCLE1BQWEsV0FBVztJQUNwQixTQUFTLENBQUMsS0FBYyxFQUFFLEdBQUcsSUFBZTtRQUN4QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDeEQsS0FBSyxHQUFHLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxRQUFRLEVBQUUsQ0FBQztTQUM3QjtRQUVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzNCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsSUFBSSxlQUFlLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3JDLE9BQU8sZUFBZSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pFO1FBRUQsSUFBSSxlQUFlLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3BDLE9BQU8sZUFBZSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2hFO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKLENBQUE7QUFuQlksV0FBVztJQUh2QixJQUFJLENBQUM7UUFDRixJQUFJLEVBQUUsU0FBUztLQUNsQixDQUFDO0dBQ1csV0FBVyxDQW1CdkI7U0FuQlksV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBZ3JvU3RyaW5nVXRpbHMgfSBmcm9tIFwiLi4vLi4vY29tbW9uXCI7XHJcbmltcG9ydCB7IEFncm9TdHJpbmdNYXNrcyB9IGZyb20gXCIuLi8uLi9lbnVtc1wiO1xyXG5cclxuQFBpcGUoe1xyXG4gICAgbmFtZTogXCJjbnBqQ3BmXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbnBqQ3BmUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gICAgdHJhbnNmb3JtKHZhbHVlOiB1bmtub3duLCAuLi5hcmdzOiB1bmtub3duW10pOiB1bmtub3duIHtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlPy50b1N0cmluZygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoQWdyb1N0cmluZ1V0aWxzLnZhbGlkYXRlQ05QSih2YWx1ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIEFncm9TdHJpbmdVdGlscy5hcHBseU1hc2sodmFsdWUsIEFncm9TdHJpbmdNYXNrcy5DTlBKKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChBZ3JvU3RyaW5nVXRpbHMudmFsaWRhdGVDUEYodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBBZ3JvU3RyaW5nVXRpbHMuYXBwbHlNYXNrKHZhbHVlLCBBZ3JvU3RyaW5nTWFza3MuQ1BGKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==