dmencu 2.0.20 → 2.0.21

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/dist/client/server/table-tem.d.ts +3 -0
  2. package/dist/client/server/table-tem.js +239 -0
  3. package/dist/client/server/types-dmencu.d.ts +48 -0
  4. package/dist/client/server/types-dmencu.js +33 -0
  5. package/dist/client/unlogged/css/bootstrap.min.css +6 -6
  6. package/dist/client/unlogged/tsconfig.json +14 -14
  7. package/dist/server/server/table-barrios.js +1 -1
  8. package/dist/server/server/table-comunas copy.d.ts +2 -0
  9. package/dist/server/server/table-comunas copy.js +28 -0
  10. package/dist/server/server/table-comunas.js +2 -2
  11. package/dist/server/server/table-encuestadores.js +7 -7
  12. package/dist/server/server/table-fracciones.js +1 -1
  13. package/dist/server/server/table-hogares.js +1 -1
  14. package/dist/server/server/table-hogares_sup.js +1 -1
  15. package/dist/server/server/table-manzanas.js +1 -1
  16. package/dist/server/server/table-parametros.js +1 -1
  17. package/dist/server/server/table-personal.js +7 -7
  18. package/dist/server/server/table-personal_rol.js +7 -7
  19. package/dist/server/server/table-personas.js +1 -1
  20. package/dist/server/server/table-personas_sup.js +1 -1
  21. package/dist/server/server/table-radios.js +3 -3
  22. package/dist/server/server/table-recepcionistas.js +1 -1
  23. package/dist/server/server/table-visitas.js +1 -1
  24. package/dist/server/server/table-visitas_sup.js +1 -1
  25. package/dist/server/server/table-viviendas.js +1 -1
  26. package/dist/unlogged/unlogged/css/bootstrap.min.css +6 -6
  27. package/dist/unlogged/unlogged/server/table-tem.d.ts +3 -0
  28. package/dist/unlogged/unlogged/server/table-tem.js +239 -0
  29. package/dist/unlogged/unlogged/server/types-dmencu.d.ts +48 -0
  30. package/dist/unlogged/unlogged/server/types-dmencu.js +33 -0
  31. package/dist/unlogged/unlogged/tsconfig.json +14 -14
  32. package/dist/unlogged/unlogged/unlogged/abrir-formulario.d.ts +13 -0
  33. package/dist/unlogged/unlogged/unlogged/abrir-formulario.js +109 -0
  34. package/dist/unlogged/unlogged/unlogged/adapt.d.ts +0 -0
  35. package/dist/unlogged/unlogged/unlogged/adapt.js +8 -0
  36. package/dist/unlogged/unlogged/unlogged/bypass-formulario.d.ts +202 -0
  37. package/dist/unlogged/unlogged/unlogged/bypass-formulario.js +1100 -0
  38. package/dist/unlogged/unlogged/unlogged/redux-formulario.d.ts +349 -0
  39. package/dist/unlogged/unlogged/unlogged/redux-formulario.js +318 -0
  40. package/dist/unlogged/unlogged/unlogged/render-formulario.d.ts +86 -0
  41. package/dist/unlogged/unlogged/unlogged/render-formulario.js +1692 -0
  42. package/dist/unlogged/unlogged/unlogged/render-general.d.ts +127 -0
  43. package/dist/unlogged/unlogged/unlogged/render-general.js +176 -0
  44. package/dist/unlogged/unlogged/unlogged/tipos.d.ts +486 -0
  45. package/dist/unlogged/unlogged/unlogged/tipos.js +22 -0
  46. package/dist/unlogged/unlogged/unlogged/unlogged.d.ts +1 -0
  47. package/dist/unlogged/unlogged/unlogged/unlogged.js +180 -0
  48. package/install/actualizar-2023-05-14.sql +38 -38
  49. package/install/actualizar_inconvar.sql +28 -28
  50. package/install/agregados_tem.sql +4 -4
  51. package/install/asignar_desasignar_tareas_tem_trg.sql +43 -43
  52. package/install/metadatos/permisos.tab +11 -11
  53. package/install/metadatos/roles.tab +10 -10
  54. package/install/metadatos/roles_permisos.tab +94 -94
  55. package/install/metadatos/tipovar.tab +9 -9
  56. package/install/sincro_tareas_areas_tareas_tem_trg.sql +29 -29
  57. package/install/usuarios_trg.sql +41 -41
  58. package/install/validar_tareas_tem_trg.sql +67 -67
  59. package/package.json +91 -91
