dmencu 0.8.52 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -22,7 +22,9 @@ import {Bloque, BotonFormulario,
22
22
  IdCasillero,
23
23
  PreguntaConSiNo,
24
24
  Texto, Estructura, InformacionHdr, DatosHdrUaPpal, ConfiguracionSorteoFormulario, ResumenEstado, DatosByPassPersistibles, IdOperativo, IdEnc, Libre, UnidadAnalisis,
25
- iterator, empty, ConfiguracionHabilitarBotonFormulario
25
+ iterator, empty, ConfiguracionHabilitarBotonFormulario,
26
+ CampoPkRaiz,
27
+ ValuePkRaiz
26
28
  } from "./tipos";
27
29
  import{
28
30
  accion_abrir_formulario,
@@ -31,8 +33,9 @@ import{
31
33
  calcularDisabledBF,
32
34
  calcularPermiteBorrarBF,
33
35
  calcularResumenVivienda,
36
+ crearEncuesta,
34
37
  getDatosByPass,
35
- getFormulariosForIdVivienda,
38
+ getFormulariosForValuePkRaiz,
36
39
  getMainFormForVivienda,
37
40
  intentarBackup,
38
41
  setCalcularVariables
@@ -285,7 +288,7 @@ function SaltoDespliegue({casillero,prefijo}:{casillero:Pregunta|Opcion|Filtro,
285
288
 
286
289
  function OpcionDespliegue(props:{casillero:Opcion, valorOpcion:number, variable:IdVariable, forPk:ForPk, leer:boolean, conBotonBorrar:boolean}){
287
290
  const {casillero} = props;
288
- var dispatch = useDispatch();
291
+ const dispatch = useDispatch();
289
292
  var saltoAutomatico = useSelector((state:CasoState)=>state.opciones.saltoAutomatico);
290
293
  var handleClick:React.MouseEventHandler<HTMLButtonElement> = async (event)=>{
291
294
  var container = subirHasta(event.target as HTMLElement, elemento=>elemento.classList.contains('pregunta') || elemento.classList.contains('multiple')) || document.getElementById('main_layout')!;
@@ -519,7 +522,7 @@ function EncabezadoDespliegue(props:{casillero:CasilleroEncabezable, verIdGuion?
519
522
 
520
523
  function DesplegarConfirmarBorrarRespuesta(props:{forPk:ForPk, variableBorrar:IdVariable}){
521
524
  var [open, setOpen] = useState(!!props.variableBorrar)
522
- var dispatch = useDispatch();
525
+ const dispatch = useDispatch();
523
526
  const handleClose = () => {
524
527
  dispatch(dispatchers.CONFIRMAR_BORRAR_RESPUESTA({forPk:props.forPk, variable:null}));
525
528
  setOpen(false);
@@ -715,7 +718,7 @@ function PreguntaDespliegue(props:{
715
718
  despliegueEncabezado:'lateral'|'superior'
716
719
  }){
717
720
  var {pregunta} = props;
718
- var dispatch=useDispatch();
721
+ const dispatch=useDispatch();
719
722
  var estado:EstadoVariable;
720
723
  var id = `pregunta-${pregunta.id_casillero}`
721
724
  registrarElemento({
@@ -805,7 +808,7 @@ var calcularDisabledBFAgregarListo = (
805
808
  }
806
809
 
807
810
  function botonesDelFormulario(r:Respuestas, unidad_analisis:IdUnidadAnalisis, estructura:Estructura, forPkPadre:ForPk, feedbackAll:{[formulario in PlainForPk]:FormStructureState<IdVariable, Valor, IdFin>}):HtmlTag<HTMLDivElement>{
808
- var formsVivienda = getFormulariosForIdVivienda(forPkPadre.vivienda);
811
+ var formsVivienda = getFormulariosForValuePkRaiz(forPkPadre[estructura.mainTDPK]);
809
812
  var uaDef = estructura.unidades_analisis[unidad_analisis];
810
813
  var arrayEstructuraFormularios = (likeAr(estructura.formularios)).array();
811
814
  var x = likeAr(uaDef.hijas).filter(uaHija=>
@@ -821,7 +824,7 @@ function botonesDelFormulario(r:Respuestas, unidad_analisis:IdUnidadAnalisis, es
821
824
  likeAr(r[uaHija.unidad_analisis]||[]).map((respuestasHija, i)=>{
822
825
  var num = Number(i)+1
823
826
  var forPkHijaParcial = {...forPkPadre, [uaHija.pk_agregada]: num};
824
- var configSorteoFormulario = estructura.configSorteo?estructura.configSorteo[getMainFormForVivienda(forPkPadre.vivienda!)]:null
827
+ var configSorteoFormulario = estructura.configSorteo?estructura.configSorteo[getMainFormForVivienda(forPkPadre[estructura.mainTDPK])]:null
825
828
  var habilitacionBotonFormulario = estructura.habilitacionBotonFormulario;
826
829
  return html.div({class:'numerador-ua'}, [
827
830
  html.div({class:'botones-ua'},[
@@ -862,7 +865,7 @@ function botonesDelFormulario(r:Respuestas, unidad_analisis:IdUnidadAnalisis, es
862
865
 
863
866
  function TextoDespliegue(props:{casillero:Texto, forPk:ForPk}){
864
867
  var {casillero, forPk} = props;
865
- var dispatch = useDispatch();
868
+ const dispatch = useDispatch();
866
869
  var habilitador = casillero.expresion_habilitar_js?getFuncionHabilitar(casillero.expresion_habilitar_js):()=>true;
867
870
  var {modoDespliegue} = useSelectorVivienda(forPk);
868
871
  var id = `texto-${casillero.id_casillero}`;
@@ -1083,7 +1086,7 @@ function BotonFormularioDespliegue(props:{casillero:BotonFormulario, formulario:
1083
1086
  fun: (_r:Respuestas)=>false
1084
1087
  });
1085
1088
  */
1086
- var dispatch = useDispatch();
1089
+ const dispatch = useDispatch();
1087
1090
  var [confirmarForzarIr, setConfirmarForzarIr] = useState<DefinicionFormularioAbrir|false|null>(null);
1088
1091
  var multipleFormularios=formularioAAbrir.unidad_analisis != props.formulario.unidad_analisis;
1089
1092
  var nuevoCampoPk = defOperativo.defUA[formularioAAbrir.unidad_analisis].pk;
@@ -1114,7 +1117,7 @@ function BotonFormularioDespliegue(props:{casillero:BotonFormulario, formulario:
1114
1117
  // var estadoDelBoton = feedbackRow.feedback['$B.F:'+casillero.salto as IdVariable].estado //original
1115
1118
  var estadoDelBoton = feedbackRow.feedback['$B.F:'+armoNomSalto as IdVariable].estado
1116
1119
  // console.log('BotonFormularioDespliegue estadoDelBoton ' +estadoDelBoton );
1117
- var configSorteoFormulario = estructura.configSorteo?estructura.configSorteo[getMainFormForVivienda(forPk.vivienda)]:null
1120
+ var configSorteoFormulario = estructura.configSorteo?estructura.configSorteo[getMainFormForVivienda(forPk[estructura.mainTDPK])]:null
1118
1121
  var habilitacionBotonFormulario = estructura.habilitacionBotonFormulario;
1119
1122
  listaDeBotonesAbrir = likeAr(conjunto).map((_, i)=>{
1120
1123
  let num:number = numberOrStringIncIfArray(i, conjunto) as number;
@@ -1424,14 +1427,14 @@ function BarraDeNavegacion(props:{forPk:ForPk, soloLectura:boolean, modoDirecto:
1424
1427
  const forPk = props.forPk;
1425
1428
  const {opciones} = useSelectorVivienda(forPk);
1426
1429
  const [confirmaCerrar, setConfirmaCerrar] = useState<boolean|null>(false);
1427
- var dominio = getDatosByPass().informacionHdr[forPk.vivienda].tem.dominio;
1430
+ var estructura = getEstructura();
1431
+ var dominio = getDatosByPass().informacionHdr[forPk[estructura.mainTDPK]].tem.dominio;
1428
1432
  var cerrarDirecto = async function(){
1429
1433
  removeCSSById(BOOTSTRAP_5_1_3_SRC);
1430
- var estructura = getEstructura();
1431
1434
  gotoConsistir(
1432
1435
  estructura.operativo as IdOperativo,
1433
- getDatosByPass().informacionHdr[forPk.vivienda].tarea.tarea,
1434
- forPk.vivienda
1436
+ getDatosByPass().informacionHdr[forPk[estructura.mainTDPK]].tarea.tarea,
1437
+ forPk[estructura.mainTDPK]
1435
1438
  );
1436
1439
  //var hash=new URLSearchParams(location.hash?.replace(/^\#/,'').split('&autoproced')[0]);
1437
1440
  ////hash.delete('autoproced')
@@ -1705,9 +1708,10 @@ export function DesplegarLineaResumenUAPrincipal(props:{
1705
1708
  }){
1706
1709
  const {numVivienda, respuestas, formPrincipal, tarea} = props;
1707
1710
  const id='viv-'+numVivienda;
1708
- const forPk:ForPk={formulario:formPrincipal, vivienda:Number(numVivienda) as IdEnc}; //no quitar el casteo porque viene como texto y necesito que sea número
1711
+ const estructura = getEstructura();
1712
+ const forPk:ForPk={formulario:formPrincipal, [estructura.mainTDPK]:Number(numVivienda) as IdEnc} as ForPk; //no quitar el casteo porque viene como texto y necesito que sea número
1709
1713
  var tem = getDatosByPass().informacionHdr[numVivienda].tem;
1710
- var dispatch = useDispatch();
1714
+ const dispatch = useDispatch();
1711
1715
  useEffect(()=>{
1712
1716
  volcadoInicialElementosRegistrados(forPk);
1713
1717
  intentarBackup(forPk)
@@ -1723,7 +1727,7 @@ export function DesplegarLineaResumenUAPrincipal(props:{
1723
1727
  //pregunto si es la misma vivienda porque la funcion se dispara
1724
1728
  //con todas las combinaciones de respuestas para cada forPk
1725
1729
  //@ts-ignore vivienda existe
1726
- if(r.vivienda == forPk.vivienda){
1730
+ if(r[estructura.mainTDPK] == forPk[estructura.mainTDPK]){
1727
1731
  elemento.setAttribute('resumen-estado',calcularResumenVivienda(forPk, feedbackAll, r).resumenEstado);
1728
1732
  }
1729
1733
  }
@@ -1765,7 +1769,11 @@ export function DesplegarCarga(props:{
1765
1769
  [formulario in PlainForPk]:FormStructureState<IdVariable, Valor, IdFin>
1766
1770
  }
1767
1771
  }){
1772
+ const [newSurvey, setNewSurvey] = useState(0);
1768
1773
  const {carga, idCarga, informacionHdr, respuestas} = props;
1774
+ var estructura = getEstructura();
1775
+ let cantLineasResumen = likeAr(informacionHdr).filter((informacion)=>informacion.tem.carga==idCarga).array().length;
1776
+ const dispatch = useDispatch();
1769
1777
  return <Paper className="carga" style={{marginBottom: '10px', padding: '10px'}}>
1770
1778
  <div className="informacion-carga">
1771
1779
  <div className="carga">Área: {idCarga}</div>
@@ -1790,23 +1798,44 @@ export function DesplegarCarga(props:{
1790
1798
  <col style={{width:"10%"}}/>
1791
1799
  <col style={{width:"15%"}}/>
1792
1800
  </colgroup>
1793
- <TableHead style={{fontSize: "1.2rem"}}>
1794
- <TableRow className="tr-carga">
1795
- <TableCell>domicilio</TableCell>
1796
- <TableCell>tarea</TableCell>
1797
- <TableCell>enc</TableCell>
1798
- </TableRow>
1799
- </TableHead>
1801
+ {cantLineasResumen?
1802
+ <TableHead style={{fontSize: "1.2rem"}}>
1803
+ <TableRow className="tr-carga">
1804
+ <TableCell>domicilio</TableCell>
1805
+ <TableCell>tarea</TableCell>
1806
+ <TableCell>enc</TableCell>
1807
+ </TableRow>
1808
+ </TableHead>
1809
+ :null}
1800
1810
  <TableBody>
1811
+ <>
1801
1812
  {likeAr(informacionHdr).filter((informacion)=>informacion.tem.carga==idCarga).map((informacion, numVivienda)=>
1802
1813
  <DesplegarLineaResumenUAPrincipal
1803
1814
  key={numVivienda}
1804
1815
  numVivienda={numVivienda}
1805
1816
  tarea={informacion.tarea.tarea}
1806
1817
  formPrincipal={informacion.tarea.main_form}
1807
- respuestas={respuestas.viviendas[numVivienda] as RespuestasRaiz}
1818
+ respuestas={respuestas[estructura.mainTD][numVivienda] as RespuestasRaiz}
1808
1819
  />
1809
1820
  ).array()}
1821
+ {estructura.permiteGenerarMuestra?
1822
+ <TableRow className="tr-carga-nuevo">
1823
+ <TableCell colSpan={3}>
1824
+ <Button
1825
+ variant="contained"
1826
+ color="primary"
1827
+ onClick={()=>
1828
+ crearEncuesta(idCarga,(forPkRaiz:ForPkRaiz)=>{
1829
+ dispatch(dispatchers.CAMBIAR_FORMULARIO({forPk:forPkRaiz, apilarVuelta:false}));
1830
+ })
1831
+ }
1832
+ >
1833
+ <ICON.Add/>
1834
+ </Button>
1835
+ </TableCell>
1836
+ </TableRow>
1837
+ :null}
1838
+ </>
1810
1839
  </TableBody>
1811
1840
  </Table>:
1812
1841
  <Table>
@@ -1864,7 +1893,7 @@ export function HojaDeRutaDespliegue(){
1864
1893
  var {cargas, num_sincro, informacionHdr, respuestas} = getDatosByPass();
1865
1894
  var {modo} = useSelector((state:CasoState)=>({modo:state.modo}));
1866
1895
  var feedbackRowValidator = getFeedbackRowValidator()
1867
- var dispatch = useDispatch();
1896
+ const dispatch = useDispatch();
1868
1897
  const updateOnlineStatus = function(){
1869
1898
  setOnline(window.navigator.onLine);
1870
1899
  }
@@ -1929,7 +1958,7 @@ export function ListaTextos(props:{textos:string[]}){
1929
1958
  }
1930
1959
 
1931
1960
  export function BienvenidaDespliegue(props:{modo:CasoState["modo"]}){
1932
- var dispatch=useDispatch();
1961
+ const dispatch=useDispatch();
1933
1962
  return <Paper className="bienvenida">
1934
1963
  {props.modo.demo?
1935
1964
  <>
@@ -2206,7 +2235,7 @@ setCalcularVariables((respuestasRaiz:RespuestasRaiz, forPk:ForPk)=>{
2206
2235
  autoCargarPersonas(configPadre,'viviendas', estructura)
2207
2236
  })
2208
2237
  }
2209
- respuestasRaiz.vdominio=getDatosByPass().informacionHdr[forPk.vivienda].tem.dominio;
2238
+ respuestasRaiz.vdominio=getDatosByPass().informacionHdr[forPk[estructura.mainTDPK]].tem.dominio;
2210
2239
  //TODO: MEJORAR EN ALGUN MOMENTO EL BOTON LISTO
2211
2240
  let totalH = respuestasRaiz['total_h' as IdVariable];
2212
2241
  respuestasRaiz['$B.F:S1' as IdVariable] = (respuestasRaiz['hogares'] || []).length == totalH?'ok':null;
@@ -20,7 +20,7 @@ export type TipocDestinos = 'P' | 'CP' | 'B' | 'FILTRO' | 'BF';
20
20
  export type Tipoc = TipocDestinos | 'F' | 'O' | 'OM' | 'CONS' | 'TEXTO' | 'LIBRE';
21
21
  export type IdTarea = 'encu' | 'recu' | 'supe';
22
22
  export type FeedbackVariable = Feedback<IdVariable, IdFin>;
23
- export type TipoVariables = 'texto' | 'numero' | 'fecha' | 'horas';
23
+ export type TipoVariables = 'texto' | 'numero' | 'fecha' | 'horas' | 'hora';
24
24
  export type Despliegue = 'horizontal' | 'oculta';
25
25
  export type CasilleroBase = {
26
26
  id_casillero?: string;
@@ -172,17 +172,14 @@ export type Formulario = CasilleroBase & {
172
172
  };
173
173
  export type CasillerosImplementados = Formulario | Bloque | Filtro | ConjuntoPreguntas | Pregunta | OpcionMultiple | Opcion | BotonFormulario | Consistencia | Texto | Libre;
174
174
  export type CampoPkRaiz = 'vivienda' | 'etc...';
175
+ export type ValuePkRaiz = IdEnc;
175
176
  export type ForPkRaiz = {
176
177
  formulario: IdFormulario;
177
- vivienda: IdEnc;
178
178
  } & {
179
- [campo in CampoPkRaiz]?: number;
179
+ [campo in CampoPkRaiz]: ValuePkRaiz;
180
180
  };
181
181
  export type CampoPk = 'vivienda' | 'hogar' | 'persona' | 'etc...';
182
- export type ForPk = {
183
- formulario: IdFormulario;
184
- vivienda: IdEnc;
185
- } & {
182
+ export type ForPk = ForPkRaiz & {
186
183
  [campo in CampoPk]?: number;
187
184
  };
188
185
  export type PlainForPk = '{"formulario":"F:F1","vivienda":"10202","persona":null}' | 'etc...';
@@ -249,13 +246,14 @@ export type DatosHdrUaPpal = {
249
246
  tarea: InfoTarea;
250
247
  tem: TEM;
251
248
  };
252
- export type IdCarga = "2020-07-07" | "2020-07-08";
249
+ export type IdCarga = "1" | "2" | "etc";
253
250
  export type EstadoCarga = 'resumen' | 'relevamiento' | 'recibo';
254
251
  export type Carga = {
255
252
  fecha: Date;
256
253
  estado_carga: EstadoCarga;
257
254
  necesarias: number;
258
255
  observaciones: string;
256
+ recepcionista: string;
259
257
  };
260
258
  export type Cargas = {
261
259
  [idCarga in IdCarga]: Carga;
@@ -284,6 +282,8 @@ export type Estructura = {
284
282
  [idUnidadAnalisis in IdUnidadAnalisis]: UnidadAnalisis;
285
283
  };
286
284
  tareas: TareasEstructura;
285
+ mainTD: IdUnidadAnalisis;
286
+ mainTDPK: CampoPkRaiz;
287
287
  timestamp: number;
288
288
  operativo: IdOperativo;
289
289
  configSorteo: ConfiguracionSorteo;
@@ -306,6 +306,7 @@ export type Estructura = {
306
306
  valor_sup: string;
307
307
  grupo0_sup: string;
308
308
  }[];
309
+ defaultInformacionHdr: DatosHdrUaPpal;
309
310
  };
310
311
  export type IdEnc = 130031 | 130032;
311
312
  export type InformacionHdr = {
@@ -366,7 +367,7 @@ export type DatosByPassPersistibles = {
366
367
  tarea: IdTarea;
367
368
  idper: string;
368
369
  cargas: Cargas;
369
- informaciinformacionHdr: InformacionHdr;
370
+ informacionHdr: InformacionHdr;
370
371
  soloLectura: boolean;
371
372
  token?: string;
372
373
  num_sincro?: number;
@@ -19,4 +19,4 @@
19
19
  exports.iterator = LikeAr.iterator;
20
20
  exports.empty = LikeAr.empty;
21
21
  });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwb3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5sb2dnZWQvdGlwb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0lBQUEsWUFBWSxDQUFDOzs7SUFFYixrQ0FBa0M7SUFrZWxDLFNBQWdCLFlBQVksQ0FBQyxLQUFXO1FBQ3BDLCtDQUErQztRQUMvQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUhELG9DQUdDO0lBRVUsUUFBQSxRQUFRLEdBQStDLE1BQU0sQ0FBQyxRQUFRLENBQUE7SUFDdEUsUUFBQSxLQUFLLEdBQTBELE1BQU0sQ0FBQyxLQUFLLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuaW1wb3J0IHtTdHJ1Y3R1cmUsIEZlZWRiYWNrfSBmcm9tIFwicm93LXZhbGlkYXRvclwiO1xyXG5pbXBvcnQgKiBhcyBMaWtlQXIgZnJvbSBcImxpa2UtYXJcIjtcclxuXHJcbmV4cG9ydCB0eXBlIE1vZG9BbG1hY2VuYW1pZW50byA9ICdzZXNzaW9uJ3wgLy8gY3VhbmRvIHNlYSBwYXJhIHVuYSBzb2xhIHBlc3Rhw7FhLCBzZSB1c2EgZW4gbW9kbyBkaXJlY3RvLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9jYWwnICAgIC8vIHBhcmEgdG9kbyBlbCBkaXNwb3NpdGl2bywgc2UgdXNhIGFsIGNhcmdhciBob2phcyBkZSBydXRhIGVudHJlc1xyXG5cclxuZXhwb3J0IHR5cGUgSWRPcGNpb24gPSBudW1iZXJcclxuZXhwb3J0IHR5cGUgSWRPcGVyYXRpdm8gPSAnZXRvaTIxMSd8J2VhaDIwMjInfCdldGMuLi4nXHJcbmV4cG9ydCB0eXBlIElkVmFyaWFibGUgPSAndjEnfCd2Mid8J3YzJ3wnZXRjLi4uJ3wndmRvbWluaW8nfCckcDAnXHJcbmV4cG9ydCB0eXBlIElkUHJlZ3VudGEgPSAnUDEnfCdQMid8J2V0Yy4uLidcclxuZXhwb3J0IHR5cGUgSWRCbG9xdWUgPSAnQjEnfCdCMid8J2V0Yy4uLidcclxuZXhwb3J0IHR5cGUgSWRGb3JtdWxhcmlvID0gJ0YxJ3wnRjInfCdldGMuLi4nXHJcbmV4cG9ydCB0eXBlIElkVW5pZGFkQW5hbGlzaXMgPSAndml2aWVuZGFzJ3wnaG9nYXJlcyd8J3BlcnNvbmFzJ1xyXG5leHBvcnQgdHlwZSBJZEJvdG9uRm9ybXVsYXJpbyA9ICdCRjpGMSd8J0JGOkYyJ3wnZXRjLi4uJ1xyXG5leHBvcnQgdHlwZSBJZENvbnNpc3RlbmNpYSA9ICdDT05TMSd8J0NPTlMyJ3wnZXRjLi4uJ1xyXG5leHBvcnQgdHlwZSBJZFRleHRvID0gJ0QzMF9SRUYnfCdNRVNfUkVGJ3wnU0VNX1JFRid8J2V0Yy4uLidcclxuZXhwb3J0IHR5cGUgSWRGaWx0cm8gPSAnRklMVFJPMScgfCAnRklMVFJPMicgfCAnZXRjLi4uJ1xyXG5leHBvcnQgdHlwZSBJZENhc2lsbGVybyA9IElkVmFyaWFibGUgfCBJZFByZWd1bnRhIHwgSWRCbG9xdWUgfCBJZEZvcm11bGFyaW8gfCBJZEZpbHRybyB8IElkT3BjaW9uXHJcbmV4cG9ydCB0eXBlIElkRmluID0gJ2Zpbic7IC8vIG5ldmVyIC8vIFRPRE86IHBvZGVyIHBvbmVyICdGSU4nXHJcbmV4cG9ydCB0eXBlIElkRGVzdGlubyA9IElkUHJlZ3VudGEgfCBJZEJsb3F1ZSB8IElkRmluIHwgSWRGaWx0cm8gXHJcbmV4cG9ydCB0eXBlIFZhbG9yID0gc3RyaW5nfG51bWJlcnxudWxsO1xyXG5leHBvcnQgdHlwZSBUaXBvY0Rlc3Rpbm9zID0gJ1AnfCdDUCd8J0InfCdGSUxUUk8nfCdCRidcclxuZXhwb3J0IHR5cGUgVGlwb2MgPSBUaXBvY0Rlc3Rpbm9zIHwgJ0YnfCdPJ3wnT00nfCdDT05TJyB8J1RFWFRPJyB8ICdMSUJSRSdcclxuXHJcbmV4cG9ydCB0eXBlIElkVGFyZWEgPSAnZW5jdSd8J3JlY3UnfCdzdXBlJztcclxuXHJcbmV4cG9ydCB0eXBlIEZlZWRiYWNrVmFyaWFibGUgPSBGZWVkYmFjazxJZFZhcmlhYmxlLCBJZEZpbj5cclxuXHJcbmV4cG9ydCB0eXBlIFRpcG9WYXJpYWJsZXMgPSAndGV4dG8nfCdudW1lcm8nfCdmZWNoYSd8J2hvcmFzJ1xyXG5cclxuZXhwb3J0IHR5cGUgRGVzcGxpZWd1ZSA9ICdob3Jpem9udGFsJ3wnb2N1bHRhJ1xyXG5cclxuZXhwb3J0IHR5cGUgQ2FzaWxsZXJvQmFzZSA9IHtcclxuICAgIGlkX2Nhc2lsbGVybz86c3RyaW5nXHJcbiAgICB0aXBvYzpUaXBvY1xyXG4gICAgY2FzaWxsZXJvOklkQ2FzaWxsZXJvXHJcbiAgICBub21icmU6c3RyaW5nXHJcbiAgICBzYWx0bzpJZERlc3Rpbm98SWRGaW58bnVsbFxyXG4gICAgdmVyX2lkOnN0cmluZ3xudWxsXHJcbiAgICBkZXNwbGllZ3VlRW5jYWJlemFkbzonbGF0ZXJhbCd8J3N1cGVyaW9yJ3xudWxsXHJcbiAgICBkZXNwbGllZ3VlQ29udGVuaWRvOid2ZXJ0aWNhbCd8J2hvcml6b250YWwnfG51bGxcclxuICAgIGRlc3BsaWVndWVUaXBvSW5wdXQ6J3RlbCd8bnVsbFxyXG4gICAgZGVzcGxpZWd1ZU9jdWx0YTpib29sZWFufG51bGxcclxuICAgIGxlZXI6Ym9vbGVhbnxudWxsXHJcbiAgICBhY2xhcmFjaW9uOnN0cmluZ3xudWxsXHJcbiAgICBwcmltZXJhX3ZhcmlhYmxlPzpJZFZhcmlhYmxlfG51bGxcclxuICAgIHZhcl9uYW1lPzpJZFZhcmlhYmxlfG51bGxcclxuICAgIHZhcl9uYW1lX2VzcGVjaWFsPzpzdHJpbmd8bnVsbFxyXG4gICAgdGlwb3Zhcj86VGlwb1ZhcmlhYmxlc3wnb3BjaW9uZXMnfCdzaV9ubyd8bnVsbFxyXG4gICAgY2FzaWxsZXJvcz86Q2FzaWxsZXJvc0ltcGxlbWVudGFkb3NbXXxudWxsXHJcbiAgICBleHByZXNpb25faGFiaWxpdGFyPzpzdHJpbmdcclxuICAgIGV4cHJlc2lvbl9oYWJpbGl0YXJfanM/OnN0cmluZ1xyXG4gICAgZXhwcmVzaW9uX2F1dG9pbmdyZXNhcj86c3RyaW5nXHJcbiAgICBleHByZXNpb25fYXV0b2luZ3Jlc2FyX2pzPzpzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgT3BjaW9uPUNhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzonTydcclxuICAgIGNhc2lsbGVybzpJZE9wY2lvblxyXG4gICAgY2FzaWxsZXJvczpQcmVndW50YVNpbXBsZVtdXHJcbiAgICB2YXJfbmFtZT86bnVsbFxyXG4gICAgdGlwb3Zhcj86bnVsbFxyXG4gICAgcHJpbWVyYV92YXJpYWJsZT86bnVsbFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBPcGNpb25TaT1PcGNpb24gJiB7XHJcbiAgICBjYXNpbGxlcm86MVxyXG4gICAgbm9tYnJlOidTw60nXHJcbiAgICBjYXNpbGxlcm9zOlByZWd1bnRhU2ltcGxlW10gXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIE9wY2lvbk5vPU9wY2lvbiAmIHtcclxuICAgIGNhc2lsbGVybzoyXHJcbiAgICBub21icmU6J05vJ1xyXG4gICAgY2FzaWxsZXJvczpQcmVndW50YVNpbXBsZVtdIFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBPcGNpb25NdWx0aXBsZT1DYXNpbGxlcm9CYXNlICYge1xyXG4gICAgdGlwb2M6J09NJ1xyXG4gICAgdGlwb3Zhcjonb3BjaW9uZXMnXHJcbiAgICB2YXJfbmFtZTpJZFZhcmlhYmxlXHJcbiAgICBjYXNpbGxlcm9zOltPcGNpb25TaSwgT3BjaW9uTm9dXHJcbiAgICBjYWxjdWxhZGE/OmJvb2xlYW5cclxuICAgIGxpYnJlPzpib29sZWFuXHJcbiAgICB2YWxvcl9uc19uYzogYW55XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByZWd1bnRhQmFzZSA9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzonUCdcclxuICAgIG9wdGF0aXZvOmJvb2xlYW58bnVsbFxyXG4gICAgY2FzaWxsZXJvOklkUHJlZ3VudGFcclxuICAgIGNhbGN1bGFkYTogYm9vbGVhbnxudWxsXHJcbiAgICBsaWJyZTogYm9vbGVhbnxudWxsXHJcbiAgICB2YWxvcl9uc19uYzogYW55XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByZWd1bnRhU2ltcGxlID0gUHJlZ3VudGFCYXNlICYge1xyXG4gICAgdGlwb3ZhcjpUaXBvVmFyaWFibGVzXHJcbiAgICB2YXJfbmFtZTpJZFZhcmlhYmxlXHJcbiAgICBsb25naXR1ZDpzdHJpbmdcclxuICAgIHNhbHRvX25zX25jOklkVmFyaWFibGV8bnVsbFxyXG4gICAgY2FzaWxsZXJvczogUHJlZ3VudGFTaW1wbGVbXVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcmVndW50YUNvblNpTm8gPSBQcmVndW50YUJhc2UgJiB7XHJcbiAgICB0aXBvdmFyOidzaV9ubydcclxuICAgIHZhcl9uYW1lOklkVmFyaWFibGVcclxuICAgIHNhbHRvX25zX25jOklkVmFyaWFibGV8bnVsbFxyXG4gICAgY2FzaWxsZXJvczogW09wY2lvblNpLCBPcGNpb25Ob11cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJlZ3VudGFDb25PcGNpb25lcyA9IFByZWd1bnRhQmFzZSAmIHtcclxuICAgIHRpcG92YXI6J29wY2lvbmVzJ1xyXG4gICAgdmFyX25hbWU6SWRWYXJpYWJsZVxyXG4gICAgc2FsdG9fbnNfbmM6SWRWYXJpYWJsZXxudWxsXHJcbiAgICBjYXNpbGxlcm9zOiBPcGNpb25bXVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcmVndW50YUNvbk9wY2lvbmVzTXVsdGlwbGVzID0gUHJlZ3VudGFCYXNlICYge1xyXG4gICAgdmFyX25hbWU/Om51bGxcclxuICAgIHRpcG92YXI/Om51bGxcclxuICAgIGNhc2lsbGVyb3M6IE9wY2lvbk11bHRpcGxlW11cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJlZ3VudGE9UHJlZ3VudGFTaW1wbGUgfCBQcmVndW50YUNvblNpTm8gfCBQcmVndW50YUNvbk9wY2lvbmVzIHwgUHJlZ3VudGFDb25PcGNpb25lc011bHRpcGxlc1xyXG5cclxuZXhwb3J0IHR5cGUgQ29uanVudG9QcmVndW50YXM9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzonQ1AnXHJcbiAgICBjYXNpbGxlcm86SWRQcmVndW50YVxyXG4gICAgdmFyX25hbWU/Om51bGxcclxuICAgIHRpcG92YXI/Om51bGxcclxuICAgIGNhc2lsbGVyb3M6UHJlZ3VudGFbXVxyXG59XHJcblxyXG4vKlxyXG5leHBvcnQgaW50ZXJmYWNlIElDb250ZW5pZG8gZXh0ZW5kcyBDYXNpbGxlcm9CYXNlIHtcclxuICAgIGNhc2lsbGVyb3M6SUNvbnRlbmlkb1tdXHJcbn1cclxuKi9cclxuXHJcbmV4cG9ydCB0eXBlIEZpbHRybyA9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzonRklMVFJPJ1xyXG4gICAgY2FzaWxsZXJvOklkRmlsdHJvXHJcbiAgICB2YXJfbmFtZT86bnVsbFxyXG4gICAgdGlwb3Zhcj86bnVsbFxyXG4gICAgcHJpbWVyYV92YXJpYWJsZT86bnVsbFxyXG4gICAgY2FsY3VsYWRhPzpudWxsXHJcbiAgICBsaWJyZT86bnVsbFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDb250ZW5pZG9Gb3JtdWxhcmlvPUJsb3F1ZXxQcmVndW50YXxDb25qdW50b1ByZWd1bnRhc3xGaWx0cm98Qm90b25Gb3JtdWxhcmlvfENvbnNpc3RlbmNpYXxUZXh0b1xyXG5cclxuZXhwb3J0IHR5cGUgQmxvcXVlID0gQ2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOidCJ1xyXG4gICAgY2FzaWxsZXJvOklkQmxvcXVlXHJcbiAgICBjYXNpbGxlcm9zOkNvbnRlbmlkb0Zvcm11bGFyaW9bXVxyXG4gICAgdmFyX25hbWU/Om51bGxcclxuICAgIHRpcG92YXI/Om51bGxcclxuICAgIHVuaWRhZF9hbmFsaXNpcz86SWRVbmlkYWRBbmFsaXNpc1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDb25zaXN0ZW5jaWEgPSBDYXNpbGxlcm9CYXNlICYge1xyXG4gICAgdGlwb2M6J0NPTlMnXHJcbiAgICBjYXNpbGxlcm86SWRDb25zaXN0ZW5jaWFcclxuICAgIHZhcl9uYW1lPzpudWxsXHJcbiAgICB0aXBvdmFyPzpudWxsXHJcbiAgICBwcmltZXJhX3ZhcmlhYmxlPzpudWxsXHJcbn1cclxuZXhwb3J0IHR5cGUgVGV4dG8gPSBDYXNpbGxlcm9CYXNlICYge1xyXG4gICAgdGlwb2M6J1RFWFRPJ1xyXG4gICAgY2FzaWxsZXJvOklkVGV4dG9cclxuICAgIHZhcl9uYW1lPzpudWxsXHJcbiAgICB0aXBvdmFyPzpudWxsXHJcbiAgICBwcmltZXJhX3ZhcmlhYmxlPzpudWxsXHJcbn1cclxuZXhwb3J0IHR5cGUgTGlicmUgPSBDYXNpbGxlcm9CYXNlICYge1xyXG4gICAgdGlwb2M6J0xJQlJFJ1xyXG4gICAgY2FzaWxsZXJvOklkVGV4dG9cclxuICAgIHZhcl9uYW1lPzpudWxsXHJcbiAgICB0aXBvdmFyPzpudWxsXHJcbiAgICBwcmltZXJhX3ZhcmlhYmxlPzpudWxsXHJcbn1cclxuZXhwb3J0IHR5cGUgQm90b25Gb3JtdWxhcmlvID0gQ2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOidCRidcclxuICAgIGNhc2lsbGVybzpJZEJvdG9uRm9ybXVsYXJpb1xyXG4gICAgdmFyX25hbWU/Om51bGxcclxuICAgIHRpcG92YXI/Om51bGxcclxuICAgIHByaW1lcmFfdmFyaWFibGU/Om51bGxcclxuICAgIHZhcl9uYW1lX0JGPzpJZFZhcmlhYmxlXHJcbiAgICBsb25naXR1ZD86c3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEZvcm11bGFyaW8gPSBDYXNpbGxlcm9CYXNlICYge1xyXG4gICAgdGlwb2M6J0YnXHJcbiAgICBjYXNpbGxlcm86SWRGb3JtdWxhcmlvXHJcbiAgICBmb3JtdWxhcmlvX3ByaW5jaXBhbDpib29sZWFuXHJcbiAgICBjYXNpbGxlcm9zOkNvbnRlbmlkb0Zvcm11bGFyaW9bXVxyXG4gICAgdmFyX25hbWU/Om51bGxcclxuICAgIHRpcG92YXI/Om51bGxcclxuICAgIGhlcm1hbm8/OnRydWVcclxuICAgIHVuaWRhZF9hbmFsaXNpczpJZFVuaWRhZEFuYWxpc2lzXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIENhc2lsbGVyb3NJbXBsZW1lbnRhZG9zPUZvcm11bGFyaW98QmxvcXVlfEZpbHRyb3xDb25qdW50b1ByZWd1bnRhc3xQcmVndW50YXxPcGNpb25NdWx0aXBsZXxPcGNpb258Qm90b25Gb3JtdWxhcmlvfENvbnNpc3RlbmNpYXxUZXh0b3xMaWJyZVxyXG5cclxuZXhwb3J0IHR5cGUgQ2FtcG9Qa1JhaXogPSAndml2aWVuZGEnfCdldGMuLi4nO1xyXG5cclxuZXhwb3J0IHR5cGUgRm9yUGtSYWl6PXtcclxuICAgIGZvcm11bGFyaW86SWRGb3JtdWxhcmlvLCBcclxuICAgIHZpdmllbmRhOklkRW5jXHJcbn0gJiB7XHJcbiAgICBbY2FtcG8gaW4gQ2FtcG9Qa1JhaXpdPzpudW1iZXJcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQ2FtcG9QayA9ICd2aXZpZW5kYSd8J2hvZ2FyJ3wncGVyc29uYSd8J2V0Yy4uLic7XHJcbmV4cG9ydCB0eXBlIEZvclBrID0ge1xyXG4gICAgZm9ybXVsYXJpbzpJZEZvcm11bGFyaW8sIFxyXG4gICAgdml2aWVuZGE6SWRFbmNcclxufSAmIHtcclxuICAgIFtjYW1wbyBpbiBDYW1wb1BrXT86bnVtYmVyXHJcbn1cclxuZXhwb3J0IHR5cGUgUGxhaW5Gb3JQaz0ne1wiZm9ybXVsYXJpb1wiOlwiRjpGMVwiLFwidml2aWVuZGFcIjpcIjEwMjAyXCIsXCJwZXJzb25hXCI6bnVsbH0nfCdldGMuLi4nO1xyXG5cclxuZXhwb3J0IHR5cGUgT2JqZXRvTnVtZXJhZG9PQXJyYXk8VD4gPSBUW10gfCB7W24gaW4gbnVtYmVyXTpUfVxyXG5cclxuZXhwb3J0IHR5cGUgUmVzcHVlc3Rhc1VuYVVBID0ge1xyXG4gICAgW3ByZWd1bnRhIGluIElkVmFyaWFibGVdOlZhbG9yXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFJlc3B1ZXN0YUxhc1VBID0ge1xyXG4gICAgW3VhIGluIElkVW5pZGFkQW5hbGlzaXNdOk9iamV0b051bWVyYWRvT0FycmF5PFJlc3B1ZXN0YXM+XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFJlc3B1ZXN0YXM9IFJlc3B1ZXN0YXNVbmFVQSAmIFJlc3B1ZXN0YUxhc1VBXHJcblxyXG5leHBvcnQgdHlwZSBSZXNwdWVzdGFzUmFpej1SZXNwdWVzdGFzICYge1xyXG4gICAgcmVzdW1lbkVzdGFkbzpSZXN1bWVuRXN0YWRvXHJcbiAgICByZXN1bWVuRXN0YWRvU3VwOlJlc3VtZW5Fc3RhZG9cclxuICAgICRkaXJ0eTpib29sZWFuXHJcbiAgICBjb2ROb1JlYTogc3RyaW5nfG51bGxcclxuICAgIGNvZFJlYTogbnVtYmVyfG51bGxcclxuICAgIGNvZE5vUmVhU3VwOiBzdHJpbmd8bnVsbFxyXG4gICAgY29kUmVhU3VwOiBudW1iZXJ8bnVsbFxyXG59XHJcblxyXG4vKlxyXG4gICAgYWNsYXJhY2nDs246XHJcbiAgICB7djE6J3gnLCB2MjoneCcsIHBlcnNvbmFzOlt7cDE6MSwgcDI6J3h9LHtwMToyLCBwMjp4fV0sIG1hc2NvdGFzOltdIH1cclxuICAgIGVzdMOhIGFuaWRhZG8gcG9yIHVuaWRhZCBkZSBhbsOhbGlzaXNcclxuKi9cclxuXHJcbmV4cG9ydCB0eXBlIFVuaWRhZEFuYWxpc2lzID0ge1xyXG4gICAgdW5pZGFkX2FuYWxpc2lzOklkVW5pZGFkQW5hbGlzaXMsIFxyXG4gICAgcGFkcmU/OklkVW5pZGFkQW5hbGlzaXMsIFxyXG4gICAgcGtfYWdyZWdhZGE6Q2FtcG9QaywgXHJcbiAgICBwcmluY2lwYWw/OmJvb2xlYW4sIFxyXG4gICAgaGlqYXM6IHtbayBpbiBJZFVuaWRhZEFuYWxpc2lzXT86IFVuaWRhZEFuYWxpc2lzfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBURU0gPSB7XHJcbiAgICBub21jYWxsZTpzdHJpbmdcclxuICAgIGRvbWluaW86bnVtYmVyXHJcbiAgICBzZWN0b3I6c3RyaW5nXHJcbiAgICBlZGlmaWNpbzpzdHJpbmdcclxuICAgIGVudHJhZGE6c3RyaW5nXHJcbiAgICBucm9jYXRhc3RyYWw6c3RyaW5nXHJcbiAgICBwaXNvOnN0cmluZ1x0XHJcbiAgICBkZXBhcnRhbWVudG86c3RyaW5nXHJcbiAgICBoYWJpdGFjaW9uOnN0cmluZ1xyXG4gICAgY2FzYTpzdHJpbmdcclxuICAgIHByaW9yaWRhZDoxfDJ8M1xyXG4gICAgb2JzZXJ2YWNpb25lczpzdHJpbmdcclxuICAgIHNlbGVjY2lvbmFkbzpudW1iZXIsXHJcbiAgICBjaXRhOiBzdHJpbmcsXHJcbiAgICBjYXJnYTpzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUmVzdW1lbkVzdGFkbyA9ICd2YWNpbycgfCAnY29uIHByb2JsZW1hcycgfCAnaW5jb21wbGV0bycgfCAnb2snIHwgJ25vIHJlYScgfCAnY2l0YSBwYWN0YWRhJztcclxuXHJcbmV4cG9ydCB0eXBlIEluZm9UYXJlYT0ge1xyXG4gICAgdGFyZWE6IElkVGFyZWFcclxuICAgIG5vdGFzPzpzdHJpbmdcclxuICAgIGZlY2hhX2FzaWduYWNpb24/OkRhdGVcclxuICAgIGFzaWduYWRvPzpzdHJpbmdcclxuICAgIG1haW5fZm9ybTogSWRGb3JtdWxhcmlvXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFZpc2l0YT17XHJcbiAgICBmZWNoYTogc3RyaW5nIHwgbnVsbFxyXG4gICAgaG9yYTogc3RyaW5nIHwgbnVsbFxyXG4gICAgaWRwZXI6IHN0cmluZyB8IG51bGxcclxuICAgIG9ic2VydmFjaW9uZXM6IHN0cmluZyB8IG51bGxcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgIERhdG9zSGRyVWFQcGFsPSB7XHJcbiAgICB0YXJlYTogSW5mb1RhcmVhXHJcbiAgICB0ZW06IFRFTVxyXG4gICAgXHJcbi8qXHJcbiAgICBhY2xhcmFjacOzbjpcclxuICAgIHt2MToneCcsIHYyOid4JywgcGVyc29uYXM6W3twMToxLCBwMjoneH0se3AxOjIsIHAyOnh9XSwgbWFzY290YXM6W10gfVxyXG4gICAgZXN0w6EgYW5pZGFkbyBwb3IgdW5pZGFkIGRlIGFuw6FsaXNpc1xyXG4qL1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBJZENhcmdhPVwiMjAyMC0wNy0wN1wifFwiMjAyMC0wNy0wOFwiXHJcblxyXG5leHBvcnQgdHlwZSBFc3RhZG9DYXJnYT0ncmVzdW1lbid8J3JlbGV2YW1pZW50byd8J3JlY2libydcclxuXHJcbmV4cG9ydCB0eXBlIENhcmdhPXtcclxuICAgIGZlY2hhOiBEYXRlXHJcbiAgICBlc3RhZG9fY2FyZ2E6IEVzdGFkb0NhcmdhXHJcbiAgICBuZWNlc2FyaWFzOiBudW1iZXJcclxuICAgIG9ic2VydmFjaW9uZXM6IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDYXJnYXM9e1xyXG4gICAgW2lkQ2FyZ2EgaW4gSWRDYXJnYV06IENhcmdhXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I9U3RydWN0dXJlPElkVmFyaWFibGUsVmFsb3IsSWRGaW4+O1xyXG5cclxuZXhwb3J0IHR5cGUgTW9kb0Rlc3BsaWVndWUgPSAnbWV0YWRhdG9zJ3wncmVsZXZhbWllbnRvJ3wnUERGJ1xyXG5cclxuZXhwb3J0IHR5cGUgSW5mb0Zvcm11bGFyaW89e1xyXG4gICAgY2FzaWxsZXJvczpGb3JtdWxhcmlvLCAvLyBjYXNpbGxlcm9zIGFwbGFuYWRvc1xyXG4gICAgZXN0cnVjdHVyYVJvd1ZhbGlkYXRvcjpFc3RydWN0dXJhUm93VmFsaWRhdG9yIC8vIGVzdHJ1Y3R1cmEgZGUgdmFyaWFibGVzIHBhcmEgZWwgUm93VmFsaWRhdG9yXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIElkUmVzdWx0YWRvID0gJ0FWRVJJR1VBUid8J1RPRE8nO1xyXG5cclxuZXhwb3J0IHR5cGUgVGFyZWFzRXN0cnVjdHVyYT17XHJcbiAgICBbaWRUYXJlYSBpbiBJZFRhcmVhXTp7XHJcbiAgICAgICAgcmVzdWx0YWRvczp7XHJcbiAgICAgICAgICAgIFtpZFJlc3VsdGFkbyBpbiBJZFJlc3VsdGFkb106e1xyXG4gICAgICAgICAgICAgICAgZGVzY3JpcGNpb246c3RyaW5nXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEVzdHJ1Y3R1cmEgPSB7XHJcbiAgICBmb3JtdWxhcmlvczp7IFxyXG4gICAgICAgIFtub21icmVGb3JtdWxhcmlvIGluIElkRm9ybXVsYXJpb106SW5mb0Zvcm11bGFyaW9cclxuICAgIH1cclxuICAgIHVuaWRhZGVzX2FuYWxpc2lzOnsgXHJcbiAgICAgICAgW2lkVW5pZGFkQW5hbGlzaXMgaW4gSWRVbmlkYWRBbmFsaXNpc106IFVuaWRhZEFuYWxpc2lzXHJcbiAgICB9XHJcbiAgICB0YXJlYXM6VGFyZWFzRXN0cnVjdHVyYVxyXG4gICAgdGltZXN0YW1wOm51bWJlclxyXG4gICAgb3BlcmF0aXZvOklkT3BlcmF0aXZvXHJcbiAgICBjb25maWdTb3J0ZW86IENvbmZpZ3VyYWNpb25Tb3J0ZW9cclxuICAgIGhhYmlsaXRhY2lvbkJvdG9uRm9ybXVsYXJpbzogQ29uZmlndXJhY2lvbkhhYmlsaXRhckJvdG9uRm9ybXVsYXJpb1xyXG4gICAgcGVybWl0ZUdlbmVyYXJNdWVzdHJhOiBib29sZWFuXHJcbiAgICBjb25SZWFIb2dhcjogYm9vbGVhblxyXG5cdG5vUmVhczogeyBcclxuXHQgICAgICBub19yZWE6IHN0cmluZyAgXHJcblx0XHQgIGRlc2NyaXBjaW9uOiBzdHJpbmdcclxuXHRcdCAgZ3J1cG86ICAgICBzdHJpbmcgICAgXHJcblx0XHQgIHZhcmlhYmxlOiAgc3RyaW5nXHJcblx0XHQgIHZhbG9yOiAgICAgc3RyaW5nXHJcblx0XHQgIGdydXBvMDogICAgc3RyaW5nXHJcblx0fVtdXHJcbiAgICBub1JlYXNTdXA6IHsgXHJcbiAgICAgICAgbm9fcmVhX3N1cDogc3RyaW5nICBcclxuICAgICAgICBkZXNjX25vcmVhX3N1cDogc3RyaW5nXHJcbiAgICAgICAgZ3J1cG9fc3VwOiAgICAgc3RyaW5nICAgIFxyXG4gICAgICAgIHZhcmlhYmxlX3N1cDogIHN0cmluZ1xyXG4gICAgICAgIHZhbG9yX3N1cDogICAgIHN0cmluZ1xyXG4gICAgICAgIGdydXBvMF9zdXA6ICAgIHN0cmluZ1xyXG4gIH1bXVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBJZEVuYyA9IDEzMDAzMXwxMzAwMzI7XHJcbmV4cG9ydCB0eXBlIEluZm9ybWFjaW9uSGRyPXtbZW5jIGluIElkRW5jXTogRGF0b3NIZHJVYVBwYWx9XHJcblxyXG5leHBvcnQgdHlwZSBDYXNvU3RhdGU9e1xyXG4gICAgb3BjaW9uZXM6eyAvLyBkYXRvcyBkZSBuYXZlZ2FjacOzbiBxdWUgZWxpamUgZWwgdXN1YXJpb1xyXG4gICAgICAgIGZvclBrOkZvclBrfG51bGwgLy8gw61uZGljZSBkZW50cm8gZGUgbGFzIHVuaWRhZGVzIGRlIGFuw6FsaXNpcy4gTnVsbCA9IGVuIGhvamEgZGUgcnV0YVxyXG4gICAgICAgIHBpbGFGb3JQazpGb3JQa1tdXHJcbiAgICAgICAgbW9kb0Rlc3BsaWVndWU6TW9kb0Rlc3BsaWVndWVcclxuICAgICAgICBiaWVudmVuaWRvOmJvb2xlYW5cclxuICAgICAgICBtb2RvRGlyZWN0bzpib29sZWFuXHJcbiAgICAgICAgbW9kb0JvcnJhclJlc3B1ZXN0YTpJZFZhcmlhYmxlfG51bGxcclxuICAgICAgICBjb25DYW1wb09wY2lvbmVzOmJvb2xlYW5cclxuICAgICAgICBzYWx0b0F1dG9tYXRpY286Ym9vbGVhblxyXG4gICAgfSwgXHJcbiAgICBtb2RvOnsgLy8gbm8gc2UgcGVyc2lzdGVcclxuICAgICAgICBkZW1vOmJvb2xlYW5cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRGVmT3BlcmF0aXZvID0ge1xyXG4gICAgZXNOb1JlYToocmVzcHVlc3RhczpSZXNwdWVzdGFzKT0+IHtjb2ROb1JlYTpzdHJpbmd8bnVsbCwgZXNOb1JlYTpib29sZWFufSxcclxuICAgIGVzTm9SZWFTdXA6KHJlc3B1ZXN0YXM6UmVzcHVlc3Rhcyk9PiB7Y29kTm9SZWFTdXA6c3RyaW5nfG51bGwsIGVzTm9SZWFTdXA6Ym9vbGVhbn0sXHJcbiAgICBlc1JlYWxpemFkYToocmVzcHVlc3RhczpSZXNwdWVzdGFzKT0+IHtjb2RSZWE6bnVtYmVyfG51bGwsIGVzUmVhOmJvb2xlYW59LFxyXG4gICAgZXNSZWFsaXphZGFTdXA6KHJlc3B1ZXN0YXM6UmVzcHVlc3Rhcyk9PiB7Y29kUmVhU3VwOm51bWJlcnxudWxsLCBlc1JlYVN1cDpib29sZWFufSxcclxuICAgIFVBcHJpbmNpcGFsOiBJZFVuaWRhZEFuYWxpc2lzLFxyXG4gICAgZGVmVUE6e1tpIGluIElkVW5pZGFkQW5hbGlzaXNdOntwazpJZFZhcmlhYmxlLCBpbmNsdWlkYXM6SWRVbmlkYWRBbmFsaXNpc1tdLCBpZHNGb3I6SWRGb3JtdWxhcmlvW119fSxcclxuICAgIGRlZkZvcjp7W2YgaW4gSWRGb3JtdWxhcmlvXTp7LyphcmJvbFVBOklkVW5pZGFkQW5hbGlzaXNbXSwgKi8gaGVybWFubz86dHJ1ZX19XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIERhdG9zQnlQYXNzUGVyc2lzdGlibGVzID0ge1xyXG4gICAgcmVzcHVlc3Rhczp7W3VhIGluIElkVW5pZGFkQW5hbGlzaXNdOlJlc3B1ZXN0YXNSYWl6W119XHJcbiAgICBtb2RvQWxtYWNlbmFtaWVudG86TW9kb0FsbWFjZW5hbWllbnRvXHJcbiAgICBwZXJzb25hOnN0cmluZ1xyXG4gICAgdGFyZWE6SWRUYXJlYVxyXG4gICAgaWRwZXI6c3RyaW5nXHJcbiAgICBjYXJnYXM6IENhcmdhc1xyXG4gICAgaW5mb3JtYWNpaW5mb3JtYWNpb25IZHI6IEluZm9ybWFjaW9uSGRyXHJcbiAgICBzb2xvTGVjdHVyYTogYm9vbGVhblxyXG4gICAgdG9rZW4/OnN0cmluZ1xyXG4gICAgbnVtX3NpbmNybz86bnVtYmVyXHJcbiAgICB0aW1lc3RhbXBFc3RydWN0dXJhPzpudW1iZXJcclxufVxyXG5cclxudHlwZSBDb25maWd1cmFjaW9uU29ydGVvVGFibGEgPSB7XHJcbiAgICBtZXRvZG86IFwidGFibGFcIixcclxuICAgIHBhcmFtX21ldG9kbzoge1xyXG4gICAgICAgIHRhYmxhOnN0cmluZ1tdLFxyXG4gICAgICAgIHZhcl9sZXRyYTpJZFZhcmlhYmxlLFxyXG4gICAgfSAgICBcclxufVxyXG5cclxudHlwZSBDb25maWd1cmFjaW9uU29ydGVvSGFzaCA9IHtcclxuICAgIG1ldG9kbzogXCJoYXNoXCIsXHJcbiAgICBwYXJhbV9tZXRvZG86IHtcclxuICAgICAgICB2YXJfY29lZjogW1xyXG4gICAgICAgICAgICB7dmFyOklkVmFyaWFibGUsIGNvZWY6bnVtYmVyfSxcclxuICAgICAgICAgICAge3ZhcjpJZFZhcmlhYmxlLCBjb2VmOm51bWJlcn0sXHJcbiAgICAgICAgXSxcclxuICAgICAgICBkaXZpc29yOiBudW1iZXJcclxuICAgIH0gICAgXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIENvbmZpZ3VyYWNpb25Tb3J0ZW8gPSB7W2tleSBpbiBJZEZvcm11bGFyaW9dOkNvbmZpZ3VyYWNpb25Tb3J0ZW9Gb3JtdWxhcmlvfVxyXG5cclxuZXhwb3J0IHR5cGUgQ29uZmlndXJhY2lvbkhhYmlsaXRhckJvdG9uRm9ybXVsYXJpbyA9IHtba2V5IGluIElkRm9ybXVsYXJpb106Q29uZmlndXJhY2lvbkhhYmlsaXRhckJvdG9uRm9ybXVsYXJpb0Zvcm19XHJcblxyXG5leHBvcnQgdHlwZSBDb25maWd1cmFjaW9uU29ydGVvRm9ybXVsYXJpbyA9IHtcclxuICAgIHVuaWRhZF9hbmFsaXNpczogSWRVbmlkYWRBbmFsaXNpcyxcclxuICAgIHVuaWRhZF9hbmFsaXNpc19wYWRyZTogSWRVbmlkYWRBbmFsaXNpcyxcclxuICAgIC8vZXhwcl9pbmNvbXBsZXRpdHVkOiBzdHJpbmcgLy9cIm5vdCAocDEpIG9yIG5vIHQgKHAyKSBvciBub3QocDMpXCJcclxuICAgIGV4cHJfaW5jb21wbGV0aXR1ZDoge1xyXG4gICAgICAgIFtrZXkgaW4gbnVtYmVyXTp7ZG9taW5pbzpudW1iZXIsIGV4cHI6c3RyaW5nfVxyXG4gICAgfSBcclxuICAgIC8vZXhwcl9pbmNvbXBsZXRpdHVkX2pzOiBzdHJpbmcgLy9zZSBjcmVhIGFsIGNvbXBpbGFyXHJcbiAgICBleHByX2luY29tcGxldGl0dWRfanM6IHtcclxuICAgICAgICBba2V5IGluIG51bWJlcl06e2RvbWluaW86bnVtYmVyLCBleHByOnN0cmluZ31cclxuICAgIH0gXHJcbiAgICBkaXNwYXJhZG9yOiBJZFZhcmlhYmxlIC8vXCJwOVwiXHJcbiAgICAvL2ZpbHRybzogc3RyaW5nIC8vXCJwMz49MThcIlxyXG4gICAgZmlsdHJvOiB7XHJcbiAgICAgICAgW2tleSBpbiBudW1iZXJdOntkb21pbmlvOm51bWJlciwgZXhwcjpzdHJpbmd9XHJcbiAgICB9IFxyXG4gICAgLy9maWx0cm9fanM6IHN0cmluZyAvL3NlIGNyZWEgYWwgY29tcGlsYXJcclxuICAgIGZpbHRyb19qczoge1xyXG4gICAgICAgIFtrZXkgaW4gbnVtYmVyXTp7ZG9taW5pbzpudW1iZXIsIGV4cHI6c3RyaW5nfVxyXG4gICAgfSBcclxuICAgIG9yZGVuOiB7XHJcbiAgICAgICAgdmFyaWFibGU6SWRWYXJpYWJsZVxyXG4gICAgICAgIG9yZGVuOiAxfC0xXHJcbiAgICB9W10gLy9bXCJwM1wiLCBcInAyXCIsIFwicDFcIiwgXCJwMFwiXSwgLy8gcDAgZXMgY29uc3RydWlkYSwgbm8gdmEgZW4gcGFyw6FtZXRyb3MsIHNlIHBvbmUgcGFyYSBxdWUgZWwgb3JkZW4gc2VhIGRldGVybWluw61zdGljb1xyXG4gICAgcGFyYW1ldHJvczpJZFZhcmlhYmxlW10vLyBbXCJwMVwiLFwicDJcIixcInAzXCIsIFwicDRcIiwgXCJwNVwiLCBcInA2XCJdLCAvLyB2YXJpYWJsZXMgcXVlIGFudWxhbiBhbCBkaXNwYXJhZG9yXHJcbiAgICBjYW50aWRhZF9zb3J0ZWFibGVzOiBJZFZhcmlhYmxlXHJcbiAgICBjYW50aWRhZF90b3RhbDogSWRWYXJpYWJsZVxyXG4gICAgcmVzdWx0YWRvOiBJZFZhcmlhYmxlIC8vXCJwMTFcIlxyXG4gICAgcmVzdWx0YWRvX21hbnVhbDogSWRWYXJpYWJsZSAvL1wicDExXCJcclxuICAgIHNvcnRlYWRvX21vc3RyYXI/OiB7c291cmNlOklkVmFyaWFibGUsIHRhcmdldDpJZFZhcmlhYmxlfVtdLFxyXG4gICAgaW5jb21wbGV0YXM6IElkVmFyaWFibGVcclxuICAgIHZhcmlhYmxlQm90b25Gb3JtdWxhcmlvVUE6IElkVmFyaWFibGUvLyckQi5GOlMxX1AnXHJcbiAgICB2YXJpYWJsZUJvdG9uRm9ybXVsYXJpb1VBSW5kaXZpZHVhbD86IElkVmFyaWFibGUgLy8nJEIuRjpJMSdcclxuICAgIGlkX2Zvcm11bGFyaW9faW5kaXZpZHVhbD86IElkRm9ybXVsYXJpbyAvLyAnRjpJMSdcclxuICAgIGlkX2Zvcm11bGFyaW9fcGFkcmU/OiBJZEZvcm11bGFyaW8gLy8gJ0Y6UzEnXHJcbn0gJiAoQ29uZmlndXJhY2lvblNvcnRlb0hhc2ggfCBDb25maWd1cmFjaW9uU29ydGVvVGFibGEpXHJcblxyXG5leHBvcnQgdHlwZSBDb25maWd1cmFjaW9uSGFiaWxpdGFyQm90b25Gb3JtdWxhcmlvRm9ybSA9IHtcclxuICAgIHVuaWRhZF9hbmFsaXNpczogSWRVbmlkYWRBbmFsaXNpcyxcclxuICAgIGV4cHJfaGFiaWxpdGFyX2JvdG9uOiBzdHJpbmcsXHJcbiAgICBleHByX2hhYmlsaXRhcl9ib3Rvbl9qczogc3RyaW5nLFxyXG4gICAgaGFiaWxpdGFyX2FncmVnYXJfbGlzdG86IGJvb2xlYW5cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHRvUGxhaW5Gb3JQayhmb3JQazpGb3JQayk6UGxhaW5Gb3JQa3tcclxuICAgIC8vIEB0cy1pZ25vcmUgc2FiZW1vcyBxdWUgaGF5IHF1ZSBoYWNlciB1biBKU09OXHJcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZm9yUGspO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIGl0ZXJhdG9yOjxUPihvOk9iamV0b051bWVyYWRvT0FycmF5PFQ+KT0+SXRlcmFibGU8VD4gPSBMaWtlQXIuaXRlcmF0b3JcclxuZXhwb3J0IHZhciBlbXB0eTo8VD4obzpPYmpldG9OdW1lcmFkb09BcnJheTxUPnxudWxsfHVuZGVmaW5lZCk9PmJvb2xlYW4gPSBMaWtlQXIuZW1wdHlcclxuXHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICAgIG5hbWVzcGFjZSBteU93bntcclxuICAgICAgICBpbnRlcmZhY2UgQWRkclBhcmFtcyB7XHJcbiAgICAgICAgICAgIHN0YXRlX2ZvclBrOnN0cmluZ1xyXG4gICAgICAgICAgICBzdGF0ZV9waWxhRm9yUGs6c3RyaW5nXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEaXJlY2Npb25BY2Npb24gPSAnYXZhbmNlJyB8ICdyZXRyb2Nlc28nIHwgJ2JsYW5xdWVvJ1xyXG5cclxuZXhwb3J0IHR5cGUgRXN0YWRvQWNjaW9uID0ge1xyXG4gICAgb3BlcmF0aXZvOiBzdHJpbmdcclxuICAgIGVzdGFkbzogc3RyaW5nXHJcbiAgICBlYWNjaW9uOiBzdHJpbmdcclxuICAgIGNvbmRpY2lvbjogc3RyaW5nXHJcbiAgICBlc3RhZG9fZGVzdGlubzogc3RyaW5nXHJcbiAgICBlYWNjaW9uX2RpcmVjY2lvbjogRGlyZWNjaW9uQWNjaW9uXHJcbiAgICBwYXRoX2ljb25vX3N2Zzogc3RyaW5nXHJcbiAgICBub21icmVfcHJvY2VkdXJlOiBzdHJpbmdcclxuICAgIG5vbWJyZV93c2NyZWVuOiBzdHJpbmdcclxuICAgIGRlc2FjdGl2YV9ib3RvbjogYm9vbGVhblxyXG4gICAgY29uZmlybWE6IGJvb2xlYW5cclxufSJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwb3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5sb2dnZWQvdGlwb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0lBQUEsWUFBWSxDQUFDOzs7SUFFYixrQ0FBa0M7SUFxZWxDLFNBQWdCLFlBQVksQ0FBQyxLQUFXO1FBQ3BDLCtDQUErQztRQUMvQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUhELG9DQUdDO0lBRVUsUUFBQSxRQUFRLEdBQStDLE1BQU0sQ0FBQyxRQUFRLENBQUE7SUFDdEUsUUFBQSxLQUFLLEdBQTBELE1BQU0sQ0FBQyxLQUFLLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuaW1wb3J0IHtTdHJ1Y3R1cmUsIEZlZWRiYWNrfSBmcm9tIFwicm93LXZhbGlkYXRvclwiO1xyXG5pbXBvcnQgKiBhcyBMaWtlQXIgZnJvbSBcImxpa2UtYXJcIjtcclxuaW1wb3J0IHsgT3BlcmF0aXZvR2VuZXJhdG9yIH0gZnJvbSBcIm1ldGEtZW5jXCI7XHJcblxyXG5leHBvcnQgdHlwZSBNb2RvQWxtYWNlbmFtaWVudG8gPSAnc2Vzc2lvbid8IC8vIGN1YW5kbyBzZWEgcGFyYSB1bmEgc29sYSBwZXN0YcOxYSwgc2UgdXNhIGVuIG1vZG8gZGlyZWN0byxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvY2FsJyAgICAvLyBwYXJhIHRvZG8gZWwgZGlzcG9zaXRpdm8sIHNlIHVzYSBhbCBjYXJnYXIgaG9qYXMgZGUgcnV0YSBlbnRyZXNcclxuXHJcbmV4cG9ydCB0eXBlIElkT3BjaW9uID0gbnVtYmVyXHJcbmV4cG9ydCB0eXBlIElkT3BlcmF0aXZvID0gJ2V0b2kyMTEnfCdlYWgyMDIyJ3wnZXRjLi4uJ1xyXG5leHBvcnQgdHlwZSBJZFZhcmlhYmxlID0gJ3YxJ3wndjInfCd2Myd8J2V0Yy4uLid8J3Zkb21pbmlvJ3wnJHAwJ1xyXG5leHBvcnQgdHlwZSBJZFByZWd1bnRhID0gJ1AxJ3wnUDInfCdldGMuLi4nXHJcbmV4cG9ydCB0eXBlIElkQmxvcXVlID0gJ0IxJ3wnQjInfCdldGMuLi4nXHJcbmV4cG9ydCB0eXBlIElkRm9ybXVsYXJpbyA9ICdGMSd8J0YyJ3wnZXRjLi4uJ1xyXG5leHBvcnQgdHlwZSBJZFVuaWRhZEFuYWxpc2lzID0gJ3ZpdmllbmRhcyd8J2hvZ2FyZXMnfCdwZXJzb25hcydcclxuZXhwb3J0IHR5cGUgSWRCb3RvbkZvcm11bGFyaW8gPSAnQkY6RjEnfCdCRjpGMid8J2V0Yy4uLidcclxuZXhwb3J0IHR5cGUgSWRDb25zaXN0ZW5jaWEgPSAnQ09OUzEnfCdDT05TMid8J2V0Yy4uLidcclxuZXhwb3J0IHR5cGUgSWRUZXh0byA9ICdEMzBfUkVGJ3wnTUVTX1JFRid8J1NFTV9SRUYnfCdldGMuLi4nXHJcbmV4cG9ydCB0eXBlIElkRmlsdHJvID0gJ0ZJTFRSTzEnIHwgJ0ZJTFRSTzInIHwgJ2V0Yy4uLidcclxuZXhwb3J0IHR5cGUgSWRDYXNpbGxlcm8gPSBJZFZhcmlhYmxlIHwgSWRQcmVndW50YSB8IElkQmxvcXVlIHwgSWRGb3JtdWxhcmlvIHwgSWRGaWx0cm8gfCBJZE9wY2lvblxyXG5leHBvcnQgdHlwZSBJZEZpbiA9ICdmaW4nOyAvLyBuZXZlciAvLyBUT0RPOiBwb2RlciBwb25lciAnRklOJ1xyXG5leHBvcnQgdHlwZSBJZERlc3Rpbm8gPSBJZFByZWd1bnRhIHwgSWRCbG9xdWUgfCBJZEZpbiB8IElkRmlsdHJvIFxyXG5leHBvcnQgdHlwZSBWYWxvciA9IHN0cmluZ3xudW1iZXJ8bnVsbDtcclxuZXhwb3J0IHR5cGUgVGlwb2NEZXN0aW5vcyA9ICdQJ3wnQ1AnfCdCJ3wnRklMVFJPJ3wnQkYnXHJcbmV4cG9ydCB0eXBlIFRpcG9jID0gVGlwb2NEZXN0aW5vcyB8ICdGJ3wnTyd8J09NJ3wnQ09OUycgfCdURVhUTycgfCAnTElCUkUnXHJcblxyXG5leHBvcnQgdHlwZSBJZFRhcmVhID0gJ2VuY3UnfCdyZWN1J3wnc3VwZSc7XHJcblxyXG5leHBvcnQgdHlwZSBGZWVkYmFja1ZhcmlhYmxlID0gRmVlZGJhY2s8SWRWYXJpYWJsZSwgSWRGaW4+XHJcblxyXG5leHBvcnQgdHlwZSBUaXBvVmFyaWFibGVzID0gJ3RleHRvJ3wnbnVtZXJvJ3wnZmVjaGEnfCdob3Jhcyd8J2hvcmEnXHJcblxyXG5leHBvcnQgdHlwZSBEZXNwbGllZ3VlID0gJ2hvcml6b250YWwnfCdvY3VsdGEnXHJcblxyXG5leHBvcnQgdHlwZSBDYXNpbGxlcm9CYXNlID0ge1xyXG4gICAgaWRfY2FzaWxsZXJvPzpzdHJpbmdcclxuICAgIHRpcG9jOlRpcG9jXHJcbiAgICBjYXNpbGxlcm86SWRDYXNpbGxlcm9cclxuICAgIG5vbWJyZTpzdHJpbmdcclxuICAgIHNhbHRvOklkRGVzdGlub3xJZEZpbnxudWxsXHJcbiAgICB2ZXJfaWQ6c3RyaW5nfG51bGxcclxuICAgIGRlc3BsaWVndWVFbmNhYmV6YWRvOidsYXRlcmFsJ3wnc3VwZXJpb3InfG51bGxcclxuICAgIGRlc3BsaWVndWVDb250ZW5pZG86J3ZlcnRpY2FsJ3wnaG9yaXpvbnRhbCd8bnVsbFxyXG4gICAgZGVzcGxpZWd1ZVRpcG9JbnB1dDondGVsJ3xudWxsXHJcbiAgICBkZXNwbGllZ3VlT2N1bHRhOmJvb2xlYW58bnVsbFxyXG4gICAgbGVlcjpib29sZWFufG51bGxcclxuICAgIGFjbGFyYWNpb246c3RyaW5nfG51bGxcclxuICAgIHByaW1lcmFfdmFyaWFibGU/OklkVmFyaWFibGV8bnVsbFxyXG4gICAgdmFyX25hbWU/OklkVmFyaWFibGV8bnVsbFxyXG4gICAgdmFyX25hbWVfZXNwZWNpYWw/OnN0cmluZ3xudWxsXHJcbiAgICB0aXBvdmFyPzpUaXBvVmFyaWFibGVzfCdvcGNpb25lcyd8J3NpX25vJ3xudWxsXHJcbiAgICBjYXNpbGxlcm9zPzpDYXNpbGxlcm9zSW1wbGVtZW50YWRvc1tdfG51bGxcclxuICAgIGV4cHJlc2lvbl9oYWJpbGl0YXI/OnN0cmluZ1xyXG4gICAgZXhwcmVzaW9uX2hhYmlsaXRhcl9qcz86c3RyaW5nXHJcbiAgICBleHByZXNpb25fYXV0b2luZ3Jlc2FyPzpzdHJpbmdcclxuICAgIGV4cHJlc2lvbl9hdXRvaW5ncmVzYXJfanM/OnN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBPcGNpb249Q2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOidPJ1xyXG4gICAgY2FzaWxsZXJvOklkT3BjaW9uXHJcbiAgICBjYXNpbGxlcm9zOlByZWd1bnRhU2ltcGxlW11cclxuICAgIHZhcl9uYW1lPzpudWxsXHJcbiAgICB0aXBvdmFyPzpudWxsXHJcbiAgICBwcmltZXJhX3ZhcmlhYmxlPzpudWxsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIE9wY2lvblNpPU9wY2lvbiAmIHtcclxuICAgIGNhc2lsbGVybzoxXHJcbiAgICBub21icmU6J1PDrSdcclxuICAgIGNhc2lsbGVyb3M6UHJlZ3VudGFTaW1wbGVbXSBcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgT3BjaW9uTm89T3BjaW9uICYge1xyXG4gICAgY2FzaWxsZXJvOjJcclxuICAgIG5vbWJyZTonTm8nXHJcbiAgICBjYXNpbGxlcm9zOlByZWd1bnRhU2ltcGxlW10gXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIE9wY2lvbk11bHRpcGxlPUNhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzonT00nXHJcbiAgICB0aXBvdmFyOidvcGNpb25lcydcclxuICAgIHZhcl9uYW1lOklkVmFyaWFibGVcclxuICAgIGNhc2lsbGVyb3M6W09wY2lvblNpLCBPcGNpb25Ob11cclxuICAgIGNhbGN1bGFkYT86Ym9vbGVhblxyXG4gICAgbGlicmU/OmJvb2xlYW5cclxuICAgIHZhbG9yX25zX25jOiBhbnlcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJlZ3VudGFCYXNlID0gQ2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOidQJ1xyXG4gICAgb3B0YXRpdm86Ym9vbGVhbnxudWxsXHJcbiAgICBjYXNpbGxlcm86SWRQcmVndW50YVxyXG4gICAgY2FsY3VsYWRhOiBib29sZWFufG51bGxcclxuICAgIGxpYnJlOiBib29sZWFufG51bGxcclxuICAgIHZhbG9yX25zX25jOiBhbnlcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJlZ3VudGFTaW1wbGUgPSBQcmVndW50YUJhc2UgJiB7XHJcbiAgICB0aXBvdmFyOlRpcG9WYXJpYWJsZXNcclxuICAgIHZhcl9uYW1lOklkVmFyaWFibGVcclxuICAgIGxvbmdpdHVkOnN0cmluZ1xyXG4gICAgc2FsdG9fbnNfbmM6SWRWYXJpYWJsZXxudWxsXHJcbiAgICBjYXNpbGxlcm9zOiBQcmVndW50YVNpbXBsZVtdXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByZWd1bnRhQ29uU2lObyA9IFByZWd1bnRhQmFzZSAmIHtcclxuICAgIHRpcG92YXI6J3NpX25vJ1xyXG4gICAgdmFyX25hbWU6SWRWYXJpYWJsZVxyXG4gICAgc2FsdG9fbnNfbmM6SWRWYXJpYWJsZXxudWxsXHJcbiAgICBjYXNpbGxlcm9zOiBbT3BjaW9uU2ksIE9wY2lvbk5vXVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcmVndW50YUNvbk9wY2lvbmVzID0gUHJlZ3VudGFCYXNlICYge1xyXG4gICAgdGlwb3Zhcjonb3BjaW9uZXMnXHJcbiAgICB2YXJfbmFtZTpJZFZhcmlhYmxlXHJcbiAgICBzYWx0b19uc19uYzpJZFZhcmlhYmxlfG51bGxcclxuICAgIGNhc2lsbGVyb3M6IE9wY2lvbltdXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByZWd1bnRhQ29uT3BjaW9uZXNNdWx0aXBsZXMgPSBQcmVndW50YUJhc2UgJiB7XHJcbiAgICB2YXJfbmFtZT86bnVsbFxyXG4gICAgdGlwb3Zhcj86bnVsbFxyXG4gICAgY2FzaWxsZXJvczogT3BjaW9uTXVsdGlwbGVbXVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcmVndW50YT1QcmVndW50YVNpbXBsZSB8IFByZWd1bnRhQ29uU2lObyB8IFByZWd1bnRhQ29uT3BjaW9uZXMgfCBQcmVndW50YUNvbk9wY2lvbmVzTXVsdGlwbGVzXHJcblxyXG5leHBvcnQgdHlwZSBDb25qdW50b1ByZWd1bnRhcz0gQ2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOidDUCdcclxuICAgIGNhc2lsbGVybzpJZFByZWd1bnRhXHJcbiAgICB2YXJfbmFtZT86bnVsbFxyXG4gICAgdGlwb3Zhcj86bnVsbFxyXG4gICAgY2FzaWxsZXJvczpQcmVndW50YVtdXHJcbn1cclxuXHJcbi8qXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRlbmlkbyBleHRlbmRzIENhc2lsbGVyb0Jhc2Uge1xyXG4gICAgY2FzaWxsZXJvczpJQ29udGVuaWRvW11cclxufVxyXG4qL1xyXG5cclxuZXhwb3J0IHR5cGUgRmlsdHJvID0gQ2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOidGSUxUUk8nXHJcbiAgICBjYXNpbGxlcm86SWRGaWx0cm9cclxuICAgIHZhcl9uYW1lPzpudWxsXHJcbiAgICB0aXBvdmFyPzpudWxsXHJcbiAgICBwcmltZXJhX3ZhcmlhYmxlPzpudWxsXHJcbiAgICBjYWxjdWxhZGE/Om51bGxcclxuICAgIGxpYnJlPzpudWxsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIENvbnRlbmlkb0Zvcm11bGFyaW89QmxvcXVlfFByZWd1bnRhfENvbmp1bnRvUHJlZ3VudGFzfEZpbHRyb3xCb3RvbkZvcm11bGFyaW98Q29uc2lzdGVuY2lhfFRleHRvXHJcblxyXG5leHBvcnQgdHlwZSBCbG9xdWUgPSBDYXNpbGxlcm9CYXNlICYge1xyXG4gICAgdGlwb2M6J0InXHJcbiAgICBjYXNpbGxlcm86SWRCbG9xdWVcclxuICAgIGNhc2lsbGVyb3M6Q29udGVuaWRvRm9ybXVsYXJpb1tdXHJcbiAgICB2YXJfbmFtZT86bnVsbFxyXG4gICAgdGlwb3Zhcj86bnVsbFxyXG4gICAgdW5pZGFkX2FuYWxpc2lzPzpJZFVuaWRhZEFuYWxpc2lzXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIENvbnNpc3RlbmNpYSA9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzonQ09OUydcclxuICAgIGNhc2lsbGVybzpJZENvbnNpc3RlbmNpYVxyXG4gICAgdmFyX25hbWU/Om51bGxcclxuICAgIHRpcG92YXI/Om51bGxcclxuICAgIHByaW1lcmFfdmFyaWFibGU/Om51bGxcclxufVxyXG5leHBvcnQgdHlwZSBUZXh0byA9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzonVEVYVE8nXHJcbiAgICBjYXNpbGxlcm86SWRUZXh0b1xyXG4gICAgdmFyX25hbWU/Om51bGxcclxuICAgIHRpcG92YXI/Om51bGxcclxuICAgIHByaW1lcmFfdmFyaWFibGU/Om51bGxcclxufVxyXG5leHBvcnQgdHlwZSBMaWJyZSA9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzonTElCUkUnXHJcbiAgICBjYXNpbGxlcm86SWRUZXh0b1xyXG4gICAgdmFyX25hbWU/Om51bGxcclxuICAgIHRpcG92YXI/Om51bGxcclxuICAgIHByaW1lcmFfdmFyaWFibGU/Om51bGxcclxufVxyXG5leHBvcnQgdHlwZSBCb3RvbkZvcm11bGFyaW8gPSBDYXNpbGxlcm9CYXNlICYge1xyXG4gICAgdGlwb2M6J0JGJ1xyXG4gICAgY2FzaWxsZXJvOklkQm90b25Gb3JtdWxhcmlvXHJcbiAgICB2YXJfbmFtZT86bnVsbFxyXG4gICAgdGlwb3Zhcj86bnVsbFxyXG4gICAgcHJpbWVyYV92YXJpYWJsZT86bnVsbFxyXG4gICAgdmFyX25hbWVfQkY/OklkVmFyaWFibGVcclxuICAgIGxvbmdpdHVkPzpzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRm9ybXVsYXJpbyA9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzonRidcclxuICAgIGNhc2lsbGVybzpJZEZvcm11bGFyaW9cclxuICAgIGZvcm11bGFyaW9fcHJpbmNpcGFsOmJvb2xlYW5cclxuICAgIGNhc2lsbGVyb3M6Q29udGVuaWRvRm9ybXVsYXJpb1tdXHJcbiAgICB2YXJfbmFtZT86bnVsbFxyXG4gICAgdGlwb3Zhcj86bnVsbFxyXG4gICAgaGVybWFubz86dHJ1ZVxyXG4gICAgdW5pZGFkX2FuYWxpc2lzOklkVW5pZGFkQW5hbGlzaXNcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3M9Rm9ybXVsYXJpb3xCbG9xdWV8RmlsdHJvfENvbmp1bnRvUHJlZ3VudGFzfFByZWd1bnRhfE9wY2lvbk11bHRpcGxlfE9wY2lvbnxCb3RvbkZvcm11bGFyaW98Q29uc2lzdGVuY2lhfFRleHRvfExpYnJlXHJcblxyXG5leHBvcnQgdHlwZSBDYW1wb1BrUmFpeiA9ICd2aXZpZW5kYSd8J2V0Yy4uLic7XHJcblxyXG5leHBvcnQgdHlwZSBWYWx1ZVBrUmFpeiA9IElkRW5jXHJcblxyXG5leHBvcnQgdHlwZSBGb3JQa1JhaXo9e1xyXG4gICAgZm9ybXVsYXJpbzpJZEZvcm11bGFyaW9cclxufSAmIHtcclxuICAgIFtjYW1wbyBpbiBDYW1wb1BrUmFpel06VmFsdWVQa1JhaXpcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQ2FtcG9QayA9ICd2aXZpZW5kYSd8J2hvZ2FyJ3wncGVyc29uYSd8J2V0Yy4uLic7XHJcbmV4cG9ydCB0eXBlIEZvclBrID0gRm9yUGtSYWl6ICYge1xyXG4gICAgW2NhbXBvIGluIENhbXBvUGtdPzpudW1iZXJcclxufVxyXG5leHBvcnQgdHlwZSBQbGFpbkZvclBrPSd7XCJmb3JtdWxhcmlvXCI6XCJGOkYxXCIsXCJ2aXZpZW5kYVwiOlwiMTAyMDJcIixcInBlcnNvbmFcIjpudWxsfSd8J2V0Yy4uLic7XHJcblxyXG5leHBvcnQgdHlwZSBPYmpldG9OdW1lcmFkb09BcnJheTxUPiA9IFRbXSB8IHtbbiBpbiBudW1iZXJdOlR9XHJcblxyXG5leHBvcnQgdHlwZSBSZXNwdWVzdGFzVW5hVUEgPSB7XHJcbiAgICBbcHJlZ3VudGEgaW4gSWRWYXJpYWJsZV06VmFsb3JcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUmVzcHVlc3RhTGFzVUEgPSB7XHJcbiAgICBbdWEgaW4gSWRVbmlkYWRBbmFsaXNpc106T2JqZXRvTnVtZXJhZG9PQXJyYXk8UmVzcHVlc3Rhcz5cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUmVzcHVlc3Rhcz0gUmVzcHVlc3Rhc1VuYVVBICYgUmVzcHVlc3RhTGFzVUFcclxuXHJcbmV4cG9ydCB0eXBlIFJlc3B1ZXN0YXNSYWl6PVJlc3B1ZXN0YXMgJiB7XHJcbiAgICByZXN1bWVuRXN0YWRvOlJlc3VtZW5Fc3RhZG9cclxuICAgIHJlc3VtZW5Fc3RhZG9TdXA6UmVzdW1lbkVzdGFkb1xyXG4gICAgJGRpcnR5OmJvb2xlYW5cclxuICAgIGNvZE5vUmVhOiBzdHJpbmd8bnVsbFxyXG4gICAgY29kUmVhOiBudW1iZXJ8bnVsbFxyXG4gICAgY29kTm9SZWFTdXA6IHN0cmluZ3xudWxsXHJcbiAgICBjb2RSZWFTdXA6IG51bWJlcnxudWxsXHJcbn1cclxuXHJcbi8qXHJcbiAgICBhY2xhcmFjacOzbjpcclxuICAgIHt2MToneCcsIHYyOid4JywgcGVyc29uYXM6W3twMToxLCBwMjoneH0se3AxOjIsIHAyOnh9XSwgbWFzY290YXM6W10gfVxyXG4gICAgZXN0w6EgYW5pZGFkbyBwb3IgdW5pZGFkIGRlIGFuw6FsaXNpc1xyXG4qL1xyXG5cclxuZXhwb3J0IHR5cGUgVW5pZGFkQW5hbGlzaXMgPSB7XHJcbiAgICB1bmlkYWRfYW5hbGlzaXM6SWRVbmlkYWRBbmFsaXNpcywgXHJcbiAgICBwYWRyZT86SWRVbmlkYWRBbmFsaXNpcywgXHJcbiAgICBwa19hZ3JlZ2FkYTpDYW1wb1BrLCBcclxuICAgIHByaW5jaXBhbD86Ym9vbGVhbiwgXHJcbiAgICBoaWphczoge1trIGluIElkVW5pZGFkQW5hbGlzaXNdPzogVW5pZGFkQW5hbGlzaXN9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFRFTSA9IHtcclxuICAgIG5vbWNhbGxlOnN0cmluZ1xyXG4gICAgZG9taW5pbzpudW1iZXJcclxuICAgIHNlY3RvcjpzdHJpbmdcclxuICAgIGVkaWZpY2lvOnN0cmluZ1xyXG4gICAgZW50cmFkYTpzdHJpbmdcclxuICAgIG5yb2NhdGFzdHJhbDpzdHJpbmdcclxuICAgIHBpc286c3RyaW5nXHRcclxuICAgIGRlcGFydGFtZW50bzpzdHJpbmdcclxuICAgIGhhYml0YWNpb246c3RyaW5nXHJcbiAgICBjYXNhOnN0cmluZ1xyXG4gICAgcHJpb3JpZGFkOjF8MnwzXHJcbiAgICBvYnNlcnZhY2lvbmVzOnN0cmluZ1xyXG4gICAgc2VsZWNjaW9uYWRvOm51bWJlcixcclxuICAgIGNpdGE6IHN0cmluZyxcclxuICAgIGNhcmdhOnN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBSZXN1bWVuRXN0YWRvID0gJ3ZhY2lvJyB8ICdjb24gcHJvYmxlbWFzJyB8ICdpbmNvbXBsZXRvJyB8ICdvaycgfCAnbm8gcmVhJyB8ICdjaXRhIHBhY3RhZGEnO1xyXG5cclxuZXhwb3J0IHR5cGUgSW5mb1RhcmVhPSB7XHJcbiAgICB0YXJlYTogSWRUYXJlYVxyXG4gICAgbm90YXM/OnN0cmluZ1xyXG4gICAgZmVjaGFfYXNpZ25hY2lvbj86RGF0ZVxyXG4gICAgYXNpZ25hZG8/OnN0cmluZ1xyXG4gICAgbWFpbl9mb3JtOiBJZEZvcm11bGFyaW9cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgVmlzaXRhPXtcclxuICAgIGZlY2hhOiBzdHJpbmcgfCBudWxsXHJcbiAgICBob3JhOiBzdHJpbmcgfCBudWxsXHJcbiAgICBpZHBlcjogc3RyaW5nIHwgbnVsbFxyXG4gICAgb2JzZXJ2YWNpb25lczogc3RyaW5nIHwgbnVsbFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSAgRGF0b3NIZHJVYVBwYWw9IHtcclxuICAgIHRhcmVhOiBJbmZvVGFyZWFcclxuICAgIHRlbTogVEVNXHJcbiAgICBcclxuLypcclxuICAgIGFjbGFyYWNpw7NuOlxyXG4gICAge3YxOid4JywgdjI6J3gnLCBwZXJzb25hczpbe3AxOjEsIHAyOid4fSx7cDE6MiwgcDI6eH1dLCBtYXNjb3RhczpbXSB9XHJcbiAgICBlc3TDoSBhbmlkYWRvIHBvciB1bmlkYWQgZGUgYW7DoWxpc2lzXHJcbiovXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIElkQ2FyZ2E9XCIxXCJ8XCIyXCJ8XCJldGNcIlxyXG5cclxuZXhwb3J0IHR5cGUgRXN0YWRvQ2FyZ2E9J3Jlc3VtZW4nfCdyZWxldmFtaWVudG8nfCdyZWNpYm8nXHJcblxyXG5leHBvcnQgdHlwZSBDYXJnYT17XHJcbiAgICBmZWNoYTogRGF0ZVxyXG4gICAgZXN0YWRvX2NhcmdhOiBFc3RhZG9DYXJnYVxyXG4gICAgbmVjZXNhcmlhczogbnVtYmVyXHJcbiAgICBvYnNlcnZhY2lvbmVzOiBzdHJpbmdcclxuICAgIHJlY2VwY2lvbmlzdGE6IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDYXJnYXM9e1xyXG4gICAgW2lkQ2FyZ2EgaW4gSWRDYXJnYV06IENhcmdhXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I9U3RydWN0dXJlPElkVmFyaWFibGUsVmFsb3IsSWRGaW4+O1xyXG5cclxuZXhwb3J0IHR5cGUgTW9kb0Rlc3BsaWVndWUgPSAnbWV0YWRhdG9zJ3wncmVsZXZhbWllbnRvJ3wnUERGJ1xyXG5cclxuZXhwb3J0IHR5cGUgSW5mb0Zvcm11bGFyaW89e1xyXG4gICAgY2FzaWxsZXJvczpGb3JtdWxhcmlvLCAvLyBjYXNpbGxlcm9zIGFwbGFuYWRvc1xyXG4gICAgZXN0cnVjdHVyYVJvd1ZhbGlkYXRvcjpFc3RydWN0dXJhUm93VmFsaWRhdG9yIC8vIGVzdHJ1Y3R1cmEgZGUgdmFyaWFibGVzIHBhcmEgZWwgUm93VmFsaWRhdG9yXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIElkUmVzdWx0YWRvID0gJ0FWRVJJR1VBUid8J1RPRE8nO1xyXG5cclxuZXhwb3J0IHR5cGUgVGFyZWFzRXN0cnVjdHVyYT17XHJcbiAgICBbaWRUYXJlYSBpbiBJZFRhcmVhXTp7XHJcbiAgICAgICAgcmVzdWx0YWRvczp7XHJcbiAgICAgICAgICAgIFtpZFJlc3VsdGFkbyBpbiBJZFJlc3VsdGFkb106e1xyXG4gICAgICAgICAgICAgICAgZGVzY3JpcGNpb246c3RyaW5nXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEVzdHJ1Y3R1cmEgPSB7XHJcbiAgICBmb3JtdWxhcmlvczp7IFxyXG4gICAgICAgIFtub21icmVGb3JtdWxhcmlvIGluIElkRm9ybXVsYXJpb106SW5mb0Zvcm11bGFyaW9cclxuICAgIH1cclxuICAgIHVuaWRhZGVzX2FuYWxpc2lzOnsgXHJcbiAgICAgICAgW2lkVW5pZGFkQW5hbGlzaXMgaW4gSWRVbmlkYWRBbmFsaXNpc106IFVuaWRhZEFuYWxpc2lzXHJcbiAgICB9XHJcbiAgICB0YXJlYXM6VGFyZWFzRXN0cnVjdHVyYVxyXG4gICAgbWFpblREOiBJZFVuaWRhZEFuYWxpc2lzXHJcbiAgICBtYWluVERQSzogQ2FtcG9Qa1JhaXpcclxuICAgIHRpbWVzdGFtcDpudW1iZXJcclxuICAgIG9wZXJhdGl2bzpJZE9wZXJhdGl2b1xyXG4gICAgY29uZmlnU29ydGVvOiBDb25maWd1cmFjaW9uU29ydGVvXHJcbiAgICBoYWJpbGl0YWNpb25Cb3RvbkZvcm11bGFyaW86IENvbmZpZ3VyYWNpb25IYWJpbGl0YXJCb3RvbkZvcm11bGFyaW9cclxuICAgIHBlcm1pdGVHZW5lcmFyTXVlc3RyYTogYm9vbGVhblxyXG4gICAgY29uUmVhSG9nYXI6IGJvb2xlYW5cclxuXHRub1JlYXM6IHsgXHJcblx0ICAgICAgbm9fcmVhOiBzdHJpbmcgIFxyXG5cdFx0ICBkZXNjcmlwY2lvbjogc3RyaW5nXHJcblx0XHQgIGdydXBvOiAgICAgc3RyaW5nICAgIFxyXG5cdFx0ICB2YXJpYWJsZTogIHN0cmluZ1xyXG5cdFx0ICB2YWxvcjogICAgIHN0cmluZ1xyXG5cdFx0ICBncnVwbzA6ICAgIHN0cmluZ1xyXG5cdH1bXVxyXG4gICAgbm9SZWFzU3VwOiB7IFxyXG4gICAgICAgIG5vX3JlYV9zdXA6IHN0cmluZyAgXHJcbiAgICAgICAgZGVzY19ub3JlYV9zdXA6IHN0cmluZ1xyXG4gICAgICAgIGdydXBvX3N1cDogICAgIHN0cmluZyAgICBcclxuICAgICAgICB2YXJpYWJsZV9zdXA6ICBzdHJpbmdcclxuICAgICAgICB2YWxvcl9zdXA6ICAgICBzdHJpbmdcclxuICAgICAgICBncnVwbzBfc3VwOiAgICBzdHJpbmdcclxuICB9W11cclxuICAgIGRlZmF1bHRJbmZvcm1hY2lvbkhkcjogRGF0b3NIZHJVYVBwYWxcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSWRFbmMgPSAxMzAwMzF8MTMwMDMyO1xyXG5leHBvcnQgdHlwZSBJbmZvcm1hY2lvbkhkcj17W2VuYyBpbiBJZEVuY106IERhdG9zSGRyVWFQcGFsfVxyXG5cclxuZXhwb3J0IHR5cGUgQ2Fzb1N0YXRlPXtcclxuICAgIG9wY2lvbmVzOnsgLy8gZGF0b3MgZGUgbmF2ZWdhY2nDs24gcXVlIGVsaWplIGVsIHVzdWFyaW9cclxuICAgICAgICBmb3JQazpGb3JQa3xudWxsIC8vIMOtbmRpY2UgZGVudHJvIGRlIGxhcyB1bmlkYWRlcyBkZSBhbsOhbGlzaXMuIE51bGwgPSBlbiBob2phIGRlIHJ1dGFcclxuICAgICAgICBwaWxhRm9yUGs6Rm9yUGtbXVxyXG4gICAgICAgIG1vZG9EZXNwbGllZ3VlOk1vZG9EZXNwbGllZ3VlXHJcbiAgICAgICAgYmllbnZlbmlkbzpib29sZWFuXHJcbiAgICAgICAgbW9kb0RpcmVjdG86Ym9vbGVhblxyXG4gICAgICAgIG1vZG9Cb3JyYXJSZXNwdWVzdGE6SWRWYXJpYWJsZXxudWxsXHJcbiAgICAgICAgY29uQ2FtcG9PcGNpb25lczpib29sZWFuXHJcbiAgICAgICAgc2FsdG9BdXRvbWF0aWNvOmJvb2xlYW5cclxuICAgIH0sIFxyXG4gICAgbW9kbzp7IC8vIG5vIHNlIHBlcnNpc3RlXHJcbiAgICAgICAgZGVtbzpib29sZWFuXHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIERlZk9wZXJhdGl2byA9IHtcclxuICAgIGVzTm9SZWE6KHJlc3B1ZXN0YXM6UmVzcHVlc3Rhcyk9PiB7Y29kTm9SZWE6c3RyaW5nfG51bGwsIGVzTm9SZWE6Ym9vbGVhbn0sXHJcbiAgICBlc05vUmVhU3VwOihyZXNwdWVzdGFzOlJlc3B1ZXN0YXMpPT4ge2NvZE5vUmVhU3VwOnN0cmluZ3xudWxsLCBlc05vUmVhU3VwOmJvb2xlYW59LFxyXG4gICAgZXNSZWFsaXphZGE6KHJlc3B1ZXN0YXM6UmVzcHVlc3Rhcyk9PiB7Y29kUmVhOm51bWJlcnxudWxsLCBlc1JlYTpib29sZWFufSxcclxuICAgIGVzUmVhbGl6YWRhU3VwOihyZXNwdWVzdGFzOlJlc3B1ZXN0YXMpPT4ge2NvZFJlYVN1cDpudW1iZXJ8bnVsbCwgZXNSZWFTdXA6Ym9vbGVhbn0sXHJcbiAgICBVQXByaW5jaXBhbDogSWRVbmlkYWRBbmFsaXNpcyxcclxuICAgIGRlZlVBOntbaSBpbiBJZFVuaWRhZEFuYWxpc2lzXTp7cGs6SWRWYXJpYWJsZSwgaW5jbHVpZGFzOklkVW5pZGFkQW5hbGlzaXNbXSwgaWRzRm9yOklkRm9ybXVsYXJpb1tdfX0sXHJcbiAgICBkZWZGb3I6e1tmIGluIElkRm9ybXVsYXJpb106ey8qYXJib2xVQTpJZFVuaWRhZEFuYWxpc2lzW10sICovIGhlcm1hbm8/OnRydWV9fVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcyA9IHtcclxuICAgIHJlc3B1ZXN0YXM6e1t1YSBpbiBJZFVuaWRhZEFuYWxpc2lzXTpSZXNwdWVzdGFzUmFpeltdfVxyXG4gICAgbW9kb0FsbWFjZW5hbWllbnRvOk1vZG9BbG1hY2VuYW1pZW50b1xyXG4gICAgcGVyc29uYTpzdHJpbmdcclxuICAgIHRhcmVhOklkVGFyZWFcclxuICAgIGlkcGVyOnN0cmluZ1xyXG4gICAgY2FyZ2FzOiBDYXJnYXNcclxuICAgIGluZm9ybWFjaW9uSGRyOiBJbmZvcm1hY2lvbkhkclxyXG4gICAgc29sb0xlY3R1cmE6IGJvb2xlYW5cclxuICAgIHRva2VuPzpzdHJpbmdcclxuICAgIG51bV9zaW5jcm8/Om51bWJlclxyXG4gICAgdGltZXN0YW1wRXN0cnVjdHVyYT86bnVtYmVyXHJcbn1cclxuXHJcbnR5cGUgQ29uZmlndXJhY2lvblNvcnRlb1RhYmxhID0ge1xyXG4gICAgbWV0b2RvOiBcInRhYmxhXCIsXHJcbiAgICBwYXJhbV9tZXRvZG86IHtcclxuICAgICAgICB0YWJsYTpzdHJpbmdbXSxcclxuICAgICAgICB2YXJfbGV0cmE6SWRWYXJpYWJsZSxcclxuICAgIH0gICAgXHJcbn1cclxuXHJcbnR5cGUgQ29uZmlndXJhY2lvblNvcnRlb0hhc2ggPSB7XHJcbiAgICBtZXRvZG86IFwiaGFzaFwiLFxyXG4gICAgcGFyYW1fbWV0b2RvOiB7XHJcbiAgICAgICAgdmFyX2NvZWY6IFtcclxuICAgICAgICAgICAge3ZhcjpJZFZhcmlhYmxlLCBjb2VmOm51bWJlcn0sXHJcbiAgICAgICAgICAgIHt2YXI6SWRWYXJpYWJsZSwgY29lZjpudW1iZXJ9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgZGl2aXNvcjogbnVtYmVyXHJcbiAgICB9ICAgIFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDb25maWd1cmFjaW9uU29ydGVvID0ge1trZXkgaW4gSWRGb3JtdWxhcmlvXTpDb25maWd1cmFjaW9uU29ydGVvRm9ybXVsYXJpb31cclxuXHJcbmV4cG9ydCB0eXBlIENvbmZpZ3VyYWNpb25IYWJpbGl0YXJCb3RvbkZvcm11bGFyaW8gPSB7W2tleSBpbiBJZEZvcm11bGFyaW9dOkNvbmZpZ3VyYWNpb25IYWJpbGl0YXJCb3RvbkZvcm11bGFyaW9Gb3JtfVxyXG5cclxuZXhwb3J0IHR5cGUgQ29uZmlndXJhY2lvblNvcnRlb0Zvcm11bGFyaW8gPSB7XHJcbiAgICB1bmlkYWRfYW5hbGlzaXM6IElkVW5pZGFkQW5hbGlzaXMsXHJcbiAgICB1bmlkYWRfYW5hbGlzaXNfcGFkcmU6IElkVW5pZGFkQW5hbGlzaXMsXHJcbiAgICAvL2V4cHJfaW5jb21wbGV0aXR1ZDogc3RyaW5nIC8vXCJub3QgKHAxKSBvciBubyB0IChwMikgb3Igbm90KHAzKVwiXHJcbiAgICBleHByX2luY29tcGxldGl0dWQ6IHtcclxuICAgICAgICBba2V5IGluIG51bWJlcl06e2RvbWluaW86bnVtYmVyLCBleHByOnN0cmluZ31cclxuICAgIH0gXHJcbiAgICAvL2V4cHJfaW5jb21wbGV0aXR1ZF9qczogc3RyaW5nIC8vc2UgY3JlYSBhbCBjb21waWxhclxyXG4gICAgZXhwcl9pbmNvbXBsZXRpdHVkX2pzOiB7XHJcbiAgICAgICAgW2tleSBpbiBudW1iZXJdOntkb21pbmlvOm51bWJlciwgZXhwcjpzdHJpbmd9XHJcbiAgICB9IFxyXG4gICAgZGlzcGFyYWRvcjogSWRWYXJpYWJsZSAvL1wicDlcIlxyXG4gICAgLy9maWx0cm86IHN0cmluZyAvL1wicDM+PTE4XCJcclxuICAgIGZpbHRybzoge1xyXG4gICAgICAgIFtrZXkgaW4gbnVtYmVyXTp7ZG9taW5pbzpudW1iZXIsIGV4cHI6c3RyaW5nfVxyXG4gICAgfSBcclxuICAgIC8vZmlsdHJvX2pzOiBzdHJpbmcgLy9zZSBjcmVhIGFsIGNvbXBpbGFyXHJcbiAgICBmaWx0cm9fanM6IHtcclxuICAgICAgICBba2V5IGluIG51bWJlcl06e2RvbWluaW86bnVtYmVyLCBleHByOnN0cmluZ31cclxuICAgIH0gXHJcbiAgICBvcmRlbjoge1xyXG4gICAgICAgIHZhcmlhYmxlOklkVmFyaWFibGVcclxuICAgICAgICBvcmRlbjogMXwtMVxyXG4gICAgfVtdIC8vW1wicDNcIiwgXCJwMlwiLCBcInAxXCIsIFwicDBcIl0sIC8vIHAwIGVzIGNvbnN0cnVpZGEsIG5vIHZhIGVuIHBhcsOhbWV0cm9zLCBzZSBwb25lIHBhcmEgcXVlIGVsIG9yZGVuIHNlYSBkZXRlcm1pbsOtc3RpY29cclxuICAgIHBhcmFtZXRyb3M6SWRWYXJpYWJsZVtdLy8gW1wicDFcIixcInAyXCIsXCJwM1wiLCBcInA0XCIsIFwicDVcIiwgXCJwNlwiXSwgLy8gdmFyaWFibGVzIHF1ZSBhbnVsYW4gYWwgZGlzcGFyYWRvclxyXG4gICAgY2FudGlkYWRfc29ydGVhYmxlczogSWRWYXJpYWJsZVxyXG4gICAgY2FudGlkYWRfdG90YWw6IElkVmFyaWFibGVcclxuICAgIHJlc3VsdGFkbzogSWRWYXJpYWJsZSAvL1wicDExXCJcclxuICAgIHJlc3VsdGFkb19tYW51YWw6IElkVmFyaWFibGUgLy9cInAxMVwiXHJcbiAgICBzb3J0ZWFkb19tb3N0cmFyPzoge3NvdXJjZTpJZFZhcmlhYmxlLCB0YXJnZXQ6SWRWYXJpYWJsZX1bXSxcclxuICAgIGluY29tcGxldGFzOiBJZFZhcmlhYmxlXHJcbiAgICB2YXJpYWJsZUJvdG9uRm9ybXVsYXJpb1VBOiBJZFZhcmlhYmxlLy8nJEIuRjpTMV9QJ1xyXG4gICAgdmFyaWFibGVCb3RvbkZvcm11bGFyaW9VQUluZGl2aWR1YWw/OiBJZFZhcmlhYmxlIC8vJyRCLkY6STEnXHJcbiAgICBpZF9mb3JtdWxhcmlvX2luZGl2aWR1YWw/OiBJZEZvcm11bGFyaW8gLy8gJ0Y6STEnXHJcbiAgICBpZF9mb3JtdWxhcmlvX3BhZHJlPzogSWRGb3JtdWxhcmlvIC8vICdGOlMxJ1xyXG59ICYgKENvbmZpZ3VyYWNpb25Tb3J0ZW9IYXNoIHwgQ29uZmlndXJhY2lvblNvcnRlb1RhYmxhKVxyXG5cclxuZXhwb3J0IHR5cGUgQ29uZmlndXJhY2lvbkhhYmlsaXRhckJvdG9uRm9ybXVsYXJpb0Zvcm0gPSB7XHJcbiAgICB1bmlkYWRfYW5hbGlzaXM6IElkVW5pZGFkQW5hbGlzaXMsXHJcbiAgICBleHByX2hhYmlsaXRhcl9ib3Rvbjogc3RyaW5nLFxyXG4gICAgZXhwcl9oYWJpbGl0YXJfYm90b25fanM6IHN0cmluZyxcclxuICAgIGhhYmlsaXRhcl9hZ3JlZ2FyX2xpc3RvOiBib29sZWFuXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0b1BsYWluRm9yUGsoZm9yUGs6Rm9yUGspOlBsYWluRm9yUGt7XHJcbiAgICAvLyBAdHMtaWdub3JlIHNhYmVtb3MgcXVlIGhheSBxdWUgaGFjZXIgdW4gSlNPTlxyXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGZvclBrKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBpdGVyYXRvcjo8VD4obzpPYmpldG9OdW1lcmFkb09BcnJheTxUPik9Pkl0ZXJhYmxlPFQ+ID0gTGlrZUFyLml0ZXJhdG9yXHJcbmV4cG9ydCB2YXIgZW1wdHk6PFQ+KG86T2JqZXRvTnVtZXJhZG9PQXJyYXk8VD58bnVsbHx1bmRlZmluZWQpPT5ib29sZWFuID0gTGlrZUFyLmVtcHR5XHJcblxyXG5kZWNsYXJlIGdsb2JhbCB7XHJcbiAgICBuYW1lc3BhY2UgbXlPd257XHJcbiAgICAgICAgaW50ZXJmYWNlIEFkZHJQYXJhbXMge1xyXG4gICAgICAgICAgICBzdGF0ZV9mb3JQazpzdHJpbmdcclxuICAgICAgICAgICAgc3RhdGVfcGlsYUZvclBrOnN0cmluZ1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRGlyZWNjaW9uQWNjaW9uID0gJ2F2YW5jZScgfCAncmV0cm9jZXNvJyB8ICdibGFucXVlbydcclxuXHJcbmV4cG9ydCB0eXBlIEVzdGFkb0FjY2lvbiA9IHtcclxuICAgIG9wZXJhdGl2bzogc3RyaW5nXHJcbiAgICBlc3RhZG86IHN0cmluZ1xyXG4gICAgZWFjY2lvbjogc3RyaW5nXHJcbiAgICBjb25kaWNpb246IHN0cmluZ1xyXG4gICAgZXN0YWRvX2Rlc3Rpbm86IHN0cmluZ1xyXG4gICAgZWFjY2lvbl9kaXJlY2Npb246IERpcmVjY2lvbkFjY2lvblxyXG4gICAgcGF0aF9pY29ub19zdmc6IHN0cmluZ1xyXG4gICAgbm9tYnJlX3Byb2NlZHVyZTogc3RyaW5nXHJcbiAgICBub21icmVfd3NjcmVlbjogc3RyaW5nXHJcbiAgICBkZXNhY3RpdmFfYm90b246IGJvb2xlYW5cclxuICAgIGNvbmZpcm1hOiBib29sZWFuXHJcbn0iXX0=
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dmencu",
3
3
  "description": "DM Encu - Encuestas en dispositivo móvil",
4
- "version": "0.8.52",
4
+ "version": "1.0.0",
5
5
  "author": "Codenautas <codenautas@googlegroups.com>",
6
6
  "license": "MIT",
7
7
  "main": "dist/server/server/app-dmencu.js",