@@ -0,0 +1,127 @@
1
+ import * as React from "react";
2
+ import * as memoizeBadTyped from "memoize-one";
3
+ export declare var memoize: typeof memoizeBadTyped.default;
4
+ import { Store, Action } from "redux";
5
+ import { TipoVariables } from "./tipos";
6
+ export declare const materialIoIconsSvgPath: {
7
+ Add: string;
8
+ ArrowBack: string;
9
+ Assignment: string;
10
+ Check: string;
11
+ CheckBoxOutlineBlankOutlined: string;
12
+ CheckBoxOutlined: string;
13
+ ChevronLeft: string;
14
+ ChevronRight: string;
15
+ Clear: string;
16
+ Close: string;
17
+ Code: string;
18
+ Create: string;
19
+ Delete: string;
20
+ DeleteForever: string;
21
+ DeleteOutline: string;
22
+ Description: string;
23
+ EmojiObjects: string;
24
+ ExitToApp: string;
25
+ ExpandLess: string;
26
+ ExpandMore: string;
27
+ FormatLineSpacing: string;
28
+ Forward: string;
29
+ ForwardOutlined: string;
30
+ Info: string;
31
+ KeyboardArrowUp: string;
32
+ KeyboardArrowDown: string;
33
+ Label: string;
34
+ LocalAtm: string;
35
+ Location: string;
36
+ Menu: string;
37
+ Navigation: string;
38
+ NavigationDown: string;
39
+ RemoveShoppingCart: string;
40
+ Save: string;
41
+ Search: string;
42
+ Send: string;
43
+ Settings: string;
44
+ SyncAlt: string;
45
+ TrendingFlat: string;
46
+ Warning: string;
47
+ };
48
+ export declare const ICON: {
49
+ Add: () => React.JSX.Element;
50
+ ArrowBack: () => React.JSX.Element;
51
+ Assignment: () => React.JSX.Element;
52
+ Check: () => React.JSX.Element;
53
+ CheckBoxOutlineBlankOutlined: () => React.JSX.Element;
54
+ CheckBoxOutlined: () => React.JSX.Element;
55
+ ChevronLeft: () => React.JSX.Element;
56
+ ChevronRight: () => React.JSX.Element;
57
+ Clear: () => React.JSX.Element;
58
+ Close: () => React.JSX.Element;
59
+ Code: () => React.JSX.Element;
60
+ Create: () => React.JSX.Element;
61
+ Delete: () => React.JSX.Element;
62
+ DeleteForever: () => React.JSX.Element;
63
+ DeleteOutline: () => React.JSX.Element;
64
+ Description: () => React.JSX.Element;
65
+ EmojiObjects: () => React.JSX.Element;
66
+ ExitToApp: () => React.JSX.Element;
67
+ ExpandLess: () => React.JSX.Element;
68
+ ExpandMore: () => React.JSX.Element;
69
+ FormatLineSpacing: () => React.JSX.Element;
70
+ Forward: () => React.JSX.Element;
71
+ ForwardOutlined: () => React.JSX.Element;
72
+ Info: () => React.JSX.Element;
73
+ KeyboardArrowUp: () => React.JSX.Element;
74
+ KeyboardArrowDown: () => React.JSX.Element;
75
+ Label: () => React.JSX.Element;
76
+ LocalAtm: () => React.JSX.Element;
77
+ Location: () => React.JSX.Element;
78
+ Menu: () => React.JSX.Element;
79
+ Navigation: () => React.JSX.Element;
80
+ NavigationDown: () => React.JSX.Element;
81
+ RemoveShoppingCart: () => React.JSX.Element;
82
+ Save: () => React.JSX.Element;
83
+ Search: () => React.JSX.Element;
84
+ Send: () => React.JSX.Element;
85
+ Settings: () => React.JSX.Element;
86
+ SyncAlt: () => React.JSX.Element;
87
+ TrendingFlat: () => React.JSX.Element;
88
+ Warning: () => React.JSX.Element;
89
+ };
90
+ export type Styles = React.CSSProperties;
91
+ export type OnUpdate<T> = (data: T) => void;
92
+ export type InputTypes = 'date' | 'number' | 'tel' | 'text';
93
+ export declare function adaptarTipoVarCasillero(casilleroDataType: TipoVariables | 'opciones' | 'si_no'): InputTypes;
94
+ export declare const scrollToTop: () => void;
95
+ export declare const scrollToBottom: () => void;
96
+ export declare function ScrollTop(props: any): React.JSX.Element;
97
+ export type FocusOpts = {
98
+ moveToElement: boolean;
99
+ moveBehavior?: 'auto' | 'smooth';
100
+ };
101
+ export declare function focusToId(id: string, opts: FocusOpts, cb?: (e: HTMLElement) => void): void;
102
+ export type IDispatchers = {
103
+ RESET_OPCIONES: Function;
104
+ };
105
+ export declare function ReseterForm(props: {
106
+ onTryAgain: () => void;
107
+ dispatchers: IDispatchers;
108
+ mensaje: string;
109
+ }): React.JSX.Element;
110
+ export declare class RenderAndCaptureError extends React.Component<{
111
+ dispatchers: IDispatchers;
112
+ mensajeRetorno: string;
113
+ }, {
114
+ hasError: boolean;
115
+ error: Error | {};
116
+ info?: any;
117
+ }> {
118
+ constructor(props: any);
119
+ componentDidCatch(error: Error, info: any): void;
120
+ render(): React.ReactNode;
121
+ }
122
+ export declare function RenderPrincipal<T, T2 extends Action>(props: {
123
+ store: Store<T, T2>;
124
+ dispatchers: IDispatchers;
125
+ mensajeRetorno: string;
126
+ children: React.ReactNode;
127
+ }): React.JSX.Element;
@@ -0,0 +1,176 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "react", "react-redux", "memoize-one", "like-ar", "./redux-formulario", "@mui/material"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RenderAndCaptureError = exports.scrollToBottom = exports.scrollToTop = exports.ICON = exports.materialIoIconsSvgPath = exports.memoize = void 0;
13
+ exports.adaptarTipoVarCasillero = adaptarTipoVarCasillero;
14
+ exports.ScrollTop = ScrollTop;
15
+ exports.focusToId = focusToId;
16
+ exports.ReseterForm = ReseterForm;
17
+ exports.RenderPrincipal = RenderPrincipal;
18
+ const React = require("react");
19
+ const react_redux_1 = require("react-redux");
20
+ const memoizeBadTyped = require("memoize-one");
21
+ const likeAr = require("like-ar");
22
+ //@ts-ignore el módulo memoize-one no tiene bien puesto los tipos en su .d.ts
23
+ exports.memoize = memoizeBadTyped;
24
+ const redux_formulario_1 = require("./redux-formulario");
25
+ const material_1 = require("@mui/material");
26
+ // https://material-ui.com/components/material-icons/
27
+ exports.materialIoIconsSvgPath = {
28
+ Add: "M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z",
29
+ ArrowBack: "M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z",
30
+ Assignment: "M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm2 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z",
31
+ Check: "M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z",
32
+ CheckBoxOutlineBlankOutlined: "M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z",
33
+ CheckBoxOutlined: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zM17.99 9l-1.41-1.42-6.59 6.59-2.58-2.57-1.42 1.41 4 3.99z",
34
+ ChevronLeft: "M14.71 6.71a.9959.9959 0 00-1.41 0L8.71 11.3c-.39.39-.39 1.02 0 1.41l4.59 4.59c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L10.83 12l3.88-3.88c.39-.39.38-1.03 0-1.41z",
35
+ ChevronRight: "M9.29 6.71c-.39.39-.39 1.02 0 1.41L13.17 12l-3.88 3.88c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0l4.59-4.59c.39-.39.39-1.02 0-1.41L10.7 6.7c-.38-.38-1.02-.38-1.41.01z",
36
+ Clear: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z",
37
+ Close: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z",
38
+ Code: "M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z",
39
+ Create: "M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 00-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z",
40
+ Delete: "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z",
41
+ DeleteForever: "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z",
42
+ DeleteOutline: "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM8 9h8v10H8V9zm7.5-5l-1-1h-5l-1 1H5v2h14V4z",
43
+ Description: "M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z",
44
+ EmojiObjects: "M12 3c-.46 0-.93.04-1.4.14-2.76.53-4.96 2.76-5.48 5.52-.48 2.61.48 5.01 2.22 6.56.43.38.66.91.66 1.47V19c0 1.1.9 2 2 2h.28c.35.6.98 1 1.72 1s1.38-.4 1.72-1H14c1.1 0 2-.9 2-2v-2.31c0-.55.22-1.09.64-1.46C18.09 13.95 19 12.08 19 10c0-3.87-3.13-7-7-7zm2 16h-4v-1h4v1zm0-2h-4v-1h4v1zm-1.5-5.59V14h-1v-2.59L9.67 9.59l.71-.71L12 10.5l1.62-1.62.71.71-1.83 1.82z",
45
+ ExitToApp: "M10.09 15.59L11.5 17l5-5-5-5-1.41 1.41L12.67 11H3v2h9.67l-2.58 2.59zM19 3H5c-1.11 0-2 .9-2 2v4h2V5h14v14H5v-4H3v4c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z",
46
+ ExpandLess: "M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z",
47
+ ExpandMore: "M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z",
48
+ FormatLineSpacing: "M6 7h2.5L5 3.5 1.5 7H4v10H1.5L5 20.5 8.5 17H6V7zm4-2v2h12V5H10zm0 14h12v-2H10v2zm0-6h12v-2H10v2z",
49
+ Forward: "M12 8V4l8 8-8 8v-4H4V8z",
50
+ ForwardOutlined: "M14 8.83L17.17 12 14 15.17V14H6v-4h8V8.83M12 4v4H4v8h8v4l8-8-8-8z",
51
+ Info: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z",
52
+ KeyboardArrowUp: "M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z",
53
+ KeyboardArrowDown: "M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z",
54
+ Label: "M17.63 5.84C17.27 5.33 16.67 5 16 5L5 5.01C3.9 5.01 3 5.9 3 7v10c0 1.1.9 1.99 2 1.99L16 19c.67 0 1.27-.33 1.63-.84L22 12l-4.37-6.16z",
55
+ LocalAtm: "M11 17h2v-1h1c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1h-3v-1h4V8h-2V7h-2v1h-1c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h3v1H9v2h2v1zm9-13H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4V6h16v12z",
56
+ Location: "M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7m0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5",
57
+ Menu: "M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z",
58
+ Navigation: "M12 2L4.5 20.29l.71.71L12 18l6.79 3 .71-.71z",
59
+ NavigationDown: "M12 22L4.5 3.71l.71 -.71L12 6l6.79 -3 .71 .71z",
60
+ RemoveShoppingCart: "M22.73 22.73L2.77 2.77 2 2l-.73-.73L0 2.54l4.39 4.39 2.21 4.66-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h7.46l1.38 1.38c-.5.36-.83.95-.83 1.62 0 1.1.89 2 1.99 2 .67 0 1.26-.33 1.62-.84L21.46 24l1.27-1.27zM7.42 15c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h2.36l2 2H7.42zm8.13-2c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H6.54l9.01 9zM7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2z",
61
+ Save: "M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z",
62
+ Search: "M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z",
63
+ Send: "M2.01 21L23 12 2.01 3 2 10l15 2-15 2z",
64
+ Settings: "M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z",
65
+ SyncAlt: "M22 8l-4-4v3H3v2h15v3l4-4zM2 16l4 4v-3h15v-2H6v-3l-4 4z",
66
+ TrendingFlat: "M22 12l-4-4v3H3v2h15v3z",
67
+ Warning: "M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z",
68
+ };
69
+ exports.ICON = likeAr(exports.materialIoIconsSvgPath).map(svgText => () => React.createElement(material_1.SvgIcon, null,
70
+ React.createElement("path", { d: svgText }))).plain();
71
+ function adaptarTipoVarCasillero(casilleroDataType) {
72
+ const adapter = {
73
+ 'opciones': 'number',
74
+ 'si_no': 'number',
75
+ 'numero': 'number',
76
+ 'hora': 'tel',
77
+ 'horas': 'number',
78
+ 'texto': 'text',
79
+ 'fecha': 'text'
80
+ };
81
+ return adapter[casilleroDataType];
82
+ }
83
+ const scrollToTop = () => {
84
+ window.scroll({ behavior: 'smooth', top: 0, left: 0 });
85
+ };
86
+ exports.scrollToTop = scrollToTop;
87
+ const scrollToBottom = () => {
88
+ window.scroll({ behavior: 'smooth', top: document.body.clientHeight - window.innerHeight, left: 0 });
89
+ };
90
+ exports.scrollToBottom = scrollToBottom;
91
+ function ScrollTop(props) {
92
+ const { children } = props;
93
+ //const classes = useStylesScrollTop();
94
+ // Note that you normally won't need to set the window ref as useScrollTrigger
95
+ // will default to window.
96
+ // This is only being set here because the demo is in an iframe.
97
+ const trigger = (0, material_1.useScrollTrigger)({
98
+ disableHysteresis: true,
99
+ threshold: 100,
100
+ });
101
+ return (React.createElement(material_1.Zoom, { in: trigger },
102
+ React.createElement("div", { onClick: exports.scrollToTop, role: "presentation" /*className={classes.root}*/ }, children)));
103
+ }
104
+ function focusToId(id, opts, cb) {
105
+ var element = document.getElementById(id);
106
+ var padre = element;
107
+ while (padre && padre.className != 'pregunta' && padre != document.body)
108
+ padre = padre.parentElement;
109
+ if (padre && padre.className == 'pregunta')
110
+ element = padre;
111
+ if (element) {
112
+ if (cb) {
113
+ cb(element);
114
+ }
115
+ else {
116
+ element.focus();
117
+ if (opts.moveToElement) {
118
+ element.scrollIntoView();
119
+ window.scroll({ behavior: opts.moveBehavior || 'auto', top: window.scrollY - 100, left: 0 });
120
+ }
121
+ }
122
+ }
123
+ }
124
+ function ReseterForm(props) {
125
+ const dispatch = (0, react_redux_1.useDispatch)();
126
+ return React.createElement(React.Fragment, null,
127
+ React.createElement(material_1.Button, { variant: "outlined", onClick: () => {
128
+ dispatch(props.dispatchers.RESET_OPCIONES({}));
129
+ props.onTryAgain();
130
+ } }, props.mensaje));
131
+ }
132
+ class RenderAndCaptureError extends React.Component {
133
+ constructor(props) {
134
+ super(props);
135
+ this.state = { hasError: false, error: {} };
136
+ }
137
+ componentDidCatch(error, info) {
138
+ this.setState({ hasError: true, error, info });
139
+ }
140
+ render() {
141
+ if (this.state.hasError) {
142
+ return React.createElement(React.Fragment, null,
143
+ React.createElement(material_1.Typography, null, "Hubo un problema en la programaci\u00F3n de la pantalla."),
144
+ React.createElement(ReseterForm, { dispatchers: this.props.dispatchers, mensaje: this.props.mensajeRetorno, onTryAgain: () => this.setState({ hasError: false, error: {} }) }),
145
+ React.createElement(material_1.Button, { variant: "outlined", color: "secondary", onClick: () => {
146
+ (0, redux_formulario_1.gotoSincronizar)();
147
+ } }, "ir a la pantalla de sincronizaci\u00F3n"),
148
+ React.createElement(material_1.Typography, null, "Error detectado:"),
149
+ React.createElement(material_1.Typography, null, this.state.error instanceof Error ? this.state.error.message : 'unknown error'),
150
+ React.createElement(material_1.Typography, null, JSON.stringify(this.state.info)));
151
+ }
152
+ return this.props.children;
153
+ }
154
+ }
155
+ exports.RenderAndCaptureError = RenderAndCaptureError;
156
+ const theme = (0, material_1.createTheme)({
157
+ overrides: {
158
+ MuiCssBaseline: {
159
+ '@global': {
160
+ html: {
161
+ WebkitFontSmoothing: 'auto',
162
+ },
163
+ },
164
+ },
165
+ },
166
+ });
167
+ function RenderPrincipal(props) {
168
+ return React.createElement(React.StrictMode, null,
169
+ React.createElement(react_redux_1.Provider, { store: props.store },
170
+ React.createElement(material_1.ThemeProvider, { theme: theme },
171
+ React.createElement(RenderAndCaptureError, { dispatchers: props.dispatchers, mensajeRetorno: props.mensajeRetorno },
172
+ React.createElement(material_1.CssBaseline, null),
173
+ props.children))));
174
+ }
175
+ });
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWdlbmVyYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdW5sb2dnZWQvcmVuZGVyLWdlbmVyYWwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQWdGQSwwREFXQztJQVdELDhCQWlCQztJQU9ELDhCQWdCQztJQUlELGtDQVVDO0lBOENELDBDQVdDO0lBck5ELCtCQUErQjtJQUcvQiw2Q0FBaUU7SUFDakUsK0NBQStDO0lBQy9DLGtDQUFrQztJQUVsQyw2RUFBNkU7SUFDbEUsUUFBQSxPQUFPLEdBQWtDLGVBQWUsQ0FBQztJQUVwRSx5REFBa0Q7SUFFbEQsNENBVXVCO0lBSXZCLHFEQUFxRDtJQUN4QyxRQUFBLHNCQUFzQixHQUFDO1FBQ2hDLEdBQUcsRUFBQyxxQ0FBcUM7UUFDekMsU0FBUyxFQUFDLDhEQUE4RDtRQUN4RSxVQUFVLEVBQUUsZ09BQWdPO1FBQzVPLEtBQUssRUFBRSxtREFBbUQ7UUFDMUQsNEJBQTRCLEVBQUUsNEZBQTRGO1FBQzFILGdCQUFnQixFQUFFLHVKQUF1SjtRQUN6SyxXQUFXLEVBQUUsd0tBQXdLO1FBQ3JMLFlBQVksRUFBRSwwS0FBMEs7UUFDeEwsS0FBSyxFQUFFLHVHQUF1RztRQUM5RyxLQUFLLEVBQUUsdUdBQXVHO1FBQzlHLElBQUksRUFBRSw0RkFBNEY7UUFDbEcsTUFBTSxFQUFFLHFKQUFxSjtRQUM3SixNQUFNLEVBQUMsK0VBQStFO1FBQ3RGLGFBQWEsRUFBQyw2TUFBNk07UUFDM04sYUFBYSxFQUFDLHlGQUF5RjtRQUN2RyxXQUFXLEVBQUUsZ0lBQWdJO1FBQzdJLFlBQVksRUFBRSxtV0FBbVc7UUFDalgsU0FBUyxFQUFFLHNLQUFzSztRQUNqTCxVQUFVLEVBQUUsZ0RBQWdEO1FBQzVELFVBQVUsRUFBRSw4Q0FBOEM7UUFDMUQsaUJBQWlCLEVBQUUsa0dBQWtHO1FBQ3JILE9BQU8sRUFBRSx5QkFBeUI7UUFDbEMsZUFBZSxFQUFFLG1FQUFt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Qy9CLENBQUM7S0FDSjtJQTlCRCxzREE4QkM7SUFFRCxNQUFNLEtBQUssR0FBRyxJQUFBLHNCQUFXLEVBQUM7UUFDeEIsU0FBUyxFQUFFO1lBQ1QsY0FBYyxFQUFFO2dCQUNkLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUU7d0JBQ0osbUJBQW1CLEVBQUUsTUFBTTtxQkFDNUI7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsU0FBZ0IsZUFBZSxDQUFzQixLQUFvRztRQUNySixPQUFPLG9CQUFDLEtBQUssQ0FBQyxVQUFVO1lBQ3BCLG9CQUFDLHNCQUFRLElBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUN4QixvQkFBQyx3QkFBYSxJQUFDLEtBQUssRUFBRSxLQUFLO29CQUN2QixvQkFBQyxxQkFBcUIsSUFBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7d0JBQ3ZGLG9CQUFDLHNCQUFXLE9BQUc7d0JBQ2QsS0FBSyxDQUFDLFFBQVEsQ0FDSyxDQUNaLENBQ1QsQ0FDSSxDQUFBO0lBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0ICogYXMgUmVhY3RET00gZnJvbSBcInJlYWN0LWRvbVwiO1xyXG5pbXBvcnQge3VzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZn0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFByb3ZpZGVyLCB1c2VTZWxlY3RvciwgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjsgXHJcbmltcG9ydCAqIGFzIG1lbW9pemVCYWRUeXBlZCBmcm9tIFwibWVtb2l6ZS1vbmVcIjtcclxuaW1wb3J0ICogYXMgbGlrZUFyIGZyb20gXCJsaWtlLWFyXCI7XHJcblxyXG4vL0B0cy1pZ25vcmUgZWwgbcOzZHVsbyBtZW1vaXplLW9uZSBubyB0aWVuZSBiaWVuIHB1ZXN0byBsb3MgdGlwb3MgZW4gc3UgLmQudHNcclxuZXhwb3J0IHZhciBtZW1vaXplOnR5cGVvZiBtZW1vaXplQmFkVHlwZWQuZGVmYXVsdCA9IG1lbW9pemVCYWRUeXBlZDtcclxuXHJcbmltcG9ydCB7Z290b1NpbmNyb25pemFyfSBmcm9tIFwiLi9yZWR1eC1mb3JtdWxhcmlvXCJcclxuXHJcbmltcG9ydCB7XHJcbiAgICBBcHBCYXIsIEJhZGdlLCBCdXR0b24sIEJ1dHRvbkdyb3VwLCBDYXJkLCBDaGlwLCBDaXJjdWxhclByb2dyZXNzLCBDc3NCYXNlbGluZSwgXHJcbiAgICBEaWFsb2csIERpYWxvZ0FjdGlvbnMsIERpYWxvZ0NvbnRlbnQsIERpYWxvZ0NvbnRlbnRUZXh0LCBcclxuICAgIERpYWxvZ1RpdGxlLCBEaXZpZGVyLCBGYWIsIEdyaWQsIEljb25CdXR0b24sIElucHV0QmFzZSwgXHJcbiAgICBMaXN0LCBMaXN0SXRlbSwgTGlzdEl0ZW1JY29uLCBMaXN0SXRlbVRleHQsIERyYXdlciwgXHJcbiAgICBNZW51LCBNZW51SXRlbSwgUGFwZXIsIFN2Z0ljb24sIFN3aXRjaCwgXHJcbiAgICBUYWJsZSwgVGFibGVCb2R5LCBUYWJsZUNlbGwsIFRhYmxlSGVhZCwgVGFibGVSb3csIFRleHRGaWVsZCwgVGhlbWVQcm92aWRlciwgVG9vbGJhciwgVHlwb2dyYXBoeSwgWm9vbSxcclxuICAgIHVzZVNjcm9sbFRyaWdnZXIsXHJcbiAgICAvLyBzdHlsZXM6XHJcbiAgICBjcmVhdGVTdHlsZXMsIFRoZW1lLCBjcmVhdGVUaGVtZVxyXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XHJcbmltcG9ydCB7IFN0b3JlLCBBY3Rpb24gfSBmcm9tIFwicmVkdXhcIjtcclxuaW1wb3J0IHsgVGlwb1ZhcmlhYmxlcyB9IGZyb20gXCIuL3RpcG9zXCI7XHJcblxyXG4vLyBodHRwczovL21hdGVyaWFsLXVpLmNvbS9jb21wb25lbnRzL21hdGVyaWFsLWljb25zL1xyXG5leHBvcnQgY29uc3QgbWF0ZXJpYWxJb0ljb25zU3ZnUGF0aD17XHJcbiAgICBBZGQ6XCJNMTkgMTNoLTZ2NmgtMnYtNkg1di0yaDZWNWgydjZoNnYyelwiLFxyXG4gICAgQXJyb3dCYWNrOlwiTTIwIDExSDcuODNsNS41OS01LjU5TDEyIDRsLTggOCA4IDggMS40MS0xLjQxTDcuODMgMTNIMjB2LTJ6XCIsXHJcbiAgICBBc3NpZ25tZW50OiBcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMiAxNEg3di0yaDd2MnptMy00SDd2LTJoMTB2MnptMC00SDdWN2gxMHYyelwiLFxyXG4gICAgQ2hlY2s6IFwiTTkgMTYuMTdMNC44MyAxMmwtMS40MiAxLjQxTDkgMTkgMjEgN2wtMS40MS0xLjQxelwiLFxyXG4gICAgQ2hlY2tCb3hPdXRsaW5lQmxhbmtPdXRsaW5lZDogXCJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIixcclxuICAgIENoZWNrQm94T3V0bGluZWQ6IFwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpNMTcuOTkgOWwtMS40MS0xLjQyLTYuNTkgNi41OS0yLjU4LTIuNTctMS40MiAxLjQxIDQgMy45OXpcIixcclxuICAgIENoZXZyb25MZWZ0OiBcIk0xNC43MSA2LjcxYS45OTU5Ljk5NTkgMCAwMC0xLjQxIDBMOC43MSAxMS4zYy0uMzkuMzktLjM5IDEuMDIgMCAxLjQxbDQuNTkgNC41OWMuMzkuMzkgMS4wMi4zOSAxLjQxIDAgLjM5LS4zOS4zOS0xLjAyIDAtMS40MUwxMC44MyAxMmwzLjg4LTMuODhjLjM5LS4zOS4zOC0xLjAzIDAtMS40MXpcIixcclxuICAgIENoZXZyb25SaWdodDogXCJNOS4yOSA2LjcxYy0uMzkuMzktLjM5IDEuMDIgMCAxLjQxTDEzLjE3IDEybC0zLjg4IDMuODhjLS4zOS4zOS0uMzkgMS4wMiAwIDEuNDEuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5Yy4zOS0uMzkuMzktMS4wMiAwLTEuNDFMMTAuNyA2LjdjLS4zOC0uMzgtMS4wMi0uMzgtMS40MS4wMXpcIixcclxuICAgIENsZWFyOiBcIk0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6XCIsXHJcbiAgICBDbG9zZTogXCJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyelwiLFxyXG4gICAgQ29kZTogXCJNOS40IDE2LjZMNC44IDEybDQuNi00LjZMOCA2bC02IDYgNiA2IDEuNC0xLjR6bTUuMiAwbDQuNi00LjYtNC42LTQuNkwxNiA2bDYgNi02IDYtMS40LTEuNHpcIixcclxuICAgIENyZWF0ZTogXCJNMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzIDE3LjI1ek0yMC43MSA3LjA0Yy4zOS0uMzkuMzktMS4wMiAwLTEuNDFsLTIuMzQtMi4zNGEuOTk1OS45OTU5IDAgMDAtMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3pcIixcclxuICAgIERlbGV0ZTpcIk02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6TTE5IDRoLTMuNWwtMS0xaC01bC0xIDFINXYyaDE0VjR6XCIsXHJcbiAgICBEZWxldGVGb3JldmVyOlwiTTYgMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjdINnYxMnptMi40Ni03LjEybDEuNDEtMS40MUwxMiAxMi41OWwyLjEyLTIuMTIgMS40MSAxLjQxTDEzLjQxIDE0bDIuMTIgMi4xMi0xLjQxIDEuNDFMMTIgMTUuNDFsLTIuMTIgMi4xMi0xLjQxLTEuNDFMMTAuNTkgMTRsLTIuMTMtMi4xMnpNMTUuNSA0bC0xLTFoLTVsLTEgMUg1djJoMTRWNHpcIixcclxuICAgIERlbGV0ZU91dGxpbmU6XCJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek04IDloOHYxMEg4Vjl6bTcuNS01bC0xLTFoLTVsLTEgMUg1djJoMTRWNHpcIixcclxuICAgIERlc2NyaXB0aW9uOiBcIk0xNCAySDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTIgMTZIOHYtMmg4djJ6bTAtNEg4di0yaDh2MnptLTMtNVYzLjVMMTguNSA5SDEzelwiLFxyXG4gICAgRW1vamlPYmplY3RzOiBcIk0xMiAzYy0uNDYgMC0uOTMuMDQtMS40LjE0LTIuNzYuNTMtNC45NiAyLjc2LTUuNDggNS41Mi0uNDggMi42MS40OCA1LjAxIDIuMjIgNi41Ni40My4zOC42Ni45MS42NiAxLjQ3VjE5YzAgMS4xLjkgMiAyIDJoLjI4Yy4zNS42Ljk4IDEgMS43MiAxczEuMzgtLjQgMS43Mi0xSDE0YzEuMSAwIDItLjkgMi0ydi0yLjMxYzAtLjU1LjIyLTEuMDkuNjQtMS40NkMxOC4wOSAxMy45NSAxOSAxMi4wOCAxOSAxMGMwLTMuODctMy4xMy03LTctN3ptMiAxNmgtNHYtMWg0djF6bTAtMmgtNHYtMWg0djF6bS0xLjUtNS41OVYxNGgtMXYtMi41OUw5LjY3IDkuNTlsLjcxLS43MUwxMiAxMC41bDEuNjItMS42Mi43MS43MS0xLjgzIDEuODJ6XCIsXHJcbiAgICBFeGl0VG9BcHA6IFwiTTEwLjA5IDE1LjU5TDExLjUgMTdsNS01LTUtNS0xLjQxIDEuNDFMMTIuNjcgMTFIM3YyaDkuNjdsLTIuNTggMi41OXpNMTkgM0g1Yy0xLjExIDAtMiAuOS0yIDJ2NGgyVjVoMTR2MTRINXYtNEgzdjRjMCAxLjEuODkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIixcclxuICAgIEV4cGFuZExlc3M6IFwiTTEyIDhsLTYgNiAxLjQxIDEuNDFMMTIgMTAuODNsNC41OSA0LjU4TDE4IDE0elwiLFxyXG4gICAgRXhwYW5kTW9yZTogXCJNMTYuNTkgOC41OUwxMiAxMy4xNyA3LjQxIDguNTkgNiAxMGw2IDYgNi02elwiLFxyXG4gICAgRm9ybWF0TGluZVNwYWNpbmc6IFwiTTYgN2gyLjVMNSAzLjUgMS41IDdINHYxMEgxLjVMNSAyMC41IDguNSAxN0g2Vjd6bTQtMnYyaDEyVjVIMTB6bTAgMTRoMTJ2LTJIMTB2MnptMC02aDEydi0ySDEwdjJ6XCIsXHJcbiAgICBGb3J3YXJkOiBcIk0xMiA4VjRsOCA4LTggOHYtNEg0Vjh6XCIsXHJcbiAgICBGb3J3YXJkT3V0bGluZWQ6IFwiTTE0IDguODNMMTcuMTcgMTIgMTQgMTUuMTdWMTRINnYtNGg4VjguODNNMTIgNHY0SDR2OGg4djRsOC04LTgtOHpcIixcclxuICAgIEluZm86IFwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTZoMnY2em0wLThoLTJWN2gydjJ6XCIsXHJcbiAgICBLZXlib2FyZEFycm93VXA6IFwiTTcuNDEgMTUuNDFMMTIgMTAuODNsNC41OSA0LjU4TDE4IDE0bC02LTYtNiA2elwiLFxyXG4gICAgS2V5Ym9hcmRBcnJvd0Rvd246IFwiTTcuNDEgOC41OUwxMiAxMy4xN2w0LjU5LTQuNThMMTggMTBsLTYgNi02LTYgMS40MS0xLjQxelwiLFxyXG4gICAgTGFiZWw6IFwiTTE3LjYzIDUuODRDMTcuMjcgNS4zMyAxNi42NyA1IDE2IDVMNSA1LjAxQzMuOSA1LjAxIDMgNS45IDMgN3YxMGMwIDEuMS45IDEuOTkgMiAxLjk5TDE2IDE5Yy42NyAwIDEuMjctLjMzIDEuNjMtLjg0TDIyIDEybC00LjM3LTYuMTZ6XCIsXHJcbiAgICBMb2NhbEF0bTogXCJNMTEgMTdoMnYtMWgxYy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTFoLTN2LTFoNFY4aC0yVjdoLTJ2MWgtMWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoM3YxSDl2MmgydjF6bTktMTNINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmMwLTEuMTEtLjg5LTItMi0yem0wIDE0SDRWNmgxNnYxMnpcIixcclxuICAgIExvY2F0aW9uOiBcIk0xMiAyQzguMTMgMiA1IDUuMTMgNSA5YzAgNS4yNSA3IDEzIDcgMTNzNy03Ljc1IDctMTNjMC0zLjg3LTMuMTMtNy03LTdtMCA5LjVjLTEuMzggMC0yLjUtMS4xMi0yLjUtMi41czEuMTItMi41IDIuNS0yLjUgMi41IDEuMTIgMi41IDIuNS0xLjEyIDIuNS0yLjUgMi41XCIsXHJcbiAgICBNZW51OiBcIk0zIDE4aDE4di0ySDN2MnptMC01aDE4di0ySDN2MnptMC03djJoMThWNkgzelwiLFxyXG4gICAgTmF2aWdhdGlvbjogXCJNMTIgMkw0LjUgMjAuMjlsLjcxLjcxTDEyIDE4bDYuNzkgMyAuNzEtLjcxelwiLFxyXG4gICAgTmF2aWdhdGlvbkRvd246IFwiTTEyIDIyTDQuNSAzLjcxbC43MSAtLjcxTDEyIDZsNi43OSAtMyAuNzEgLjcxelwiLFxyXG4gICAgUmVtb3ZlU2hvcHBpbmdDYXJ0OiBcIk0yMi43MyAyMi43M0wyLjc3IDIuNzcgMiAybC0uNzMtLjczTDAgMi41NGw0LjM5IDQuMzkgMi4yMSA0LjY2LTEuMzUgMi40NWMtLjE2LjI4LS4yNS42MS0uMjUuOTYgMCAxLjEuOSAyIDIgMmg3LjQ2bDEuMzggMS4zOGMtLjUuMzYtLjgzLjk1LS44MyAxLjYyIDAgMS4xLjg5IDIgMS45OSAyIC42NyAwIDEuMjYtLjMzIDEuNjItLjg0TDIxLjQ2IDI0bDEuMjctMS4yN3pNNy40MiAxNWMtLjE0IDAtLjI1LS4xMS0uMjUtLjI1bC4wMy0uMTIuOS0xLjYzaDIuMzZsMiAySDcuNDJ6bTguMTMtMmMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNsMy41OC02LjQ5Yy4wOC0uMTQuMTItLjMxLjEyLS40OCAwLS41NS0uNDUtMS0xLTFINi41NGw5LjAxIDl6TTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6XCIsXHJcbiAgICBTYXZlOlwiTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0elwiLFxyXG4gICAgU2VhcmNoOiBcIk0xNS41IDE0aC0uNzlsLS4yOC0uMjdDMTUuNDEgMTIuNTkgMTYgMTEuMTEgMTYgOS41IDE2IDUuOTEgMTMuMDkgMyA5LjUgM1MzIDUuOTEgMyA5LjUgNS45MSAxNiA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0elwiLFxyXG4gICAgU2VuZDogXCJNMi4wMSAyMUwyMyAxMiAyLjAxIDMgMiAxMGwxNSAyLTE1IDJ6XCIsXHJcbiAgICBTZXR0aW5nczogXCJNMTUuOTUgMTAuNzhjLjAzLS4yNS4wNS0uNTEuMDUtLjc4cy0uMDItLjUzLS4wNi0uNzhsMS42OS0xLjMyYy4xNS0uMTIuMTktLjM0LjEtLjUxbC0xLjYtMi43N2MtLjEtLjE4LS4zMS0uMjQtLjQ5LS4xOGwtMS45OS44Yy0uNDItLjMyLS44Ni0uNTgtMS4zNS0uNzhMMTIgMi4zNGMtLjAzLS4yLS4yLS4zNC0uNC0uMzRIOC40Yy0uMiAwLS4zNi4xNC0uMzkuMzRsLS4zIDIuMTJjLS40OS4yLS45NC40Ny0xLjM1Ljc4bC0xLjk5LS44Yy0uMTgtLjA3LS4zOSAwLS40OS4xOGwtMS42IDIuNzdjLS4xLjE4LS4wNi4zOS4xLjUxbDEuNjkgMS4zMmMtLjA0LjI1LS4wNy41Mi0uMDcuNzhzLjAyLjUzLjA2Ljc4TDIuMzcgMTIuMWMtLjE1LjEyLS4xOS4zNC0uMS41MWwxLjYgMi43N2MuMS4xOC4zMS4yNC40OS4xOGwxLjk5LS44Yy40Mi4zMi44Ni41OCAxLjM1Ljc4bC4zIDIuMTJjLjA0LjIuMi4zNC40LjM0aDMuMmMuMiAwIC4zNy0uMTQuMzktLjM0bC4zLTIuMTJjLjQ5LS4yLjk0LS40NyAxLjM1LS43OGwxLjk5LjhjLjE4LjA3LjM5IDAgLjQ5LS4xOGwxLjYtMi43N2MuMS0uMTguMDYtLjM5LS4xLS41MWwtMS42Ny0xLjMyek0xMCAxM2MtMS42NSAwLTMtMS4zNS0zLTNzMS4zNS0zIDMtMyAzIDEuMzUgMyAzLTEuMzUgMy0zIDN6XCIsXHJcbiAgICBTeW5jQWx0OlwiTTIyIDhsLTQtNHYzSDN2MmgxNXYzbDQtNHpNMiAxNmw0IDR2LTNoMTV2LTJINnYtM2wtNCA0elwiLFxyXG4gICAgVHJlbmRpbmdGbGF0OlwiTTIyIDEybC00LTR2M0gzdjJoMTV2M3pcIixcclxuICAgIFdhcm5pbmc6IFwiTTEgMjFoMjJMMTIgMiAxIDIxem0xMi0zaC0ydi0yaDJ2MnptMC00aC0ydi00aDJ2NHpcIixcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IElDT04gPSBsaWtlQXIobWF0ZXJpYWxJb0ljb25zU3ZnUGF0aCkubWFwKHN2Z1RleHQ9PiAoKSA9PlxyXG4gICAgPFN2Z0ljb24+PHBhdGggZD17c3ZnVGV4dH0vPjwvU3ZnSWNvbj5cclxuKS5wbGFpbigpO1xyXG5cclxuZXhwb3J0IHR5cGUgU3R5bGVzID0gUmVhY3QuQ1NTUHJvcGVydGllcztcclxuXHJcbmV4cG9ydCB0eXBlIE9uVXBkYXRlPFQ+ID0gKGRhdGE6VCk9PnZvaWRcclxuXHJcbmV4cG9ydCB0eXBlIElucHV0VHlwZXMgPSAnZGF0ZSd8J251bWJlcid8J3RlbCd8J3RleHQnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkYXB0YXJUaXBvVmFyQ2FzaWxsZXJvKGNhc2lsbGVyb0RhdGFUeXBlOlRpcG9WYXJpYWJsZXN8J29wY2lvbmVzJ3wnc2lfbm8nKTpJbnB1dFR5cGVze1xyXG4gICAgY29uc3QgYWRhcHRlcjp7W2tleSBpbiBUaXBvVmFyaWFibGVzfCdvcGNpb25lcyd8J3NpX25vJ106SW5wdXRUeXBlc30gPSB7XHJcbiAgICAgICAgJ29wY2lvbmVzJzonbnVtYmVyJyxcclxuICAgICAgICAnc2lfbm8nOiAnbnVtYmVyJyxcclxuICAgICAgICAnbnVtZXJvJzogJ251bWJlcicsXHJcbiAgICAgICAgJ2hvcmEnOiAndGVsJyxcclxuICAgICAgICAnaG9yYXMnOiAnbnVtYmVyJyxcclxuICAgICAgICAndGV4dG8nOiAndGV4dCcsXHJcbiAgICAgICAgJ2ZlY2hhJzogJ3RleHQnXHJcbiAgICB9XHJcbiAgICByZXR1cm4gYWRhcHRlcltjYXNpbGxlcm9EYXRhVHlwZV1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHNjcm9sbFRvVG9wID0gKCkgPT4ge1xyXG4gICAgd2luZG93LnNjcm9sbCh7YmVoYXZpb3I6J3Ntb290aCcsIHRvcDowLCBsZWZ0OjB9KVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHNjcm9sbFRvQm90dG9tID0gKCkgPT4ge1xyXG4gICAgd2luZG93LnNjcm9sbCh7YmVoYXZpb3I6J3Ntb290aCcsIHRvcDpkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodC13aW5kb3cuaW5uZXJIZWlnaHQsIGxlZnQ6MH0pXHJcbn07XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFNjcm9sbFRvcChwcm9wczogYW55KSB7XHJcbiAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSBwcm9wcztcclxuICAgIC8vY29uc3QgY2xhc3NlcyA9IHVzZVN0eWxlc1Njcm9sbFRvcCgpO1xyXG4gICAgLy8gTm90ZSB0aGF0IHlvdSBub3JtYWxseSB3b24ndCBuZWVkIHRvIHNldCB0aGUgd2luZG93IHJlZiBhcyB1c2VTY3JvbGxUcmlnZ2VyXHJcbiAgICAvLyB3aWxsIGRlZmF1bHQgdG8gd2luZG93LlxyXG4gICAgLy8gVGhpcyBpcyBvbmx5IGJlaW5nIHNldCBoZXJlIGJlY2F1c2UgdGhlIGRlbW8gaXMgaW4gYW4gaWZyYW1lLlxyXG4gICAgY29uc3QgdHJpZ2dlciA9IHVzZVNjcm9sbFRyaWdnZXIoe1xyXG4gICAgICAgIGRpc2FibGVIeXN0ZXJlc2lzOiB0cnVlLFxyXG4gICAgICAgIHRocmVzaG9sZDogMTAwLFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxab29tIGluPXt0cmlnZ2VyfT5cclxuICAgICAgICAgICAgPGRpdiBvbkNsaWNrPXtzY3JvbGxUb1RvcH0gcm9sZT1cInByZXNlbnRhdGlvblwiIC8qY2xhc3NOYW1lPXtjbGFzc2VzLnJvb3R9Ki8+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvWm9vbT5cclxuICAgICk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEZvY3VzT3B0cz17XHJcbiAgICBtb3ZlVG9FbGVtZW50OiBib29sZWFuXHJcbiAgICBtb3ZlQmVoYXZpb3I/OiAnYXV0bycgfCAnc21vb3RoJ1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZm9jdXNUb0lkKGlkOnN0cmluZywgb3B0czpGb2N1c09wdHMsIGNiPzooZTpIVE1MRWxlbWVudCk9PnZvaWQpe1xyXG4gICAgdmFyIGVsZW1lbnQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG4gICAgdmFyIHBhZHJlPWVsZW1lbnQ7XHJcbiAgICB3aGlsZShwYWRyZSAmJiBwYWRyZS5jbGFzc05hbWUhPSdwcmVndW50YScgJiYgcGFkcmUhPWRvY3VtZW50LmJvZHkpIHBhZHJlID0gcGFkcmUucGFyZW50RWxlbWVudDtcclxuICAgIGlmKHBhZHJlICYmIHBhZHJlLmNsYXNzTmFtZT09J3ByZWd1bnRhJykgZWxlbWVudD1wYWRyZTtcclxuICAgIGlmKGVsZW1lbnQpe1xyXG4gICAgICAgIGlmKGNiKXtcclxuICAgICAgICAgICAgY2IoZWxlbWVudCk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICAgICAgaWYob3B0cy5tb3ZlVG9FbGVtZW50KXtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTtcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGwoe2JlaGF2aW9yOm9wdHMubW92ZUJlaGF2aW9yfHwnYXV0bycsIHRvcDp3aW5kb3cuc2Nyb2xsWS0xMDAsIGxlZnQ6MH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIElEaXNwYXRjaGVycyA9IHtSRVNFVF9PUENJT05FUzpGdW5jdGlvbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gUmVzZXRlckZvcm0ocHJvcHM6e29uVHJ5QWdhaW46KCk9PnZvaWQsIGRpc3BhdGNoZXJzOklEaXNwYXRjaGVycywgbWVuc2FqZTpzdHJpbmd9KXtcclxuICAgIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcclxuICAgIHJldHVybiA8PlxyXG4gICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVkXCJcclxuICAgICAgICAgICAgb25DbGljaz17KCk9PntcclxuICAgICAgICAgICAgICAgIGRpc3BhdGNoKHByb3BzLmRpc3BhdGNoZXJzLlJFU0VUX09QQ0lPTkVTKHt9KSk7XHJcbiAgICAgICAgICAgICAgICBwcm9wcy5vblRyeUFnYWluKCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgPntwcm9wcy5tZW5zYWplfTwvQnV0dG9uPlxyXG4gICAgPC8+O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUmVuZGVyQW5kQ2FwdHVyZUVycm9yIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFxyXG4gICAge2Rpc3BhdGNoZXJzOklEaXNwYXRjaGVycywgbWVuc2FqZVJldG9ybm86c3RyaW5nfSxcclxuICAgIHtoYXNFcnJvcjpib29sZWFuLCBlcnJvcjpFcnJvcnx7fSwgaW5mbz86YW55fVxyXG4+e1xyXG4gICAgY29uc3RydWN0b3IocHJvcHM6YW55KSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7IGhhc0Vycm9yOiBmYWxzZSwgZXJyb3I6e319O1xyXG4gICAgfVxyXG4gICAgY29tcG9uZW50RGlkQ2F0Y2goZXJyb3I6RXJyb3IsIGluZm86YW55KXtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgaGFzRXJyb3I6IHRydWUgLCBlcnJvciwgaW5mbyB9KTtcclxuICAgIH1cclxuICAgIHJlbmRlcigpe1xyXG4gICAgICAgIGlmKHRoaXMuc3RhdGUuaGFzRXJyb3Ipe1xyXG4gICAgICAgICAgICByZXR1cm4gPD5cclxuICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5Pkh1Ym8gdW4gcHJvYmxlbWEgZW4gbGEgcHJvZ3JhbWFjacOzbiBkZSBsYSBwYW50YWxsYS48L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICAgICAgICA8UmVzZXRlckZvcm0gZGlzcGF0Y2hlcnM9e3RoaXMucHJvcHMuZGlzcGF0Y2hlcnN9IG1lbnNhamU9e3RoaXMucHJvcHMubWVuc2FqZVJldG9ybm99IG9uVHJ5QWdhaW49eygpPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgaGFzRXJyb3I6IGZhbHNlLCBlcnJvcjp7fX0pXHJcbiAgICAgICAgICAgICAgICB9Lz5cclxuICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVkXCIgY29sb3I9XCJzZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdvdG9TaW5jcm9uaXphcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA+aXIgYSBsYSBwYW50YWxsYSBkZSBzaW5jcm9uaXphY2nDs248L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PkVycm9yIGRldGVjdGFkbzo8L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT57dGhpcy5zdGF0ZS5lcnJvciBpbnN0YW5jZW9mIEVycm9yID8gdGhpcy5zdGF0ZS5lcnJvci5tZXNzYWdlIDogJ3Vua25vd24gZXJyb3InfTwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PntKU09OLnN0cmluZ2lmeSh0aGlzLnN0YXRlLmluZm8pfTwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgICAgPC8+O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbjtcclxuICAgIH1cclxufVxyXG5cclxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSh7XHJcbiAgb3ZlcnJpZGVzOiB7XHJcbiAgICBNdWlDc3NCYXNlbGluZToge1xyXG4gICAgICAnQGdsb2JhbCc6IHtcclxuICAgICAgICBodG1sOiB7XHJcbiAgICAgICAgICBXZWJraXRGb250U21vb3RoaW5nOiAnYXV0bycsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgfSxcclxufSk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gUmVuZGVyUHJpbmNpcGFsPFQsVDIgZXh0ZW5kcyBBY3Rpb24+KHByb3BzOntzdG9yZTpTdG9yZTxULFQyPiwgZGlzcGF0Y2hlcnM6SURpc3BhdGNoZXJzLCBtZW5zYWplUmV0b3JubzpzdHJpbmcsIGNoaWxkcmVuOlJlYWN0LlJlYWN0Tm9kZX0pe1xyXG4gICAgcmV0dXJuIDxSZWFjdC5TdHJpY3RNb2RlPlxyXG4gICAgICAgIDxQcm92aWRlciBzdG9yZT17cHJvcHMuc3RvcmV9PlxyXG4gICAgICAgICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxyXG4gICAgICAgICAgICAgICAgPFJlbmRlckFuZENhcHR1cmVFcnJvciBkaXNwYXRjaGVycz17cHJvcHMuZGlzcGF0Y2hlcnN9IG1lbnNhamVSZXRvcm5vPXtwcm9wcy5tZW5zYWplUmV0b3Jub30+XHJcbiAgICAgICAgICAgICAgICAgICAgPENzc0Jhc2VsaW5lIC8+XHJcbiAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxyXG4gICAgICAgICAgICAgICAgPC9SZW5kZXJBbmRDYXB0dXJlRXJyb3I+XHJcbiAgICAgICAgICAgIDwvVGhlbWVQcm92aWRlcj4gICAgICAgIFxyXG4gICAgICAgIDwvUHJvdmlkZXI+XHJcbiAgICA8L1JlYWN0LlN0cmljdE1vZGU+XHJcbn1cclxuXHJcbiJdfQ==