Content-Type: multipart/related; start=; boundary=----------OBg9i9L0LVC3BilRJbEwsz Content-Location: http://www.gs1es.org/ Subject: =?utf-8?Q?AECOC=20-=20La=20asociaci=C3=B3n=20de=20fabricantes=20y=20distribuidores?= MIME-Version: 1.0 ------------OBg9i9L0LVC3BilRJbEwsz Content-Disposition: inline; filename=default.htm Content-Type: text/html; charset=iso-8859-1; name=default.htm Content-ID: Content-Location: http://www.gs1es.org/ Content-Transfer-Encoding: 8bit AECOC - La asociación de fabricantes y distribuidores

About us Área de Asociados   botonbuscar

logo
Estándares GS1
Servicios
Colaboradores
Áreas de actuación
Sectores de actividad
lineaSeparacion
Copyright © AECOC 2009 Glosariol Info Legall Dónde Estamosl Contacto   Tel. 93 252 39 00 / info@aecoc.es
------------OBg9i9L0LVC3BilRJbEwsz Content-Disposition: inline; filename=icona_GS1.ico Content-Type: image/x-icon; name=icona_GS1.ico Content-Location: http://www.gs1es.org/icona_GS1.ico Content-Transfer-Encoding: Base64 AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD49vZyPCj///96Sjd4RjOKYE+zmI7t6ecA AAAAAAAAAAAAAAAAAAAAAAAAAADl3tuGXEv1//iFXEr///95RjJyPCdxPCh4RjLN vLUAAAAAAAAAAAAAAAAAAADs5+R/UD71//iTbl71//iCV0V8TTp0PytxPCdxPCdy PinQwLoAAAAAAAAAAAAAAACZdmj1//iOZlb1//iOZ1aMY1OCV0R1Qi1xPChxPCdx PCd7Szjy8O4AAAAAAADo4d7///+hgHL1//iMZFP1//j///9xPSmCVUJ2RTFxPCiD V0R2RDC/qqAAAAAAAAD///9yPCj///9yPCibd2n///93RjL//PL//PL//PJyPCj/ /PL//PJyPCj49/VyPCj1//hyPCj1//hyPCj1//hyPChyPCj//PJyPCj//PJxPCdy PCj//PJyPCj49/VyPCj1//hyPCj///9yPCj1//hyPChyPCj//PJxPCdxPCdyPCj/ /PJ1Qy5yPCj08vByPCjVyML1//iHXkz//PKhgnX1//hyPCj//PL//PL//PJ2RDH/ /PL//PKrj4NyPChyPCgAAACBVEL//PKYdWb1//ibemv///+AU0FxPShxPCdxPCdx PCdyPSjf1tEAAAAAAAAAAADMu7SHXUv1//iVcWH1//iKYlB7TTl2Qy5xPCdxPCdy PCijhHcAAAAAAAAAAAAAAAAAAAC4oJZ+UD31//iMZVT///91Qi1xPCdxPChxPCeV cGAAAAAAAAAAAAAAAAAAAAAAAAAAAADUxr+IXk3///96STVxPShxPCd8TDm5opkA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADk3NnOv7jMu7Pd0s0AAAAAAAAA AAAAAAAAAAAAAAAAAAD//6xB//+sQeAfrEHAD6xBgAesQYADrEEAA6xBAACsQQAA rEEAAKxBAACsQYADrEGAB6xBwA+sQeAfrEH4f6xB ------------OBg9i9L0LVC3BilRJbEwsz Content-Disposition: inline; filename=estils.css Content-Type: text/css; charset=iso-8859-1; name=estils.css Content-Location: http://www.gs1es.org/css/estils.css Content-Transfer-Encoding: 8bit /***************** MAQUETACIO DE LA WEB ******************************/ Body { margin-bottom:0px; margin-top:0px; } .tooltip{ background-color: #e1e2ea; font-family:Arial, Helvetica, sans-serif; text-align:justify; font-size:11px; color:#4c4c4c; } .titulo_edicion{ font-size:14px; font-family:Arial, Helvetica, sans-serif; color:#393a73; font-weight:bold; } .tooltipimg{ width:100px; height:65px; overflow:hidden; border:0px solid #000000; } .tHome { /* background-color:#00CCCC;*/ background-color:#FFFFFF; border-collapse:collapse; } .tdIngles { font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#393a73; width:450px; } .tdIngles:hover { font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#f16331; width:450px; cursor:pointer; } .linkshome{ color:#f16331; font-family:Arial, Helvetica, sans-serif; font-size:18px; cursor:pointer; padding-left:2px; font-weight:bold; } .linkshomelateralder{ cursor:pointer; font-family:Arial, Helvetica, sans-serif; color:#f16331; font-size:14px; font-weight:bold; } .linkshome:hover{ color:#393A73; font-family:Arial, Helvetica, sans-serif; font-size:18px; cursor:pointer; padding-left:2px; font-weight:bold; } .tdSocios { font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#4c4c4c; width:127px; } .tdSocios:hover { font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#393A73; width:127px; cursor:pointer; } .tdbuscador { border:1px #4c4c4c solid; vertical-align:middle; width:80px; height:15px; font-family:Arial, Helvetica, sans-serif; font-size:11px; color:#4c4c4c; } .pie { font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#000000; } .pie2 { font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#000000; padding-top:5px; } .pieCentral { font-size:11px; color:#4c4c4c; padding-left:50px; padding-right:174px; } .pielink { font-family:Arial, Helvetica, sans-serif; font-size:11px; color:#4c4c4c; } .pielink:hover { font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#393a73; } .slashPie { font-size:14px; color:#393a73; font-weight:bold; padding-left:7px; padding-right:7px; } .mVertical { cursor:pointer; font-family:Arial, Helvetica, sans-serif; font-size:14px; color:#393a73; padding-top:2px; } .mVertical2 { cursor:pointer; font-family:Arial, Helvetica, sans-serif; font-size:11px; color:#393a73; } .mVertical:hover{ color:#F26334; } .mVertical2:hover{ color:#F26334; } .subVertical { cursor:pointer; font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#393a73; padding-left:8px; } .subVertical2 { cursor:pointer; font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#393a73; } .subVertical2:hover { color:#F26334; } .subVertical:hover { color:#F26334; } .relacionado { font-family:Arial, Helvetica, sans-serif; font-size:15px; color:#393a73; padding-top:10px; padding-left:8px; } .subrelacionado { font-family:Arial, Helvetica, sans-serif; font-size:13px; font-weight:bolder; color:#f16331; padding-bottom:20px; padding-left:8px; } a{ color:#FFFFFF; text-decoration:none; } A{text-decoration:none} /**Menu Vertical**/ .tMenuVertical { width: 175px; text-align:left; } .tFrameCentral { width:510px; height:376px; /*border:1px solid #006699;*/ } .tFrameLateral{ width:140px; } .mainframe{ width:510px; height:376px; } .framederecha{ width:140px; height:375px; } .imagen_standares{ width: 36px; height: 36px; } .titulo_estandares{ font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #F26334; text-decoration:none; text-align:left; } .tdstandares{ width:245px; padding-right:0px; } .titulo_estandares:hover{ font-weight:bolder; } .descripcion_estandares{ font-family: Arial, Helvetica, sans-serif; font-size: 11px; color: #4c4c4c; } /**MENU HORIZONTAL**/ .menu { font-family:Arial, Helvetica, sans-serif; font-size:14px; background-color:#FFFFFF; color:#000000; text-align:center; border:1px; vertical-align:middle; } a.menu_TOP{ display:block; text-align: center; text-decoration:none; border-top: #36376F 1px solid; border-bottom: #36376F 1px solid; border-right: #FFFFFF 1px solid; border-left: #FFFFFF 0px solid; vertical-align:middle; } /* CONTROL SUB NIVEL DEL MENU*/ a.menu_SUB{ display:block; padding: 2px 2px 2px 4px; text-decoration:none; text-align: left; filter:alpha(opacity=100); border-bottom: #FFFFFF 1px solid; } /* MAS CONTROL PARA EL SUB NIVEL DEL MENU*/ .menu_DIV{ border-top: #FFFFFF 0px solid; border-bottom: #FFFFFF 1px solid; border-right: #FFFFFF 1px solid; border-left: #FFFFFF 1px solid; filter:alpha(opacity=100); z-index:101; } /** standares **/ .cabecera_content{ font-family: Arial, Helvetica, sans-serif; font-size: 22px; color: #393A73; padding-bottom:4px; text-decoration:none; } .cabecera_content_login{ font-family: Arial, Helvetica, sans-serif; font-size: 22px; color: #393A73; padding-bottom:4px; } .lateral_vertical { background-image:url(../imagenes/lineaVertical2.gif); background-repeat: repeat-y; } .lateral_vertical_login{ background-image:url(imagenes/lineaVertical2.gif); background-repeat:repeat-y; width:15px; } .texto{ font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #8f90aa; padding-right:30px; } .texto_noticias{ font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #8f90aa; padding-bottom:20px; } .leer_mas{ cursor: pointer; color: #F16331; text-decoration:none } .leer_mas:hover{ font-weight:bold; } .mapa_seccion{ font-family: Arial, Helvetica, sans-serif; text-align:left; font-size: 11px; font-weight: bold; padding-bottom:27px; padding-left:5px; text-decoration:none; color: black; } .primera_subcarpeta{ font-family: Arial, Helvetica, sans-serif; font-size: 11px; color:#878889; font-weight: bold; text-decoration:none; } .segunda_subcarpeta{ font-family: Arial, Helvetica, sans-serif; font-size: 11px; color:#393A73; font-weight: bold; text-decoration:none; } .tercera_subcarpeta{ font-family: Arial, Helvetica, sans-serif; font-size: 11px; color:#F16331; font-weight: bold; text-decoration:none; } .cabecera_hijos{ font-family: Arial, Helvetica, sans-serif; font-size: 22px; color:#F16331; padding-bottom:27px; padding-left:5px; } .cabecera_noticias{ font-family: Arial, Helvetica, sans-serif; font-size: 22px; color:#F16331; padding-bottom:6px; padding-left:0px; } .texto_hijo{ font-family: Arial, Helvetica, sans-serif; font-size: 13px; color:#393A73; text-align:justify; } .titulo_ficha{ font-family:Arial, Helvetica, sans-serif; font-size:22px; color:#393A73; } .fecha_ficha{ font-family:Arial, Helvetica, sans-serif; font-size:16px; color:#F16331; font-weight: bold; } .subtitulo_ficha{ font-family:Arial, Helvetica, sans-serif; font-size:14px; color:#393A73; } .tabla_ficha{ background-color:#d3d9ec; } .tabla_interior_ficha{ background-color:#FFFFFF; } .texto_ficha{ font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#4c4c4c; } .titulo_texto_ficha{ font-family:Arial, Helvetica, sans-serif; font-size:13px; color:#393A73; font-weight: bold; } .dia_programa_ficha{ font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#F16331; font-weight: bold; } .campos_texto_ficha{ color:#F16331; } .campos_libro{ font-family:Arial, Helvetica, sans-serif; font-size:13px; color:#393A73; } .campos_libro_2{ font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#4c4c4c; } .campo_precio{ font-family:Arial, Helvetica, sans-serif; font-size:20px; color:#878889; } .texto_login{ font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#4c4c4c; } .aqui_login{ font-family:Arial, Helvetica, sans-serif; font-size:11px; color:#F16331; cursor:pointer; } .campo_login{ font-family:Arial, Helvetica, sans-serif; font-size:18px; color:#393A73; } .caja_login{ background-color:#eceded; font-family:Arial, Helvetica, sans-serif; font-size:11px; color:#4c4c4c ; border:1px #eceded solid; } .cabecera_buscador{ font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#F16331; } .divcerrado{ text-align:justify; } .divabierto{ display:none; text-align:justify; } .titulo_info_legal{ font-family:Arial, Helvetica, sans-serif; font-size:16px; color:#F16331; } .link_glosario{ color:#F16331; } .texto_glosario{ font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #8f90aa; } .titulo_text_glosario{ font-family: Arial, Helvetica, sans-serif; font-size: 13px; color: #F16331; } .letra_glosario{ font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #8f90aa; } .tipo_colaborador{ padding-top:10px; font-family: Arial, Helvetica, sans-serif; font-size: 11px; color: #4c4c4c; } .texto_buscador{ padding-left:2px; font-family: Arial, Helvetica, sans-serif; font-size: 13px; color: #4c4c4c; } .titulo_buscador{ font-family: Arial, Helvetica, sans-serif; font-size: 13px; color: #F16331; } .subtitulo_buscador{ font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #393A73; } .texto_buscador{ font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #4c4c4c; } /**************************** CSS PAGINADOR ****************************/ /* Estils del body */ .botonAnterior { background-image:url(../imagenes/botones/boton_atras.jpg); background-repeat:no-repeat; background-position:center; cursor:pointer; /* Obligatori especificar les mides del TD ja que si no, al estar buit, no mostraria res. S'ha d'adaptar a les mides de la imatge */ width:15px; height:15px; padding-left:0px; } /* Class per al buto de carregar pagina seguent. Carreguem la imatge com a background del TD i li especifiquem les mides del TD */ .botonSeguent { background-image:url(../imagenes/botones/boton_adelante.jpg); background-repeat:no-repeat; background-position:center; cursor:pointer; /* Obligatori especificar les mides del TD ja que si no, al estar buit, no mostraria res. S'ha d'adaptar a les mides de la imatge */ width:15px; height:15px; padding-left:10px; } .cuerpoCarga { font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #707172; /* height: 322px;*/ height: 326px; margin:0px; cursor: default; scrollbar-base-color: #d9dadb; scrollbar-arrow-color: #eceded; scrollbar-3dlight-color: #eceded; scrollbar-darkshadow-color: #eceded; scrollbar-face-color: #d9dadb; scrollbar-highlight-color: #d9dadb; scrollbar-shadow-color: #eceded; scrollbar-track-color: #eceded; } .TablaCuerpoCarga{ font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #707172; height: 100%; width: 100%; margin:0px; padding: 0px; cursor: default; } .barra_buscador{ background-image:url(../imagenes/linea_buscador.jpg); background-repeat:repeat-x; } .boton_formulario{ border:0px; cursor:pointer; } .num_paginas{ font-family:Arial, Helvetica, sans-serif; font-size:11px; color:black; } .fecha_buscador { font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#4c4c4c; } .nombre_buscador{ font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#4c4c4c; } .link_buscador_web{ font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#4c4c4c; } .link_buscador_web:hover{ font-family:Arial, Helvetica, sans-serif; font-size:12px; font-weight:bolder; color:#4c4c4c; } .ciudad_buscador{ font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#4c4c4c; } .campo_buscador{ font-family:Arial, Helvetica, sans-serif; font-size:13px; color:#4c4c4c; } .linia_dis{ background-image:url(../imagenes/lineas_discontinuas.jpg); background-repeat:repeat-x; } /* Texto de color rojo */ .textoRojo { color:#c10001; } /* Class per als enllassos de la pagina de contacte */ a.linksBuscador:link{text-decoration:none;color:#707172} a.linksBuscador:visited {text-decoration: none;color:#707172} a.linksBuscador:active {text-decoration: none;color:#c10001} a.linksBuscador:hover {text-decoration: none;color:#c10001} .numeroPagines{ font-weight:bold; color:black; } /**************************** FIN CSS PAGINADOR ****************************/ .Estilo1 {color: #F26334} .tframe2nivel { padding-top:30px; } .frame2nivel { width:496px; /*border:0px solid #006666;*/ } .td1fila1col2nivel{ width:200px; padding-right:0px; padding-bottom:17px; } .td1fila2col2nivel{ width:200px; padding-bottom:17px; } .td2fila1col2nivel{ width:200px; padding-bottom:17px; } .td2fila2col2nivel{ width:200px; padding-bottom:17px; } .imagenficha{ padding-left:5px; vertical-align:top; width:160px; height:160px; } /************** CSS COMBOS ****************************/ .inputvoid { border:1px solid #DDDDDD; font-size:12px; width:85px; color:#362688; height: 18px; font-family: Arial; font-style: normal; color: #4f4b4a; text-align: center; } .input { border:1px solid #DDDDDD; width:85px; color:#362688; height: 18px; font-family: Arial; font-style: normal; color: #4f4b4a; font-size: 12px; cursor: pointer; } .celdadesplegablesLayer{ color: #4f4b4a; background-color:#DAD8E3; font-family:Arial; font-size: 12px; font-weight:normal; cursor:pointer; } .celdadesplegablesLayerOver{ color: #4f4b4a; background-color:#CCCCCC; font-family:Arial; font-size:12px; font-weight:normal; cursor:pointer; } .comboBuscador { width: 85px; height: 16px; font-family: Arial; font-style: normal; color: #4f4b4a; font-size: 12px; cursor:pointer; } .direccion_google{ font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: black; } .direccion{ font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: black; } .imagenSelector { cursor: pointer; vertical-align: top; width:18px; height:20px; padding-bottom:4px; } .tituloDestacados{ font-family:Arial, Helvetica, sans-serif; font-size:15px; padding-top:10px; padding-left:8px; cursor:pointer; padding-bottom:3px; color:#000000; } .tituloDestacados:hover{ font-family:Arial, Helvetica, sans-serif; font-size:15px; padding-top:10px; padding-left:8px; cursor:pointer; padding-bottom:3px; color:#FFFF03; } .descripcionDestacados{ font-family:Arial, Helvetica, sans-serif; font-size:13px; padding-bottom:3px; padding-left:8px; color:#ffffff; } .masazul{ font-family:Arial, Helvetica, sans-serif; font-size:13px; padding-left:2px; color:#223E7F; cursor:pointer; } .masazul:hover{ font-family:Arial, Helvetica, sans-serif; font-size:13px; padding-left:2px; color:#FFFF03; cursor:pointer; } /**********Resum cursos************/ .curs_titol_seccio{ text-align:center; margin-bottom:10px; color:#303fb2; font-size:15px; font-family:Arial, Helvetica, sans-serif; font-weight: bold; height:50px; } .curs_descipcio{ font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#9aa1cb; padding-bottom:10px; } .tituloDestacadosCursos{ font-family:Arial, Helvetica, sans-serif; font-size:14px; padding-top:8px; padding-left:8px; cursor:default; padding-bottom:3px; color:#000000; } .tituloDestacadosCursos:hover{ font-family:Arial, Helvetica, sans-serif; font-size:14px; padding-top:8px; padding-left:8px; cursor:default; padding-bottom:3px; color:#FFFF03; } /***Galería de imágenes***/ .gimage{ float:left; width:145px; height:202px; margin-top:10px; margin-left:10px; background-color:#C1C6E8; text-align:center; } .gimage div{ font-family:Arial, Helvetica, sans-serif; font-size:14px; } .image{ float:left; width:135px; height:135px; margin-top:5px; margin-left:5px; background-color:#FFFFFF; text-align:center; line-height: 133px; vertical-align:middle; } .image img{ max-height:135px; max-width:135px; } .imageDownload{ float:left; vertical-align:bottom; margin-top:10px; margin-left:12px; } a img{ border-style:none; border-color:#C1C6E8; } .imageVer{ float:right; vertical-align:bottom; margin-top:10px; margin-right:12px; cursor:pointer; } .divMostra { border-bottom:5px solid #C1C6E8; border-left:5px solid #C1C6E8; border-right:5px solid #C1C6E8; text-align:center; vertical-align:middle; position:absolute; z-index:1; width:400px; height:450px; background-color:white; } .handle { width:100%; background-color:#C1C6E8; font-family:Arial, Helvetica, sans-serif; color:#FFFFFF; cursor:move; } .imageCerrar{ color:#C1C6E8; position:absolute; bottom:6px; right:6px; font-family:Arial, Helvetica, sans-serif; cursor:pointer; } .imageCerrar:hover{ color:#000000; } .divImatge { float: left; text-align: center; width: 400px; height: 420px; margin: 0px; line-height: 148px; } .imageMostra { max-height:410px; max-width:390px; margin-top: expression(( 400 - this.height ) / 2); } //en el cas de IE v.6 * html { } * html .image img{ height:135px; width:135px; } * html .image{ float:left; width:136px; height:135px; margin-top:5px; margin-left:2px; background-color:#FFFFFF; text-align:center; line-height: 133px; vertical-align:middle; } * html .imageMostra{ height:410px; width:390px; } #tabla_actividades_wrs tr td{ color:#4c4c4c; font-family:Arial,Helvetica,sans-serif; font-size:10px; letter-spacing: 1px; } #tabla_actividades_wrs .titulo{ font-size: 11px; font-weight: bolder; color:#393A73; } #tabla_actividades_wrs .titulo_medio{ padding-top: 5px; padding-bottom: 5px; font-size: 11px; font-weight: bolder; color:#393A73; } #tabla_actividades_wrs .titulo_grande{ padding-top: 10px; padding-bottom: 10px; font-size: 13px; font-weight: bolder; color:#393A73; } #popoup_panel{ margin:0; top:0px; left:0px; position:absolute; background-color:#000000; z-index:10000; filter: alpha(opacity=65); -moz-opacity: .65; opacity: .65; } #popoup_panel_container{ position:absolute; z-index:10001; height:600px; width:500px; background-color:white; overflow:hidden; } #div_container_popoup{ margin-left:10px; height:510px; width:470px; overflow-x:hidden; overflow-y:auto; border: 1px solid #393A73; } #popoup_panel_container_pago{ position:absolute; z-index:10001; height:600px; width:780px; background-color:white; overflow:hidden; } #div_container_popoup_pago{ margin-left:10px; height:510px; width:750px; overflow-x:hidden; overflow-y:auto; border: 1px solid #393A73; } .boton_registro{ border: solid 1px #393A73; background-color: #393A73; font-family:Arial,Helvetica,sans-serif; font-size:11px; letter-spacing: 1px; color:#ffffff; margin:2px; cursor:pointer; } .boton_registro:hover{ border: solid 1px #e1de07; color:#e1de07; background-color: #393A73; font-family:Arial,Helvetica,sans-serif; font-size:11px; letter-spacing: 1px; margin:2px; cursor:pointer; } .boton_registro_img{ background-image:url(../imagenes/botones/cerrar.png); background-color:transparent; width:20px; height:20px; cursor:pointer; border:none; } #popoup_title_pago{ font-family:Arial,Helvetica,sans-serif; font-size:16px; color:#393A73; margin-left:10px; font-weight: bolder; } #popoup_title { font-family:Arial,Helvetica,sans-serif; font-size:16px; color:#393A73; margin-left:10px; font-weight: bolder; } .textes_popoup{ color:#4c4c4c; font-family:Arial,Helvetica,sans-serif; font-size:10px; letter-spacing: 1px; } .texto_final{ font-family:Arial,Helvetica,sans-serif; font-size:16px; color:#393A73; margin-left:10px; font-weight: bolder; } ------------OBg9i9L0LVC3BilRJbEwsz Content-Disposition: inline; filename=functions.js Content-Type: application/javascript; charset=iso-8859-1; name=functions.js Content-Location: http://www.gs1es.org/js/functions.js Content-Transfer-Encoding: Base64 Ly8gSmF2YVNjcmlwdCBEb2N1bWVudA0KDQoNCkNPTlNUX0hPTUU9ICJpbWFnZW5l cy9jYWJlY2VyYXMzL0NhYmVjZXJhX0hvbWUuanBnIjsNCkNPTlNUX1NPQlJFQUVD T0MgPSAiaW1hZ2VuZXMvY2FiZWNlcmFzMy9DYWJlY2VyYV9Ib21lLmpwZyI7DQpD T05TVF9TRVJWSUNJT1M9ICJpbWFnZW5lcy9jYWJlY2VyYXMzL0NhYmVjZXJhX1Nl cnZpY2lvcy5qcGciDQpDT05TVF9TQUxBUFJFTlNBID0gImltYWdlbmVzL2NhYmVj ZXJhczMvQ2FiZWNlcmFfU2FsYXByZW5zYS5qcGciOw0KQ09OU1RfUFVCTElDQUNJ T05FUyA9ICJpbWFnZW5lcy9jYWJlY2VyYXMzL0NhYmVjZXJhX1B1YmxpY2FjaW9u ZXMuanBnIjsNCkNPTlNUX0dTMSA9ICJpbWFnZW5lcy9jYWJlY2VyYXMzL0NhYmVj ZXJhX0dTMS5qcGciOw0KQ09OU1RfRk9STUNBSU9OID0gImltYWdlbmVzL2NhYmVj ZXJhczMvQ2FiZWNlcmFfRm9ybWFjaW9uLmpwZyI7DQpDT05TVF9FVkVOVE9TID0g ImltYWdlbmVzL2NhYmVjZXJhczMvQ2FiZWNlcmFfSG9tZS5qcGciOw0KQ09OU1Rf Q09MQUJPUkFET1JFUyA9ICJpbWFnZW5lcy9jYWJlY2VyYXMzL0NhYmVjZXJhX0Nv bGFib3JhZG9yLmpwZyI7DQpDT05TVF9BU09DSUVTRSA9ICJpbWFnZW5lcy9jYWJl Y2VyYXMzL0NhYmVjZXJhX0Fzb2NpZXNlLmpwZyI7DQpDT05TVF9BUkVBU0FDVFVB Q0lPTiA9ICJpbWFnZW5lcy9jYWJlY2VyYXMzL0NhYmVjZXJhX0FyZWFzYWN0dWFj aW9uLmpwZyI7DQpDT05TVF9TRUNUT1JFUyA9ICJpbWFnZW5lcy9jYWJlY2VyYXMz L0NhYmVjZXJhX0hvbWUuanBnIjsNCkNPTlNUX05FV1NMRVRURVIgID0gImltYWdl bmVzL2NhYmVjZXJhczMvQ2FiZWNlcmFfSG9tZS5qcGciOw0KDQpmdW5jdGlvbiBj YXJnYUluc2NyaXBjaW9uQ3Vyc28oKXsNCg0KCXZhciBjb2RpQWVjb2MgPSB3aW5k b3cucGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXJhbXMiKS52YWx1 ZTsNCgl2YXIgY2l1dGF0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5T ZWNjaW9uZXMiKS52YWx1ZTsNCgl2YXIgZmVjaGEgPSBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgibWFpbjJTZWNjaW9uZXMiKS52YWx1ZTsNCg0KCWlmKGNpdXRhdCA9 PSAiKiIgfHwgY2l1dGF0ID09ICdudWxsJyl7DQoJCWFsZXJ0KCJEZWJlIHNlbGVj Y2lvbmFyIHVuYSBjaXVkYWQiKTsNCgkJcmV0dXJuIGZhbHNlOw0KCX0NCgllbHNl IGlmKGZlY2hhID09ICIqIiB8fCBmZWNoYSA9PSAnbnVsbCcpew0KCQlhbGVydCgi RGViZSBzZWxlY2Npb25hciB1bmEgZmVjaGEiKTsNCgkJcmV0dXJuIGZhbHNlOw0K CX0NCgllbHNlew0KCQkNCgkJZmVjaGEgPSBmZWNoYS5yZXBsYWNlKCIvIiwgIiIp Ow0KCQlmZWNoYSA9IGZlY2hhLnJlcGxhY2UoIi8iLCAiIik7DQoJCXdpbmRvdy50 b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW5mcmFtZScpLnN0eWxlLmhl aWdodD0nMTA3NXB4JzsNCgkJd2luZG93LnRvcC5kb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgnbWFpbmZyYW1lJykuc3JjPSAiaHR0cDovL3NlZGUuYWVjb2MuZXMvc2Vj bWdyLm5zZi9tdWx0aXJlZ2lzdHJvP09wZW5Gb3JtJlNVQlNDVE89IiArIGNvZGlB ZWNvYyArICJfIiArIGNpdXRhdCArICJfIiArIGZlY2hhOw0KCX0NCn0NCg0KDQpm dW5jdGlvbiBwYXJhbXNfdmFsdWVzKHN6SWQsIHN6Q29kaWdvQWVjb2Mpew0KCS8q dmFyIHN0cjsNCgl2YXIgY2FkZW5hOw0KCXZhciBudiA9IG5ldyBBcnJheSgpOw0K CXZhciBjb2RpZ29BZWNvYzsNCgl2YXIgY2FyZ2FGb3JtID0gMDsNCglzdHIgPSBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFyYW1zIikudmFsdWU7DQoJY2FkZW5h ID0gc3RyLnNwbGl0KCd8Jyk7DQoJZm9yIChpID0gMDsgaSA8IGNhZGVuYS5sZW5n dGg7IGkrKyl7DQoJICBudltpXSA9IGNhZGVuYVtpXS5zcGxpdCgnIycpDQoJICAv L2FsZXJ0KG52W2ldWzBdICsgJyA9ICcgKyBudltpXVsxXSk7DQoJICBhbGVydA0K CSAgaWYobnZbaV1bMF0gPT0gImNvZGlnb19hZWNvYyIgKXsNCgkJY2FyZ2FGb3Jt ID0gMTsNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N1ZXJwb0NlbnRyYWwn KS5zdHlsZS5oZWlnaHQ9JzEzMDBweCc7DQoJCWRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdjdWVycG9DZW50cmFsJykuc3JjPSdodHRwOi8vc2VkZS5hZWNvYy5lcy9z ZWNtZ3IubnNmL211bHRpcmVnaXN0cm8/T3BlbkZvcm0mU1VCU0NUTz0nICsgbnZb aV1bMV07DQoJCQ0KCSAgfSANCgl9DQoJaWYgKGNhcmdhRm9ybSA9PSAwKXsNCgkJ ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N1ZXJwb0NlbnRyYWwnKS5zdHlsZS5o ZWlnaHQ9JzY3MHB4JzsNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N1ZXJw b0NlbnRyYWwnKS5zcmM9Jy9hZG1pbi93ZWIvZ2Nfc2VhcmNoLnBocD90aXBvPTMm ZW50aWRhZD0xNCZwbGFudGlsbGE9NTEmSWQ9JythOw0KCX0qLw0KCXN0ciA9IGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXJhbXMiKS52YWx1ZTsNCglpZih0cmlt KHN0cikgPT0gIk4iKXsNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N1ZXJw b0NlbnRyYWwnKS5zdHlsZS5oZWlnaHQ9JzY3MHB4JzsNCgkJZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2N1ZXJwb0NlbnRyYWwnKS5zcmM9Jy9hZG1pbi93ZWIvZ2Nf c2VhcmNoLnBocD90aXBvPTMmZW50aWRhZD0xNCZwbGFudGlsbGE9NTEmSWQ9Jysg c3pJZDsNCgl9DQoJZWxzZXsNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N1 ZXJwb0NlbnRyYWwnKS5zdHlsZS5oZWlnaHQ9JzEzMDBweCc7DQoJCWRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdjdWVycG9DZW50cmFsJykuc3JjPSdodHRwOi8vc2Vk ZS5hZWNvYy5lcy9zZWNtZ3IubnNmL211bHRpcmVnaXN0cm8/T3BlbkZvcm0mU1VC U0NUTz0nKyBzekNvZGlnb0FlY29jOw0KCX0NCn0NCg0KZnVuY3Rpb24gbHRyaW0o cykgew0KICAgcmV0dXJuIHMucmVwbGFjZSgvXlxzKy8sICIiKTsNCn0NCg0KZnVu Y3Rpb24gcnRyaW0ocykgew0KICAgcmV0dXJuIHMucmVwbGFjZSgvXHMrJC8sICIi KTsNCn0NCg0KZnVuY3Rpb24gTnRyaW0ocykgew0KICAgcmV0dXJuIHJ0cmltKGx0 cmltKHMpKTsNCn0NCg0KZnVuY3Rpb24gcHJvZ3JhbWFGaWNoYShjKXsNCgl2YXIg dG9kbyA9IGMuc3BsaXQoIjxici8+Iik7DQoJZG9jdW1lbnQud3JpdGUoJzx0YWJs ZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lk dGg9IjEwMCUiPjx0cj48dGQ+Jyk7DQoJZm9yKGogPSAwOyBqIDwgdG9kby5sZW5n dGg7IGorKyl7DQoJCWlmKHRvZG9bal0uc3Vic3RyaW5nKDAsMikgPT0gIlR8Iil7 DQoJCQlkb2N1bWVudC53cml0ZSgnPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRp bmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSIgPjx0ciBoZWlnaHQ9 IjVweCI+PHRkID48L3RkPjwvdHI+Jyk7DQoJCQlkb2N1bWVudC53cml0ZSgnPHRy Pjx0ZD48c3BhbiBjbGFzcz0iZGlhX3Byb2dyYW1hX2ZpY2hhIj4nICsgdG9kb1tq XS5zdWJzdHJpbmcoMikgKyAnPC9zcGFuPjxiciAvPjwvdGQ+PC90cj48L3RhYmxl PicpOw0KCQl9ZWxzZSBpZih0b2RvW2pdLnN1YnN0cmluZygwLDIpID09ICJIfCIp ew0KCQkJdGVtcCA9IHRvZG9bal0uc3Vic3RyaW5nKDIpLnNwbGl0KCJ8Iik7DQoJ CQlkb2N1bWVudC53cml0ZSgnPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9 IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSIgPjx0ciBjbGFzcz0idGV4 dG9fZmljaGEiPjx0ZCB2YWxpZ249InRvcCIgd2lkdGg9IjIwJSI+JyArIHRlbXBb MF0gKyAnPC90ZD48dGQgd2lkdGg9IjMlIj4mbmJzcDs8L3RkPjx0ZD4nICsgdGVt cFsxXSArICc8L3RkPjwvdHI+PC90YWJsZT4nKTsJCQ0KCQl9ZWxzZSBpZih0b2Rv W2pdLnN1YnN0cmluZygwLDIpID09ICJDfCIpew0KCQkJbnVtID0gcGFyc2VJbnQo dG9kb1tqXS5zdWJzdHJpbmcoMikuc3Vic3RyaW5nKDAsMSkpOw0KCQkJZG9jdW1l bnQud3JpdGUoJzx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxs c3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiID48dHIgY2xhc3M9InRleHRvX2ZpY2hh Ij4nKTsNCgkJCWlmKG51bSA9PSAwKXsNCgkJCQlkb2N1bWVudC53cml0ZSgnPHRk PjxzcGFuIGNsYXNzPSJjYW1wb3NfdGV4dG9fZmljaGEiPj4gPC9zcGFuPicgKyB0 b2RvW2pdLnN1YnN0cmluZyg0K251bSkgKyAnPC90ZD4nKTsNCgkJCX1lbHNlew0K CQkJCWZvcihpID0gMDsgaSA8IG51bTsgaSsrKXsNCgkJCQkJZG9jdW1lbnQud3Jp dGUoJzx0ZCB3aWR0aD0iMyUiPiZuYnNwOzwvdGQ+Jyk7DQoJCQkJfQ0KCQkJCWRv Y3VtZW50LndyaXRlKCc8dGQ+PHNwYW4gY2xhc3M9ImNhbXBvc190ZXh0b19maWNo YSI+LSA8L3NwYW4+JyArIHRvZG9bal0uc3Vic3RyaW5nKDMrbnVtKSArICc8L3Rk PicpOw0KCQkJfQ0KCQkJZG9jdW1lbnQud3JpdGUoJzwvdHI+PC90YWJsZT4nKTsN CgkJfQ0KCQkNCgl9DQoJZG9jdW1lbnQud3JpdGUoJzwvdGQ+PC90cj48L3RhYmxl PicpOw0KCQ0KCS8qdmFyIHRvZG8gPSBjLnNwbGl0KCI8YnIvPiIpOw0KCWRvY3Vt ZW50LndyaXRlKCc8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2Vs bHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4nKTsNCglmb3IoaiA9IDA7IGogPCB0 b2RvLmxlbmd0aDsgaisrKXsNCgkJaWYodG9kb1tqXS5zdWJzdHJpbmcoMCwyKSA9 PSAiVC8iKXsNCgkJCWRvY3VtZW50LndyaXRlKCc8dHIgaGVpZ2h0PSI1cHgiPjx0 ZCBjb2xzcGFuPSIzIj48L3RkPjwvdHI+Jyk7DQoJCQlkb2N1bWVudC53cml0ZSgn PHRyPjx0ZCBjb2xzcGFuPSIzIj48c3BhbiBjbGFzcz0iZGlhX3Byb2dyYW1hX2Zp Y2hhIj4nICsgdG9kb1tqXS5zdWJzdHJpbmcoMikgKyAnPC9zcGFuPjxiciAvPjwv dGQ+PC90cj4nKTsNCgkJfWVsc2UgaWYodG9kb1tqXS5zdWJzdHJpbmcoMCwyKSA9 PSAiSC8iKXsNCgkJCXRlbXAgPSB0b2RvW2pdLnN1YnN0cmluZygyKS5zcGxpdCgi LyIpOw0KCQkJZG9jdW1lbnQud3JpdGUoJzx0ciBjbGFzcz0idGV4dG9fZmljaGEi Pjx0ZCB2YWxpZ249InRvcCIgd2lkdGg9IjIwJSI+JyArIHRlbXBbMF0gKyAnPC90 ZD48dGQgd2lkdGg9IjMlIj4mbmJzcDs8L3RkPjx0ZD4nICsgdGVtcFsxXSArICc8 L3RkPjwvdHI+Jyk7CQkNCgkJfWVsc2UgaWYodG9kb1tqXS5zdWJzdHJpbmcoMCwy KSA9PSAiQy8iKXsNCgkJCWRvY3VtZW50LndyaXRlKCc8dHIgY2xhc3M9InRleHRv X2ZpY2hhIj48dGQgY29sc3Bhbj0iMyI+PHNwYW4gY2xhc3M9ImNhbXBvc190ZXh0 b19maWNoYSI+PiA8L3NwYW4+JyArIHRvZG9bal0uc3Vic3RyaW5nKDIpICsgJzwv dGQ+PC90cj4nKTsNCgkJfQ0KCX0NCglkb2N1bWVudC53cml0ZSgnPHRyPjx0ZCBj b2xzcGFuPSIzIj48YnIgLz48L3RkPjwvdHI+Jyk7DQoJZG9jdW1lbnQud3JpdGUo JzwvdGFibGU+Jyk7Ki8NCn0NCg0KZnVuY3Rpb24gcG9uZXJNYXlvclF1ZShjKXsN Cgl2YXIgdGV4dG8gPSBjLnNwbGl0KCI8YnIvPiIpOw0KCWlmICh0ZXh0by5sZW5n dGggPT0gMSl7DQoJCWRvY3VtZW50LndyaXRlKHRleHRvWzBdICsgJzxiciAvPicp Ow0KCX0gZWxzZSB7DQoJCWZvciAoaSA9IDA7IGkgPCB0ZXh0by5sZW5ndGg7IGkr Kyl7DQoJCQlkb2N1bWVudC53cml0ZSgnPHNwYW4gY2xhc3M9ImNhbXBvc190ZXh0 b19maWNoYSI+PiA8L3NwYW4+JyArIHRleHRvW2ldICsgJzxiciAvPicpOw0KCQl9 DQoJfQ0KfQ0KDQpmdW5jdGlvbiBtb3N0YXJDb250ZW5pZG8odGl0dWxvLGNvbnRl bmlkbyl7DQoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RpdHVsbycpLmlubmVy SFRNTCA9IHRpdHVsbzsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVudScp LmlubmVySFRNTCA9IGNvbnRlbmlkbzsNCn0NCg0KZnVuY3Rpb24gc3dhcFRleHRv KGVzY29uZGVyLCBtb3N0cmFyKSB7DQoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo ZXNjb25kZXIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQoJZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQobW9zdHJhcikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7DQoJ dWx0aW1hdGVSZWRpbWVuc2lvbmEoKTsNCn0NCg0KDQpmdW5jdGlvbiBvYnJlVmVu dGFuYU1heChzeklkLCBzekNvZGlnb0FlY29jKXsNCgkNCglkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnY2FycmVnYW50Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsN Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FycmVnYScpLnN0eWxlLmRpc3Bs YXkgPSAnJzsNCgkvL3BhcmFtc192YWx1ZXMoc3pJZCwgc3pDb2RpZ29BZWNvYyk7 CQ0KDQoJdGhpcy5tb3ZlVG8oMCwwKTsNCglpZiAoZG9jdW1lbnQuYWxsKSB7DQoJ CXRoaXMucmVzaXplVG8oc2NyZWVuLmF2YWlsV2lkdGgsc2NyZWVuLmF2YWlsSGVp Z2h0KTsNCgl9DQoJZWxzZSBpZiAoZG9jdW1lbnQubGF5ZXJzfHxkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCkgew0KCQlpZiAodGhpcy5vdXRlckhlaWdodDxzY3JlZW4u YXZhaWxIZWlnaHR8fHRoaXMub3V0ZXJXaWR0aDxzY3JlZW4uYXZhaWxXaWR0aCl7 DQoJCQl0aGlzLm91dGVySGVpZ2h0ID0gc2NyZWVuLmF2YWlsSGVpZ2h0Ow0KCQkJ dGhpcy5vdXRlcldpZHRoID0gc2NyZWVuLmF2YWlsV2lkdGg7DQoJCX0NCgl9DQp9 DQoNCmZ1bmN0aW9uIHRvVG9wKCkgew0KCXdpbmRvdy5wYXJlbnQuc2Nyb2xsVG8o MCwgMCk7DQp9DQoNCg0KZnVuY3Rpb24gcmVkaW1lbnNpb25hMihpZCl7DQoJaWYo d2luZG93LnRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpew0KCQl3aW5k b3cudG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5zdHlsZS5oZWlnaHQ9 ICggcGFyc2VJbnQodGhpcy5kb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodCwgMTAp ICkgKyJweCI7DQoJCXRvVG9wKCk7DQoJfQ0KfQkNCmZ1bmN0aW9uIHJlZGltZW5z aW9uYTMoaWQpew0KCWlmKGRvY3VtZW50LmFsbCl7DQoJCWlmKHdpbmRvdy50b3Au ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpKXsNCgkJCXdpbmRvdy50b3AuZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmhlaWdodD0gKCBwYXJzZUlu dCh0aGlzLmRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0LCAxMCkgKSArInB4IjsN CgkJCXRvVG9wKCk7DQoJCX0NCgl9CQ0KfQ0KDQpmdW5jdGlvbiByZWRpbWVuc2lv bmFWMihpZCl7DQoJaWYocGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlk KSl7DQoJCWlmKCBwYXJzZUludCh0aGlzLmRvY3VtZW50LmJvZHkuc2Nyb2xsSGVp Z2h0LCAxMCkgPiA0MDApDQoJCQlwYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoaWQpLnN0eWxlLmhlaWdodAk9ICggcGFyc2VJbnQodGhpcy5kb2N1bWVudC5i b2R5LnNjcm9sbEhlaWdodCwgMTApICkgKyJweCI7DQoJfQ0KfQ0KDQpmdW5jdGlv biByZWRpbWVuc2lvbmFWMyhpZCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgDQoJaWYocGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlk KGlkKSl7DQoJCQlwYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0 eWxlLmhlaWdodAk9ICggcGFyc2VJbnQodGhpcy5kb2N1bWVudC5ib2R5LnNjcm9s bEhlaWdodCwgMTApICkgKyJweCI7DQoJfQ0KfQ0KDQoNCmZ1bmN0aW9uIHJlZGlt ZW5zaW9uYU9yZ2FuaWdyYW1hKGlkKXsNCglpZihkb2N1bWVudC5nZXRFbGVtZW50 QnlJZChpZCkpew0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGUu aGVpZ2h0PSAiMTAwcHgiOw0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQp9DQpmdW5jdGlv biByZWRpbWVuc2lvbmFOZXdzTGV0dGVyKGlkKXsNCg0KCXZhciBsZW4gPSBwYXJz ZUludCh0aGlzLmRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0LCAxMCkgDQoJdmFy IGxlbjIgPSB3aW5kb3cucGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlk KS5zdHlsZS5oZWlnaHQNCglpZiggbGVuID4gbGVuMiApew0KCQlpZih3aW5kb3cu cGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSl7DQoJCQl3aW5kb3cu cGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5zdHlsZS5oZWlnaHQ9 IChsZW4gKyAxMDApICsgInB4IjsNCgkJfQ0KCX0NCn0NCg0KZnVuY3Rpb24gcmVk aW1lbnNpb25hU2l0ZShpZCl7DQoJaWYocGFyZW50LmRvY3VtZW50LmdldEVsZW1l bnRCeUlkKGlkKSl7DQoJCXZhciBzdW0gPSBwYXJzZUludCh0aGlzLmRvY3VtZW50 LmJvZHkuc2Nyb2xsSGVpZ2h0LCAxMCkgKyAyMjsNCgkJcGFyZW50LmRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKGlkKS5zdHlsZS5oZWlnaHQ9IHN1bSArInB4IjsNCgkJ dG9Ub3AoKTsNCgl9DQp9DQoNCmZ1bmN0aW9uIHRyaW0oY2FkZW5hKQ0Kew0KaWYg KGNhZGVuYSl7DQoJZm9yKGk9MDsgaTxjYWRlbmEubGVuZ3RoOyApDQoJew0KCQlp ZihjYWRlbmEuY2hhckF0KGkpPT0iICIpDQoJCQljYWRlbmE9Y2FkZW5hLnN1YnN0 cmluZyhpKzEsIGNhZGVuYS5sZW5ndGgpOw0KCQllbHNlDQoJCQlicmVhazsNCgl9 DQoNCglmb3IoaT1jYWRlbmEubGVuZ3RoLTE7IGk+PTA7IGk9Y2FkZW5hLmxlbmd0 aC0xKQ0KCXsNCgkJaWYoY2FkZW5hLmNoYXJBdChpKT09IiAiKQ0KCQkJY2FkZW5h PWNhZGVuYS5zdWJzdHJpbmcoMCxpKTsNCgkJZWxzZQ0KCQkJYnJlYWs7DQoJfQ0K CQ0KCXJldHVybiBjYWRlbmE7DQp9ZWxzZQ0KeyByZXR1cm4gIiI7fQ0KfQ0KZnVu Y3Rpb24gY2FyZ2FtZW51ZGVyZWNoYSh1cmwpew0KCWlmKHdpbmRvdy50b3AuZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZyYW1lZGVyZWNoYScpKXsNCiAgICAgICAg dXJsID0gdXJsLnNwbGl0KCI/Iik7DQogICAgICAgIHdpbmRvdy50b3AubG9hZFVy bCgiLyIrdXJsWzBdLCJmcmFtZWRlcmVjaGEiLHVybFsxXSsiJmNvdW50PTAiLCIi KTsNCiAgICAgICAgLy93aW5kb3cudG9wLmxvYWRTY3JpcHQoIi8iK3VybFswXSwi ZnJhbWVkZXJlY2hhIix1cmxbMV0rIiZjb3VudD0wIixmdW5jdGlvbkFmdGVyKTsN CgkJLy93aW5kb3cudG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmcmFtZWRl cmVjaGEnKS5zcmMgPSB1cmwgKyAiJmNvdW50PTAiOw0KCX0NCn0NCg0KZnVuY3Rp b24gY2FyZ2Fkb2ModXJsKXsNCglpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn bWFpbmZyYW1lJykpew0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbmZy YW1lJykuc3JjPSB1cmw7DQoJfQ0KfQ0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vIFBB R0lOQURPUiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8N Ci8qDQoJUEFHSU5BRE9SIERFIFRBVUxFUw0KCT09PT09PT09PT09PT09PT09PT0N CgkNCglTaSBlbHMgcmVnaXN0cmVzIGRlIGxhIHRhdWxhIGRlIHJlZ2lzdHJlcyB0 ZW5lbiBtZXMgZCd1biA8dHI+IHBlciByZWdpc3RyZSwgc2VyaWEgY29udmVuaWVu dCBwb3NhciBjYWRhIHJlZ2lzdHJlIGVuIHVuYSBzdWJ0YXVsYSBwZXIgbm8gdGVu aXIgcHJvYmxlbWVzIGQnZXN0cnVjdHVyYSBhIGwnaG9yYSBkZSBtb3N0cmFyIGkg YW1hZ2FyIHJlZ2lzdHJlcy4NCglMYSB0YXVsYSBpbmZlcmlvciBhbWIgbGVzIHBh Z2luZXMgaGFyaWEgZGUgdGVuaXIgdW5hIGVzdHJ1Y3R1cmEgc2VtYmxhbnQgYSBs YSBzZWd1ZW50Lg0KPHRhYmxlIGJvcmRlcj0iMCIgaWQ9InRhYmxhUGFnaW5hZG9y Ij4NCgk8dHI+DQogICAgCTx0ZD4NCiAgICAgICAgCVJlc3VsdGF0cyB0b3RhbHMg ZGVsIGNlcmNhZG9yIDxzcGFuIGNsYXNzPSJudW1lcm9PcmFuZ2UiPjwvc3Bhbj4N CgkJPC90ZD4NCiAgICAgICAgPHRkIGNsYXNzPSJkcmV0YSI+DQoJCQk8VEFCTEU+ Li4uYSBvbXBpciBkaW5hbWljYW1uZXQuLi48L1RBQkxFPg0KICAgICAgICAgIDwv dGQ+DQogICAgIDwvdHI+DQo8L3RhYmxlPg0KCU9CUzogTGEgaWQgcXVlIHBhc3Nl bSBzZXJhIGxhIGRlIGxhIHRhdWxhIHByaW5jaXBhbCwgcGVyIHBvZGVyIG1vc3Ry YXIgZWwgbnVtZXJvIGRlIHJlZ2lzdHJlcyB0b3RhbHMgdHJvYmF0cywgcGVybyBs YSBjaGljaGEgZGUgbGVzIHBhZ2luYWNpb25zIHMnaW5jZXJ0YXJhIGRpbmFtaWNh bWVudCBlbiBsYSBUQUJMRSBkZWwgc2Vnb24gPHRkPi4NCglFbCByZXN1bHRhdCBm aW5hbCBoYXVyaWEgZGUgc2VyIGRlbCB0aXB1czoNCglSZXN1bHRhdHMgdG90YWxz IChudW1lcm8pCQkJCQkxIDIgMyA0IDUgNiA3DQoqLw0KDQovL1ZhcmlhYmxlcyBn bG9iYWxzLg0KZXNJRSA9IChuYXZpZ2F0b3IuYXBwTmFtZSA9PSAiTWljcm9zb2Z0 IEludGVybmV0IEV4cGxvcmVyIik7DQovL0xlcyBpbmljaWFsaXR6ZW0gYW1iIHZh bG9yIERFRkFVTFQgcGVyIHF1ZSBubyBkb25ndWkgZXJyb3IgbGEgY29uc29sYSBk ZSBqYXZhc2NyaXB0Lg0KaWRUYWJsZSA9ICIiOwkvL2lkIGRlIGxhIHRhdWxhIG9u IG1vc3RyYXJlbSBlbHMgcmVnaXN0cmVzLg0KaWRQYWdlcyA9ICIiOwkvL2lkIGRl IGxhIHRhdWxhIG9uIG1vc3RyYXJlbSBlbCBwYWdpbmFkb3IuDQpudW1Eb2NzVG90 YWwgPSAwOwkvL251bWVybyBkZSB0b3RzIGVscyByZWdpc3RyZXMgcXVlIHRlbmlt IGVuIGxhIHRhdWxhDQpudW1Eb2NzID0gMDsJLy9udW1lcm8gZGUgcmVnaXN0cmVz IHF1ZSBtb3N0cmFyZW0gcGVyIHBhZ2luYS4NCnRvdGFsUGFnZXMgPSAwOwkvL3Rv dGFsIGRlIHBhZ2luZXMgcXVlIHRpbmRyZW0uDQpudW1Eb2NzRmluYWwgPSAwOwkv L3JlZ2lzdHJlcyBxdWUgdGluZHJhIGxhIHVsdGltYSBwYWdpbmEuDQpjdXJyZW50 UGFnZSA9IDE7CS8vRGVmaW5pbSBsYSBwYWdpbmEgYWN0dWFsIGNvbSBsYSBwcmlt ZXJhLg0KDQovL0Z1bmNpbyBxdWUgcmVwIGxlcyBpZCdzIGRlIGxlcyBkdWVzIHRh dWxlcyBpIGVsIG51bWVybyBkZSByZWdpc3RyZXMgcXVlIHMnaGFuIGRlIG1vc3Ry YXIgcGVyIHBhZ2luYS4gTGEgcHJpbWVyYSBlcyBsYSB0YXVsYSBvbiB0aW5kcmVt IHRvdHMgZWxzIHJlZ2lzdHJlcyBpIGxhIHNlZ29uYSBlcyBsYSB0YXVsYSBvbiB0 aW5kcmVtIGVsIHBhZ2luYWRvci4NCmZ1bmN0aW9uIGluaWNpYWxpdHphUGFnZXMo aWRUYWJsYVJlZywgaWRUYWJsYVBhZywgbnVtUmVnUGFnZSkgew0KCS8vRW52aWVt IGxlcyBkdWVzIGlkJ3MgeSBlbCBudW1lcm8gZGUgcmVnaXN0cmVzIHBlciBwYWdp bmEgYSBsYSBmdW5jaW8gbG9hZFBhZ2VzVG9vbCgpIHBlciBvYnRlbmlyIHBvZGVy IGFzc2lnbmFyIGVscyB2YWxvcnMgYSBsZXMgdmFyaWFibGVzIGdsb2JhbHMuDQoJ bG9hZFBhZ2VzVG9vbHMoaWRUYWJsYVJlZywgaWRUYWJsYVBhZywgbnVtUmVnUGFn ZSk7DQoJDQoJcmV0dXJuIHRydWU7DQp9DQoNCi8vUmVwIGxlcyBkdWVzIGlkJ3Mg ZGUgbGVzIHRhdWxlcyBpIGVsIG51bWVybyBkZSByZWdpc3RyZXMgYSBtb3N0cmFy IHBlciBwYWdpbmEuIEFzc2lnbmEgZWxzIHZhbG9ycyBhIGxlcyB2YXJpYWJsZXMg Z2xvYmFscy4gVGFtYmUgZGVmaW5laXggZWwgY29udGluZ3V0IGRlIGxhIHRhdWxh IGFtYiBsZXMgcGFnaW5lcy4NCmZ1bmN0aW9uIGxvYWRQYWdlc1Rvb2xzKGlkVGFi bGFSZWcsIGlkVGFibGFQYWcsIG51bVJlZ1BhZ2UpIHsNCg0KCS8vQXNzaWduZW0g bGVzIElEJ3MgZGUgbGVzIHRhdWxlcw0KCWlkVGFibGUgPSBpZFRhYmxhUmVnOw0K CWlkUGFnZXMgPSBpZFRhYmxhUGFnOw0KCS8vQXNzaWduZW0gZWwgbnVtZXJvIGRl IHJlZ2lzdHJlcyBxdWUgbW9zdHJhcmVtIHBlciBwYWdpbmENCgludW1Eb2NzID0g bnVtUmVnUGFnZTsNCgkvL0NhcHR1cmVtIGVsIG51bWVybyBkZSBkb2NzL3JlZ2lz dHJlcyBkZSBsYSB0YXVsYQ0KCW51bURvY3NUb3RhbCA9IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKGlkVGFibGUpLnJvd3MubGVuZ3RoOw0KDQoJLy9DYXB0dXJlbSBl bCBudW1lcm8gdG90YWwgZGUgcGFnaW5lcw0KDQoJaWYgKG51bURvY3NUb3RhbCAl IG51bURvY3MgPT0gMCkJLy9TaSBlbHMgcmVnaXN0cmVzIGN1YWRyZW4gZW4gbGVz IHBhZ2luZXMgKGxhIHVsdGltYSBwYWdpbmEgdGUgZWwgbWF0ZWl4IG51bSBkZSBy ZWdzIHF1ZSBsYSByZXN0YSkNCgkJdG90YWxQYWdlcyA9IHBhcnNlSW50KG51bURv Y3NUb3RhbCAvIG51bURvY3MpOw0KCWVsc2UgewkJLy9TaSBsYSB1bHRpbWEgcGFn aW5hIHRlIGRpZmVyZW50IG51bWVybyBkZSByZWdpc3RyZXMsIGNhcHR1cmVtIGFx dWVzdCB2YWxvcg0KCQl0b3RhbFBhZ2VzID0gcGFyc2VJbnQobnVtRG9jc1RvdGFs IC8gbnVtRG9jcykgKyAxOw0KCQludW1Eb2NzRmluYWwgPSBudW1Eb2NzVG90YWwg JSBudW1Eb2NzOw0KCX0NCg0KDQoJLy9PbXBsaW0gbGVzIGRhZGVzIGRlIGxhIHRh dWxhIGFtYiBsZXMgcGFnaW5lcy4gQ2FwdHVyZW0gZWxzIGRvcyA8VEQ+IGRlIGwn dW5pYyA8VFI+IGRlIGxhIDxUQUJMRT4NCgl2YXIgb2JqY1BhZ1Jlc3VsdGF0ID0g ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRUYWJsYVBhZykucm93cy5pdGVtKDAp LmNlbGxzLml0ZW0oMCk7DQoJdmFyIG9iamNQYWdQYWdpbmFjaW8gPSBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZChpZFRhYmxhUGFnKS5yb3dzLml0ZW0oMCkuY2VsbHMu aXRlbSgxKTsNCgkNCgkvL01vc3RyZW0gZWwgbnVtZXJvIHRvdGFsIGRlIHJlZ2lz dHJlcyB0cm9iYXRzIGFjY2VkaW50IGFsIG5vZGUgPFNQQU4+IHF1ZSB0ZW5pbSBk ZWZpbml0IGVuIEhUTUwNCglvYmpjUGFnUmVzdWx0YXQuY2hpbGROb2Rlcy5pdGVt KDEpLmlubmVySFRNTCA9IG51bURvY3NUb3RhbDsNCgkvL1ByaW50ZW0gbGEgdGF1 bGEgYW1iIGxlcyBwYWdpbmFjaW9ucw0KDQoJaWYobnVtRG9jc1RvdGFsID09IDAp IHsNCgkJdmFyIG9iamNUQiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Rib2R5 Jyk7DQoJCXZhciBvYmpjVFIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicp Ow0KCQl2YXIgb2JqY1RkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsN CgkJb2JqY1RkLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAndGV4dC1hbGlnbjogY2Vu dGVyOycpOw0KCQlvYmpjVGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4 dE5vZGUoJ05vIGhheSBuaW5n+m4gcmVnaXN0cm8nKSk7DQoJCW9iamNUUi5hcHBl bmRDaGlsZChvYmpjVGQpOw0KCQlvYmpjVEIuYXBwZW5kQ2hpbGQob2JqY1RSKTsN CgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRUYWJsZSkuYXBwZW5kQ2hpbGQo b2JqY1RCKTsNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRUYWJsZSkuc3R5 bGUuZGlzcGxheSA9ICcnOw0KCX0gZWxzZSB7DQoJCWNyZWFUYXVsYVBhZ2luYWNp byhvYmpjUGFnUGFnaW5hY2lvKTsNCgl9DQoJDQoJcmV0dXJuIHRydWU7DQp9DQoN Ci8vRnVuY2lvIHF1ZSBjcmVhcmEgbCdlc3RydWN0dXJhICIxIDIgMyA0Li4uIi4g Tm8gcmVwIHVuYSB0YXVsYS4gUmVwIHVuIDx0ZD4gb24gdGVuaW0gZG9zIDxzcGFu cz4sIG9uIGNvbG9jYXJlbSBlbHMgZW5sbGFzb3MgcGVyIGEgImFudGVyaW9yIiBp ICJzZWd1ZW50IiwgaSB1bmEgdGF1bGEgYnVpZGEgb24gcG9zYXJlbSBlbHMgbnVt ZXJvcyBkZSBsZXMgcGFnaW5lcy4gDQpmdW5jdGlvbiBjcmVhVGF1bGFQYWdpbmFj aW8odGRUYXVsYSkgew0KDQovL2FsZXJ0KHRhdWxhLmNoaWxkTm9kZXMuaXRlbSgx KS5yb3dzLml0ZW0oMCkpOwkJCQkJCQkJCTwtLSBGaXJlZm94DQovL2FsZXJ0KHRh dWxhLmNoaWxkTm9kZXMuaXRlbSgwKS5maXJzdENoaWxkLmNoaWxkTm9kZXMuaXRl bSgwKS5ub2RlTmFtZSk7CQk8LS0gSUV4cGxvcmVyDQoJZm9yICh2YXIgaSA9IDE7 IGkgPD0gdG90YWxQYWdlczsgaSsrKSB7DQoNCgkJdmFyIG9iamNUZCA9IGRvY3Vt ZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CS8vQ3JlZW0gZWwgPHRkPg0KCQlpZiAo ZXNJRSkJLy9JRQ0KCQkJb2JqY1RkLnN0eWxlLnNldEF0dHJpYnV0ZSgnd2lkdGgn LCAnMTBweCcpOw0KCQllbHNlCQkvL05TDQoJCQlvYmpjVGQuc3R5bGUud2lkdGgg PSAnMTBweCc7DQoJCXZhciBvYmpjTGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l bnQoJ2EnKTsJLy9DcmVlbSBlbCA8YT4gaSBhZmVnaW0gZWxzIGF0cmlidXRzDQoJ CWlmIChlc0lFKSB7CQkvL0lFDQoJCQlvYmpjTGluay5zZXRBdHRyaWJ1dGUoJ2hy ZWYnLCAnI3RoaXMnKTsNCgkJCW9iamNMaW5rLnNldEF0dHJpYnV0ZSgnb25jbGlj aycsIG5ldyBGdW5jdGlvbigic2hvd1BhZ2UoIiArIGkgKyAiKTsiKSk7DQoJCX0g ZWxzZSB7CQkvL05TDQoJCQlvYmpjTGluay5ocmVmID0gJyN0aGlzJzsNCgkJCW9i amNMaW5rLnNldEF0dHJpYnV0ZSgnb25jbGljaycsICdzaG93UGFnZSgnK2krJykn KTsNCgkJfQ0KCQlvYmpjTGluay5jbGFzc05hbWUgPSAibGlua3NCdXNjYWRvciI7 CS8vRGVmaW5pbSBlbCBjbGFzcyBkZWxzIGxpbmtzDQoJCW9iamNMaW5rLmFwcGVu ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGkpKTsJCQ0KDQoJCS8vSW5j cnVzdGVtIGVsIDxhPiBlbiBlbCA8dGQ+DQoJCW9iamNUZC5hcHBlbmRDaGlsZChv YmpjTGluayk7DQoJCS8vSW5jcnVzdGVtIGVsIDx0ZD4gZW4gZWwgPHRyPiBkZSBs YSB0YXVsYQ0KCQlpZiAoZXNJRSkgewkvL0lFDQoJCQl0ZFRhdWxhLmNoaWxkTm9k ZXMuaXRlbSgwKS5maXJzdENoaWxkLmNoaWxkTm9kZXMuaXRlbSgwKS5hcHBlbmRD aGlsZChvYmpjVGQpOw0KCQl9IGVsc2UJewkvL05TCQkoUkVWSVNBUikNCgkJCXRk VGF1bGEuY2hpbGROb2Rlcy5pdGVtKDEpLnJvd3MuaXRlbSgwKS5hcHBlbmRDaGls ZChvYmpjVGQpOwkJCQkJLy9GaXJlZm94DQoJCX0NCgl9DQoJDQoJLy9TaSB0ZW5p bSBtZXMgZGUgMTAgcGFnaW5lcywgYWZlZ2ltIHVuIFREIGFsIGZpbmFsIGRlbHMg ZW5sbGFzc29zIHBlciBpbmRpY2FyIGVsIG51bWVybyB0b3RhbCBkZSBwYWdpbmVz DQoJaWYgKHRvdGFsUGFnZXMgPiAxMCkgew0KCQl2YXIgb2JqY1RkTnVtUGFnaW5l cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7DQoJCS8vTW9zdHJlbSBl bCBudW1lcm8gZGUgcGVnaW5lcw0KCQlvYmpjVGROdW1QYWdpbmVzLmFwcGVuZENo aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIoIit0b3RhbFBhZ2VzKyIpIikp Ow0KCQkvL0Fzc2lnbmVtIGVsIGNsYXNzICJudW1lcm9QYWdpbmVzIg0KCQlvYmpj VGROdW1QYWdpbmVzLmNsYXNzTmFtZSA9ICJudW1lcm9QYWdpbmVzIjsNCgkJLy9B ZmVnaW0gZWwgVEQganVzdCBkZXNwcmVzIGRlbCB1bHRpbSBURCBxdWUgZXMgdW4g ZW5sbGFzIGRlIHBhZ2luYQ0KCQlpZiAoZXNJRSkgew0KCQkJdGRUYXVsYS5jaGls ZE5vZGVzLml0ZW0oMCkuZmlyc3RDaGlsZC5jaGlsZE5vZGVzLml0ZW0oMCkuYXBw ZW5kQ2hpbGQob2JqY1RkTnVtUGFnaW5lcyk7DQoJCX0gZWxzZSB7DQoJCQl0ZFRh dWxhLmNoaWxkTm9kZXMuaXRlbSgxKS5yb3dzLml0ZW0oMCkuYXBwZW5kQ2hpbGQo b2JqY1RkTnVtUGFnaW5lcyk7DQoJCX0NCgl9DQoJDQoJCS8vTW9zdHJlbSBkb3Mg VEQgbWVzIHBlciBhbHMgYnV0b25zIGRlICJzaWd1aWVudGUiIGkgImFudGVyaW9y Ii4gTm8gY2FycmVnYXJlbSBsZXMgZnVuY2lvbnMgZGUgb24gY2xpY2sgZmlucyBx dWUgaGFndWVtIGNhcnJlZ2FyIGxhIHByaW1lcmEgcGFnaW5hLCB1bmVzIDUgbGlu aWVzIG1lcyBhdmFsbC4gRGludHJlIGRlIGxhIGZ1bmNpbyAiU0hPV1BBR0UiIGFj dHVhbGl0emFyZW0gZWxzICJvbmNsaWNrcyIgZGVscyBURCBkZSAiYW50ZXJpb3Ii IGkgInNpZ3VpZW50ZSIsamEgcXVlIHRpbmRyZW0gY2FycmVnYWRhIGVuIHVuYSB2 YXJpYWJsZSBnbG9iYWwgcXVpbmEgZXMgbGEgcGFnaW5hIHF1ZSBlc3RhIGNhcnJl Z2FkYSBlbiBjYWRhIG1vbWVudC4NCgl2YXIgb2JqY1RkQW50ZXJpb3IgPSBkb2N1 bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOw0KCXZhciBvYmpjVGRTZWd1ZW50ID0g ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsNCgkvL0VscyBoaSBhc3NpZ25l bSBJRCBwZXIgcG9kZXIgYWNjZWRpciBmYWNpbG1lbnQgbWVzIHRhcmQgZGVzZGUg bGEgZnVuY2lvIHJlZnJlc2hQcmV2aW91c05leHQoKSBxdWUgc2VyYSBsJ2VuY2Fy cmVnYWRhIGQnYW5hciByZWZyZXNjYW50IGxhIGZ1bmNpbyBvbiBjbGljayBkJ2Fx dWVzdHMgVERzDQoJb2JqY1RkQW50ZXJpb3IuaWQgPSAnaWRBbnRlcmlvcic7DQoJ b2JqY1RkU2VndWVudC5pZCA9ICdpZFNlZ3VlbnQnOw0KCW9iamNUZEFudGVyaW9y LmNsYXNzTmFtZSA9ICdib3RvbkFudGVyaW9yJzsNCglvYmpjVGRTZWd1ZW50LmNs YXNzTmFtZSA9ICdib3RvblNlZ3VlbnQnOw0KCWlmIChlc0lFKSB7DQoJCXRkVGF1 bGEuY2hpbGROb2Rlcy5pdGVtKDApLmZpcnN0Q2hpbGQuY2hpbGROb2Rlcy5pdGVt KDApLmFwcGVuZENoaWxkKG9iamNUZEFudGVyaW9yKTsNCgkJdGRUYXVsYS5jaGls ZE5vZGVzLml0ZW0oMCkuZmlyc3RDaGlsZC5jaGlsZE5vZGVzLml0ZW0oMCkuYXBw ZW5kQ2hpbGQob2JqY1RkU2VndWVudCk7DQoJfSBlbHNlIHsNCgkJdGRUYXVsYS5j aGlsZE5vZGVzLml0ZW0oMSkucm93cy5pdGVtKDApLmFwcGVuZENoaWxkKG9iamNU ZEFudGVyaW9yKTsNCgkJdGRUYXVsYS5jaGlsZE5vZGVzLml0ZW0oMSkucm93cy5p dGVtKDApLmFwcGVuZENoaWxkKG9iamNUZFNlZ3VlbnQpOw0KCX0NCgkvL01vc3Ry ZW0gbGEgcHJpbWVyYSBwYWdpbmEgZGUgcmVnaXN0cmVzIHNpIGhpIGhhbiByZWdp c3RyZXMNCglpZiAobnVtRG9jc1RvdGFsID4gMCkgew0KCQlzaG93UGFnZSgxKTsN Cgl9DQoJcmV0dXJuIHRydWU7DQp9DQoNCi8vRnVuY2lvIHF1ZSByZXAgbGEgcGFn aW5hIGhhIG1vc3RyYXIgaSBjYWxjdWxhIHF1aW5zIHJlZ2lzdHJlcyBtb3N0cmFy IGkgZWxzIGZhIHZpc2libGVzLg0KZnVuY3Rpb24gc2hvd1BhZ2UobnVtUGFnaW5h KSB7DQoJdmFyIG5JbmljaTsJCS8vUHJpbWVyIHJlZ2lzdHJlIGRlIGxhIHBhZ2lu YQ0KCXZhciBuRmluYWw7CQkvL1VsdGltIHJlZ2lzcmVzIGRlIGxhIHBhZ2luYQ0K CXZhciBvYmpjVGFibGEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZFRhYmxl KTsNCg0KCS8vU2kgZXMgbGEgcHJpbWVyYSBwYWdpbmENCglpZiAobnVtUGFnaW5h ID09IDEpIHsNCgkJbkluaWNpID0gMDsNCgkJbkZpbmFsID0gbnVtRG9jcyAtMTsN Cgl9IGVsc2UgaWYgKG51bVBhZ2luYSA8IHRvdGFsUGFnZXMpewkJLy9TaSBubyBl cyBuaSBsYSBwcmltZXJhIG5pIGxhIHVsdGltYSBwYWdpbmENCgkJbkluaWNpID0g KG51bVBhZ2luYSAtIDEpICogbnVtRG9jczsNCgkJbkZpbmFsID0gbkluaWNpICsg bnVtRG9jcyAtIDE7DQoJfSBlbHNlIHsJCS8vU2kgZXMgbGEgdWx0aW1hIHBhZ2lu YQ0KCQluSW5pY2kgPSAobnVtUGFnaW5hIC0xKSAqIG51bURvY3M7DQoJCW5GaW5h bCA9IG5JbmljaSArIG51bURvY3MgLSAxOw0KCX0NCg0KCS8vRmVtIHZpc2libGVz IGVscyA8dHI+IHF1ZSBmYWNpIGZhbHRhDQoJZm9yICh2YXIgaSA9IDA7IGkgPD0g bnVtRG9jc1RvdGFsIC0gMTsgaSsrKSB7DQoJCS8vU2kgbm8gbCdoZW0gZGUgbW9z dHJhci4uLg0KCQlpZiAoaSA8IG5JbmljaSB8fCBpID4gbkZpbmFsKQ0KCQkJLy9v YmpjVGFibGEucm93cy5pdGVtKGkpLnN0eWxlLnNldEF0dHJpYnV0ZSgnZGlzcGxh eScsICdub25lJyk7DQoJCQlvYmpjVGFibGEucm93cy5pdGVtKGkpLnN0eWxlLmRp c3BsYXkgPSAnbm9uZSc7DQoJCWVsc2UgCS8vU2kgbCdoZW0gZGUgbW9zdHJhLi4u DQoJCQkvL29iamNUYWJsYS5yb3dzLml0ZW0oaSkuc3R5bGUucmVtb3ZlQXR0cmli dXRlKCdkaXNwbGF5Jyk7DQoJCQlvYmpjVGFibGEucm93cy5pdGVtKGkpLnN0eWxl LmRpc3BsYXkgPSAnJzsNCgl9DQoJLy9TaSBlcyBsYSBwcmltZXJhIHZlZ2FkYSBx dWUgYXJyaXZlbSBhIGFxdWVzdGEgZnVuY2lvLCBoZW0gZCdhbWFnYXIgZWwgZ2lm IGFuaW1hdCBkZSBjYXJyZWdhIGkgbW9zdHJhciBsZXMgdGF1bGVzIGFtYiBlbHMg cmVzdWx0YXRzIGkgbGEgZGVsIHBhZ2luYWRvcg0KCWlmIChvYmpjVGFibGEuc3R5 bGUuZGlzcGxheSA9PSAibm9uZSIpIHsNCgkJLy9kb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgnZ2lmTG9hZGVyJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJaWYo dG90YWxQYWdlcyA+IDEpIHsNCgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlk UGFnZXMpLnN0eWxlLmRpc3BsYXkgPSAnJzsNCgkJfQ0KCQlvYmpjVGFibGEuc3R5 bGUuZGlzcGxheSA9ICcnOw0KCX0NCgkNCgkvL05vbWVzIG1vc3RyYXJlbSBsZXMg NSBwYWdpbmVzIGFudGVyaW9ycyBpIGxlcyA1IHNlZ3VlbnRzIGVuIHJlZmVyZW5j aWEgZGUgbGEgcGFnaW5hIHF1ZSB0ZW5pbWRhDQoJLy9DYXB0dXJlbSBsYSBjb2xl Y2NpbyBxdWUgY29udGUgZWxzIFREcyBhbWIgbGVzIHBhZ2luZXMNCg0KCXZhciB0 YXVsYVBhZ2luZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFnaW5lcycp LnJvd3MuaXRlbSgwKS5jZWxsczsNCgkvL0NhbGN1bGVtIHF1aW5lcyBzZXJhbiBs ZXMgcGFnaW5lcyBxdWUgZXMgbW9zdHJhcmFuIGEgcGFydGlyIGRlIGxhIHBhZ2lu YSBxdWUgaGVtIGRlIGNhcnJlZ2FyDQoJdmFyIHBhZ2luYUluaWNpOw0KCXZhciBw YWdpbmFGaW5hbDsNCgkvL0RldGVybWluZW0gbGEgcGFnaW5hIGluaWNpDQoJaWYg KG51bVBhZ2luYSA8PSA2KSB7DQoJCXBhZ2luYUluaWNpID0gMDsNCgkJaWYgKHRv dGFsUGFnZXMgPiAxMCkNCgkJCXBhZ2luYUZpbmFsID0gcGFnaW5hSW5pY2kgKyAx MDsNCgl9DQoJZWxzZSBpZiAobnVtUGFnaW5hICsgNiA+IHRvdGFsUGFnZXMpIHsN CgkJcGFnaW5hSW5pY2kgPSAodG90YWxQYWdlcyAtIDEpIC0gMTA7DQoJfQ0KCWVs c2Ugew0KCQlwYWdpbmFJbmljaSA9IG51bVBhZ2luYSAtIDY7DQoJCXBhZ2luYUZp bmFsID0gbnVtUGFnaW5hICsgNDsJDQoJfQ0KCQ0KCS8vTW9zdHJlbSBpIGFtYWd1 ZW0gbGVzIHBhZ2luZXMgcXVlIHRvY2ENCglmb3IgKHZhciBpID0gMDsgaSA8PSB0 b3RhbFBhZ2VzIC0gMTsgaSsrKSB7DQoJCWlmIChpIDwgcGFnaW5hSW5pY2kgfHwg aSA+IHBhZ2luYUZpbmFsKSB7DQoJCQkvL3RhdWxhUGFnaW5lcy5pdGVtKGkpLnN0 eWxlLnNldEF0dHJpYnV0ZSgnZGlzcGxheScsICdub25lJyk7CQkJDQoJCQl0YXVs YVBhZ2luZXMuaXRlbShpKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KCQl9DQoJ CWVsc2Ugew0KCQkJLy90YXVsYVBhZ2luZXMuaXRlbShpKS5zdHlsZS5yZW1vdmVB dHRyaWJ1dGUoJ2Rpc3BsYXknKTsNCgkJCXRhdWxhUGFnaW5lcy5pdGVtKGkpLnN0 eWxlLmRpc3BsYXkgPSAnJzsNCgkJfQ0KCX0NCgkvL05vbWVzIHMnaGEgZGUgZmVy IGVuIGVsIGNhcyBxdWUgZWwgbnVtZXJvIGRlIHBhZ2luZXMgc2lndWkgbWFqb3Ig YSAxDQoJaWYgKHRvdGFsUGFnZXMgPiAxKSB7DQoJCS8vR3VhcmRlbSBlbiBsYSB2 YXJpYWJsZSBnbG9iYWwgYXF1ZWxsYSBwYWdpbmEgcXVlIGFjYXZlbSBkZSBjYXJy ZWdhcg0KCQljdXJyZW50UGFnZSA9IG51bVBhZ2luYTsNCgkJDQoJCS8vQ3JpZGVt IGEgdW5hIGZ1bmNpbyBxdWUgYWN0dWFsaXR6YXJhIGVscyBvbmNsaWNrcyBkZWxz IFREcyBkZSBhbnRlcmlvciB5IHNpZ3VpZW50ZSBhcmEgcXVlIHRlbmltIGVuIGxh IHZhcmlhYmxlIGdsb2JhbCBxdWluIGVzIGVsIG51bWVybyBkZSBwYWdpbmEgcXVl IHRlbmltIGNhcnJlZ2F0DQoJCXJlZnJlc2hQcmV2aW91c05leHQoKTsNCgkJDQoJ CS8vTW9zdHJlbSBlbCBudW1lcm8gZGUgbGEgcGFnaW5hIHF1ZSBlc3RhIGNhcnJl Z2FkYSBlbiBhcXVlc3RzIG1vbWVudHMgY29tIGxhIGFjdGl2YQ0KCQlhY3RpdmFO dW1QYWdpbmEoY3VycmVudFBhZ2UpOw0KCX0NCg0KCXVsdGltYXRlUmVkaW1lbnNp b25hKCk7DQoJcmVkaW1lbnNpb25hKCdtYWluYnVzcXVlZGEnKTsNCglyZWRpbWVu c2lvbmEoJ21haW5mcmFtZTInKTsNCglpZiAod2luZG93LnBhcmVudCl7CQ0KCQl3 aW5kb3cucGFyZW50LnJlZGltZW5zaW9uYSgnbWFpbmZyYW1lMicpOw0KCSAJLy93 aW5kb3cucGFyZW50LnJlZGltZW5zaW9uYSgnbWFpbmZyYW1lJyk7DQoJCXdpbmRv dy5wYXJlbnQudWx0aW1hdGVSZWRpbWVuc2lvbmEoKTsNCgkJDQoJfQ0KCWlmICh3 aW5kb3cucGFyZW50LnBhcmVudCl7DQoJCS8vd2luZG93LnBhcmVudC5wYXJlbnQu cmVkaW1lbnNpb25hKCdtYWluZnJhbWUnKTsNCgkJd2luZG93LnBhcmVudC5wYXJl bnQudWx0aW1hdGVSZWRpbWVuc2lvbmEoKTsNCgl9DQoJd2luZG93LnNjcm9sbFRv KDAsMCk7DQoJcmV0dXJuIHRydWU7DQoNCn0NCg0KLyogRnVuY2lvIHF1ZSBhY3R1 YWxpdHphIGVsIG9uY2xpY2sgZGVscyBURCBkZSAyYW50ZXJpb3IiIGkgInNpZ3Vp ZW50ZSIgY2FkYSBjb3AgcXVlIGNhcnJlZ3VlbSB1bmEgcGFnaW5hIGRlbCBwYWdp bmFkb3IqLw0KZnVuY3Rpb24gcmVmcmVzaFByZXZpb3VzTmV4dCgpIHsNCgl2YXIg b2JqY1RkQW50ZXJpb3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaWRBbnRl cmlvcicpOw0KCXZhciBvYmpjVGRTZWd1ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ2lkU2VndWVudCcpOw0KCS8vQ2FsY3VsZW0gcXVpbmVzIHNlcmFuIGxh IHBhZ2luYSBhbnRlcmlvciBpIHF1aW5hIHNlcmEgbGEgcG9zdGVyaW9yIGEgcGFy dGlyIGRlIGxhIGdsb2JhbCAiY3VycmVudFBhZ2UiLiBUZW5pbSBlbiBjb21wdGUg cXVlIHNpIGVzdGVtIGVuIGxhIHByaW1lcmEgcGFnaW5hLCBsYSBhbnRlcmlvciBs YSBkZWZpbmlyZW0gY29tIGxhIHByaW1lcmEgdGFtYmU7IHNpIGVzdGVtIGVuIGxh IHVsdGltYSwgbGEgc2VndWVudCBsYSBkZWZpbmlyZW0gY29tIGxhIHVsdGltYSB0 YW1iZS4NCgl2YXIgYW50ZXJpb3IgPSAoY3VycmVudFBhZ2UgLSAxIDwgMSk/MTpj dXJyZW50UGFnZSAtIDE7DQoJdmFyIHNlZ3VlbnQgPSAoY3VycmVudFBhZ2UgKyAx ID4gdG90YWxQYWdlcyk/dG90YWxQYWdlczpjdXJyZW50UGFnZSArIDE7DQoJLy9T YWJlbnQgcXVpbmVzIHNvbiBsYSBwYWdpbmEgaSBsYSBhbnRlcmlvciBhIG1vc3Ry YXIsIGRlZmluaW0gbGVzIGZ1bmNpb25zIHBlciBjYXJyZWdhciBw4GdpbmVzIGEg dHJhdmVzIGRlbHMgYnV0b25zIChubyBkZWxzIGVubGxhc3NvcykNCglpZiAoZXNJ RSkgewkJLy9JRQ0KCQlvYmpjVGRBbnRlcmlvci5zZXRBdHRyaWJ1dGUoJ29uY2xp Y2snLCBuZXcgRnVuY3Rpb24oInNob3dQYWdlKCIgKyBhbnRlcmlvciArICIpOyIp KTsNCgkJb2JqY1RkU2VndWVudC5zZXRBdHRyaWJ1dGUoJ29uY2xpY2snLCBuZXcg RnVuY3Rpb24oInNob3dQYWdlKCIgKyBzZWd1ZW50ICsgIik7IikpOw0KCX0gZWxz ZSB7CQkvL05TDQoJCW9iamNUZEFudGVyaW9yLnNldEF0dHJpYnV0ZSgnb25jbGlj aycsICdzaG93UGFnZSgnK2FudGVyaW9yKycpJyk7DQoJCW9iamNUZFNlZ3VlbnQu c2V0QXR0cmlidXRlKCdvbmNsaWNrJywgJ3Nob3dQYWdlKCcrc2VndWVudCsnKScp OwkJDQoJfQ0KfQ0KDQovKiBGdW5jaW8gcXVlIGRlc3ByZXMgZGUgbW9zdHJhciB1 bmEgZGUgbGVzIHBhZ2luZXMgZGUgbGEgcGFnaW5hY2lvLCBkZWl4YSBlbCBzZXUg ZW5sbGFzIGNvcnJlc3BvbmVudCBtYXJjYXQgY29tIGFjdGl1IChub21lcyBwZXIg ZWZlY3RlIHZpc3VhbCkgKi8NCmZ1bmN0aW9uIGFjdGl2YU51bVBhZ2luYShwYWdp bmEpIHsNCi8vCWFsZXJ0KCJMYSBwYWdpbmEgYSByZXNhbHRhciBlczogIiArIHBh Z2luYSk7DQoJLy9DYXB0dXJlbSBsYSB0YXVsYSBvbiB0ZW5pbSBlbCBURCBhbWIg ZWwgbnVtZXJvIGRlIHJlZ2lzdHJlcyBpIGxhIHRhdWxhIGRlIHBhZ2luYWNpbywg aSBlbnMgY28ubG9xdWVtIGVuIGVsIHRkIG9uIHRlbmltIGNyZWFkYSBsYSB0YXVs YSBhbWIgZWxzIGVubGxhc3Nvcw0KCXZhciB0ZFRhdWxhID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoaWRQYWdlcykucm93cy5pdGVtKDApLmNlbGxzLml0ZW0oMSk7 DQoJLy9OYXZlZ3VlbSBmaW5zIGFsIGVubGxhcyBkZWwgVEQgcXVlIGNvcnJlc3Bv bmd1aSBhIGxhIHBhZ2luYSBxdWUgcydhY2FiYSBkZSBjYXJyZWdhciBpIGxpIGNs YXZlbSBlbCBmb2N1cw0KCWlmIChlc0lFKSB7DQoJCS8vSUUNCgkJdGRUYXVsYS5j aGlsZE5vZGVzLml0ZW0oMCkucm93cy5pdGVtKDApLmNlbGxzLml0ZW0ocGFnaW5h IC0gMSkuY2hpbGROb2Rlcy5pdGVtKDApLmZvY3VzKCk7DQoJfSBlbHNlCXsJLy9O UwkJKFJFVklTQVIpDQoJCXRkVGF1bGEuY2hpbGROb2Rlcy5pdGVtKDEpLnJvd3Mu aXRlbSgwKS5jZWxscy5pdGVtKHBhZ2luYSAtIDEpLmNoaWxkTm9kZXMuaXRlbSgw KS5mb2N1cygpOw0KCX0NCg0KDQp9DQoNCi8qKioqKioqKioqKioqKioqKioqKiog RklOIEpTIFBBR0lOQURPUiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8NCg0KdmFyIG9wZW5lZCA9ICJhIjsNCmZ1bmN0aW9uIHN3YXBMZXRyYShpZCl7 DQoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3BlbmVkKS5jbGFzc05hbWUgPSAi bGV0cmFfZ2xvc2FyaW8iOw0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5j bGFzc05hbWUgPSAidGl0dWxvX3RleHRfZ2xvc2FyaW8iOw0KCW9wZW5lZCA9IGlk Ow0KfQ0KDQovKioqKiogQ0FCRUNFUkEgKioqKiovDQoJDQpmdW5jdGlvbiBjYXJn YXJfY2FiZWNlcmEoaWQpew0KCWlmKHdpbmRvdy50b3AuZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoImZyYW1lQ2FiZWNlcmEiKSl7DQoJCWlmKGlkICE9ICIiICYmIGlk ICE9ICJAQENhbXBvOEBAIil7DQogICAgICAgICAgICB3aW5kb3cudG9wLmxvYWRV cmwoIi9zaG93Rmxhc2gucGhwIiwiZnJhbWVDYWJlY2VyYSIsImlkPSIgKyBpZCwi Iik7DQoJCQkvL3dpbmRvdy50b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZy YW1lQ2FiZWNlcmEiKS5zcmMgPSAic2hvd0ZsYXNoLnBocD9pZD0iICsgaWQgOwkN CgkJfQ0KCQllbHNlew0KICAgICAgICAgICAgIHdpbmRvdy50b3AubG9hZFVybCgi L3Nob3dGbGFzaC5waHAiLCJmcmFtZUNhYmVjZXJhIiwiaWQ9MzEzIiwiIik7DQoJ CQkvL3dpbmRvdy50b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyYW1lQ2Fi ZWNlcmEiKS5zcmMgPSAic2hvd0ZsYXNoLnBocD9pZD0zMTMiOw0KCQl9DQoJfQ0K fQ0KDQpmdW5jdGlvbiBvcGVuTWVudShzeklkVmlzaWJsZSwgc3pJZE9jdWx0KXsN Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzeklkVmlzaWJsZSkuc3R5bGUuZGlz cGxheSA9ICIiOw0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHN6SWRPY3VsdCku c3R5bGUuZGlzcGxheSA9ICJub25lIjsNCn0NCg0KZnVuY3Rpb24gY2FyZ2Fkb2Mo dXJsKXsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbmZyYW1lJykuc3Jj PSB1cmw7DQp9DQoNCmZ1bmN0aW9uIGNhcmdhZG9jVjIobnVldmEsdXJsKXsNCglp ZiggdHJpbShudWV2YSkgPT0gIjAiKXsNCgkJd2luZG93Lm9wZW4odXJsKTsNCgl9 DQoJZWxzZXsNCgkJY2FyZ2Fkb2ModXJsKTsNCgl9DQp9DQoNCmZ1bmN0aW9uIGNy ZWFSZWxhdGVkVVJMKHN6VGllbmVIaWpvcywgdHlwZUhpam9zLCBpZCwgcGxhbnRp bGxhLHRhcmdldCl7DQoNCgl2YXIgc3pVcmwgPSAiL2FkbWluL3dlYi9nY19zZWFy Y2gucGhwPyI7DQoJaWYodHlwZUhpam9zID09ICIxMyIpew0KCQlpZiggcGxhbnRp bGxhICE9ICIwIiAmJiBwbGFudGlsbGEgIT0gIiIpew0KCQkJc3pVcmwgID0gc3pV cmwgKyAiJnRpcG89MyZlbnRpZGFkPSIgKyB0eXBlSGlqb3MgKyAiJnBsYW50aWxs YT0iICsgcGxhbnRpbGxhICsgIiZJZD0iICsgaWQ7DQoJCX0JDQoJCWVsc2V7DQoJ CQlpZihzelRpZW5lSGlqb3MgPT0gInRydWUiKXsNCgkJCQlzelVybCAgPSBzelVy bCAgKyAidGlwbz0zJmVudGlkYWQ9IiArIHR5cGVIaWpvcyArICImcGxhbnRpbGxh PTExJklkPSIgKyBpZDsNCgkJCX0NCgkJCWVsc2V7DQoJCQkJc3pVcmwgID0gc3pV cmwgICsgInRpcG89MyZlbnRpZGFkPSIgKyB0eXBlSGlqb3MgKyAiJklkPSIgKyBp ZDsNCgkJCX0NCgkJfQ0KCX0NCgllbHNlew0KCQlzelVybCAgPSBzelVybCAgKyAi dGlwbz0zJmVudGlkYWQ9IiArIHR5cGVIaWpvcyArICImSWQ9IiArIGlkOw0KCQlz elVybCAgPSBzelVybCAgKyAiJmNvbnRlbnR0eXBlPWh0bWwiDQoJfQ0KCQ0KICAg IGlmKHRhcmdldCAhPSBudWxsICYmIHRhcmdldCAhPSAiIil7DQogICAgICAgIHN6 VXJsICs9ICImdGFyZ2V0PSIrdGFyZ2V0Ow0KICAgIH0NCglyZXR1cm4gc3pVcmw7 DQp9DQoNCmZ1bmN0aW9uIGNyZWFVUkwoc3pUaWVuZUhpam9zLCB0eXBlSGlqb3Ms IGlkLCBwbGFudGlsbGEsIHRhcmdldCl7DQoJdmFyIHN6VXJsID0gIi9hZG1pbi93 ZWIvZ2Nfc2VhcmNoLnBocD8iOw0KCWlmKHR5cGVIaWpvcyA9PSAiMTMiKXsNCgkJ aWYoIHBsYW50aWxsYSAhPSAiMCIgJiYgcGxhbnRpbGxhICE9ICIiKXsNCgkJCXN6 VXJsICA9IHN6VXJsICsgIiZ0aXBvPTMmZW50aWRhZD0iICsgdHlwZUhpam9zICsg IiZwbGFudGlsbGE9IiArIHBsYW50aWxsYSArICImSWQ9IiArIGlkOw0KCQl9CQ0K CQllbHNlew0KCQkJaWYoc3pUaWVuZUhpam9zID09ICJ0cnVlIil7DQoJCQkJc3pV cmwgID0gc3pVcmwgICsgInRpcG89MyZlbnRpZGFkPSIgKyB0eXBlSGlqb3MgKyAi JnBsYW50aWxsYT0xMSZJZD0iICsgaWQ7DQoJCQl9DQoJCQllbHNlew0KCQkJCXN6 VXJsICA9IHN6VXJsICArICJ0aXBvPTMmZW50aWRhZD0iICsgdHlwZUhpam9zICsg IiZJZD0iICsgaWQ7DQoJCQl9DQoJCX0NCgl9DQoJZWxzZXsNCgkJc3pVcmwgID0g c3pVcmwgICsgInRpcG89MyZlbnRpZGFkPSIgKyB0eXBlSGlqb3MgKyAiJklkPSIg KyBpZDsNCgkJc3pVcmwgID0gc3pVcmwgICsgIiZjb250ZW50dHlwZT1odG1sIg0K CX0NCiAgICBpZih0YXJnZXQgPT0gJzAnKXsNCiAgICAgICAgIHN6VXJsICs9ICIm Y291bnQ9Iit0YXJnZXQ7DQogICAgfWVsc2UgaWYodGFyZ2V0ICE9IG51bGwgJiYg dGFyZ2V0ICE9ICIiKXsNCiAgICAgICAgc3pVcmwgKz0gIiZ0YXJnZXQ9Iit0YXJn ZXQ7DQogICAgfQ0KCXJldHVybiBzelVybDsNCn0NCg0KZnVuY3Rpb24gc3dhcFRl eHRvKGVzY29uZGVyLCBtb3N0cmFyKSB7DQoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoZXNjb25kZXIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQoJZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQobW9zdHJhcikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7 DQp9DQoJCQ0KDQpmdW5jdGlvbiBnb29nbGVNYXBzKCl7DQoJd2luZG93Lm9wZW4o Ii9hZWNvYy9nb29nbGUvZ29vZ2xlTWFwcy5odG0iLCJBRUNPQyIsImhlaWdodD0z NzUsd2lkdGg9NDQ1LHN0YXR1cz15ZXMsdG9vbGJhcj1ubyxtZW51YmFyPW5vLGxv Y2F0aW9uPW5vIik7DQp9DQoNCmZ1bmN0aW9uIGJ1c3F1ZWRhKCl7DQoJDQoJc3pV cmwgPSAiL2FlY29jL2FkbWluL3dlYi9nY19zZWFyY2gucGhwP3RpcG89NSZlbnRp ZGFkPTE5JnBsYW50aWxsYT0yNyZzdWJncnVwbz0iKyBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnbWFpblNlY2Npb25lcycpLnZhbHVlICsgIiZzZWFyY2h0ZXh0PSIr IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWFyY2hfY29sYWJvcmFkb3Jlcycp LnZhbHVlOw0KCXZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn YnVzcXVlZGFfY29sYWJvcmFkb3JlcycpOw0KCWlmcmFtZS5zcmMgPSBzelVybDsN Cn0NCg0KZnVuY3Rpb24gY29uc3RydWVpeFJ1dGEoc3pJZCwgYXJyYXlJZCwgYXJy YXlUaXR1bG9zLCBzelRpdHVsbyl7DQoJdmFyIHN6SHRtbCA9ICIiOw0KCXZhciBj bGFzc2UgPSBuZXcgQXJyYXkoKTsNCgljbGFzc2VbMF0gPSAibWFwYV9zZWNjaW9u IjsNCgljbGFzc2VbMV0gPSAicHJpbWVyYV9zdWJjYXJwZXRhIjsJDQoJY2xhc3Nl WzJdID0gInNlZ3VuZGFfc3ViY2FycGV0YSI7DQoJY2xhc3NlWzNdID0gInRlcmNl cmFfc3ViY2FycGV0YSI7DQoJDQoJZm9yKGkgPSAxOyBpIDwgYXJyYXlJZC5sZW5n dGg7IGkrKyl7DQoJCXN6SHRtbCA9IHN6SHRtbCArICI8YSBocmVmPSciICsgYXJy YXlJZFtpXSArICImcGxhbnRpbGxhPTMxJyI7DQoJCWlmKGkgPiAzKXsNCgkJCXN6 SHRtbCA9IHN6SHRtbCArICIgY2xhc3M9JyIgKyBjbGFzc2VbM10gKyAiJyB0YXJn ZXQ9XCJtYWluZnJhbWVcIj4gIiArIGFycmF5VGl0dWxvc1tpXSArICIgPC9hPiI7 DQoJCX0NCgkJZWxzZXsNCgkJCXN6SHRtbCA9IHN6SHRtbCArICIgY2xhc3M9JyIg KyBjbGFzc2VbaS0xXSArICInIHRhcmdldD1cIm1haW5mcmFtZVwiPiAiICsgYXJy YXlUaXR1bG9zW2ldICsiLzwvYT4iOw0KCQl9DQoJfQ0KCWlmKGkgPiAzKXsNCgkJ c3pIdG1sID0gc3pIdG1sICsgIjxzcGFuICBjbGFzcz0nIiArIGNsYXNzZVszXSAr ICInID4iICsgc3pUaXR1bG8gKyAiPC9zcGFuPiI7DQoJfQ0KCWVsc2V7DQoJCXN6 SHRtbCA9IHN6SHRtbCArICI8c3BhbiAgY2xhc3M9JyIgKyBjbGFzc2VbaSAtIDFd ICsgIicgPiIgKyBzelRpdHVsbyArICI8L3NwYW4+IjsNCgl9DQoJZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoc3pJZCkuaW5uZXJIVE1MPSBzekh0bWw7DQp9DQoNCmZ1 bmN0aW9uIGNoYW5nZVNlbGVjdG9yKG9TdWJncnVwbywgc3ViZ3J1cG8pew0KCXZh ciBhcnI7DQoJaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dydXBvJykpew0K CQl2YXIgZ3J1cG8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbkdydXBv JykudmFsdWUNCgkJaWYodHJpbShncnVwbykgPT0gIioiICl7DQoJCQlhcnIgPSBz dWJncnVwb1swXTsNCgkJfQ0KCQllbHNlew0KCQkJYXJyID0gc3ViZ3J1cG9bZ3J1 cG9dOw0KCQl9DQoJfQ0KCWlmKG9TdWJncnVwbyl7DQoJCQ0KCQlvU3ViZ3J1cG8u dmFsdWVzID0gYXJyOw0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpblN1 YicpLnZhbHVlID0gYXJyWzBdLnNwbGl0KCd8JylbMV07DQoJCWRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCdpZG1haW5TdWInKS52YWx1ZSA9IGFyclswXS5zcGxpdCgn fCcpWzBdOw0KCQlvU3ViZ3J1cG8uZXNjcmliZVNlbGVjdG9yKCk7DQoJfQ0KfQ0K DQpmdW5jdGlvbiBjYW52aWFCdXNxdWVkYShzelVybCl7DQoJaWYoZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJ2dydXBvJykpew0KCQl2YXIgZ3J1cG8gPSBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnbWFpbkdydXBvJykudmFsdWUNCgkJaWYodHJpbShn cnVwbykgIT0gIioiICl7DQoJCQlzelVybCA9IHN6VXJsICsgIiZncnVwbz0iICsg Z3J1cG87IA0KCQl9DQoJfQ0KCWlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz dWJncnVwbycpKXsNCgkJdmFyIHN1YmdydXBvID0gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ21haW5TdWInKS52YWx1ZQ0KCQlpZih0cmltKHN1YmdydXBvKSAhPSAi KiIgKXsNCgkJCXN6VXJsID0gc3pVcmwgKyAiJnN1YmdydXBvPSIgKyBzdWJncnVw bzsNCgkJfQ0KCX0NCglpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uX2Vs X3RleHRvJykpew0KCQl2YXIgdGV4dG8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgnY29uX2VsX3RleHRvJykudmFsdWUNCgkJaWYodHJpbSh0ZXh0bykgIT0gIiIg KXsNCgkJCXN6VXJsID0gc3pVcmwgKyAiJnNlYXJjaHRleHQ9IiArIHRleHRvOw0K CQl9DQoJfQ0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluYnVzcXVlZGEn KS5zcmMgPSAiL2FlY29jL2FkbWluL3dlYi8iICsgc3pVcmw7DQp9DQpmdW5jdGlv biBjYW52aWFCdXNxdWVkYU9yZ2Eoc3pVcmwpew0KCWlmKGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdncnVwbycpKXsNCgkJdmFyIGdydXBvID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ21haW5HcnVwbycpLnZhbHVlDQoJCWlmKHRyaW0oZ3J1cG8p ICE9ICIqIiApew0KCQkJc3pVcmwgPSBzelVybCArICImZ3J1cG89IiArIGdydXBv OyANCgkJfQ0KCX0NCglpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3ViZ3J1 cG8nKSl7DQoJCXZhciBzdWJncnVwbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdtYWluU3ViJykudmFsdWUNCgkJaWYodHJpbShzdWJncnVwbykgIT0gIioiICl7 DQoJCQlzelVybCA9IHN6VXJsICsgIiZzdWJncnVwbz0iICsgc3ViZ3J1cG87DQoJ CX0NCgl9DQoJaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nvbl9lbF90ZXh0 bycpKXsNCgkJdmFyIHRleHRvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv bl9lbF90ZXh0bycpLnZhbHVlDQoJCWlmKHRyaW0odGV4dG8pICE9ICIiICl7DQoJ CQlzelVybCA9IHN6VXJsICsgIiZzZWFyY2h0ZXh0PSIgKyB0ZXh0bzsNCgkJfQ0K CX0NCgl3aW5kb3cucGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdydXRh JykuaW5uZXJIVE1MID0gJzx0ZCBjb2xzcGFuPSIyIiBjbGFzcz0ibWFwYV9zZWNj aW9uIiBzdHlsZT0icGFkZGluZy1ib3R0b206MjdweDsgcGFkZGluZy1sZWZ0OjFw eCIgPgk8YSBjbGFzcz0ibWFwYV9zZWNjaW9uIiBocmVmPSIvYWVjb2MvYWRtaW4v d2ViL2djX3NlYXJjaC5waHA/dGlwbz0zJmVudGlkYWQ9MTMmcGxhbnRpbGxhPTEx JklkPTUyIiB0YXJnZXQ9Im1haW5mcmFtZSI+U29icmUgQUVDT0M8L2E+IDxzcGFu IGNsYXNzPSJwcmltZXJhX3N1YmNhcnBldGEiPi8gPGEgY2xhc3M9InByaW1lcmFf c3ViY2FycGV0YSIgaHJlZj0iL2FlY29jL2FkbWluL3dlYi9nY19zZWFyY2gucGhw P2VudGlkYWQ9MTMmdGlwbz0zJnBsYW50aWxsYT0xMSZJZD05NyIgdGFyZ2V0PSJt YWluZnJhbWUiPk9yZ2FuaWdyYW1hIDwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InNl Z3VuZGFfc3ViY2FycGV0YSI+LyAnK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdp ZG1haW5TdWInKS52YWx1ZSsnPC9zcGFuPjwvdGQ+JzsNCgl3aW5kb3cucGFyZW50 LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZXB0JykuaW5uZXJIVE1MID0gZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lkbWFpblN1YicpLnZhbHVlOw0KCWRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCdtYWluYnVzcXVlZGEnKS5zcmMgPSAiL2FlY29j L2FkbWluL3dlYi8iICsgc3pVcmw7DQp9DQoNCmZ1bmN0aW9uIGNhbnZpYUJ1c3F1 ZWRhRGF0ZXMoc3pVcmwpew0KCWFyck1lc2VzID0gbmV3IEFycmF5KCJFbmVybyIs IkZlYnJlcm8iLCJNYXJ6byIsIkFicmlsIiwiSnVuaW8iLCJKdWxpbyIsIkFnb3N0 byIsIlNlcHRpZW1icmUiLCJPY3R1YnJlIiwiTm92aWVtYnJlIiwiRGljaWVtYnJl Iik7DQoJaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dydXBvJykpew0KCQl2 YXIgZ3J1cG8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbkdydXBvJyku dmFsdWUNCgkJaWYodHJpbShncnVwbykgIT0gIioiICl7DQoJCQlzelVybCA9IHN6 VXJsICsgIiZncnVwbz0iICsgZ3J1cG87IA0KCQl9DQoJfQ0KCWlmKGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdzdWJncnVwbycpKXsNCgkJdmFyIHN1YmdydXBvID0g ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW5TdWInKS52YWx1ZQ0KCQlpZih0 cmltKHN1YmdydXBvKSAhPSAiKiIgKXsNCgkJCWlmKGdydXBvID09ICIqIil7DQoJ CQkJc3ViZ3J1cG8gPSBzdWJncnVwby5zdWJzdHJpbmcoMSk7DQoJCQkJaWYodHJp bShzdWJncnVwbykgIT0gIioiICl7DQoJCQkJCXN6VXJsID0gc3pVcmwgKyAiJnNl YXJjaHRleHQ9IiArIGFyck1lc2VzW3N1YmdydXBvIC0gMV07DQoJCQkJCWlmKGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25fZWxfdGV4dG8nKSl7DQoJCQkJCQl2 YXIgdGV4dG8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uX2VsX3RleHRv JykudmFsdWUNCgkJCQkJCWlmKHRyaW0odGV4dG8pICE9ICIiICl7DQoJCQkJCQkJ c3pVcmwgPSBzelVybCArICImc2VhcmNodGV4dDI9IiArIHRleHRvOw0KCQkJCQkJ fQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQkJZWxzZXsNCgkJCQlzelVybCA9IHN6 VXJsICsgIiZzdWJncnVwbz0iICsgc3ViZ3J1cG87DQoJCQkJaWYoZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJ2Nvbl9lbF90ZXh0bycpKXsNCgkJCQkJdmFyIHRleHRv ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nvbl9lbF90ZXh0bycpLnZhbHVl DQoJCQkJCWlmKHRyaW0odGV4dG8pICE9ICIiICl7DQoJCQkJCQlzelVybCA9IHN6 VXJsICsgIiZzZWFyY2h0ZXh0PSIgKyB0ZXh0bzsNCgkJCQkJfQ0KCQkJCX0NCgkJ CX0NCgkJfQ0KCX0gZWxzZSB7DQovL01vZGlmaWNhY2lvbnMgTWFyYyAgY29sb3F1 ZW0gZWwgZWxzZSBwZXIgcG9kZXIgZmVyIGxhIGJ1c3F1ZWRhIHBlciB0ZXh0IGVu Y2FyYSBxdWUgbm8gaGkgaGFnaSBzdWJncnVwISENCgkJaWYoZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2Nvbl9lbF90ZXh0bycpKXsNCgkJCXZhciB0ZXh0byA9IGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25fZWxfdGV4dG8nKS52YWx1ZQ0KCQkJ aWYodHJpbSh0ZXh0bykgIT0gIiIgKXsNCgkJCQlzelVybCA9IHN6VXJsICsgIiZz ZWFyY2h0ZXh0PSIgKyB0ZXh0bzsNCgkJCX0NCgkJfQ0KCX0NCglkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnbWFpbmJ1c3F1ZWRhJykuc3JjID0gIi9hZWNvYy9hZG1p bi93ZWIvIiArIHN6VXJsOw0KfQ0KDQoNCmZ1bmN0aW9uIGNhcmdhQnVzY2Fkb3Io KXsNCgkNCglpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHh0X2J1c2NhZG9y Jykpew0KCQlpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbmZyYW1lJykp ew0KCQkJdmFyIHNlYXJjaHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn dHh0X2J1c2NhZG9yJykudmFsdWU7DQoJCQlpZih0cmltKHNlYXJjaHRleHQpICE9 ICIiKXsNCgkJCQl2YXIgc3JjID0gImFkbWluL3dlYi9nY19zZWFyY2gucGhwPyZ0 aXBvPTUmcGxhbnRpbGxhPTc2JmNvbnRlbnR0eXBlPWh0bWwmc2VhcmNoVGV4dD0i ICsgc2VhcmNodGV4dDsNCgkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFp bmZyYW1lJykuc3JjID0gc3JjOw0KCQkJfQ0KCQl9DQoJfQ0KfQ0KDQpmdW5jdGlv biBldmFsdWFfeHgoKXsNCglkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn dGV4dG9MYXJnbycpLm91dGVySFRNTDsNCglhbGVydChkaXYpOw0KCWRpdiA9IGRp di5zdWJzdHJpbmcoZGl2LmluZGV4T2YoIj4iKSArIDEsZGl2Lmxlbmd0aCk7DQoJ ZGl2ID0gZGl2LnN1YnN0cmluZygwLGRpdi5pbmRleE9mKCI8IikpOw0KCS8vTm8g aGF5IHRleHRvIGNvcnRvDQoJaWYodHJpbShkaXYpICE9ICIiKXsNCgkJZGl2ID0g ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHRvQ29ydG8nKS5vdXRlckhUTUw7 DQoJCWRpdiA9IGRpdi5zdWJzdHJpbmcoZGl2LmluZGV4T2YoIj4iKSArIDEsZGl2 Lmxlbmd0aCk7DQoJCWRpdiA9IGRpdi5zdWJzdHJpbmcoMCxkaXYuaW5kZXhPZigi PCIpKTsNCgkJYWxlcnQoImhheSBsYXJnbyAiICsgZGl2KTsNCgkJaWYodHJpbShk aXYpID09ICIiKXsNCgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsZWVyX21h cycpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSINCgkJCWRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdtaW5pbWl6YXInKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiDQoJCX0N Cgl9DQoJZWxzZXsNCgkJZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl eHRvQ29ydG8nKS5vdXRlckhUTUw7DQoJCWRpdiA9IGRpdi5zdWJzdHJpbmcoZGl2 LmluZGV4T2YoIj4iKSArIDEsZGl2Lmxlbmd0aCk7DQoJCWRpdiA9IGRpdi5zdWJz dHJpbmcoMCxkaXYuaW5kZXhPZigiPCIpKTsNCgkJYWxlcnQoIm5vIGhheSBsYXJn byAiK2Rpdik7DQoJCWlmKHRyaW0oZGl2KSAhPSAiIil7DQoJCQlkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnbGVlcl9tYXMnKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUi DQoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWluaW1pemFyJykuc3R5bGUu ZGlzcGxheSA9ICJub25lIg0KCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl eHRvTGFyZ28nKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiDQoJCX0NCgl9DQoNCn0N Cg0KDQpmdW5jdGlvbiBzdHJpcFRhZ3MgKHQpIHsNCiAgIGlmICh0KQ0KICAgICB3 aGlsZSAodC5tYXRjaCgvPC4qPi8pKSB0ID0gdC5yZXBsYWNlKC88W14+XSo+Lywg IiIpOw0KICAgICByZXR1cm4gdDsNCn0NCmZ1bmN0aW9uIHN0cmlwVGFnc1YyICh0 KSB7DQogICBpZiAodCkNCiAgICAgd2hpbGUgKHQubWF0Y2goLyYuKjsvKSkgdCA9 IHQucmVwbGFjZSgvJlteO10qOy8sICIiKTsNCiAgICAgcmV0dXJuIHQ7DQp9DQoN CmZ1bmN0aW9uIFZlcmlmaWNhcihzelRleHRvKQ0Kew0KaWYgKHN6VGV4dG8pDQpm b3Ioaj0wO2o8MjtqKyspDQp7DQpmb3IoaT0wO2k8c3pUZXh0by5sZW5ndGg7aSsr KQ0Kew0KaWYoKHN6VGV4dG8uY2hhckNvZGVBdChpKT09MTApICYmIChzelRleHRv LmNoYXJDb2RlQXQoaSsxKT09MTMpIHx8IChzelRleHRvLmNoYXJDb2RlQXQoaSk9 PTEzKSAmJiAoc3pUZXh0by5jaGFyQ29kZUF0KGkrMSk9PTEwKSkNCnsNCnN6VGV4 dG89c3pUZXh0by5zdWJzdHJpbmcoMCxpKSArIHN6VGV4dG8uc3Vic3RyaW5nKGkr MixzelRleHRvLmxlbmd0aCk7DQovL2FsZXJ0KFRleHRvKTsNCn0NCi8vYWxlcnQo VGV4dG8uY2hhckNvZGVBdChpKSk7DQp9DQp9DQpyZXR1cm4gc3pUZXh0bzsNCn0N Cg0KDQoNCmZ1bmN0aW9uIGV2YWx1YShzekZsYXNoKXsNCiAgICAgZGl2ID0gZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHRvTGFyZ28nKS5pbm5lckhUTUw7DQog ICAgIGRpdiA9IHN0cmlwVGFncyhkaXYpOw0KICAgICBkaXYgPSBzdHJpcFRhZ3NW MihkaXYpOw0KCSBkaXYgPSBWZXJpZmljYXIoZGl2KTsNCiAgICAgLy9IYXkgdGV4 dG8gbGFyZ28NCiAgICAgaWYodHJpbShkaXYpICE9ICIiKXsNCiAgICAgICAgICBk aXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dG9Db3J0bycpLmlubmVy SFRNTDsNCiAgICAgICAgICBkaXYgPSBzdHJpcFRhZ3MoZGl2KTsNCiAgICAgICAg ICBkaXYgPSBzdHJpcFRhZ3NWMihkaXYpOw0KICAgICAgICAgIGRpdiA9IFZlcmlm aWNhcihkaXYpOw0KDQogICAgICAgICAgLy9ObyBoYXkgdGV4dG8gY29ydG8NCiAg ICAgICAgICBpZih0cmltKGRpdikgIT0gIiIpew0KICAgICAgICAgICAgICAgZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xlZXJfbWFzJykuc3R5bGUuZGlzcGxheSA9 ICJibG9jayI7DQogICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgnbGVlcl9tYXMnKS5pbm5lckhUTUwgPSAiPHNwYW4gb25jbGljaz1cInN3YXBU ZXh0bygndGV4dG9Db3J0bycsICd0ZXh0b0xhcmdvJyk7dWx0aW1hdGVSZWRpbWVu c2lvbmEoKTtcIiBjbGFzcz0nbGVlcl9tYXMnPmxlZXIgbeFzPC9zcGFuPiI7DQog ICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWluaW1pemFy JykuaW5uZXJIVE1MID0gIjxzcGFuIGNsYXNzPSdsZWVyX21hcycgb25jbGljaz1c InN3YXBUZXh0bygndGV4dG9MYXJnbycsICd0ZXh0b0NvcnRvJyk7dWx0aW1hdGVS ZWRpbWVuc2lvbmEoKTtcIj5taW5pbWl6YXIgdGV4dG88L3NwYW4+IjsNCiAgICAg ICAgICB9DQogICAgICAgICAgLy9Tb2xvIGhheSB0ZXh0byBsYXJnbw0KICAgICAg ICAgIGVsc2V7DQogICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgndGV4dG9MYXJnbycpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOw0KICAgICAg ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xlZXJfbWFzJykuc3R5 bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICAgICAgICAgICAgIGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCdtaW5pbWl6YXInKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUi Ow0KICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHRv Q29ydG8nKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICAgIH0NCiAg ICAgfQ0KICAgICBlbHNlew0KICAgICAgICAgIGRpdiA9IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCd0ZXh0b0NvcnRvJykuaW5uZXJIVE1MOw0KICAgICAgICAgIGRp diA9IHN0cmlwVGFncyhkaXYpOw0KICAgICAgICAgIGRpdiA9IHN0cmlwVGFnc1Yy KGRpdik7DQogICAgICAgICAgZGl2ID0gVmVyaWZpY2FyKGRpdik7DQogICAgICAg ICAgLy9Tb2xvIGhheSB0ZXh0byBjb3J0bw0KDQogICAgICAgICAgaWYodHJpbShk aXYpICE9ICIiKXsNCiAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdsZWVyX21hcycpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAg ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWluaW1pemFyJykuc3R5 bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICAgICAgICAgICAgIGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCd0ZXh0b0xhcmdvJykuc3R5bGUuZGlzcGxheSA9ICJub25l IjsNCiAgICAgICAgICB9DQogICAgICAgICAgLy9ObyBoYXkgbmFkYQ0KICAgICAg ICAgIGVsc2V7DQogICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgnbGVlcl9tYXMnKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICAg ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pbmltaXphcicpLnN0eWxl LmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgICAgICAgICBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgndGV4dG9MYXJnbycpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7 DQogICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dG9D b3J0bycpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgICAgfQ0KICAg ICB9DQoJLy9DYW52aSBmdW5jaW9uYWxpdGF0LCBqYSBubyBlcyBuZWNlc3NpdGEg bCdhbXBsYWRhIGQnYXF1ZXN0cyBhbCBjYXJnYXIgZWwgZmxhc2gNCiAgICAgLypp ZihzekZsYXNoKXsNCgkgCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0b0Nv cnRvJykuc3R5bGUud2lkdGggPSAiMjI1cHgiDQoJCWRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCd0ZXh0b0xhcmdvJykuc3R5bGUud2lkdGggPSAiMjI1cHgiDQoJfSov DQp9DQoNCg0KZnVuY3Rpb24gdWx0aW1hdGVSZWRpbWVuc2lvbmEoKXsNCg0KCWFs dG9Cb2R5ID0gcGFyc2VJbnQodGhpcy5kb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdo dCwgMTApOw0KCWlmKHdpbmRvdy5wYXJlbnQpew0KCQlhbHRvUGFkcmUgPSBwYXJz ZUludCh3aW5kb3cucGFyZW50LmRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0LDEw KTsNCgkJaWYoYWx0b0JvZHkgPiBhbHRvUGFkcmUgfHwgYWx0b0JvZHkgPCBhbHRv UGFkcmUpew0KCQkJdG90YWw9IHdpbmRvdy5wYXJlbnQuZnJhbWVzLmxlbmd0aDsN CgkJCWZvcihhPTA7IGEgPHRvdGFsOyBhKyspew0KCQkJCXN6TmFtZSA9IHdpbmRv dy5wYXJlbnQuZnJhbWVzW2FdLm5hbWU7DQoJCQkJaWYoc3pOYW1lLmluZGV4T2Yo Im1haW4iKSA+PSAwICl7DQoJCQkJCWlmKHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoc3pOYW1lKSl7DQoJCQkJCQkJaWZyYW1lID0gd2luZG93 LnBhcmVudC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChzek5hbWUpOw0KCQkJCQkJ CWlmcmFtZS5zdHlsZS5oZWlnaHQgPSAoYWx0b0JvZHkgKyJweCIpOw0KCQkJCQl9 DQoJCQkJfQ0KCQkJfQ0KCQkJd2luZG93LnRvcC5yZWRpbWVuc2lvbmFIb21lKCk7 DQoJCX0NCgl9DQp9DQoNCmZ1bmN0aW9uIHJlZGltZW5zaW9uYUhvbWUoKSB7DQoJ Ly9hbGVydChwYXJzZUludChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50 SGVpZ2h0LDEwKSk7DQoJaWYgKGRvY3VtZW50LmFsbCl7DQoJCXZhciBhclZlcnNp b24gPSBuYXZpZ2F0b3IuYXBwVmVyc2lvbi5zcGxpdCgiTVNJRSIpOw0KCQl2YXIg dmVyc2lvbiA9IHBhcnNlRmxvYXQoYXJWZXJzaW9uWzFdKTsNCgkJaWYgKCh2ZXJz aW9uID49IDUuNSkgJiYgKHZlcnNpb24gPCA3KSl7IA0KCQlpZiAocGFyc2VJbnQo ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCwxMCkgLSBwYXJz ZUludChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbmZyYW1lJykuc3R5bGUu aGVpZ2h0LDEwKSA+IDE4MSl7DQoJCQkvL2NhbWJpYW1vcyBlbCBmcmFtZSBjZW50 cmFsDQoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpbmZyYW1lIikuc3R5 bGUuaGVpZ2h0ID0gcGFyc2VJbnQoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNs aWVudEhlaWdodCwxMCkgLSAyMTcgKyAicHgiOw0KCQkvL2NhbWJpYW1vcyBlbCBm cmFtZSBkZSBsYSBkZXJlY2hhDQoJCS8qZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo ImZyYW1lZGVyZWNoYSIpLnN0eWxlLmhlaWdodCA9IHBhcnNlSW50KGRvY3VtZW50 LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsMTApIC0gMjE5ICsgInB4IjsJ Ki8NCgkJCX0JDQoJCX0NCgkJZWxzZXsNCgkJCWlmIChwYXJzZUludChkb2N1bWVu dC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LDEwKSAtIHBhcnNlSW50KGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluZnJhbWUnKS5zdHlsZS5oZWlnaHQs MTApID4gMjI5KXsNCgkJCS8vY2FtYmlhbW9zIGVsIGZyYW1lIGNlbnRyYWwNCgkJ CWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluZnJhbWUiKS5zdHlsZS5oZWln aHQgPSBwYXJzZUludChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVp Z2h0LDEwKSAtIDIzNSArICJweCI7DQoJCQkvL2NhbWJpYW1vcyBlbCBmcmFtZSBk ZSBsYSBkZXJlY2hhDQoJCQkvKmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFt ZWRlcmVjaGEiKS5zdHlsZS5oZWlnaHQgPSBwYXJzZUludChkb2N1bWVudC5kb2N1 bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LDEwKSAtIDIxOSArICJweCI7CSovDQoJ CQl9CQ0KCQl9CQ0KCX0NCgllbHNlew0KCQlpZiAocGFyc2VJbnQoZG9jdW1lbnQu ZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCwxMCkgLSBwYXJzZUludChkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbmZyYW1lJykuc3R5bGUuaGVpZ2h0LDEw KSA+IDE3MSl7DQoJCS8vY2FtYmlhbW9zIGVsIGZyYW1lIGNlbnRyYWwNCgkJZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5mcmFtZSIpLnN0eWxlLmhlaWdodCA9 IHBhcnNlSW50KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQs MTApIC0gMTg2ICsgInB4IjsNCgkJLy9jYW1iaWFtb3MgZWwgZnJhbWUgZGUgbGEg ZGVyZWNoYQ0KCQkvKmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZWRlcmVj aGEiKS5zdHlsZS5oZWlnaHQgPSBwYXJzZUludChkb2N1bWVudC5kb2N1bWVudEVs ZW1lbnQuY2xpZW50SGVpZ2h0LDEwKSAtIDIxOSArICJweCI7CSovDQoJCX0JDQoJ fQ0KCXRvVG9wKCk7DQp9DQoNCmZ1bmN0aW9uIHNldFRhbWFueURlZmVjdGUoc3pJ ZDEpew0KCQ0KCWFsdG9Cb2R5ID0gcGFyc2VJbnQoZG9jdW1lbnQuYm9keS5zY3Jv bGxIZWlnaHQsMTApOw0KCWlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHN6SWQx KSl7DQoJCWlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHN6SWQxKS5zdHlsZS5o ZWlnaHQgPCBhbHRvQm9keSApew0KCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo c3pJZDEpLnN0eWxlLmhlaWdodCA9IGFsdG9Cb2R5ICsgInB4IjsNCgkJfQ0KCX0N CiB9DQoNCmZ1bmN0aW9uIGlzRmxhc2goc3pVcmwpew0KCXZhciB0bXAgPSBzelVy bC5zdWJzdHJpbmcoc3pVcmwubGFzdEluZGV4T2YoIi4iKSArIDEgKTsNCglpZih0 bXAudG9Mb3dlckNhc2UoKSA9PSAic3dmIil7DQoJCXJldHVybiB0cnVlOw0KCX0N CgllbHNlew0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBldmFs dWFTaW5vcHNpcygpew0KCXN6VGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdzaW5vcHNpcycpLm91dGVySFRNTDsNCglzelRleHQgPSBzdHJpcFRhZ3Moc3pU ZXh0KTsNCiAgICBzelRleHQgPSBzdHJpcFRhZ3NWMihzelRleHQpOw0KICAgIHN6 VGV4dCA9IFZlcmlmaWNhcihzelRleHQpOw0KCWlmKHRyaW0oc3pUZXh0KSA9PSAi Iil7DQoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvY3VsdGFTaW5vcHNpcycp LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBzd2Fw RGVzdGFjYWRvcyhzeklkLCBzelNwYW5JZCkgew0KCWlmKGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKHN6SWQpLnN0eWxlLmRpc3BsYXkgPT0gIm5vbmUiKXsNCgkJZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3pJZCkuc3R5bGUuZGlzcGxheSA9ICJibG9j ayI7DQoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHN6U3BhbklkKS5pbm5lckhU TUwgPSAiWy1dIg0KCX0NCgllbHNlew0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZChzeklkKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KCQlkb2N1bWVudC5nZXRF bGVtZW50QnlJZChzelNwYW5JZCkuaW5uZXJIVE1MID0gIlsrXSINCgl9DQoJcmVk aW1lbnNpb25hKCdpZnJhbWVfZGVzdGFjYWRvcycpOw0KCXdpbmRvdy5wYXJlbnQu cmVkaW1lbnNpb25hKCdmcmFtZWRlcmVjaGEnKTsNCn0NCg0KZnVuY3Rpb24gb3Bl bkRlc3RhY2FkbyhzelRpcG8sIHN6VXJsKXsNCglpZih0cmltKHN6VXJsKSAhPSAi Iil7DQoJCWlmKHRyaW0oc3pUaXBvKSA9PSAiMCIpew0KCQkJd2luZG93LnRvcC5k b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbmZyYW1lJykuc3JjPSBzelVybDsN CgkJfQ0KCQllbHNlew0KCQkJc3pVcmwgPSAiaHR0cDovLyIgKyBzelVybDsNCgkJ CXdpbmRvdy5vcGVuKHN6VXJsKTsNCgkJfQ0KCX0NCn0NCg0KZnVuY3Rpb24gdmVy aWZpY2FUeHQoc3pUZXh0KXsNCglzelRleHQgPSBzdHJpcFRhZ3Moc3pUZXh0KTsN CiAgICBzelRleHQgPSBzdHJpcFRhZ3NWMihzelRleHQpOw0KICAgIHN6VGV4dCA9 IFZlcmlmaWNhcihzelRleHQpOw0KCXJldHVybiBzelRleHQ7DQp9DQoNCmZ1bmN0 aW9uIGV2YWx1YURlc3RhY2Fkb3Moc3pJZERlc2NDb3J0YSwgc3pJZERlc2NMYXJn YSwgc3pJY29ubyl7DQoJDQoJc3pUZXh0ID0gdmVyaWZpY2FUeHQoZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoc3pJZERlc2NDb3J0YSkub3V0ZXJIVE1MKTsNCglpZih0 cmltKHN6VGV4dCkgPT0gIiIgfHwgdHJpbShzelRleHQpID09ICJbK10iKXsNCgkJ ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3pJZERlc2NDb3J0YSkuc3R5bGUuZGlz cGxheSA9ICdub25lJzsNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3pJY29u bykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJc3pUZXh0ID0gdmVyaWZpY2FU eHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3pJZERlc2NMYXJnYSkub3V0ZXJI VE1MKTsNCgkJaWYodHJpbShzelRleHQpICE9ICIiKXsNCgkJCWRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKHN6SWREZXNjTGFyZ2EpLnN0eWxlLmRpc3BsYXkgPSAnYmxv Y2snOw0KCQl9DQoJfQ0KCWVsc2V7DQoJCXN6VGV4dCA9IHZlcmlmaWNhVHh0KGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKHN6SWREZXNjTGFyZ2EpLm91dGVySFRNTCk7 DQoJCWlmKHRyaW0oc3pUZXh0KSA9PSAiIil7DQoJCQlkb2N1bWVudC5nZXRFbGVt ZW50QnlJZChzekljb25vKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KCQl9DQoJ fQ0KfQ0KDQpmdW5jdGlvbiByZWRpbWVuc2lvbmFEZXN0YWNhZG9zUmVsZW50aXph ZG8oc3pJZCl7DQoJdmFyIHkgPSBwYXJzZUludChkb2N1bWVudC5ib2R5LnNjcm9s bEhlaWdodCwxMCk7DQoJLy9hbGVydCh5KTsNCgl2YXIgaSA9IDA7DQoJdmFyIGog PSAwOw0KCXZhciByZWRpbSA9ICAxMDA7DQoJaWYgKHBhcmVudCkNCglpZiAocGFy ZW50LmRvY3VtZW50KQ0KCWlmKHBhcmVudC5kb2N1bWVudC5nZXRFbGVtZW50QnlJ ZChzeklkKSl7DQoJCXdoaWxlKGkgPCB5ICl7DQoJCQlqID0gaSAqIDINCgkJCXJl ZGltID0gcmVkaW0gKyBqDQoJCQlzZXRUaW1lb3V0ICgicGFyZW50LmRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdpZnJhbWVfZGVzdGFjYWRvcycpLnN0eWxlLmhlaWdo dCA9ICgiICsgaSArICIgKyAncHgnKTsiLCBqKTsgDQoJCQlpKys7DQoJCX0NCgl9 DQp9DQoNCmZ1bmN0aW9uIHJlZGltZW5zaW9uYShpZCl7DQoJDQoJdmFyIHkgPSBw YXJzZUludChkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodCwxMCk7DQoJDQoJaWYg KGlkICE9ICdidXNxdWVkYScpew0KCQlpZiAocGFyZW50KQ0KCQlpZiAocGFyZW50 LmRvY3VtZW50KQ0KCQlpZihwYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo aWQpKXsNCgkJCWlmKHkgPiAyMDAgKXsNCgkJCQlwYXJlbnQuZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmhlaWdodAk9ICh5ICsicHgiKTsJCQkNCgkJ CX0NCgkJfQ0KCX0NCglpZiAoaWQgPT0gJ2lmcmFtZV9kZXN0YWNhZG9zJyl7DQoJ CWlmIChwYXJlbnQpDQoJCWlmIChwYXJlbnQuZG9jdW1lbnQpDQoJCWlmKHBhcmVu dC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpew0KCQkJcGFyZW50LmRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKGlkKS5zdHlsZS5oZWlnaHQJPSAoeSArInB4Iik7 CQkNCgkJfQ0KCX0NCgllbHNlew0KCQlpZihwYXJlbnQuZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoaWQpKXsNCgkJCXBhcmVudC5kb2N1bWVudC5nZXRFbGVtZW50QnlJ ZChpZCkuc3R5bGUuaGVpZ2h0CT0gKHkgKyJweCIpOwkNCgkJCWlmKCB5IDwgMTIw KXsNCgkJCQlwYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxl LmhlaWdodCA9ICczMDBweCc7DQoJCQl9CQkNCgkJfQ0KCX0NCgl0b1RvcCgpOw0K fQkNCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqR0FMRVJJ QSBERSBJTUFHRU5FUyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLw0KDQoNCnZhciB3aWR0aERNb3N0cmEgPSAwOw0KdmFyIGhl aWdodERNb3N0cmEgPSAwOw0KdmFyIHBvc3g7DQp2YXIgcG9zeTsNCmZ1bmN0aW9u IGdldE1vdXNlWFkoZSl7DQovLyBjYXB0dXJlcyB0aGUgbW91c2UgcG9zaXRpb24N CnBvc3ggPSAwOyANCnBvc3kgPSAwOw0KaWYgKCFlKXt2YXIgZSA9IHdpbmRvdy5l dmVudDt9DQoJaWYgKGUucGFnZVggfHwgZS5wYWdlWSl7DQoJCXBvc3ggPSBlLnBh Z2VYOw0KCQlwb3N5ID0gZS5wYWdlWTsNCgl9DQoJZWxzZSBpZiAoZS5jbGllbnRY IHx8IGUuY2xpZW50WSl7DQoJCXBvc3ggPSBlLmNsaWVudFg7DQoJCXBvc3kgPSBl LmNsaWVudFk7DQoJfQ0KfSANCg0KLyoqKg0KKgltb3N0cmFySW1hdGdlIDogZmEg cXVlIHMnZW5zZW55aSBsYSBpbWF0Z2UgaSBjYXJyZWdhIGxhIGNvcnJlc3BvbmVu dCBlbiBlbCB0YWcgaW1nLCBhcXVlc3RhIGZpbmVzdHJlIGVtZXJnZW50IGZldGEg YW1iIGphdmFzY3JpcHQgZXN0YSANCiogZW4gZWwgYm9keSBkZSBsYSBwYWdpbmEg cHJpbmNpcGFsIG5vIGVzIGdlbmVyYSBlbiBlbCBmcmFtZQ0KKiAgICAJLXVybCBT dHJpbmc6IHVybCBkZSBsYSBpbWF0Z2UuDQoqDQoqKiovIA0KDQpmdW5jdGlvbiBt b3N0cmFySW1hdGdlKHVybCxwb3N4LHBvc3kpew0KCS8vaW5pY2lhbGl0emFtIGxh IHBvc2ljaW8gZW4gbGEgcGFnaW5hIHByaW5jaXBhbA0KCWlmKCBwb3N4IDwgMTUw ICkgew0KCQl0aGlzLnBvc3ggPSAyMTA7DQoJfSBlbHNlIGlmICggcG9zeCA8IDMx MCApIHsNCgkJdGhpcy5wb3N4ID0gMzY1Ow0KCX0gZWxzZSBpZiAoIHBvc3ggPCA1 MDAgKSB7DQoJCXRoaXMucG9zeCA9IDUyMDsNCgl9DQoJaWYoIHBvc3kgPCAyMTAg KSB7DQoJCXRoaXMucG9zeSA9IDM0OC41Ow0KCX0gZWxzZSBpZiAoIHBvc3kgPCA0 NTAgKSB7DQoJCXRoaXMucG9zeSA9IDU2MC41Ow0KCX0gZWxzZSBpZiAoIHBvc3gg PCA3MDAgKSB7DQoJCXRoaXMucG9zeSA9IDc3Mi41Ow0KCX0NCgkvL2ZlbSBxdWUg c3MnYW1hZ3VpIHBlciBzaSBlc3TgIGVuY2FyYSB2aXNpYmxlDQoJdGFuY2FyTW9z dHJhKCk7DQoJLy9jb2xvcXVlbSB0b3RhIGxhIGluZm9ybWFjaW8gZGUgbGEgaW1h dGdlDQoJdmFyIGltZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZU1v c3RyYScpOw0KCXZhciBpbWFnZU5vbSA9IHVybC5zcGxpdCgiLyIpWzFdOw0KCWlt Zy5zZXRBdHRyaWJ1dGUoImFsdCIsaW1hZ2VOb20pOw0KCWltZy5zZXRBdHRyaWJ1 dGUoInRpdGxlIixpbWFnZU5vbSk7DQoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo ImhhbmRsZSIpLmlubmVySFRNTCA9IGltYWdlTm9tOw0KCWltZy5zZXRBdHRyaWJ1 dGUoInNyYyIsImFkbWluL3dlYi8iK3VybCk7DQoJdmFyIHdpZHRocyA9IHdpZHRo U2l6ZSgpOw0KIAl3aWR0aHMgPSAod2lkdGhzICogMC41KSAtICg4NTggLyAyKTsN CglpZiAoIHdpZHRocyA8IDAgKSB7DQoJCXdpZHRocyA9IDEwOw0KCX0NCgkvLyBw b3NpY2lvbmVtIGVsIHRhZyBkaXYgcXVlIGNvbnRlIGxhIGltYXRnZSBhIG1vc3Ry YXINCglpZihlc0lFKXsNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rpdk1v c3RyYScpLnN0eWxlLnRvcCA9ICh0aGlzLnBvc3kpICsgInB4IjsNCgkJZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoJ2Rpdk1vc3RyYScpLnN0eWxlLmxlZnQgPSAodGhp cy5wb3N4ICsgd2lkdGhzKSArICJweCI7DQoJfSBlbHNlIHsgDQoJCWRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdkaXZNb3N0cmEnKS5zdHlsZS50b3AgPSAodGhpcy5w b3N5ICsgMzUpICsgInB4IjsNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rp dk1vc3RyYScpLnN0eWxlLmxlZnQgPSAodGhpcy5wb3N4ICsgd2lkdGhzIC0gMTAg KSArICJweCI7DQoJfQ0KIAlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2TW9z dHJhJykuc3R5bGUuZGlzcGxheSA9ICIiOw0KCS8vY3JyZWVtIGVsIHRhZyBwZXIg ZmVyIHF1ZSBlbCBwb2d1ZW0gZGVzcGxh52FyIHBlciBsYSBwYW50YWxsYQ0KCURy YWcuaW5pdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaGFuZGxlIiksZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoImRpdk1vc3RyYSIpKTsNCgkvL2ZlbSBxdWUgZXMg ZmFnaSBncmFuIGFtYiB1biBzZXQgdGltZQ0KCWFncmFuZGFySW1hdGdlKCk7DQoN Cg0KfQ0KDQovKioqDQoqCWFncmFuZGFySW1hdGdlIDogZmEgdW5hIHJlY3Vyc2l2 aXRhdCBwZXIgZmVyIGxhZWwgZGl2IGFsIHRhbWFueSBxdWUgZW5zY29udmluZ3Vp DQoqKioqLw0KIA0KDQpmdW5jdGlvbiBhZ3JhbmRhckltYXRnZSgpIHsNCglkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2TW9zdHJhJykuc3R5bGUud2lkdGggPSAo d2lkdGhETW9zdHJhICsgMTApICsgInB4IjsNCglkb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgnZGl2TW9zdHJhJykuc3R5bGUuaGVpZ2h0ID0gKGhlaWdodERNb3N0cmEg KyAxMCkgKyAicHgiOw0KCXdpZHRoRE1vc3RyYT0gKHdpZHRoRE1vc3RyYSArIDEw KTsNCgloZWlnaHRETW9zdHJhID0gKGhlaWdodERNb3N0cmEgKyAxMCk7DQoJdD1z ZXRUaW1lb3V0KCJhZ3JhbmRhckltYXRnZSgpIiwyNSk7DQoJaWYod2lkdGhETW9z dHJhID49IDQwMCkgew0KCQl3aWR0aERNb3N0cmEgPSA0MDA7DQoJCWhlaWdodERN b3N0cmEgPSA0NTA7DQoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZNb3N0 cmEnKS5zdHlsZS53aWR0aCA9ICg0MDApICsgInB4IjsNCgkJZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2Rpdk1vc3RyYScpLnN0eWxlLmhlaWdodCA9ICg0NTApICsg InB4IjsNCgkJY2xlYXJUaW1lb3V0KHQpOw0KCQlkb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgnZGl2SW1hdGdlJykuc3R5bGUuZGlzcGxheSA9ICIiOw0KCX0NCg0KfQ0K DQoNCi8qKioqDQoqIAl0YW5jYXJNb3N0cmE6IGZhIHF1ZSBzJ2FtYWd1aSBsYSBp bWF0Z2UgaSByZWRpbWVuc2lvbmEgZWwgZGl2DQoqDQoqKioqKiovDQpmdW5jdGlv biB0YW5jYXJNb3N0cmEoKXsNCiAJDQogICAgaWYoZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ2Rpdk1vc3RyYScpKXsNCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ2Rpdk1vc3RyYScpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAg ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZNb3N0cmEnKS5zdHlsZS53 aWR0aCA9ICIxNDVweCI7DQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdkaXZNb3N0cmEnKS5zdHlsZS5oZWlnaHQgPSAiMjAycHgiOyAgICANCiAgICB9 DQogICAgIA0KCXdpZHRoRE1vc3RyYSA9IDE0NTsNCgloZWlnaHRETW9zdHJhID0g MjAyOw0KCWlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZJbWF0Z2UnKSlk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2SW1hdGdlJykuc3R5bGUuZGlzcGxh eSA9ICJub25lIjsNCglpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2VN b3N0cmEnKSl7DQogICAgICAgIHZhciBpbWcgPSBkb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgnaW1hZ2VNb3N0cmEnKTsNCgkgICAgaW1nLnNldEF0dHJpYnV0ZSgiYWx0 IiwiIik7DQoJICAgIGltZy5zZXRBdHRyaWJ1dGUoInRpdGxlIiwiIik7DQoJICAg IGltZy5zZXRBdHRyaWJ1dGUoInNyYyIsIiIpOw0KICAgIH0NCn0NCg0KZnVuY3Rp b24gZ2V0TWVzKG9OdW0pew0KICAgIHRyeXsNCiAgICAgICAgDQogICAgICAgIG9O dW0gPSBwYXJzZUludChvTnVtLCAxMCkgLSAxOw0KICAgICAgICBpZiggb051bSA+ PSAwICYmIG9OdW0gPD0xMiAgKXsNCiAgICAgICAgICAgIG1lc29zID0gbmV3IEFy cmF5KCdFbmVybycsJ0ZlYnJlcm8nLCdNYXJ6bycsJ0FicmlsJywnTWF5bycsJ0p1 bmlvJywnSnVsaW8nLCdBZ29zdG8nLCdTZXB0aWVuYnJlJywnT2N0dWJyZScsJ05v dmllbWJyZScsJ0RpY2llbWJyZScpOyAgIA0KICAgICAgICAgICAgcmV0dXJuIG1l c29zW29OdW1dOw0KICAgICAgICB9DQogICAgICAgIGVsc2V7DQogICAgICAgICAg ICByZXR1cm4gIiINCiAgICAgICAgfQ0KICAgIH0gDQogICAgY2F0Y2goZSl7DQog ICAgICAgIHJldHVybiAiIg0KICAgIH0gICAgDQp9DQoNCmZ1bmN0aW9uIG9icmVE aXYoc3pJZCxzekxlZXIpew0KICAgIA0KICAgIGlmKGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKHN6SWQpKXsNCiAgICAgIGlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KHN6SWQpLnN0eWxlLmRpc3BsYXkgPT0gIm5vbmUiKXsgDQogICAgICAgICAgZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3pJZCkuc3R5bGUuZGlzcGxheSA9ICIiOw0K ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHN6TGVlcikuaW5uZXJI VE1MID0gIltDZXJyYXJdIjsNCiAgICAgICB9DQogICAgICAgZWxzZXsNCiAgICAg ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzeklkKS5zdHlsZS5kaXNwbGF5 ID0gIm5vbmUiOw0KICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHN6 TGVlcikuaW5uZXJIVE1MID0gIltsZWVyIG3hc10iOyAgICAgICANCiAgICAgICB9 ICAgIA0KICAgIH0NCn0NCmZ1bmN0aW9uIGdldEZlY2hhKG9GZWNoYSl7DQogICAg DQogICAgdHJ5eyANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBvRGF5ID0g b0ZlY2hhLnN1YnN0cmluZygwLDIpOw0KICAgICAgICBvRGF5ID0gcGFyc2VJbnQo b0RheSwgMTApOw0KICAgICAgICBpZihvRGF5ICE9ICdOYU4nICYmIG9EYXkgPiAw ICl7DQogICAgICAgICAgICBvTWVzID0gb0ZlY2hhLnN1YnN0cmluZygzLDUpOyAN CiAgICAgICAgICAgIG9NZXMgPSBnZXRNZXMob01lcyk7DQogICAgICAgICAgICBp Zih0cmltKG9NZXMpICE9ICIiKXsNCiAgICAgICAgICAgICAgICByZXR1cm4gb0Rh eSArICIgZGUgIiArIG9NZXMgOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAg ZWxzZXsNCiAgICAgICAgICAgICAgICByZXR1cm4gIiI7ICAgIA0KICAgICAgICAg ICAgfQ0KICAgICAgICB9DQogICAgICAgIGVsc2V7DQogICAgICAgICAgICByZXR1 cm4gIiI7ICAgIA0KICAgICAgICB9DQogICAgfSANCiAgICBjYXRjaChlKXsNCiAg ICAgICAgcmV0dXJuICIiOw0KICAgIH0gICAgICAgDQp9DQoNCmZ1bmN0aW9uIHdp ZHRoU2l6ZSgpIHsNCgkgIHZhciBteVdpZHRoID0gMCwgbXlIZWlnaHQgPSAwOw0K CSAgaWYoIHR5cGVvZiggd2luZG93LmlubmVyV2lkdGggKSA9PSAnbnVtYmVyJyAp IHsNCgkJLy9Ob24tSUUNCgkJbXlXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoOw0K CQlteUhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDsNCgkgIH0gZWxzZSBpZigg ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmICggZG9jdW1lbnQuZG9jdW1lbnRF bGVtZW50LmNsaWVudFdpZHRoIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5j bGllbnRIZWlnaHQgKSApIHsNCgkJLy9JRSA2KyBpbiAnc3RhbmRhcmRzIGNvbXBs aWFudCBtb2RlJw0KCQlteVdpZHRoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 LmNsaWVudFdpZHRoOw0KCQlteUhlaWdodCA9IGRvY3VtZW50LmRvY3VtZW50RWxl bWVudC5jbGllbnRIZWlnaHQ7DQoJICB9IGVsc2UgaWYoIGRvY3VtZW50LmJvZHkg JiYgKCBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIHx8IGRvY3VtZW50LmJvZHku Y2xpZW50SGVpZ2h0ICkgKSB7DQoJCS8vSUUgNCBjb21wYXRpYmxlDQoJCW15V2lk dGggPSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoOw0KCQlteUhlaWdodCA9IGRv Y3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0Ow0KCSAgfQ0KCSAgcmV0dXJuIG15V2lk dGg7DQp9DQoNCi8qZnVuY3Rpb24gZ2V0SW50ZXJuZXRFeHBsb3JlclZlcnNpb24o KQ0KLy8gUmV0dXJucyB0aGUgdmVyc2lvbiBvZiBJbnRlcm5ldCBFeHBsb3JlciBv ciBhIC0xDQovLyAoaW5kaWNhdGluZyB0aGUgdXNlIG9mIGFub3RoZXIgYnJvd3Nl cikuDQp7DQogIHZhciBydiA9IC0xOyAvLyBSZXR1cm4gdmFsdWUgYXNzdW1lcyBm YWlsdXJlLg0KICBpZiAobmF2aWdhdG9yLmFwcE5hbWUgPT0gJ01pY3Jvc29mdCBJ bnRlcm5ldCBFeHBsb3JlcicpDQogIHsNCiAgICB2YXIgdWEgPSBuYXZpZ2F0b3Iu dXNlckFnZW50Ow0KICAgIHZhciByZSAgPSBuZXcgUmVnRXhwKCJNU0lFIChbMC05 XXsxLH1bXC4wLTldezAsfSkiKTsNCiAgICBpZiAocmUuZXhlYyh1YSkgIT0gbnVs bCkNCiAgICAgIHJ2ID0gcGFyc2VGbG9hdCggUmVnRXhwLiQxICk7DQogIH0NCiAg cmV0dXJuIHJ2Ow0KfQ0KDQpmdW5jdGlvbiBjaGVja1ZlcnNpb24oKQ0Kew0KICB2 YXIgbXNnID0gIllvdSdyZSBub3QgdXNpbmcgSW50ZXJuZXQgRXhwbG9yZXIuIjsN CiAgdmFyIHZlciA9IGdldEludGVybmV0RXhwbG9yZXJWZXJzaW9uKCk7DQoNCiAg aWYgKCB2ZXIgPiAtMSApDQogIHsNCiAgICBpZiAoIHZlciA+IDYuMCApIA0KCQlj YW52aXNJRTYoKTsNCiAgfQ0KfQ0KDQpmdW5jdGlvbiBjYW52aXNJRTYoKSB7DQoJ ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5VGFnTmFtZQ0KDQp9Ki8NCg0KDQoNCndpbmRv dy50b3AudGFuY2FyTW9zdHJhKCk7DQoNCg0KDQoNCi8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqIA0KKiBOb206ICAgICAgICAgIGxvYWRVcmwo KQ0KKiBEZXNjcmlwY2lvOiAgIHBldGljafMgYWpheCBwZXIgY2FycmVnYXIgY29k aSBoYXRtbCBpIHNjcmlwcyBlbiB1biBkaXYgICAgICAgDQoqIEBQYXJhbTogICAg ICAgYWRkcmVzLS0+IHVybCBvbiB2b2xlbSBmZXIgbGEgcGV0aWNp8w0KICAgICAg ICAgICAgICAgIGxvY2FsLS0+IGlkIGRlbCBkaXYgZGUgZGVzdO0NCiAgICAgICAg ICAgICAgICBwYXJhbXMtLT4gYXJyYXkgbyBzdHJpbmcgYW1iIGxlcyB2YXJpYWJs ZXMgcXVlIHZvbGVtIG9mZXJpciBhbCBzZXJ2aWRvciAgDQogICAgICAgICAgICAg ICAgZnVuY3Rpb25BZnRlci0tPmZ1bmNp8yBhIGNhcnJlZ2FydW4gY29wIGZldGEg bCdhY2Npbw0KKiBAcmV0dXJuOiAgICAgIHJlcw0KKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLyANCmZ1bmN0aW9uIGxvYWRVcmwoYWRkcmVz LGxvY2FsLHBhcmFtcyxmdW5jdGlvbkFmdGVyKXsNCiAgICAkLmFqYXgoew0KICAg ICB0eXBlOiAicG9zdCIsDQogICAgIHVybDogYWRkcmVzICwNCiAgICAgZGF0YVR5 cGU6ICJ0ZXh0IiwNCiAgICAgZGF0YTogcGFyYW1zLA0KICAgICBjb21wbGV0ZTog ZnVuY3Rpb25BZnRlciwNCiAgICAgZXJyb3I6IGZ1bmN0aW9uKHJlcXVlc3QsZXJy b3IpIHsNCiAgICAgICAgICBpZihlcnJvciAhPSAiIikgew0KICAgICAgICAgICAk KCIjIitsb2NhbCkuaHRtbChyZXF1ZXN0LnJlc3BvbnNlVGV4dCk7DQogICAgICAg ICAgfQ0KICAgICAgfSwNCiAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcXVlc3Qp IHsNCiAgICAgICAgICAvL2FsZXJ0KHJlcXVlc3QpOw0KICAgICAgICAgICQoIiMi K2xvY2FsKS5odG1sKHJlcXVlc3QpOw0KICAgICAgfSAvLyBFbmQgc3VjY2Vzcw0K ICAgIH0pOw0KDQp9DQoNCg0KdmFyIGhpam9fcnV0YT0iIjsNCnZhciBoaWpvX3Rp dHVsbz0iIjsNCg0KZnVuY3Rpb24gYWdyZWdhUnV0YShhcnJheUlkLCBhcnJheVRp dHVsb3MsIHN6VGl0dWxvKXsNCiAgICBoaWpvX3RpdHVsbyA9IHN6VGl0dWxvOw0K ICAgIHZhciBzekh0bWwgPSAiIjsNCiAgICB2YXIgY2xhc3NlID0gbmV3IEFycmF5 KCk7DQogICAgY2xhc3NlWzBdID0gImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0 aWNhLCBzYW5zLXNlcmlmO3RleHQtYWxpZ246bGVmdDtmb250LXNpemU6IDExcHg7 Zm9udC13ZWlnaHQ6IGJvbGQ7cGFkZGluZy1ib3R0b206MjdweDtwYWRkaW5nLWxl ZnQ6NXB4O3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiBibGFjazsiOw0KICAg IGNsYXNzZVsxXSA9ICIgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNh bnMtc2VyaWY7Zm9udC1zaXplOiAxMXB4O2NvbG9yOiM4Nzg4ODk7Zm9udC13ZWln aHQ6IGJvbGQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7IjsgICAgDQogICAgY2xhc3Nl WzJdID0gImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlm O2ZvbnQtc2l6ZTogMTFweDtjb2xvcjojMzkzQTczO2ZvbnQtd2VpZ2h0OiBib2xk O3RleHQtZGVjb3JhdGlvbjpub25lOyI7DQogICAgY2xhc3NlWzNdID0gIiBmb250 LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtmb250LXNpemU6 IDExcHg7Y29sb3I6I0YxNjMzMTtmb250LXdlaWdodDogYm9sZDt0ZXh0LWRlY29y YXRpb246bm9uZTsiOw0KICAgIA0KICAgIGZvcihpID0gMTsgaSA8IGFycmF5SWQu bGVuZ3RoOyBpKyspew0KICAgICAgICBzekh0bWwgPSBzekh0bWwgKyAiPGEgaHJl Zj0nL2FkbWluL3dlYi8iICsgYXJyYXlJZFtpXSArICImcGxhbnRpbGxhPTMxJyI7 DQogICAgICAgIGlmKGkgPiAzKXsNCiAgICAgICAgICAgIHN6SHRtbCA9IHN6SHRt bCArICIgc3R5bGU9JyIgKyBjbGFzc2VbM10gKyAiJyB0YXJnZXQ9XCJtYWluZnJh bWVcIj4gIiArIGFycmF5VGl0dWxvc1tpXSArICIgPC9hPiI7DQogICAgICAgIH0N CiAgICAgICAgZWxzZXsNCiAgICAgICAgICAgIHN6SHRtbCA9IHN6SHRtbCArICIg c3R5bGU9JyIgKyBjbGFzc2VbaS0xXSArICInIHRhcmdldD1cIm1haW5mcmFtZVwi PiAiICsgYXJyYXlUaXR1bG9zW2ldICsiLzwvYT4iOw0KICAgICAgICB9DQogICAg fQ0KICAgIGlmKGkgPiAzKXsNCiAgICAgICAgc3pIdG1sID0gc3pIdG1sICsgIjxz cGFuICBzdHlsZT0nIiArIGNsYXNzZVszXSArICInID4iICsgc3pUaXR1bG8gKyAi PC9zcGFuPiI7DQogICAgfQ0KICAgIGVsc2V7DQogICAgICAgIHN6SHRtbCA9IHN6 SHRtbCArICI8c3BhbiAgc3R5bGU9JyIgKyBjbGFzc2VbaSAtIDFdICsgIicgPiIg KyBzelRpdHVsbyArICI8L3NwYW4+IjsNCiAgICB9DQogICAgaGlqb19ydXRhID0g c3pIdG1sOw0KfQ0KDQpmdW5jdGlvbiBhZ3JlZ2FDYWJlY2VyYUhpam8oKXsNCiAg ICBpZihoaWpvX3J1dGEgIT0gJycgJiYgaGlqb19ydXRhICE9ICcgJyAmJiBoaWpv X3RpdHVsbyAhPSAnJyAmJiBoaWpvX3J1dGEgIT0gJyAnICl7DQogICAgICAgIHZh ciBmcmFtZUJvZHkgPSAkKCcjbWFpbmZyYW1lJykuY29udGVudHMoKS5maW5kKCdi b2R5Jyk7DQogICAgICAgIGZyYW1lQm9keS5wcmVwZW5kKCc8dGFibGUgYm9yZGVy PSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSI1MDBw eCIgPjx0cj48dGQgIGlkPSJydXRhIiAgc3R5bGU9InBhZGRpbmctYm90dG9tOjI3 cHg7IHBhZGRpbmctbGVmdDoxcHgiID4nK2hpam9fcnV0YSsnPC90ZD48L3RyPicg DQogICAgICAgICAgICAgICAgKyAnPHRyPjx0ZCAgY2xhc3M9ImNhYmVjZXJhX2hp am9zIiBzdHlsZT0id2lkdGg6MTAwJTtmb250LXNpemU6IDIycHg7Y29sb3I6I0Yx NjMzMTsgIj4nK2hpam9fdGl0dWxvKyc8L3RkPjwvdHI+Jyk7DQogICAgfQ0KfQ0K ------------OBg9i9L0LVC3BilRJbEwsz Content-Disposition: inline; filename=dom-drag.js Content-Type: application/javascript; charset=iso-8859-1; name=dom-drag.js Content-Location: http://www.gs1es.org/js/dom-drag.js Content-Transfer-Encoding: Base64 LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCiAqIGRvbS1kcmFnLmpzCiAqIDA5LjI1LjIwMDEKICogd3d3LnlvdW5ncHVw Lm5ldAogKiBTY3JpcHQgZmVhdHVyZWQgb24gRHluYW1pYyBEcml2ZSAoaHR0cDov L3d3dy5keW5hbWljZHJpdmUuY29tKSAxMi4wOC4yMDA1CiAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAxMC4yOC4y MDAxIC0gZml4ZWQgbWlub3IgYnVnIHdoZXJlIGV2ZW50cwogKiBzb21ldGltZXMg ZmlyZWQgb2ZmIHRoZSBoYW5kbGUsIG5vdCB0aGUgcm9vdC4KICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKdmFyIERy YWcgPSB7CgoJb2JqIDogbnVsbCwKCglpbml0IDogZnVuY3Rpb24obywgb1Jvb3Qs IG1pblgsIG1heFgsIG1pblksIG1heFksIGJTd2FwSG9yelJlZiwgYlN3YXBWZXJ0 UmVmLCBmWE1hcHBlciwgZllNYXBwZXIpCgl7CgkJby5vbm1vdXNlZG93bgk9IERy YWcuc3RhcnQ7CgoJCW8uaG1vZGUJCQk9IGJTd2FwSG9yelJlZiA/IGZhbHNlIDog dHJ1ZSA7CgkJby52bW9kZQkJCT0gYlN3YXBWZXJ0UmVmID8gZmFsc2UgOiB0cnVl IDsKCgkJby5yb290ID0gb1Jvb3QgJiYgb1Jvb3QgIT0gbnVsbCA/IG9Sb290IDog byA7CgoJCWlmIChvLmhtb2RlICAmJiBpc05hTihwYXJzZUludChvLnJvb3Quc3R5 bGUubGVmdCAgKSkpIG8ucm9vdC5zdHlsZS5sZWZ0ICAgPSAiMHB4IjsKCQlpZiAo by52bW9kZSAgJiYgaXNOYU4ocGFyc2VJbnQoby5yb290LnN0eWxlLnRvcCAgICkp KSBvLnJvb3Quc3R5bGUudG9wICAgID0gIjBweCI7CgkJaWYgKCFvLmhtb2RlICYm IGlzTmFOKHBhcnNlSW50KG8ucm9vdC5zdHlsZS5yaWdodCApKSkgby5yb290LnN0 eWxlLnJpZ2h0ICA9ICIwcHgiOwoJCWlmICghby52bW9kZSAmJiBpc05hTihwYXJz ZUludChvLnJvb3Quc3R5bGUuYm90dG9tKSkpIG8ucm9vdC5zdHlsZS5ib3R0b20g PSAiMHB4IjsKCgkJby5taW5YCT0gdHlwZW9mIG1pblggIT0gJ3VuZGVmaW5lZCcg PyBtaW5YIDogbnVsbDsKCQlvLm1pblkJPSB0eXBlb2YgbWluWSAhPSAndW5kZWZp bmVkJyA/IG1pblkgOiBudWxsOwoJCW8ubWF4WAk9IHR5cGVvZiBtYXhYICE9ICd1 bmRlZmluZWQnID8gbWF4WCA6IG51bGw7CgkJby5tYXhZCT0gdHlwZW9mIG1heFkg IT0gJ3VuZGVmaW5lZCcgPyBtYXhZIDogbnVsbDsKCgkJby54TWFwcGVyID0gZlhN YXBwZXIgPyBmWE1hcHBlciA6IG51bGw7CgkJby55TWFwcGVyID0gZllNYXBwZXIg PyBmWU1hcHBlciA6IG51bGw7CgoJCW8ucm9vdC5vbkRyYWdTdGFydAk9IG5ldyBG dW5jdGlvbigpOwoJCW8ucm9vdC5vbkRyYWdFbmQJPSBuZXcgRnVuY3Rpb24oKTsK CQlvLnJvb3Qub25EcmFnCQk9IG5ldyBGdW5jdGlvbigpOwoJfSwKCglzdGFydCA6 IGZ1bmN0aW9uKGUpCgl7CgkJdmFyIG8gPSBEcmFnLm9iaiA9IHRoaXM7CgkJZSA9 IERyYWcuZml4RShlKTsKCQl2YXIgeSA9IHBhcnNlSW50KG8udm1vZGUgPyBvLnJv b3Quc3R5bGUudG9wICA6IG8ucm9vdC5zdHlsZS5ib3R0b20pOwoJCXZhciB4ID0g cGFyc2VJbnQoby5obW9kZSA/IG8ucm9vdC5zdHlsZS5sZWZ0IDogby5yb290LnN0 eWxlLnJpZ2h0ICk7CgkJby5yb290Lm9uRHJhZ1N0YXJ0KHgsIHkpOwoKCQlvLmxh c3RNb3VzZVgJPSBlLmNsaWVudFg7CgkJby5sYXN0TW91c2VZCT0gZS5jbGllbnRZ OwoKCQlpZiAoby5obW9kZSkgewoJCQlpZiAoby5taW5YICE9IG51bGwpCW8ubWlu TW91c2VYCT0gZS5jbGllbnRYIC0geCArIG8ubWluWDsKCQkJaWYgKG8ubWF4WCAh PSBudWxsKQlvLm1heE1vdXNlWAk9IG8ubWluTW91c2VYICsgby5tYXhYIC0gby5t aW5YOwoJCX0gZWxzZSB7CgkJCWlmIChvLm1pblggIT0gbnVsbCkgby5tYXhNb3Vz ZVggPSAtby5taW5YICsgZS5jbGllbnRYICsgeDsKCQkJaWYgKG8ubWF4WCAhPSBu dWxsKSBvLm1pbk1vdXNlWCA9IC1vLm1heFggKyBlLmNsaWVudFggKyB4OwoJCX0K CgkJaWYgKG8udm1vZGUpIHsKCQkJaWYgKG8ubWluWSAhPSBudWxsKQlvLm1pbk1v dXNlWQk9IGUuY2xpZW50WSAtIHkgKyBvLm1pblk7CgkJCWlmIChvLm1heFkgIT0g bnVsbCkJby5tYXhNb3VzZVkJPSBvLm1pbk1vdXNlWSArIG8ubWF4WSAtIG8ubWlu WTsKCQl9IGVsc2UgewoJCQlpZiAoby5taW5ZICE9IG51bGwpIG8ubWF4TW91c2VZ ID0gLW8ubWluWSArIGUuY2xpZW50WSArIHk7CgkJCWlmIChvLm1heFkgIT0gbnVs bCkgby5taW5Nb3VzZVkgPSAtby5tYXhZICsgZS5jbGllbnRZICsgeTsKCQl9CgoJ CWRvY3VtZW50Lm9ubW91c2Vtb3ZlCT0gRHJhZy5kcmFnOwoJCWRvY3VtZW50Lm9u bW91c2V1cAkJPSBEcmFnLmVuZDsKCgkJcmV0dXJuIGZhbHNlOwoJfSwKCglkcmFn IDogZnVuY3Rpb24oZSkKCXsKCQllID0gRHJhZy5maXhFKGUpOwoJCXZhciBvID0g RHJhZy5vYmo7CgoJCXZhciBleQk9IGUuY2xpZW50WTsKCQl2YXIgZXgJPSBlLmNs aWVudFg7CgkJdmFyIHkgPSBwYXJzZUludChvLnZtb2RlID8gby5yb290LnN0eWxl LnRvcCAgOiBvLnJvb3Quc3R5bGUuYm90dG9tKTsKCQl2YXIgeCA9IHBhcnNlSW50 KG8uaG1vZGUgPyBvLnJvb3Quc3R5bGUubGVmdCA6IG8ucm9vdC5zdHlsZS5yaWdo dCApOwoJCXZhciBueCwgbnk7CgoJCWlmIChvLm1pblggIT0gbnVsbCkgZXggPSBv Lmhtb2RlID8gTWF0aC5tYXgoZXgsIG8ubWluTW91c2VYKSA6IE1hdGgubWluKGV4 LCBvLm1heE1vdXNlWCk7CgkJaWYgKG8ubWF4WCAhPSBudWxsKSBleCA9IG8uaG1v ZGUgPyBNYXRoLm1pbihleCwgby5tYXhNb3VzZVgpIDogTWF0aC5tYXgoZXgsIG8u bWluTW91c2VYKTsKCQlpZiAoby5taW5ZICE9IG51bGwpIGV5ID0gby52bW9kZSA/ IE1hdGgubWF4KGV5LCBvLm1pbk1vdXNlWSkgOiBNYXRoLm1pbihleSwgby5tYXhN b3VzZVkpOwoJCWlmIChvLm1heFkgIT0gbnVsbCkgZXkgPSBvLnZtb2RlID8gTWF0 aC5taW4oZXksIG8ubWF4TW91c2VZKSA6IE1hdGgubWF4KGV5LCBvLm1pbk1vdXNl WSk7CgoJCW54ID0geCArICgoZXggLSBvLmxhc3RNb3VzZVgpICogKG8uaG1vZGUg PyAxIDogLTEpKTsKCQlueSA9IHkgKyAoKGV5IC0gby5sYXN0TW91c2VZKSAqIChv LnZtb2RlID8gMSA6IC0xKSk7CgoJCWlmIChvLnhNYXBwZXIpCQlueCA9IG8ueE1h cHBlcih5KQoJCWVsc2UgaWYgKG8ueU1hcHBlcikJbnkgPSBvLnlNYXBwZXIoeCkK CgkJRHJhZy5vYmoucm9vdC5zdHlsZVtvLmhtb2RlID8gImxlZnQiIDogInJpZ2h0 Il0gPSBueCArICJweCI7CgkJRHJhZy5vYmoucm9vdC5zdHlsZVtvLnZtb2RlID8g InRvcCIgOiAiYm90dG9tIl0gPSBueSArICJweCI7CgkJRHJhZy5vYmoubGFzdE1v dXNlWAk9IGV4OwoJCURyYWcub2JqLmxhc3RNb3VzZVkJPSBleTsKCgkJRHJhZy5v Ymoucm9vdC5vbkRyYWcobngsIG55KTsKCQlyZXR1cm4gZmFsc2U7Cgl9LAoKCWVu ZCA6IGZ1bmN0aW9uKCkKCXsKCQlkb2N1bWVudC5vbm1vdXNlbW92ZSA9IG51bGw7 CgkJZG9jdW1lbnQub25tb3VzZXVwICAgPSBudWxsOwoJCURyYWcub2JqLnJvb3Qu b25EcmFnRW5kKAlwYXJzZUludChEcmFnLm9iai5yb290LnN0eWxlW0RyYWcub2Jq Lmhtb2RlID8gImxlZnQiIDogInJpZ2h0Il0pLCAKCQkJCQkJCQkJcGFyc2VJbnQo RHJhZy5vYmoucm9vdC5zdHlsZVtEcmFnLm9iai52bW9kZSA/ICJ0b3AiIDogImJv dHRvbSJdKSk7CgkJRHJhZy5vYmogPSBudWxsOwoJfSwKCglmaXhFIDogZnVuY3Rp b24oZSkKCXsKCQlpZiAodHlwZW9mIGUgPT0gJ3VuZGVmaW5lZCcpIGUgPSB3aW5k b3cuZXZlbnQ7CgkJaWYgKHR5cGVvZiBlLmxheWVyWCA9PSAndW5kZWZpbmVkJykg ZS5sYXllclggPSBlLm9mZnNldFg7CgkJaWYgKHR5cGVvZiBlLmxheWVyWSA9PSAn dW5kZWZpbmVkJykgZS5sYXllclkgPSBlLm9mZnNldFk7CgkJcmV0dXJuIGU7Cgl9 Cn07 ------------OBg9i9L0LVC3BilRJbEwsz Content-Disposition: inline; filename=jquery-1.3.2.min.js Content-Type: application/javascript; charset=iso-8859-1; name=jquery-1.3.2.min.js Content-Location: http://www.gs1es.org/js/jquery-1.3.2.min.js Content-Transfer-Encoding: Base64 LyoKICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2MS4zLjIKICogaHR0cDov L2pxdWVyeS5jb20vCiAqCiAqIENvcHlyaWdodCAoYykgMjAwOSBKb2huIFJlc2ln CiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2Vz LgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL0xpY2Vuc2UKICoKICogRGF0ZTog MjAwOS0wMi0xOSAxNzozNDoyMSAtMDUwMCAoVGh1LCAxOSBGZWIgMjAwOSkKICog UmV2aXNpb246IDYyNDYKICovCihmdW5jdGlvbigpe3ZhciBsPXRoaXMsZyx5PWwu alF1ZXJ5LHA9bC4kLG89bC5qUXVlcnk9bC4kPWZ1bmN0aW9uKEUsRil7cmV0dXJu IG5ldyBvLmZuLmluaXQoRSxGKX0sRD0vXltePF0qKDwoLnxccykrPilbXj5dKiR8 XiMoW1x3LV0rKSQvLGY9L14uW146I1xbXC4sXSokLztvLmZuPW8ucHJvdG90eXBl PXtpbml0OmZ1bmN0aW9uKEUsSCl7RT1FfHxkb2N1bWVudDtpZihFLm5vZGVUeXBl KXt0aGlzWzBdPUU7dGhpcy5sZW5ndGg9MTt0aGlzLmNvbnRleHQ9RTtyZXR1cm4g dGhpc31pZih0eXBlb2YgRT09PSJzdHJpbmciKXt2YXIgRz1ELmV4ZWMoRSk7aWYo RyYmKEdbMV18fCFIKSl7aWYoR1sxXSl7RT1vLmNsZWFuKFtHWzFdXSxIKX1lbHNl e3ZhciBJPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKEdbM10pO2lmKEkmJkkuaWQh PUdbM10pe3JldHVybiBvKCkuZmluZChFKX12YXIgRj1vKEl8fFtdKTtGLmNvbnRl eHQ9ZG9jdW1lbnQ7Ri5zZWxlY3Rvcj1FO3JldHVybiBGfX1lbHNle3JldHVybiBv KEgpLmZpbmQoRSl9fWVsc2V7aWYoby5pc0Z1bmN0aW9uKEUpKXtyZXR1cm4gbyhk b2N1bWVudCkucmVhZHkoRSl9fWlmKEUuc2VsZWN0b3ImJkUuY29udGV4dCl7dGhp cy5zZWxlY3Rvcj1FLnNlbGVjdG9yO3RoaXMuY29udGV4dD1FLmNvbnRleHR9cmV0 dXJuIHRoaXMuc2V0QXJyYXkoby5pc0FycmF5KEUpP0U6by5tYWtlQXJyYXkoRSkp fSxzZWxlY3RvcjoiIixqcXVlcnk6IjEuMy4yIixzaXplOmZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMubGVuZ3RofSxnZXQ6ZnVuY3Rpb24oRSl7cmV0dXJuIEU9PT1nP0Fy cmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMpOnRoaXNbRV19LHB1c2hTdGFj azpmdW5jdGlvbihGLEgsRSl7dmFyIEc9byhGKTtHLnByZXZPYmplY3Q9dGhpcztH LmNvbnRleHQ9dGhpcy5jb250ZXh0O2lmKEg9PT0iZmluZCIpe0cuc2VsZWN0b3I9 dGhpcy5zZWxlY3RvcisodGhpcy5zZWxlY3Rvcj8iICI6IiIpK0V9ZWxzZXtpZihI KXtHLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrIi4iK0grIigiK0UrIikifX1yZXR1 cm4gR30sc2V0QXJyYXk6ZnVuY3Rpb24oRSl7dGhpcy5sZW5ndGg9MDtBcnJheS5w cm90b3R5cGUucHVzaC5hcHBseSh0aGlzLEUpO3JldHVybiB0aGlzfSxlYWNoOmZ1 bmN0aW9uKEYsRSl7cmV0dXJuIG8uZWFjaCh0aGlzLEYsRSl9LGluZGV4OmZ1bmN0 aW9uKEUpe3JldHVybiBvLmluQXJyYXkoRSYmRS5qcXVlcnk/RVswXTpFLHRoaXMp fSxhdHRyOmZ1bmN0aW9uKEYsSCxHKXt2YXIgRT1GO2lmKHR5cGVvZiBGPT09InN0 cmluZyIpe2lmKEg9PT1nKXtyZXR1cm4gdGhpc1swXSYmb1tHfHwiYXR0ciJdKHRo aXNbMF0sRil9ZWxzZXtFPXt9O0VbRl09SH19cmV0dXJuIHRoaXMuZWFjaChmdW5j dGlvbihJKXtmb3IoRiBpbiBFKXtvLmF0dHIoRz90aGlzLnN0eWxlOnRoaXMsRixv LnByb3AodGhpcyxFW0ZdLEcsSSxGKSl9fSl9LGNzczpmdW5jdGlvbihFLEYpe2lm KChFPT0id2lkdGgifHxFPT0iaGVpZ2h0IikmJnBhcnNlRmxvYXQoRik8MCl7Rj1n fXJldHVybiB0aGlzLmF0dHIoRSxGLCJjdXJDU1MiKX0sdGV4dDpmdW5jdGlvbihG KXtpZih0eXBlb2YgRiE9PSJvYmplY3QiJiZGIT1udWxsKXtyZXR1cm4gdGhpcy5l bXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxk b2N1bWVudCkuY3JlYXRlVGV4dE5vZGUoRikpfXZhciBFPSIiO28uZWFjaChGfHx0 aGlzLGZ1bmN0aW9uKCl7by5lYWNoKHRoaXMuY2hpbGROb2RlcyxmdW5jdGlvbigp e2lmKHRoaXMubm9kZVR5cGUhPTgpe0UrPXRoaXMubm9kZVR5cGUhPTE/dGhpcy5u b2RlVmFsdWU6by5mbi50ZXh0KFt0aGlzXSl9fSl9KTtyZXR1cm4gRX0sd3JhcEFs bDpmdW5jdGlvbihFKXtpZih0aGlzWzBdKXt2YXIgRj1vKEUsdGhpc1swXS5vd25l ckRvY3VtZW50KS5jbG9uZSgpO2lmKHRoaXNbMF0ucGFyZW50Tm9kZSl7Ri5pbnNl cnRCZWZvcmUodGhpc1swXSl9Ri5tYXAoZnVuY3Rpb24oKXt2YXIgRz10aGlzO3do aWxlKEcuZmlyc3RDaGlsZCl7Rz1HLmZpcnN0Q2hpbGR9cmV0dXJuIEd9KS5hcHBl bmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihFKXtyZXR1 cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7byh0aGlzKS5jb250ZW50cygpLndyYXBB bGwoRSl9KX0sd3JhcDpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0 aW9uKCl7byh0aGlzKS53cmFwQWxsKEUpfSl9LGFwcGVuZDpmdW5jdGlvbigpe3Jl dHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyx0cnVlLGZ1bmN0aW9uKEUpe2lm KHRoaXMubm9kZVR5cGU9PTEpe3RoaXMuYXBwZW5kQ2hpbGQoRSl9fSl9LHByZXBl bmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsdHJ1 ZSxmdW5jdGlvbihFKXtpZih0aGlzLm5vZGVUeXBlPT0xKXt0aGlzLmluc2VydEJl Zm9yZShFLHRoaXMuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3Jl dHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmYWxzZSxmdW5jdGlvbihFKXt0 aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKEUsdGhpcyl9KX0sYWZ0ZXI6ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZmFsc2UsZnVu Y3Rpb24oRSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShFLHRoaXMubmV4 dFNpYmxpbmcpfSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmpl Y3R8fG8oW10pfSxwdXNoOltdLnB1c2gsc29ydDpbXS5zb3J0LHNwbGljZTpbXS5z cGxpY2UsZmluZDpmdW5jdGlvbihFKXtpZih0aGlzLmxlbmd0aD09PTEpe3ZhciBG PXRoaXMucHVzaFN0YWNrKFtdLCJmaW5kIixFKTtGLmxlbmd0aD0wO28uZmluZChF LHRoaXNbMF0sRik7cmV0dXJuIEZ9ZWxzZXtyZXR1cm4gdGhpcy5wdXNoU3RhY2so by51bmlxdWUoby5tYXAodGhpcyxmdW5jdGlvbihHKXtyZXR1cm4gby5maW5kKEUs Ryl9KSksImZpbmQiLEUpfX0sY2xvbmU6ZnVuY3Rpb24oRyl7dmFyIEU9dGhpcy5t YXAoZnVuY3Rpb24oKXtpZighby5zdXBwb3J0Lm5vQ2xvbmVFdmVudCYmIW8uaXNY TUxEb2ModGhpcykpe3ZhciBJPXRoaXMub3V0ZXJIVE1MO2lmKCFJKXt2YXIgSj10 aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Si5hcHBlbmRD aGlsZCh0aGlzLmNsb25lTm9kZSh0cnVlKSk7ST1KLmlubmVySFRNTH1yZXR1cm4g by5jbGVhbihbSS5yZXBsYWNlKC8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2cs IiIpLnJlcGxhY2UoL15ccyovLCIiKV0pWzBdfWVsc2V7cmV0dXJuIHRoaXMuY2xv bmVOb2RlKHRydWUpfX0pO2lmKEc9PT10cnVlKXt2YXIgSD10aGlzLmZpbmQoIioi KS5hbmRTZWxmKCksRj0wO0UuZmluZCgiKiIpLmFuZFNlbGYoKS5lYWNoKGZ1bmN0 aW9uKCl7aWYodGhpcy5ub2RlTmFtZSE9PUhbRl0ubm9kZU5hbWUpe3JldHVybn12 YXIgST1vLmRhdGEoSFtGXSwiZXZlbnRzIik7Zm9yKHZhciBLIGluIEkpe2Zvcih2 YXIgSiBpbiBJW0tdKXtvLmV2ZW50LmFkZCh0aGlzLEssSVtLXVtKXSxJW0tdW0pd LmRhdGEpfX1GKyt9KX1yZXR1cm4gRX0sZmlsdGVyOmZ1bmN0aW9uKEUpe3JldHVy biB0aGlzLnB1c2hTdGFjayhvLmlzRnVuY3Rpb24oRSkmJm8uZ3JlcCh0aGlzLGZ1 bmN0aW9uKEcsRil7cmV0dXJuIEUuY2FsbChHLEYpfSl8fG8ubXVsdGlGaWx0ZXIo RSxvLmdyZXAodGhpcyxmdW5jdGlvbihGKXtyZXR1cm4gRi5ub2RlVHlwZT09PTF9 KSksImZpbHRlciIsRSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oRSl7dmFyIEc9by5leHBy Lm1hdGNoLlBPUy50ZXN0KEUpP28oRSk6bnVsbCxGPTA7cmV0dXJuIHRoaXMubWFw KGZ1bmN0aW9uKCl7dmFyIEg9dGhpczt3aGlsZShIJiZILm93bmVyRG9jdW1lbnQp e2lmKEc/Ry5pbmRleChIKT4tMTpvKEgpLmlzKEUpKXtvLmRhdGEoSCwiY2xvc2Vz dCIsRik7cmV0dXJuIEh9SD1ILnBhcmVudE5vZGU7RisrfX0pfSxub3Q6ZnVuY3Rp b24oRSl7aWYodHlwZW9mIEU9PT0ic3RyaW5nIil7aWYoZi50ZXN0KEUpKXtyZXR1 cm4gdGhpcy5wdXNoU3RhY2soby5tdWx0aUZpbHRlcihFLHRoaXMsdHJ1ZSksIm5v dCIsRSl9ZWxzZXtFPW8ubXVsdGlGaWx0ZXIoRSx0aGlzKX19dmFyIEY9RS5sZW5n dGgmJkVbRS5sZW5ndGgtMV0hPT1nJiYhRS5ub2RlVHlwZTtyZXR1cm4gdGhpcy5m aWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gRj9vLmluQXJyYXkodGhpcyxFKTwwOnRo aXMhPUV9KX0sYWRkOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhv LnVuaXF1ZShvLm1lcmdlKHRoaXMuZ2V0KCksdHlwZW9mIEU9PT0ic3RyaW5nIj9v KEUpOm8ubWFrZUFycmF5KEUpKSkpfSxpczpmdW5jdGlvbihFKXtyZXR1cm4gISFF JiZvLm11bHRpRmlsdGVyKEUsdGhpcykubGVuZ3RoPjB9LGhhc0NsYXNzOmZ1bmN0 aW9uKEUpe3JldHVybiAhIUUmJnRoaXMuaXMoIi4iK0UpfSx2YWw6ZnVuY3Rpb24o Syl7aWYoSz09PWcpe3ZhciBFPXRoaXNbMF07aWYoRSl7aWYoby5ub2RlTmFtZShF LCJvcHRpb24iKSl7cmV0dXJuKEUuYXR0cmlidXRlcy52YWx1ZXx8e30pLnNwZWNp ZmllZD9FLnZhbHVlOkUudGV4dH1pZihvLm5vZGVOYW1lKEUsInNlbGVjdCIpKXt2 YXIgST1FLnNlbGVjdGVkSW5kZXgsTD1bXSxNPUUub3B0aW9ucyxIPUUudHlwZT09 InNlbGVjdC1vbmUiO2lmKEk8MCl7cmV0dXJuIG51bGx9Zm9yKHZhciBGPUg/STow LEo9SD9JKzE6TS5sZW5ndGg7RjxKO0YrKyl7dmFyIEc9TVtGXTtpZihHLnNlbGVj dGVkKXtLPW8oRykudmFsKCk7aWYoSCl7cmV0dXJuIEt9TC5wdXNoKEspfX1yZXR1 cm4gTH1yZXR1cm4oRS52YWx1ZXx8IiIpLnJlcGxhY2UoL1xyL2csIiIpfXJldHVy biBnfWlmKHR5cGVvZiBLPT09Im51bWJlciIpe0srPSIifXJldHVybiB0aGlzLmVh Y2goZnVuY3Rpb24oKXtpZih0aGlzLm5vZGVUeXBlIT0xKXtyZXR1cm59aWYoby5p c0FycmF5KEspJiYvcmFkaW98Y2hlY2tib3gvLnRlc3QodGhpcy50eXBlKSl7dGhp cy5jaGVja2VkPShvLmluQXJyYXkodGhpcy52YWx1ZSxLKT49MHx8by5pbkFycmF5 KHRoaXMubmFtZSxLKT49MCl9ZWxzZXtpZihvLm5vZGVOYW1lKHRoaXMsInNlbGVj dCIpKXt2YXIgTj1vLm1ha2VBcnJheShLKTtvKCJvcHRpb24iLHRoaXMpLmVhY2go ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkPShvLmluQXJyYXkodGhpcy52YWx1ZSxO KT49MHx8by5pbkFycmF5KHRoaXMudGV4dCxOKT49MCl9KTtpZighTi5sZW5ndGgp e3RoaXMuc2VsZWN0ZWRJbmRleD0tMX19ZWxzZXt0aGlzLnZhbHVlPUt9fX0pfSxo dG1sOmZ1bmN0aW9uKEUpe3JldHVybiBFPT09Zz8odGhpc1swXT90aGlzWzBdLmlu bmVySFRNTC5yZXBsYWNlKC8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2csIiIp Om51bGwpOnRoaXMuZW1wdHkoKS5hcHBlbmQoRSl9LHJlcGxhY2VXaXRoOmZ1bmN0 aW9uKEUpe3JldHVybiB0aGlzLmFmdGVyKEUpLnJlbW92ZSgpfSxlcTpmdW5jdGlv bihFKXtyZXR1cm4gdGhpcy5zbGljZShFLCtFKzEpfSxzbGljZTpmdW5jdGlvbigp e3JldHVybiB0aGlzLnB1c2hTdGFjayhBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBw bHkodGhpcyxhcmd1bWVudHMpLCJzbGljZSIsQXJyYXkucHJvdG90eXBlLnNsaWNl LmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikpfSxtYXA6ZnVuY3Rpb24oRSl7cmV0 dXJuIHRoaXMucHVzaFN0YWNrKG8ubWFwKHRoaXMsZnVuY3Rpb24oRyxGKXtyZXR1 cm4gRS5jYWxsKEcsRixHKX0pKX0sYW5kU2VsZjpmdW5jdGlvbigpe3JldHVybiB0 aGlzLmFkZCh0aGlzLnByZXZPYmplY3QpfSxkb21NYW5pcDpmdW5jdGlvbihKLE0s TCl7aWYodGhpc1swXSl7dmFyIEk9KHRoaXNbMF0ub3duZXJEb2N1bWVudHx8dGhp c1swXSkuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLEY9by5jbGVhbihKLCh0aGlz WzBdLm93bmVyRG9jdW1lbnR8fHRoaXNbMF0pLEkpLEg9SS5maXJzdENoaWxkO2lm KEgpe2Zvcih2YXIgRz0wLEU9dGhpcy5sZW5ndGg7RzxFO0crKyl7TC5jYWxsKEso dGhpc1tHXSxIKSx0aGlzLmxlbmd0aD4xfHxHPjA/SS5jbG9uZU5vZGUodHJ1ZSk6 SSl9fWlmKEYpe28uZWFjaChGLHopfX1yZXR1cm4gdGhpcztmdW5jdGlvbiBLKE4s Tyl7cmV0dXJuIE0mJm8ubm9kZU5hbWUoTiwidGFibGUiKSYmby5ub2RlTmFtZShP LCJ0ciIpPyhOLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdfHxOLmFw cGVuZENoaWxkKE4ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIp KSk6Tn19fTtvLmZuLmluaXQucHJvdG90eXBlPW8uZm47ZnVuY3Rpb24geihFLEYp e2lmKEYuc3JjKXtvLmFqYXgoe3VybDpGLnNyYyxhc3luYzpmYWxzZSxkYXRhVHlw ZToic2NyaXB0In0pfWVsc2V7by5nbG9iYWxFdmFsKEYudGV4dHx8Ri50ZXh0Q29u dGVudHx8Ri5pbm5lckhUTUx8fCIiKX1pZihGLnBhcmVudE5vZGUpe0YucGFyZW50 Tm9kZS5yZW1vdmVDaGlsZChGKX19ZnVuY3Rpb24gZSgpe3JldHVybiArbmV3IERh dGV9by5leHRlbmQ9by5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgSj1hcmd1bWVu dHNbMF18fHt9LEg9MSxJPWFyZ3VtZW50cy5sZW5ndGgsRT1mYWxzZSxHO2lmKHR5 cGVvZiBKPT09ImJvb2xlYW4iKXtFPUo7Sj1hcmd1bWVudHNbMV18fHt9O0g9Mn1p Zih0eXBlb2YgSiE9PSJvYmplY3QiJiYhby5pc0Z1bmN0aW9uKEopKXtKPXt9fWlm KEk9PUgpe0o9dGhpczstLUh9Zm9yKDtIPEk7SCsrKXtpZigoRz1hcmd1bWVudHNb SF0pIT1udWxsKXtmb3IodmFyIEYgaW4gRyl7dmFyIEs9SltGXSxMPUdbRl07aWYo Sj09PUwpe2NvbnRpbnVlfWlmKEUmJkwmJnR5cGVvZiBMPT09Im9iamVjdCImJiFM Lm5vZGVUeXBlKXtKW0ZdPW8uZXh0ZW5kKEUsS3x8KEwubGVuZ3RoIT1udWxsP1td Ont9KSxMKX1lbHNle2lmKEwhPT1nKXtKW0ZdPUx9fX19fXJldHVybiBKfTt2YXIg Yj0vei0/aW5kZXh8Zm9udC0/d2VpZ2h0fG9wYWNpdHl8em9vbXxsaW5lLT9oZWln aHQvaSxxPWRvY3VtZW50LmRlZmF1bHRWaWV3fHx7fSxzPU9iamVjdC5wcm90b3R5 cGUudG9TdHJpbmc7by5leHRlbmQoe25vQ29uZmxpY3Q6ZnVuY3Rpb24oRSl7bC4k PXA7aWYoRSl7bC5qUXVlcnk9eX1yZXR1cm4gb30saXNGdW5jdGlvbjpmdW5jdGlv bihFKXtyZXR1cm4gcy5jYWxsKEUpPT09IltvYmplY3QgRnVuY3Rpb25dIn0saXNB cnJheTpmdW5jdGlvbihFKXtyZXR1cm4gcy5jYWxsKEUpPT09IltvYmplY3QgQXJy YXldIn0saXNYTUxEb2M6ZnVuY3Rpb24oRSl7cmV0dXJuIEUubm9kZVR5cGU9PT05 JiZFLmRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSE9PSJIVE1MInx8ISFFLm93bmVy RG9jdW1lbnQmJm8uaXNYTUxEb2MoRS5vd25lckRvY3VtZW50KX0sZ2xvYmFsRXZh bDpmdW5jdGlvbihHKXtpZihHJiYvXFMvLnRlc3QoRykpe3ZhciBGPWRvY3VtZW50 LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGRvY3VtZW50LmRvY3Vt ZW50RWxlbWVudCxFPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO0Uu dHlwZT0idGV4dC9qYXZhc2NyaXB0IjtpZihvLnN1cHBvcnQuc2NyaXB0RXZhbCl7 RS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShHKSl9ZWxzZXtF LnRleHQ9R31GLmluc2VydEJlZm9yZShFLEYuZmlyc3RDaGlsZCk7Ri5yZW1vdmVD aGlsZChFKX19LG5vZGVOYW1lOmZ1bmN0aW9uKEYsRSl7cmV0dXJuIEYubm9kZU5h bWUmJkYubm9kZU5hbWUudG9VcHBlckNhc2UoKT09RS50b1VwcGVyQ2FzZSgpfSxl YWNoOmZ1bmN0aW9uKEcsSyxGKXt2YXIgRSxIPTAsST1HLmxlbmd0aDtpZihGKXtp ZihJPT09Zyl7Zm9yKEUgaW4gRyl7aWYoSy5hcHBseShHW0VdLEYpPT09ZmFsc2Up e2JyZWFrfX19ZWxzZXtmb3IoO0g8STspe2lmKEsuYXBwbHkoR1tIKytdLEYpPT09 ZmFsc2Upe2JyZWFrfX19fWVsc2V7aWYoST09PWcpe2ZvcihFIGluIEcpe2lmKEsu Y2FsbChHW0VdLEUsR1tFXSk9PT1mYWxzZSl7YnJlYWt9fX1lbHNle2Zvcih2YXIg Sj1HWzBdO0g8SSYmSy5jYWxsKEosSCxKKSE9PWZhbHNlO0o9R1srK0hdKXt9fX1y ZXR1cm4gR30scHJvcDpmdW5jdGlvbihILEksRyxGLEUpe2lmKG8uaXNGdW5jdGlv bihJKSl7ST1JLmNhbGwoSCxGKX1yZXR1cm4gdHlwZW9mIEk9PT0ibnVtYmVyIiYm Rz09ImN1ckNTUyImJiFiLnRlc3QoRSk/SSsicHgiOkl9LGNsYXNzTmFtZTp7YWRk OmZ1bmN0aW9uKEUsRil7by5lYWNoKChGfHwiIikuc3BsaXQoL1xzKy8pLGZ1bmN0 aW9uKEcsSCl7aWYoRS5ub2RlVHlwZT09MSYmIW8uY2xhc3NOYW1lLmhhcyhFLmNs YXNzTmFtZSxIKSl7RS5jbGFzc05hbWUrPShFLmNsYXNzTmFtZT8iICI6IiIpK0h9 fSl9LHJlbW92ZTpmdW5jdGlvbihFLEYpe2lmKEUubm9kZVR5cGU9PTEpe0UuY2xh c3NOYW1lPUYhPT1nP28uZ3JlcChFLmNsYXNzTmFtZS5zcGxpdCgvXHMrLyksZnVu Y3Rpb24oRyl7cmV0dXJuICFvLmNsYXNzTmFtZS5oYXMoRixHKX0pLmpvaW4oIiAi KToiIn19LGhhczpmdW5jdGlvbihGLEUpe3JldHVybiBGJiZvLmluQXJyYXkoRSwo Ri5jbGFzc05hbWV8fEYpLnRvU3RyaW5nKCkuc3BsaXQoL1xzKy8pKT4tMX19LHN3 YXA6ZnVuY3Rpb24oSCxHLEkpe3ZhciBFPXt9O2Zvcih2YXIgRiBpbiBHKXtFW0Zd PUguc3R5bGVbRl07SC5zdHlsZVtGXT1HW0ZdfUkuY2FsbChIKTtmb3IodmFyIEYg aW4gRyl7SC5zdHlsZVtGXT1FW0ZdfX0sY3NzOmZ1bmN0aW9uKEgsRixKLEUpe2lm KEY9PSJ3aWR0aCJ8fEY9PSJoZWlnaHQiKXt2YXIgTCxHPXtwb3NpdGlvbjoiYWJz b2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxLPUY9 PSJ3aWR0aCI/WyJMZWZ0IiwiUmlnaHQiXTpbIlRvcCIsIkJvdHRvbSJdO2Z1bmN0 aW9uIEkoKXtMPUY9PSJ3aWR0aCI/SC5vZmZzZXRXaWR0aDpILm9mZnNldEhlaWdo dDtpZihFPT09ImJvcmRlciIpe3JldHVybn1vLmVhY2goSyxmdW5jdGlvbigpe2lm KCFFKXtMLT1wYXJzZUZsb2F0KG8uY3VyQ1NTKEgsInBhZGRpbmciK3RoaXMsdHJ1 ZSkpfHwwfWlmKEU9PT0ibWFyZ2luIil7TCs9cGFyc2VGbG9hdChvLmN1ckNTUyhI LCJtYXJnaW4iK3RoaXMsdHJ1ZSkpfHwwfWVsc2V7TC09cGFyc2VGbG9hdChvLmN1 ckNTUyhILCJib3JkZXIiK3RoaXMrIldpZHRoIix0cnVlKSl8fDB9fSl9aWYoSC5v ZmZzZXRXaWR0aCE9PTApe0koKX1lbHNle28uc3dhcChILEcsSSl9cmV0dXJuIE1h dGgubWF4KDAsTWF0aC5yb3VuZChMKSl9cmV0dXJuIG8uY3VyQ1NTKEgsRixKKX0s Y3VyQ1NTOmZ1bmN0aW9uKEksRixHKXt2YXIgTCxFPUkuc3R5bGU7aWYoRj09Im9w YWNpdHkiJiYhby5zdXBwb3J0Lm9wYWNpdHkpe0w9by5hdHRyKEUsIm9wYWNpdHki KTtyZXR1cm4gTD09IiI/IjEiOkx9aWYoRi5tYXRjaCgvZmxvYXQvaSkpe0Y9d31p ZighRyYmRSYmRVtGXSl7TD1FW0ZdfWVsc2V7aWYocS5nZXRDb21wdXRlZFN0eWxl KXtpZihGLm1hdGNoKC9mbG9hdC9pKSl7Rj0iZmxvYXQifUY9Ri5yZXBsYWNlKC8o W0EtWl0pL2csIi0kMSIpLnRvTG93ZXJDYXNlKCk7dmFyIE09cS5nZXRDb21wdXRl ZFN0eWxlKEksbnVsbCk7aWYoTSl7TD1NLmdldFByb3BlcnR5VmFsdWUoRil9aWYo Rj09Im9wYWNpdHkiJiZMPT0iIil7TD0iMSJ9fWVsc2V7aWYoSS5jdXJyZW50U3R5 bGUpe3ZhciBKPUYucmVwbGFjZSgvXC0oXHcpL2csZnVuY3Rpb24oTixPKXtyZXR1 cm4gTy50b1VwcGVyQ2FzZSgpfSk7TD1JLmN1cnJlbnRTdHlsZVtGXXx8SS5jdXJy ZW50U3R5bGVbSl07aWYoIS9eXGQrKHB4KT8kL2kudGVzdChMKSYmL15cZC8udGVz dChMKSl7dmFyIEg9RS5sZWZ0LEs9SS5ydW50aW1lU3R5bGUubGVmdDtJLnJ1bnRp bWVTdHlsZS5sZWZ0PUkuY3VycmVudFN0eWxlLmxlZnQ7RS5sZWZ0PUx8fDA7TD1F LnBpeGVsTGVmdCsicHgiO0UubGVmdD1IO0kucnVudGltZVN0eWxlLmxlZnQ9S319 fX1yZXR1cm4gTH0sY2xlYW46ZnVuY3Rpb24oRixLLEkpe0s9S3x8ZG9jdW1lbnQ7 aWYodHlwZW9mIEsuY3JlYXRlRWxlbWVudD09PSJ1bmRlZmluZWQiKXtLPUsub3du ZXJEb2N1bWVudHx8S1swXSYmS1swXS5vd25lckRvY3VtZW50fHxkb2N1bWVudH1p ZighSSYmRi5sZW5ndGg9PT0xJiZ0eXBlb2YgRlswXT09PSJzdHJpbmciKXt2YXIg SD0vXjwoXHcrKVxzKlwvPz4kLy5leGVjKEZbMF0pO2lmKEgpe3JldHVybltLLmNy ZWF0ZUVsZW1lbnQoSFsxXSldfX12YXIgRz1bXSxFPVtdLEw9Sy5jcmVhdGVFbGVt ZW50KCJkaXYiKTtvLmVhY2goRixmdW5jdGlvbihQLFMpe2lmKHR5cGVvZiBTPT09 Im51bWJlciIpe1MrPSIifWlmKCFTKXtyZXR1cm59aWYodHlwZW9mIFM9PT0ic3Ry aW5nIil7Uz1TLnJlcGxhY2UoLyg8KFx3KylbXj5dKj8pXC8+L2csZnVuY3Rpb24o VSxWLFQpe3JldHVybiBULm1hdGNoKC9eKGFiYnJ8YnJ8Y29sfGltZ3xpbnB1dHxs aW5rfG1ldGF8cGFyYW18aHJ8YXJlYXxlbWJlZCkkL2kpP1U6VisiPjwvIitUKyI+ In0pO3ZhciBPPVMucmVwbGFjZSgvXlxzKy8sIiIpLnN1YnN0cmluZygwLDEwKS50 b0xvd2VyQ2FzZSgpO3ZhciBRPSFPLmluZGV4T2YoIjxvcHQiKSYmWzEsIjxzZWxl Y3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXXx8IU8uaW5kZXhP ZigiPGxlZyIpJiZbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il18fE8ubWF0 Y2goL148KHRoZWFkfHRib2R5fHRmb290fGNvbGd8Y2FwKS8pJiZbMSwiPHRhYmxl PiIsIjwvdGFibGU+Il18fCFPLmluZGV4T2YoIjx0ciIpJiZbMiwiPHRhYmxlPjx0 Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il18fCghTy5pbmRleE9mKCI8dGQiKXx8 IU8uaW5kZXhPZigiPHRoIikpJiZbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90 cj48L3Rib2R5PjwvdGFibGU+Il18fCFPLmluZGV4T2YoIjxjb2wiKSYmWzIsIjx0 YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3Rh YmxlPiJdfHwhby5zdXBwb3J0Lmh0bWxTZXJpYWxpemUmJlsxLCJkaXY8ZGl2PiIs IjwvZGl2PiJdfHxbMCwiIiwiIl07TC5pbm5lckhUTUw9UVsxXStTK1FbMl07d2hp bGUoUVswXS0tKXtMPUwubGFzdENoaWxkfWlmKCFvLnN1cHBvcnQudGJvZHkpe3Zh ciBSPS88dGJvZHkvaS50ZXN0KFMpLE49IU8uaW5kZXhPZigiPHRhYmxlIikmJiFS P0wuZmlyc3RDaGlsZCYmTC5maXJzdENoaWxkLmNoaWxkTm9kZXM6UVsxXT09Ijx0 YWJsZT4iJiYhUj9MLmNoaWxkTm9kZXM6W107Zm9yKHZhciBNPU4ubGVuZ3RoLTE7 TT49MDstLU0pe2lmKG8ubm9kZU5hbWUoTltNXSwidGJvZHkiKSYmIU5bTV0uY2hp bGROb2Rlcy5sZW5ndGgpe05bTV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChOW01d KX19fWlmKCFvLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJi9eXHMvLnRlc3Qo Uykpe0wuaW5zZXJ0QmVmb3JlKEsuY3JlYXRlVGV4dE5vZGUoUy5tYXRjaCgvXlxz Ki8pWzBdKSxMLmZpcnN0Q2hpbGQpfVM9by5tYWtlQXJyYXkoTC5jaGlsZE5vZGVz KX1pZihTLm5vZGVUeXBlKXtHLnB1c2goUyl9ZWxzZXtHPW8ubWVyZ2UoRyxTKX19 KTtpZihJKXtmb3IodmFyIEo9MDtHW0pdO0orKyl7aWYoby5ub2RlTmFtZShHW0pd LCJzY3JpcHQiKSYmKCFHW0pdLnR5cGV8fEdbSl0udHlwZS50b0xvd2VyQ2FzZSgp PT09InRleHQvamF2YXNjcmlwdCIpKXtFLnB1c2goR1tKXS5wYXJlbnROb2RlP0db Sl0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChHW0pdKTpHW0pdKX1lbHNle2lmKEdb Sl0ubm9kZVR5cGU9PT0xKXtHLnNwbGljZS5hcHBseShHLFtKKzEsMF0uY29uY2F0 KG8ubWFrZUFycmF5KEdbSl0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIp KSkpfUkuYXBwZW5kQ2hpbGQoR1tKXSl9fXJldHVybiBFfXJldHVybiBHfSxhdHRy OmZ1bmN0aW9uKEosRyxLKXtpZighSnx8Si5ub2RlVHlwZT09M3x8Si5ub2RlVHlw ZT09OCl7cmV0dXJuIGd9dmFyIEg9IW8uaXNYTUxEb2MoSiksTD1LIT09ZztHPUgm Jm8ucHJvcHNbR118fEc7aWYoSi50YWdOYW1lKXt2YXIgRj0vaHJlZnxzcmN8c3R5 bGUvLnRlc3QoRyk7aWYoRz09InNlbGVjdGVkIiYmSi5wYXJlbnROb2RlKXtKLnBh cmVudE5vZGUuc2VsZWN0ZWRJbmRleH1pZihHIGluIEomJkgmJiFGKXtpZihMKXtp ZihHPT0idHlwZSImJm8ubm9kZU5hbWUoSiwiaW5wdXQiKSYmSi5wYXJlbnROb2Rl KXt0aHJvdyJ0eXBlIHByb3BlcnR5IGNhbid0IGJlIGNoYW5nZWQifUpbR109S31p ZihvLm5vZGVOYW1lKEosImZvcm0iKSYmSi5nZXRBdHRyaWJ1dGVOb2RlKEcpKXty ZXR1cm4gSi5nZXRBdHRyaWJ1dGVOb2RlKEcpLm5vZGVWYWx1ZX1pZihHPT0idGFi SW5kZXgiKXt2YXIgST1KLmdldEF0dHJpYnV0ZU5vZGUoInRhYkluZGV4Iik7cmV0 dXJuIEkmJkkuc3BlY2lmaWVkP0kudmFsdWU6Si5ub2RlTmFtZS5tYXRjaCgvKGJ1 dHRvbnxpbnB1dHxvYmplY3R8c2VsZWN0fHRleHRhcmVhKS9pKT8wOkoubm9kZU5h bWUubWF0Y2goL14oYXxhcmVhKSQvaSkmJkouaHJlZj8wOmd9cmV0dXJuIEpbR119 aWYoIW8uc3VwcG9ydC5zdHlsZSYmSCYmRz09InN0eWxlIil7cmV0dXJuIG8uYXR0 cihKLnN0eWxlLCJjc3NUZXh0IixLKX1pZihMKXtKLnNldEF0dHJpYnV0ZShHLCIi K0spfXZhciBFPSFvLnN1cHBvcnQuaHJlZk5vcm1hbGl6ZWQmJkgmJkY/Si5nZXRB dHRyaWJ1dGUoRywyKTpKLmdldEF0dHJpYnV0ZShHKTtyZXR1cm4gRT09PW51bGw/ ZzpFfWlmKCFvLnN1cHBvcnQub3BhY2l0eSYmRz09Im9wYWNpdHkiKXtpZihMKXtK Lnpvb209MTtKLmZpbHRlcj0oSi5maWx0ZXJ8fCIiKS5yZXBsYWNlKC9hbHBoYVwo W14pXSpcKS8sIiIpKyhwYXJzZUludChLKSsiIj09Ik5hTiI/IiI6ImFscGhhKG9w YWNpdHk9IitLKjEwMCsiKSIpfXJldHVybiBKLmZpbHRlciYmSi5maWx0ZXIuaW5k ZXhPZigib3BhY2l0eT0iKT49MD8ocGFyc2VGbG9hdChKLmZpbHRlci5tYXRjaCgv b3BhY2l0eT0oW14pXSopLylbMV0pLzEwMCkrIiI6IiJ9Rz1HLnJlcGxhY2UoLy0o W2Etel0pL2lnLGZ1bmN0aW9uKE0sTil7cmV0dXJuIE4udG9VcHBlckNhc2UoKX0p O2lmKEwpe0pbR109S31yZXR1cm4gSltHXX0sdHJpbTpmdW5jdGlvbihFKXtyZXR1 cm4oRXx8IiIpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sbWFrZUFycmF5OmZ1 bmN0aW9uKEcpe3ZhciBFPVtdO2lmKEchPW51bGwpe3ZhciBGPUcubGVuZ3RoO2lm KEY9PW51bGx8fHR5cGVvZiBHPT09InN0cmluZyJ8fG8uaXNGdW5jdGlvbihHKXx8 Ry5zZXRJbnRlcnZhbCl7RVswXT1HfWVsc2V7d2hpbGUoRil7RVstLUZdPUdbRl19 fX1yZXR1cm4gRX0saW5BcnJheTpmdW5jdGlvbihHLEgpe2Zvcih2YXIgRT0wLEY9 SC5sZW5ndGg7RTxGO0UrKyl7aWYoSFtFXT09PUcpe3JldHVybiBFfX1yZXR1cm4g LTF9LG1lcmdlOmZ1bmN0aW9uKEgsRSl7dmFyIEY9MCxHLEk9SC5sZW5ndGg7aWYo IW8uc3VwcG9ydC5nZXRBbGwpe3doaWxlKChHPUVbRisrXSkhPW51bGwpe2lmKEcu bm9kZVR5cGUhPTgpe0hbSSsrXT1HfX19ZWxzZXt3aGlsZSgoRz1FW0YrK10pIT1u dWxsKXtIW0krK109R319cmV0dXJuIEh9LHVuaXF1ZTpmdW5jdGlvbihLKXt2YXIg Rj1bXSxFPXt9O3RyeXtmb3IodmFyIEc9MCxIPUsubGVuZ3RoO0c8SDtHKyspe3Zh ciBKPW8uZGF0YShLW0ddKTtpZighRVtKXSl7RVtKXT10cnVlO0YucHVzaChLW0dd KX19fWNhdGNoKEkpe0Y9S31yZXR1cm4gRn0sZ3JlcDpmdW5jdGlvbihGLEosRSl7 dmFyIEc9W107Zm9yKHZhciBIPTAsST1GLmxlbmd0aDtIPEk7SCsrKXtpZighRSE9 IUooRltIXSxIKSl7Ry5wdXNoKEZbSF0pfX1yZXR1cm4gR30sbWFwOmZ1bmN0aW9u KEUsSil7dmFyIEY9W107Zm9yKHZhciBHPTAsSD1FLmxlbmd0aDtHPEg7RysrKXt2 YXIgST1KKEVbR10sRyk7aWYoSSE9bnVsbCl7RltGLmxlbmd0aF09SX19cmV0dXJu IEYuY29uY2F0LmFwcGx5KFtdLEYpfX0pO3ZhciBDPW5hdmlnYXRvci51c2VyQWdl bnQudG9Mb3dlckNhc2UoKTtvLmJyb3dzZXI9e3ZlcnNpb246KEMubWF0Y2goLy4r KD86cnZ8aXR8cmF8aWUpW1wvOiBdKFtcZC5dKykvKXx8WzAsIjAiXSlbMV0sc2Fm YXJpOi93ZWJraXQvLnRlc3QoQyksb3BlcmE6L29wZXJhLy50ZXN0KEMpLG1zaWU6 L21zaWUvLnRlc3QoQykmJiEvb3BlcmEvLnRlc3QoQyksbW96aWxsYTovbW96aWxs YS8udGVzdChDKSYmIS8oY29tcGF0aWJsZXx3ZWJraXQpLy50ZXN0KEMpfTtvLmVh Y2goe3BhcmVudDpmdW5jdGlvbihFKXtyZXR1cm4gRS5wYXJlbnROb2RlfSxwYXJl bnRzOmZ1bmN0aW9uKEUpe3JldHVybiBvLmRpcihFLCJwYXJlbnROb2RlIil9LG5l eHQ6ZnVuY3Rpb24oRSl7cmV0dXJuIG8ubnRoKEUsMiwibmV4dFNpYmxpbmciKX0s cHJldjpmdW5jdGlvbihFKXtyZXR1cm4gby5udGgoRSwyLCJwcmV2aW91c1NpYmxp bmciKX0sbmV4dEFsbDpmdW5jdGlvbihFKXtyZXR1cm4gby5kaXIoRSwibmV4dFNp YmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihFKXtyZXR1cm4gby5kaXIoRSwicHJl dmlvdXNTaWJsaW5nIil9LHNpYmxpbmdzOmZ1bmN0aW9uKEUpe3JldHVybiBvLnNp YmxpbmcoRS5wYXJlbnROb2RlLmZpcnN0Q2hpbGQsRSl9LGNoaWxkcmVuOmZ1bmN0 aW9uKEUpe3JldHVybiBvLnNpYmxpbmcoRS5maXJzdENoaWxkKX0sY29udGVudHM6 ZnVuY3Rpb24oRSl7cmV0dXJuIG8ubm9kZU5hbWUoRSwiaWZyYW1lIik/RS5jb250 ZW50RG9jdW1lbnR8fEUuY29udGVudFdpbmRvdy5kb2N1bWVudDpvLm1ha2VBcnJh eShFLmNoaWxkTm9kZXMpfX0sZnVuY3Rpb24oRSxGKXtvLmZuW0VdPWZ1bmN0aW9u KEcpe3ZhciBIPW8ubWFwKHRoaXMsRik7aWYoRyYmdHlwZW9mIEc9PSJzdHJpbmci KXtIPW8ubXVsdGlGaWx0ZXIoRyxIKX1yZXR1cm4gdGhpcy5wdXNoU3RhY2soby51 bmlxdWUoSCksRSxHKX19KTtvLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBl bmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVy OiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihFLEYp e28uZm5bRV09ZnVuY3Rpb24oRyl7dmFyIEo9W10sTD1vKEcpO2Zvcih2YXIgSz0w LEg9TC5sZW5ndGg7SzxIO0srKyl7dmFyIEk9KEs+MD90aGlzLmNsb25lKHRydWUp OnRoaXMpLmdldCgpO28uZm5bRl0uYXBwbHkobyhMW0tdKSxJKTtKPUouY29uY2F0 KEkpfXJldHVybiB0aGlzLnB1c2hTdGFjayhKLEUsRyl9fSk7by5lYWNoKHtyZW1v dmVBdHRyOmZ1bmN0aW9uKEUpe28uYXR0cih0aGlzLEUsIiIpO2lmKHRoaXMubm9k ZVR5cGU9PTEpe3RoaXMucmVtb3ZlQXR0cmlidXRlKEUpfX0sYWRkQ2xhc3M6ZnVu Y3Rpb24oRSl7by5jbGFzc05hbWUuYWRkKHRoaXMsRSl9LHJlbW92ZUNsYXNzOmZ1 bmN0aW9uKEUpe28uY2xhc3NOYW1lLnJlbW92ZSh0aGlzLEUpfSx0b2dnbGVDbGFz czpmdW5jdGlvbihGLEUpe2lmKHR5cGVvZiBFIT09ImJvb2xlYW4iKXtFPSFvLmNs YXNzTmFtZS5oYXModGhpcyxGKX1vLmNsYXNzTmFtZVtFPyJhZGQiOiJyZW1vdmUi XSh0aGlzLEYpfSxyZW1vdmU6ZnVuY3Rpb24oRSl7aWYoIUV8fG8uZmlsdGVyKEUs W3RoaXNdKS5sZW5ndGgpe28oIioiLHRoaXMpLmFkZChbdGhpc10pLmVhY2goZnVu Y3Rpb24oKXtvLmV2ZW50LnJlbW92ZSh0aGlzKTtvLnJlbW92ZURhdGEodGhpcyl9 KTtpZih0aGlzLnBhcmVudE5vZGUpe3RoaXMucGFyZW50Tm9kZS5yZW1vdmVDaGls ZCh0aGlzKX19fSxlbXB0eTpmdW5jdGlvbigpe28odGhpcykuY2hpbGRyZW4oKS5y ZW1vdmUoKTt3aGlsZSh0aGlzLmZpcnN0Q2hpbGQpe3RoaXMucmVtb3ZlQ2hpbGQo dGhpcy5maXJzdENoaWxkKX19fSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5lYWNoKEYsYXJndW1lbnRzKX19KTtmdW5jdGlvbiBq KEUsRil7cmV0dXJuIEVbMF0mJnBhcnNlSW50KG8uY3VyQ1NTKEVbMF0sRix0cnVl KSwxMCl8fDB9dmFyIGg9ImpRdWVyeSIrZSgpLHY9MCxBPXt9O28uZXh0ZW5kKHtj YWNoZTp7fSxkYXRhOmZ1bmN0aW9uKEYsRSxHKXtGPUY9PWw/QTpGO3ZhciBIPUZb aF07aWYoIUgpe0g9RltoXT0rK3Z9aWYoRSYmIW8uY2FjaGVbSF0pe28uY2FjaGVb SF09e319aWYoRyE9PWcpe28uY2FjaGVbSF1bRV09R31yZXR1cm4gRT9vLmNhY2hl W0hdW0VdOkh9LHJlbW92ZURhdGE6ZnVuY3Rpb24oRixFKXtGPUY9PWw/QTpGO3Zh ciBIPUZbaF07aWYoRSl7aWYoby5jYWNoZVtIXSl7ZGVsZXRlIG8uY2FjaGVbSF1b RV07RT0iIjtmb3IoRSBpbiBvLmNhY2hlW0hdKXticmVha31pZighRSl7by5yZW1v dmVEYXRhKEYpfX19ZWxzZXt0cnl7ZGVsZXRlIEZbaF19Y2F0Y2goRyl7aWYoRi5y ZW1vdmVBdHRyaWJ1dGUpe0YucmVtb3ZlQXR0cmlidXRlKGgpfX1kZWxldGUgby5j YWNoZVtIXX19LHF1ZXVlOmZ1bmN0aW9uKEYsRSxIKXtpZihGKXtFPShFfHwiZngi KSsicXVldWUiO3ZhciBHPW8uZGF0YShGLEUpO2lmKCFHfHxvLmlzQXJyYXkoSCkp e0c9by5kYXRhKEYsRSxvLm1ha2VBcnJheShIKSl9ZWxzZXtpZihIKXtHLnB1c2go SCl9fX1yZXR1cm4gR30sZGVxdWV1ZTpmdW5jdGlvbihILEcpe3ZhciBFPW8ucXVl dWUoSCxHKSxGPUUuc2hpZnQoKTtpZighR3x8Rz09PSJmeCIpe0Y9RVswXX1pZihG IT09Zyl7Ri5jYWxsKEgpfX19KTtvLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihF LEcpe3ZhciBIPUUuc3BsaXQoIi4iKTtIWzFdPUhbMV0/Ii4iK0hbMV06IiI7aWYo Rz09PWcpe3ZhciBGPXRoaXMudHJpZ2dlckhhbmRsZXIoImdldERhdGEiK0hbMV0r IiEiLFtIWzBdXSk7aWYoRj09PWcmJnRoaXMubGVuZ3RoKXtGPW8uZGF0YSh0aGlz WzBdLEUpfXJldHVybiBGPT09ZyYmSFsxXT90aGlzLmRhdGEoSFswXSk6Rn1lbHNl e3JldHVybiB0aGlzLnRyaWdnZXIoInNldERhdGEiK0hbMV0rIiEiLFtIWzBdLEdd KS5lYWNoKGZ1bmN0aW9uKCl7by5kYXRhKHRoaXMsRSxHKX0pfX0scmVtb3ZlRGF0 YTpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5yZW1v dmVEYXRhKHRoaXMsRSl9KX0scXVldWU6ZnVuY3Rpb24oRSxGKXtpZih0eXBlb2Yg RSE9PSJzdHJpbmciKXtGPUU7RT0iZngifWlmKEY9PT1nKXtyZXR1cm4gby5xdWV1 ZSh0aGlzWzBdLEUpfXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgRz1v LnF1ZXVlKHRoaXMsRSxGKTtpZihFPT0iZngiJiZHLmxlbmd0aD09MSl7R1swXS5j YWxsKHRoaXMpfX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLmVh Y2goZnVuY3Rpb24oKXtvLmRlcXVldWUodGhpcyxFKX0pfX0pOwovKgogKiBTaXp6 bGUgQ1NTIFNlbGVjdG9yIEVuZ2luZSAtIHYwLjkuMwogKiAgQ29weXJpZ2h0IDIw MDksIFRoZSBEb2pvIEZvdW5kYXRpb24KICogIFJlbGVhc2VkIHVuZGVyIHRoZSBN SVQsIEJTRCwgYW5kIEdQTCBMaWNlbnNlcy4KICogIE1vcmUgaW5mb3JtYXRpb246 IGh0dHA6Ly9zaXp6bGVqcy5jb20vCiAqLwooZnVuY3Rpb24oKXt2YXIgUj0vKCg/ OlwoKD86XChbXigpXStcKXxbXigpXSspK1wpfFxbKD86XFtbXltcXV0qXF18Wyci XVteJyJdKlsnIl18W15bXF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xb Pit+XSkoXHMqLFxzKik/L2csTD0wLEg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmlu Zzt2YXIgRj1mdW5jdGlvbihZLFUsYWIsYWMpe2FiPWFifHxbXTtVPVV8fGRvY3Vt ZW50O2lmKFUubm9kZVR5cGUhPT0xJiZVLm5vZGVUeXBlIT09OSl7cmV0dXJuW119 aWYoIVl8fHR5cGVvZiBZIT09InN0cmluZyIpe3JldHVybiBhYn12YXIgWj1bXSxX LGFmLGFpLFQsYWQsVixYPXRydWU7Ui5sYXN0SW5kZXg9MDt3aGlsZSgoVz1SLmV4 ZWMoWSkpIT09bnVsbCl7Wi5wdXNoKFdbMV0pO2lmKFdbMl0pe1Y9UmVnRXhwLnJp Z2h0Q29udGV4dDticmVha319aWYoWi5sZW5ndGg+MSYmTS5leGVjKFkpKXtpZiha Lmxlbmd0aD09PTImJkkucmVsYXRpdmVbWlswXV0pe2FmPUooWlswXStaWzFdLFUp fWVsc2V7YWY9SS5yZWxhdGl2ZVtaWzBdXT9bVV06RihaLnNoaWZ0KCksVSk7d2hp bGUoWi5sZW5ndGgpe1k9Wi5zaGlmdCgpO2lmKEkucmVsYXRpdmVbWV0pe1krPVou c2hpZnQoKX1hZj1KKFksYWYpfX19ZWxzZXt2YXIgYWU9YWM/e2V4cHI6Wi5wb3Ao KSxzZXQ6RShhYyl9OkYuZmluZChaLnBvcCgpLFoubGVuZ3RoPT09MSYmVS5wYXJl bnROb2RlP1UucGFyZW50Tm9kZTpVLFEoVSkpO2FmPUYuZmlsdGVyKGFlLmV4cHIs YWUuc2V0KTtpZihaLmxlbmd0aD4wKXthaT1FKGFmKX1lbHNle1g9ZmFsc2V9d2hp bGUoWi5sZW5ndGgpe3ZhciBhaD1aLnBvcCgpLGFnPWFoO2lmKCFJLnJlbGF0aXZl W2FoXSl7YWg9IiJ9ZWxzZXthZz1aLnBvcCgpfWlmKGFnPT1udWxsKXthZz1VfUku cmVsYXRpdmVbYWhdKGFpLGFnLFEoVSkpfX1pZighYWkpe2FpPWFmfWlmKCFhaSl7 dGhyb3ciU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIiso YWh8fFkpfWlmKEguY2FsbChhaSk9PT0iW29iamVjdCBBcnJheV0iKXtpZighWCl7 YWIucHVzaC5hcHBseShhYixhaSl9ZWxzZXtpZihVLm5vZGVUeXBlPT09MSl7Zm9y KHZhciBhYT0wO2FpW2FhXSE9bnVsbDthYSsrKXtpZihhaVthYV0mJihhaVthYV09 PT10cnVlfHxhaVthYV0ubm9kZVR5cGU9PT0xJiZLKFUsYWlbYWFdKSkpe2FiLnB1 c2goYWZbYWFdKX19fWVsc2V7Zm9yKHZhciBhYT0wO2FpW2FhXSE9bnVsbDthYSsr KXtpZihhaVthYV0mJmFpW2FhXS5ub2RlVHlwZT09PTEpe2FiLnB1c2goYWZbYWFd KX19fX19ZWxzZXtFKGFpLGFiKX1pZihWKXtGKFYsVSxhYixhYyk7aWYoRyl7aGFz RHVwbGljYXRlPWZhbHNlO2FiLnNvcnQoRyk7aWYoaGFzRHVwbGljYXRlKXtmb3Io dmFyIGFhPTE7YWE8YWIubGVuZ3RoO2FhKyspe2lmKGFiW2FhXT09PWFiW2FhLTFd KXthYi5zcGxpY2UoYWEtLSwxKX19fX19cmV0dXJuIGFifTtGLm1hdGNoZXM9ZnVu Y3Rpb24oVCxVKXtyZXR1cm4gRihULG51bGwsbnVsbCxVKX07Ri5maW5kPWZ1bmN0 aW9uKGFhLFQsYWIpe3ZhciBaLFg7aWYoIWFhKXtyZXR1cm5bXX1mb3IodmFyIFc9 MCxWPUkub3JkZXIubGVuZ3RoO1c8VjtXKyspe3ZhciBZPUkub3JkZXJbV10sWDtp ZigoWD1JLm1hdGNoW1ldLmV4ZWMoYWEpKSl7dmFyIFU9UmVnRXhwLmxlZnRDb250 ZXh0O2lmKFUuc3Vic3RyKFUubGVuZ3RoLTEpIT09IlxcIil7WFsxXT0oWFsxXXx8 IiIpLnJlcGxhY2UoL1xcL2csIiIpO1o9SS5maW5kW1ldKFgsVCxhYik7aWYoWiE9 bnVsbCl7YWE9YWEucmVwbGFjZShJLm1hdGNoW1ldLCIiKTticmVha319fX1pZigh Wil7Wj1ULmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIil9cmV0dXJue3NldDpaLGV4 cHI6YWF9fTtGLmZpbHRlcj1mdW5jdGlvbihhZCxhYyxhZyxXKXt2YXIgVj1hZCxh aT1bXSxhYT1hYyxZLFQsWj1hYyYmYWNbMF0mJlEoYWNbMF0pO3doaWxlKGFkJiZh Yy5sZW5ndGgpe2Zvcih2YXIgYWIgaW4gSS5maWx0ZXIpe2lmKChZPUkubWF0Y2hb YWJdLmV4ZWMoYWQpKSE9bnVsbCl7dmFyIFU9SS5maWx0ZXJbYWJdLGFoLGFmO1Q9 ZmFsc2U7aWYoYWE9PWFpKXthaT1bXX1pZihJLnByZUZpbHRlclthYl0pe1k9SS5w cmVGaWx0ZXJbYWJdKFksYWEsYWcsYWksVyxaKTtpZighWSl7VD1haD10cnVlfWVs c2V7aWYoWT09PXRydWUpe2NvbnRpbnVlfX19aWYoWSl7Zm9yKHZhciBYPTA7KGFm PWFhW1hdKSE9bnVsbDtYKyspe2lmKGFmKXthaD1VKGFmLFksWCxhYSk7dmFyIGFl PVdeISFhaDtpZihhZyYmYWghPW51bGwpe2lmKGFlKXtUPXRydWV9ZWxzZXthYVtY XT1mYWxzZX19ZWxzZXtpZihhZSl7YWkucHVzaChhZik7VD10cnVlfX19fX1pZihh aCE9PWcpe2lmKCFhZyl7YWE9YWl9YWQ9YWQucmVwbGFjZShJLm1hdGNoW2FiXSwi Iik7aWYoIVQpe3JldHVybltdfWJyZWFrfX19aWYoYWQ9PVYpe2lmKFQ9PW51bGwp e3Rocm93IlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIr YWR9ZWxzZXticmVha319Vj1hZH1yZXR1cm4gYWF9O3ZhciBJPUYuc2VsZWN0b3Jz PXtvcmRlcjpbIklEIiwiTkFNRSIsIlRBRyJdLG1hdGNoOntJRDovIygoPzpbXHdc dTAwYzAtXHVGRkZGXy1dfFxcLikrKS8sQ0xBU1M6L1wuKCg/Oltcd1x1MDBjMC1c dUZGRkZfLV18XFwuKSspLyxOQU1FOi9cW25hbWU9WyciXSooKD86W1x3XHUwMGMw LVx1RkZGRl8tXXxcXC4pKylbJyJdKlxdLyxBVFRSOi9cW1xzKigoPzpbXHdcdTAw YzAtXHVGRkZGXy1dfFxcLikrKVxzKig/OihcUz89KVxzKihbJyJdKikoLio/KVwz fClccypcXS8sVEFHOi9eKCg/Oltcd1x1MDBjMC1cdUZGRkZcKl8tXXxcXC4pKykv LENISUxEOi86KG9ubHl8bnRofGxhc3R8Zmlyc3QpLWNoaWxkKD86XCgoZXZlbnxv ZGR8W1xkbistXSopXCkpPy8sUE9TOi86KG50aHxlcXxndHxsdHxmaXJzdHxsYXN0 fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89W14tXXwkKS8sUFNFVURPOi86KCg/ Oltcd1x1MDBjMC1cdUZGRkZfLV18XFwuKSspKD86XCgoWyciXSopKCg/OlwoW15c KV0rXCl8W15cMlwoXCldKikrKVwyXCkpPy99LGF0dHJNYXA6eyJjbGFzcyI6ImNs YXNzTmFtZSIsImZvciI6Imh0bWxGb3IifSxhdHRySGFuZGxlOntocmVmOmZ1bmN0 aW9uKFQpe3JldHVybiBULmdldEF0dHJpYnV0ZSgiaHJlZiIpfX0scmVsYXRpdmU6 eyIrIjpmdW5jdGlvbihhYSxULFope3ZhciBYPXR5cGVvZiBUPT09InN0cmluZyIs YWI9WCYmIS9cVy8udGVzdChUKSxZPVgmJiFhYjtpZihhYiYmIVope1Q9VC50b1Vw cGVyQ2FzZSgpfWZvcih2YXIgVz0wLFY9YWEubGVuZ3RoLFU7VzxWO1crKyl7aWYo KFU9YWFbV10pKXt3aGlsZSgoVT1VLnByZXZpb3VzU2libGluZykmJlUubm9kZVR5 cGUhPT0xKXt9YWFbV109WXx8VSYmVS5ub2RlTmFtZT09PVQ/VXx8ZmFsc2U6VT09 PVR9fWlmKFkpe0YuZmlsdGVyKFQsYWEsdHJ1ZSl9fSwiPiI6ZnVuY3Rpb24oWixV LGFhKXt2YXIgWD10eXBlb2YgVT09PSJzdHJpbmciO2lmKFgmJiEvXFcvLnRlc3Qo VSkpe1U9YWE/VTpVLnRvVXBwZXJDYXNlKCk7Zm9yKHZhciBWPTAsVD1aLmxlbmd0 aDtWPFQ7VisrKXt2YXIgWT1aW1ZdO2lmKFkpe3ZhciBXPVkucGFyZW50Tm9kZTta W1ZdPVcubm9kZU5hbWU9PT1VP1c6ZmFsc2V9fX1lbHNle2Zvcih2YXIgVj0wLFQ9 Wi5sZW5ndGg7VjxUO1YrKyl7dmFyIFk9WltWXTtpZihZKXtaW1ZdPVg/WS5wYXJl bnROb2RlOlkucGFyZW50Tm9kZT09PVV9fWlmKFgpe0YuZmlsdGVyKFUsWix0cnVl KX19fSwiIjpmdW5jdGlvbihXLFUsWSl7dmFyIFY9TCsrLFQ9UztpZighVS5tYXRj aCgvXFcvKSl7dmFyIFg9VT1ZP1U6VS50b1VwcGVyQ2FzZSgpO1Q9UH1UKCJwYXJl bnROb2RlIixVLFYsVyxYLFkpfSwifiI6ZnVuY3Rpb24oVyxVLFkpe3ZhciBWPUwr KyxUPVM7aWYodHlwZW9mIFU9PT0ic3RyaW5nIiYmIVUubWF0Y2goL1xXLykpe3Zh ciBYPVU9WT9VOlUudG9VcHBlckNhc2UoKTtUPVB9VCgicHJldmlvdXNTaWJsaW5n IixVLFYsVyxYLFkpfX0sZmluZDp7SUQ6ZnVuY3Rpb24oVSxWLFcpe2lmKHR5cGVv ZiBWLmdldEVsZW1lbnRCeUlkIT09InVuZGVmaW5lZCImJiFXKXt2YXIgVD1WLmdl dEVsZW1lbnRCeUlkKFVbMV0pO3JldHVybiBUP1tUXTpbXX19LE5BTUU6ZnVuY3Rp b24oVixZLFope2lmKHR5cGVvZiBZLmdldEVsZW1lbnRzQnlOYW1lIT09InVuZGVm aW5lZCIpe3ZhciBVPVtdLFg9WS5nZXRFbGVtZW50c0J5TmFtZShWWzFdKTtmb3Io dmFyIFc9MCxUPVgubGVuZ3RoO1c8VDtXKyspe2lmKFhbV10uZ2V0QXR0cmlidXRl KCJuYW1lIik9PT1WWzFdKXtVLnB1c2goWFtXXSl9fXJldHVybiBVLmxlbmd0aD09 PTA/bnVsbDpVfX0sVEFHOmZ1bmN0aW9uKFQsVSl7cmV0dXJuIFUuZ2V0RWxlbWVu dHNCeVRhZ05hbWUoVFsxXSl9fSxwcmVGaWx0ZXI6e0NMQVNTOmZ1bmN0aW9uKFcs VSxWLFQsWixhYSl7Vz0iICIrV1sxXS5yZXBsYWNlKC9cXC9nLCIiKSsiICI7aWYo YWEpe3JldHVybiBXfWZvcih2YXIgWD0wLFk7KFk9VVtYXSkhPW51bGw7WCsrKXtp ZihZKXtpZihaXihZLmNsYXNzTmFtZSYmKCIgIitZLmNsYXNzTmFtZSsiICIpLmlu ZGV4T2YoVyk+PTApKXtpZighVil7VC5wdXNoKFkpfX1lbHNle2lmKFYpe1VbWF09 ZmFsc2V9fX19cmV0dXJuIGZhbHNlfSxJRDpmdW5jdGlvbihUKXtyZXR1cm4gVFsx XS5yZXBsYWNlKC9cXC9nLCIiKX0sVEFHOmZ1bmN0aW9uKFUsVCl7Zm9yKHZhciBW PTA7VFtWXT09PWZhbHNlO1YrKyl7fXJldHVybiBUW1ZdJiZRKFRbVl0pP1VbMV06 VVsxXS50b1VwcGVyQ2FzZSgpfSxDSElMRDpmdW5jdGlvbihUKXtpZihUWzFdPT0i bnRoIil7dmFyIFU9LygtPykoXGQqKW4oKD86XCt8LSk/XGQqKS8uZXhlYyhUWzJd PT0iZXZlbiImJiIybiJ8fFRbMl09PSJvZGQiJiYiMm4rMSJ8fCEvXEQvLnRlc3Qo VFsyXSkmJiIwbisiK1RbMl18fFRbMl0pO1RbMl09KFVbMV0rKFVbMl18fDEpKS0w O1RbM109VVszXS0wfVRbMF09TCsrO3JldHVybiBUfSxBVFRSOmZ1bmN0aW9uKFgs VSxWLFQsWSxaKXt2YXIgVz1YWzFdLnJlcGxhY2UoL1xcL2csIiIpO2lmKCFaJiZJ LmF0dHJNYXBbV10pe1hbMV09SS5hdHRyTWFwW1ddfWlmKFhbMl09PT0ifj0iKXtY WzRdPSIgIitYWzRdKyIgIn1yZXR1cm4gWH0sUFNFVURPOmZ1bmN0aW9uKFgsVSxW LFQsWSl7aWYoWFsxXT09PSJub3QiKXtpZihYWzNdLm1hdGNoKFIpLmxlbmd0aD4x fHwvXlx3Ly50ZXN0KFhbM10pKXtYWzNdPUYoWFszXSxudWxsLG51bGwsVSl9ZWxz ZXt2YXIgVz1GLmZpbHRlcihYWzNdLFUsVix0cnVlXlkpO2lmKCFWKXtULnB1c2gu YXBwbHkoVCxXKX1yZXR1cm4gZmFsc2V9fWVsc2V7aWYoSS5tYXRjaC5QT1MudGVz dChYWzBdKXx8SS5tYXRjaC5DSElMRC50ZXN0KFhbMF0pKXtyZXR1cm4gdHJ1ZX19 cmV0dXJuIFh9LFBPUzpmdW5jdGlvbihUKXtULnVuc2hpZnQodHJ1ZSk7cmV0dXJu IFR9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKFQpe3JldHVybiBULmRpc2Fi bGVkPT09ZmFsc2UmJlQudHlwZSE9PSJoaWRkZW4ifSxkaXNhYmxlZDpmdW5jdGlv bihUKXtyZXR1cm4gVC5kaXNhYmxlZD09PXRydWV9LGNoZWNrZWQ6ZnVuY3Rpb24o VCl7cmV0dXJuIFQuY2hlY2tlZD09PXRydWV9LHNlbGVjdGVkOmZ1bmN0aW9uKFQp e1QucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O3JldHVybiBULnNlbGVjdGVkPT09 dHJ1ZX0scGFyZW50OmZ1bmN0aW9uKFQpe3JldHVybiAhIVQuZmlyc3RDaGlsZH0s ZW1wdHk6ZnVuY3Rpb24oVCl7cmV0dXJuICFULmZpcnN0Q2hpbGR9LGhhczpmdW5j dGlvbihWLFUsVCl7cmV0dXJuICEhRihUWzNdLFYpLmxlbmd0aH0saGVhZGVyOmZ1 bmN0aW9uKFQpe3JldHVybi9oXGQvaS50ZXN0KFQubm9kZU5hbWUpfSx0ZXh0OmZ1 bmN0aW9uKFQpe3JldHVybiJ0ZXh0Ij09PVQudHlwZX0scmFkaW86ZnVuY3Rpb24o VCl7cmV0dXJuInJhZGlvIj09PVQudHlwZX0sY2hlY2tib3g6ZnVuY3Rpb24oVCl7 cmV0dXJuImNoZWNrYm94Ij09PVQudHlwZX0sZmlsZTpmdW5jdGlvbihUKXtyZXR1 cm4iZmlsZSI9PT1ULnR5cGV9LHBhc3N3b3JkOmZ1bmN0aW9uKFQpe3JldHVybiJw YXNzd29yZCI9PT1ULnR5cGV9LHN1Ym1pdDpmdW5jdGlvbihUKXtyZXR1cm4ic3Vi bWl0Ij09PVQudHlwZX0saW1hZ2U6ZnVuY3Rpb24oVCl7cmV0dXJuImltYWdlIj09 PVQudHlwZX0scmVzZXQ6ZnVuY3Rpb24oVCl7cmV0dXJuInJlc2V0Ij09PVQudHlw ZX0sYnV0dG9uOmZ1bmN0aW9uKFQpe3JldHVybiJidXR0b24iPT09VC50eXBlfHxU Lm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PT0iQlVUVE9OIn0saW5wdXQ6ZnVuY3Rp b24oVCl7cmV0dXJuL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24vaS50ZXN0 KFQubm9kZU5hbWUpfX0sc2V0RmlsdGVyczp7Zmlyc3Q6ZnVuY3Rpb24oVSxUKXty ZXR1cm4gVD09PTB9LGxhc3Q6ZnVuY3Rpb24oVixVLFQsVyl7cmV0dXJuIFU9PT1X Lmxlbmd0aC0xfSxldmVuOmZ1bmN0aW9uKFUsVCl7cmV0dXJuIFQlMj09PTB9LG9k ZDpmdW5jdGlvbihVLFQpe3JldHVybiBUJTI9PT0xfSxsdDpmdW5jdGlvbihWLFUs VCl7cmV0dXJuIFU8VFszXS0wfSxndDpmdW5jdGlvbihWLFUsVCl7cmV0dXJuIFU+ VFszXS0wfSxudGg6ZnVuY3Rpb24oVixVLFQpe3JldHVybiBUWzNdLTA9PVV9LGVx OmZ1bmN0aW9uKFYsVSxUKXtyZXR1cm4gVFszXS0wPT1VfX0sZmlsdGVyOntQU0VV RE86ZnVuY3Rpb24oWixWLFcsYWEpe3ZhciBVPVZbMV0sWD1JLmZpbHRlcnNbVV07 aWYoWCl7cmV0dXJuIFgoWixXLFYsYWEpfWVsc2V7aWYoVT09PSJjb250YWlucyIp e3JldHVybihaLnRleHRDb250ZW50fHxaLmlubmVyVGV4dHx8IiIpLmluZGV4T2Yo VlszXSk+PTB9ZWxzZXtpZihVPT09Im5vdCIpe3ZhciBZPVZbM107Zm9yKHZhciBX PTAsVD1ZLmxlbmd0aDtXPFQ7VysrKXtpZihZW1ddPT09Wil7cmV0dXJuIGZhbHNl fX1yZXR1cm4gdHJ1ZX19fX0sQ0hJTEQ6ZnVuY3Rpb24oVCxXKXt2YXIgWj1XWzFd LFU9VDtzd2l0Y2goWil7Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijp3aGlsZShVPVUu cHJldmlvdXNTaWJsaW5nKXtpZihVLm5vZGVUeXBlPT09MSl7cmV0dXJuIGZhbHNl fX1pZihaPT0iZmlyc3QiKXtyZXR1cm4gdHJ1ZX1VPVQ7Y2FzZSJsYXN0Ijp3aGls ZShVPVUubmV4dFNpYmxpbmcpe2lmKFUubm9kZVR5cGU9PT0xKXtyZXR1cm4gZmFs c2V9fXJldHVybiB0cnVlO2Nhc2UibnRoIjp2YXIgVj1XWzJdLGFjPVdbM107aWYo Vj09MSYmYWM9PTApe3JldHVybiB0cnVlfXZhciBZPVdbMF0sYWI9VC5wYXJlbnRO b2RlO2lmKGFiJiYoYWIuc2l6Y2FjaGUhPT1ZfHwhVC5ub2RlSW5kZXgpKXt2YXIg WD0wO2ZvcihVPWFiLmZpcnN0Q2hpbGQ7VTtVPVUubmV4dFNpYmxpbmcpe2lmKFUu bm9kZVR5cGU9PT0xKXtVLm5vZGVJbmRleD0rK1h9fWFiLnNpemNhY2hlPVl9dmFy IGFhPVQubm9kZUluZGV4LWFjO2lmKFY9PTApe3JldHVybiBhYT09MH1lbHNle3Jl dHVybihhYSVWPT0wJiZhYS9WPj0wKX19fSxJRDpmdW5jdGlvbihVLFQpe3JldHVy biBVLm5vZGVUeXBlPT09MSYmVS5nZXRBdHRyaWJ1dGUoImlkIik9PT1UfSxUQUc6 ZnVuY3Rpb24oVSxUKXtyZXR1cm4oVD09PSIqIiYmVS5ub2RlVHlwZT09PTEpfHxV Lm5vZGVOYW1lPT09VH0sQ0xBU1M6ZnVuY3Rpb24oVSxUKXtyZXR1cm4oIiAiKyhV LmNsYXNzTmFtZXx8VS5nZXRBdHRyaWJ1dGUoImNsYXNzIikpKyIgIikuaW5kZXhP ZihUKT4tMX0sQVRUUjpmdW5jdGlvbihZLFcpe3ZhciBWPVdbMV0sVD1JLmF0dHJI YW5kbGVbVl0/SS5hdHRySGFuZGxlW1ZdKFkpOllbVl0hPW51bGw/WVtWXTpZLmdl dEF0dHJpYnV0ZShWKSxaPVQrIiIsWD1XWzJdLFU9V1s0XTtyZXR1cm4gVD09bnVs bD9YPT09IiE9IjpYPT09Ij0iP1o9PT1VOlg9PT0iKj0iP1ouaW5kZXhPZihVKT49 MDpYPT09In49Ij8oIiAiK1orIiAiKS5pbmRleE9mKFUpPj0wOiFVP1omJlQhPT1m YWxzZTpYPT09IiE9Ij9aIT1VOlg9PT0iXj0iP1ouaW5kZXhPZihVKT09PTA6WD09 PSIkPSI/Wi5zdWJzdHIoWi5sZW5ndGgtVS5sZW5ndGgpPT09VTpYPT09Inw9Ij9a PT09VXx8Wi5zdWJzdHIoMCxVLmxlbmd0aCsxKT09PVUrIi0iOmZhbHNlfSxQT1M6 ZnVuY3Rpb24oWCxVLFYsWSl7dmFyIFQ9VVsyXSxXPUkuc2V0RmlsdGVyc1tUXTtp ZihXKXtyZXR1cm4gVyhYLFYsVSxZKX19fX07dmFyIE09SS5tYXRjaC5QT1M7Zm9y KHZhciBPIGluIEkubWF0Y2gpe0kubWF0Y2hbT109UmVnRXhwKEkubWF0Y2hbT10u c291cmNlKy8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJjZSl9dmFyIEU9 ZnVuY3Rpb24oVSxUKXtVPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKFUpO2lm KFQpe1QucHVzaC5hcHBseShULFUpO3JldHVybiBUfXJldHVybiBVfTt0cnl7QXJy YXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 LmNoaWxkTm9kZXMpfWNhdGNoKE4pe0U9ZnVuY3Rpb24oWCxXKXt2YXIgVT1XfHxb XTtpZihILmNhbGwoWCk9PT0iW29iamVjdCBBcnJheV0iKXtBcnJheS5wcm90b3R5 cGUucHVzaC5hcHBseShVLFgpfWVsc2V7aWYodHlwZW9mIFgubGVuZ3RoPT09Im51 bWJlciIpe2Zvcih2YXIgVj0wLFQ9WC5sZW5ndGg7VjxUO1YrKyl7VS5wdXNoKFhb Vl0pfX1lbHNle2Zvcih2YXIgVj0wO1hbVl07VisrKXtVLnB1c2goWFtWXSl9fX1y ZXR1cm4gVX19dmFyIEc7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbXBh cmVEb2N1bWVudFBvc2l0aW9uKXtHPWZ1bmN0aW9uKFUsVCl7dmFyIFY9VS5jb21w YXJlRG9jdW1lbnRQb3NpdGlvbihUKSY0Py0xOlU9PT1UPzA6MTtpZihWPT09MCl7 aGFzRHVwbGljYXRlPXRydWV9cmV0dXJuIFZ9fWVsc2V7aWYoInNvdXJjZUluZGV4 IiBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpe0c9ZnVuY3Rpb24oVSxUKXt2 YXIgVj1VLnNvdXJjZUluZGV4LVQuc291cmNlSW5kZXg7aWYoVj09PTApe2hhc0R1 cGxpY2F0ZT10cnVlfXJldHVybiBWfX1lbHNle2lmKGRvY3VtZW50LmNyZWF0ZVJh bmdlKXtHPWZ1bmN0aW9uKFcsVSl7dmFyIFY9Vy5vd25lckRvY3VtZW50LmNyZWF0 ZVJhbmdlKCksVD1VLm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtWLnNlbGVj dE5vZGUoVyk7Vi5jb2xsYXBzZSh0cnVlKTtULnNlbGVjdE5vZGUoVSk7VC5jb2xs YXBzZSh0cnVlKTt2YXIgWD1WLmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZS5T VEFSVF9UT19FTkQsVCk7aWYoWD09PTApe2hhc0R1cGxpY2F0ZT10cnVlfXJldHVy biBYfX19fShmdW5jdGlvbigpe3ZhciBVPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo ImZvcm0iKSxWPSJzY3JpcHQiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpO1UuaW5uZXJI VE1MPSI8aW5wdXQgbmFtZT0nIitWKyInLz4iO3ZhciBUPWRvY3VtZW50LmRvY3Vt ZW50RWxlbWVudDtULmluc2VydEJlZm9yZShVLFQuZmlyc3RDaGlsZCk7aWYoISFk b2N1bWVudC5nZXRFbGVtZW50QnlJZChWKSl7SS5maW5kLklEPWZ1bmN0aW9uKFgs WSxaKXtpZih0eXBlb2YgWS5nZXRFbGVtZW50QnlJZCE9PSJ1bmRlZmluZWQiJiYh Wil7dmFyIFc9WS5nZXRFbGVtZW50QnlJZChYWzFdKTtyZXR1cm4gVz9XLmlkPT09 WFsxXXx8dHlwZW9mIFcuZ2V0QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZX LmdldEF0dHJpYnV0ZU5vZGUoImlkIikubm9kZVZhbHVlPT09WFsxXT9bV106Zzpb XX19O0kuZmlsdGVyLklEPWZ1bmN0aW9uKFksVyl7dmFyIFg9dHlwZW9mIFkuZ2V0 QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZZLmdldEF0dHJpYnV0ZU5vZGUo ImlkIik7cmV0dXJuIFkubm9kZVR5cGU9PT0xJiZYJiZYLm5vZGVWYWx1ZT09PVd9 fVQucmVtb3ZlQ2hpbGQoVSl9KSgpOyhmdW5jdGlvbigpe3ZhciBUPWRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoImRpdiIpO1QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl YXRlQ29tbWVudCgiIikpO2lmKFQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5s ZW5ndGg+MCl7SS5maW5kLlRBRz1mdW5jdGlvbihVLFkpe3ZhciBYPVkuZ2V0RWxl bWVudHNCeVRhZ05hbWUoVVsxXSk7aWYoVVsxXT09PSIqIil7dmFyIFc9W107Zm9y KHZhciBWPTA7WFtWXTtWKyspe2lmKFhbVl0ubm9kZVR5cGU9PT0xKXtXLnB1c2go WFtWXSl9fVg9V31yZXR1cm4gWH19VC5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwv YT4iO2lmKFQuZmlyc3RDaGlsZCYmdHlwZW9mIFQuZmlyc3RDaGlsZC5nZXRBdHRy aWJ1dGUhPT0idW5kZWZpbmVkIiYmVC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgi aHJlZiIpIT09IiMiKXtJLmF0dHJIYW5kbGUuaHJlZj1mdW5jdGlvbihVKXtyZXR1 cm4gVS5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfX19KSgpO2lmKGRvY3VtZW50LnF1 ZXJ5U2VsZWN0b3JBbGwpeyhmdW5jdGlvbigpe3ZhciBUPUYsVT1kb2N1bWVudC5j cmVhdGVFbGVtZW50KCJkaXYiKTtVLmlubmVySFRNTD0iPHAgY2xhc3M9J1RFU1Qn PjwvcD4iO2lmKFUucXVlcnlTZWxlY3RvckFsbCYmVS5xdWVyeVNlbGVjdG9yQWxs KCIuVEVTVCIpLmxlbmd0aD09PTApe3JldHVybn1GPWZ1bmN0aW9uKFksWCxWLFcp e1g9WHx8ZG9jdW1lbnQ7aWYoIVcmJlgubm9kZVR5cGU9PT05JiYhUShYKSl7dHJ5 e3JldHVybiBFKFgucXVlcnlTZWxlY3RvckFsbChZKSxWKX1jYXRjaChaKXt9fXJl dHVybiBUKFksWCxWLFcpfTtGLmZpbmQ9VC5maW5kO0YuZmlsdGVyPVQuZmlsdGVy O0Yuc2VsZWN0b3JzPVQuc2VsZWN0b3JzO0YubWF0Y2hlcz1ULm1hdGNoZXN9KSgp fWlmKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmRvY3VtZW50LmRv Y3VtZW50RWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXsoZnVuY3Rpb24o KXt2YXIgVD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtULmlubmVySFRN TD0iPGRpdiBjbGFzcz0ndGVzdCBlJz48L2Rpdj48ZGl2IGNsYXNzPSd0ZXN0Jz48 L2Rpdj4iO2lmKFQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09 PTApe3JldHVybn1ULmxhc3RDaGlsZC5jbGFzc05hbWU9ImUiO2lmKFQuZ2V0RWxl bWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09PTEpe3JldHVybn1JLm9yZGVy LnNwbGljZSgxLDAsIkNMQVNTIik7SS5maW5kLkNMQVNTPWZ1bmN0aW9uKFUsVixX KXtpZih0eXBlb2YgVi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT09InVuZGVmaW5l ZCImJiFXKXtyZXR1cm4gVi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFVbMV0pfX19 KSgpfWZ1bmN0aW9uIFAoVSxaLFksYWQsYWEsYWMpe3ZhciBhYj1VPT0icHJldmlv dXNTaWJsaW5nIiYmIWFjO2Zvcih2YXIgVz0wLFY9YWQubGVuZ3RoO1c8VjtXKysp e3ZhciBUPWFkW1ddO2lmKFQpe2lmKGFiJiZULm5vZGVUeXBlPT09MSl7VC5zaXpj YWNoZT1ZO1Quc2l6c2V0PVd9VD1UW1VdO3ZhciBYPWZhbHNlO3doaWxlKFQpe2lm KFQuc2l6Y2FjaGU9PT1ZKXtYPWFkW1Quc2l6c2V0XTticmVha31pZihULm5vZGVU eXBlPT09MSYmIWFjKXtULnNpemNhY2hlPVk7VC5zaXpzZXQ9V31pZihULm5vZGVO YW1lPT09Wil7WD1UO2JyZWFrfVQ9VFtVXX1hZFtXXT1YfX19ZnVuY3Rpb24gUyhV LFosWSxhZCxhYSxhYyl7dmFyIGFiPVU9PSJwcmV2aW91c1NpYmxpbmciJiYhYWM7 Zm9yKHZhciBXPTAsVj1hZC5sZW5ndGg7VzxWO1crKyl7dmFyIFQ9YWRbV107aWYo VCl7aWYoYWImJlQubm9kZVR5cGU9PT0xKXtULnNpemNhY2hlPVk7VC5zaXpzZXQ9 V31UPVRbVV07dmFyIFg9ZmFsc2U7d2hpbGUoVCl7aWYoVC5zaXpjYWNoZT09PVkp e1g9YWRbVC5zaXpzZXRdO2JyZWFrfWlmKFQubm9kZVR5cGU9PT0xKXtpZighYWMp e1Quc2l6Y2FjaGU9WTtULnNpenNldD1XfWlmKHR5cGVvZiBaIT09InN0cmluZyIp e2lmKFQ9PT1aKXtYPXRydWU7YnJlYWt9fWVsc2V7aWYoRi5maWx0ZXIoWixbVF0p Lmxlbmd0aD4wKXtYPVQ7YnJlYWt9fX1UPVRbVV19YWRbV109WH19fXZhciBLPWRv Y3VtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP2Z1bmN0aW9uKFUsVCl7cmV0 dXJuIFUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oVCkmMTZ9OmZ1bmN0aW9uKFUs VCl7cmV0dXJuIFUhPT1UJiYoVS5jb250YWlucz9VLmNvbnRhaW5zKFQpOnRydWUp fTt2YXIgUT1mdW5jdGlvbihUKXtyZXR1cm4gVC5ub2RlVHlwZT09PTkmJlQuZG9j dW1lbnRFbGVtZW50Lm5vZGVOYW1lIT09IkhUTUwifHwhIVQub3duZXJEb2N1bWVu dCYmUShULm93bmVyRG9jdW1lbnQpfTt2YXIgSj1mdW5jdGlvbihULGFhKXt2YXIg Vz1bXSxYPSIiLFksVj1hYS5ub2RlVHlwZT9bYWFdOmFhO3doaWxlKChZPUkubWF0 Y2guUFNFVURPLmV4ZWMoVCkpKXtYKz1ZWzBdO1Q9VC5yZXBsYWNlKEkubWF0Y2gu UFNFVURPLCIiKX1UPUkucmVsYXRpdmVbVF0/VCsiKiI6VDtmb3IodmFyIFo9MCxV PVYubGVuZ3RoO1o8VTtaKyspe0YoVCxWW1pdLFcpfXJldHVybiBGLmZpbHRlcihY LFcpfTtvLmZpbmQ9RjtvLmZpbHRlcj1GLmZpbHRlcjtvLmV4cHI9Ri5zZWxlY3Rv cnM7by5leHByWyI6Il09by5leHByLmZpbHRlcnM7Ri5zZWxlY3RvcnMuZmlsdGVy cy5oaWRkZW49ZnVuY3Rpb24oVCl7cmV0dXJuIFQub2Zmc2V0V2lkdGg9PT0wfHxU Lm9mZnNldEhlaWdodD09PTB9O0Yuc2VsZWN0b3JzLmZpbHRlcnMudmlzaWJsZT1m dW5jdGlvbihUKXtyZXR1cm4gVC5vZmZzZXRXaWR0aD4wfHxULm9mZnNldEhlaWdo dD4wfTtGLnNlbGVjdG9ycy5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKFQpe3Jl dHVybiBvLmdyZXAoby50aW1lcnMsZnVuY3Rpb24oVSl7cmV0dXJuIFQ9PT1VLmVs ZW19KS5sZW5ndGh9O28ubXVsdGlGaWx0ZXI9ZnVuY3Rpb24oVixULFUpe2lmKFUp e1Y9Ijpub3QoIitWKyIpIn1yZXR1cm4gRi5tYXRjaGVzKFYsVCl9O28uZGlyPWZ1 bmN0aW9uKFYsVSl7dmFyIFQ9W10sVz1WW1VdO3doaWxlKFcmJlchPWRvY3VtZW50 KXtpZihXLm5vZGVUeXBlPT0xKXtULnB1c2goVyl9Vz1XW1VdfXJldHVybiBUfTtv Lm50aD1mdW5jdGlvbihYLFQsVixXKXtUPVR8fDE7dmFyIFU9MDtmb3IoO1g7WD1Y W1ZdKXtpZihYLm5vZGVUeXBlPT0xJiYrK1U9PVQpe2JyZWFrfX1yZXR1cm4gWH07 by5zaWJsaW5nPWZ1bmN0aW9uKFYsVSl7dmFyIFQ9W107Zm9yKDtWO1Y9Vi5uZXh0 U2libGluZyl7aWYoVi5ub2RlVHlwZT09MSYmViE9VSl7VC5wdXNoKFYpfX1yZXR1 cm4gVH07cmV0dXJuO2wuU2l6emxlPUZ9KSgpO28uZXZlbnQ9e2FkZDpmdW5jdGlv bihJLEYsSCxLKXtpZihJLm5vZGVUeXBlPT0zfHxJLm5vZGVUeXBlPT04KXtyZXR1 cm59aWYoSS5zZXRJbnRlcnZhbCYmSSE9bCl7ST1sfWlmKCFILmd1aWQpe0guZ3Vp ZD10aGlzLmd1aWQrK31pZihLIT09Zyl7dmFyIEc9SDtIPXRoaXMucHJveHkoRyk7 SC5kYXRhPUt9dmFyIEU9by5kYXRhKEksImV2ZW50cyIpfHxvLmRhdGEoSSwiZXZl bnRzIix7fSksSj1vLmRhdGEoSSwiaGFuZGxlIil8fG8uZGF0YShJLCJoYW5kbGUi LGZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBvIT09InVuZGVmaW5lZCImJiFvLmV2 ZW50LnRyaWdnZXJlZD9vLmV2ZW50LmhhbmRsZS5hcHBseShhcmd1bWVudHMuY2Fs bGVlLmVsZW0sYXJndW1lbnRzKTpnfSk7Si5lbGVtPUk7by5lYWNoKEYuc3BsaXQo L1xzKy8pLGZ1bmN0aW9uKE0sTil7dmFyIE89Ti5zcGxpdCgiLiIpO049Ty5zaGlm dCgpO0gudHlwZT1PLnNsaWNlKCkuc29ydCgpLmpvaW4oIi4iKTt2YXIgTD1FW05d O2lmKG8uZXZlbnQuc3BlY2lhbEFsbFtOXSl7by5ldmVudC5zcGVjaWFsQWxsW05d LnNldHVwLmNhbGwoSSxLLE8pfWlmKCFMKXtMPUVbTl09e307aWYoIW8uZXZlbnQu c3BlY2lhbFtOXXx8by5ldmVudC5zcGVjaWFsW05dLnNldHVwLmNhbGwoSSxLLE8p PT09ZmFsc2Upe2lmKEkuYWRkRXZlbnRMaXN0ZW5lcil7SS5hZGRFdmVudExpc3Rl bmVyKE4sSixmYWxzZSl9ZWxzZXtpZihJLmF0dGFjaEV2ZW50KXtJLmF0dGFjaEV2 ZW50KCJvbiIrTixKKX19fX1MW0guZ3VpZF09SDtvLmV2ZW50Lmdsb2JhbFtOXT10 cnVlfSk7ST1udWxsfSxndWlkOjEsZ2xvYmFsOnt9LHJlbW92ZTpmdW5jdGlvbihL LEgsSil7aWYoSy5ub2RlVHlwZT09M3x8Sy5ub2RlVHlwZT09OCl7cmV0dXJufXZh ciBHPW8uZGF0YShLLCJldmVudHMiKSxGLEU7aWYoRyl7aWYoSD09PWd8fCh0eXBl b2YgSD09PSJzdHJpbmciJiZILmNoYXJBdCgwKT09Ii4iKSl7Zm9yKHZhciBJIGlu IEcpe3RoaXMucmVtb3ZlKEssSSsoSHx8IiIpKX19ZWxzZXtpZihILnR5cGUpe0o9 SC5oYW5kbGVyO0g9SC50eXBlfW8uZWFjaChILnNwbGl0KC9ccysvKSxmdW5jdGlv bihNLE8pe3ZhciBRPU8uc3BsaXQoIi4iKTtPPVEuc2hpZnQoKTt2YXIgTj1SZWdF eHAoIihefFxcLikiK1Euc2xpY2UoKS5zb3J0KCkuam9pbigiLipcXC4iKSsiKFxc LnwkKSIpO2lmKEdbT10pe2lmKEope2RlbGV0ZSBHW09dW0ouZ3VpZF19ZWxzZXtm b3IodmFyIFAgaW4gR1tPXSl7aWYoTi50ZXN0KEdbT11bUF0udHlwZSkpe2RlbGV0 ZSBHW09dW1BdfX19aWYoby5ldmVudC5zcGVjaWFsQWxsW09dKXtvLmV2ZW50LnNw ZWNpYWxBbGxbT10udGVhcmRvd24uY2FsbChLLFEpfWZvcihGIGluIEdbT10pe2Jy ZWFrfWlmKCFGKXtpZighby5ldmVudC5zcGVjaWFsW09dfHxvLmV2ZW50LnNwZWNp YWxbT10udGVhcmRvd24uY2FsbChLLFEpPT09ZmFsc2Upe2lmKEsucmVtb3ZlRXZl bnRMaXN0ZW5lcil7Sy5yZW1vdmVFdmVudExpc3RlbmVyKE8sby5kYXRhKEssImhh bmRsZSIpLGZhbHNlKX1lbHNle2lmKEsuZGV0YWNoRXZlbnQpe0suZGV0YWNoRXZl bnQoIm9uIitPLG8uZGF0YShLLCJoYW5kbGUiKSl9fX1GPW51bGw7ZGVsZXRlIEdb T119fX0pfWZvcihGIGluIEcpe2JyZWFrfWlmKCFGKXt2YXIgTD1vLmRhdGEoSywi aGFuZGxlIik7aWYoTCl7TC5lbGVtPW51bGx9by5yZW1vdmVEYXRhKEssImV2ZW50 cyIpO28ucmVtb3ZlRGF0YShLLCJoYW5kbGUiKX19fSx0cmlnZ2VyOmZ1bmN0aW9u KEksSyxILEUpe3ZhciBHPUkudHlwZXx8STtpZighRSl7ST10eXBlb2YgST09PSJv YmplY3QiP0lbaF0/STpvLmV4dGVuZChvLkV2ZW50KEcpLEkpOm8uRXZlbnQoRyk7 aWYoRy5pbmRleE9mKCIhIik+PTApe0kudHlwZT1HPUcuc2xpY2UoMCwtMSk7SS5l eGNsdXNpdmU9dHJ1ZX1pZighSCl7SS5zdG9wUHJvcGFnYXRpb24oKTtpZih0aGlz Lmdsb2JhbFtHXSl7by5lYWNoKG8uY2FjaGUsZnVuY3Rpb24oKXtpZih0aGlzLmV2 ZW50cyYmdGhpcy5ldmVudHNbR10pe28uZXZlbnQudHJpZ2dlcihJLEssdGhpcy5o YW5kbGUuZWxlbSl9fSl9fWlmKCFIfHxILm5vZGVUeXBlPT0zfHxILm5vZGVUeXBl PT04KXtyZXR1cm4gZ31JLnJlc3VsdD1nO0kudGFyZ2V0PUg7Sz1vLm1ha2VBcnJh eShLKTtLLnVuc2hpZnQoSSl9SS5jdXJyZW50VGFyZ2V0PUg7dmFyIEo9by5kYXRh KEgsImhhbmRsZSIpO2lmKEope0ouYXBwbHkoSCxLKX1pZigoIUhbR118fChvLm5v ZGVOYW1lKEgsImEiKSYmRz09ImNsaWNrIikpJiZIWyJvbiIrR10mJkhbIm9uIitH XS5hcHBseShILEspPT09ZmFsc2Upe0kucmVzdWx0PWZhbHNlfWlmKCFFJiZIW0dd JiYhSS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmIShvLm5vZGVOYW1lKEgsImEiKSYm Rz09ImNsaWNrIikpe3RoaXMudHJpZ2dlcmVkPXRydWU7dHJ5e0hbR10oKX1jYXRj aChMKXt9fXRoaXMudHJpZ2dlcmVkPWZhbHNlO2lmKCFJLmlzUHJvcGFnYXRpb25T dG9wcGVkKCkpe3ZhciBGPUgucGFyZW50Tm9kZXx8SC5vd25lckRvY3VtZW50O2lm KEYpe28uZXZlbnQudHJpZ2dlcihJLEssRix0cnVlKX19fSxoYW5kbGU6ZnVuY3Rp b24oSyl7dmFyIEosRTtLPWFyZ3VtZW50c1swXT1vLmV2ZW50LmZpeChLfHxsLmV2 ZW50KTtLLmN1cnJlbnRUYXJnZXQ9dGhpczt2YXIgTD1LLnR5cGUuc3BsaXQoIi4i KTtLLnR5cGU9TC5zaGlmdCgpO0o9IUwubGVuZ3RoJiYhSy5leGNsdXNpdmU7dmFy IEk9UmVnRXhwKCIoXnxcXC4pIitMLnNsaWNlKCkuc29ydCgpLmpvaW4oIi4qXFwu IikrIihcXC58JCkiKTtFPShvLmRhdGEodGhpcywiZXZlbnRzIil8fHt9KVtLLnR5 cGVdO2Zvcih2YXIgRyBpbiBFKXt2YXIgSD1FW0ddO2lmKEp8fEkudGVzdChILnR5 cGUpKXtLLmhhbmRsZXI9SDtLLmRhdGE9SC5kYXRhO3ZhciBGPUguYXBwbHkodGhp cyxhcmd1bWVudHMpO2lmKEYhPT1nKXtLLnJlc3VsdD1GO2lmKEY9PT1mYWxzZSl7 Sy5wcmV2ZW50RGVmYXVsdCgpO0suc3RvcFByb3BhZ2F0aW9uKCl9fWlmKEsuaXNJ bW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSl7YnJlYWt9fX19LHByb3BzOiJh bHRLZXkgYXR0ckNoYW5nZSBhdHRyTmFtZSBidWJibGVzIGJ1dHRvbiBjYW5jZWxh YmxlIGNoYXJDb2RlIGNsaWVudFggY2xpZW50WSBjdHJsS2V5IGN1cnJlbnRUYXJn ZXQgZGF0YSBkZXRhaWwgZXZlbnRQaGFzZSBmcm9tRWxlbWVudCBoYW5kbGVyIGtl eUNvZGUgbWV0YUtleSBuZXdWYWx1ZSBvcmlnaW5hbFRhcmdldCBwYWdlWCBwYWdl WSBwcmV2VmFsdWUgcmVsYXRlZE5vZGUgcmVsYXRlZFRhcmdldCBzY3JlZW5YIHNj cmVlblkgc2hpZnRLZXkgc3JjRWxlbWVudCB0YXJnZXQgdG9FbGVtZW50IHZpZXcg d2hlZWxEZWx0YSB3aGljaCIuc3BsaXQoIiAiKSxmaXg6ZnVuY3Rpb24oSCl7aWYo SFtoXSl7cmV0dXJuIEh9dmFyIEY9SDtIPW8uRXZlbnQoRik7Zm9yKHZhciBHPXRo aXMucHJvcHMubGVuZ3RoLEo7Rzspe0o9dGhpcy5wcm9wc1stLUddO0hbSl09RltK XX1pZighSC50YXJnZXQpe0gudGFyZ2V0PUguc3JjRWxlbWVudHx8ZG9jdW1lbnR9 aWYoSC50YXJnZXQubm9kZVR5cGU9PTMpe0gudGFyZ2V0PUgudGFyZ2V0LnBhcmVu dE5vZGV9aWYoIUgucmVsYXRlZFRhcmdldCYmSC5mcm9tRWxlbWVudCl7SC5yZWxh dGVkVGFyZ2V0PUguZnJvbUVsZW1lbnQ9PUgudGFyZ2V0P0gudG9FbGVtZW50Okgu ZnJvbUVsZW1lbnR9aWYoSC5wYWdlWD09bnVsbCYmSC5jbGllbnRYIT1udWxsKXt2 YXIgST1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsRT1kb2N1bWVudC5ib2R5O0gu cGFnZVg9SC5jbGllbnRYKyhJJiZJLnNjcm9sbExlZnR8fEUmJkUuc2Nyb2xsTGVm dHx8MCktKEkuY2xpZW50TGVmdHx8MCk7SC5wYWdlWT1ILmNsaWVudFkrKEkmJkku c2Nyb2xsVG9wfHxFJiZFLnNjcm9sbFRvcHx8MCktKEkuY2xpZW50VG9wfHwwKX1p ZighSC53aGljaCYmKChILmNoYXJDb2RlfHxILmNoYXJDb2RlPT09MCk/SC5jaGFy Q29kZTpILmtleUNvZGUpKXtILndoaWNoPUguY2hhckNvZGV8fEgua2V5Q29kZX1p ZighSC5tZXRhS2V5JiZILmN0cmxLZXkpe0gubWV0YUtleT1ILmN0cmxLZXl9aWYo IUgud2hpY2gmJkguYnV0dG9uKXtILndoaWNoPShILmJ1dHRvbiYxPzE6KEguYnV0 dG9uJjI/MzooSC5idXR0b24mND8yOjApKSl9cmV0dXJuIEh9LHByb3h5OmZ1bmN0 aW9uKEYsRSl7RT1FfHxmdW5jdGlvbigpe3JldHVybiBGLmFwcGx5KHRoaXMsYXJn dW1lbnRzKX07RS5ndWlkPUYuZ3VpZD1GLmd1aWR8fEUuZ3VpZHx8dGhpcy5ndWlk Kys7cmV0dXJuIEV9LHNwZWNpYWw6e3JlYWR5OntzZXR1cDpCLHRlYXJkb3duOmZ1 bmN0aW9uKCl7fX19LHNwZWNpYWxBbGw6e2xpdmU6e3NldHVwOmZ1bmN0aW9uKEUs Ril7by5ldmVudC5hZGQodGhpcyxGWzBdLGMpfSx0ZWFyZG93bjpmdW5jdGlvbihH KXtpZihHLmxlbmd0aCl7dmFyIEU9MCxGPVJlZ0V4cCgiKF58XFwuKSIrR1swXSsi KFxcLnwkKSIpO28uZWFjaCgoby5kYXRhKHRoaXMsImV2ZW50cyIpLmxpdmV8fHt9 KSxmdW5jdGlvbigpe2lmKEYudGVzdCh0aGlzLnR5cGUpKXtFKyt9fSk7aWYoRTwx KXtvLmV2ZW50LnJlbW92ZSh0aGlzLEdbMF0sYyl9fX19fX07by5FdmVudD1mdW5j dGlvbihFKXtpZighdGhpcy5wcmV2ZW50RGVmYXVsdCl7cmV0dXJuIG5ldyBvLkV2 ZW50KEUpfWlmKEUmJkUudHlwZSl7dGhpcy5vcmlnaW5hbEV2ZW50PUU7dGhpcy50 eXBlPUUudHlwZX1lbHNle3RoaXMudHlwZT1FfXRoaXMudGltZVN0YW1wPWUoKTt0 aGlzW2hdPXRydWV9O2Z1bmN0aW9uIGsoKXtyZXR1cm4gZmFsc2V9ZnVuY3Rpb24g dSgpe3JldHVybiB0cnVlfW8uRXZlbnQucHJvdG90eXBlPXtwcmV2ZW50RGVmYXVs dDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXU7dmFyIEU9dGhp cy5vcmlnaW5hbEV2ZW50O2lmKCFFKXtyZXR1cm59aWYoRS5wcmV2ZW50RGVmYXVs dCl7RS5wcmV2ZW50RGVmYXVsdCgpfUUucmV0dXJuVmFsdWU9ZmFsc2V9LHN0b3BQ cm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9 dTt2YXIgRT10aGlzLm9yaWdpbmFsRXZlbnQ7aWYoIUUpe3JldHVybn1pZihFLnN0 b3BQcm9wYWdhdGlvbil7RS5zdG9wUHJvcGFnYXRpb24oKX1FLmNhbmNlbEJ1YmJs ZT10cnVlfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt0aGlz LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPXU7dGhpcy5zdG9wUHJvcGFn YXRpb24oKX0saXNEZWZhdWx0UHJldmVudGVkOmssaXNQcm9wYWdhdGlvblN0b3Bw ZWQ6ayxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDprfTt2YXIgYT1mdW5j dGlvbihGKXt2YXIgRT1GLnJlbGF0ZWRUYXJnZXQ7d2hpbGUoRSYmRSE9dGhpcyl7 dHJ5e0U9RS5wYXJlbnROb2RlfWNhdGNoKEcpe0U9dGhpc319aWYoRSE9dGhpcyl7 Ri50eXBlPUYuZGF0YTtvLmV2ZW50LmhhbmRsZS5hcHBseSh0aGlzLGFyZ3VtZW50 cyl9fTtvLmVhY2goe21vdXNlb3ZlcjoibW91c2VlbnRlciIsbW91c2VvdXQ6Im1v dXNlbGVhdmUifSxmdW5jdGlvbihGLEUpe28uZXZlbnQuc3BlY2lhbFtFXT17c2V0 dXA6ZnVuY3Rpb24oKXtvLmV2ZW50LmFkZCh0aGlzLEYsYSxFKX0sdGVhcmRvd246 ZnVuY3Rpb24oKXtvLmV2ZW50LnJlbW92ZSh0aGlzLEYsYSl9fX0pO28uZm4uZXh0 ZW5kKHtiaW5kOmZ1bmN0aW9uKEYsRyxFKXtyZXR1cm4gRj09InVubG9hZCI/dGhp cy5vbmUoRixHLEUpOnRoaXMuZWFjaChmdW5jdGlvbigpe28uZXZlbnQuYWRkKHRo aXMsRixFfHxHLEUmJkcpfSl9LG9uZTpmdW5jdGlvbihHLEgsRil7dmFyIEU9by5l dmVudC5wcm94eShGfHxILGZ1bmN0aW9uKEkpe28odGhpcykudW5iaW5kKEksRSk7 cmV0dXJuKEZ8fEgpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pO3JldHVybiB0aGlz LmVhY2goZnVuY3Rpb24oKXtvLmV2ZW50LmFkZCh0aGlzLEcsRSxGJiZIKX0pfSx1 bmJpbmQ6ZnVuY3Rpb24oRixFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7 by5ldmVudC5yZW1vdmUodGhpcyxGLEUpfSl9LHRyaWdnZXI6ZnVuY3Rpb24oRSxG KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5ldmVudC50cmlnZ2VyKEUs Rix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihFLEcpe2lmKHRoaXNb MF0pe3ZhciBGPW8uRXZlbnQoRSk7Ri5wcmV2ZW50RGVmYXVsdCgpO0Yuc3RvcFBy b3BhZ2F0aW9uKCk7by5ldmVudC50cmlnZ2VyKEYsRyx0aGlzWzBdKTtyZXR1cm4g Ri5yZXN1bHR9fSx0b2dnbGU6ZnVuY3Rpb24oRyl7dmFyIEU9YXJndW1lbnRzLEY9 MTt3aGlsZShGPEUubGVuZ3RoKXtvLmV2ZW50LnByb3h5KEcsRVtGKytdKX1yZXR1 cm4gdGhpcy5jbGljayhvLmV2ZW50LnByb3h5KEcsZnVuY3Rpb24oSCl7dGhpcy5s YXN0VG9nZ2xlPSh0aGlzLmxhc3RUb2dnbGV8fDApJUY7SC5wcmV2ZW50RGVmYXVs dCgpO3JldHVybiBFW3RoaXMubGFzdFRvZ2dsZSsrXS5hcHBseSh0aGlzLGFyZ3Vt ZW50cyl8fGZhbHNlfSkpfSxob3ZlcjpmdW5jdGlvbihFLEYpe3JldHVybiB0aGlz Lm1vdXNlZW50ZXIoRSkubW91c2VsZWF2ZShGKX0scmVhZHk6ZnVuY3Rpb24oRSl7 QigpO2lmKG8uaXNSZWFkeSl7RS5jYWxsKGRvY3VtZW50LG8pfWVsc2V7by5yZWFk eUxpc3QucHVzaChFKX1yZXR1cm4gdGhpc30sbGl2ZTpmdW5jdGlvbihHLEYpe3Zh ciBFPW8uZXZlbnQucHJveHkoRik7RS5ndWlkKz10aGlzLnNlbGVjdG9yK0c7byhk b2N1bWVudCkuYmluZChpKEcsdGhpcy5zZWxlY3RvciksdGhpcy5zZWxlY3RvcixF KTtyZXR1cm4gdGhpc30sZGllOmZ1bmN0aW9uKEYsRSl7byhkb2N1bWVudCkudW5i aW5kKGkoRix0aGlzLnNlbGVjdG9yKSxFP3tndWlkOkUuZ3VpZCt0aGlzLnNlbGVj dG9yK0Z9Om51bGwpO3JldHVybiB0aGlzfX0pO2Z1bmN0aW9uIGMoSCl7dmFyIEU9 UmVnRXhwKCIoXnxcXC4pIitILnR5cGUrIihcXC58JCkiKSxHPXRydWUsRj1bXTtv LmVhY2goby5kYXRhKHRoaXMsImV2ZW50cyIpLmxpdmV8fFtdLGZ1bmN0aW9uKEks Sil7aWYoRS50ZXN0KEoudHlwZSkpe3ZhciBLPW8oSC50YXJnZXQpLmNsb3Nlc3Qo Si5kYXRhKVswXTtpZihLKXtGLnB1c2goe2VsZW06SyxmbjpKfSl9fX0pO0Yuc29y dChmdW5jdGlvbihKLEkpe3JldHVybiBvLmRhdGEoSi5lbGVtLCJjbG9zZXN0Iikt by5kYXRhKEkuZWxlbSwiY2xvc2VzdCIpfSk7by5lYWNoKEYsZnVuY3Rpb24oKXtp Zih0aGlzLmZuLmNhbGwodGhpcy5lbGVtLEgsdGhpcy5mbi5kYXRhKT09PWZhbHNl KXtyZXR1cm4oRz1mYWxzZSl9fSk7cmV0dXJuIEd9ZnVuY3Rpb24gaShGLEUpe3Jl dHVyblsibGl2ZSIsRixFLnJlcGxhY2UoL1wuL2csImAiKS5yZXBsYWNlKC8gL2cs InwiKV0uam9pbigiLiIpfW8uZXh0ZW5kKHtpc1JlYWR5OmZhbHNlLHJlYWR5TGlz dDpbXSxyZWFkeTpmdW5jdGlvbigpe2lmKCFvLmlzUmVhZHkpe28uaXNSZWFkeT10 cnVlO2lmKG8ucmVhZHlMaXN0KXtvLmVhY2goby5yZWFkeUxpc3QsZnVuY3Rpb24o KXt0aGlzLmNhbGwoZG9jdW1lbnQsbyl9KTtvLnJlYWR5TGlzdD1udWxsfW8oZG9j dW1lbnQpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpfX19KTt2YXIgeD1mYWxzZTtm dW5jdGlvbiBCKCl7aWYoeCl7cmV0dXJufXg9dHJ1ZTtpZihkb2N1bWVudC5hZGRF dmVudExpc3RlbmVyKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250 ZW50TG9hZGVkIixmdW5jdGlvbigpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVu ZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGFyZ3VtZW50cy5jYWxsZWUsZmFsc2UpO28u cmVhZHkoKX0sZmFsc2UpfWVsc2V7aWYoZG9jdW1lbnQuYXR0YWNoRXZlbnQpe2Rv Y3VtZW50LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGZ1bmN0aW9u KCl7aWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpe2RvY3VtZW50 LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGFyZ3VtZW50cy5jYWxs ZWUpO28ucmVhZHkoKX19KTtpZihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9T Y3JvbGwmJmw9PWwudG9wKXsoZnVuY3Rpb24oKXtpZihvLmlzUmVhZHkpe3JldHVy bn10cnl7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0Iil9 Y2F0Y2goRSl7c2V0VGltZW91dChhcmd1bWVudHMuY2FsbGVlLDApO3JldHVybn1v LnJlYWR5KCl9KSgpfX19by5ldmVudC5hZGQobCwibG9hZCIsby5yZWFkeSl9by5l YWNoKCgiYmx1cixmb2N1cyxsb2FkLHJlc2l6ZSxzY3JvbGwsdW5sb2FkLGNsaWNr LGRibGNsaWNrLG1vdXNlZG93bixtb3VzZXVwLG1vdXNlbW92ZSxtb3VzZW92ZXIs bW91c2VvdXQsbW91c2VlbnRlcixtb3VzZWxlYXZlLGNoYW5nZSxzZWxlY3Qsc3Vi bWl0LGtleWRvd24sa2V5cHJlc3Msa2V5dXAsZXJyb3IiKS5zcGxpdCgiLCIpLGZ1 bmN0aW9uKEYsRSl7by5mbltFXT1mdW5jdGlvbihHKXtyZXR1cm4gRz90aGlzLmJp bmQoRSxHKTp0aGlzLnRyaWdnZXIoRSl9fSk7byhsKS5iaW5kKCJ1bmxvYWQiLGZ1 bmN0aW9uKCl7Zm9yKHZhciBFIGluIG8uY2FjaGUpe2lmKEUhPTEmJm8uY2FjaGVb RV0uaGFuZGxlKXtvLmV2ZW50LnJlbW92ZShvLmNhY2hlW0VdLmhhbmRsZS5lbGVt KX19fSk7KGZ1bmN0aW9uKCl7by5zdXBwb3J0PXt9O3ZhciBGPWRvY3VtZW50LmRv Y3VtZW50RWxlbWVudCxHPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIp LEs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksSj0ic2NyaXB0IisobmV3 IERhdGUpLmdldFRpbWUoKTtLLnN0eWxlLmRpc3BsYXk9Im5vbmUiO0suaW5uZXJI VE1MPScgICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0iL2EiIHN0eWxl PSJjb2xvcjpyZWQ7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41OyI+YTwvYT48c2VsZWN0 PjxvcHRpb24+dGV4dDwvb3B0aW9uPjwvc2VsZWN0PjxvYmplY3Q+PHBhcmFtLz48 L29iamVjdD4nO3ZhciBIPUsuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxFPUsu Z2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTtpZighSHx8IUgubGVuZ3RofHwh RSl7cmV0dXJufW8uc3VwcG9ydD17bGVhZGluZ1doaXRlc3BhY2U6Sy5maXJzdENo aWxkLm5vZGVUeXBlPT0zLHRib2R5OiFLLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0 Ym9keSIpLmxlbmd0aCxvYmplY3RBbGw6ISFLLmdldEVsZW1lbnRzQnlUYWdOYW1l KCJvYmplY3QiKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aCxo dG1sU2VyaWFsaXplOiEhSy5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxl bmd0aCxzdHlsZTovcmVkLy50ZXN0KEUuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxo cmVmTm9ybWFsaXplZDpFLmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixvcGFj aXR5OkUuc3R5bGUub3BhY2l0eT09PSIwLjUiLGNzc0Zsb2F0OiEhRS5zdHlsZS5j c3NGbG9hdCxzY3JpcHRFdmFsOmZhbHNlLG5vQ2xvbmVFdmVudDp0cnVlLGJveE1v ZGVsOm51bGx9O0cudHlwZT0idGV4dC9qYXZhc2NyaXB0Ijt0cnl7Ry5hcHBlbmRD aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgid2luZG93LiIrSisiPTE7Iikp fWNhdGNoKEkpe31GLmluc2VydEJlZm9yZShHLEYuZmlyc3RDaGlsZCk7aWYobFtK XSl7by5zdXBwb3J0LnNjcmlwdEV2YWw9dHJ1ZTtkZWxldGUgbFtKXX1GLnJlbW92 ZUNoaWxkKEcpO2lmKEsuYXR0YWNoRXZlbnQmJksuZmlyZUV2ZW50KXtLLmF0dGFj aEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbigpe28uc3VwcG9ydC5ub0Nsb25lRXZl bnQ9ZmFsc2U7Sy5kZXRhY2hFdmVudCgib25jbGljayIsYXJndW1lbnRzLmNhbGxl ZSl9KTtLLmNsb25lTm9kZSh0cnVlKS5maXJlRXZlbnQoIm9uY2xpY2siKX1vKGZ1 bmN0aW9uKCl7dmFyIEw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7TC5z dHlsZS53aWR0aD1MLnN0eWxlLnBhZGRpbmdMZWZ0PSIxcHgiO2RvY3VtZW50LmJv ZHkuYXBwZW5kQ2hpbGQoTCk7by5ib3hNb2RlbD1vLnN1cHBvcnQuYm94TW9kZWw9 TC5vZmZzZXRXaWR0aD09PTI7ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChMKS5z dHlsZS5kaXNwbGF5PSJub25lIn0pfSkoKTt2YXIgdz1vLnN1cHBvcnQuY3NzRmxv YXQ/ImNzc0Zsb2F0Ijoic3R5bGVGbG9hdCI7by5wcm9wcz17ImZvciI6Imh0bWxG b3IiLCJjbGFzcyI6ImNsYXNzTmFtZSIsImZsb2F0Ijp3LGNzc0Zsb2F0Oncsc3R5 bGVGbG9hdDp3LHJlYWRvbmx5OiJyZWFkT25seSIsbWF4bGVuZ3RoOiJtYXhMZW5n dGgiLGNlbGxzcGFjaW5nOiJjZWxsU3BhY2luZyIscm93c3Bhbjoicm93U3BhbiIs dGFiaW5kZXg6InRhYkluZGV4In07by5mbi5leHRlbmQoe19sb2FkOm8uZm4ubG9h ZCxsb2FkOmZ1bmN0aW9uKEcsSixLKXtpZih0eXBlb2YgRyE9PSJzdHJpbmciKXty ZXR1cm4gdGhpcy5fbG9hZChHKX12YXIgST1HLmluZGV4T2YoIiAiKTtpZihJPj0w KXt2YXIgRT1HLnNsaWNlKEksRy5sZW5ndGgpO0c9Ry5zbGljZSgwLEkpfXZhciBI PSJHRVQiO2lmKEope2lmKG8uaXNGdW5jdGlvbihKKSl7Sz1KO0o9bnVsbH1lbHNl e2lmKHR5cGVvZiBKPT09Im9iamVjdCIpe0o9by5wYXJhbShKKTtIPSJQT1NUIn19 fXZhciBGPXRoaXM7by5hamF4KHt1cmw6Ryx0eXBlOkgsZGF0YVR5cGU6Imh0bWwi LGRhdGE6Sixjb21wbGV0ZTpmdW5jdGlvbihNLEwpe2lmKEw9PSJzdWNjZXNzInx8 TD09Im5vdG1vZGlmaWVkIil7Ri5odG1sKEU/bygiPGRpdi8+IikuYXBwZW5kKE0u cmVzcG9uc2VUZXh0LnJlcGxhY2UoLzxzY3JpcHQoLnxccykqP1wvc2NyaXB0Pi9n LCIiKSkuZmluZChFKTpNLnJlc3BvbnNlVGV4dCl9aWYoSyl7Ri5lYWNoKEssW00u cmVzcG9uc2VUZXh0LEwsTV0pfX19KTtyZXR1cm4gdGhpc30sc2VyaWFsaXplOmZ1 bmN0aW9uKCl7cmV0dXJuIG8ucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0s c2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9vLm1ha2VBcnJheSh0aGlzLmVsZW1l bnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSYm IXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fC9zZWxlY3R8dGV4dGFyZWEv aS50ZXN0KHRoaXMubm9kZU5hbWUpfHwvdGV4dHxoaWRkZW58cGFzc3dvcmR8c2Vh cmNoL2kudGVzdCh0aGlzLnR5cGUpKX0pLm1hcChmdW5jdGlvbihFLEYpe3ZhciBH PW8odGhpcykudmFsKCk7cmV0dXJuIEc9PW51bGw/bnVsbDpvLmlzQXJyYXkoRyk/ by5tYXAoRyxmdW5jdGlvbihJLEgpe3JldHVybntuYW1lOkYubmFtZSx2YWx1ZTpJ fX0pOntuYW1lOkYubmFtZSx2YWx1ZTpHfX0pLmdldCgpfX0pO28uZWFjaCgiYWph eFN0YXJ0LGFqYXhTdG9wLGFqYXhDb21wbGV0ZSxhamF4RXJyb3IsYWpheFN1Y2Nl c3MsYWpheFNlbmQiLnNwbGl0KCIsIiksZnVuY3Rpb24oRSxGKXtvLmZuW0ZdPWZ1 bmN0aW9uKEcpe3JldHVybiB0aGlzLmJpbmQoRixHKX19KTt2YXIgcj1lKCk7by5l eHRlbmQoe2dldDpmdW5jdGlvbihFLEcsSCxGKXtpZihvLmlzRnVuY3Rpb24oRykp e0g9RztHPW51bGx9cmV0dXJuIG8uYWpheCh7dHlwZToiR0VUIix1cmw6RSxkYXRh Okcsc3VjY2VzczpILGRhdGFUeXBlOkZ9KX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKEUs Ril7cmV0dXJuIG8uZ2V0KEUsbnVsbCxGLCJzY3JpcHQiKX0sZ2V0SlNPTjpmdW5j dGlvbihFLEYsRyl7cmV0dXJuIG8uZ2V0KEUsRixHLCJqc29uIil9LHBvc3Q6ZnVu Y3Rpb24oRSxHLEgsRil7aWYoby5pc0Z1bmN0aW9uKEcpKXtIPUc7Rz17fX1yZXR1 cm4gby5hamF4KHt0eXBlOiJQT1NUIix1cmw6RSxkYXRhOkcsc3VjY2VzczpILGRh dGFUeXBlOkZ9KX0sYWpheFNldHVwOmZ1bmN0aW9uKEUpe28uZXh0ZW5kKG8uYWph eFNldHRpbmdzLEUpfSxhamF4U2V0dGluZ3M6e3VybDpsb2NhdGlvbi5ocmVmLGds b2JhbDp0cnVlLHR5cGU6IkdFVCIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gt d3d3LWZvcm0tdXJsZW5jb2RlZCIscHJvY2Vzc0RhdGE6dHJ1ZSxhc3luYzp0cnVl LHhocjpmdW5jdGlvbigpe3JldHVybiBsLkFjdGl2ZVhPYmplY3Q/bmV3IEFjdGl2 ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIik6bmV3IFhNTEh0dHBSZXF1ZXN0 KCl9LGFjY2VwdHM6e3htbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsaHRt bDoidGV4dC9odG1sIixzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRp b24vamF2YXNjcmlwdCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZh c2NyaXB0Iix0ZXh0OiJ0ZXh0L3BsYWluIixfZGVmYXVsdDoiKi8qIn19LGxhc3RN b2RpZmllZDp7fSxhamF4OmZ1bmN0aW9uKE0pe009by5leHRlbmQodHJ1ZSxNLG8u ZXh0ZW5kKHRydWUse30sby5hamF4U2V0dGluZ3MsTSkpO3ZhciBXLEY9Lz1cPygm fCQpL2csUixWLEc9TS50eXBlLnRvVXBwZXJDYXNlKCk7aWYoTS5kYXRhJiZNLnBy b2Nlc3NEYXRhJiZ0eXBlb2YgTS5kYXRhIT09InN0cmluZyIpe00uZGF0YT1vLnBh cmFtKE0uZGF0YSl9aWYoTS5kYXRhVHlwZT09Impzb25wIil7aWYoRz09IkdFVCIp e2lmKCFNLnVybC5tYXRjaChGKSl7TS51cmwrPShNLnVybC5tYXRjaCgvXD8vKT8i JiI6Ij8iKSsoTS5qc29ucHx8ImNhbGxiYWNrIikrIj0/In19ZWxzZXtpZighTS5k YXRhfHwhTS5kYXRhLm1hdGNoKEYpKXtNLmRhdGE9KE0uZGF0YT9NLmRhdGErIiYi OiIiKSsoTS5qc29ucHx8ImNhbGxiYWNrIikrIj0/In19TS5kYXRhVHlwZT0ianNv biJ9aWYoTS5kYXRhVHlwZT09Impzb24iJiYoTS5kYXRhJiZNLmRhdGEubWF0Y2go Ril8fE0udXJsLm1hdGNoKEYpKSl7Vz0ianNvbnAiK3IrKztpZihNLmRhdGEpe00u ZGF0YT0oTS5kYXRhKyIiKS5yZXBsYWNlKEYsIj0iK1crIiQxIil9TS51cmw9TS51 cmwucmVwbGFjZShGLCI9IitXKyIkMSIpO00uZGF0YVR5cGU9InNjcmlwdCI7bFtX XT1mdW5jdGlvbihYKXtWPVg7SSgpO0woKTtsW1ddPWc7dHJ5e2RlbGV0ZSBsW1dd fWNhdGNoKFkpe31pZihIKXtILnJlbW92ZUNoaWxkKFQpfX19aWYoTS5kYXRhVHlw ZT09InNjcmlwdCImJk0uY2FjaGU9PW51bGwpe00uY2FjaGU9ZmFsc2V9aWYoTS5j YWNoZT09PWZhbHNlJiZHPT0iR0VUIil7dmFyIEU9ZSgpO3ZhciBVPU0udXJsLnJl cGxhY2UoLyhcP3wmKV89Lio/KCZ8JCkvLCIkMV89IitFKyIkMiIpO00udXJsPVUr KChVPT1NLnVybCk/KE0udXJsLm1hdGNoKC9cPy8pPyImIjoiPyIpKyJfPSIrRToi Iil9aWYoTS5kYXRhJiZHPT0iR0VUIil7TS51cmwrPShNLnVybC5tYXRjaCgvXD8v KT8iJiI6Ij8iKStNLmRhdGE7TS5kYXRhPW51bGx9aWYoTS5nbG9iYWwmJiFvLmFj dGl2ZSsrKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpfXZhciBRPS9eKFx3 KzopP1wvXC8oW15cLz8jXSspLy5leGVjKE0udXJsKTtpZihNLmRhdGFUeXBlPT0i c2NyaXB0IiYmRz09IkdFVCImJlEmJihRWzFdJiZRWzFdIT1sb2NhdGlvbi5wcm90 b2NvbHx8UVsyXSE9bG9jYXRpb24uaG9zdCkpe3ZhciBIPWRvY3VtZW50LmdldEVs ZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07dmFyIFQ9ZG9jdW1lbnQuY3JlYXRl RWxlbWVudCgic2NyaXB0Iik7VC5zcmM9TS51cmw7aWYoTS5zY3JpcHRDaGFyc2V0 KXtULmNoYXJzZXQ9TS5zY3JpcHRDaGFyc2V0fWlmKCFXKXt2YXIgTz1mYWxzZTtU Lm9ubG9hZD1ULm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKCFPJiYo IXRoaXMucmVhZHlTdGF0ZXx8dGhpcy5yZWFkeVN0YXRlPT0ibG9hZGVkInx8dGhp cy5yZWFkeVN0YXRlPT0iY29tcGxldGUiKSl7Tz10cnVlO0koKTtMKCk7VC5vbmxv YWQ9VC5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbDtILnJlbW92ZUNoaWxkKFQpfX19 SC5hcHBlbmRDaGlsZChUKTtyZXR1cm4gZ312YXIgSz1mYWxzZTt2YXIgSj1NLnho cigpO2lmKE0udXNlcm5hbWUpe0oub3BlbihHLE0udXJsLE0uYXN5bmMsTS51c2Vy bmFtZSxNLnBhc3N3b3JkKX1lbHNle0oub3BlbihHLE0udXJsLE0uYXN5bmMpfXRy eXtpZihNLmRhdGEpe0ouc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixN LmNvbnRlbnRUeXBlKX1pZihNLmlmTW9kaWZpZWQpe0ouc2V0UmVxdWVzdEhlYWRl cigiSWYtTW9kaWZpZWQtU2luY2UiLG8ubGFzdE1vZGlmaWVkW00udXJsXXx8IlRo dSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIil9Si5zZXRSZXF1ZXN0SGVhZGVy KCJYLVJlcXVlc3RlZC1XaXRoIiwiWE1MSHR0cFJlcXVlc3QiKTtKLnNldFJlcXVl c3RIZWFkZXIoIkFjY2VwdCIsTS5kYXRhVHlwZSYmTS5hY2NlcHRzW00uZGF0YVR5 cGVdP00uYWNjZXB0c1tNLmRhdGFUeXBlXSsiLCAqLyoiOk0uYWNjZXB0cy5fZGVm YXVsdCl9Y2F0Y2goUyl7fWlmKE0uYmVmb3JlU2VuZCYmTS5iZWZvcmVTZW5kKEos TSk9PT1mYWxzZSl7aWYoTS5nbG9iYWwmJiEtLW8uYWN0aXZlKXtvLmV2ZW50LnRy aWdnZXIoImFqYXhTdG9wIil9Si5hYm9ydCgpO3JldHVybiBmYWxzZX1pZihNLmds b2JhbCl7by5ldmVudC50cmlnZ2VyKCJhamF4U2VuZCIsW0osTV0pfXZhciBOPWZ1 bmN0aW9uKFgpe2lmKEoucmVhZHlTdGF0ZT09MCl7aWYoUCl7Y2xlYXJJbnRlcnZh bChQKTtQPW51bGw7aWYoTS5nbG9iYWwmJiEtLW8uYWN0aXZlKXtvLmV2ZW50LnRy aWdnZXIoImFqYXhTdG9wIil9fX1lbHNle2lmKCFLJiZKJiYoSi5yZWFkeVN0YXRl PT00fHxYPT0idGltZW91dCIpKXtLPXRydWU7aWYoUCl7Y2xlYXJJbnRlcnZhbChQ KTtQPW51bGx9Uj1YPT0idGltZW91dCI/InRpbWVvdXQiOiFvLmh0dHBTdWNjZXNz KEopPyJlcnJvciI6TS5pZk1vZGlmaWVkJiZvLmh0dHBOb3RNb2RpZmllZChKLE0u dXJsKT8ibm90bW9kaWZpZWQiOiJzdWNjZXNzIjtpZihSPT0ic3VjY2VzcyIpe3Ry eXtWPW8uaHR0cERhdGEoSixNLmRhdGFUeXBlLE0pfWNhdGNoKFope1I9InBhcnNl cmVycm9yIn19aWYoUj09InN1Y2Nlc3MiKXt2YXIgWTt0cnl7WT1KLmdldFJlc3Bv bnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIil9Y2F0Y2goWil7fWlmKE0uaWZNb2Rp ZmllZCYmWSl7by5sYXN0TW9kaWZpZWRbTS51cmxdPVl9aWYoIVcpe0koKX19ZWxz ZXtvLmhhbmRsZUVycm9yKE0sSixSKX1MKCk7aWYoWCl7Si5hYm9ydCgpfWlmKE0u YXN5bmMpe0o9bnVsbH19fX07aWYoTS5hc3luYyl7dmFyIFA9c2V0SW50ZXJ2YWwo TiwxMyk7aWYoTS50aW1lb3V0PjApe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihK JiYhSyl7TigidGltZW91dCIpfX0sTS50aW1lb3V0KX19dHJ5e0ouc2VuZChNLmRh dGEpfWNhdGNoKFMpe28uaGFuZGxlRXJyb3IoTSxKLG51bGwsUyl9aWYoIU0uYXN5 bmMpe04oKX1mdW5jdGlvbiBJKCl7aWYoTS5zdWNjZXNzKXtNLnN1Y2Nlc3MoVixS KX1pZihNLmdsb2JhbCl7by5ldmVudC50cmlnZ2VyKCJhamF4U3VjY2VzcyIsW0os TV0pfX1mdW5jdGlvbiBMKCl7aWYoTS5jb21wbGV0ZSl7TS5jb21wbGV0ZShKLFIp fWlmKE0uZ2xvYmFsKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW0os TV0pfWlmKE0uZ2xvYmFsJiYhLS1vLmFjdGl2ZSl7by5ldmVudC50cmlnZ2VyKCJh amF4U3RvcCIpfX1yZXR1cm4gSn0saGFuZGxlRXJyb3I6ZnVuY3Rpb24oRixILEUs Ryl7aWYoRi5lcnJvcil7Ri5lcnJvcihILEUsRyl9aWYoRi5nbG9iYWwpe28uZXZl bnQudHJpZ2dlcigiYWpheEVycm9yIixbSCxGLEddKX19LGFjdGl2ZTowLGh0dHBT dWNjZXNzOmZ1bmN0aW9uKEYpe3RyeXtyZXR1cm4gIUYuc3RhdHVzJiZsb2NhdGlv bi5wcm90b2NvbD09ImZpbGU6Inx8KEYuc3RhdHVzPj0yMDAmJkYuc3RhdHVzPDMw MCl8fEYuc3RhdHVzPT0zMDR8fEYuc3RhdHVzPT0xMjIzfWNhdGNoKEUpe31yZXR1 cm4gZmFsc2V9LGh0dHBOb3RNb2RpZmllZDpmdW5jdGlvbihHLEUpe3RyeXt2YXIg SD1HLmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIik7cmV0dXJuIEcu c3RhdHVzPT0zMDR8fEg9PW8ubGFzdE1vZGlmaWVkW0VdfWNhdGNoKEYpe31yZXR1 cm4gZmFsc2V9LGh0dHBEYXRhOmZ1bmN0aW9uKEosSCxHKXt2YXIgRj1KLmdldFJl c3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSxFPUg9PSJ4bWwifHwhSCYmRiYm Ri5pbmRleE9mKCJ4bWwiKT49MCxJPUU/Si5yZXNwb25zZVhNTDpKLnJlc3BvbnNl VGV4dDtpZihFJiZJLmRvY3VtZW50RWxlbWVudC50YWdOYW1lPT0icGFyc2VyZXJy b3IiKXt0aHJvdyJwYXJzZXJlcnJvciJ9aWYoRyYmRy5kYXRhRmlsdGVyKXtJPUcu ZGF0YUZpbHRlcihJLEgpfWlmKHR5cGVvZiBJPT09InN0cmluZyIpe2lmKEg9PSJz Y3JpcHQiKXtvLmdsb2JhbEV2YWwoSSl9aWYoSD09Impzb24iKXtJPWxbImV2YWwi XSgiKCIrSSsiKSIpfX1yZXR1cm4gSX0scGFyYW06ZnVuY3Rpb24oRSl7dmFyIEc9 W107ZnVuY3Rpb24gSChJLEope0dbRy5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVu dChJKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KEopfWlmKG8uaXNBcnJheShFKXx8 RS5qcXVlcnkpe28uZWFjaChFLGZ1bmN0aW9uKCl7SCh0aGlzLm5hbWUsdGhpcy52 YWx1ZSl9KX1lbHNle2Zvcih2YXIgRiBpbiBFKXtpZihvLmlzQXJyYXkoRVtGXSkp e28uZWFjaChFW0ZdLGZ1bmN0aW9uKCl7SChGLHRoaXMpfSl9ZWxzZXtIKEYsby5p c0Z1bmN0aW9uKEVbRl0pP0VbRl0oKTpFW0ZdKX19fXJldHVybiBHLmpvaW4oIiYi KS5yZXBsYWNlKC8lMjAvZywiKyIpfX0pO3ZhciBtPXt9LG4sZD1bWyJoZWlnaHQi LCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJwYWRkaW5nVG9wIiwicGFkZGlu Z0JvdHRvbSJdLFsid2lkdGgiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJw YWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCJdLFsib3BhY2l0eSJdXTtmdW5jdGlv biB0KEYsRSl7dmFyIEc9e307by5lYWNoKGQuY29uY2F0LmFwcGx5KFtdLGQuc2xp Y2UoMCxFKSksZnVuY3Rpb24oKXtHW3RoaXNdPUZ9KTtyZXR1cm4gR31vLmZuLmV4 dGVuZCh7c2hvdzpmdW5jdGlvbihKLEwpe2lmKEope3JldHVybiB0aGlzLmFuaW1h dGUodCgic2hvdyIsMyksSixMKX1lbHNle2Zvcih2YXIgSD0wLEY9dGhpcy5sZW5n dGg7SDxGO0grKyl7dmFyIEU9by5kYXRhKHRoaXNbSF0sIm9sZGRpc3BsYXkiKTt0 aGlzW0hdLnN0eWxlLmRpc3BsYXk9RXx8IiI7aWYoby5jc3ModGhpc1tIXSwiZGlz cGxheSIpPT09Im5vbmUiKXt2YXIgRz10aGlzW0hdLnRhZ05hbWUsSztpZihtW0dd KXtLPW1bR119ZWxzZXt2YXIgST1vKCI8IitHKyIgLz4iKS5hcHBlbmRUbygiYm9k eSIpO0s9SS5jc3MoImRpc3BsYXkiKTtpZihLPT09Im5vbmUiKXtLPSJibG9jayJ9 SS5yZW1vdmUoKTttW0ddPUt9by5kYXRhKHRoaXNbSF0sIm9sZGRpc3BsYXkiLEsp fX1mb3IodmFyIEg9MCxGPXRoaXMubGVuZ3RoO0g8RjtIKyspe3RoaXNbSF0uc3R5 bGUuZGlzcGxheT1vLmRhdGEodGhpc1tIXSwib2xkZGlzcGxheSIpfHwiIn1yZXR1 cm4gdGhpc319LGhpZGU6ZnVuY3Rpb24oSCxJKXtpZihIKXtyZXR1cm4gdGhpcy5h bmltYXRlKHQoImhpZGUiLDMpLEgsSSl9ZWxzZXtmb3IodmFyIEc9MCxGPXRoaXMu bGVuZ3RoO0c8RjtHKyspe3ZhciBFPW8uZGF0YSh0aGlzW0ddLCJvbGRkaXNwbGF5 Iik7aWYoIUUmJkUhPT0ibm9uZSIpe28uZGF0YSh0aGlzW0ddLCJvbGRkaXNwbGF5 IixvLmNzcyh0aGlzW0ddLCJkaXNwbGF5IikpfX1mb3IodmFyIEc9MCxGPXRoaXMu bGVuZ3RoO0c8RjtHKyspe3RoaXNbR10uc3R5bGUuZGlzcGxheT0ibm9uZSJ9cmV0 dXJuIHRoaXN9fSxfdG9nZ2xlOm8uZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbihH LEYpe3ZhciBFPXR5cGVvZiBHPT09ImJvb2xlYW4iO3JldHVybiBvLmlzRnVuY3Rp b24oRykmJm8uaXNGdW5jdGlvbihGKT90aGlzLl90b2dnbGUuYXBwbHkodGhpcyxh cmd1bWVudHMpOkc9PW51bGx8fEU/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIEg9 RT9HOm8odGhpcykuaXMoIjpoaWRkZW4iKTtvKHRoaXMpW0g/InNob3ciOiJoaWRl Il0oKX0pOnRoaXMuYW5pbWF0ZSh0KCJ0b2dnbGUiLDMpLEcsRil9LGZhZGVUbzpm dW5jdGlvbihFLEcsRil7cmV0dXJuIHRoaXMuYW5pbWF0ZSh7b3BhY2l0eTpHfSxF LEYpfSxhbmltYXRlOmZ1bmN0aW9uKEksRixILEcpe3ZhciBFPW8uc3BlZWQoRixI LEcpO3JldHVybiB0aGlzW0UucXVldWU9PT1mYWxzZT8iZWFjaCI6InF1ZXVlIl0o ZnVuY3Rpb24oKXt2YXIgSz1vLmV4dGVuZCh7fSxFKSxNLEw9dGhpcy5ub2RlVHlw ZT09MSYmbyh0aGlzKS5pcygiOmhpZGRlbiIpLEo9dGhpcztmb3IoTSBpbiBJKXtp ZihJW01dPT0iaGlkZSImJkx8fElbTV09PSJzaG93IiYmIUwpe3JldHVybiBLLmNv bXBsZXRlLmNhbGwodGhpcyl9aWYoKE09PSJoZWlnaHQifHxNPT0id2lkdGgiKSYm dGhpcy5zdHlsZSl7Sy5kaXNwbGF5PW8uY3NzKHRoaXMsImRpc3BsYXkiKTtLLm92 ZXJmbG93PXRoaXMuc3R5bGUub3ZlcmZsb3d9fWlmKEsub3ZlcmZsb3chPW51bGwp e3RoaXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiJ9Sy5jdXJBbmltPW8uZXh0ZW5k KHt9LEkpO28uZWFjaChJLGZ1bmN0aW9uKE8sUyl7dmFyIFI9bmV3IG8uZngoSixL LE8pO2lmKC90b2dnbGV8c2hvd3xoaWRlLy50ZXN0KFMpKXtSW1M9PSJ0b2dnbGUi P0w/InNob3ciOiJoaWRlIjpTXShJKX1lbHNle3ZhciBRPVMudG9TdHJpbmcoKS5t YXRjaCgvXihbKy1dPSk/KFtcZCstLl0rKSguKikkLyksVD1SLmN1cih0cnVlKXx8 MDtpZihRKXt2YXIgTj1wYXJzZUZsb2F0KFFbMl0pLFA9UVszXXx8InB4IjtpZihQ IT0icHgiKXtKLnN0eWxlW09dPShOfHwxKStQO1Q9KChOfHwxKS9SLmN1cih0cnVl KSkqVDtKLnN0eWxlW09dPVQrUH1pZihRWzFdKXtOPSgoUVsxXT09Ii09Ij8tMTox KSpOKStUfVIuY3VzdG9tKFQsTixQKX1lbHNle1IuY3VzdG9tKFQsUywiIil9fX0p O3JldHVybiB0cnVlfSl9LHN0b3A6ZnVuY3Rpb24oRixFKXt2YXIgRz1vLnRpbWVy cztpZihGKXt0aGlzLnF1ZXVlKFtdKX10aGlzLmVhY2goZnVuY3Rpb24oKXtmb3Io dmFyIEg9Ry5sZW5ndGgtMTtIPj0wO0gtLSl7aWYoR1tIXS5lbGVtPT10aGlzKXtp ZihFKXtHW0hdKHRydWUpfUcuc3BsaWNlKEgsMSl9fX0pO2lmKCFFKXt0aGlzLmRl cXVldWUoKX1yZXR1cm4gdGhpc319KTtvLmVhY2goe3NsaWRlRG93bjp0KCJzaG93 IiwxKSxzbGlkZVVwOnQoImhpZGUiLDEpLHNsaWRlVG9nZ2xlOnQoInRvZ2dsZSIs MSksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlk ZSJ9fSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rpb24oRyxIKXtyZXR1cm4g dGhpcy5hbmltYXRlKEYsRyxIKX19KTtvLmV4dGVuZCh7c3BlZWQ6ZnVuY3Rpb24o RyxILEYpe3ZhciBFPXR5cGVvZiBHPT09Im9iamVjdCI/Rzp7Y29tcGxldGU6Rnx8 IUYmJkh8fG8uaXNGdW5jdGlvbihHKSYmRyxkdXJhdGlvbjpHLGVhc2luZzpGJiZI fHxIJiYhby5pc0Z1bmN0aW9uKEgpJiZIfTtFLmR1cmF0aW9uPW8uZngub2ZmPzA6 dHlwZW9mIEUuZHVyYXRpb249PT0ibnVtYmVyIj9FLmR1cmF0aW9uOm8uZnguc3Bl ZWRzW0UuZHVyYXRpb25dfHxvLmZ4LnNwZWVkcy5fZGVmYXVsdDtFLm9sZD1FLmNv bXBsZXRlO0UuY29tcGxldGU9ZnVuY3Rpb24oKXtpZihFLnF1ZXVlIT09ZmFsc2Up e28odGhpcykuZGVxdWV1ZSgpfWlmKG8uaXNGdW5jdGlvbihFLm9sZCkpe0Uub2xk LmNhbGwodGhpcyl9fTtyZXR1cm4gRX0sZWFzaW5nOntsaW5lYXI6ZnVuY3Rpb24o RyxILEUsRil7cmV0dXJuIEUrRipHfSxzd2luZzpmdW5jdGlvbihHLEgsRSxGKXty ZXR1cm4oKC1NYXRoLmNvcyhHKk1hdGguUEkpLzIpKzAuNSkqRitFfX0sdGltZXJz OltdLGZ4OmZ1bmN0aW9uKEYsRSxHKXt0aGlzLm9wdGlvbnM9RTt0aGlzLmVsZW09 Rjt0aGlzLnByb3A9RztpZighRS5vcmlnKXtFLm9yaWc9e319fX0pO28uZngucHJv dG90eXBlPXt1cGRhdGU6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuc3RlcCl7 dGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyl9 KG8uZnguc3RlcFt0aGlzLnByb3BdfHxvLmZ4LnN0ZXAuX2RlZmF1bHQpKHRoaXMp O2lmKCh0aGlzLnByb3A9PSJoZWlnaHQifHx0aGlzLnByb3A9PSJ3aWR0aCIpJiZ0 aGlzLmVsZW0uc3R5bGUpe3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9 fSxjdXI6ZnVuY3Rpb24oRil7aWYodGhpcy5lbGVtW3RoaXMucHJvcF0hPW51bGwm JighdGhpcy5lbGVtLnN0eWxlfHx0aGlzLmVsZW0uc3R5bGVbdGhpcy5wcm9wXT09 bnVsbCkpe3JldHVybiB0aGlzLmVsZW1bdGhpcy5wcm9wXX12YXIgRT1wYXJzZUZs b2F0KG8uY3NzKHRoaXMuZWxlbSx0aGlzLnByb3AsRikpO3JldHVybiBFJiZFPi0x MDAwMD9FOnBhcnNlRmxvYXQoby5jdXJDU1ModGhpcy5lbGVtLHRoaXMucHJvcCkp fHwwfSxjdXN0b206ZnVuY3Rpb24oSSxILEcpe3RoaXMuc3RhcnRUaW1lPWUoKTt0 aGlzLnN0YXJ0PUk7dGhpcy5lbmQ9SDt0aGlzLnVuaXQ9R3x8dGhpcy51bml0fHwi cHgiO3RoaXMubm93PXRoaXMuc3RhcnQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0wO3Zh ciBFPXRoaXM7ZnVuY3Rpb24gRihKKXtyZXR1cm4gRS5zdGVwKEopfUYuZWxlbT10 aGlzLmVsZW07aWYoRigpJiZvLnRpbWVycy5wdXNoKEYpJiYhbil7bj1zZXRJbnRl cnZhbChmdW5jdGlvbigpe3ZhciBLPW8udGltZXJzO2Zvcih2YXIgSj0wO0o8Sy5s ZW5ndGg7SisrKXtpZighS1tKXSgpKXtLLnNwbGljZShKLS0sMSl9fWlmKCFLLmxl bmd0aCl7Y2xlYXJJbnRlcnZhbChuKTtuPWd9fSwxMyl9fSxzaG93OmZ1bmN0aW9u KCl7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1vLmF0dHIodGhpcy5lbGVt LnN0eWxlLHRoaXMucHJvcCk7dGhpcy5vcHRpb25zLnNob3c9dHJ1ZTt0aGlzLmN1 c3RvbSh0aGlzLnByb3A9PSJ3aWR0aCJ8fHRoaXMucHJvcD09ImhlaWdodCI/MTow LHRoaXMuY3VyKCkpO28odGhpcy5lbGVtKS5zaG93KCl9LGhpZGU6ZnVuY3Rpb24o KXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdPW8uYXR0cih0aGlzLmVsZW0u c3R5bGUsdGhpcy5wcm9wKTt0aGlzLm9wdGlvbnMuaGlkZT10cnVlO3RoaXMuY3Vz dG9tKHRoaXMuY3VyKCksMCl9LHN0ZXA6ZnVuY3Rpb24oSCl7dmFyIEc9ZSgpO2lm KEh8fEc+PXRoaXMub3B0aW9ucy5kdXJhdGlvbit0aGlzLnN0YXJ0VGltZSl7dGhp cy5ub3c9dGhpcy5lbmQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0xO3RoaXMudXBkYXRl KCk7dGhpcy5vcHRpb25zLmN1ckFuaW1bdGhpcy5wcm9wXT10cnVlO3ZhciBFPXRy dWU7Zm9yKHZhciBGIGluIHRoaXMub3B0aW9ucy5jdXJBbmltKXtpZih0aGlzLm9w dGlvbnMuY3VyQW5pbVtGXSE9PXRydWUpe0U9ZmFsc2V9fWlmKEUpe2lmKHRoaXMu b3B0aW9ucy5kaXNwbGF5IT1udWxsKXt0aGlzLmVsZW0uc3R5bGUub3ZlcmZsb3c9 dGhpcy5vcHRpb25zLm92ZXJmbG93O3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PXRo aXMub3B0aW9ucy5kaXNwbGF5O2lmKG8uY3NzKHRoaXMuZWxlbSwiZGlzcGxheSIp PT0ibm9uZSIpe3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9fWlmKHRo aXMub3B0aW9ucy5oaWRlKXtvKHRoaXMuZWxlbSkuaGlkZSgpfWlmKHRoaXMub3B0 aW9ucy5oaWRlfHx0aGlzLm9wdGlvbnMuc2hvdyl7Zm9yKHZhciBJIGluIHRoaXMu b3B0aW9ucy5jdXJBbmltKXtvLmF0dHIodGhpcy5lbGVtLnN0eWxlLEksdGhpcy5v cHRpb25zLm9yaWdbSV0pfX10aGlzLm9wdGlvbnMuY29tcGxldGUuY2FsbCh0aGlz LmVsZW0pfXJldHVybiBmYWxzZX1lbHNle3ZhciBKPUctdGhpcy5zdGFydFRpbWU7 dGhpcy5zdGF0ZT1KL3RoaXMub3B0aW9ucy5kdXJhdGlvbjt0aGlzLnBvcz1vLmVh c2luZ1t0aGlzLm9wdGlvbnMuZWFzaW5nfHwoby5lYXNpbmcuc3dpbmc/InN3aW5n IjoibGluZWFyIildKHRoaXMuc3RhdGUsSiwwLDEsdGhpcy5vcHRpb25zLmR1cmF0 aW9uKTt0aGlzLm5vdz10aGlzLnN0YXJ0KygodGhpcy5lbmQtdGhpcy5zdGFydCkq dGhpcy5wb3MpO3RoaXMudXBkYXRlKCl9cmV0dXJuIHRydWV9fTtvLmV4dGVuZChv LmZ4LHtzcGVlZHM6e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sc3Rl cDp7b3BhY2l0eTpmdW5jdGlvbihFKXtvLmF0dHIoRS5lbGVtLnN0eWxlLCJvcGFj aXR5IixFLm5vdyl9LF9kZWZhdWx0OmZ1bmN0aW9uKEUpe2lmKEUuZWxlbS5zdHls ZSYmRS5lbGVtLnN0eWxlW0UucHJvcF0hPW51bGwpe0UuZWxlbS5zdHlsZVtFLnBy b3BdPUUubm93K0UudW5pdH1lbHNle0UuZWxlbVtFLnByb3BdPUUubm93fX19fSk7 aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVj dCl7by5mbi5vZmZzZXQ9ZnVuY3Rpb24oKXtpZighdGhpc1swXSl7cmV0dXJue3Rv cDowLGxlZnQ6MH19aWYodGhpc1swXT09PXRoaXNbMF0ub3duZXJEb2N1bWVudC5i b2R5KXtyZXR1cm4gby5vZmZzZXQuYm9keU9mZnNldCh0aGlzWzBdKX12YXIgRz10 aGlzWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEo9dGhpc1swXS5vd25lckRv Y3VtZW50LEY9Si5ib2R5LEU9Si5kb2N1bWVudEVsZW1lbnQsTD1FLmNsaWVudFRv cHx8Ri5jbGllbnRUb3B8fDAsSz1FLmNsaWVudExlZnR8fEYuY2xpZW50TGVmdHx8 MCxJPUcudG9wKyhzZWxmLnBhZ2VZT2Zmc2V0fHxvLmJveE1vZGVsJiZFLnNjcm9s bFRvcHx8Ri5zY3JvbGxUb3ApLUwsSD1HLmxlZnQrKHNlbGYucGFnZVhPZmZzZXR8 fG8uYm94TW9kZWwmJkUuc2Nyb2xsTGVmdHx8Ri5zY3JvbGxMZWZ0KS1LO3JldHVy bnt0b3A6SSxsZWZ0Okh9fX1lbHNle28uZm4ub2Zmc2V0PWZ1bmN0aW9uKCl7aWYo IXRoaXNbMF0pe3JldHVybnt0b3A6MCxsZWZ0OjB9fWlmKHRoaXNbMF09PT10aGlz WzBdLm93bmVyRG9jdW1lbnQuYm9keSl7cmV0dXJuIG8ub2Zmc2V0LmJvZHlPZmZz ZXQodGhpc1swXSl9by5vZmZzZXQuaW5pdGlhbGl6ZWR8fG8ub2Zmc2V0LmluaXRp YWxpemUoKTt2YXIgSj10aGlzWzBdLEc9Si5vZmZzZXRQYXJlbnQsRj1KLE89Si5v d25lckRvY3VtZW50LE0sSD1PLmRvY3VtZW50RWxlbWVudCxLPU8uYm9keSxMPU8u ZGVmYXVsdFZpZXcsRT1MLmdldENvbXB1dGVkU3R5bGUoSixudWxsKSxOPUoub2Zm c2V0VG9wLEk9Si5vZmZzZXRMZWZ0O3doaWxlKChKPUoucGFyZW50Tm9kZSkmJkoh PT1LJiZKIT09SCl7TT1MLmdldENvbXB1dGVkU3R5bGUoSixudWxsKTtOLT1KLnNj cm9sbFRvcCxJLT1KLnNjcm9sbExlZnQ7aWYoSj09PUcpe04rPUoub2Zmc2V0VG9w LEkrPUoub2Zmc2V0TGVmdDtpZihvLm9mZnNldC5kb2VzTm90QWRkQm9yZGVyJiYh KG8ub2Zmc2V0LmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzJiYvXnQoYWJs ZXxkfGgpJC9pLnRlc3QoSi50YWdOYW1lKSkpe04rPXBhcnNlSW50KE0uYm9yZGVy VG9wV2lkdGgsMTApfHwwLEkrPXBhcnNlSW50KE0uYm9yZGVyTGVmdFdpZHRoLDEw KXx8MH1GPUcsRz1KLm9mZnNldFBhcmVudH1pZihvLm9mZnNldC5zdWJ0cmFjdHNC b3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGUmJk0ub3ZlcmZsb3chPT0idmlzaWJs ZSIpe04rPXBhcnNlSW50KE0uYm9yZGVyVG9wV2lkdGgsMTApfHwwLEkrPXBhcnNl SW50KE0uYm9yZGVyTGVmdFdpZHRoLDEwKXx8MH1FPU19aWYoRS5wb3NpdGlvbj09 PSJyZWxhdGl2ZSJ8fEUucG9zaXRpb249PT0ic3RhdGljIil7Tis9Sy5vZmZzZXRU b3AsSSs9Sy5vZmZzZXRMZWZ0fWlmKEUucG9zaXRpb249PT0iZml4ZWQiKXtOKz1N YXRoLm1heChILnNjcm9sbFRvcCxLLnNjcm9sbFRvcCksSSs9TWF0aC5tYXgoSC5z Y3JvbGxMZWZ0LEsuc2Nyb2xsTGVmdCl9cmV0dXJue3RvcDpOLGxlZnQ6SX19fW8u b2Zmc2V0PXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7aWYodGhpcy5pbml0aWFsaXpl ZCl7cmV0dXJufXZhciBMPWRvY3VtZW50LmJvZHksRj1kb2N1bWVudC5jcmVhdGVF bGVtZW50KCJkaXYiKSxILEcsTixJLE0sRSxKPUwuc3R5bGUubWFyZ2luVG9wLEs9 JzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJn aW46MDtib3JkZXI6NXB4IHNvbGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDto ZWlnaHQ6MXB4OyI+PGRpdj48L2Rpdj48L2Rpdj48dGFibGUgc3R5bGU9InBvc2l0 aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6NXB4IHNv bGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4OyIgY2VsbHBh ZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj48dHI+PHRkPjwvdGQ+PC90cj48L3Rh YmxlPic7TT17cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsbWFyZ2lu OjAsYm9yZGVyOjAsd2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgiLHZpc2liaWxpdHk6 ImhpZGRlbiJ9O2ZvcihFIGluIE0pe0Yuc3R5bGVbRV09TVtFXX1GLmlubmVySFRN TD1LO0wuaW5zZXJ0QmVmb3JlKEYsTC5maXJzdENoaWxkKTtIPUYuZmlyc3RDaGls ZCxHPUguZmlyc3RDaGlsZCxJPUgubmV4dFNpYmxpbmcuZmlyc3RDaGlsZC5maXJz dENoaWxkO3RoaXMuZG9lc05vdEFkZEJvcmRlcj0oRy5vZmZzZXRUb3AhPT01KTt0 aGlzLmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzPShJLm9mZnNldFRvcD09 PTUpO0guc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsSC5zdHlsZS5wb3NpdGlvbj0i cmVsYXRpdmUiO3RoaXMuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNp YmxlPShHLm9mZnNldFRvcD09PS01KTtMLnN0eWxlLm1hcmdpblRvcD0iMXB4Ijt0 aGlzLmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0PShMLm9mZnNldFRv cD09PTApO0wuc3R5bGUubWFyZ2luVG9wPUo7TC5yZW1vdmVDaGlsZChGKTt0aGlz LmluaXRpYWxpemVkPXRydWV9LGJvZHlPZmZzZXQ6ZnVuY3Rpb24oRSl7by5vZmZz ZXQuaW5pdGlhbGl6ZWR8fG8ub2Zmc2V0LmluaXRpYWxpemUoKTt2YXIgRz1FLm9m ZnNldFRvcCxGPUUub2Zmc2V0TGVmdDtpZihvLm9mZnNldC5kb2VzTm90SW5jbHVk ZU1hcmdpbkluQm9keU9mZnNldCl7Rys9cGFyc2VJbnQoby5jdXJDU1MoRSwibWFy Z2luVG9wIix0cnVlKSwxMCl8fDAsRis9cGFyc2VJbnQoby5jdXJDU1MoRSwibWFy Z2luTGVmdCIsdHJ1ZSksMTApfHwwfXJldHVybnt0b3A6RyxsZWZ0OkZ9fX07by5m bi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIEk9MCxIPTAsRjtpZih0 aGlzWzBdKXt2YXIgRz10aGlzLm9mZnNldFBhcmVudCgpLEo9dGhpcy5vZmZzZXQo KSxFPS9eYm9keXxodG1sJC9pLnRlc3QoR1swXS50YWdOYW1lKT97dG9wOjAsbGVm dDowfTpHLm9mZnNldCgpO0oudG9wLT1qKHRoaXMsIm1hcmdpblRvcCIpO0oubGVm dC09aih0aGlzLCJtYXJnaW5MZWZ0Iik7RS50b3ArPWooRywiYm9yZGVyVG9wV2lk dGgiKTtFLmxlZnQrPWooRywiYm9yZGVyTGVmdFdpZHRoIik7Rj17dG9wOkoudG9w LUUudG9wLGxlZnQ6Si5sZWZ0LUUubGVmdH19cmV0dXJuIEZ9LG9mZnNldFBhcmVu dDpmdW5jdGlvbigpe3ZhciBFPXRoaXNbMF0ub2Zmc2V0UGFyZW50fHxkb2N1bWVu dC5ib2R5O3doaWxlKEUmJighL15ib2R5fGh0bWwkL2kudGVzdChFLnRhZ05hbWUp JiZvLmNzcyhFLCJwb3NpdGlvbiIpPT0ic3RhdGljIikpe0U9RS5vZmZzZXRQYXJl bnR9cmV0dXJuIG8oRSl9fSk7by5lYWNoKFsiTGVmdCIsIlRvcCJdLGZ1bmN0aW9u KEYsRSl7dmFyIEc9InNjcm9sbCIrRTtvLmZuW0ddPWZ1bmN0aW9uKEgpe2lmKCF0 aGlzWzBdKXtyZXR1cm4gbnVsbH1yZXR1cm4gSCE9PWc/dGhpcy5lYWNoKGZ1bmN0 aW9uKCl7dGhpcz09bHx8dGhpcz09ZG9jdW1lbnQ/bC5zY3JvbGxUbyghRj9IOm8o bCkuc2Nyb2xsTGVmdCgpLEY/SDpvKGwpLnNjcm9sbFRvcCgpKTp0aGlzW0ddPUh9 KTp0aGlzWzBdPT1sfHx0aGlzWzBdPT1kb2N1bWVudD9zZWxmW0Y/InBhZ2VZT2Zm c2V0IjoicGFnZVhPZmZzZXQiXXx8by5ib3hNb2RlbCYmZG9jdW1lbnQuZG9jdW1l bnRFbGVtZW50W0ddfHxkb2N1bWVudC5ib2R5W0ddOnRoaXNbMF1bR119fSk7by5l YWNoKFsiSGVpZ2h0IiwiV2lkdGgiXSxmdW5jdGlvbihJLEcpe3ZhciBFPUk/Ikxl ZnQiOiJUb3AiLEg9ST8iUmlnaHQiOiJCb3R0b20iLEY9Ry50b0xvd2VyQ2FzZSgp O28uZm5bImlubmVyIitHXT1mdW5jdGlvbigpe3JldHVybiB0aGlzWzBdP28uY3Nz KHRoaXNbMF0sRixmYWxzZSwicGFkZGluZyIpOm51bGx9O28uZm5bIm91dGVyIitH XT1mdW5jdGlvbihLKXtyZXR1cm4gdGhpc1swXT9vLmNzcyh0aGlzWzBdLEYsZmFs c2UsSz8ibWFyZ2luIjoiYm9yZGVyIik6bnVsbH07dmFyIEo9Ry50b0xvd2VyQ2Fz ZSgpO28uZm5bSl09ZnVuY3Rpb24oSyl7cmV0dXJuIHRoaXNbMF09PWw/ZG9jdW1l bnQuY29tcGF0TW9kZT09IkNTUzFDb21wYXQiJiZkb2N1bWVudC5kb2N1bWVudEVs ZW1lbnRbImNsaWVudCIrR118fGRvY3VtZW50LmJvZHlbImNsaWVudCIrR106dGhp c1swXT09ZG9jdW1lbnQ/TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 WyJjbGllbnQiK0ddLGRvY3VtZW50LmJvZHlbInNjcm9sbCIrR10sZG9jdW1lbnQu ZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiK0ddLGRvY3VtZW50LmJvZHlbIm9mZnNl dCIrR10sZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJvZmZzZXQiK0ddKTpLPT09 Zz8odGhpcy5sZW5ndGg/by5jc3ModGhpc1swXSxKKTpudWxsKTp0aGlzLmNzcyhK LHR5cGVvZiBLPT09InN0cmluZyI/SzpLKyJweCIpfX0pfSkoKTs= ------------OBg9i9L0LVC3BilRJbEwsz Content-Disposition: inline; filename=jquery-ui-1.8.2.custom.min.js Content-Type: application/javascript; charset=iso-8859-1; name=jquery-ui-1.8.2.custom.min.js Content-Location: http://www.gs1es.org/js/jquery-ui-1.8.2.custom.min.js Content-Transfer-Encoding: Base64 LyohCiAqIGpRdWVyeSBVSSAxLjguMgogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAg QVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCiAqIER1YWwg bGljZW5zZWQgdW5kZXIgdGhlIE1JVCAoTUlULUxJQ0VOU0UudHh0KQogKiBhbmQg R1BMIChHUEwtTElDRU5TRS50eHQpIGxpY2Vuc2VzLgogKgogKiBodHRwOi8vZG9j cy5qcXVlcnkuY29tL1VJCiAqLwooZnVuY3Rpb24oYyl7Yy51aT1jLnVpfHx7fTtp ZighYy51aS52ZXJzaW9uKXtjLmV4dGVuZChjLnVpLHt2ZXJzaW9uOiIxLjguMiIs cGx1Z2luOnthZGQ6ZnVuY3Rpb24oYSxiLGQpe2E9Yy51aVthXS5wcm90b3R5cGU7 Zm9yKHZhciBlIGluIGQpe2EucGx1Z2luc1tlXT1hLnBsdWdpbnNbZV18fFtdO2Eu cGx1Z2luc1tlXS5wdXNoKFtiLGRbZV1dKX19LGNhbGw6ZnVuY3Rpb24oYSxiLGQp e2lmKChiPWEucGx1Z2luc1tiXSkmJmEuZWxlbWVudFswXS5wYXJlbnROb2RlKWZv cih2YXIgZT0wO2U8Yi5sZW5ndGg7ZSsrKWEub3B0aW9uc1tiW2VdWzBdXSYmYltl XVsxXS5hcHBseShhLmVsZW1lbnQsZCl9fSxjb250YWluczpmdW5jdGlvbihhLGIp e3JldHVybiBkb2N1bWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj9hLmNvbXBh cmVEb2N1bWVudFBvc2l0aW9uKGIpJjE2OmEhPT1iJiZhLmNvbnRhaW5zKGIpfSxo YXNTY3JvbGw6ZnVuY3Rpb24oYSxiKXtpZihjKGEpLmNzcygib3ZlcmZsb3ciKT09 CiJoaWRkZW4iKXJldHVybiBmYWxzZTtiPWImJmI9PSJsZWZ0Ij8ic2Nyb2xsTGVm dCI6InNjcm9sbFRvcCI7dmFyIGQ9ZmFsc2U7aWYoYVtiXT4wKXJldHVybiB0cnVl O2FbYl09MTtkPWFbYl0+MDthW2JdPTA7cmV0dXJuIGR9LGlzT3ZlckF4aXM6ZnVu Y3Rpb24oYSxiLGQpe3JldHVybiBhPmImJmE8YitkfSxpc092ZXI6ZnVuY3Rpb24o YSxiLGQsZSxmLGcpe3JldHVybiBjLnVpLmlzT3ZlckF4aXMoYSxkLGYpJiZjLnVp LmlzT3ZlckF4aXMoYixlLGcpfSxrZXlDb2RlOntBTFQ6MTgsQkFDS1NQQUNFOjgs Q0FQU19MT0NLOjIwLENPTU1BOjE4OCxDT01NQU5EOjkxLENPTU1BTkRfTEVGVDo5 MSxDT01NQU5EX1JJR0hUOjkzLENPTlRST0w6MTcsREVMRVRFOjQ2LERPV046NDAs RU5EOjM1LEVOVEVSOjEzLEVTQ0FQRToyNyxIT01FOjM2LElOU0VSVDo0NSxMRUZU OjM3LE1FTlU6OTMsTlVNUEFEX0FERDoxMDcsTlVNUEFEX0RFQ0lNQUw6MTEwLE5V TVBBRF9ESVZJREU6MTExLE5VTVBBRF9FTlRFUjoxMDgsCk5VTVBBRF9NVUxUSVBM WToxMDYsTlVNUEFEX1NVQlRSQUNUOjEwOSxQQUdFX0RPV046MzQsUEFHRV9VUDoz MyxQRVJJT0Q6MTkwLFJJR0hUOjM5LFNISUZUOjE2LFNQQUNFOjMyLFRBQjo5LFVQ OjM4LFdJTkRPV1M6OTF9fSk7Yy5mbi5leHRlbmQoe19mb2N1czpjLmZuLmZvY3Vz LGZvY3VzOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHR5cGVvZiBhPT09Im51bWJlciI/ dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9dGhpcztzZXRUaW1lb3V0KGZ1bmN0 aW9uKCl7YyhkKS5mb2N1cygpO2ImJmIuY2FsbChkKX0sYSl9KTp0aGlzLl9mb2N1 cy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGVuYWJsZVNlbGVjdGlvbjpmdW5jdGlv bigpe3JldHVybiB0aGlzLmF0dHIoInVuc2VsZWN0YWJsZSIsIm9mZiIpLmNzcygi TW96VXNlclNlbGVjdCIsIiIpfSxkaXNhYmxlU2VsZWN0aW9uOmZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMuYXR0cigidW5zZWxlY3RhYmxlIiwib24iKS5jc3MoIk1velVz ZXJTZWxlY3QiLAoibm9uZSIpfSxzY3JvbGxQYXJlbnQ6ZnVuY3Rpb24oKXt2YXIg YTthPWMuYnJvd3Nlci5tc2llJiYvKHN0YXRpY3xyZWxhdGl2ZSkvLnRlc3QodGhp cy5jc3MoInBvc2l0aW9uIikpfHwvYWJzb2x1dGUvLnRlc3QodGhpcy5jc3MoInBv c2l0aW9uIikpP3RoaXMucGFyZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3JldHVy bi8ocmVsYXRpdmV8YWJzb2x1dGV8Zml4ZWQpLy50ZXN0KGMuY3VyQ1NTKHRoaXMs InBvc2l0aW9uIiwxKSkmJi8oYXV0b3xzY3JvbGwpLy50ZXN0KGMuY3VyQ1NTKHRo aXMsIm92ZXJmbG93IiwxKStjLmN1ckNTUyh0aGlzLCJvdmVyZmxvdy15IiwxKStj LmN1ckNTUyh0aGlzLCJvdmVyZmxvdy14IiwxKSl9KS5lcSgwKTp0aGlzLnBhcmVu dHMoKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4vKGF1dG98c2Nyb2xsKS8udGVz dChjLmN1ckNTUyh0aGlzLCJvdmVyZmxvdyIsMSkrYy5jdXJDU1ModGhpcywib3Zl cmZsb3cteSIsMSkrYy5jdXJDU1ModGhpcywib3ZlcmZsb3cteCIsCjEpKX0pLmVx KDApO3JldHVybi9maXhlZC8udGVzdCh0aGlzLmNzcygicG9zaXRpb24iKSl8fCFh Lmxlbmd0aD9jKGRvY3VtZW50KTphfSx6SW5kZXg6ZnVuY3Rpb24oYSl7aWYoYSE9 PXVuZGVmaW5lZClyZXR1cm4gdGhpcy5jc3MoInpJbmRleCIsYSk7aWYodGhpcy5s ZW5ndGgpe2E9Yyh0aGlzWzBdKTtmb3IodmFyIGI7YS5sZW5ndGgmJmFbMF0hPT1k b2N1bWVudDspe2I9YS5jc3MoInBvc2l0aW9uIik7aWYoYj09ImFic29sdXRlInx8 Yj09InJlbGF0aXZlInx8Yj09ImZpeGVkIil7Yj1wYXJzZUludChhLmNzcygieklu ZGV4IikpO2lmKCFpc05hTihiKSYmYiE9MClyZXR1cm4gYn1hPWEucGFyZW50KCl9 fXJldHVybiAwfX0pO2MuZXh0ZW5kKGMuZXhwclsiOiJdLHtkYXRhOmZ1bmN0aW9u KGEsYixkKXtyZXR1cm4hIWMuZGF0YShhLGRbM10pfSxmb2N1c2FibGU6ZnVuY3Rp b24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLGQ9Yy5hdHRyKGEs InRhYmluZGV4Iik7cmV0dXJuKC9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9u fG9iamVjdC8udGVzdChiKT8KIWEuZGlzYWJsZWQ6ImEiPT1ifHwiYXJlYSI9PWI/ YS5ocmVmfHwhaXNOYU4oZCk6IWlzTmFOKGQpKSYmIWMoYSlbImFyZWEiPT1iPyJw YXJlbnRzIjoiY2xvc2VzdCJdKCI6aGlkZGVuIikubGVuZ3RofSx0YWJiYWJsZTpm dW5jdGlvbihhKXt2YXIgYj1jLmF0dHIoYSwidGFiaW5kZXgiKTtyZXR1cm4oaXNO YU4oYil8fGI+PTApJiZjKGEpLmlzKCI6Zm9jdXNhYmxlIil9fSl9fSkoalF1ZXJ5 KTsKOy8qIQogKiBqUXVlcnkgVUkgV2lkZ2V0IDEuOC4yCiAqCiAqIENvcHlyaWdo dCAoYykgMjAxMCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91 dCkKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIChNSVQtTElDRU5TRS50 eHQpCiAqIGFuZCBHUEwgKEdQTC1MSUNFTlNFLnR4dCkgbGljZW5zZXMuCiAqCiAq IGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvV2lkZ2V0CiAqLwooZnVuY3Rpb24o Yil7dmFyIGo9Yi5mbi5yZW1vdmU7Yi5mbi5yZW1vdmU9ZnVuY3Rpb24oYSxjKXty ZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoIWMpaWYoIWF8fGIuZmlsdGVy KGEsW3RoaXNdKS5sZW5ndGgpYigiKiIsdGhpcykuYWRkKHRoaXMpLmVhY2goZnVu Y3Rpb24oKXtiKHRoaXMpLnRyaWdnZXJIYW5kbGVyKCJyZW1vdmUiKX0pO3JldHVy biBqLmNhbGwoYih0aGlzKSxhLGMpfSl9O2Iud2lkZ2V0PWZ1bmN0aW9uKGEsYyxk KXt2YXIgZT1hLnNwbGl0KCIuIilbMF0sZjthPWEuc3BsaXQoIi4iKVsxXTtmPWUr Ii0iK2E7aWYoIWQpe2Q9YztjPWIuV2lkZ2V0fWIuZXhwclsiOiJdW2ZdPWZ1bmN0 aW9uKGgpe3JldHVybiEhYi5kYXRhKGgsYSl9O2JbZV09YltlXXx8e307YltlXVth XT1mdW5jdGlvbihoLGcpe2FyZ3VtZW50cy5sZW5ndGgmJnRoaXMuX2NyZWF0ZVdp ZGdldChoLGcpfTtjPW5ldyBjO2Mub3B0aW9ucz1iLmV4dGVuZCh7fSxjLm9wdGlv bnMpO2JbZV1bYV0ucHJvdG90eXBlPQpiLmV4dGVuZCh0cnVlLGMse25hbWVzcGFj ZTplLHdpZGdldE5hbWU6YSx3aWRnZXRFdmVudFByZWZpeDpiW2VdW2FdLnByb3Rv dHlwZS53aWRnZXRFdmVudFByZWZpeHx8YSx3aWRnZXRCYXNlQ2xhc3M6Zn0sZCk7 Yi53aWRnZXQuYnJpZGdlKGEsYltlXVthXSl9O2Iud2lkZ2V0LmJyaWRnZT1mdW5j dGlvbihhLGMpe2IuZm5bYV09ZnVuY3Rpb24oZCl7dmFyIGU9dHlwZW9mIGQ9PT0i c3RyaW5nIixmPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywx KSxoPXRoaXM7ZD0hZSYmZi5sZW5ndGg/Yi5leHRlbmQuYXBwbHkobnVsbCxbdHJ1 ZSxkXS5jb25jYXQoZikpOmQ7aWYoZSYmZC5zdWJzdHJpbmcoMCwxKT09PSJfIily ZXR1cm4gaDtlP3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBnPWIuZGF0YSh0aGlz LGEpLGk9ZyYmYi5pc0Z1bmN0aW9uKGdbZF0pP2dbZF0uYXBwbHkoZyxmKTpnO2lm KGkhPT1nJiZpIT09dW5kZWZpbmVkKXtoPWk7cmV0dXJuIGZhbHNlfX0pOnRoaXMu ZWFjaChmdW5jdGlvbigpe3ZhciBnPQpiLmRhdGEodGhpcyxhKTtpZihnKXtkJiZn Lm9wdGlvbihkKTtnLl9pbml0KCl9ZWxzZSBiLmRhdGEodGhpcyxhLG5ldyBjKGQs dGhpcykpfSk7cmV0dXJuIGh9fTtiLldpZGdldD1mdW5jdGlvbihhLGMpe2FyZ3Vt ZW50cy5sZW5ndGgmJnRoaXMuX2NyZWF0ZVdpZGdldChhLGMpfTtiLldpZGdldC5w cm90b3R5cGU9e3dpZGdldE5hbWU6IndpZGdldCIsd2lkZ2V0RXZlbnRQcmVmaXg6 IiIsb3B0aW9uczp7ZGlzYWJsZWQ6ZmFsc2V9LF9jcmVhdGVXaWRnZXQ6ZnVuY3Rp b24oYSxjKXt0aGlzLmVsZW1lbnQ9YihjKS5kYXRhKHRoaXMud2lkZ2V0TmFtZSx0 aGlzKTt0aGlzLm9wdGlvbnM9Yi5leHRlbmQodHJ1ZSx7fSx0aGlzLm9wdGlvbnMs Yi5tZXRhZGF0YSYmYi5tZXRhZGF0YS5nZXQoYylbdGhpcy53aWRnZXROYW1lXSxh KTt2YXIgZD10aGlzO3RoaXMuZWxlbWVudC5iaW5kKCJyZW1vdmUuIit0aGlzLndp ZGdldE5hbWUsZnVuY3Rpb24oKXtkLmRlc3Ryb3koKX0pO3RoaXMuX2NyZWF0ZSgp Owp0aGlzLl9pbml0KCl9LF9jcmVhdGU6ZnVuY3Rpb24oKXt9LF9pbml0OmZ1bmN0 aW9uKCl7fSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnVuYmluZCgi LiIrdGhpcy53aWRnZXROYW1lKS5yZW1vdmVEYXRhKHRoaXMud2lkZ2V0TmFtZSk7 dGhpcy53aWRnZXQoKS51bmJpbmQoIi4iK3RoaXMud2lkZ2V0TmFtZSkucmVtb3Zl QXR0cigiYXJpYS1kaXNhYmxlZCIpLnJlbW92ZUNsYXNzKHRoaXMud2lkZ2V0QmFz ZUNsYXNzKyItZGlzYWJsZWQgdWktc3RhdGUtZGlzYWJsZWQiKX0sd2lkZ2V0OmZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudH0sb3B0aW9uOmZ1bmN0aW9uKGEs Yyl7dmFyIGQ9YSxlPXRoaXM7aWYoYXJndW1lbnRzLmxlbmd0aD09PTApcmV0dXJu IGIuZXh0ZW5kKHt9LGUub3B0aW9ucyk7aWYodHlwZW9mIGE9PT0ic3RyaW5nIil7 aWYoYz09PXVuZGVmaW5lZClyZXR1cm4gdGhpcy5vcHRpb25zW2FdO2Q9e307ZFth XT1jfWIuZWFjaChkLGZ1bmN0aW9uKGYsCmgpe2UuX3NldE9wdGlvbihmLGgpfSk7 cmV0dXJuIGV9LF9zZXRPcHRpb246ZnVuY3Rpb24oYSxjKXt0aGlzLm9wdGlvbnNb YV09YztpZihhPT09ImRpc2FibGVkIil0aGlzLndpZGdldCgpW2M/ImFkZENsYXNz IjoicmVtb3ZlQ2xhc3MiXSh0aGlzLndpZGdldEJhc2VDbGFzcysiLWRpc2FibGVk IHVpLXN0YXRlLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsYyk7cmV0 dXJuIHRoaXN9LGVuYWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zZXRPcHRp b24oImRpc2FibGVkIixmYWxzZSl9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsdHJ1ZSl9LF90cmlnZ2VyOmZ1bmN0 aW9uKGEsYyxkKXt2YXIgZT10aGlzLm9wdGlvbnNbYV07Yz1iLkV2ZW50KGMpO2Mu dHlwZT0oYT09PXRoaXMud2lkZ2V0RXZlbnRQcmVmaXg/YTp0aGlzLndpZGdldEV2 ZW50UHJlZml4K2EpLnRvTG93ZXJDYXNlKCk7ZD1kfHx7fTtpZihjLm9yaWdpbmFs RXZlbnQpe2E9CmIuZXZlbnQucHJvcHMubGVuZ3RoO2Zvcih2YXIgZjthOyl7Zj1i LmV2ZW50LnByb3BzWy0tYV07Y1tmXT1jLm9yaWdpbmFsRXZlbnRbZl19fXRoaXMu ZWxlbWVudC50cmlnZ2VyKGMsZCk7cmV0dXJuIShiLmlzRnVuY3Rpb24oZSkmJmUu Y2FsbCh0aGlzLmVsZW1lbnRbMF0sYyxkKT09PWZhbHNlfHxjLmlzRGVmYXVsdFBy ZXZlbnRlZCgpKX19fSkoalF1ZXJ5KTsKOy8qIQogKiBqUXVlcnkgVUkgTW91c2Ug MS44LjIKICoKICogQ29weXJpZ2h0IChjKSAyMDEwIEFVVEhPUlMudHh0IChodHRw Oi8vanF1ZXJ5dWkuY29tL2Fib3V0KQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRo ZSBNSVQgKE1JVC1MSUNFTlNFLnR4dCkKICogYW5kIEdQTCAoR1BMLUxJQ0VOU0Uu dHh0KSBsaWNlbnNlcy4KICoKICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9N b3VzZQogKgogKiBEZXBlbmRzOgogKglqcXVlcnkudWkud2lkZ2V0LmpzCiAqLwoo ZnVuY3Rpb24oYyl7Yy53aWRnZXQoInVpLm1vdXNlIix7b3B0aW9uczp7Y2FuY2Vs OiI6aW5wdXQsb3B0aW9uIixkaXN0YW5jZToxLGRlbGF5OjB9LF9tb3VzZUluaXQ6 ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuZWxlbWVudC5iaW5kKCJtb3VzZWRv d24uIit0aGlzLndpZGdldE5hbWUsZnVuY3Rpb24oYil7cmV0dXJuIGEuX21vdXNl RG93bihiKX0pLmJpbmQoImNsaWNrLiIrdGhpcy53aWRnZXROYW1lLGZ1bmN0aW9u KGIpe2lmKGEuX3ByZXZlbnRDbGlja0V2ZW50KXthLl9wcmV2ZW50Q2xpY2tFdmVu dD1mYWxzZTtiLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO3JldHVybiBmYWxz ZX19KTt0aGlzLnN0YXJ0ZWQ9ZmFsc2V9LF9tb3VzZURlc3Ryb3k6ZnVuY3Rpb24o KXt0aGlzLmVsZW1lbnQudW5iaW5kKCIuIit0aGlzLndpZGdldE5hbWUpfSxfbW91 c2VEb3duOmZ1bmN0aW9uKGEpe2Eub3JpZ2luYWxFdmVudD1hLm9yaWdpbmFsRXZl bnR8fHt9O2lmKCFhLm9yaWdpbmFsRXZlbnQubW91c2VIYW5kbGVkKXt0aGlzLl9t b3VzZVN0YXJ0ZWQmJgp0aGlzLl9tb3VzZVVwKGEpO3RoaXMuX21vdXNlRG93bkV2 ZW50PWE7dmFyIGI9dGhpcyxlPWEud2hpY2g9PTEsZj10eXBlb2YgdGhpcy5vcHRp b25zLmNhbmNlbD09InN0cmluZyI/YyhhLnRhcmdldCkucGFyZW50cygpLmFkZChh LnRhcmdldCkuZmlsdGVyKHRoaXMub3B0aW9ucy5jYW5jZWwpLmxlbmd0aDpmYWxz ZTtpZighZXx8Znx8IXRoaXMuX21vdXNlQ2FwdHVyZShhKSlyZXR1cm4gdHJ1ZTt0 aGlzLm1vdXNlRGVsYXlNZXQ9IXRoaXMub3B0aW9ucy5kZWxheTtpZighdGhpcy5t b3VzZURlbGF5TWV0KXRoaXMuX21vdXNlRGVsYXlUaW1lcj1zZXRUaW1lb3V0KGZ1 bmN0aW9uKCl7Yi5tb3VzZURlbGF5TWV0PXRydWV9LHRoaXMub3B0aW9ucy5kZWxh eSk7aWYodGhpcy5fbW91c2VEaXN0YW5jZU1ldChhKSYmdGhpcy5fbW91c2VEZWxh eU1ldChhKSl7dGhpcy5fbW91c2VTdGFydGVkPXRoaXMuX21vdXNlU3RhcnQoYSkh PT1mYWxzZTtpZighdGhpcy5fbW91c2VTdGFydGVkKXthLnByZXZlbnREZWZhdWx0 KCk7CnJldHVybiB0cnVlfX10aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZT1mdW5jdGlv bihkKXtyZXR1cm4gYi5fbW91c2VNb3ZlKGQpfTt0aGlzLl9tb3VzZVVwRGVsZWdh dGU9ZnVuY3Rpb24oZCl7cmV0dXJuIGIuX21vdXNlVXAoZCl9O2MoZG9jdW1lbnQp LmJpbmQoIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1v dmVEZWxlZ2F0ZSkuYmluZCgibW91c2V1cC4iK3RoaXMud2lkZ2V0TmFtZSx0aGlz Ll9tb3VzZVVwRGVsZWdhdGUpO2MuYnJvd3Nlci5zYWZhcml8fGEucHJldmVudERl ZmF1bHQoKTtyZXR1cm4gYS5vcmlnaW5hbEV2ZW50Lm1vdXNlSGFuZGxlZD10cnVl fX0sX21vdXNlTW92ZTpmdW5jdGlvbihhKXtpZihjLmJyb3dzZXIubXNpZSYmIWEu YnV0dG9uKXJldHVybiB0aGlzLl9tb3VzZVVwKGEpO2lmKHRoaXMuX21vdXNlU3Rh cnRlZCl7dGhpcy5fbW91c2VEcmFnKGEpO3JldHVybiBhLnByZXZlbnREZWZhdWx0 KCl9aWYodGhpcy5fbW91c2VEaXN0YW5jZU1ldChhKSYmCnRoaXMuX21vdXNlRGVs YXlNZXQoYSkpKHRoaXMuX21vdXNlU3RhcnRlZD10aGlzLl9tb3VzZVN0YXJ0KHRo aXMuX21vdXNlRG93bkV2ZW50LGEpIT09ZmFsc2UpP3RoaXMuX21vdXNlRHJhZyhh KTp0aGlzLl9tb3VzZVVwKGEpO3JldHVybiF0aGlzLl9tb3VzZVN0YXJ0ZWR9LF9t b3VzZVVwOmZ1bmN0aW9uKGEpe2MoZG9jdW1lbnQpLnVuYmluZCgibW91c2Vtb3Zl LiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlKS51bmJp bmQoIm1vdXNldXAuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VVcERlbGVn YXRlKTtpZih0aGlzLl9tb3VzZVN0YXJ0ZWQpe3RoaXMuX21vdXNlU3RhcnRlZD1m YWxzZTt0aGlzLl9wcmV2ZW50Q2xpY2tFdmVudD1hLnRhcmdldD09dGhpcy5fbW91 c2VEb3duRXZlbnQudGFyZ2V0O3RoaXMuX21vdXNlU3RvcChhKX1yZXR1cm4gZmFs c2V9LF9tb3VzZURpc3RhbmNlTWV0OmZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLm1h eChNYXRoLmFicyh0aGlzLl9tb3VzZURvd25FdmVudC5wYWdlWC0KYS5wYWdlWCks TWF0aC5hYnModGhpcy5fbW91c2VEb3duRXZlbnQucGFnZVktYS5wYWdlWSkpPj10 aGlzLm9wdGlvbnMuZGlzdGFuY2V9LF9tb3VzZURlbGF5TWV0OmZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMubW91c2VEZWxheU1ldH0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24o KXt9LF9tb3VzZURyYWc6ZnVuY3Rpb24oKXt9LF9tb3VzZVN0b3A6ZnVuY3Rpb24o KXt9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24oKXtyZXR1cm4gdHJ1ZX19KX0pKGpR dWVyeSk7CjsvKgogKiBqUXVlcnkgVUkgUG9zaXRpb24gMS44LjIKICoKICogQ29w eXJpZ2h0IChjKSAyMDEwIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29t L2Fib3V0KQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKE1JVC1MSUNF TlNFLnR4dCkKICogYW5kIEdQTCAoR1BMLUxJQ0VOU0UudHh0KSBsaWNlbnNlcy4K ICoKICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9Qb3NpdGlvbgogKi8KKGZ1 bmN0aW9uKGMpe2MudWk9Yy51aXx8e307dmFyIG09L2xlZnR8Y2VudGVyfHJpZ2h0 LyxuPS90b3B8Y2VudGVyfGJvdHRvbS8scD1jLmZuLnBvc2l0aW9uLHE9Yy5mbi5v ZmZzZXQ7Yy5mbi5wb3NpdGlvbj1mdW5jdGlvbihhKXtpZighYXx8IWEub2YpcmV0 dXJuIHAuYXBwbHkodGhpcyxhcmd1bWVudHMpO2E9Yy5leHRlbmQoe30sYSk7dmFy IGI9YyhhLm9mKSxkPShhLmNvbGxpc2lvbnx8ImZsaXAiKS5zcGxpdCgiICIpLGU9 YS5vZmZzZXQ/YS5vZmZzZXQuc3BsaXQoIiAiKTpbMCwwXSxnLGgsaTtpZihhLm9m Lm5vZGVUeXBlPT09OSl7Zz1iLndpZHRoKCk7aD1iLmhlaWdodCgpO2k9e3RvcDow LGxlZnQ6MH19ZWxzZSBpZihhLm9mLnNjcm9sbFRvJiZhLm9mLmRvY3VtZW50KXtn PWIud2lkdGgoKTtoPWIuaGVpZ2h0KCk7aT17dG9wOmIuc2Nyb2xsVG9wKCksbGVm dDpiLnNjcm9sbExlZnQoKX19ZWxzZSBpZihhLm9mLnByZXZlbnREZWZhdWx0KXth LmF0PSJsZWZ0IHRvcCI7Zz1oPQowO2k9e3RvcDphLm9mLnBhZ2VZLGxlZnQ6YS5v Zi5wYWdlWH19ZWxzZXtnPWIub3V0ZXJXaWR0aCgpO2g9Yi5vdXRlckhlaWdodCgp O2k9Yi5vZmZzZXQoKX1jLmVhY2goWyJteSIsImF0Il0sZnVuY3Rpb24oKXt2YXIg Zj0oYVt0aGlzXXx8IiIpLnNwbGl0KCIgIik7aWYoZi5sZW5ndGg9PT0xKWY9bS50 ZXN0KGZbMF0pP2YuY29uY2F0KFsiY2VudGVyIl0pOm4udGVzdChmWzBdKT9bImNl bnRlciJdLmNvbmNhdChmKTpbImNlbnRlciIsImNlbnRlciJdO2ZbMF09bS50ZXN0 KGZbMF0pP2ZbMF06ImNlbnRlciI7ZlsxXT1uLnRlc3QoZlsxXSk/ZlsxXToiY2Vu dGVyIjthW3RoaXNdPWZ9KTtpZihkLmxlbmd0aD09PTEpZFsxXT1kWzBdO2VbMF09 cGFyc2VJbnQoZVswXSwxMCl8fDA7aWYoZS5sZW5ndGg9PT0xKWVbMV09ZVswXTtl WzFdPXBhcnNlSW50KGVbMV0sMTApfHwwO2lmKGEuYXRbMF09PT0icmlnaHQiKWku bGVmdCs9ZztlbHNlIGlmKGEuYXRbMF09PT0iY2VudGVyIilpLmxlZnQrPQpnLzI7 aWYoYS5hdFsxXT09PSJib3R0b20iKWkudG9wKz1oO2Vsc2UgaWYoYS5hdFsxXT09 PSJjZW50ZXIiKWkudG9wKz1oLzI7aS5sZWZ0Kz1lWzBdO2kudG9wKz1lWzFdO3Jl dHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZj1jKHRoaXMpLGs9Zi5vdXRl cldpZHRoKCksbD1mLm91dGVySGVpZ2h0KCksaj1jLmV4dGVuZCh7fSxpKTtpZihh Lm15WzBdPT09InJpZ2h0IilqLmxlZnQtPWs7ZWxzZSBpZihhLm15WzBdPT09ImNl bnRlciIpai5sZWZ0LT1rLzI7aWYoYS5teVsxXT09PSJib3R0b20iKWoudG9wLT1s O2Vsc2UgaWYoYS5teVsxXT09PSJjZW50ZXIiKWoudG9wLT1sLzI7ai5sZWZ0PXBh cnNlSW50KGoubGVmdCk7ai50b3A9cGFyc2VJbnQoai50b3ApO2MuZWFjaChbImxl ZnQiLCJ0b3AiXSxmdW5jdGlvbihvLHIpe2MudWkucG9zaXRpb25bZFtvXV0mJmMu dWkucG9zaXRpb25bZFtvXV1bcl0oaix7dGFyZ2V0V2lkdGg6Zyx0YXJnZXRIZWln aHQ6aCxlbGVtV2lkdGg6aywKZWxlbUhlaWdodDpsLG9mZnNldDplLG15OmEubXks YXQ6YS5hdH0pfSk7Yy5mbi5iZ2lmcmFtZSYmZi5iZ2lmcmFtZSgpO2Yub2Zmc2V0 KGMuZXh0ZW5kKGose3VzaW5nOmEudXNpbmd9KSl9KX07Yy51aS5wb3NpdGlvbj17 Zml0OntsZWZ0OmZ1bmN0aW9uKGEsYil7dmFyIGQ9Yyh3aW5kb3cpO2I9YS5sZWZ0 K2IuZWxlbVdpZHRoLWQud2lkdGgoKS1kLnNjcm9sbExlZnQoKTthLmxlZnQ9Yj4w P2EubGVmdC1iOk1hdGgubWF4KDAsYS5sZWZ0KX0sdG9wOmZ1bmN0aW9uKGEsYil7 dmFyIGQ9Yyh3aW5kb3cpO2I9YS50b3ArYi5lbGVtSGVpZ2h0LWQuaGVpZ2h0KCkt ZC5zY3JvbGxUb3AoKTthLnRvcD1iPjA/YS50b3AtYjpNYXRoLm1heCgwLGEudG9w KX19LGZsaXA6e2xlZnQ6ZnVuY3Rpb24oYSxiKXtpZihiLmF0WzBdIT09ImNlbnRl ciIpe3ZhciBkPWMod2luZG93KTtkPWEubGVmdCtiLmVsZW1XaWR0aC1kLndpZHRo KCktZC5zY3JvbGxMZWZ0KCk7dmFyIGU9Yi5teVswXT09PSJsZWZ0Ij8KLWIuZWxl bVdpZHRoOmIubXlbMF09PT0icmlnaHQiP2IuZWxlbVdpZHRoOjAsZz0tMipiLm9m ZnNldFswXTthLmxlZnQrPWEubGVmdDwwP2UrYi50YXJnZXRXaWR0aCtnOmQ+MD9l LWIudGFyZ2V0V2lkdGgrZzowfX0sdG9wOmZ1bmN0aW9uKGEsYil7aWYoYi5hdFsx XSE9PSJjZW50ZXIiKXt2YXIgZD1jKHdpbmRvdyk7ZD1hLnRvcCtiLmVsZW1IZWln aHQtZC5oZWlnaHQoKS1kLnNjcm9sbFRvcCgpO3ZhciBlPWIubXlbMV09PT0idG9w Ij8tYi5lbGVtSGVpZ2h0OmIubXlbMV09PT0iYm90dG9tIj9iLmVsZW1IZWlnaHQ6 MCxnPWIuYXRbMV09PT0idG9wIj9iLnRhcmdldEhlaWdodDotYi50YXJnZXRIZWln aHQsaD0tMipiLm9mZnNldFsxXTthLnRvcCs9YS50b3A8MD9lK2IudGFyZ2V0SGVp Z2h0K2g6ZD4wP2UrZytoOjB9fX19O2lmKCFjLm9mZnNldC5zZXRPZmZzZXQpe2Mu b2Zmc2V0LnNldE9mZnNldD1mdW5jdGlvbihhLGIpe2lmKC9zdGF0aWMvLnRlc3Qo Yy5jdXJDU1MoYSwicG9zaXRpb24iKSkpYS5zdHlsZS5wb3NpdGlvbj0KInJlbGF0 aXZlIjt2YXIgZD1jKGEpLGU9ZC5vZmZzZXQoKSxnPXBhcnNlSW50KGMuY3VyQ1NT KGEsInRvcCIsdHJ1ZSksMTApfHwwLGg9cGFyc2VJbnQoYy5jdXJDU1MoYSwibGVm dCIsdHJ1ZSksMTApfHwwO2U9e3RvcDpiLnRvcC1lLnRvcCtnLGxlZnQ6Yi5sZWZ0 LWUubGVmdCtofTsidXNpbmciaW4gYj9iLnVzaW5nLmNhbGwoYSxlKTpkLmNzcyhl KX07Yy5mbi5vZmZzZXQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpc1swXTtpZighYnx8 IWIub3duZXJEb2N1bWVudClyZXR1cm4gbnVsbDtpZihhKXJldHVybiB0aGlzLmVh Y2goZnVuY3Rpb24oKXtjLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhKX0pO3JldHVy biBxLmNhbGwodGhpcyl9fX0pKGpRdWVyeSk7CjsvKgogKiBqUXVlcnkgVUkgRHJh Z2dhYmxlIDEuOC4yCiAqCiAqIENvcHlyaWdodCAoYykgMjAxMCBBVVRIT1JTLnR4 dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKICogRHVhbCBsaWNlbnNlZCB1 bmRlciB0aGUgTUlUIChNSVQtTElDRU5TRS50eHQpCiAqIGFuZCBHUEwgKEdQTC1M SUNFTlNFLnR4dCkgbGljZW5zZXMuCiAqCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5j b20vVUkvRHJhZ2dhYmxlcwogKgogKiBEZXBlbmRzOgogKglqcXVlcnkudWkuY29y ZS5qcwogKglqcXVlcnkudWkubW91c2UuanMKICoJanF1ZXJ5LnVpLndpZGdldC5q cwogKi8KKGZ1bmN0aW9uKGQpe2Qud2lkZ2V0KCJ1aS5kcmFnZ2FibGUiLGQudWku bW91c2Use3dpZGdldEV2ZW50UHJlZml4OiJkcmFnIixvcHRpb25zOnthZGRDbGFz c2VzOnRydWUsYXBwZW5kVG86InBhcmVudCIsYXhpczpmYWxzZSxjb25uZWN0VG9T b3J0YWJsZTpmYWxzZSxjb250YWlubWVudDpmYWxzZSxjdXJzb3I6ImF1dG8iLGN1 cnNvckF0OmZhbHNlLGdyaWQ6ZmFsc2UsaGFuZGxlOmZhbHNlLGhlbHBlcjoib3Jp Z2luYWwiLGlmcmFtZUZpeDpmYWxzZSxvcGFjaXR5OmZhbHNlLHJlZnJlc2hQb3Np dGlvbnM6ZmFsc2UscmV2ZXJ0OmZhbHNlLHJldmVydER1cmF0aW9uOjUwMCxzY29w ZToiZGVmYXVsdCIsc2Nyb2xsOnRydWUsc2Nyb2xsU2Vuc2l0aXZpdHk6MjAsc2Ny b2xsU3BlZWQ6MjAsc25hcDpmYWxzZSxzbmFwTW9kZToiYm90aCIsc25hcFRvbGVy YW5jZToyMCxzdGFjazpmYWxzZSx6SW5kZXg6ZmFsc2V9LF9jcmVhdGU6ZnVuY3Rp b24oKXtpZih0aGlzLm9wdGlvbnMuaGVscGVyPT0KIm9yaWdpbmFsIiYmIS9eKD86 cnxhfGYpLy50ZXN0KHRoaXMuZWxlbWVudC5jc3MoInBvc2l0aW9uIikpKXRoaXMu ZWxlbWVudFswXS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiO3RoaXMub3B0aW9u cy5hZGRDbGFzc2VzJiZ0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLWRyYWdnYWJs ZSIpO3RoaXMub3B0aW9ucy5kaXNhYmxlZCYmdGhpcy5lbGVtZW50LmFkZENsYXNz KCJ1aS1kcmFnZ2FibGUtZGlzYWJsZWQiKTt0aGlzLl9tb3VzZUluaXQoKX0sZGVz dHJveTpmdW5jdGlvbigpe2lmKHRoaXMuZWxlbWVudC5kYXRhKCJkcmFnZ2FibGUi KSl7dGhpcy5lbGVtZW50LnJlbW92ZURhdGEoImRyYWdnYWJsZSIpLnVuYmluZCgi LmRyYWdnYWJsZSIpLnJlbW92ZUNsYXNzKCJ1aS1kcmFnZ2FibGUgdWktZHJhZ2dh YmxlLWRyYWdnaW5nIHVpLWRyYWdnYWJsZS1kaXNhYmxlZCIpO3RoaXMuX21vdXNl RGVzdHJveSgpO3JldHVybiB0aGlzfX0sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbihh KXt2YXIgYj0KdGhpcy5vcHRpb25zO2lmKHRoaXMuaGVscGVyfHxiLmRpc2FibGVk fHxkKGEudGFyZ2V0KS5pcygiLnVpLXJlc2l6YWJsZS1oYW5kbGUiKSlyZXR1cm4g ZmFsc2U7dGhpcy5oYW5kbGU9dGhpcy5fZ2V0SGFuZGxlKGEpO2lmKCF0aGlzLmhh bmRsZSlyZXR1cm4gZmFsc2U7cmV0dXJuIHRydWV9LF9tb3VzZVN0YXJ0OmZ1bmN0 aW9uKGEpe3ZhciBiPXRoaXMub3B0aW9uczt0aGlzLmhlbHBlcj10aGlzLl9jcmVh dGVIZWxwZXIoYSk7dGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpO2lmKGQu dWkuZGRtYW5hZ2VyKWQudWkuZGRtYW5hZ2VyLmN1cnJlbnQ9dGhpczt0aGlzLl9j YWNoZU1hcmdpbnMoKTt0aGlzLmNzc1Bvc2l0aW9uPXRoaXMuaGVscGVyLmNzcygi cG9zaXRpb24iKTt0aGlzLnNjcm9sbFBhcmVudD10aGlzLmhlbHBlci5zY3JvbGxQ YXJlbnQoKTt0aGlzLm9mZnNldD10aGlzLnBvc2l0aW9uQWJzPXRoaXMuZWxlbWVu dC5vZmZzZXQoKTt0aGlzLm9mZnNldD17dG9wOnRoaXMub2Zmc2V0LnRvcC0KdGhp cy5tYXJnaW5zLnRvcCxsZWZ0OnRoaXMub2Zmc2V0LmxlZnQtdGhpcy5tYXJnaW5z LmxlZnR9O2QuZXh0ZW5kKHRoaXMub2Zmc2V0LHtjbGljazp7bGVmdDphLnBhZ2VY LXRoaXMub2Zmc2V0LmxlZnQsdG9wOmEucGFnZVktdGhpcy5vZmZzZXQudG9wfSxw YXJlbnQ6dGhpcy5fZ2V0UGFyZW50T2Zmc2V0KCkscmVsYXRpdmU6dGhpcy5fZ2V0 UmVsYXRpdmVPZmZzZXQoKX0pO3RoaXMub3JpZ2luYWxQb3NpdGlvbj10aGlzLnBv c2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24oYSk7dGhpcy5vcmlnaW5hbFBh Z2VYPWEucGFnZVg7dGhpcy5vcmlnaW5hbFBhZ2VZPWEucGFnZVk7Yi5jdXJzb3JB dCYmdGhpcy5fYWRqdXN0T2Zmc2V0RnJvbUhlbHBlcihiLmN1cnNvckF0KTtiLmNv bnRhaW5tZW50JiZ0aGlzLl9zZXRDb250YWlubWVudCgpO2lmKHRoaXMuX3RyaWdn ZXIoInN0YXJ0IixhKT09PWZhbHNlKXt0aGlzLl9jbGVhcigpO3JldHVybiBmYWxz ZX10aGlzLl9jYWNoZUhlbHBlclByb3BvcnRpb25zKCk7CmQudWkuZGRtYW5hZ2Vy JiYhYi5kcm9wQmVoYXZpb3VyJiZkLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0 cyh0aGlzLGEpO3RoaXMuaGVscGVyLmFkZENsYXNzKCJ1aS1kcmFnZ2FibGUtZHJh Z2dpbmciKTt0aGlzLl9tb3VzZURyYWcoYSx0cnVlKTtyZXR1cm4gdHJ1ZX0sX21v dXNlRHJhZzpmdW5jdGlvbihhLGIpe3RoaXMucG9zaXRpb249dGhpcy5fZ2VuZXJh dGVQb3NpdGlvbihhKTt0aGlzLnBvc2l0aW9uQWJzPXRoaXMuX2NvbnZlcnRQb3Np dGlvblRvKCJhYnNvbHV0ZSIpO2lmKCFiKXtiPXRoaXMuX3VpSGFzaCgpO2lmKHRo aXMuX3RyaWdnZXIoImRyYWciLGEsYik9PT1mYWxzZSl7dGhpcy5fbW91c2VVcCh7 fSk7cmV0dXJuIGZhbHNlfXRoaXMucG9zaXRpb249Yi5wb3NpdGlvbn1pZighdGhp cy5vcHRpb25zLmF4aXN8fHRoaXMub3B0aW9ucy5heGlzIT0ieSIpdGhpcy5oZWxw ZXJbMF0uc3R5bGUubGVmdD10aGlzLnBvc2l0aW9uLmxlZnQrInB4IjtpZighdGhp cy5vcHRpb25zLmF4aXN8fAp0aGlzLm9wdGlvbnMuYXhpcyE9IngiKXRoaXMuaGVs cGVyWzBdLnN0eWxlLnRvcD10aGlzLnBvc2l0aW9uLnRvcCsicHgiO2QudWkuZGRt YW5hZ2VyJiZkLnVpLmRkbWFuYWdlci5kcmFnKHRoaXMsYSk7cmV0dXJuIGZhbHNl fSxfbW91c2VTdG9wOmZ1bmN0aW9uKGEpe3ZhciBiPWZhbHNlO2lmKGQudWkuZGRt YW5hZ2VyJiYhdGhpcy5vcHRpb25zLmRyb3BCZWhhdmlvdXIpYj1kLnVpLmRkbWFu YWdlci5kcm9wKHRoaXMsYSk7aWYodGhpcy5kcm9wcGVkKXtiPXRoaXMuZHJvcHBl ZDt0aGlzLmRyb3BwZWQ9ZmFsc2V9aWYoIXRoaXMuZWxlbWVudFswXXx8IXRoaXMu ZWxlbWVudFswXS5wYXJlbnROb2RlKXJldHVybiBmYWxzZTtpZih0aGlzLm9wdGlv bnMucmV2ZXJ0PT0iaW52YWxpZCImJiFifHx0aGlzLm9wdGlvbnMucmV2ZXJ0PT0i dmFsaWQiJiZifHx0aGlzLm9wdGlvbnMucmV2ZXJ0PT09dHJ1ZXx8ZC5pc0Z1bmN0 aW9uKHRoaXMub3B0aW9ucy5yZXZlcnQpJiZ0aGlzLm9wdGlvbnMucmV2ZXJ0LmNh bGwodGhpcy5lbGVtZW50LApiKSl7dmFyIGM9dGhpcztkKHRoaXMuaGVscGVyKS5h bmltYXRlKHRoaXMub3JpZ2luYWxQb3NpdGlvbixwYXJzZUludCh0aGlzLm9wdGlv bnMucmV2ZXJ0RHVyYXRpb24sMTApLGZ1bmN0aW9uKCl7Yy5fdHJpZ2dlcigic3Rv cCIsYSkhPT1mYWxzZSYmYy5fY2xlYXIoKX0pfWVsc2UgdGhpcy5fdHJpZ2dlcigi c3RvcCIsYSkhPT1mYWxzZSYmdGhpcy5fY2xlYXIoKTtyZXR1cm4gZmFsc2V9LGNh bmNlbDpmdW5jdGlvbigpe3RoaXMuaGVscGVyLmlzKCIudWktZHJhZ2dhYmxlLWRy YWdnaW5nIik/dGhpcy5fbW91c2VVcCh7fSk6dGhpcy5fY2xlYXIoKTtyZXR1cm4g dGhpc30sX2dldEhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYj0hdGhpcy5vcHRpb25z LmhhbmRsZXx8IWQodGhpcy5vcHRpb25zLmhhbmRsZSx0aGlzLmVsZW1lbnQpLmxl bmd0aD90cnVlOmZhbHNlO2QodGhpcy5vcHRpb25zLmhhbmRsZSx0aGlzLmVsZW1l bnQpLmZpbmQoIioiKS5hbmRTZWxmKCkuZWFjaChmdW5jdGlvbigpe2lmKHRoaXM9 PQphLnRhcmdldCliPXRydWV9KTtyZXR1cm4gYn0sX2NyZWF0ZUhlbHBlcjpmdW5j dGlvbihhKXt2YXIgYj10aGlzLm9wdGlvbnM7YT1kLmlzRnVuY3Rpb24oYi5oZWxw ZXIpP2QoYi5oZWxwZXIuYXBwbHkodGhpcy5lbGVtZW50WzBdLFthXSkpOmIuaGVs cGVyPT0iY2xvbmUiP3RoaXMuZWxlbWVudC5jbG9uZSgpOnRoaXMuZWxlbWVudDth LnBhcmVudHMoImJvZHkiKS5sZW5ndGh8fGEuYXBwZW5kVG8oYi5hcHBlbmRUbz09 InBhcmVudCI/dGhpcy5lbGVtZW50WzBdLnBhcmVudE5vZGU6Yi5hcHBlbmRUbyk7 YVswXSE9dGhpcy5lbGVtZW50WzBdJiYhLyhmaXhlZHxhYnNvbHV0ZSkvLnRlc3Qo YS5jc3MoInBvc2l0aW9uIikpJiZhLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIp O3JldHVybiBhfSxfYWRqdXN0T2Zmc2V0RnJvbUhlbHBlcjpmdW5jdGlvbihhKXtp Zih0eXBlb2YgYT09InN0cmluZyIpYT1hLnNwbGl0KCIgIik7aWYoZC5pc0FycmF5 KGEpKWE9e2xlZnQ6K2FbMF0sdG9wOithWzFdfHwKMH07aWYoImxlZnQiaW4gYSl0 aGlzLm9mZnNldC5jbGljay5sZWZ0PWEubGVmdCt0aGlzLm1hcmdpbnMubGVmdDtp ZigicmlnaHQiaW4gYSl0aGlzLm9mZnNldC5jbGljay5sZWZ0PXRoaXMuaGVscGVy UHJvcG9ydGlvbnMud2lkdGgtYS5yaWdodCt0aGlzLm1hcmdpbnMubGVmdDtpZigi dG9wImluIGEpdGhpcy5vZmZzZXQuY2xpY2sudG9wPWEudG9wK3RoaXMubWFyZ2lu cy50b3A7aWYoImJvdHRvbSJpbiBhKXRoaXMub2Zmc2V0LmNsaWNrLnRvcD10aGlz LmhlbHBlclByb3BvcnRpb25zLmhlaWdodC1hLmJvdHRvbSt0aGlzLm1hcmdpbnMu dG9wfSxfZ2V0UGFyZW50T2Zmc2V0OmZ1bmN0aW9uKCl7dGhpcy5vZmZzZXRQYXJl bnQ9dGhpcy5oZWxwZXIub2Zmc2V0UGFyZW50KCk7dmFyIGE9dGhpcy5vZmZzZXRQ YXJlbnQub2Zmc2V0KCk7aWYodGhpcy5jc3NQb3NpdGlvbj09ImFic29sdXRlIiYm dGhpcy5zY3JvbGxQYXJlbnRbMF0hPWRvY3VtZW50JiZkLnVpLmNvbnRhaW5zKHRo aXMuc2Nyb2xsUGFyZW50WzBdLAp0aGlzLm9mZnNldFBhcmVudFswXSkpe2EubGVm dCs9dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpO2EudG9wKz10aGlzLnNj cm9sbFBhcmVudC5zY3JvbGxUb3AoKX1pZih0aGlzLm9mZnNldFBhcmVudFswXT09 ZG9jdW1lbnQuYm9keXx8dGhpcy5vZmZzZXRQYXJlbnRbMF0udGFnTmFtZSYmdGhp cy5vZmZzZXRQYXJlbnRbMF0udGFnTmFtZS50b0xvd2VyQ2FzZSgpPT0iaHRtbCIm JmQuYnJvd3Nlci5tc2llKWE9e3RvcDowLGxlZnQ6MH07cmV0dXJue3RvcDphLnRv cCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJUb3BXaWR0 aCIpLDEwKXx8MCksbGVmdDphLmxlZnQrKHBhcnNlSW50KHRoaXMub2Zmc2V0UGFy ZW50LmNzcygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKX19LF9nZXRSZWxhdGl2 ZU9mZnNldDpmdW5jdGlvbigpe2lmKHRoaXMuY3NzUG9zaXRpb249PSJyZWxhdGl2 ZSIpe3ZhciBhPXRoaXMuZWxlbWVudC5wb3NpdGlvbigpO3JldHVybnt0b3A6YS50 b3AtCihwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoInRvcCIpLDEwKXx8MCkrdGhp cy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCksbGVmdDphLmxlZnQtKHBhcnNlSW50 KHRoaXMuaGVscGVyLmNzcygibGVmdCIpLDEwKXx8MCkrdGhpcy5zY3JvbGxQYXJl bnQuc2Nyb2xsTGVmdCgpfX1lbHNlIHJldHVybnt0b3A6MCxsZWZ0OjB9fSxfY2Fj aGVNYXJnaW5zOmZ1bmN0aW9uKCl7dGhpcy5tYXJnaW5zPXtsZWZ0OnBhcnNlSW50 KHRoaXMuZWxlbWVudC5jc3MoIm1hcmdpbkxlZnQiKSwxMCl8fDAsdG9wOnBhcnNl SW50KHRoaXMuZWxlbWVudC5jc3MoIm1hcmdpblRvcCIpLDEwKXx8MH19LF9jYWNo ZUhlbHBlclByb3BvcnRpb25zOmZ1bmN0aW9uKCl7dGhpcy5oZWxwZXJQcm9wb3J0 aW9ucz17d2lkdGg6dGhpcy5oZWxwZXIub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlz LmhlbHBlci5vdXRlckhlaWdodCgpfX0sX3NldENvbnRhaW5tZW50OmZ1bmN0aW9u KCl7dmFyIGE9dGhpcy5vcHRpb25zO2lmKGEuY29udGFpbm1lbnQ9PQoicGFyZW50 IilhLmNvbnRhaW5tZW50PXRoaXMuaGVscGVyWzBdLnBhcmVudE5vZGU7aWYoYS5j b250YWlubWVudD09ImRvY3VtZW50Inx8YS5jb250YWlubWVudD09IndpbmRvdyIp dGhpcy5jb250YWlubWVudD1bMC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRo aXMub2Zmc2V0LnBhcmVudC5sZWZ0LDAtdGhpcy5vZmZzZXQucmVsYXRpdmUudG9w LXRoaXMub2Zmc2V0LnBhcmVudC50b3AsZChhLmNvbnRhaW5tZW50PT0iZG9jdW1l bnQiP2RvY3VtZW50OndpbmRvdykud2lkdGgoKS10aGlzLmhlbHBlclByb3BvcnRp b25zLndpZHRoLXRoaXMubWFyZ2lucy5sZWZ0LChkKGEuY29udGFpbm1lbnQ9PSJk b2N1bWVudCI/ZG9jdW1lbnQ6d2luZG93KS5oZWlnaHQoKXx8ZG9jdW1lbnQuYm9k eS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodCktdGhpcy5oZWxwZXJQcm9wb3J0aW9u cy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF07aWYoIS9eKGRvY3VtZW50fHdpbmRv d3xwYXJlbnQpJC8udGVzdChhLmNvbnRhaW5tZW50KSYmCmEuY29udGFpbm1lbnQu Y29uc3RydWN0b3IhPUFycmF5KXt2YXIgYj1kKGEuY29udGFpbm1lbnQpWzBdO2lm KGIpe2E9ZChhLmNvbnRhaW5tZW50KS5vZmZzZXQoKTt2YXIgYz1kKGIpLmNzcygi b3ZlcmZsb3ciKSE9ImhpZGRlbiI7dGhpcy5jb250YWlubWVudD1bYS5sZWZ0Kyhw YXJzZUludChkKGIpLmNzcygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKSsocGFy c2VJbnQoZChiKS5jc3MoInBhZGRpbmdMZWZ0IiksMTApfHwwKS10aGlzLm1hcmdp bnMubGVmdCxhLnRvcCsocGFyc2VJbnQoZChiKS5jc3MoImJvcmRlclRvcFdpZHRo IiksMTApfHwwKSsocGFyc2VJbnQoZChiKS5jc3MoInBhZGRpbmdUb3AiKSwxMCl8 fDApLXRoaXMubWFyZ2lucy50b3AsYS5sZWZ0KyhjP01hdGgubWF4KGIuc2Nyb2xs V2lkdGgsYi5vZmZzZXRXaWR0aCk6Yi5vZmZzZXRXaWR0aCktKHBhcnNlSW50KGQo YikuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApLShwYXJzZUludChkKGIp LmNzcygicGFkZGluZ1JpZ2h0IiksCjEwKXx8MCktdGhpcy5oZWxwZXJQcm9wb3J0 aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdCxhLnRvcCsoYz9NYXRoLm1heChi LnNjcm9sbEhlaWdodCxiLm9mZnNldEhlaWdodCk6Yi5vZmZzZXRIZWlnaHQpLShw YXJzZUludChkKGIpLmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8fDApLShwYXJz ZUludChkKGIpLmNzcygicGFkZGluZ0JvdHRvbSIpLDEwKXx8MCktdGhpcy5oZWxw ZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF19fWVsc2UgaWYo YS5jb250YWlubWVudC5jb25zdHJ1Y3Rvcj09QXJyYXkpdGhpcy5jb250YWlubWVu dD1hLmNvbnRhaW5tZW50fSxfY29udmVydFBvc2l0aW9uVG86ZnVuY3Rpb24oYSxi KXtpZighYiliPXRoaXMucG9zaXRpb247YT1hPT0iYWJzb2x1dGUiPzE6LTE7dmFy IGM9dGhpcy5jc3NQb3NpdGlvbj09ImFic29sdXRlIiYmISh0aGlzLnNjcm9sbFBh cmVudFswXSE9ZG9jdW1lbnQmJmQudWkuY29udGFpbnModGhpcy5zY3JvbGxQYXJl bnRbMF0sCnRoaXMub2Zmc2V0UGFyZW50WzBdKSk/dGhpcy5vZmZzZXRQYXJlbnQ6 dGhpcy5zY3JvbGxQYXJlbnQsZj0vKGh0bWx8Ym9keSkvaS50ZXN0KGNbMF0udGFn TmFtZSk7cmV0dXJue3RvcDpiLnRvcCt0aGlzLm9mZnNldC5yZWxhdGl2ZS50b3Aq YSt0aGlzLm9mZnNldC5wYXJlbnQudG9wKmEtKGQuYnJvd3Nlci5zYWZhcmkmJmQu YnJvd3Nlci52ZXJzaW9uPDUyNiYmdGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8w Oih0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPy10aGlzLnNjcm9sbFBhcmVudC5z Y3JvbGxUb3AoKTpmPzA6Yy5zY3JvbGxUb3AoKSkqYSksbGVmdDpiLmxlZnQrdGhp cy5vZmZzZXQucmVsYXRpdmUubGVmdCphK3RoaXMub2Zmc2V0LnBhcmVudC5sZWZ0 KmEtKGQuYnJvd3Nlci5zYWZhcmkmJmQuYnJvd3Nlci52ZXJzaW9uPDUyNiYmdGhp cy5jc3NQb3NpdGlvbj09ImZpeGVkIj8wOih0aGlzLmNzc1Bvc2l0aW9uPT0iZml4 ZWQiPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCk6CmY/MDpjLnNjcm9s bExlZnQoKSkqYSl9fSxfZ2VuZXJhdGVQb3NpdGlvbjpmdW5jdGlvbihhKXt2YXIg Yj10aGlzLm9wdGlvbnMsYz10aGlzLmNzc1Bvc2l0aW9uPT0iYWJzb2x1dGUiJiYh KHRoaXMuc2Nyb2xsUGFyZW50WzBdIT1kb2N1bWVudCYmZC51aS5jb250YWlucyh0 aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBhcmVudFswXSkpP3RoaXMu b2Zmc2V0UGFyZW50OnRoaXMuc2Nyb2xsUGFyZW50LGY9LyhodG1sfGJvZHkpL2ku dGVzdChjWzBdLnRhZ05hbWUpLGU9YS5wYWdlWCxnPWEucGFnZVk7aWYodGhpcy5v cmlnaW5hbFBvc2l0aW9uKXtpZih0aGlzLmNvbnRhaW5tZW50KXtpZihhLnBhZ2VY LXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8dGhpcy5jb250YWlubWVudFswXSllPXRo aXMuY29udGFpbm1lbnRbMF0rdGhpcy5vZmZzZXQuY2xpY2subGVmdDtpZihhLnBh Z2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDx0aGlzLmNvbnRhaW5tZW50WzFdKWc9 dGhpcy5jb250YWlubWVudFsxXSsKdGhpcy5vZmZzZXQuY2xpY2sudG9wO2lmKGEu cGFnZVgtdGhpcy5vZmZzZXQuY2xpY2subGVmdD50aGlzLmNvbnRhaW5tZW50WzJd KWU9dGhpcy5jb250YWlubWVudFsyXSt0aGlzLm9mZnNldC5jbGljay5sZWZ0O2lm KGEucGFnZVktdGhpcy5vZmZzZXQuY2xpY2sudG9wPnRoaXMuY29udGFpbm1lbnRb M10pZz10aGlzLmNvbnRhaW5tZW50WzNdK3RoaXMub2Zmc2V0LmNsaWNrLnRvcH1p ZihiLmdyaWQpe2c9dGhpcy5vcmlnaW5hbFBhZ2VZK01hdGgucm91bmQoKGctdGhp cy5vcmlnaW5hbFBhZ2VZKS9iLmdyaWRbMV0pKmIuZ3JpZFsxXTtnPXRoaXMuY29u dGFpbm1lbnQ/IShnLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDx0aGlzLmNvbnRhaW5t ZW50WzFdfHxnLXRoaXMub2Zmc2V0LmNsaWNrLnRvcD50aGlzLmNvbnRhaW5tZW50 WzNdKT9nOiEoZy10aGlzLm9mZnNldC5jbGljay50b3A8dGhpcy5jb250YWlubWVu dFsxXSk/Zy1iLmdyaWRbMV06ZytiLmdyaWRbMV06ZztlPXRoaXMub3JpZ2luYWxQ YWdlWCsKTWF0aC5yb3VuZCgoZS10aGlzLm9yaWdpbmFsUGFnZVgpL2IuZ3JpZFsw XSkqYi5ncmlkWzBdO2U9dGhpcy5jb250YWlubWVudD8hKGUtdGhpcy5vZmZzZXQu Y2xpY2subGVmdDx0aGlzLmNvbnRhaW5tZW50WzBdfHxlLXRoaXMub2Zmc2V0LmNs aWNrLmxlZnQ+dGhpcy5jb250YWlubWVudFsyXSk/ZTohKGUtdGhpcy5vZmZzZXQu Y2xpY2subGVmdDx0aGlzLmNvbnRhaW5tZW50WzBdKT9lLWIuZ3JpZFswXTplK2Iu Z3JpZFswXTplfX1yZXR1cm57dG9wOmctdGhpcy5vZmZzZXQuY2xpY2sudG9wLXRo aXMub2Zmc2V0LnJlbGF0aXZlLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wKyhk LmJyb3dzZXIuc2FmYXJpJiZkLmJyb3dzZXIudmVyc2lvbjw1MjYmJnRoaXMuY3Nz UG9zaXRpb249PSJmaXhlZCI/MDp0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPy10 aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKTpmPzA6Yy5zY3JvbGxUb3AoKSks bGVmdDplLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQtCnRoaXMub2Zmc2V0LnJlbGF0 aXZlLmxlZnQtdGhpcy5vZmZzZXQucGFyZW50LmxlZnQrKGQuYnJvd3Nlci5zYWZh cmkmJmQuYnJvd3Nlci52ZXJzaW9uPDUyNiYmdGhpcy5jc3NQb3NpdGlvbj09ImZp eGVkIj8wOnRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/LXRoaXMuc2Nyb2xsUGFy ZW50LnNjcm9sbExlZnQoKTpmPzA6Yy5zY3JvbGxMZWZ0KCkpfX0sX2NsZWFyOmZ1 bmN0aW9uKCl7dGhpcy5oZWxwZXIucmVtb3ZlQ2xhc3MoInVpLWRyYWdnYWJsZS1k cmFnZ2luZyIpO3RoaXMuaGVscGVyWzBdIT10aGlzLmVsZW1lbnRbMF0mJiF0aGlz LmNhbmNlbEhlbHBlclJlbW92YWwmJnRoaXMuaGVscGVyLnJlbW92ZSgpO3RoaXMu aGVscGVyPW51bGw7dGhpcy5jYW5jZWxIZWxwZXJSZW1vdmFsPWZhbHNlfSxfdHJp Z2dlcjpmdW5jdGlvbihhLGIsYyl7Yz1jfHx0aGlzLl91aUhhc2goKTtkLnVpLnBs dWdpbi5jYWxsKHRoaXMsYSxbYixjXSk7aWYoYT09ImRyYWciKXRoaXMucG9zaXRp b25BYnM9CnRoaXMuX2NvbnZlcnRQb3NpdGlvblRvKCJhYnNvbHV0ZSIpO3JldHVy biBkLldpZGdldC5wcm90b3R5cGUuX3RyaWdnZXIuY2FsbCh0aGlzLGEsYixjKX0s cGx1Z2luczp7fSxfdWlIYXNoOmZ1bmN0aW9uKCl7cmV0dXJue2hlbHBlcjp0aGlz LmhlbHBlcixwb3NpdGlvbjp0aGlzLnBvc2l0aW9uLG9yaWdpbmFsUG9zaXRpb246 dGhpcy5vcmlnaW5hbFBvc2l0aW9uLG9mZnNldDp0aGlzLnBvc2l0aW9uQWJzfX19 KTtkLmV4dGVuZChkLnVpLmRyYWdnYWJsZSx7dmVyc2lvbjoiMS44LjIifSk7ZC51 aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJjb25uZWN0VG9Tb3J0YWJsZSIse3N0 YXJ0OmZ1bmN0aW9uKGEsYil7dmFyIGM9ZCh0aGlzKS5kYXRhKCJkcmFnZ2FibGUi KSxmPWMub3B0aW9ucyxlPWQuZXh0ZW5kKHt9LGIse2l0ZW06Yy5lbGVtZW50fSk7 Yy5zb3J0YWJsZXM9W107ZChmLmNvbm5lY3RUb1NvcnRhYmxlKS5lYWNoKGZ1bmN0 aW9uKCl7dmFyIGc9ZC5kYXRhKHRoaXMsInNvcnRhYmxlIik7CmlmKGcmJiFnLm9w dGlvbnMuZGlzYWJsZWQpe2Muc29ydGFibGVzLnB1c2goe2luc3RhbmNlOmcsc2hv dWxkUmV2ZXJ0Omcub3B0aW9ucy5yZXZlcnR9KTtnLl9yZWZyZXNoSXRlbXMoKTtn Ll90cmlnZ2VyKCJhY3RpdmF0ZSIsYSxlKX19KX0sc3RvcDpmdW5jdGlvbihhLGIp e3ZhciBjPWQodGhpcykuZGF0YSgiZHJhZ2dhYmxlIiksZj1kLmV4dGVuZCh7fSxi LHtpdGVtOmMuZWxlbWVudH0pO2QuZWFjaChjLnNvcnRhYmxlcyxmdW5jdGlvbigp e2lmKHRoaXMuaW5zdGFuY2UuaXNPdmVyKXt0aGlzLmluc3RhbmNlLmlzT3Zlcj0w O2MuY2FuY2VsSGVscGVyUmVtb3ZhbD10cnVlO3RoaXMuaW5zdGFuY2UuY2FuY2Vs SGVscGVyUmVtb3ZhbD1mYWxzZTtpZih0aGlzLnNob3VsZFJldmVydCl0aGlzLmlu c3RhbmNlLm9wdGlvbnMucmV2ZXJ0PXRydWU7dGhpcy5pbnN0YW5jZS5fbW91c2VT dG9wKGEpO3RoaXMuaW5zdGFuY2Uub3B0aW9ucy5oZWxwZXI9dGhpcy5pbnN0YW5j ZS5vcHRpb25zLl9oZWxwZXI7CmMub3B0aW9ucy5oZWxwZXI9PSJvcmlnaW5hbCIm JnRoaXMuaW5zdGFuY2UuY3VycmVudEl0ZW0uY3NzKHt0b3A6ImF1dG8iLGxlZnQ6 ImF1dG8ifSl9ZWxzZXt0aGlzLmluc3RhbmNlLmNhbmNlbEhlbHBlclJlbW92YWw9 ZmFsc2U7dGhpcy5pbnN0YW5jZS5fdHJpZ2dlcigiZGVhY3RpdmF0ZSIsYSxmKX19 KX0sZHJhZzpmdW5jdGlvbihhLGIpe3ZhciBjPWQodGhpcykuZGF0YSgiZHJhZ2dh YmxlIiksZj10aGlzO2QuZWFjaChjLnNvcnRhYmxlcyxmdW5jdGlvbigpe3RoaXMu aW5zdGFuY2UucG9zaXRpb25BYnM9Yy5wb3NpdGlvbkFiczt0aGlzLmluc3RhbmNl LmhlbHBlclByb3BvcnRpb25zPWMuaGVscGVyUHJvcG9ydGlvbnM7dGhpcy5pbnN0 YW5jZS5vZmZzZXQuY2xpY2s9Yy5vZmZzZXQuY2xpY2s7aWYodGhpcy5pbnN0YW5j ZS5faW50ZXJzZWN0c1dpdGgodGhpcy5pbnN0YW5jZS5jb250YWluZXJDYWNoZSkp e2lmKCF0aGlzLmluc3RhbmNlLmlzT3Zlcil7dGhpcy5pbnN0YW5jZS5pc092ZXI9 CjE7dGhpcy5pbnN0YW5jZS5jdXJyZW50SXRlbT1kKGYpLmNsb25lKCkuYXBwZW5k VG8odGhpcy5pbnN0YW5jZS5lbGVtZW50KS5kYXRhKCJzb3J0YWJsZS1pdGVtIix0 cnVlKTt0aGlzLmluc3RhbmNlLm9wdGlvbnMuX2hlbHBlcj10aGlzLmluc3RhbmNl Lm9wdGlvbnMuaGVscGVyO3RoaXMuaW5zdGFuY2Uub3B0aW9ucy5oZWxwZXI9ZnVu Y3Rpb24oKXtyZXR1cm4gYi5oZWxwZXJbMF19O2EudGFyZ2V0PXRoaXMuaW5zdGFu Y2UuY3VycmVudEl0ZW1bMF07dGhpcy5pbnN0YW5jZS5fbW91c2VDYXB0dXJlKGEs dHJ1ZSk7dGhpcy5pbnN0YW5jZS5fbW91c2VTdGFydChhLHRydWUsdHJ1ZSk7dGhp cy5pbnN0YW5jZS5vZmZzZXQuY2xpY2sudG9wPWMub2Zmc2V0LmNsaWNrLnRvcDt0 aGlzLmluc3RhbmNlLm9mZnNldC5jbGljay5sZWZ0PWMub2Zmc2V0LmNsaWNrLmxl ZnQ7dGhpcy5pbnN0YW5jZS5vZmZzZXQucGFyZW50LmxlZnQtPWMub2Zmc2V0LnBh cmVudC5sZWZ0LXRoaXMuaW5zdGFuY2Uub2Zmc2V0LnBhcmVudC5sZWZ0Owp0aGlz Lmluc3RhbmNlLm9mZnNldC5wYXJlbnQudG9wLT1jLm9mZnNldC5wYXJlbnQudG9w LXRoaXMuaW5zdGFuY2Uub2Zmc2V0LnBhcmVudC50b3A7Yy5fdHJpZ2dlcigidG9T b3J0YWJsZSIsYSk7Yy5kcm9wcGVkPXRoaXMuaW5zdGFuY2UuZWxlbWVudDtjLmN1 cnJlbnRJdGVtPWMuZWxlbWVudDt0aGlzLmluc3RhbmNlLmZyb21PdXRzaWRlPWN9 dGhpcy5pbnN0YW5jZS5jdXJyZW50SXRlbSYmdGhpcy5pbnN0YW5jZS5fbW91c2VE cmFnKGEpfWVsc2UgaWYodGhpcy5pbnN0YW5jZS5pc092ZXIpe3RoaXMuaW5zdGFu Y2UuaXNPdmVyPTA7dGhpcy5pbnN0YW5jZS5jYW5jZWxIZWxwZXJSZW1vdmFsPXRy dWU7dGhpcy5pbnN0YW5jZS5vcHRpb25zLnJldmVydD1mYWxzZTt0aGlzLmluc3Rh bmNlLl90cmlnZ2VyKCJvdXQiLGEsdGhpcy5pbnN0YW5jZS5fdWlIYXNoKHRoaXMu aW5zdGFuY2UpKTt0aGlzLmluc3RhbmNlLl9tb3VzZVN0b3AoYSx0cnVlKTt0aGlz Lmluc3RhbmNlLm9wdGlvbnMuaGVscGVyPQp0aGlzLmluc3RhbmNlLm9wdGlvbnMu X2hlbHBlcjt0aGlzLmluc3RhbmNlLmN1cnJlbnRJdGVtLnJlbW92ZSgpO3RoaXMu aW5zdGFuY2UucGxhY2Vob2xkZXImJnRoaXMuaW5zdGFuY2UucGxhY2Vob2xkZXIu cmVtb3ZlKCk7Yy5fdHJpZ2dlcigiZnJvbVNvcnRhYmxlIixhKTtjLmRyb3BwZWQ9 ZmFsc2V9fSl9fSk7ZC51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJjdXJzb3Ii LHtzdGFydDpmdW5jdGlvbigpe3ZhciBhPWQoImJvZHkiKSxiPWQodGhpcykuZGF0 YSgiZHJhZ2dhYmxlIikub3B0aW9ucztpZihhLmNzcygiY3Vyc29yIikpYi5fY3Vy c29yPWEuY3NzKCJjdXJzb3IiKTthLmNzcygiY3Vyc29yIixiLmN1cnNvcil9LHN0 b3A6ZnVuY3Rpb24oKXt2YXIgYT1kKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIpLm9w dGlvbnM7YS5fY3Vyc29yJiZkKCJib2R5IikuY3NzKCJjdXJzb3IiLGEuX2N1cnNv cil9fSk7ZC51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJpZnJhbWVGaXgiLHtz dGFydDpmdW5jdGlvbigpe3ZhciBhPQpkKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIp Lm9wdGlvbnM7ZChhLmlmcmFtZUZpeD09PXRydWU/ImlmcmFtZSI6YS5pZnJhbWVG aXgpLmVhY2goZnVuY3Rpb24oKXtkKCc8ZGl2IGNsYXNzPSJ1aS1kcmFnZ2FibGUt aWZyYW1lRml4IiBzdHlsZT0iYmFja2dyb3VuZDogI2ZmZjsiPjwvZGl2PicpLmNz cyh7d2lkdGg6dGhpcy5vZmZzZXRXaWR0aCsicHgiLGhlaWdodDp0aGlzLm9mZnNl dEhlaWdodCsicHgiLHBvc2l0aW9uOiJhYnNvbHV0ZSIsb3BhY2l0eToiMC4wMDEi LHpJbmRleDoxRTN9KS5jc3MoZCh0aGlzKS5vZmZzZXQoKSkuYXBwZW5kVG8oImJv ZHkiKX0pfSxzdG9wOmZ1bmN0aW9uKCl7ZCgiZGl2LnVpLWRyYWdnYWJsZS1pZnJh bWVGaXgiKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5wYXJlbnROb2RlLnJlbW92ZUNo aWxkKHRoaXMpfSl9fSk7ZC51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJvcGFj aXR5Iix7c3RhcnQ6ZnVuY3Rpb24oYSxiKXthPWQoYi5oZWxwZXIpO2I9ZCh0aGlz KS5kYXRhKCJkcmFnZ2FibGUiKS5vcHRpb25zOwppZihhLmNzcygib3BhY2l0eSIp KWIuX29wYWNpdHk9YS5jc3MoIm9wYWNpdHkiKTthLmNzcygib3BhY2l0eSIsYi5v cGFjaXR5KX0sc3RvcDpmdW5jdGlvbihhLGIpe2E9ZCh0aGlzKS5kYXRhKCJkcmFn Z2FibGUiKS5vcHRpb25zO2EuX29wYWNpdHkmJmQoYi5oZWxwZXIpLmNzcygib3Bh Y2l0eSIsYS5fb3BhY2l0eSl9fSk7ZC51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUi LCJzY3JvbGwiLHtzdGFydDpmdW5jdGlvbigpe3ZhciBhPWQodGhpcykuZGF0YSgi ZHJhZ2dhYmxlIik7aWYoYS5zY3JvbGxQYXJlbnRbMF0hPWRvY3VtZW50JiZhLnNj cm9sbFBhcmVudFswXS50YWdOYW1lIT0iSFRNTCIpYS5vdmVyZmxvd09mZnNldD1h LnNjcm9sbFBhcmVudC5vZmZzZXQoKX0sZHJhZzpmdW5jdGlvbihhKXt2YXIgYj1k KHRoaXMpLmRhdGEoImRyYWdnYWJsZSIpLGM9Yi5vcHRpb25zLGY9ZmFsc2U7aWYo Yi5zY3JvbGxQYXJlbnRbMF0hPWRvY3VtZW50JiZiLnNjcm9sbFBhcmVudFswXS50 YWdOYW1lIT0KIkhUTUwiKXtpZighYy5heGlzfHxjLmF4aXMhPSJ4IilpZihiLm92 ZXJmbG93T2Zmc2V0LnRvcCtiLnNjcm9sbFBhcmVudFswXS5vZmZzZXRIZWlnaHQt YS5wYWdlWTxjLnNjcm9sbFNlbnNpdGl2aXR5KWIuc2Nyb2xsUGFyZW50WzBdLnNj cm9sbFRvcD1mPWIuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbFRvcCtjLnNjcm9sbFNw ZWVkO2Vsc2UgaWYoYS5wYWdlWS1iLm92ZXJmbG93T2Zmc2V0LnRvcDxjLnNjcm9s bFNlbnNpdGl2aXR5KWIuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbFRvcD1mPWIuc2Ny b2xsUGFyZW50WzBdLnNjcm9sbFRvcC1jLnNjcm9sbFNwZWVkO2lmKCFjLmF4aXN8 fGMuYXhpcyE9InkiKWlmKGIub3ZlcmZsb3dPZmZzZXQubGVmdCtiLnNjcm9sbFBh cmVudFswXS5vZmZzZXRXaWR0aC1hLnBhZ2VYPGMuc2Nyb2xsU2Vuc2l0aXZpdHkp Yi5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdD1mPWIuc2Nyb2xsUGFyZW50WzBd LnNjcm9sbExlZnQrYy5zY3JvbGxTcGVlZDtlbHNlIGlmKGEucGFnZVgtCmIub3Zl cmZsb3dPZmZzZXQubGVmdDxjLnNjcm9sbFNlbnNpdGl2aXR5KWIuc2Nyb2xsUGFy ZW50WzBdLnNjcm9sbExlZnQ9Zj1iLnNjcm9sbFBhcmVudFswXS5zY3JvbGxMZWZ0 LWMuc2Nyb2xsU3BlZWR9ZWxzZXtpZighYy5heGlzfHxjLmF4aXMhPSJ4IilpZihh LnBhZ2VZLWQoZG9jdW1lbnQpLnNjcm9sbFRvcCgpPGMuc2Nyb2xsU2Vuc2l0aXZp dHkpZj1kKGRvY3VtZW50KS5zY3JvbGxUb3AoZChkb2N1bWVudCkuc2Nyb2xsVG9w KCktYy5zY3JvbGxTcGVlZCk7ZWxzZSBpZihkKHdpbmRvdykuaGVpZ2h0KCktKGEu cGFnZVktZChkb2N1bWVudCkuc2Nyb2xsVG9wKCkpPGMuc2Nyb2xsU2Vuc2l0aXZp dHkpZj1kKGRvY3VtZW50KS5zY3JvbGxUb3AoZChkb2N1bWVudCkuc2Nyb2xsVG9w KCkrYy5zY3JvbGxTcGVlZCk7aWYoIWMuYXhpc3x8Yy5heGlzIT0ieSIpaWYoYS5w YWdlWC1kKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCk8Yy5zY3JvbGxTZW5zaXRpdml0 eSlmPWQoZG9jdW1lbnQpLnNjcm9sbExlZnQoZChkb2N1bWVudCkuc2Nyb2xsTGVm dCgpLQpjLnNjcm9sbFNwZWVkKTtlbHNlIGlmKGQod2luZG93KS53aWR0aCgpLShh LnBhZ2VYLWQoZG9jdW1lbnQpLnNjcm9sbExlZnQoKSk8Yy5zY3JvbGxTZW5zaXRp dml0eSlmPWQoZG9jdW1lbnQpLnNjcm9sbExlZnQoZChkb2N1bWVudCkuc2Nyb2xs TGVmdCgpK2Muc2Nyb2xsU3BlZWQpfWYhPT1mYWxzZSYmZC51aS5kZG1hbmFnZXIm JiFjLmRyb3BCZWhhdmlvdXImJmQudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRz KGIsYSl9fSk7ZC51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJzbmFwIix7c3Rh cnQ6ZnVuY3Rpb24oKXt2YXIgYT1kKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIpLGI9 YS5vcHRpb25zO2Euc25hcEVsZW1lbnRzPVtdO2QoYi5zbmFwLmNvbnN0cnVjdG9y IT1TdHJpbmc/Yi5zbmFwLml0ZW1zfHwiOmRhdGEoZHJhZ2dhYmxlKSI6Yi5zbmFw KS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9ZCh0aGlzKSxmPWMub2Zmc2V0KCk7dGhp cyE9YS5lbGVtZW50WzBdJiZhLnNuYXBFbGVtZW50cy5wdXNoKHtpdGVtOnRoaXMs CndpZHRoOmMub3V0ZXJXaWR0aCgpLGhlaWdodDpjLm91dGVySGVpZ2h0KCksdG9w OmYudG9wLGxlZnQ6Zi5sZWZ0fSl9KX0sZHJhZzpmdW5jdGlvbihhLGIpe2Zvcih2 YXIgYz1kKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIpLGY9Yy5vcHRpb25zLGU9Zi5z bmFwVG9sZXJhbmNlLGc9Yi5vZmZzZXQubGVmdCxuPWcrYy5oZWxwZXJQcm9wb3J0 aW9ucy53aWR0aCxtPWIub2Zmc2V0LnRvcCxvPW0rYy5oZWxwZXJQcm9wb3J0aW9u cy5oZWlnaHQsaD1jLnNuYXBFbGVtZW50cy5sZW5ndGgtMTtoPj0wO2gtLSl7dmFy IGk9Yy5zbmFwRWxlbWVudHNbaF0ubGVmdCxrPWkrYy5zbmFwRWxlbWVudHNbaF0u d2lkdGgsaj1jLnNuYXBFbGVtZW50c1toXS50b3AsbD1qK2Muc25hcEVsZW1lbnRz W2hdLmhlaWdodDtpZihpLWU8ZyYmZzxrK2UmJmotZTxtJiZtPGwrZXx8aS1lPGcm Jmc8aytlJiZqLWU8byYmbzxsK2V8fGktZTxuJiZuPGsrZSYmai1lPG0mJm08bCtl fHxpLWU8biYmbjxrK2UmJmotZTxvJiYKbzxsK2Upe2lmKGYuc25hcE1vZGUhPSJp bm5lciIpe3ZhciBwPU1hdGguYWJzKGotbyk8PWUscT1NYXRoLmFicyhsLW0pPD1l LHI9TWF0aC5hYnMoaS1uKTw9ZSxzPU1hdGguYWJzKGstZyk8PWU7aWYocCliLnBv c2l0aW9uLnRvcD1jLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6 ai1jLmhlbHBlclByb3BvcnRpb25zLmhlaWdodCxsZWZ0OjB9KS50b3AtYy5tYXJn aW5zLnRvcDtpZihxKWIucG9zaXRpb24udG9wPWMuX2NvbnZlcnRQb3NpdGlvblRv KCJyZWxhdGl2ZSIse3RvcDpsLGxlZnQ6MH0pLnRvcC1jLm1hcmdpbnMudG9wO2lm KHIpYi5wb3NpdGlvbi5sZWZ0PWMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2 ZSIse3RvcDowLGxlZnQ6aS1jLmhlbHBlclByb3BvcnRpb25zLndpZHRofSkubGVm dC1jLm1hcmdpbnMubGVmdDtpZihzKWIucG9zaXRpb24ubGVmdD1jLl9jb252ZXJ0 UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0Omt9KS5sZWZ0LWMubWFy Z2lucy5sZWZ0fXZhciB0PQpwfHxxfHxyfHxzO2lmKGYuc25hcE1vZGUhPSJvdXRl ciIpe3A9TWF0aC5hYnMoai1tKTw9ZTtxPU1hdGguYWJzKGwtbyk8PWU7cj1NYXRo LmFicyhpLWcpPD1lO3M9TWF0aC5hYnMoay1uKTw9ZTtpZihwKWIucG9zaXRpb24u dG9wPWMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDpqLGxlZnQ6 MH0pLnRvcC1jLm1hcmdpbnMudG9wO2lmKHEpYi5wb3NpdGlvbi50b3A9Yy5fY29u dmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOmwtYy5oZWxwZXJQcm9wb3J0 aW9ucy5oZWlnaHQsbGVmdDowfSkudG9wLWMubWFyZ2lucy50b3A7aWYociliLnBv c2l0aW9uLmxlZnQ9Yy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9w OjAsbGVmdDppfSkubGVmdC1jLm1hcmdpbnMubGVmdDtpZihzKWIucG9zaXRpb24u bGVmdD1jLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0 OmstYy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aH0pLmxlZnQtYy5tYXJnaW5zLmxl ZnR9aWYoIWMuc25hcEVsZW1lbnRzW2hdLnNuYXBwaW5nJiYKKHB8fHF8fHJ8fHN8 fHQpKWMub3B0aW9ucy5zbmFwLnNuYXAmJmMub3B0aW9ucy5zbmFwLnNuYXAuY2Fs bChjLmVsZW1lbnQsYSxkLmV4dGVuZChjLl91aUhhc2goKSx7c25hcEl0ZW06Yy5z bmFwRWxlbWVudHNbaF0uaXRlbX0pKTtjLnNuYXBFbGVtZW50c1toXS5zbmFwcGlu Zz1wfHxxfHxyfHxzfHx0fWVsc2V7Yy5zbmFwRWxlbWVudHNbaF0uc25hcHBpbmcm JmMub3B0aW9ucy5zbmFwLnJlbGVhc2UmJmMub3B0aW9ucy5zbmFwLnJlbGVhc2Uu Y2FsbChjLmVsZW1lbnQsYSxkLmV4dGVuZChjLl91aUhhc2goKSx7c25hcEl0ZW06 Yy5zbmFwRWxlbWVudHNbaF0uaXRlbX0pKTtjLnNuYXBFbGVtZW50c1toXS5zbmFw cGluZz1mYWxzZX19fX0pO2QudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwic3Rh Y2siLHtzdGFydDpmdW5jdGlvbigpe3ZhciBhPWQodGhpcykuZGF0YSgiZHJhZ2dh YmxlIikub3B0aW9uczthPWQubWFrZUFycmF5KGQoYS5zdGFjaykpLnNvcnQoZnVu Y3Rpb24oYyxmKXtyZXR1cm4ocGFyc2VJbnQoZChjKS5jc3MoInpJbmRleCIpLAox MCl8fDApLShwYXJzZUludChkKGYpLmNzcygiekluZGV4IiksMTApfHwwKX0pO2lm KGEubGVuZ3RoKXt2YXIgYj1wYXJzZUludChhWzBdLnN0eWxlLnpJbmRleCl8fDA7 ZChhKS5lYWNoKGZ1bmN0aW9uKGMpe3RoaXMuc3R5bGUuekluZGV4PWIrY30pO3Ro aXNbMF0uc3R5bGUuekluZGV4PWIrYS5sZW5ndGh9fX0pO2QudWkucGx1Z2luLmFk ZCgiZHJhZ2dhYmxlIiwiekluZGV4Iix7c3RhcnQ6ZnVuY3Rpb24oYSxiKXthPWQo Yi5oZWxwZXIpO2I9ZCh0aGlzKS5kYXRhKCJkcmFnZ2FibGUiKS5vcHRpb25zO2lm KGEuY3NzKCJ6SW5kZXgiKSliLl96SW5kZXg9YS5jc3MoInpJbmRleCIpO2EuY3Nz KCJ6SW5kZXgiLGIuekluZGV4KX0sc3RvcDpmdW5jdGlvbihhLGIpe2E9ZCh0aGlz KS5kYXRhKCJkcmFnZ2FibGUiKS5vcHRpb25zO2EuX3pJbmRleCYmZChiLmhlbHBl cikuY3NzKCJ6SW5kZXgiLGEuX3pJbmRleCl9fSl9KShqUXVlcnkpOwo7LyoKICog alF1ZXJ5IFVJIERyb3BwYWJsZSAxLjguMgogKgogKiBDb3B5cmlnaHQgKGMpIDIw MTAgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCiAqIER1 YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCAoTUlULUxJQ0VOU0UudHh0KQogKiBh bmQgR1BMIChHUEwtTElDRU5TRS50eHQpIGxpY2Vuc2VzLgogKgogKiBodHRwOi8v ZG9jcy5qcXVlcnkuY29tL1VJL0Ryb3BwYWJsZXMKICoKICogRGVwZW5kczoKICoJ anF1ZXJ5LnVpLmNvcmUuanMKICoJanF1ZXJ5LnVpLndpZGdldC5qcwogKglqcXVl cnkudWkubW91c2UuanMKICoJanF1ZXJ5LnVpLmRyYWdnYWJsZS5qcwogKi8KKGZ1 bmN0aW9uKGQpe2Qud2lkZ2V0KCJ1aS5kcm9wcGFibGUiLHt3aWRnZXRFdmVudFBy ZWZpeDoiZHJvcCIsb3B0aW9uczp7YWNjZXB0OiIqIixhY3RpdmVDbGFzczpmYWxz ZSxhZGRDbGFzc2VzOnRydWUsZ3JlZWR5OmZhbHNlLGhvdmVyQ2xhc3M6ZmFsc2Us c2NvcGU6ImRlZmF1bHQiLHRvbGVyYW5jZToiaW50ZXJzZWN0In0sX2NyZWF0ZTpm dW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucyxiPWEuYWNjZXB0O3RoaXMuaXNv dmVyPTA7dGhpcy5pc291dD0xO3RoaXMuYWNjZXB0PWQuaXNGdW5jdGlvbihiKT9i OmZ1bmN0aW9uKGMpe3JldHVybiBjLmlzKGIpfTt0aGlzLnByb3BvcnRpb25zPXt3 aWR0aDp0aGlzLmVsZW1lbnRbMF0ub2Zmc2V0V2lkdGgsaGVpZ2h0OnRoaXMuZWxl bWVudFswXS5vZmZzZXRIZWlnaHR9O2QudWkuZGRtYW5hZ2VyLmRyb3BwYWJsZXNb YS5zY29wZV09ZC51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1thLnNjb3BlXXx8W107 ZC51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1thLnNjb3BlXS5wdXNoKHRoaXMpOwph LmFkZENsYXNzZXMmJnRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktZHJvcHBhYmxl Iil9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtmb3IodmFyIGE9ZC51aS5kZG1hbmFnZXIu ZHJvcHBhYmxlc1t0aGlzLm9wdGlvbnMuc2NvcGVdLGI9MDtiPGEubGVuZ3RoO2Ir KylhW2JdPT10aGlzJiZhLnNwbGljZShiLDEpO3RoaXMuZWxlbWVudC5yZW1vdmVD bGFzcygidWktZHJvcHBhYmxlIHVpLWRyb3BwYWJsZS1kaXNhYmxlZCIpLnJlbW92 ZURhdGEoImRyb3BwYWJsZSIpLnVuYmluZCgiLmRyb3BwYWJsZSIpO3JldHVybiB0 aGlzfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGEsYil7aWYoYT09ImFjY2VwdCIpdGhp cy5hY2NlcHQ9ZC5pc0Z1bmN0aW9uKGIpP2I6ZnVuY3Rpb24oYyl7cmV0dXJuIGMu aXMoYil9O2QuV2lkZ2V0LnByb3RvdHlwZS5fc2V0T3B0aW9uLmFwcGx5KHRoaXMs YXJndW1lbnRzKX0sX2FjdGl2YXRlOmZ1bmN0aW9uKGEpe3ZhciBiPWQudWkuZGRt YW5hZ2VyLmN1cnJlbnQ7dGhpcy5vcHRpb25zLmFjdGl2ZUNsYXNzJiYKdGhpcy5l bGVtZW50LmFkZENsYXNzKHRoaXMub3B0aW9ucy5hY3RpdmVDbGFzcyk7YiYmdGhp cy5fdHJpZ2dlcigiYWN0aXZhdGUiLGEsdGhpcy51aShiKSl9LF9kZWFjdGl2YXRl OmZ1bmN0aW9uKGEpe3ZhciBiPWQudWkuZGRtYW5hZ2VyLmN1cnJlbnQ7dGhpcy5v cHRpb25zLmFjdGl2ZUNsYXNzJiZ0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3ModGhp cy5vcHRpb25zLmFjdGl2ZUNsYXNzKTtiJiZ0aGlzLl90cmlnZ2VyKCJkZWFjdGl2 YXRlIixhLHRoaXMudWkoYikpfSxfb3ZlcjpmdW5jdGlvbihhKXt2YXIgYj1kLnVp LmRkbWFuYWdlci5jdXJyZW50O2lmKCEoIWJ8fChiLmN1cnJlbnRJdGVtfHxiLmVs ZW1lbnQpWzBdPT10aGlzLmVsZW1lbnRbMF0pKWlmKHRoaXMuYWNjZXB0LmNhbGwo dGhpcy5lbGVtZW50WzBdLGIuY3VycmVudEl0ZW18fGIuZWxlbWVudCkpe3RoaXMu b3B0aW9ucy5ob3ZlckNsYXNzJiZ0aGlzLmVsZW1lbnQuYWRkQ2xhc3ModGhpcy5v cHRpb25zLmhvdmVyQ2xhc3MpOwp0aGlzLl90cmlnZ2VyKCJvdmVyIixhLHRoaXMu dWkoYikpfX0sX291dDpmdW5jdGlvbihhKXt2YXIgYj1kLnVpLmRkbWFuYWdlci5j dXJyZW50O2lmKCEoIWJ8fChiLmN1cnJlbnRJdGVtfHxiLmVsZW1lbnQpWzBdPT10 aGlzLmVsZW1lbnRbMF0pKWlmKHRoaXMuYWNjZXB0LmNhbGwodGhpcy5lbGVtZW50 WzBdLGIuY3VycmVudEl0ZW18fGIuZWxlbWVudCkpe3RoaXMub3B0aW9ucy5ob3Zl ckNsYXNzJiZ0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmhv dmVyQ2xhc3MpO3RoaXMuX3RyaWdnZXIoIm91dCIsYSx0aGlzLnVpKGIpKX19LF9k cm9wOmZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8ZC51aS5kZG1hbmFnZXIuY3VycmVu dDtpZighY3x8KGMuY3VycmVudEl0ZW18fGMuZWxlbWVudClbMF09PXRoaXMuZWxl bWVudFswXSlyZXR1cm4gZmFsc2U7dmFyIGU9ZmFsc2U7dGhpcy5lbGVtZW50LmZp bmQoIjpkYXRhKGRyb3BwYWJsZSkiKS5ub3QoIi51aS1kcmFnZ2FibGUtZHJhZ2dp bmciKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGc9CmQuZGF0YSh0aGlzLCJkcm9wcGFi bGUiKTtpZihnLm9wdGlvbnMuZ3JlZWR5JiYhZy5vcHRpb25zLmRpc2FibGVkJiZn Lm9wdGlvbnMuc2NvcGU9PWMub3B0aW9ucy5zY29wZSYmZy5hY2NlcHQuY2FsbChn LmVsZW1lbnRbMF0sYy5jdXJyZW50SXRlbXx8Yy5lbGVtZW50KSYmZC51aS5pbnRl cnNlY3QoYyxkLmV4dGVuZChnLHtvZmZzZXQ6Zy5lbGVtZW50Lm9mZnNldCgpfSks Zy5vcHRpb25zLnRvbGVyYW5jZSkpe2U9dHJ1ZTtyZXR1cm4gZmFsc2V9fSk7aWYo ZSlyZXR1cm4gZmFsc2U7aWYodGhpcy5hY2NlcHQuY2FsbCh0aGlzLmVsZW1lbnRb MF0sYy5jdXJyZW50SXRlbXx8Yy5lbGVtZW50KSl7dGhpcy5vcHRpb25zLmFjdGl2 ZUNsYXNzJiZ0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmFj dGl2ZUNsYXNzKTt0aGlzLm9wdGlvbnMuaG92ZXJDbGFzcyYmdGhpcy5lbGVtZW50 LnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5ob3ZlckNsYXNzKTt0aGlzLl90cmln Z2VyKCJkcm9wIiwKYSx0aGlzLnVpKGMpKTtyZXR1cm4gdGhpcy5lbGVtZW50fXJl dHVybiBmYWxzZX0sdWk6ZnVuY3Rpb24oYSl7cmV0dXJue2RyYWdnYWJsZTphLmN1 cnJlbnRJdGVtfHxhLmVsZW1lbnQsaGVscGVyOmEuaGVscGVyLHBvc2l0aW9uOmEu cG9zaXRpb24sb2Zmc2V0OmEucG9zaXRpb25BYnN9fX0pO2QuZXh0ZW5kKGQudWku ZHJvcHBhYmxlLHt2ZXJzaW9uOiIxLjguMiJ9KTtkLnVpLmludGVyc2VjdD1mdW5j dGlvbihhLGIsYyl7aWYoIWIub2Zmc2V0KXJldHVybiBmYWxzZTt2YXIgZT0oYS5w b3NpdGlvbkFic3x8YS5wb3NpdGlvbi5hYnNvbHV0ZSkubGVmdCxnPWUrYS5oZWxw ZXJQcm9wb3J0aW9ucy53aWR0aCxmPShhLnBvc2l0aW9uQWJzfHxhLnBvc2l0aW9u LmFic29sdXRlKS50b3AsaD1mK2EuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LGk9 Yi5vZmZzZXQubGVmdCxrPWkrYi5wcm9wb3J0aW9ucy53aWR0aCxqPWIub2Zmc2V0 LnRvcCxsPWorYi5wcm9wb3J0aW9ucy5oZWlnaHQ7CnN3aXRjaChjKXtjYXNlICJm aXQiOnJldHVybiBpPGUmJmc8ayYmajxmJiZoPGw7Y2FzZSAiaW50ZXJzZWN0Ijpy ZXR1cm4gaTxlK2EuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMiYmZy1hLmhlbHBl clByb3BvcnRpb25zLndpZHRoLzI8ayYmajxmK2EuaGVscGVyUHJvcG9ydGlvbnMu aGVpZ2h0LzImJmgtYS5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQvMjxsO2Nhc2Ug InBvaW50ZXIiOnJldHVybiBkLnVpLmlzT3ZlcigoYS5wb3NpdGlvbkFic3x8YS5w b3NpdGlvbi5hYnNvbHV0ZSkudG9wKyhhLmNsaWNrT2Zmc2V0fHxhLm9mZnNldC5j bGljaykudG9wLChhLnBvc2l0aW9uQWJzfHxhLnBvc2l0aW9uLmFic29sdXRlKS5s ZWZ0KyhhLmNsaWNrT2Zmc2V0fHxhLm9mZnNldC5jbGljaykubGVmdCxqLGksYi5w cm9wb3J0aW9ucy5oZWlnaHQsYi5wcm9wb3J0aW9ucy53aWR0aCk7Y2FzZSAidG91 Y2giOnJldHVybihmPj1qJiZmPD1sfHxoPj1qJiZoPD1sfHxmPGomJmg+bCkmJihl Pj1pJiYKZTw9a3x8Zz49aSYmZzw9a3x8ZTxpJiZnPmspO2RlZmF1bHQ6cmV0dXJu IGZhbHNlfX07ZC51aS5kZG1hbmFnZXI9e2N1cnJlbnQ6bnVsbCxkcm9wcGFibGVz OnsiZGVmYXVsdCI6W119LHByZXBhcmVPZmZzZXRzOmZ1bmN0aW9uKGEsYil7dmFy IGM9ZC51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1thLm9wdGlvbnMuc2NvcGVdfHxb XSxlPWI/Yi50eXBlOm51bGwsZz0oYS5jdXJyZW50SXRlbXx8YS5lbGVtZW50KS5m aW5kKCI6ZGF0YShkcm9wcGFibGUpIikuYW5kU2VsZigpLGY9MDthOmZvcig7Zjxj Lmxlbmd0aDtmKyspaWYoIShjW2ZdLm9wdGlvbnMuZGlzYWJsZWR8fGEmJiFjW2Zd LmFjY2VwdC5jYWxsKGNbZl0uZWxlbWVudFswXSxhLmN1cnJlbnRJdGVtfHxhLmVs ZW1lbnQpKSl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspaWYoZ1toXT09Y1tm XS5lbGVtZW50WzBdKXtjW2ZdLnByb3BvcnRpb25zLmhlaWdodD0wO2NvbnRpbnVl IGF9Y1tmXS52aXNpYmxlPWNbZl0uZWxlbWVudC5jc3MoImRpc3BsYXkiKSE9CiJu b25lIjtpZihjW2ZdLnZpc2libGUpe2NbZl0ub2Zmc2V0PWNbZl0uZWxlbWVudC5v ZmZzZXQoKTtjW2ZdLnByb3BvcnRpb25zPXt3aWR0aDpjW2ZdLmVsZW1lbnRbMF0u b2Zmc2V0V2lkdGgsaGVpZ2h0OmNbZl0uZWxlbWVudFswXS5vZmZzZXRIZWlnaHR9 O2U9PSJtb3VzZWRvd24iJiZjW2ZdLl9hY3RpdmF0ZS5jYWxsKGNbZl0sYil9fX0s ZHJvcDpmdW5jdGlvbihhLGIpe3ZhciBjPWZhbHNlO2QuZWFjaChkLnVpLmRkbWFu YWdlci5kcm9wcGFibGVzW2Eub3B0aW9ucy5zY29wZV18fFtdLGZ1bmN0aW9uKCl7 aWYodGhpcy5vcHRpb25zKXtpZighdGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlz LnZpc2libGUmJmQudWkuaW50ZXJzZWN0KGEsdGhpcyx0aGlzLm9wdGlvbnMudG9s ZXJhbmNlKSljPWN8fHRoaXMuX2Ryb3AuY2FsbCh0aGlzLGIpO2lmKCF0aGlzLm9w dGlvbnMuZGlzYWJsZWQmJnRoaXMudmlzaWJsZSYmdGhpcy5hY2NlcHQuY2FsbCh0 aGlzLmVsZW1lbnRbMF0sYS5jdXJyZW50SXRlbXx8CmEuZWxlbWVudCkpe3RoaXMu aXNvdXQ9MTt0aGlzLmlzb3Zlcj0wO3RoaXMuX2RlYWN0aXZhdGUuY2FsbCh0aGlz LGIpfX19KTtyZXR1cm4gY30sZHJhZzpmdW5jdGlvbihhLGIpe2Eub3B0aW9ucy5y ZWZyZXNoUG9zaXRpb25zJiZkLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyhh LGIpO2QuZWFjaChkLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW2Eub3B0aW9ucy5z Y29wZV18fFtdLGZ1bmN0aW9uKCl7aWYoISh0aGlzLm9wdGlvbnMuZGlzYWJsZWR8 fHRoaXMuZ3JlZWR5Q2hpbGR8fCF0aGlzLnZpc2libGUpKXt2YXIgYz1kLnVpLmlu dGVyc2VjdChhLHRoaXMsdGhpcy5vcHRpb25zLnRvbGVyYW5jZSk7aWYoYz0hYyYm dGhpcy5pc292ZXI9PTE/Imlzb3V0IjpjJiZ0aGlzLmlzb3Zlcj09MD8iaXNvdmVy IjpudWxsKXt2YXIgZTtpZih0aGlzLm9wdGlvbnMuZ3JlZWR5KXt2YXIgZz10aGlz LmVsZW1lbnQucGFyZW50cygiOmRhdGEoZHJvcHBhYmxlKTplcSgwKSIpO2lmKGcu bGVuZ3RoKXtlPQpkLmRhdGEoZ1swXSwiZHJvcHBhYmxlIik7ZS5ncmVlZHlDaGls ZD1jPT0iaXNvdmVyIj8xOjB9fWlmKGUmJmM9PSJpc292ZXIiKXtlLmlzb3Zlcj0w O2UuaXNvdXQ9MTtlLl9vdXQuY2FsbChlLGIpfXRoaXNbY109MTt0aGlzW2M9PSJp c291dCI/Imlzb3ZlciI6Imlzb3V0Il09MDt0aGlzW2M9PSJpc292ZXIiPyJfb3Zl ciI6Il9vdXQiXS5jYWxsKHRoaXMsYik7aWYoZSYmYz09Imlzb3V0Iil7ZS5pc291 dD0wO2UuaXNvdmVyPTE7ZS5fb3Zlci5jYWxsKGUsYil9fX19KX19fSkoalF1ZXJ5 KTsKOy8qCiAqIGpRdWVyeSBVSSBSZXNpemFibGUgMS44LjIKICoKICogQ29weXJp Z2h0IChjKSAyMDEwIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fi b3V0KQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKE1JVC1MSUNFTlNF LnR4dCkKICogYW5kIEdQTCAoR1BMLUxJQ0VOU0UudHh0KSBsaWNlbnNlcy4KICoK ICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9SZXNpemFibGVzCiAqCiAqIERl cGVuZHM6CiAqCWpxdWVyeS51aS5jb3JlLmpzCiAqCWpxdWVyeS51aS5tb3VzZS5q cwogKglqcXVlcnkudWkud2lkZ2V0LmpzCiAqLwooZnVuY3Rpb24oZCl7ZC53aWRn ZXQoInVpLnJlc2l6YWJsZSIsZC51aS5tb3VzZSx7d2lkZ2V0RXZlbnRQcmVmaXg6 InJlc2l6ZSIsb3B0aW9uczp7YWxzb1Jlc2l6ZTpmYWxzZSxhbmltYXRlOmZhbHNl LGFuaW1hdGVEdXJhdGlvbjoic2xvdyIsYW5pbWF0ZUVhc2luZzoic3dpbmciLGFz cGVjdFJhdGlvOmZhbHNlLGF1dG9IaWRlOmZhbHNlLGNvbnRhaW5tZW50OmZhbHNl LGdob3N0OmZhbHNlLGdyaWQ6ZmFsc2UsaGFuZGxlczoiZSxzLHNlIixoZWxwZXI6 ZmFsc2UsbWF4SGVpZ2h0Om51bGwsbWF4V2lkdGg6bnVsbCxtaW5IZWlnaHQ6MTAs bWluV2lkdGg6MTAsekluZGV4OjFFM30sX2NyZWF0ZTpmdW5jdGlvbigpe3ZhciBi PXRoaXMsYT10aGlzLm9wdGlvbnM7dGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1y ZXNpemFibGUiKTtkLmV4dGVuZCh0aGlzLHtfYXNwZWN0UmF0aW86ISFhLmFzcGVj dFJhdGlvLGFzcGVjdFJhdGlvOmEuYXNwZWN0UmF0aW8sb3JpZ2luYWxFbGVtZW50 OnRoaXMuZWxlbWVudCwKX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHM6W10s X2hlbHBlcjphLmhlbHBlcnx8YS5naG9zdHx8YS5hbmltYXRlP2EuaGVscGVyfHwi dWktcmVzaXphYmxlLWhlbHBlciI6bnVsbH0pO2lmKHRoaXMuZWxlbWVudFswXS5u b2RlTmFtZS5tYXRjaCgvY2FudmFzfHRleHRhcmVhfGlucHV0fHNlbGVjdHxidXR0 b258aW1nL2kpKXsvcmVsYXRpdmUvLnRlc3QodGhpcy5lbGVtZW50LmNzcygicG9z aXRpb24iKSkmJmQuYnJvd3Nlci5vcGVyYSYmdGhpcy5lbGVtZW50LmNzcyh7cG9z aXRpb246InJlbGF0aXZlIix0b3A6ImF1dG8iLGxlZnQ6ImF1dG8ifSk7dGhpcy5l bGVtZW50LndyYXAoZCgnPGRpdiBjbGFzcz0idWktd3JhcHBlciIgc3R5bGU9Im92 ZXJmbG93OiBoaWRkZW47Ij48L2Rpdj4nKS5jc3Moe3Bvc2l0aW9uOnRoaXMuZWxl bWVudC5jc3MoInBvc2l0aW9uIiksd2lkdGg6dGhpcy5lbGVtZW50Lm91dGVyV2lk dGgoKSxoZWlnaHQ6dGhpcy5lbGVtZW50Lm91dGVySGVpZ2h0KCksCnRvcDp0aGlz LmVsZW1lbnQuY3NzKCJ0b3AiKSxsZWZ0OnRoaXMuZWxlbWVudC5jc3MoImxlZnQi KX0pKTt0aGlzLmVsZW1lbnQ9dGhpcy5lbGVtZW50LnBhcmVudCgpLmRhdGEoInJl c2l6YWJsZSIsdGhpcy5lbGVtZW50LmRhdGEoInJlc2l6YWJsZSIpKTt0aGlzLmVs ZW1lbnRJc1dyYXBwZXI9dHJ1ZTt0aGlzLmVsZW1lbnQuY3NzKHttYXJnaW5MZWZ0 OnRoaXMub3JpZ2luYWxFbGVtZW50LmNzcygibWFyZ2luTGVmdCIpLG1hcmdpblRv cDp0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoIm1hcmdpblRvcCIpLG1hcmdpblJp Z2h0OnRoaXMub3JpZ2luYWxFbGVtZW50LmNzcygibWFyZ2luUmlnaHQiKSxtYXJn aW5Cb3R0b206dGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJtYXJnaW5Cb3R0b20i KX0pO3RoaXMub3JpZ2luYWxFbGVtZW50LmNzcyh7bWFyZ2luTGVmdDowLG1hcmdp blRvcDowLG1hcmdpblJpZ2h0OjAsbWFyZ2luQm90dG9tOjB9KTt0aGlzLm9yaWdp bmFsUmVzaXplU3R5bGU9CnRoaXMub3JpZ2luYWxFbGVtZW50LmNzcygicmVzaXpl Iik7dGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJyZXNpemUiLCJub25lIik7dGhp cy5fcHJvcG9ydGlvbmFsbHlSZXNpemVFbGVtZW50cy5wdXNoKHRoaXMub3JpZ2lu YWxFbGVtZW50LmNzcyh7cG9zaXRpb246InN0YXRpYyIsem9vbToxLGRpc3BsYXk6 ImJsb2NrIn0pKTt0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3Moe21hcmdpbjp0aGlz Lm9yaWdpbmFsRWxlbWVudC5jc3MoIm1hcmdpbiIpfSk7dGhpcy5fcHJvcG9ydGlv bmFsbHlSZXNpemUoKX10aGlzLmhhbmRsZXM9YS5oYW5kbGVzfHwoIWQoIi51aS1y ZXNpemFibGUtaGFuZGxlIix0aGlzLmVsZW1lbnQpLmxlbmd0aD8iZSxzLHNlIjp7 bjoiLnVpLXJlc2l6YWJsZS1uIixlOiIudWktcmVzaXphYmxlLWUiLHM6Ii51aS1y ZXNpemFibGUtcyIsdzoiLnVpLXJlc2l6YWJsZS13IixzZToiLnVpLXJlc2l6YWJs ZS1zZSIsc3c6Ii51aS1yZXNpemFibGUtc3ciLG5lOiIudWktcmVzaXphYmxlLW5l IiwKbnc6Ii51aS1yZXNpemFibGUtbncifSk7aWYodGhpcy5oYW5kbGVzLmNvbnN0 cnVjdG9yPT1TdHJpbmcpe2lmKHRoaXMuaGFuZGxlcz09ImFsbCIpdGhpcy5oYW5k bGVzPSJuLGUscyx3LHNlLHN3LG5lLG53Ijt2YXIgYz10aGlzLmhhbmRsZXMuc3Bs aXQoIiwiKTt0aGlzLmhhbmRsZXM9e307Zm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtl Kyspe3ZhciBnPWQudHJpbShjW2VdKSxmPWQoJzxkaXYgY2xhc3M9InVpLXJlc2l6 YWJsZS1oYW5kbGUgJysoInVpLXJlc2l6YWJsZS0iK2cpKyciPjwvZGl2PicpOy9z d3xzZXxuZXxudy8udGVzdChnKSYmZi5jc3Moe3pJbmRleDorK2EuekluZGV4fSk7 InNlIj09ZyYmZi5hZGRDbGFzcygidWktaWNvbiB1aS1pY29uLWdyaXBzbWFsbC1k aWFnb25hbC1zZSIpO3RoaXMuaGFuZGxlc1tnXT0iLnVpLXJlc2l6YWJsZS0iK2c7 dGhpcy5lbGVtZW50LmFwcGVuZChmKX19dGhpcy5fcmVuZGVyQXhpcz1mdW5jdGlv bihoKXtoPWh8fHRoaXMuZWxlbWVudDtmb3IodmFyIGkgaW4gdGhpcy5oYW5kbGVz KXtpZih0aGlzLmhhbmRsZXNbaV0uY29uc3RydWN0b3I9PQpTdHJpbmcpdGhpcy5o YW5kbGVzW2ldPWQodGhpcy5oYW5kbGVzW2ldLHRoaXMuZWxlbWVudCkuc2hvdygp O2lmKHRoaXMuZWxlbWVudElzV3JhcHBlciYmdGhpcy5vcmlnaW5hbEVsZW1lbnRb MF0ubm9kZU5hbWUubWF0Y2goL3RleHRhcmVhfGlucHV0fHNlbGVjdHxidXR0b24v aSkpe3ZhciBqPWQodGhpcy5oYW5kbGVzW2ldLHRoaXMuZWxlbWVudCksbD0wO2w9 L3N3fG5lfG53fHNlfG58cy8udGVzdChpKT9qLm91dGVySGVpZ2h0KCk6ai5vdXRl cldpZHRoKCk7aj1bInBhZGRpbmciLC9uZXxud3xuLy50ZXN0KGkpPyJUb3AiOi9z ZXxzd3xzLy50ZXN0KGkpPyJCb3R0b20iOi9eZSQvLnRlc3QoaSk/IlJpZ2h0Ijoi TGVmdCJdLmpvaW4oIiIpO2guY3NzKGosbCk7dGhpcy5fcHJvcG9ydGlvbmFsbHlS ZXNpemUoKX1kKHRoaXMuaGFuZGxlc1tpXSl9fTt0aGlzLl9yZW5kZXJBeGlzKHRo aXMuZWxlbWVudCk7dGhpcy5faGFuZGxlcz1kKCIudWktcmVzaXphYmxlLWhhbmRs ZSIsdGhpcy5lbGVtZW50KS5kaXNhYmxlU2VsZWN0aW9uKCk7CnRoaXMuX2hhbmRs ZXMubW91c2VvdmVyKGZ1bmN0aW9uKCl7aWYoIWIucmVzaXppbmcpe2lmKHRoaXMu Y2xhc3NOYW1lKXZhciBoPXRoaXMuY2xhc3NOYW1lLm1hdGNoKC91aS1yZXNpemFi bGUtKHNlfHN3fG5lfG53fG58ZXxzfHcpL2kpO2IuYXhpcz1oJiZoWzFdP2hbMV06 InNlIn19KTtpZihhLmF1dG9IaWRlKXt0aGlzLl9oYW5kbGVzLmhpZGUoKTtkKHRo aXMuZWxlbWVudCkuYWRkQ2xhc3MoInVpLXJlc2l6YWJsZS1hdXRvaGlkZSIpLmhv dmVyKGZ1bmN0aW9uKCl7ZCh0aGlzKS5yZW1vdmVDbGFzcygidWktcmVzaXphYmxl LWF1dG9oaWRlIik7Yi5faGFuZGxlcy5zaG93KCl9LGZ1bmN0aW9uKCl7aWYoIWIu cmVzaXppbmcpe2QodGhpcykuYWRkQ2xhc3MoInVpLXJlc2l6YWJsZS1hdXRvaGlk ZSIpO2IuX2hhbmRsZXMuaGlkZSgpfX0pfXRoaXMuX21vdXNlSW5pdCgpfSxkZXN0 cm95OmZ1bmN0aW9uKCl7dGhpcy5fbW91c2VEZXN0cm95KCk7dmFyIGI9ZnVuY3Rp b24oYyl7ZChjKS5yZW1vdmVDbGFzcygidWktcmVzaXphYmxlIHVpLXJlc2l6YWJs ZS1kaXNhYmxlZCB1aS1yZXNpemFibGUtcmVzaXppbmciKS5yZW1vdmVEYXRhKCJy ZXNpemFibGUiKS51bmJpbmQoIi5yZXNpemFibGUiKS5maW5kKCIudWktcmVzaXph YmxlLWhhbmRsZSIpLnJlbW92ZSgpfTsKaWYodGhpcy5lbGVtZW50SXNXcmFwcGVy KXtiKHRoaXMuZWxlbWVudCk7dmFyIGE9dGhpcy5lbGVtZW50O2EuYWZ0ZXIodGhp cy5vcmlnaW5hbEVsZW1lbnQuY3NzKHtwb3NpdGlvbjphLmNzcygicG9zaXRpb24i KSx3aWR0aDphLm91dGVyV2lkdGgoKSxoZWlnaHQ6YS5vdXRlckhlaWdodCgpLHRv cDphLmNzcygidG9wIiksbGVmdDphLmNzcygibGVmdCIpfSkpLnJlbW92ZSgpfXRo aXMub3JpZ2luYWxFbGVtZW50LmNzcygicmVzaXplIix0aGlzLm9yaWdpbmFsUmVz aXplU3R5bGUpO2IodGhpcy5vcmlnaW5hbEVsZW1lbnQpO3JldHVybiB0aGlzfSxf bW91c2VDYXB0dXJlOmZ1bmN0aW9uKGIpe3ZhciBhPWZhbHNlO2Zvcih2YXIgYyBp biB0aGlzLmhhbmRsZXMpaWYoZCh0aGlzLmhhbmRsZXNbY10pWzBdPT1iLnRhcmdl dClhPXRydWU7cmV0dXJuIXRoaXMub3B0aW9ucy5kaXNhYmxlZCYmYX0sX21vdXNl U3RhcnQ6ZnVuY3Rpb24oYil7dmFyIGE9dGhpcy5vcHRpb25zLGM9dGhpcy5lbGVt ZW50LnBvc2l0aW9uKCksCmU9dGhpcy5lbGVtZW50O3RoaXMucmVzaXppbmc9dHJ1 ZTt0aGlzLmRvY3VtZW50U2Nyb2xsPXt0b3A6ZChkb2N1bWVudCkuc2Nyb2xsVG9w KCksbGVmdDpkKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCl9O2lmKGUuaXMoIi51aS1k cmFnZ2FibGUiKXx8L2Fic29sdXRlLy50ZXN0KGUuY3NzKCJwb3NpdGlvbiIpKSll LmNzcyh7cG9zaXRpb246ImFic29sdXRlIix0b3A6Yy50b3AsbGVmdDpjLmxlZnR9 KTtkLmJyb3dzZXIub3BlcmEmJi9yZWxhdGl2ZS8udGVzdChlLmNzcygicG9zaXRp b24iKSkmJmUuY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUiLHRvcDoiYXV0byIsbGVm dDoiYXV0byJ9KTt0aGlzLl9yZW5kZXJQcm94eSgpO2M9bSh0aGlzLmhlbHBlci5j c3MoImxlZnQiKSk7dmFyIGc9bSh0aGlzLmhlbHBlci5jc3MoInRvcCIpKTtpZihh LmNvbnRhaW5tZW50KXtjKz1kKGEuY29udGFpbm1lbnQpLnNjcm9sbExlZnQoKXx8 MDtnKz1kKGEuY29udGFpbm1lbnQpLnNjcm9sbFRvcCgpfHwwfXRoaXMub2Zmc2V0 PQp0aGlzLmhlbHBlci5vZmZzZXQoKTt0aGlzLnBvc2l0aW9uPXtsZWZ0OmMsdG9w Omd9O3RoaXMuc2l6ZT10aGlzLl9oZWxwZXI/e3dpZHRoOmUub3V0ZXJXaWR0aCgp LGhlaWdodDplLm91dGVySGVpZ2h0KCl9Ont3aWR0aDplLndpZHRoKCksaGVpZ2h0 OmUuaGVpZ2h0KCl9O3RoaXMub3JpZ2luYWxTaXplPXRoaXMuX2hlbHBlcj97d2lk dGg6ZS5vdXRlcldpZHRoKCksaGVpZ2h0OmUub3V0ZXJIZWlnaHQoKX06e3dpZHRo OmUud2lkdGgoKSxoZWlnaHQ6ZS5oZWlnaHQoKX07dGhpcy5vcmlnaW5hbFBvc2l0 aW9uPXtsZWZ0OmMsdG9wOmd9O3RoaXMuc2l6ZURpZmY9e3dpZHRoOmUub3V0ZXJX aWR0aCgpLWUud2lkdGgoKSxoZWlnaHQ6ZS5vdXRlckhlaWdodCgpLWUuaGVpZ2h0 KCl9O3RoaXMub3JpZ2luYWxNb3VzZVBvc2l0aW9uPXtsZWZ0OmIucGFnZVgsdG9w OmIucGFnZVl9O3RoaXMuYXNwZWN0UmF0aW89dHlwZW9mIGEuYXNwZWN0UmF0aW89 PSJudW1iZXIiP2EuYXNwZWN0UmF0aW86CnRoaXMub3JpZ2luYWxTaXplLndpZHRo L3RoaXMub3JpZ2luYWxTaXplLmhlaWdodHx8MTthPWQoIi51aS1yZXNpemFibGUt Iit0aGlzLmF4aXMpLmNzcygiY3Vyc29yIik7ZCgiYm9keSIpLmNzcygiY3Vyc29y IixhPT0iYXV0byI/dGhpcy5heGlzKyItcmVzaXplIjphKTtlLmFkZENsYXNzKCJ1 aS1yZXNpemFibGUtcmVzaXppbmciKTt0aGlzLl9wcm9wYWdhdGUoInN0YXJ0Iixi KTtyZXR1cm4gdHJ1ZX0sX21vdXNlRHJhZzpmdW5jdGlvbihiKXt2YXIgYT10aGlz LmhlbHBlcixjPXRoaXMub3JpZ2luYWxNb3VzZVBvc2l0aW9uLGU9dGhpcy5fY2hh bmdlW3RoaXMuYXhpc107aWYoIWUpcmV0dXJuIGZhbHNlO2M9ZS5hcHBseSh0aGlz LFtiLGIucGFnZVgtYy5sZWZ0fHwwLGIucGFnZVktYy50b3B8fDBdKTtpZih0aGlz Ll9hc3BlY3RSYXRpb3x8Yi5zaGlmdEtleSljPXRoaXMuX3VwZGF0ZVJhdGlvKGMs Yik7Yz10aGlzLl9yZXNwZWN0U2l6ZShjLGIpO3RoaXMuX3Byb3BhZ2F0ZSgicmVz aXplIiwKYik7YS5jc3Moe3RvcDp0aGlzLnBvc2l0aW9uLnRvcCsicHgiLGxlZnQ6 dGhpcy5wb3NpdGlvbi5sZWZ0KyJweCIsd2lkdGg6dGhpcy5zaXplLndpZHRoKyJw eCIsaGVpZ2h0OnRoaXMuc2l6ZS5oZWlnaHQrInB4In0pOyF0aGlzLl9oZWxwZXIm JnRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHMubGVuZ3RoJiZ0aGlz Ll9wcm9wb3J0aW9uYWxseVJlc2l6ZSgpO3RoaXMuX3VwZGF0ZUNhY2hlKGMpO3Ro aXMuX3RyaWdnZXIoInJlc2l6ZSIsYix0aGlzLnVpKCkpO3JldHVybiBmYWxzZX0s X21vdXNlU3RvcDpmdW5jdGlvbihiKXt0aGlzLnJlc2l6aW5nPWZhbHNlO3ZhciBh PXRoaXMub3B0aW9ucyxjPXRoaXM7aWYodGhpcy5faGVscGVyKXt2YXIgZT10aGlz Ll9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLGc9ZS5sZW5ndGgmJi90ZXh0 YXJlYS9pLnRlc3QoZVswXS5ub2RlTmFtZSk7ZT1nJiZkLnVpLmhhc1Njcm9sbChl WzBdLCJsZWZ0Iik/MDpjLnNpemVEaWZmLmhlaWdodDsKZz17d2lkdGg6Yy5zaXpl LndpZHRoLShnPzA6Yy5zaXplRGlmZi53aWR0aCksaGVpZ2h0OmMuc2l6ZS5oZWln aHQtZX07ZT1wYXJzZUludChjLmVsZW1lbnQuY3NzKCJsZWZ0IiksMTApKyhjLnBv c2l0aW9uLmxlZnQtYy5vcmlnaW5hbFBvc2l0aW9uLmxlZnQpfHxudWxsO3ZhciBm PXBhcnNlSW50KGMuZWxlbWVudC5jc3MoInRvcCIpLDEwKSsoYy5wb3NpdGlvbi50 b3AtYy5vcmlnaW5hbFBvc2l0aW9uLnRvcCl8fG51bGw7YS5hbmltYXRlfHx0aGlz LmVsZW1lbnQuY3NzKGQuZXh0ZW5kKGcse3RvcDpmLGxlZnQ6ZX0pKTtjLmhlbHBl ci5oZWlnaHQoYy5zaXplLmhlaWdodCk7Yy5oZWxwZXIud2lkdGgoYy5zaXplLndp ZHRoKTt0aGlzLl9oZWxwZXImJiFhLmFuaW1hdGUmJnRoaXMuX3Byb3BvcnRpb25h bGx5UmVzaXplKCl9ZCgiYm9keSIpLmNzcygiY3Vyc29yIiwiYXV0byIpO3RoaXMu ZWxlbWVudC5yZW1vdmVDbGFzcygidWktcmVzaXphYmxlLXJlc2l6aW5nIik7dGhp cy5fcHJvcGFnYXRlKCJzdG9wIiwKYik7dGhpcy5faGVscGVyJiZ0aGlzLmhlbHBl ci5yZW1vdmUoKTtyZXR1cm4gZmFsc2V9LF91cGRhdGVDYWNoZTpmdW5jdGlvbihi KXt0aGlzLm9mZnNldD10aGlzLmhlbHBlci5vZmZzZXQoKTtpZihrKGIubGVmdCkp dGhpcy5wb3NpdGlvbi5sZWZ0PWIubGVmdDtpZihrKGIudG9wKSl0aGlzLnBvc2l0 aW9uLnRvcD1iLnRvcDtpZihrKGIuaGVpZ2h0KSl0aGlzLnNpemUuaGVpZ2h0PWIu aGVpZ2h0O2lmKGsoYi53aWR0aCkpdGhpcy5zaXplLndpZHRoPWIud2lkdGh9LF91 cGRhdGVSYXRpbzpmdW5jdGlvbihiKXt2YXIgYT10aGlzLnBvc2l0aW9uLGM9dGhp cy5zaXplLGU9dGhpcy5heGlzO2lmKGIuaGVpZ2h0KWIud2lkdGg9Yy5oZWlnaHQq dGhpcy5hc3BlY3RSYXRpbztlbHNlIGlmKGIud2lkdGgpYi5oZWlnaHQ9Yy53aWR0 aC90aGlzLmFzcGVjdFJhdGlvO2lmKGU9PSJzdyIpe2IubGVmdD1hLmxlZnQrKGMu d2lkdGgtYi53aWR0aCk7Yi50b3A9bnVsbH1pZihlPT0ibnciKXtiLnRvcD0KYS50 b3ArKGMuaGVpZ2h0LWIuaGVpZ2h0KTtiLmxlZnQ9YS5sZWZ0KyhjLndpZHRoLWIu d2lkdGgpfXJldHVybiBifSxfcmVzcGVjdFNpemU6ZnVuY3Rpb24oYil7dmFyIGE9 dGhpcy5vcHRpb25zLGM9dGhpcy5heGlzLGU9ayhiLndpZHRoKSYmYS5tYXhXaWR0 aCYmYS5tYXhXaWR0aDxiLndpZHRoLGc9ayhiLmhlaWdodCkmJmEubWF4SGVpZ2h0 JiZhLm1heEhlaWdodDxiLmhlaWdodCxmPWsoYi53aWR0aCkmJmEubWluV2lkdGgm JmEubWluV2lkdGg+Yi53aWR0aCxoPWsoYi5oZWlnaHQpJiZhLm1pbkhlaWdodCYm YS5taW5IZWlnaHQ+Yi5oZWlnaHQ7aWYoZiliLndpZHRoPWEubWluV2lkdGg7aWYo aCliLmhlaWdodD1hLm1pbkhlaWdodDtpZihlKWIud2lkdGg9YS5tYXhXaWR0aDtp ZihnKWIuaGVpZ2h0PWEubWF4SGVpZ2h0O3ZhciBpPXRoaXMub3JpZ2luYWxQb3Np dGlvbi5sZWZ0K3RoaXMub3JpZ2luYWxTaXplLndpZHRoLGo9dGhpcy5wb3NpdGlv bi50b3ArdGhpcy5zaXplLmhlaWdodCwKbD0vc3d8bnd8dy8udGVzdChjKTtjPS9u d3xuZXxuLy50ZXN0KGMpO2lmKGYmJmwpYi5sZWZ0PWktYS5taW5XaWR0aDtpZihl JiZsKWIubGVmdD1pLWEubWF4V2lkdGg7aWYoaCYmYyliLnRvcD1qLWEubWluSGVp Z2h0O2lmKGcmJmMpYi50b3A9ai1hLm1heEhlaWdodDtpZigoYT0hYi53aWR0aCYm IWIuaGVpZ2h0KSYmIWIubGVmdCYmYi50b3ApYi50b3A9bnVsbDtlbHNlIGlmKGEm JiFiLnRvcCYmYi5sZWZ0KWIubGVmdD1udWxsO3JldHVybiBifSxfcHJvcG9ydGlv bmFsbHlSZXNpemU6ZnVuY3Rpb24oKXtpZih0aGlzLl9wcm9wb3J0aW9uYWxseVJl c2l6ZUVsZW1lbnRzLmxlbmd0aClmb3IodmFyIGI9dGhpcy5oZWxwZXJ8fHRoaXMu ZWxlbWVudCxhPTA7YTx0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRz Lmxlbmd0aDthKyspe3ZhciBjPXRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxl bWVudHNbYV07aWYoIXRoaXMuYm9yZGVyRGlmKXt2YXIgZT1bYy5jc3MoImJvcmRl clRvcFdpZHRoIiksCmMuY3NzKCJib3JkZXJSaWdodFdpZHRoIiksYy5jc3MoImJv cmRlckJvdHRvbVdpZHRoIiksYy5jc3MoImJvcmRlckxlZnRXaWR0aCIpXSxnPVtj LmNzcygicGFkZGluZ1RvcCIpLGMuY3NzKCJwYWRkaW5nUmlnaHQiKSxjLmNzcygi cGFkZGluZ0JvdHRvbSIpLGMuY3NzKCJwYWRkaW5nTGVmdCIpXTt0aGlzLmJvcmRl ckRpZj1kLm1hcChlLGZ1bmN0aW9uKGYsaCl7Zj1wYXJzZUludChmLDEwKXx8MDto PXBhcnNlSW50KGdbaF0sMTApfHwwO3JldHVybiBmK2h9KX1kLmJyb3dzZXIubXNp ZSYmKGQoYikuaXMoIjpoaWRkZW4iKXx8ZChiKS5wYXJlbnRzKCI6aGlkZGVuIiku bGVuZ3RoKXx8Yy5jc3Moe2hlaWdodDpiLmhlaWdodCgpLXRoaXMuYm9yZGVyRGlm WzBdLXRoaXMuYm9yZGVyRGlmWzJdfHwwLHdpZHRoOmIud2lkdGgoKS10aGlzLmJv cmRlckRpZlsxXS10aGlzLmJvcmRlckRpZlszXXx8MH0pfX0sX3JlbmRlclByb3h5 OmZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5vcHRpb25zO3RoaXMuZWxlbWVudE9mZnNl dD0KdGhpcy5lbGVtZW50Lm9mZnNldCgpO2lmKHRoaXMuX2hlbHBlcil7dGhpcy5o ZWxwZXI9dGhpcy5oZWxwZXJ8fGQoJzxkaXYgc3R5bGU9Im92ZXJmbG93OmhpZGRl bjsiPjwvZGl2PicpO3ZhciBhPWQuYnJvd3Nlci5tc2llJiZkLmJyb3dzZXIudmVy c2lvbjw3LGM9YT8xOjA7YT1hPzI6LTE7dGhpcy5oZWxwZXIuYWRkQ2xhc3ModGhp cy5faGVscGVyKS5jc3Moe3dpZHRoOnRoaXMuZWxlbWVudC5vdXRlcldpZHRoKCkr YSxoZWlnaHQ6dGhpcy5lbGVtZW50Lm91dGVySGVpZ2h0KCkrYSxwb3NpdGlvbjoi YWJzb2x1dGUiLGxlZnQ6dGhpcy5lbGVtZW50T2Zmc2V0LmxlZnQtYysicHgiLHRv cDp0aGlzLmVsZW1lbnRPZmZzZXQudG9wLWMrInB4Iix6SW5kZXg6KytiLnpJbmRl eH0pO3RoaXMuaGVscGVyLmFwcGVuZFRvKCJib2R5IikuZGlzYWJsZVNlbGVjdGlv bigpfWVsc2UgdGhpcy5oZWxwZXI9dGhpcy5lbGVtZW50fSxfY2hhbmdlOntlOmZ1 bmN0aW9uKGIsYSl7cmV0dXJue3dpZHRoOnRoaXMub3JpZ2luYWxTaXplLndpZHRo KwphfX0sdzpmdW5jdGlvbihiLGEpe3JldHVybntsZWZ0OnRoaXMub3JpZ2luYWxQ b3NpdGlvbi5sZWZ0K2Esd2lkdGg6dGhpcy5vcmlnaW5hbFNpemUud2lkdGgtYX19 LG46ZnVuY3Rpb24oYixhLGMpe3JldHVybnt0b3A6dGhpcy5vcmlnaW5hbFBvc2l0 aW9uLnRvcCtjLGhlaWdodDp0aGlzLm9yaWdpbmFsU2l6ZS5oZWlnaHQtY319LHM6 ZnVuY3Rpb24oYixhLGMpe3JldHVybntoZWlnaHQ6dGhpcy5vcmlnaW5hbFNpemUu aGVpZ2h0K2N9fSxzZTpmdW5jdGlvbihiLGEsYyl7cmV0dXJuIGQuZXh0ZW5kKHRo aXMuX2NoYW5nZS5zLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9jaGFuZ2Uu ZS5hcHBseSh0aGlzLFtiLGEsY10pKX0sc3c6ZnVuY3Rpb24oYixhLGMpe3JldHVy biBkLmV4dGVuZCh0aGlzLl9jaGFuZ2Uucy5hcHBseSh0aGlzLGFyZ3VtZW50cyks dGhpcy5fY2hhbmdlLncuYXBwbHkodGhpcyxbYixhLGNdKSl9LG5lOmZ1bmN0aW9u KGIsYSxjKXtyZXR1cm4gZC5leHRlbmQodGhpcy5fY2hhbmdlLm4uYXBwbHkodGhp cywKYXJndW1lbnRzKSx0aGlzLl9jaGFuZ2UuZS5hcHBseSh0aGlzLFtiLGEsY10p KX0sbnc6ZnVuY3Rpb24oYixhLGMpe3JldHVybiBkLmV4dGVuZCh0aGlzLl9jaGFu Z2Uubi5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fY2hhbmdlLncuYXBwbHko dGhpcyxbYixhLGNdKSl9fSxfcHJvcGFnYXRlOmZ1bmN0aW9uKGIsYSl7ZC51aS5w bHVnaW4uY2FsbCh0aGlzLGIsW2EsdGhpcy51aSgpXSk7YiE9InJlc2l6ZSImJnRo aXMuX3RyaWdnZXIoYixhLHRoaXMudWkoKSl9LHBsdWdpbnM6e30sdWk6ZnVuY3Rp b24oKXtyZXR1cm57b3JpZ2luYWxFbGVtZW50OnRoaXMub3JpZ2luYWxFbGVtZW50 LGVsZW1lbnQ6dGhpcy5lbGVtZW50LGhlbHBlcjp0aGlzLmhlbHBlcixwb3NpdGlv bjp0aGlzLnBvc2l0aW9uLHNpemU6dGhpcy5zaXplLG9yaWdpbmFsU2l6ZTp0aGlz Lm9yaWdpbmFsU2l6ZSxvcmlnaW5hbFBvc2l0aW9uOnRoaXMub3JpZ2luYWxQb3Np dGlvbn19fSk7ZC5leHRlbmQoZC51aS5yZXNpemFibGUsCnt2ZXJzaW9uOiIxLjgu MiJ9KTtkLnVpLnBsdWdpbi5hZGQoInJlc2l6YWJsZSIsImFsc29SZXNpemUiLHtz dGFydDpmdW5jdGlvbigpe3ZhciBiPWQodGhpcykuZGF0YSgicmVzaXphYmxlIiku b3B0aW9ucyxhPWZ1bmN0aW9uKGMpe2QoYykuZWFjaChmdW5jdGlvbigpe2QodGhp cykuZGF0YSgicmVzaXphYmxlLWFsc29yZXNpemUiLHt3aWR0aDpwYXJzZUludChk KHRoaXMpLndpZHRoKCksMTApLGhlaWdodDpwYXJzZUludChkKHRoaXMpLmhlaWdo dCgpLDEwKSxsZWZ0OnBhcnNlSW50KGQodGhpcykuY3NzKCJsZWZ0IiksMTApLHRv cDpwYXJzZUludChkKHRoaXMpLmNzcygidG9wIiksMTApfSl9KX07aWYodHlwZW9m IGIuYWxzb1Jlc2l6ZT09Im9iamVjdCImJiFiLmFsc29SZXNpemUucGFyZW50Tm9k ZSlpZihiLmFsc29SZXNpemUubGVuZ3RoKXtiLmFsc29SZXNpemU9Yi5hbHNvUmVz aXplWzBdO2EoYi5hbHNvUmVzaXplKX1lbHNlIGQuZWFjaChiLmFsc29SZXNpemUs ZnVuY3Rpb24oYyl7YShjKX0pOwplbHNlIGEoYi5hbHNvUmVzaXplKX0scmVzaXpl OmZ1bmN0aW9uKCl7dmFyIGI9ZCh0aGlzKS5kYXRhKCJyZXNpemFibGUiKSxhPWIu b3B0aW9ucyxjPWIub3JpZ2luYWxTaXplLGU9Yi5vcmlnaW5hbFBvc2l0aW9uLGc9 e2hlaWdodDpiLnNpemUuaGVpZ2h0LWMuaGVpZ2h0fHwwLHdpZHRoOmIuc2l6ZS53 aWR0aC1jLndpZHRofHwwLHRvcDpiLnBvc2l0aW9uLnRvcC1lLnRvcHx8MCxsZWZ0 OmIucG9zaXRpb24ubGVmdC1lLmxlZnR8fDB9LGY9ZnVuY3Rpb24oaCxpKXtkKGgp LmVhY2goZnVuY3Rpb24oKXt2YXIgaj1kKHRoaXMpLGw9ZCh0aGlzKS5kYXRhKCJy ZXNpemFibGUtYWxzb3Jlc2l6ZSIpLHA9e307ZC5lYWNoKChpJiZpLmxlbmd0aD9p Olsid2lkdGgiLCJoZWlnaHQiLCJ0b3AiLCJsZWZ0Il0pfHxbIndpZHRoIiwiaGVp Z2h0IiwidG9wIiwibGVmdCJdLGZ1bmN0aW9uKG4sbyl7aWYoKG49KGxbb118fDAp KyhnW29dfHwwKSkmJm4+PTApcFtvXT1ufHxudWxsfSk7aWYoL3JlbGF0aXZlLy50 ZXN0KGouY3NzKCJwb3NpdGlvbiIpKSYmCmQuYnJvd3Nlci5vcGVyYSl7Yi5fcmV2 ZXJ0VG9SZWxhdGl2ZVBvc2l0aW9uPXRydWU7ai5jc3Moe3Bvc2l0aW9uOiJhYnNv bHV0ZSIsdG9wOiJhdXRvIixsZWZ0OiJhdXRvIn0pfWouY3NzKHApfSl9O3R5cGVv ZiBhLmFsc29SZXNpemU9PSJvYmplY3QiJiYhYS5hbHNvUmVzaXplLm5vZGVUeXBl P2QuZWFjaChhLmFsc29SZXNpemUsZnVuY3Rpb24oaCxpKXtmKGgsaSl9KTpmKGEu YWxzb1Jlc2l6ZSl9LHN0b3A6ZnVuY3Rpb24oKXt2YXIgYj1kKHRoaXMpLmRhdGEo InJlc2l6YWJsZSIpO2lmKGIuX3JldmVydFRvUmVsYXRpdmVQb3NpdGlvbiYmZC5i cm93c2VyLm9wZXJhKXtiLl9yZXZlcnRUb1JlbGF0aXZlUG9zaXRpb249ZmFsc2U7 ZWwuY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUifSl9ZCh0aGlzKS5yZW1vdmVEYXRh KCJyZXNpemFibGUtYWxzb3Jlc2l6ZS1zdGFydCIpfX0pO2QudWkucGx1Z2luLmFk ZCgicmVzaXphYmxlIiwiYW5pbWF0ZSIse3N0b3A6ZnVuY3Rpb24oYil7dmFyIGE9 CmQodGhpcykuZGF0YSgicmVzaXphYmxlIiksYz1hLm9wdGlvbnMsZT1hLl9wcm9w b3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLGc9ZS5sZW5ndGgmJi90ZXh0YXJlYS9p LnRlc3QoZVswXS5ub2RlTmFtZSksZj1nJiZkLnVpLmhhc1Njcm9sbChlWzBdLCJs ZWZ0Iik/MDphLnNpemVEaWZmLmhlaWdodDtnPXt3aWR0aDphLnNpemUud2lkdGgt KGc/MDphLnNpemVEaWZmLndpZHRoKSxoZWlnaHQ6YS5zaXplLmhlaWdodC1mfTtm PXBhcnNlSW50KGEuZWxlbWVudC5jc3MoImxlZnQiKSwxMCkrKGEucG9zaXRpb24u bGVmdC1hLm9yaWdpbmFsUG9zaXRpb24ubGVmdCl8fG51bGw7dmFyIGg9cGFyc2VJ bnQoYS5lbGVtZW50LmNzcygidG9wIiksMTApKyhhLnBvc2l0aW9uLnRvcC1hLm9y aWdpbmFsUG9zaXRpb24udG9wKXx8bnVsbDthLmVsZW1lbnQuYW5pbWF0ZShkLmV4 dGVuZChnLGgmJmY/e3RvcDpoLGxlZnQ6Zn06e30pLHtkdXJhdGlvbjpjLmFuaW1h dGVEdXJhdGlvbixlYXNpbmc6Yy5hbmltYXRlRWFzaW5nLApzdGVwOmZ1bmN0aW9u KCl7dmFyIGk9e3dpZHRoOnBhcnNlSW50KGEuZWxlbWVudC5jc3MoIndpZHRoIiks MTApLGhlaWdodDpwYXJzZUludChhLmVsZW1lbnQuY3NzKCJoZWlnaHQiKSwxMCks dG9wOnBhcnNlSW50KGEuZWxlbWVudC5jc3MoInRvcCIpLDEwKSxsZWZ0OnBhcnNl SW50KGEuZWxlbWVudC5jc3MoImxlZnQiKSwxMCl9O2UmJmUubGVuZ3RoJiZkKGVb MF0pLmNzcyh7d2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHR9KTthLl91cGRh dGVDYWNoZShpKTthLl9wcm9wYWdhdGUoInJlc2l6ZSIsYil9fSl9fSk7ZC51aS5w bHVnaW4uYWRkKCJyZXNpemFibGUiLCJjb250YWlubWVudCIse3N0YXJ0OmZ1bmN0 aW9uKCl7dmFyIGI9ZCh0aGlzKS5kYXRhKCJyZXNpemFibGUiKSxhPWIuZWxlbWVu dCxjPWIub3B0aW9ucy5jb250YWlubWVudDtpZihhPWMgaW5zdGFuY2VvZiBkP2Mu Z2V0KDApOi9wYXJlbnQvLnRlc3QoYyk/YS5wYXJlbnQoKS5nZXQoMCk6Yyl7Yi5j b250YWluZXJFbGVtZW50PQpkKGEpO2lmKC9kb2N1bWVudC8udGVzdChjKXx8Yz09 ZG9jdW1lbnQpe2IuY29udGFpbmVyT2Zmc2V0PXtsZWZ0OjAsdG9wOjB9O2IuY29u dGFpbmVyUG9zaXRpb249e2xlZnQ6MCx0b3A6MH07Yi5wYXJlbnREYXRhPXtlbGVt ZW50OmQoZG9jdW1lbnQpLGxlZnQ6MCx0b3A6MCx3aWR0aDpkKGRvY3VtZW50KS53 aWR0aCgpLGhlaWdodDpkKGRvY3VtZW50KS5oZWlnaHQoKXx8ZG9jdW1lbnQuYm9k eS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodH19ZWxzZXt2YXIgZT1kKGEpLGc9W107 ZChbIlRvcCIsIlJpZ2h0IiwiTGVmdCIsIkJvdHRvbSJdKS5lYWNoKGZ1bmN0aW9u KGksail7Z1tpXT1tKGUuY3NzKCJwYWRkaW5nIitqKSl9KTtiLmNvbnRhaW5lck9m ZnNldD1lLm9mZnNldCgpO2IuY29udGFpbmVyUG9zaXRpb249ZS5wb3NpdGlvbigp O2IuY29udGFpbmVyU2l6ZT17aGVpZ2h0OmUuaW5uZXJIZWlnaHQoKS1nWzNdLHdp ZHRoOmUuaW5uZXJXaWR0aCgpLWdbMV19O2M9Yi5jb250YWluZXJPZmZzZXQ7CnZh ciBmPWIuY29udGFpbmVyU2l6ZS5oZWlnaHQsaD1iLmNvbnRhaW5lclNpemUud2lk dGg7aD1kLnVpLmhhc1Njcm9sbChhLCJsZWZ0Iik/YS5zY3JvbGxXaWR0aDpoO2Y9 ZC51aS5oYXNTY3JvbGwoYSk/YS5zY3JvbGxIZWlnaHQ6ZjtiLnBhcmVudERhdGE9 e2VsZW1lbnQ6YSxsZWZ0OmMubGVmdCx0b3A6Yy50b3Asd2lkdGg6aCxoZWlnaHQ6 Zn19fX0scmVzaXplOmZ1bmN0aW9uKGIpe3ZhciBhPWQodGhpcykuZGF0YSgicmVz aXphYmxlIiksYz1hLm9wdGlvbnMsZT1hLmNvbnRhaW5lck9mZnNldCxnPWEucG9z aXRpb247Yj1hLl9hc3BlY3RSYXRpb3x8Yi5zaGlmdEtleTt2YXIgZj17dG9wOjAs bGVmdDowfSxoPWEuY29udGFpbmVyRWxlbWVudDtpZihoWzBdIT1kb2N1bWVudCYm L3N0YXRpYy8udGVzdChoLmNzcygicG9zaXRpb24iKSkpZj1lO2lmKGcubGVmdDwo YS5faGVscGVyP2UubGVmdDowKSl7YS5zaXplLndpZHRoKz1hLl9oZWxwZXI/YS5w b3NpdGlvbi5sZWZ0LWUubGVmdDoKYS5wb3NpdGlvbi5sZWZ0LWYubGVmdDtpZihi KWEuc2l6ZS5oZWlnaHQ9YS5zaXplLndpZHRoL2MuYXNwZWN0UmF0aW87YS5wb3Np dGlvbi5sZWZ0PWMuaGVscGVyP2UubGVmdDowfWlmKGcudG9wPChhLl9oZWxwZXI/ ZS50b3A6MCkpe2Euc2l6ZS5oZWlnaHQrPWEuX2hlbHBlcj9hLnBvc2l0aW9uLnRv cC1lLnRvcDphLnBvc2l0aW9uLnRvcDtpZihiKWEuc2l6ZS53aWR0aD1hLnNpemUu aGVpZ2h0KmMuYXNwZWN0UmF0aW87YS5wb3NpdGlvbi50b3A9YS5faGVscGVyP2Uu dG9wOjB9YS5vZmZzZXQubGVmdD1hLnBhcmVudERhdGEubGVmdCthLnBvc2l0aW9u LmxlZnQ7YS5vZmZzZXQudG9wPWEucGFyZW50RGF0YS50b3ArYS5wb3NpdGlvbi50 b3A7Yz1NYXRoLmFicygoYS5faGVscGVyP2Eub2Zmc2V0LmxlZnQtZi5sZWZ0OmEu b2Zmc2V0LmxlZnQtZi5sZWZ0KSthLnNpemVEaWZmLndpZHRoKTtlPU1hdGguYWJz KChhLl9oZWxwZXI/YS5vZmZzZXQudG9wLWYudG9wOmEub2Zmc2V0LnRvcC0KZS50 b3ApK2Euc2l6ZURpZmYuaGVpZ2h0KTtnPWEuY29udGFpbmVyRWxlbWVudC5nZXQo MCk9PWEuZWxlbWVudC5wYXJlbnQoKS5nZXQoMCk7Zj0vcmVsYXRpdmV8YWJzb2x1 dGUvLnRlc3QoYS5jb250YWluZXJFbGVtZW50LmNzcygicG9zaXRpb24iKSk7aWYo ZyYmZiljLT1hLnBhcmVudERhdGEubGVmdDtpZihjK2Euc2l6ZS53aWR0aD49YS5w YXJlbnREYXRhLndpZHRoKXthLnNpemUud2lkdGg9YS5wYXJlbnREYXRhLndpZHRo LWM7aWYoYilhLnNpemUuaGVpZ2h0PWEuc2l6ZS53aWR0aC9hLmFzcGVjdFJhdGlv fWlmKGUrYS5zaXplLmhlaWdodD49YS5wYXJlbnREYXRhLmhlaWdodCl7YS5zaXpl LmhlaWdodD1hLnBhcmVudERhdGEuaGVpZ2h0LWU7aWYoYilhLnNpemUud2lkdGg9 YS5zaXplLmhlaWdodCphLmFzcGVjdFJhdGlvfX0sc3RvcDpmdW5jdGlvbigpe3Zh ciBiPWQodGhpcykuZGF0YSgicmVzaXphYmxlIiksYT1iLm9wdGlvbnMsYz1iLmNv bnRhaW5lck9mZnNldCxlPWIuY29udGFpbmVyUG9zaXRpb24sCmc9Yi5jb250YWlu ZXJFbGVtZW50LGY9ZChiLmhlbHBlciksaD1mLm9mZnNldCgpLGk9Zi5vdXRlcldp ZHRoKCktYi5zaXplRGlmZi53aWR0aDtmPWYub3V0ZXJIZWlnaHQoKS1iLnNpemVE aWZmLmhlaWdodDtiLl9oZWxwZXImJiFhLmFuaW1hdGUmJi9yZWxhdGl2ZS8udGVz dChnLmNzcygicG9zaXRpb24iKSkmJmQodGhpcykuY3NzKHtsZWZ0OmgubGVmdC1l LmxlZnQtYy5sZWZ0LHdpZHRoOmksaGVpZ2h0OmZ9KTtiLl9oZWxwZXImJiFhLmFu aW1hdGUmJi9zdGF0aWMvLnRlc3QoZy5jc3MoInBvc2l0aW9uIikpJiZkKHRoaXMp LmNzcyh7bGVmdDpoLmxlZnQtZS5sZWZ0LWMubGVmdCx3aWR0aDppLGhlaWdodDpm fSl9fSk7ZC51aS5wbHVnaW4uYWRkKCJyZXNpemFibGUiLCJnaG9zdCIse3N0YXJ0 OmZ1bmN0aW9uKCl7dmFyIGI9ZCh0aGlzKS5kYXRhKCJyZXNpemFibGUiKSxhPWIu b3B0aW9ucyxjPWIuc2l6ZTtiLmdob3N0PWIub3JpZ2luYWxFbGVtZW50LmNsb25l KCk7Yi5naG9zdC5jc3Moe29wYWNpdHk6MC4yNSwKZGlzcGxheToiYmxvY2siLHBv c2l0aW9uOiJyZWxhdGl2ZSIsaGVpZ2h0OmMuaGVpZ2h0LHdpZHRoOmMud2lkdGgs bWFyZ2luOjAsbGVmdDowLHRvcDowfSkuYWRkQ2xhc3MoInVpLXJlc2l6YWJsZS1n aG9zdCIpLmFkZENsYXNzKHR5cGVvZiBhLmdob3N0PT0ic3RyaW5nIj9hLmdob3N0 OiIiKTtiLmdob3N0LmFwcGVuZFRvKGIuaGVscGVyKX0scmVzaXplOmZ1bmN0aW9u KCl7dmFyIGI9ZCh0aGlzKS5kYXRhKCJyZXNpemFibGUiKTtiLmdob3N0JiZiLmdo b3N0LmNzcyh7cG9zaXRpb246InJlbGF0aXZlIixoZWlnaHQ6Yi5zaXplLmhlaWdo dCx3aWR0aDpiLnNpemUud2lkdGh9KX0sc3RvcDpmdW5jdGlvbigpe3ZhciBiPWQo dGhpcykuZGF0YSgicmVzaXphYmxlIik7Yi5naG9zdCYmYi5oZWxwZXImJmIuaGVs cGVyLmdldCgwKS5yZW1vdmVDaGlsZChiLmdob3N0LmdldCgwKSl9fSk7ZC51aS5w bHVnaW4uYWRkKCJyZXNpemFibGUiLCJncmlkIix7cmVzaXplOmZ1bmN0aW9uKCl7 dmFyIGI9CmQodGhpcykuZGF0YSgicmVzaXphYmxlIiksYT1iLm9wdGlvbnMsYz1i LnNpemUsZT1iLm9yaWdpbmFsU2l6ZSxnPWIub3JpZ2luYWxQb3NpdGlvbixmPWIu YXhpczthLmdyaWQ9dHlwZW9mIGEuZ3JpZD09Im51bWJlciI/W2EuZ3JpZCxhLmdy aWRdOmEuZ3JpZDt2YXIgaD1NYXRoLnJvdW5kKChjLndpZHRoLWUud2lkdGgpLyhh LmdyaWRbMF18fDEpKSooYS5ncmlkWzBdfHwxKTthPU1hdGgucm91bmQoKGMuaGVp Z2h0LWUuaGVpZ2h0KS8oYS5ncmlkWzFdfHwxKSkqKGEuZ3JpZFsxXXx8MSk7aWYo L14oc2V8c3xlKSQvLnRlc3QoZikpe2Iuc2l6ZS53aWR0aD1lLndpZHRoK2g7Yi5z aXplLmhlaWdodD1lLmhlaWdodCthfWVsc2UgaWYoL14obmUpJC8udGVzdChmKSl7 Yi5zaXplLndpZHRoPWUud2lkdGgraDtiLnNpemUuaGVpZ2h0PWUuaGVpZ2h0K2E7 Yi5wb3NpdGlvbi50b3A9Zy50b3AtYX1lbHNle2lmKC9eKHN3KSQvLnRlc3QoZikp e2Iuc2l6ZS53aWR0aD1lLndpZHRoK2g7Yi5zaXplLmhlaWdodD0KZS5oZWlnaHQr YX1lbHNle2Iuc2l6ZS53aWR0aD1lLndpZHRoK2g7Yi5zaXplLmhlaWdodD1lLmhl aWdodCthO2IucG9zaXRpb24udG9wPWcudG9wLWF9Yi5wb3NpdGlvbi5sZWZ0PWcu bGVmdC1ofX19KTt2YXIgbT1mdW5jdGlvbihiKXtyZXR1cm4gcGFyc2VJbnQoYiwx MCl8fDB9LGs9ZnVuY3Rpb24oYil7cmV0dXJuIWlzTmFOKHBhcnNlSW50KGIsMTAp KX19KShqUXVlcnkpOwo7Ci8qCiAqIGpRdWVyeSBVSSBTZWxlY3RhYmxlIDEuOC4y CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMCBBVVRIT1JTLnR4dCAoaHR0cDovL2px dWVyeXVpLmNvbS9hYm91dCkKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlU IChNSVQtTElDRU5TRS50eHQpCiAqIGFuZCBHUEwgKEdQTC1MSUNFTlNFLnR4dCkg bGljZW5zZXMuCiAqCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvU2VsZWN0 YWJsZXMKICoKICogRGVwZW5kczoKICoJanF1ZXJ5LnVpLmNvcmUuanMKICoJanF1 ZXJ5LnVpLm1vdXNlLmpzCiAqCWpxdWVyeS51aS53aWRnZXQuanMKICovCihmdW5j dGlvbigkKSB7CgokLndpZGdldCgidWkuc2VsZWN0YWJsZSIsICQudWkubW91c2Us IHsKCW9wdGlvbnM6IHsKCQlhcHBlbmRUbzogJ2JvZHknLAoJCWF1dG9SZWZyZXNo OiB0cnVlLAoJCWRpc3RhbmNlOiAwLAoJCWZpbHRlcjogJyonLAoJCXRvbGVyYW5j ZTogJ3RvdWNoJwoJfSwKCV9jcmVhdGU6IGZ1bmN0aW9uKCkgewoJCXZhciBzZWxm ID0gdGhpczsKCgkJdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1zZWxlY3RhYmxl Iik7CgoJCXRoaXMuZHJhZ2dlZCA9IGZhbHNlOwoKCQkvLyBjYWNoZSBzZWxlY3Rl ZSBjaGlsZHJlbiBiYXNlZCBvbiBmaWx0ZXIKCQl2YXIgc2VsZWN0ZWVzOwoJCXRo aXMucmVmcmVzaCA9IGZ1bmN0aW9uKCkgewoJCQlzZWxlY3RlZXMgPSAkKHNlbGYu b3B0aW9ucy5maWx0ZXIsIHNlbGYuZWxlbWVudFswXSk7CgkJCXNlbGVjdGVlcy5l YWNoKGZ1bmN0aW9uKCkgewoJCQkJdmFyICR0aGlzID0gJCh0aGlzKTsKCQkJCXZh ciBwb3MgPSAkdGhpcy5vZmZzZXQoKTsKCQkJCSQuZGF0YSh0aGlzLCAic2VsZWN0 YWJsZS1pdGVtIiwgewoJCQkJCWVsZW1lbnQ6IHRoaXMsCgkJCQkJJGVsZW1lbnQ6 ICR0aGlzLAoJCQkJCWxlZnQ6IHBvcy5sZWZ0LAoJCQkJCXRvcDogcG9zLnRvcCwK CQkJCQlyaWdodDogcG9zLmxlZnQgKyAkdGhpcy5vdXRlcldpZHRoKCksCgkJCQkJ Ym90dG9tOiBwb3MudG9wICsgJHRoaXMub3V0ZXJIZWlnaHQoKSwKCQkJCQlzdGFy dHNlbGVjdGVkOiBmYWxzZSwKCQkJCQlzZWxlY3RlZDogJHRoaXMuaGFzQ2xhc3Mo J3VpLXNlbGVjdGVkJyksCgkJCQkJc2VsZWN0aW5nOiAkdGhpcy5oYXNDbGFzcygn dWktc2VsZWN0aW5nJyksCgkJCQkJdW5zZWxlY3Rpbmc6ICR0aGlzLmhhc0NsYXNz KCd1aS11bnNlbGVjdGluZycpCgkJCQl9KTsKCQkJfSk7CgkJfTsKCQl0aGlzLnJl ZnJlc2goKTsKCgkJdGhpcy5zZWxlY3RlZXMgPSBzZWxlY3RlZXMuYWRkQ2xhc3Mo InVpLXNlbGVjdGVlIik7CgoJCXRoaXMuX21vdXNlSW5pdCgpOwoKCQl0aGlzLmhl bHBlciA9ICQoIjxkaXYgY2xhc3M9J3VpLXNlbGVjdGFibGUtaGVscGVyJz48L2Rp dj4iKTsKCX0sCgoJZGVzdHJveTogZnVuY3Rpb24oKSB7CgkJdGhpcy5zZWxlY3Rl ZXMKCQkJLnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RlZSIpCgkJCS5yZW1vdmVEYXRh KCJzZWxlY3RhYmxlLWl0ZW0iKTsKCQl0aGlzLmVsZW1lbnQKCQkJLnJlbW92ZUNs YXNzKCJ1aS1zZWxlY3RhYmxlIHVpLXNlbGVjdGFibGUtZGlzYWJsZWQiKQoJCQku cmVtb3ZlRGF0YSgic2VsZWN0YWJsZSIpCgkJCS51bmJpbmQoIi5zZWxlY3RhYmxl Iik7CgkJdGhpcy5fbW91c2VEZXN0cm95KCk7CgoJCXJldHVybiB0aGlzOwoJfSwK CglfbW91c2VTdGFydDogZnVuY3Rpb24oZXZlbnQpIHsKCQl2YXIgc2VsZiA9IHRo aXM7CgoJCXRoaXMub3BvcyA9IFtldmVudC5wYWdlWCwgZXZlbnQucGFnZVldOwoK CQlpZiAodGhpcy5vcHRpb25zLmRpc2FibGVkKQoJCQlyZXR1cm47CgoJCXZhciBv cHRpb25zID0gdGhpcy5vcHRpb25zOwoKCQl0aGlzLnNlbGVjdGVlcyA9ICQob3B0 aW9ucy5maWx0ZXIsIHRoaXMuZWxlbWVudFswXSk7CgoJCXRoaXMuX3RyaWdnZXIo InN0YXJ0IiwgZXZlbnQpOwoKCQkkKG9wdGlvbnMuYXBwZW5kVG8pLmFwcGVuZCh0 aGlzLmhlbHBlcik7CgkJLy8gcG9zaXRpb24gaGVscGVyIChsYXNzbykKCQl0aGlz LmhlbHBlci5jc3MoewoJCQkiei1pbmRleCI6IDEwMCwKCQkJInBvc2l0aW9uIjog ImFic29sdXRlIiwKCQkJImxlZnQiOiBldmVudC5jbGllbnRYLAoJCQkidG9wIjog ZXZlbnQuY2xpZW50WSwKCQkJIndpZHRoIjogMCwKCQkJImhlaWdodCI6IDAKCQl9 KTsKCgkJaWYgKG9wdGlvbnMuYXV0b1JlZnJlc2gpIHsKCQkJdGhpcy5yZWZyZXNo KCk7CgkJfQoKCQl0aGlzLnNlbGVjdGVlcy5maWx0ZXIoJy51aS1zZWxlY3RlZCcp LmVhY2goZnVuY3Rpb24oKSB7CgkJCXZhciBzZWxlY3RlZSA9ICQuZGF0YSh0aGlz LCAic2VsZWN0YWJsZS1pdGVtIik7CgkJCXNlbGVjdGVlLnN0YXJ0c2VsZWN0ZWQg PSB0cnVlOwoJCQlpZiAoIWV2ZW50Lm1ldGFLZXkpIHsKCQkJCXNlbGVjdGVlLiRl bGVtZW50LnJlbW92ZUNsYXNzKCd1aS1zZWxlY3RlZCcpOwoJCQkJc2VsZWN0ZWUu c2VsZWN0ZWQgPSBmYWxzZTsKCQkJCXNlbGVjdGVlLiRlbGVtZW50LmFkZENsYXNz KCd1aS11bnNlbGVjdGluZycpOwoJCQkJc2VsZWN0ZWUudW5zZWxlY3RpbmcgPSB0 cnVlOwoJCQkJLy8gc2VsZWN0YWJsZSBVTlNFTEVDVElORyBjYWxsYmFjawoJCQkJ c2VsZi5fdHJpZ2dlcigidW5zZWxlY3RpbmciLCBldmVudCwgewoJCQkJCXVuc2Vs ZWN0aW5nOiBzZWxlY3RlZS5lbGVtZW50CgkJCQl9KTsKCQkJfQoJCX0pOwoKCQkk KGV2ZW50LnRhcmdldCkucGFyZW50cygpLmFuZFNlbGYoKS5lYWNoKGZ1bmN0aW9u KCkgewoJCQl2YXIgc2VsZWN0ZWUgPSAkLmRhdGEodGhpcywgInNlbGVjdGFibGUt aXRlbSIpOwoJCQlpZiAoc2VsZWN0ZWUpIHsKCQkJCXZhciBkb1NlbGVjdCA9ICFl dmVudC5tZXRhS2V5IHx8ICFzZWxlY3RlZS4kZWxlbWVudC5oYXNDbGFzcygndWkt c2VsZWN0ZWQnKTsKCQkJCXNlbGVjdGVlLiRlbGVtZW50CgkJCQkJLnJlbW92ZUNs YXNzKGRvU2VsZWN0ID8gInVpLXVuc2VsZWN0aW5nIiA6ICJ1aS1zZWxlY3RlZCIp CgkJCQkJLmFkZENsYXNzKGRvU2VsZWN0ID8gInVpLXNlbGVjdGluZyIgOiAidWkt dW5zZWxlY3RpbmciKTsKCQkJCXNlbGVjdGVlLnVuc2VsZWN0aW5nID0gIWRvU2Vs ZWN0OwoJCQkJc2VsZWN0ZWUuc2VsZWN0aW5nID0gZG9TZWxlY3Q7CgkJCQlzZWxl Y3RlZS5zZWxlY3RlZCA9IGRvU2VsZWN0OwoJCQkJLy8gc2VsZWN0YWJsZSAoVU4p U0VMRUNUSU5HIGNhbGxiYWNrCgkJCQlpZiAoZG9TZWxlY3QpIHsKCQkJCQlzZWxm Ll90cmlnZ2VyKCJzZWxlY3RpbmciLCBldmVudCwgewoJCQkJCQlzZWxlY3Rpbmc6 IHNlbGVjdGVlLmVsZW1lbnQKCQkJCQl9KTsKCQkJCX0gZWxzZSB7CgkJCQkJc2Vs Zi5fdHJpZ2dlcigidW5zZWxlY3RpbmciLCBldmVudCwgewoJCQkJCQl1bnNlbGVj dGluZzogc2VsZWN0ZWUuZWxlbWVudAoJCQkJCX0pOwoJCQkJfQoJCQkJcmV0dXJu IGZhbHNlOwoJCQl9CgkJfSk7CgoJfSwKCglfbW91c2VEcmFnOiBmdW5jdGlvbihl dmVudCkgewoJCXZhciBzZWxmID0gdGhpczsKCQl0aGlzLmRyYWdnZWQgPSB0cnVl OwoKCQlpZiAodGhpcy5vcHRpb25zLmRpc2FibGVkKQoJCQlyZXR1cm47CgoJCXZh ciBvcHRpb25zID0gdGhpcy5vcHRpb25zOwoKCQl2YXIgeDEgPSB0aGlzLm9wb3Nb MF0sIHkxID0gdGhpcy5vcG9zWzFdLCB4MiA9IGV2ZW50LnBhZ2VYLCB5MiA9IGV2 ZW50LnBhZ2VZOwoJCWlmICh4MSA+IHgyKSB7IHZhciB0bXAgPSB4MjsgeDIgPSB4 MTsgeDEgPSB0bXA7IH0KCQlpZiAoeTEgPiB5MikgeyB2YXIgdG1wID0geTI7IHky ID0geTE7IHkxID0gdG1wOyB9CgkJdGhpcy5oZWxwZXIuY3NzKHtsZWZ0OiB4MSwg dG9wOiB5MSwgd2lkdGg6IHgyLXgxLCBoZWlnaHQ6IHkyLXkxfSk7CgoJCXRoaXMu c2VsZWN0ZWVzLmVhY2goZnVuY3Rpb24oKSB7CgkJCXZhciBzZWxlY3RlZSA9ICQu ZGF0YSh0aGlzLCAic2VsZWN0YWJsZS1pdGVtIik7CgkJCS8vcHJldmVudCBoZWxw ZXIgZnJvbSBiZWluZyBzZWxlY3RlZCBpZiBhcHBlbmRUbzogc2VsZWN0YWJsZQoJ CQlpZiAoIXNlbGVjdGVlIHx8IHNlbGVjdGVlLmVsZW1lbnQgPT0gc2VsZi5lbGVt ZW50WzBdKQoJCQkJcmV0dXJuOwoJCQl2YXIgaGl0ID0gZmFsc2U7CgkJCWlmIChv cHRpb25zLnRvbGVyYW5jZSA9PSAndG91Y2gnKSB7CgkJCQloaXQgPSAoICEoc2Vs ZWN0ZWUubGVmdCA+IHgyIHx8IHNlbGVjdGVlLnJpZ2h0IDwgeDEgfHwgc2VsZWN0 ZWUudG9wID4geTIgfHwgc2VsZWN0ZWUuYm90dG9tIDwgeTEpICk7CgkJCX0gZWxz ZSBpZiAob3B0aW9ucy50b2xlcmFuY2UgPT0gJ2ZpdCcpIHsKCQkJCWhpdCA9IChz ZWxlY3RlZS5sZWZ0ID4geDEgJiYgc2VsZWN0ZWUucmlnaHQgPCB4MiAmJiBzZWxl Y3RlZS50b3AgPiB5MSAmJiBzZWxlY3RlZS5ib3R0b20gPCB5Mik7CgkJCX0KCgkJ CWlmIChoaXQpIHsKCQkJCS8vIFNFTEVDVAoJCQkJaWYgKHNlbGVjdGVlLnNlbGVj dGVkKSB7CgkJCQkJc2VsZWN0ZWUuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoJ3VpLXNl bGVjdGVkJyk7CgkJCQkJc2VsZWN0ZWUuc2VsZWN0ZWQgPSBmYWxzZTsKCQkJCX0K CQkJCWlmIChzZWxlY3RlZS51bnNlbGVjdGluZykgewoJCQkJCXNlbGVjdGVlLiRl bGVtZW50LnJlbW92ZUNsYXNzKCd1aS11bnNlbGVjdGluZycpOwoJCQkJCXNlbGVj dGVlLnVuc2VsZWN0aW5nID0gZmFsc2U7CgkJCQl9CgkJCQlpZiAoIXNlbGVjdGVl LnNlbGVjdGluZykgewoJCQkJCXNlbGVjdGVlLiRlbGVtZW50LmFkZENsYXNzKCd1 aS1zZWxlY3RpbmcnKTsKCQkJCQlzZWxlY3RlZS5zZWxlY3RpbmcgPSB0cnVlOwoJ CQkJCS8vIHNlbGVjdGFibGUgU0VMRUNUSU5HIGNhbGxiYWNrCgkJCQkJc2VsZi5f dHJpZ2dlcigic2VsZWN0aW5nIiwgZXZlbnQsIHsKCQkJCQkJc2VsZWN0aW5nOiBz ZWxlY3RlZS5lbGVtZW50CgkJCQkJfSk7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQkv LyBVTlNFTEVDVAoJCQkJaWYgKHNlbGVjdGVlLnNlbGVjdGluZykgewoJCQkJCWlm IChldmVudC5tZXRhS2V5ICYmIHNlbGVjdGVlLnN0YXJ0c2VsZWN0ZWQpIHsKCQkJ CQkJc2VsZWN0ZWUuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoJ3VpLXNlbGVjdGluZycp OwoJCQkJCQlzZWxlY3RlZS5zZWxlY3RpbmcgPSBmYWxzZTsKCQkJCQkJc2VsZWN0 ZWUuJGVsZW1lbnQuYWRkQ2xhc3MoJ3VpLXNlbGVjdGVkJyk7CgkJCQkJCXNlbGVj dGVlLnNlbGVjdGVkID0gdHJ1ZTsKCQkJCQl9IGVsc2UgewoJCQkJCQlzZWxlY3Rl ZS4kZWxlbWVudC5yZW1vdmVDbGFzcygndWktc2VsZWN0aW5nJyk7CgkJCQkJCXNl bGVjdGVlLnNlbGVjdGluZyA9IGZhbHNlOwoJCQkJCQlpZiAoc2VsZWN0ZWUuc3Rh cnRzZWxlY3RlZCkgewoJCQkJCQkJc2VsZWN0ZWUuJGVsZW1lbnQuYWRkQ2xhc3Mo J3VpLXVuc2VsZWN0aW5nJyk7CgkJCQkJCQlzZWxlY3RlZS51bnNlbGVjdGluZyA9 IHRydWU7CgkJCQkJCX0KCQkJCQkJLy8gc2VsZWN0YWJsZSBVTlNFTEVDVElORyBj YWxsYmFjawoJCQkJCQlzZWxmLl90cmlnZ2VyKCJ1bnNlbGVjdGluZyIsIGV2ZW50 LCB7CgkJCQkJCQl1bnNlbGVjdGluZzogc2VsZWN0ZWUuZWxlbWVudAoJCQkJCQl9 KTsKCQkJCQl9CgkJCQl9CgkJCQlpZiAoc2VsZWN0ZWUuc2VsZWN0ZWQpIHsKCQkJ CQlpZiAoIWV2ZW50Lm1ldGFLZXkgJiYgIXNlbGVjdGVlLnN0YXJ0c2VsZWN0ZWQp IHsKCQkJCQkJc2VsZWN0ZWUuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoJ3VpLXNlbGVj dGVkJyk7CgkJCQkJCXNlbGVjdGVlLnNlbGVjdGVkID0gZmFsc2U7CgoJCQkJCQlz ZWxlY3RlZS4kZWxlbWVudC5hZGRDbGFzcygndWktdW5zZWxlY3RpbmcnKTsKCQkJ CQkJc2VsZWN0ZWUudW5zZWxlY3RpbmcgPSB0cnVlOwoJCQkJCQkvLyBzZWxlY3Rh YmxlIFVOU0VMRUNUSU5HIGNhbGxiYWNrCgkJCQkJCXNlbGYuX3RyaWdnZXIoInVu c2VsZWN0aW5nIiwgZXZlbnQsIHsKCQkJCQkJCXVuc2VsZWN0aW5nOiBzZWxlY3Rl ZS5lbGVtZW50CgkJCQkJCX0pOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0pOwoKCQly ZXR1cm4gZmFsc2U7Cgl9LAoKCV9tb3VzZVN0b3A6IGZ1bmN0aW9uKGV2ZW50KSB7 CgkJdmFyIHNlbGYgPSB0aGlzOwoKCQl0aGlzLmRyYWdnZWQgPSBmYWxzZTsKCgkJ dmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7CgoJCSQoJy51aS11bnNlbGVjdGlu ZycsIHRoaXMuZWxlbWVudFswXSkuZWFjaChmdW5jdGlvbigpIHsKCQkJdmFyIHNl bGVjdGVlID0gJC5kYXRhKHRoaXMsICJzZWxlY3RhYmxlLWl0ZW0iKTsKCQkJc2Vs ZWN0ZWUuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoJ3VpLXVuc2VsZWN0aW5nJyk7CgkJ CXNlbGVjdGVlLnVuc2VsZWN0aW5nID0gZmFsc2U7CgkJCXNlbGVjdGVlLnN0YXJ0 c2VsZWN0ZWQgPSBmYWxzZTsKCQkJc2VsZi5fdHJpZ2dlcigidW5zZWxlY3RlZCIs IGV2ZW50LCB7CgkJCQl1bnNlbGVjdGVkOiBzZWxlY3RlZS5lbGVtZW50CgkJCX0p OwoJCX0pOwoJCSQoJy51aS1zZWxlY3RpbmcnLCB0aGlzLmVsZW1lbnRbMF0pLmVh Y2goZnVuY3Rpb24oKSB7CgkJCXZhciBzZWxlY3RlZSA9ICQuZGF0YSh0aGlzLCAi c2VsZWN0YWJsZS1pdGVtIik7CgkJCXNlbGVjdGVlLiRlbGVtZW50LnJlbW92ZUNs YXNzKCd1aS1zZWxlY3RpbmcnKS5hZGRDbGFzcygndWktc2VsZWN0ZWQnKTsKCQkJ c2VsZWN0ZWUuc2VsZWN0aW5nID0gZmFsc2U7CgkJCXNlbGVjdGVlLnNlbGVjdGVk ID0gdHJ1ZTsKCQkJc2VsZWN0ZWUuc3RhcnRzZWxlY3RlZCA9IHRydWU7CgkJCXNl bGYuX3RyaWdnZXIoInNlbGVjdGVkIiwgZXZlbnQsIHsKCQkJCXNlbGVjdGVkOiBz ZWxlY3RlZS5lbGVtZW50CgkJCX0pOwoJCX0pOwoJCXRoaXMuX3RyaWdnZXIoInN0 b3AiLCBldmVudCk7CgoJCXRoaXMuaGVscGVyLnJlbW92ZSgpOwoKCQlyZXR1cm4g ZmFsc2U7Cgl9Cgp9KTsKCiQuZXh0ZW5kKCQudWkuc2VsZWN0YWJsZSwgewoJdmVy c2lvbjogIjEuOC4yIgp9KTsKCn0pKGpRdWVyeSk7CihmdW5jdGlvbihlKXtlLndp ZGdldCgidWkuc2VsZWN0YWJsZSIsZS51aS5tb3VzZSx7b3B0aW9uczp7YXBwZW5k VG86ImJvZHkiLGF1dG9SZWZyZXNoOnRydWUsZGlzdGFuY2U6MCxmaWx0ZXI6Iioi LHRvbGVyYW5jZToidG91Y2gifSxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIGM9dGhp czt0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXNlbGVjdGFibGUiKTt0aGlzLmRy YWdnZWQ9ZmFsc2U7dmFyIGY7dGhpcy5yZWZyZXNoPWZ1bmN0aW9uKCl7Zj1lKGMu b3B0aW9ucy5maWx0ZXIsYy5lbGVtZW50WzBdKTtmLmVhY2goZnVuY3Rpb24oKXt2 YXIgZD1lKHRoaXMpLGI9ZC5vZmZzZXQoKTtlLmRhdGEodGhpcywic2VsZWN0YWJs ZS1pdGVtIix7ZWxlbWVudDp0aGlzLCRlbGVtZW50OmQsbGVmdDpiLmxlZnQsdG9w OmIudG9wLHJpZ2h0OmIubGVmdCtkLm91dGVyV2lkdGgoKSxib3R0b206Yi50b3Ar ZC5vdXRlckhlaWdodCgpLHN0YXJ0c2VsZWN0ZWQ6ZmFsc2Usc2VsZWN0ZWQ6ZC5o YXNDbGFzcygidWktc2VsZWN0ZWQiKSwKc2VsZWN0aW5nOmQuaGFzQ2xhc3MoInVp LXNlbGVjdGluZyIpLHVuc2VsZWN0aW5nOmQuaGFzQ2xhc3MoInVpLXVuc2VsZWN0 aW5nIil9KX0pfTt0aGlzLnJlZnJlc2goKTt0aGlzLnNlbGVjdGVlcz1mLmFkZENs YXNzKCJ1aS1zZWxlY3RlZSIpO3RoaXMuX21vdXNlSW5pdCgpO3RoaXMuaGVscGVy PWUoIjxkaXYgY2xhc3M9J3VpLXNlbGVjdGFibGUtaGVscGVyJz48L2Rpdj4iKX0s ZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWVzLnJlbW92ZUNsYXNzKCJ1 aS1zZWxlY3RlZSIpLnJlbW92ZURhdGEoInNlbGVjdGFibGUtaXRlbSIpO3RoaXMu ZWxlbWVudC5yZW1vdmVDbGFzcygidWktc2VsZWN0YWJsZSB1aS1zZWxlY3RhYmxl LWRpc2FibGVkIikucmVtb3ZlRGF0YSgic2VsZWN0YWJsZSIpLnVuYmluZCgiLnNl bGVjdGFibGUiKTt0aGlzLl9tb3VzZURlc3Ryb3koKTtyZXR1cm4gdGhpc30sX21v dXNlU3RhcnQ6ZnVuY3Rpb24oYyl7dmFyIGY9dGhpczt0aGlzLm9wb3M9W2MucGFn ZVgsCmMucGFnZVldO2lmKCF0aGlzLm9wdGlvbnMuZGlzYWJsZWQpe3ZhciBkPXRo aXMub3B0aW9uczt0aGlzLnNlbGVjdGVlcz1lKGQuZmlsdGVyLHRoaXMuZWxlbWVu dFswXSk7dGhpcy5fdHJpZ2dlcigic3RhcnQiLGMpO2UoZC5hcHBlbmRUbykuYXBw ZW5kKHRoaXMuaGVscGVyKTt0aGlzLmhlbHBlci5jc3MoeyJ6LWluZGV4IjoxMDAs cG9zaXRpb246ImFic29sdXRlIixsZWZ0OmMuY2xpZW50WCx0b3A6Yy5jbGllbnRZ LHdpZHRoOjAsaGVpZ2h0OjB9KTtkLmF1dG9SZWZyZXNoJiZ0aGlzLnJlZnJlc2go KTt0aGlzLnNlbGVjdGVlcy5maWx0ZXIoIi51aS1zZWxlY3RlZCIpLmVhY2goZnVu Y3Rpb24oKXt2YXIgYj1lLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7Yi5z dGFydHNlbGVjdGVkPXRydWU7aWYoIWMubWV0YUtleSl7Yi4kZWxlbWVudC5yZW1v dmVDbGFzcygidWktc2VsZWN0ZWQiKTtiLnNlbGVjdGVkPWZhbHNlO2IuJGVsZW1l bnQuYWRkQ2xhc3MoInVpLXVuc2VsZWN0aW5nIik7CmIudW5zZWxlY3Rpbmc9dHJ1 ZTtmLl90cmlnZ2VyKCJ1bnNlbGVjdGluZyIsYyx7dW5zZWxlY3Rpbmc6Yi5lbGVt ZW50fSl9fSk7ZShjLnRhcmdldCkucGFyZW50cygpLmFuZFNlbGYoKS5lYWNoKGZ1 bmN0aW9uKCl7dmFyIGI9ZS5kYXRhKHRoaXMsInNlbGVjdGFibGUtaXRlbSIpO2lm KGIpe3ZhciBnPSFjLm1ldGFLZXl8fCFiLiRlbGVtZW50Lmhhc0NsYXNzKCJ1aS1z ZWxlY3RlZCIpO2IuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoZz8idWktdW5zZWxlY3Rp bmciOiJ1aS1zZWxlY3RlZCIpLmFkZENsYXNzKGc/InVpLXNlbGVjdGluZyI6InVp LXVuc2VsZWN0aW5nIik7Yi51bnNlbGVjdGluZz0hZztiLnNlbGVjdGluZz1nOyhi LnNlbGVjdGVkPWcpP2YuX3RyaWdnZXIoInNlbGVjdGluZyIsYyx7c2VsZWN0aW5n OmIuZWxlbWVudH0pOmYuX3RyaWdnZXIoInVuc2VsZWN0aW5nIixjLHt1bnNlbGVj dGluZzpiLmVsZW1lbnR9KTtyZXR1cm4gZmFsc2V9fSl9fSxfbW91c2VEcmFnOmZ1 bmN0aW9uKGMpe3ZhciBmPQp0aGlzO3RoaXMuZHJhZ2dlZD10cnVlO2lmKCF0aGlz Lm9wdGlvbnMuZGlzYWJsZWQpe3ZhciBkPXRoaXMub3B0aW9ucyxiPXRoaXMub3Bv c1swXSxnPXRoaXMub3Bvc1sxXSxoPWMucGFnZVgsaT1jLnBhZ2VZO2lmKGI+aCl7 dmFyIGo9aDtoPWI7Yj1qfWlmKGc+aSl7aj1pO2k9ZztnPWp9dGhpcy5oZWxwZXIu Y3NzKHtsZWZ0OmIsdG9wOmcsd2lkdGg6aC1iLGhlaWdodDppLWd9KTt0aGlzLnNl bGVjdGVlcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGE9ZS5kYXRhKHRoaXMsInNlbGVj dGFibGUtaXRlbSIpO2lmKCEoIWF8fGEuZWxlbWVudD09Zi5lbGVtZW50WzBdKSl7 dmFyIGs9ZmFsc2U7aWYoZC50b2xlcmFuY2U9PSJ0b3VjaCIpaz0hKGEubGVmdD5o fHxhLnJpZ2h0PGJ8fGEudG9wPml8fGEuYm90dG9tPGcpO2Vsc2UgaWYoZC50b2xl cmFuY2U9PSJmaXQiKWs9YS5sZWZ0PmImJmEucmlnaHQ8aCYmYS50b3A+ZyYmYS5i b3R0b208aTtpZihrKXtpZihhLnNlbGVjdGVkKXthLiRlbGVtZW50LnJlbW92ZUNs YXNzKCJ1aS1zZWxlY3RlZCIpOwphLnNlbGVjdGVkPWZhbHNlfWlmKGEudW5zZWxl Y3Rpbmcpe2EuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXVuc2VsZWN0aW5nIik7 YS51bnNlbGVjdGluZz1mYWxzZX1pZighYS5zZWxlY3Rpbmcpe2EuJGVsZW1lbnQu YWRkQ2xhc3MoInVpLXNlbGVjdGluZyIpO2Euc2VsZWN0aW5nPXRydWU7Zi5fdHJp Z2dlcigic2VsZWN0aW5nIixjLHtzZWxlY3Rpbmc6YS5lbGVtZW50fSl9fWVsc2V7 aWYoYS5zZWxlY3RpbmcpaWYoYy5tZXRhS2V5JiZhLnN0YXJ0c2VsZWN0ZWQpe2Eu JGVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNlbGVjdGluZyIpO2Euc2VsZWN0aW5n PWZhbHNlO2EuJGVsZW1lbnQuYWRkQ2xhc3MoInVpLXNlbGVjdGVkIik7YS5zZWxl Y3RlZD10cnVlfWVsc2V7YS4kZWxlbWVudC5yZW1vdmVDbGFzcygidWktc2VsZWN0 aW5nIik7YS5zZWxlY3Rpbmc9ZmFsc2U7aWYoYS5zdGFydHNlbGVjdGVkKXthLiRl bGVtZW50LmFkZENsYXNzKCJ1aS11bnNlbGVjdGluZyIpO2EudW5zZWxlY3Rpbmc9 CnRydWV9Zi5fdHJpZ2dlcigidW5zZWxlY3RpbmciLGMse3Vuc2VsZWN0aW5nOmEu ZWxlbWVudH0pfWlmKGEuc2VsZWN0ZWQpaWYoIWMubWV0YUtleSYmIWEuc3RhcnRz ZWxlY3RlZCl7YS4kZWxlbWVudC5yZW1vdmVDbGFzcygidWktc2VsZWN0ZWQiKTth LnNlbGVjdGVkPWZhbHNlO2EuJGVsZW1lbnQuYWRkQ2xhc3MoInVpLXVuc2VsZWN0 aW5nIik7YS51bnNlbGVjdGluZz10cnVlO2YuX3RyaWdnZXIoInVuc2VsZWN0aW5n IixjLHt1bnNlbGVjdGluZzphLmVsZW1lbnR9KX19fX0pO3JldHVybiBmYWxzZX19 LF9tb3VzZVN0b3A6ZnVuY3Rpb24oYyl7dmFyIGY9dGhpczt0aGlzLmRyYWdnZWQ9 ZmFsc2U7ZSgiLnVpLXVuc2VsZWN0aW5nIix0aGlzLmVsZW1lbnRbMF0pLmVhY2go ZnVuY3Rpb24oKXt2YXIgZD1lLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7 ZC4kZWxlbWVudC5yZW1vdmVDbGFzcygidWktdW5zZWxlY3RpbmciKTtkLnVuc2Vs ZWN0aW5nPWZhbHNlO2Quc3RhcnRzZWxlY3RlZD0KZmFsc2U7Zi5fdHJpZ2dlcigi dW5zZWxlY3RlZCIsYyx7dW5zZWxlY3RlZDpkLmVsZW1lbnR9KX0pO2UoIi51aS1z ZWxlY3RpbmciLHRoaXMuZWxlbWVudFswXSkuZWFjaChmdW5jdGlvbigpe3ZhciBk PWUuZGF0YSh0aGlzLCJzZWxlY3RhYmxlLWl0ZW0iKTtkLiRlbGVtZW50LnJlbW92 ZUNsYXNzKCJ1aS1zZWxlY3RpbmciKS5hZGRDbGFzcygidWktc2VsZWN0ZWQiKTtk LnNlbGVjdGluZz1mYWxzZTtkLnNlbGVjdGVkPXRydWU7ZC5zdGFydHNlbGVjdGVk PXRydWU7Zi5fdHJpZ2dlcigic2VsZWN0ZWQiLGMse3NlbGVjdGVkOmQuZWxlbWVu dH0pfSk7dGhpcy5fdHJpZ2dlcigic3RvcCIsYyk7dGhpcy5oZWxwZXIucmVtb3Zl KCk7cmV0dXJuIGZhbHNlfX0pO2UuZXh0ZW5kKGUudWkuc2VsZWN0YWJsZSx7dmVy c2lvbjoiMS44LjIifSl9KShqUXVlcnkpOwo7LyoKICogalF1ZXJ5IFVJIFNvcnRh YmxlIDEuOC4yCiAqCiAqIENvcHlyaWdodCAoYykgMjAxMCBBVVRIT1JTLnR4dCAo aHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKICogRHVhbCBsaWNlbnNlZCB1bmRl ciB0aGUgTUlUIChNSVQtTElDRU5TRS50eHQpCiAqIGFuZCBHUEwgKEdQTC1MSUNF TlNFLnR4dCkgbGljZW5zZXMuCiAqCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20v VUkvU29ydGFibGVzCiAqCiAqIERlcGVuZHM6CiAqCWpxdWVyeS51aS5jb3JlLmpz CiAqCWpxdWVyeS51aS5tb3VzZS5qcwogKglqcXVlcnkudWkud2lkZ2V0LmpzCiAq LwooZnVuY3Rpb24oZCl7ZC53aWRnZXQoInVpLnNvcnRhYmxlIixkLnVpLm1vdXNl LHt3aWRnZXRFdmVudFByZWZpeDoic29ydCIsb3B0aW9uczp7YXBwZW5kVG86InBh cmVudCIsYXhpczpmYWxzZSxjb25uZWN0V2l0aDpmYWxzZSxjb250YWlubWVudDpm YWxzZSxjdXJzb3I6ImF1dG8iLGN1cnNvckF0OmZhbHNlLGRyb3BPbkVtcHR5OnRy dWUsZm9yY2VQbGFjZWhvbGRlclNpemU6ZmFsc2UsZm9yY2VIZWxwZXJTaXplOmZh bHNlLGdyaWQ6ZmFsc2UsaGFuZGxlOmZhbHNlLGhlbHBlcjoib3JpZ2luYWwiLGl0 ZW1zOiI+ICoiLG9wYWNpdHk6ZmFsc2UscGxhY2Vob2xkZXI6ZmFsc2UscmV2ZXJ0 OmZhbHNlLHNjcm9sbDp0cnVlLHNjcm9sbFNlbnNpdGl2aXR5OjIwLHNjcm9sbFNw ZWVkOjIwLHNjb3BlOiJkZWZhdWx0Iix0b2xlcmFuY2U6ImludGVyc2VjdCIseklu ZGV4OjFFM30sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29udGFpbmVyQ2FjaGU9 e307dGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1zb3J0YWJsZSIpOwp0aGlzLnJl ZnJlc2goKTt0aGlzLmZsb2F0aW5nPXRoaXMuaXRlbXMubGVuZ3RoPy9sZWZ0fHJp Z2h0Ly50ZXN0KHRoaXMuaXRlbXNbMF0uaXRlbS5jc3MoImZsb2F0IikpOmZhbHNl O3RoaXMub2Zmc2V0PXRoaXMuZWxlbWVudC5vZmZzZXQoKTt0aGlzLl9tb3VzZUlu aXQoKX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5yZW1vdmVDbGFz cygidWktc29ydGFibGUgdWktc29ydGFibGUtZGlzYWJsZWQiKS5yZW1vdmVEYXRh KCJzb3J0YWJsZSIpLnVuYmluZCgiLnNvcnRhYmxlIik7dGhpcy5fbW91c2VEZXN0 cm95KCk7Zm9yKHZhciBhPXRoaXMuaXRlbXMubGVuZ3RoLTE7YT49MDthLS0pdGhp cy5pdGVtc1thXS5pdGVtLnJlbW92ZURhdGEoInNvcnRhYmxlLWl0ZW0iKTtyZXR1 cm4gdGhpc30sX3NldE9wdGlvbjpmdW5jdGlvbihhLGIpe2lmKGE9PT0iZGlzYWJs ZWQiKXt0aGlzLm9wdGlvbnNbYV09Yjt0aGlzLndpZGdldCgpW2I/ImFkZENsYXNz IjoicmVtb3ZlQ2xhc3MiXSgidWktc29ydGFibGUtZGlzYWJsZWQiKX1lbHNlIGQu V2lkZ2V0LnByb3RvdHlwZS5fc2V0T3B0aW9uLmFwcGx5KHRoaXMsCmFyZ3VtZW50 cyl9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24oYSxiKXtpZih0aGlzLnJldmVydGlu ZylyZXR1cm4gZmFsc2U7aWYodGhpcy5vcHRpb25zLmRpc2FibGVkfHx0aGlzLm9w dGlvbnMudHlwZT09InN0YXRpYyIpcmV0dXJuIGZhbHNlO3RoaXMuX3JlZnJlc2hJ dGVtcyhhKTt2YXIgYz1udWxsLGU9dGhpcztkKGEudGFyZ2V0KS5wYXJlbnRzKCku ZWFjaChmdW5jdGlvbigpe2lmKGQuZGF0YSh0aGlzLCJzb3J0YWJsZS1pdGVtIik9 PWUpe2M9ZCh0aGlzKTtyZXR1cm4gZmFsc2V9fSk7aWYoZC5kYXRhKGEudGFyZ2V0 LCJzb3J0YWJsZS1pdGVtIik9PWUpYz1kKGEudGFyZ2V0KTtpZighYylyZXR1cm4g ZmFsc2U7aWYodGhpcy5vcHRpb25zLmhhbmRsZSYmIWIpe3ZhciBmPWZhbHNlO2Qo dGhpcy5vcHRpb25zLmhhbmRsZSxjKS5maW5kKCIqIikuYW5kU2VsZigpLmVhY2go ZnVuY3Rpb24oKXtpZih0aGlzPT1hLnRhcmdldClmPXRydWV9KTtpZighZilyZXR1 cm4gZmFsc2V9dGhpcy5jdXJyZW50SXRlbT0KYzt0aGlzLl9yZW1vdmVDdXJyZW50 c0Zyb21JdGVtcygpO3JldHVybiB0cnVlfSxfbW91c2VTdGFydDpmdW5jdGlvbihh LGIsYyl7Yj10aGlzLm9wdGlvbnM7dmFyIGU9dGhpczt0aGlzLmN1cnJlbnRDb250 YWluZXI9dGhpczt0aGlzLnJlZnJlc2hQb3NpdGlvbnMoKTt0aGlzLmhlbHBlcj10 aGlzLl9jcmVhdGVIZWxwZXIoYSk7dGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9u cygpO3RoaXMuX2NhY2hlTWFyZ2lucygpO3RoaXMuc2Nyb2xsUGFyZW50PXRoaXMu aGVscGVyLnNjcm9sbFBhcmVudCgpO3RoaXMub2Zmc2V0PXRoaXMuY3VycmVudEl0 ZW0ub2Zmc2V0KCk7dGhpcy5vZmZzZXQ9e3RvcDp0aGlzLm9mZnNldC50b3AtdGhp cy5tYXJnaW5zLnRvcCxsZWZ0OnRoaXMub2Zmc2V0LmxlZnQtdGhpcy5tYXJnaW5z LmxlZnR9O3RoaXMuaGVscGVyLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIpO3Ro aXMuY3NzUG9zaXRpb249dGhpcy5oZWxwZXIuY3NzKCJwb3NpdGlvbiIpO2QuZXh0 ZW5kKHRoaXMub2Zmc2V0LAp7Y2xpY2s6e2xlZnQ6YS5wYWdlWC10aGlzLm9mZnNl dC5sZWZ0LHRvcDphLnBhZ2VZLXRoaXMub2Zmc2V0LnRvcH0scGFyZW50OnRoaXMu X2dldFBhcmVudE9mZnNldCgpLHJlbGF0aXZlOnRoaXMuX2dldFJlbGF0aXZlT2Zm c2V0KCl9KTt0aGlzLm9yaWdpbmFsUG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3Np dGlvbihhKTt0aGlzLm9yaWdpbmFsUGFnZVg9YS5wYWdlWDt0aGlzLm9yaWdpbmFs UGFnZVk9YS5wYWdlWTtiLmN1cnNvckF0JiZ0aGlzLl9hZGp1c3RPZmZzZXRGcm9t SGVscGVyKGIuY3Vyc29yQXQpO3RoaXMuZG9tUG9zaXRpb249e3ByZXY6dGhpcy5j dXJyZW50SXRlbS5wcmV2KClbMF0scGFyZW50OnRoaXMuY3VycmVudEl0ZW0ucGFy ZW50KClbMF19O3RoaXMuaGVscGVyWzBdIT10aGlzLmN1cnJlbnRJdGVtWzBdJiZ0 aGlzLmN1cnJlbnRJdGVtLmhpZGUoKTt0aGlzLl9jcmVhdGVQbGFjZWhvbGRlcigp O2IuY29udGFpbm1lbnQmJnRoaXMuX3NldENvbnRhaW5tZW50KCk7CmlmKGIuY3Vy c29yKXtpZihkKCJib2R5IikuY3NzKCJjdXJzb3IiKSl0aGlzLl9zdG9yZWRDdXJz b3I9ZCgiYm9keSIpLmNzcygiY3Vyc29yIik7ZCgiYm9keSIpLmNzcygiY3Vyc29y IixiLmN1cnNvcil9aWYoYi5vcGFjaXR5KXtpZih0aGlzLmhlbHBlci5jc3MoIm9w YWNpdHkiKSl0aGlzLl9zdG9yZWRPcGFjaXR5PXRoaXMuaGVscGVyLmNzcygib3Bh Y2l0eSIpO3RoaXMuaGVscGVyLmNzcygib3BhY2l0eSIsYi5vcGFjaXR5KX1pZihi LnpJbmRleCl7aWYodGhpcy5oZWxwZXIuY3NzKCJ6SW5kZXgiKSl0aGlzLl9zdG9y ZWRaSW5kZXg9dGhpcy5oZWxwZXIuY3NzKCJ6SW5kZXgiKTt0aGlzLmhlbHBlci5j c3MoInpJbmRleCIsYi56SW5kZXgpfWlmKHRoaXMuc2Nyb2xsUGFyZW50WzBdIT1k b2N1bWVudCYmdGhpcy5zY3JvbGxQYXJlbnRbMF0udGFnTmFtZSE9IkhUTUwiKXRo aXMub3ZlcmZsb3dPZmZzZXQ9dGhpcy5zY3JvbGxQYXJlbnQub2Zmc2V0KCk7dGhp cy5fdHJpZ2dlcigic3RhcnQiLAphLHRoaXMuX3VpSGFzaCgpKTt0aGlzLl9wcmVz ZXJ2ZUhlbHBlclByb3BvcnRpb25zfHx0aGlzLl9jYWNoZUhlbHBlclByb3BvcnRp b25zKCk7aWYoIWMpZm9yKGM9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO2M+PTA7 Yy0tKXRoaXMuY29udGFpbmVyc1tjXS5fdHJpZ2dlcigiYWN0aXZhdGUiLGEsZS5f dWlIYXNoKHRoaXMpKTtpZihkLnVpLmRkbWFuYWdlcilkLnVpLmRkbWFuYWdlci5j dXJyZW50PXRoaXM7ZC51aS5kZG1hbmFnZXImJiFiLmRyb3BCZWhhdmlvdXImJmQu dWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHRoaXMsYSk7dGhpcy5kcmFnZ2lu Zz10cnVlO3RoaXMuaGVscGVyLmFkZENsYXNzKCJ1aS1zb3J0YWJsZS1oZWxwZXIi KTt0aGlzLl9tb3VzZURyYWcoYSk7cmV0dXJuIHRydWV9LF9tb3VzZURyYWc6ZnVu Y3Rpb24oYSl7dGhpcy5wb3NpdGlvbj10aGlzLl9nZW5lcmF0ZVBvc2l0aW9uKGEp O3RoaXMucG9zaXRpb25BYnM9dGhpcy5fY29udmVydFBvc2l0aW9uVG8oImFic29s dXRlIik7CmlmKCF0aGlzLmxhc3RQb3NpdGlvbkFicyl0aGlzLmxhc3RQb3NpdGlv bkFicz10aGlzLnBvc2l0aW9uQWJzO2lmKHRoaXMub3B0aW9ucy5zY3JvbGwpe3Zh ciBiPXRoaXMub3B0aW9ucyxjPWZhbHNlO2lmKHRoaXMuc2Nyb2xsUGFyZW50WzBd IT1kb2N1bWVudCYmdGhpcy5zY3JvbGxQYXJlbnRbMF0udGFnTmFtZSE9IkhUTUwi KXtpZih0aGlzLm92ZXJmbG93T2Zmc2V0LnRvcCt0aGlzLnNjcm9sbFBhcmVudFsw XS5vZmZzZXRIZWlnaHQtYS5wYWdlWTxiLnNjcm9sbFNlbnNpdGl2aXR5KXRoaXMu c2Nyb2xsUGFyZW50WzBdLnNjcm9sbFRvcD1jPXRoaXMuc2Nyb2xsUGFyZW50WzBd LnNjcm9sbFRvcCtiLnNjcm9sbFNwZWVkO2Vsc2UgaWYoYS5wYWdlWS10aGlzLm92 ZXJmbG93T2Zmc2V0LnRvcDxiLnNjcm9sbFNlbnNpdGl2aXR5KXRoaXMuc2Nyb2xs UGFyZW50WzBdLnNjcm9sbFRvcD1jPXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9s bFRvcC1iLnNjcm9sbFNwZWVkO2lmKHRoaXMub3ZlcmZsb3dPZmZzZXQubGVmdCsK dGhpcy5zY3JvbGxQYXJlbnRbMF0ub2Zmc2V0V2lkdGgtYS5wYWdlWDxiLnNjcm9s bFNlbnNpdGl2aXR5KXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQ9Yz10 aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxMZWZ0K2Iuc2Nyb2xsU3BlZWQ7ZWxz ZSBpZihhLnBhZ2VYLXRoaXMub3ZlcmZsb3dPZmZzZXQubGVmdDxiLnNjcm9sbFNl bnNpdGl2aXR5KXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQ9Yz10aGlz LnNjcm9sbFBhcmVudFswXS5zY3JvbGxMZWZ0LWIuc2Nyb2xsU3BlZWR9ZWxzZXtp ZihhLnBhZ2VZLWQoZG9jdW1lbnQpLnNjcm9sbFRvcCgpPGIuc2Nyb2xsU2Vuc2l0 aXZpdHkpYz1kKGRvY3VtZW50KS5zY3JvbGxUb3AoZChkb2N1bWVudCkuc2Nyb2xs VG9wKCktYi5zY3JvbGxTcGVlZCk7ZWxzZSBpZihkKHdpbmRvdykuaGVpZ2h0KCkt KGEucGFnZVktZChkb2N1bWVudCkuc2Nyb2xsVG9wKCkpPGIuc2Nyb2xsU2Vuc2l0 aXZpdHkpYz1kKGRvY3VtZW50KS5zY3JvbGxUb3AoZChkb2N1bWVudCkuc2Nyb2xs VG9wKCkrCmIuc2Nyb2xsU3BlZWQpO2lmKGEucGFnZVgtZChkb2N1bWVudCkuc2Ny b2xsTGVmdCgpPGIuc2Nyb2xsU2Vuc2l0aXZpdHkpYz1kKGRvY3VtZW50KS5zY3Jv bGxMZWZ0KGQoZG9jdW1lbnQpLnNjcm9sbExlZnQoKS1iLnNjcm9sbFNwZWVkKTtl bHNlIGlmKGQod2luZG93KS53aWR0aCgpLShhLnBhZ2VYLWQoZG9jdW1lbnQpLnNj cm9sbExlZnQoKSk8Yi5zY3JvbGxTZW5zaXRpdml0eSljPWQoZG9jdW1lbnQpLnNj cm9sbExlZnQoZChkb2N1bWVudCkuc2Nyb2xsTGVmdCgpK2Iuc2Nyb2xsU3BlZWQp fWMhPT1mYWxzZSYmZC51aS5kZG1hbmFnZXImJiFiLmRyb3BCZWhhdmlvdXImJmQu dWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHRoaXMsYSl9dGhpcy5wb3NpdGlv bkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKTtpZighdGhp cy5vcHRpb25zLmF4aXN8fHRoaXMub3B0aW9ucy5heGlzIT0ieSIpdGhpcy5oZWxw ZXJbMF0uc3R5bGUubGVmdD10aGlzLnBvc2l0aW9uLmxlZnQrCiJweCI7aWYoIXRo aXMub3B0aW9ucy5heGlzfHx0aGlzLm9wdGlvbnMuYXhpcyE9IngiKXRoaXMuaGVs cGVyWzBdLnN0eWxlLnRvcD10aGlzLnBvc2l0aW9uLnRvcCsicHgiO2ZvcihiPXRo aXMuaXRlbXMubGVuZ3RoLTE7Yj49MDtiLS0pe2M9dGhpcy5pdGVtc1tiXTt2YXIg ZT1jLml0ZW1bMF0sZj10aGlzLl9pbnRlcnNlY3RzV2l0aFBvaW50ZXIoYyk7aWYo ZilpZihlIT10aGlzLmN1cnJlbnRJdGVtWzBdJiZ0aGlzLnBsYWNlaG9sZGVyW2Y9 PTE/Im5leHQiOiJwcmV2Il0oKVswXSE9ZSYmIWQudWkuY29udGFpbnModGhpcy5w bGFjZWhvbGRlclswXSxlKSYmKHRoaXMub3B0aW9ucy50eXBlPT0ic2VtaS1keW5h bWljIj8hZC51aS5jb250YWlucyh0aGlzLmVsZW1lbnRbMF0sZSk6dHJ1ZSkpe3Ro aXMuZGlyZWN0aW9uPWY9PTE/ImRvd24iOiJ1cCI7aWYodGhpcy5vcHRpb25zLnRv bGVyYW5jZT09InBvaW50ZXIifHx0aGlzLl9pbnRlcnNlY3RzV2l0aFNpZGVzKGMp KXRoaXMuX3JlYXJyYW5nZShhLApjKTtlbHNlIGJyZWFrO3RoaXMuX3RyaWdnZXIo ImNoYW5nZSIsYSx0aGlzLl91aUhhc2goKSk7YnJlYWt9fXRoaXMuX2NvbnRhY3RD b250YWluZXJzKGEpO2QudWkuZGRtYW5hZ2VyJiZkLnVpLmRkbWFuYWdlci5kcmFn KHRoaXMsYSk7dGhpcy5fdHJpZ2dlcigic29ydCIsYSx0aGlzLl91aUhhc2goKSk7 dGhpcy5sYXN0UG9zaXRpb25BYnM9dGhpcy5wb3NpdGlvbkFicztyZXR1cm4gZmFs c2V9LF9tb3VzZVN0b3A6ZnVuY3Rpb24oYSxiKXtpZihhKXtkLnVpLmRkbWFuYWdl ciYmIXRoaXMub3B0aW9ucy5kcm9wQmVoYXZpb3VyJiZkLnVpLmRkbWFuYWdlci5k cm9wKHRoaXMsYSk7aWYodGhpcy5vcHRpb25zLnJldmVydCl7dmFyIGM9dGhpczti PWMucGxhY2Vob2xkZXIub2Zmc2V0KCk7Yy5yZXZlcnRpbmc9dHJ1ZTtkKHRoaXMu aGVscGVyKS5hbmltYXRlKHtsZWZ0OmIubGVmdC10aGlzLm9mZnNldC5wYXJlbnQu bGVmdC1jLm1hcmdpbnMubGVmdCsodGhpcy5vZmZzZXRQYXJlbnRbMF09PQpkb2N1 bWVudC5ib2R5PzA6dGhpcy5vZmZzZXRQYXJlbnRbMF0uc2Nyb2xsTGVmdCksdG9w OmIudG9wLXRoaXMub2Zmc2V0LnBhcmVudC50b3AtYy5tYXJnaW5zLnRvcCsodGhp cy5vZmZzZXRQYXJlbnRbMF09PWRvY3VtZW50LmJvZHk/MDp0aGlzLm9mZnNldFBh cmVudFswXS5zY3JvbGxUb3ApfSxwYXJzZUludCh0aGlzLm9wdGlvbnMucmV2ZXJ0 LDEwKXx8NTAwLGZ1bmN0aW9uKCl7Yy5fY2xlYXIoYSl9KX1lbHNlIHRoaXMuX2Ns ZWFyKGEsYik7cmV0dXJuIGZhbHNlfX0sY2FuY2VsOmZ1bmN0aW9uKCl7dmFyIGE9 dGhpcztpZih0aGlzLmRyYWdnaW5nKXt0aGlzLl9tb3VzZVVwKCk7dGhpcy5vcHRp b25zLmhlbHBlcj09Im9yaWdpbmFsIj90aGlzLmN1cnJlbnRJdGVtLmNzcyh0aGlz Ll9zdG9yZWRDU1MpLnJlbW92ZUNsYXNzKCJ1aS1zb3J0YWJsZS1oZWxwZXIiKTp0 aGlzLmN1cnJlbnRJdGVtLnNob3coKTtmb3IodmFyIGI9dGhpcy5jb250YWluZXJz Lmxlbmd0aC0xO2I+PTA7Yi0tKXt0aGlzLmNvbnRhaW5lcnNbYl0uX3RyaWdnZXIo ImRlYWN0aXZhdGUiLApudWxsLGEuX3VpSGFzaCh0aGlzKSk7aWYodGhpcy5jb250 YWluZXJzW2JdLmNvbnRhaW5lckNhY2hlLm92ZXIpe3RoaXMuY29udGFpbmVyc1ti XS5fdHJpZ2dlcigib3V0IixudWxsLGEuX3VpSGFzaCh0aGlzKSk7dGhpcy5jb250 YWluZXJzW2JdLmNvbnRhaW5lckNhY2hlLm92ZXI9MH19fXRoaXMucGxhY2Vob2xk ZXJbMF0ucGFyZW50Tm9kZSYmdGhpcy5wbGFjZWhvbGRlclswXS5wYXJlbnROb2Rl LnJlbW92ZUNoaWxkKHRoaXMucGxhY2Vob2xkZXJbMF0pO3RoaXMub3B0aW9ucy5o ZWxwZXIhPSJvcmlnaW5hbCImJnRoaXMuaGVscGVyJiZ0aGlzLmhlbHBlclswXS5w YXJlbnROb2RlJiZ0aGlzLmhlbHBlci5yZW1vdmUoKTtkLmV4dGVuZCh0aGlzLHto ZWxwZXI6bnVsbCxkcmFnZ2luZzpmYWxzZSxyZXZlcnRpbmc6ZmFsc2UsX25vRmlu YWxTb3J0Om51bGx9KTt0aGlzLmRvbVBvc2l0aW9uLnByZXY/ZCh0aGlzLmRvbVBv c2l0aW9uLnByZXYpLmFmdGVyKHRoaXMuY3VycmVudEl0ZW0pOgpkKHRoaXMuZG9t UG9zaXRpb24ucGFyZW50KS5wcmVwZW5kKHRoaXMuY3VycmVudEl0ZW0pO3JldHVy biB0aGlzfSxzZXJpYWxpemU6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5fZ2V0SXRl bXNBc2pRdWVyeShhJiZhLmNvbm5lY3RlZCksYz1bXTthPWF8fHt9O2QoYikuZWFj aChmdW5jdGlvbigpe3ZhciBlPShkKGEuaXRlbXx8dGhpcykuYXR0cihhLmF0dHJp YnV0ZXx8ImlkIil8fCIiKS5tYXRjaChhLmV4cHJlc3Npb258fC8oLispWy09X10o LispLyk7aWYoZSljLnB1c2goKGEua2V5fHxlWzFdKyJbXSIpKyI9IisoYS5rZXkm JmEuZXhwcmVzc2lvbj9lWzFdOmVbMl0pKX0pO3JldHVybiBjLmpvaW4oIiYiKX0s dG9BcnJheTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9nZXRJdGVtc0FzalF1ZXJ5 KGEmJmEuY29ubmVjdGVkKSxjPVtdO2E9YXx8e307Yi5lYWNoKGZ1bmN0aW9uKCl7 Yy5wdXNoKGQoYS5pdGVtfHx0aGlzKS5hdHRyKGEuYXR0cmlidXRlfHwiaWQiKXx8 IiIpfSk7cmV0dXJuIGN9LApfaW50ZXJzZWN0c1dpdGg6ZnVuY3Rpb24oYSl7dmFy IGI9dGhpcy5wb3NpdGlvbkFicy5sZWZ0LGM9Yit0aGlzLmhlbHBlclByb3BvcnRp b25zLndpZHRoLGU9dGhpcy5wb3NpdGlvbkFicy50b3AsZj1lK3RoaXMuaGVscGVy UHJvcG9ydGlvbnMuaGVpZ2h0LGc9YS5sZWZ0LGg9ZythLndpZHRoLGk9YS50b3As az1pK2EuaGVpZ2h0LGo9dGhpcy5vZmZzZXQuY2xpY2sudG9wLGw9dGhpcy5vZmZz ZXQuY2xpY2subGVmdDtqPWUraj5pJiZlK2o8ayYmYitsPmcmJmIrbDxoO3JldHVy biB0aGlzLm9wdGlvbnMudG9sZXJhbmNlPT0icG9pbnRlciJ8fHRoaXMub3B0aW9u cy5mb3JjZVBvaW50ZXJGb3JDb250YWluZXJzfHx0aGlzLm9wdGlvbnMudG9sZXJh bmNlIT0icG9pbnRlciImJnRoaXMuaGVscGVyUHJvcG9ydGlvbnNbdGhpcy5mbG9h dGluZz8id2lkdGgiOiJoZWlnaHQiXT5hW3RoaXMuZmxvYXRpbmc/IndpZHRoIjoi aGVpZ2h0Il0/ajpnPGIrdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC8KMiYm Yy10aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLzI8aCYmaTxlK3RoaXMuaGVs cGVyUHJvcG9ydGlvbnMuaGVpZ2h0LzImJmYtdGhpcy5oZWxwZXJQcm9wb3J0aW9u cy5oZWlnaHQvMjxrfSxfaW50ZXJzZWN0c1dpdGhQb2ludGVyOmZ1bmN0aW9uKGEp e3ZhciBiPWQudWkuaXNPdmVyQXhpcyh0aGlzLnBvc2l0aW9uQWJzLnRvcCt0aGlz Lm9mZnNldC5jbGljay50b3AsYS50b3AsYS5oZWlnaHQpO2E9ZC51aS5pc092ZXJB eGlzKHRoaXMucG9zaXRpb25BYnMubGVmdCt0aGlzLm9mZnNldC5jbGljay5sZWZ0 LGEubGVmdCxhLndpZHRoKTtiPWImJmE7YT10aGlzLl9nZXREcmFnVmVydGljYWxE aXJlY3Rpb24oKTt2YXIgYz10aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlv bigpO2lmKCFiKXJldHVybiBmYWxzZTtyZXR1cm4gdGhpcy5mbG9hdGluZz9jJiZj PT0icmlnaHQifHxhPT0iZG93biI/MjoxOmEmJihhPT0iZG93biI/MjoxKX0sX2lu dGVyc2VjdHNXaXRoU2lkZXM6ZnVuY3Rpb24oYSl7dmFyIGI9CmQudWkuaXNPdmVy QXhpcyh0aGlzLnBvc2l0aW9uQWJzLnRvcCt0aGlzLm9mZnNldC5jbGljay50b3As YS50b3ArYS5oZWlnaHQvMixhLmhlaWdodCk7YT1kLnVpLmlzT3ZlckF4aXModGhp cy5wb3NpdGlvbkFicy5sZWZ0K3RoaXMub2Zmc2V0LmNsaWNrLmxlZnQsYS5sZWZ0 K2Eud2lkdGgvMixhLndpZHRoKTt2YXIgYz10aGlzLl9nZXREcmFnVmVydGljYWxE aXJlY3Rpb24oKSxlPXRoaXMuX2dldERyYWdIb3Jpem9udGFsRGlyZWN0aW9uKCk7 cmV0dXJuIHRoaXMuZmxvYXRpbmcmJmU/ZT09InJpZ2h0IiYmYXx8ZT09ImxlZnQi JiYhYTpjJiYoYz09ImRvd24iJiZifHxjPT0idXAiJiYhYil9LF9nZXREcmFnVmVy dGljYWxEaXJlY3Rpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBvc2l0aW9uQWJz LnRvcC10aGlzLmxhc3RQb3NpdGlvbkFicy50b3A7cmV0dXJuIGEhPTAmJihhPjA/ ImRvd24iOiJ1cCIpfSxfZ2V0RHJhZ0hvcml6b250YWxEaXJlY3Rpb246ZnVuY3Rp b24oKXt2YXIgYT0KdGhpcy5wb3NpdGlvbkFicy5sZWZ0LXRoaXMubGFzdFBvc2l0 aW9uQWJzLmxlZnQ7cmV0dXJuIGEhPTAmJihhPjA/InJpZ2h0IjoibGVmdCIpfSxy ZWZyZXNoOmZ1bmN0aW9uKGEpe3RoaXMuX3JlZnJlc2hJdGVtcyhhKTt0aGlzLnJl ZnJlc2hQb3NpdGlvbnMoKTtyZXR1cm4gdGhpc30sX2Nvbm5lY3RXaXRoOmZ1bmN0 aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zO3JldHVybiBhLmNvbm5lY3RXaXRoLmNv bnN0cnVjdG9yPT1TdHJpbmc/W2EuY29ubmVjdFdpdGhdOmEuY29ubmVjdFdpdGh9 LF9nZXRJdGVtc0FzalF1ZXJ5OmZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9W10sZT10 aGlzLl9jb25uZWN0V2l0aCgpO2lmKGUmJmEpZm9yKGE9ZS5sZW5ndGgtMTthPj0w O2EtLSlmb3IodmFyIGY9ZChlW2FdKSxnPWYubGVuZ3RoLTE7Zz49MDtnLS0pe3Zh ciBoPWQuZGF0YShmW2ddLCJzb3J0YWJsZSIpO2lmKGgmJmghPXRoaXMmJiFoLm9w dGlvbnMuZGlzYWJsZWQpYy5wdXNoKFtkLmlzRnVuY3Rpb24oaC5vcHRpb25zLml0 ZW1zKT8KaC5vcHRpb25zLml0ZW1zLmNhbGwoaC5lbGVtZW50KTpkKGgub3B0aW9u cy5pdGVtcyxoLmVsZW1lbnQpLm5vdCgiLnVpLXNvcnRhYmxlLWhlbHBlciIpLm5v dCgiLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyIiksaF0pfWMucHVzaChbZC5pc0Z1 bmN0aW9uKHRoaXMub3B0aW9ucy5pdGVtcyk/dGhpcy5vcHRpb25zLml0ZW1zLmNh bGwodGhpcy5lbGVtZW50LG51bGwse29wdGlvbnM6dGhpcy5vcHRpb25zLGl0ZW06 dGhpcy5jdXJyZW50SXRlbX0pOmQodGhpcy5vcHRpb25zLml0ZW1zLHRoaXMuZWxl bWVudCkubm90KCIudWktc29ydGFibGUtaGVscGVyIikubm90KCIudWktc29ydGFi bGUtcGxhY2Vob2xkZXIiKSx0aGlzXSk7Zm9yKGE9Yy5sZW5ndGgtMTthPj0wO2Et LSljW2FdWzBdLmVhY2goZnVuY3Rpb24oKXtiLnB1c2godGhpcyl9KTtyZXR1cm4g ZChiKX0sX3JlbW92ZUN1cnJlbnRzRnJvbUl0ZW1zOmZ1bmN0aW9uKCl7Zm9yKHZh ciBhPXRoaXMuY3VycmVudEl0ZW0uZmluZCgiOmRhdGEoc29ydGFibGUtaXRlbSki KSwKYj0wO2I8dGhpcy5pdGVtcy5sZW5ndGg7YisrKWZvcih2YXIgYz0wO2M8YS5s ZW5ndGg7YysrKWFbY109PXRoaXMuaXRlbXNbYl0uaXRlbVswXSYmdGhpcy5pdGVt cy5zcGxpY2UoYiwxKX0sX3JlZnJlc2hJdGVtczpmdW5jdGlvbihhKXt0aGlzLml0 ZW1zPVtdO3RoaXMuY29udGFpbmVycz1bdGhpc107dmFyIGI9dGhpcy5pdGVtcyxj PVtbZC5pc0Z1bmN0aW9uKHRoaXMub3B0aW9ucy5pdGVtcyk/dGhpcy5vcHRpb25z Lml0ZW1zLmNhbGwodGhpcy5lbGVtZW50WzBdLGEse2l0ZW06dGhpcy5jdXJyZW50 SXRlbX0pOmQodGhpcy5vcHRpb25zLml0ZW1zLHRoaXMuZWxlbWVudCksdGhpc11d LGU9dGhpcy5fY29ubmVjdFdpdGgoKTtpZihlKWZvcih2YXIgZj1lLmxlbmd0aC0x O2Y+PTA7Zi0tKWZvcih2YXIgZz1kKGVbZl0pLGg9Zy5sZW5ndGgtMTtoPj0wO2gt LSl7dmFyIGk9ZC5kYXRhKGdbaF0sInNvcnRhYmxlIik7aWYoaSYmaSE9dGhpcyYm IWkub3B0aW9ucy5kaXNhYmxlZCl7Yy5wdXNoKFtkLmlzRnVuY3Rpb24oaS5vcHRp b25zLml0ZW1zKT8KaS5vcHRpb25zLml0ZW1zLmNhbGwoaS5lbGVtZW50WzBdLGEs e2l0ZW06dGhpcy5jdXJyZW50SXRlbX0pOmQoaS5vcHRpb25zLml0ZW1zLGkuZWxl bWVudCksaV0pO3RoaXMuY29udGFpbmVycy5wdXNoKGkpfX1mb3IoZj1jLmxlbmd0 aC0xO2Y+PTA7Zi0tKXthPWNbZl1bMV07ZT1jW2ZdWzBdO2g9MDtmb3IoZz1lLmxl bmd0aDtoPGc7aCsrKXtpPWQoZVtoXSk7aS5kYXRhKCJzb3J0YWJsZS1pdGVtIixh KTtiLnB1c2goe2l0ZW06aSxpbnN0YW5jZTphLHdpZHRoOjAsaGVpZ2h0OjAsbGVm dDowLHRvcDowfSl9fX0scmVmcmVzaFBvc2l0aW9uczpmdW5jdGlvbihhKXtpZih0 aGlzLm9mZnNldFBhcmVudCYmdGhpcy5oZWxwZXIpdGhpcy5vZmZzZXQucGFyZW50 PXRoaXMuX2dldFBhcmVudE9mZnNldCgpO2Zvcih2YXIgYj10aGlzLml0ZW1zLmxl bmd0aC0xO2I+PTA7Yi0tKXt2YXIgYz10aGlzLml0ZW1zW2JdLGU9dGhpcy5vcHRp b25zLnRvbGVyYW5jZUVsZW1lbnQ/ZCh0aGlzLm9wdGlvbnMudG9sZXJhbmNlRWxl bWVudCwKYy5pdGVtKTpjLml0ZW07aWYoIWEpe2Mud2lkdGg9ZS5vdXRlcldpZHRo KCk7Yy5oZWlnaHQ9ZS5vdXRlckhlaWdodCgpfWU9ZS5vZmZzZXQoKTtjLmxlZnQ9 ZS5sZWZ0O2MudG9wPWUudG9wfWlmKHRoaXMub3B0aW9ucy5jdXN0b20mJnRoaXMu b3B0aW9ucy5jdXN0b20ucmVmcmVzaENvbnRhaW5lcnMpdGhpcy5vcHRpb25zLmN1 c3RvbS5yZWZyZXNoQ29udGFpbmVycy5jYWxsKHRoaXMpO2Vsc2UgZm9yKGI9dGhp cy5jb250YWluZXJzLmxlbmd0aC0xO2I+PTA7Yi0tKXtlPXRoaXMuY29udGFpbmVy c1tiXS5lbGVtZW50Lm9mZnNldCgpO3RoaXMuY29udGFpbmVyc1tiXS5jb250YWlu ZXJDYWNoZS5sZWZ0PWUubGVmdDt0aGlzLmNvbnRhaW5lcnNbYl0uY29udGFpbmVy Q2FjaGUudG9wPWUudG9wO3RoaXMuY29udGFpbmVyc1tiXS5jb250YWluZXJDYWNo ZS53aWR0aD10aGlzLmNvbnRhaW5lcnNbYl0uZWxlbWVudC5vdXRlcldpZHRoKCk7 dGhpcy5jb250YWluZXJzW2JdLmNvbnRhaW5lckNhY2hlLmhlaWdodD0KdGhpcy5j b250YWluZXJzW2JdLmVsZW1lbnQub3V0ZXJIZWlnaHQoKX1yZXR1cm4gdGhpc30s X2NyZWF0ZVBsYWNlaG9sZGVyOmZ1bmN0aW9uKGEpe3ZhciBiPWF8fHRoaXMsYz1i Lm9wdGlvbnM7aWYoIWMucGxhY2Vob2xkZXJ8fGMucGxhY2Vob2xkZXIuY29uc3Ry dWN0b3I9PVN0cmluZyl7dmFyIGU9Yy5wbGFjZWhvbGRlcjtjLnBsYWNlaG9sZGVy PXtlbGVtZW50OmZ1bmN0aW9uKCl7dmFyIGY9ZChkb2N1bWVudC5jcmVhdGVFbGVt ZW50KGIuY3VycmVudEl0ZW1bMF0ubm9kZU5hbWUpKS5hZGRDbGFzcyhlfHxiLmN1 cnJlbnRJdGVtWzBdLmNsYXNzTmFtZSsiIHVpLXNvcnRhYmxlLXBsYWNlaG9sZGVy IikucmVtb3ZlQ2xhc3MoInVpLXNvcnRhYmxlLWhlbHBlciIpWzBdO2lmKCFlKWYu c3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIjtyZXR1cm4gZn0sdXBkYXRlOmZ1bmN0 aW9uKGYsZyl7aWYoIShlJiYhYy5mb3JjZVBsYWNlaG9sZGVyU2l6ZSkpe2cuaGVp Z2h0KCl8fGcuaGVpZ2h0KGIuY3VycmVudEl0ZW0uaW5uZXJIZWlnaHQoKS0KcGFy c2VJbnQoYi5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdUb3AiKXx8MCwxMCktcGFy c2VJbnQoYi5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdCb3R0b20iKXx8MCwxMCkp O2cud2lkdGgoKXx8Zy53aWR0aChiLmN1cnJlbnRJdGVtLmlubmVyV2lkdGgoKS1w YXJzZUludChiLmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ0xlZnQiKXx8MCwxMCkt cGFyc2VJbnQoYi5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdSaWdodCIpfHwwLDEw KSl9fX19Yi5wbGFjZWhvbGRlcj1kKGMucGxhY2Vob2xkZXIuZWxlbWVudC5jYWxs KGIuZWxlbWVudCxiLmN1cnJlbnRJdGVtKSk7Yi5jdXJyZW50SXRlbS5hZnRlcihi LnBsYWNlaG9sZGVyKTtjLnBsYWNlaG9sZGVyLnVwZGF0ZShiLGIucGxhY2Vob2xk ZXIpfSxfY29udGFjdENvbnRhaW5lcnM6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPW51 bGwsYz1udWxsLGU9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO2U+PTA7ZS0tKWlm KCFkLnVpLmNvbnRhaW5zKHRoaXMuY3VycmVudEl0ZW1bMF0sCnRoaXMuY29udGFp bmVyc1tlXS5lbGVtZW50WzBdKSlpZih0aGlzLl9pbnRlcnNlY3RzV2l0aCh0aGlz LmNvbnRhaW5lcnNbZV0uY29udGFpbmVyQ2FjaGUpKXtpZighKGImJmQudWkuY29u dGFpbnModGhpcy5jb250YWluZXJzW2VdLmVsZW1lbnRbMF0sYi5lbGVtZW50WzBd KSkpe2I9dGhpcy5jb250YWluZXJzW2VdO2M9ZX19ZWxzZSBpZih0aGlzLmNvbnRh aW5lcnNbZV0uY29udGFpbmVyQ2FjaGUub3Zlcil7dGhpcy5jb250YWluZXJzW2Vd Ll90cmlnZ2VyKCJvdXQiLGEsdGhpcy5fdWlIYXNoKHRoaXMpKTt0aGlzLmNvbnRh aW5lcnNbZV0uY29udGFpbmVyQ2FjaGUub3Zlcj0wfWlmKGIpaWYodGhpcy5jb250 YWluZXJzLmxlbmd0aD09PTEpe3RoaXMuY29udGFpbmVyc1tjXS5fdHJpZ2dlcigi b3ZlciIsYSx0aGlzLl91aUhhc2godGhpcykpO3RoaXMuY29udGFpbmVyc1tjXS5j b250YWluZXJDYWNoZS5vdmVyPTF9ZWxzZSBpZih0aGlzLmN1cnJlbnRDb250YWlu ZXIhPXRoaXMuY29udGFpbmVyc1tjXSl7Yj0KMUU0O2U9bnVsbDtmb3IodmFyIGY9 dGhpcy5wb3NpdGlvbkFic1t0aGlzLmNvbnRhaW5lcnNbY10uZmxvYXRpbmc/Imxl ZnQiOiJ0b3AiXSxnPXRoaXMuaXRlbXMubGVuZ3RoLTE7Zz49MDtnLS0paWYoZC51 aS5jb250YWlucyh0aGlzLmNvbnRhaW5lcnNbY10uZWxlbWVudFswXSx0aGlzLml0 ZW1zW2ddLml0ZW1bMF0pKXt2YXIgaD10aGlzLml0ZW1zW2ddW3RoaXMuY29udGFp bmVyc1tjXS5mbG9hdGluZz8ibGVmdCI6InRvcCJdO2lmKE1hdGguYWJzKGgtZik8 Yil7Yj1NYXRoLmFicyhoLWYpO2U9dGhpcy5pdGVtc1tnXX19aWYoZXx8dGhpcy5v cHRpb25zLmRyb3BPbkVtcHR5KXt0aGlzLmN1cnJlbnRDb250YWluZXI9dGhpcy5j b250YWluZXJzW2NdO2U/dGhpcy5fcmVhcnJhbmdlKGEsZSxudWxsLHRydWUpOnRo aXMuX3JlYXJyYW5nZShhLG51bGwsdGhpcy5jb250YWluZXJzW2NdLmVsZW1lbnQs dHJ1ZSk7dGhpcy5fdHJpZ2dlcigiY2hhbmdlIixhLHRoaXMuX3VpSGFzaCgpKTt0 aGlzLmNvbnRhaW5lcnNbY10uX3RyaWdnZXIoImNoYW5nZSIsCmEsdGhpcy5fdWlI YXNoKHRoaXMpKTt0aGlzLm9wdGlvbnMucGxhY2Vob2xkZXIudXBkYXRlKHRoaXMu Y3VycmVudENvbnRhaW5lcix0aGlzLnBsYWNlaG9sZGVyKTt0aGlzLmNvbnRhaW5l cnNbY10uX3RyaWdnZXIoIm92ZXIiLGEsdGhpcy5fdWlIYXNoKHRoaXMpKTt0aGlz LmNvbnRhaW5lcnNbY10uY29udGFpbmVyQ2FjaGUub3Zlcj0xfX19LF9jcmVhdGVI ZWxwZXI6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5vcHRpb25zO2E9ZC5pc0Z1bmN0 aW9uKGIuaGVscGVyKT9kKGIuaGVscGVyLmFwcGx5KHRoaXMuZWxlbWVudFswXSxb YSx0aGlzLmN1cnJlbnRJdGVtXSkpOmIuaGVscGVyPT0iY2xvbmUiP3RoaXMuY3Vy cmVudEl0ZW0uY2xvbmUoKTp0aGlzLmN1cnJlbnRJdGVtO2EucGFyZW50cygiYm9k eSIpLmxlbmd0aHx8ZChiLmFwcGVuZFRvIT0icGFyZW50Ij9iLmFwcGVuZFRvOnRo aXMuY3VycmVudEl0ZW1bMF0ucGFyZW50Tm9kZSlbMF0uYXBwZW5kQ2hpbGQoYVsw XSk7aWYoYVswXT09CnRoaXMuY3VycmVudEl0ZW1bMF0pdGhpcy5fc3RvcmVkQ1NT PXt3aWR0aDp0aGlzLmN1cnJlbnRJdGVtWzBdLnN0eWxlLndpZHRoLGhlaWdodDp0 aGlzLmN1cnJlbnRJdGVtWzBdLnN0eWxlLmhlaWdodCxwb3NpdGlvbjp0aGlzLmN1 cnJlbnRJdGVtLmNzcygicG9zaXRpb24iKSx0b3A6dGhpcy5jdXJyZW50SXRlbS5j c3MoInRvcCIpLGxlZnQ6dGhpcy5jdXJyZW50SXRlbS5jc3MoImxlZnQiKX07aWYo YVswXS5zdHlsZS53aWR0aD09IiJ8fGIuZm9yY2VIZWxwZXJTaXplKWEud2lkdGgo dGhpcy5jdXJyZW50SXRlbS53aWR0aCgpKTtpZihhWzBdLnN0eWxlLmhlaWdodD09 IiJ8fGIuZm9yY2VIZWxwZXJTaXplKWEuaGVpZ2h0KHRoaXMuY3VycmVudEl0ZW0u aGVpZ2h0KCkpO3JldHVybiBhfSxfYWRqdXN0T2Zmc2V0RnJvbUhlbHBlcjpmdW5j dGlvbihhKXtpZih0eXBlb2YgYT09InN0cmluZyIpYT1hLnNwbGl0KCIgIik7aWYo ZC5pc0FycmF5KGEpKWE9e2xlZnQ6K2FbMF0sdG9wOithWzFdfHwKMH07aWYoImxl ZnQiaW4gYSl0aGlzLm9mZnNldC5jbGljay5sZWZ0PWEubGVmdCt0aGlzLm1hcmdp bnMubGVmdDtpZigicmlnaHQiaW4gYSl0aGlzLm9mZnNldC5jbGljay5sZWZ0PXRo aXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtYS5yaWdodCt0aGlzLm1hcmdpbnMu bGVmdDtpZigidG9wImluIGEpdGhpcy5vZmZzZXQuY2xpY2sudG9wPWEudG9wK3Ro aXMubWFyZ2lucy50b3A7aWYoImJvdHRvbSJpbiBhKXRoaXMub2Zmc2V0LmNsaWNr LnRvcD10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC1hLmJvdHRvbSt0aGlz Lm1hcmdpbnMudG9wfSxfZ2V0UGFyZW50T2Zmc2V0OmZ1bmN0aW9uKCl7dGhpcy5v ZmZzZXRQYXJlbnQ9dGhpcy5oZWxwZXIub2Zmc2V0UGFyZW50KCk7dmFyIGE9dGhp cy5vZmZzZXRQYXJlbnQub2Zmc2V0KCk7aWYodGhpcy5jc3NQb3NpdGlvbj09ImFi c29sdXRlIiYmdGhpcy5zY3JvbGxQYXJlbnRbMF0hPWRvY3VtZW50JiZkLnVpLmNv bnRhaW5zKHRoaXMuc2Nyb2xsUGFyZW50WzBdLAp0aGlzLm9mZnNldFBhcmVudFsw XSkpe2EubGVmdCs9dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpO2EudG9w Kz10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKX1pZih0aGlzLm9mZnNldFBh cmVudFswXT09ZG9jdW1lbnQuYm9keXx8dGhpcy5vZmZzZXRQYXJlbnRbMF0udGFn TmFtZSYmdGhpcy5vZmZzZXRQYXJlbnRbMF0udGFnTmFtZS50b0xvd2VyQ2FzZSgp PT0iaHRtbCImJmQuYnJvd3Nlci5tc2llKWE9e3RvcDowLGxlZnQ6MH07cmV0dXJu e3RvcDphLnRvcCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3Jk ZXJUb3BXaWR0aCIpLDEwKXx8MCksbGVmdDphLmxlZnQrKHBhcnNlSW50KHRoaXMu b2Zmc2V0UGFyZW50LmNzcygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKX19LF9n ZXRSZWxhdGl2ZU9mZnNldDpmdW5jdGlvbigpe2lmKHRoaXMuY3NzUG9zaXRpb249 PSJyZWxhdGl2ZSIpe3ZhciBhPXRoaXMuY3VycmVudEl0ZW0ucG9zaXRpb24oKTty ZXR1cm57dG9wOmEudG9wLQoocGFyc2VJbnQodGhpcy5oZWxwZXIuY3NzKCJ0b3Ai KSwxMCl8fDApK3RoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpLGxlZnQ6YS5s ZWZ0LShwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoImxlZnQiKSwxMCl8fDApK3Ro aXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKX19ZWxzZSByZXR1cm57dG9wOjAs bGVmdDowfX0sX2NhY2hlTWFyZ2luczpmdW5jdGlvbigpe3RoaXMubWFyZ2lucz17 bGVmdDpwYXJzZUludCh0aGlzLmN1cnJlbnRJdGVtLmNzcygibWFyZ2luTGVmdCIp LDEwKXx8MCx0b3A6cGFyc2VJbnQodGhpcy5jdXJyZW50SXRlbS5jc3MoIm1hcmdp blRvcCIpLDEwKXx8MH19LF9jYWNoZUhlbHBlclByb3BvcnRpb25zOmZ1bmN0aW9u KCl7dGhpcy5oZWxwZXJQcm9wb3J0aW9ucz17d2lkdGg6dGhpcy5oZWxwZXIub3V0 ZXJXaWR0aCgpLGhlaWdodDp0aGlzLmhlbHBlci5vdXRlckhlaWdodCgpfX0sX3Nl dENvbnRhaW5tZW50OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zOwppZihh LmNvbnRhaW5tZW50PT0icGFyZW50IilhLmNvbnRhaW5tZW50PXRoaXMuaGVscGVy WzBdLnBhcmVudE5vZGU7aWYoYS5jb250YWlubWVudD09ImRvY3VtZW50Inx8YS5j b250YWlubWVudD09IndpbmRvdyIpdGhpcy5jb250YWlubWVudD1bMC10aGlzLm9m ZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0LDAtdGhp cy5vZmZzZXQucmVsYXRpdmUudG9wLXRoaXMub2Zmc2V0LnBhcmVudC50b3AsZChh LmNvbnRhaW5tZW50PT0iZG9jdW1lbnQiP2RvY3VtZW50OndpbmRvdykud2lkdGgo KS10aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLXRoaXMubWFyZ2lucy5sZWZ0 LChkKGEuY29udGFpbm1lbnQ9PSJkb2N1bWVudCI/ZG9jdW1lbnQ6d2luZG93KS5o ZWlnaHQoKXx8ZG9jdW1lbnQuYm9keS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodCkt dGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF07 aWYoIS9eKGRvY3VtZW50fHdpbmRvd3xwYXJlbnQpJC8udGVzdChhLmNvbnRhaW5t ZW50KSl7dmFyIGI9CmQoYS5jb250YWlubWVudClbMF07YT1kKGEuY29udGFpbm1l bnQpLm9mZnNldCgpO3ZhciBjPWQoYikuY3NzKCJvdmVyZmxvdyIpIT0iaGlkZGVu Ijt0aGlzLmNvbnRhaW5tZW50PVthLmxlZnQrKHBhcnNlSW50KGQoYikuY3NzKCJi b3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApKyhwYXJzZUludChkKGIpLmNzcygicGFk ZGluZ0xlZnQiKSwxMCl8fDApLXRoaXMubWFyZ2lucy5sZWZ0LGEudG9wKyhwYXJz ZUludChkKGIpLmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8fDApKyhwYXJzZUlu dChkKGIpLmNzcygicGFkZGluZ1RvcCIpLDEwKXx8MCktdGhpcy5tYXJnaW5zLnRv cCxhLmxlZnQrKGM/TWF0aC5tYXgoYi5zY3JvbGxXaWR0aCxiLm9mZnNldFdpZHRo KTpiLm9mZnNldFdpZHRoKS0ocGFyc2VJbnQoZChiKS5jc3MoImJvcmRlckxlZnRX aWR0aCIpLDEwKXx8MCktKHBhcnNlSW50KGQoYikuY3NzKCJwYWRkaW5nUmlnaHQi KSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtCnRoaXMubWFy Z2lucy5sZWZ0LGEudG9wKyhjP01hdGgubWF4KGIuc2Nyb2xsSGVpZ2h0LGIub2Zm c2V0SGVpZ2h0KTpiLm9mZnNldEhlaWdodCktKHBhcnNlSW50KGQoYikuY3NzKCJi b3JkZXJUb3BXaWR0aCIpLDEwKXx8MCktKHBhcnNlSW50KGQoYikuY3NzKCJwYWRk aW5nQm90dG9tIiksMTApfHwwKS10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdo dC10aGlzLm1hcmdpbnMudG9wXX19LF9jb252ZXJ0UG9zaXRpb25UbzpmdW5jdGlv bihhLGIpe2lmKCFiKWI9dGhpcy5wb3NpdGlvbjthPWE9PSJhYnNvbHV0ZSI/MTot MTt2YXIgYz10aGlzLmNzc1Bvc2l0aW9uPT0iYWJzb2x1dGUiJiYhKHRoaXMuc2Ny b2xsUGFyZW50WzBdIT1kb2N1bWVudCYmZC51aS5jb250YWlucyh0aGlzLnNjcm9s bFBhcmVudFswXSx0aGlzLm9mZnNldFBhcmVudFswXSkpP3RoaXMub2Zmc2V0UGFy ZW50OnRoaXMuc2Nyb2xsUGFyZW50LGU9LyhodG1sfGJvZHkpL2kudGVzdChjWzBd LnRhZ05hbWUpO3JldHVybnt0b3A6Yi50b3ArCnRoaXMub2Zmc2V0LnJlbGF0aXZl LnRvcCphK3RoaXMub2Zmc2V0LnBhcmVudC50b3AqYS0oZC5icm93c2VyLnNhZmFy aSYmdGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8wOih0aGlzLmNzc1Bvc2l0aW9u PT0iZml4ZWQiPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKTplPzA6Yy5z Y3JvbGxUb3AoKSkqYSksbGVmdDpiLmxlZnQrdGhpcy5vZmZzZXQucmVsYXRpdmUu bGVmdCphK3RoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KmEtKGQuYnJvd3Nlci5zYWZh cmkmJnRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/MDoodGhpcy5jc3NQb3NpdGlv bj09ImZpeGVkIj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpOmU/MDpj LnNjcm9sbExlZnQoKSkqYSl9fSxfZ2VuZXJhdGVQb3NpdGlvbjpmdW5jdGlvbihh KXt2YXIgYj10aGlzLm9wdGlvbnMsYz10aGlzLmNzc1Bvc2l0aW9uPT0iYWJzb2x1 dGUiJiYhKHRoaXMuc2Nyb2xsUGFyZW50WzBdIT1kb2N1bWVudCYmZC51aS5jb250 YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSwKdGhpcy5vZmZzZXRQYXJlbnRbMF0p KT90aGlzLm9mZnNldFBhcmVudDp0aGlzLnNjcm9sbFBhcmVudCxlPS8oaHRtbHxi b2R5KS9pLnRlc3QoY1swXS50YWdOYW1lKTtpZih0aGlzLmNzc1Bvc2l0aW9uPT0i cmVsYXRpdmUiJiYhKHRoaXMuc2Nyb2xsUGFyZW50WzBdIT1kb2N1bWVudCYmdGhp cy5zY3JvbGxQYXJlbnRbMF0hPXRoaXMub2Zmc2V0UGFyZW50WzBdKSl0aGlzLm9m ZnNldC5yZWxhdGl2ZT10aGlzLl9nZXRSZWxhdGl2ZU9mZnNldCgpO3ZhciBmPWEu cGFnZVgsZz1hLnBhZ2VZO2lmKHRoaXMub3JpZ2luYWxQb3NpdGlvbil7aWYodGhp cy5jb250YWlubWVudCl7aWYoYS5wYWdlWC10aGlzLm9mZnNldC5jbGljay5sZWZ0 PHRoaXMuY29udGFpbm1lbnRbMF0pZj10aGlzLmNvbnRhaW5tZW50WzBdK3RoaXMu b2Zmc2V0LmNsaWNrLmxlZnQ7aWYoYS5wYWdlWS10aGlzLm9mZnNldC5jbGljay50 b3A8dGhpcy5jb250YWlubWVudFsxXSlnPXRoaXMuY29udGFpbm1lbnRbMV0rdGhp cy5vZmZzZXQuY2xpY2sudG9wOwppZihhLnBhZ2VYLXRoaXMub2Zmc2V0LmNsaWNr LmxlZnQ+dGhpcy5jb250YWlubWVudFsyXSlmPXRoaXMuY29udGFpbm1lbnRbMl0r dGhpcy5vZmZzZXQuY2xpY2subGVmdDtpZihhLnBhZ2VZLXRoaXMub2Zmc2V0LmNs aWNrLnRvcD50aGlzLmNvbnRhaW5tZW50WzNdKWc9dGhpcy5jb250YWlubWVudFsz XSt0aGlzLm9mZnNldC5jbGljay50b3B9aWYoYi5ncmlkKXtnPXRoaXMub3JpZ2lu YWxQYWdlWStNYXRoLnJvdW5kKChnLXRoaXMub3JpZ2luYWxQYWdlWSkvYi5ncmlk WzFdKSpiLmdyaWRbMV07Zz10aGlzLmNvbnRhaW5tZW50PyEoZy10aGlzLm9mZnNl dC5jbGljay50b3A8dGhpcy5jb250YWlubWVudFsxXXx8Zy10aGlzLm9mZnNldC5j bGljay50b3A+dGhpcy5jb250YWlubWVudFszXSk/ZzohKGctdGhpcy5vZmZzZXQu Y2xpY2sudG9wPHRoaXMuY29udGFpbm1lbnRbMV0pP2ctYi5ncmlkWzFdOmcrYi5n cmlkWzFdOmc7Zj10aGlzLm9yaWdpbmFsUGFnZVgrTWF0aC5yb3VuZCgoZi0KdGhp cy5vcmlnaW5hbFBhZ2VYKS9iLmdyaWRbMF0pKmIuZ3JpZFswXTtmPXRoaXMuY29u dGFpbm1lbnQ/IShmLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8dGhpcy5jb250YWlu bWVudFswXXx8Zi10aGlzLm9mZnNldC5jbGljay5sZWZ0PnRoaXMuY29udGFpbm1l bnRbMl0pP2Y6IShmLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8dGhpcy5jb250YWlu bWVudFswXSk/Zi1iLmdyaWRbMF06ZitiLmdyaWRbMF06Zn19cmV0dXJue3RvcDpn LXRoaXMub2Zmc2V0LmNsaWNrLnRvcC10aGlzLm9mZnNldC5yZWxhdGl2ZS50b3At dGhpcy5vZmZzZXQucGFyZW50LnRvcCsoZC5icm93c2VyLnNhZmFyaSYmdGhpcy5j c3NQb3NpdGlvbj09ImZpeGVkIj8wOnRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/ LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpOmU/MDpjLnNjcm9sbFRvcCgp KSxsZWZ0OmYtdGhpcy5vZmZzZXQuY2xpY2subGVmdC10aGlzLm9mZnNldC5yZWxh dGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KwooZC5icm93c2VyLnNh ZmFyaSYmdGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8wOnRoaXMuY3NzUG9zaXRp b249PSJmaXhlZCI/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKTplPzA6 Yy5zY3JvbGxMZWZ0KCkpfX0sX3JlYXJyYW5nZTpmdW5jdGlvbihhLGIsYyxlKXtj P2NbMF0uYXBwZW5kQ2hpbGQodGhpcy5wbGFjZWhvbGRlclswXSk6Yi5pdGVtWzBd LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMucGxhY2Vob2xkZXJbMF0sdGhp cy5kaXJlY3Rpb249PSJkb3duIj9iLml0ZW1bMF06Yi5pdGVtWzBdLm5leHRTaWJs aW5nKTt0aGlzLmNvdW50ZXI9dGhpcy5jb3VudGVyPysrdGhpcy5jb3VudGVyOjE7 dmFyIGY9dGhpcyxnPXRoaXMuY291bnRlcjt3aW5kb3cuc2V0VGltZW91dChmdW5j dGlvbigpe2c9PWYuY291bnRlciYmZi5yZWZyZXNoUG9zaXRpb25zKCFlKX0sMCl9 LF9jbGVhcjpmdW5jdGlvbihhLGIpe3RoaXMucmV2ZXJ0aW5nPWZhbHNlO3ZhciBj PVtdOyF0aGlzLl9ub0ZpbmFsU29ydCYmCnRoaXMuY3VycmVudEl0ZW1bMF0ucGFy ZW50Tm9kZSYmdGhpcy5wbGFjZWhvbGRlci5iZWZvcmUodGhpcy5jdXJyZW50SXRl bSk7dGhpcy5fbm9GaW5hbFNvcnQ9bnVsbDtpZih0aGlzLmhlbHBlclswXT09dGhp cy5jdXJyZW50SXRlbVswXSl7Zm9yKHZhciBlIGluIHRoaXMuX3N0b3JlZENTUylp Zih0aGlzLl9zdG9yZWRDU1NbZV09PSJhdXRvInx8dGhpcy5fc3RvcmVkQ1NTW2Vd PT0ic3RhdGljIil0aGlzLl9zdG9yZWRDU1NbZV09IiI7dGhpcy5jdXJyZW50SXRl bS5jc3ModGhpcy5fc3RvcmVkQ1NTKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUt aGVscGVyIil9ZWxzZSB0aGlzLmN1cnJlbnRJdGVtLnNob3coKTt0aGlzLmZyb21P dXRzaWRlJiYhYiYmYy5wdXNoKGZ1bmN0aW9uKGYpe3RoaXMuX3RyaWdnZXIoInJl Y2VpdmUiLGYsdGhpcy5fdWlIYXNoKHRoaXMuZnJvbU91dHNpZGUpKX0pO2lmKCh0 aGlzLmZyb21PdXRzaWRlfHx0aGlzLmRvbVBvc2l0aW9uLnByZXYhPXRoaXMuY3Vy cmVudEl0ZW0ucHJldigpLm5vdCgiLnVpLXNvcnRhYmxlLWhlbHBlciIpWzBdfHwK dGhpcy5kb21Qb3NpdGlvbi5wYXJlbnQhPXRoaXMuY3VycmVudEl0ZW0ucGFyZW50 KClbMF0pJiYhYiljLnB1c2goZnVuY3Rpb24oZil7dGhpcy5fdHJpZ2dlcigidXBk YXRlIixmLHRoaXMuX3VpSGFzaCgpKX0pO2lmKCFkLnVpLmNvbnRhaW5zKHRoaXMu ZWxlbWVudFswXSx0aGlzLmN1cnJlbnRJdGVtWzBdKSl7Ynx8Yy5wdXNoKGZ1bmN0 aW9uKGYpe3RoaXMuX3RyaWdnZXIoInJlbW92ZSIsZix0aGlzLl91aUhhc2goKSl9 KTtmb3IoZT10aGlzLmNvbnRhaW5lcnMubGVuZ3RoLTE7ZT49MDtlLS0paWYoZC51 aS5jb250YWlucyh0aGlzLmNvbnRhaW5lcnNbZV0uZWxlbWVudFswXSx0aGlzLmN1 cnJlbnRJdGVtWzBdKSYmIWIpe2MucHVzaChmdW5jdGlvbihmKXtyZXR1cm4gZnVu Y3Rpb24oZyl7Zi5fdHJpZ2dlcigicmVjZWl2ZSIsZyx0aGlzLl91aUhhc2godGhp cykpfX0uY2FsbCh0aGlzLHRoaXMuY29udGFpbmVyc1tlXSkpO2MucHVzaChmdW5j dGlvbihmKXtyZXR1cm4gZnVuY3Rpb24oZyl7Zi5fdHJpZ2dlcigidXBkYXRlIiwK Zyx0aGlzLl91aUhhc2godGhpcykpfX0uY2FsbCh0aGlzLHRoaXMuY29udGFpbmVy c1tlXSkpfX1mb3IoZT10aGlzLmNvbnRhaW5lcnMubGVuZ3RoLTE7ZT49MDtlLS0p e2J8fGMucHVzaChmdW5jdGlvbihmKXtyZXR1cm4gZnVuY3Rpb24oZyl7Zi5fdHJp Z2dlcigiZGVhY3RpdmF0ZSIsZyx0aGlzLl91aUhhc2godGhpcykpfX0uY2FsbCh0 aGlzLHRoaXMuY29udGFpbmVyc1tlXSkpO2lmKHRoaXMuY29udGFpbmVyc1tlXS5j b250YWluZXJDYWNoZS5vdmVyKXtjLnB1c2goZnVuY3Rpb24oZil7cmV0dXJuIGZ1 bmN0aW9uKGcpe2YuX3RyaWdnZXIoIm91dCIsZyx0aGlzLl91aUhhc2godGhpcykp fX0uY2FsbCh0aGlzLHRoaXMuY29udGFpbmVyc1tlXSkpO3RoaXMuY29udGFpbmVy c1tlXS5jb250YWluZXJDYWNoZS5vdmVyPTB9fXRoaXMuX3N0b3JlZEN1cnNvciYm ZCgiYm9keSIpLmNzcygiY3Vyc29yIix0aGlzLl9zdG9yZWRDdXJzb3IpO3RoaXMu X3N0b3JlZE9wYWNpdHkmJnRoaXMuaGVscGVyLmNzcygib3BhY2l0eSIsCnRoaXMu X3N0b3JlZE9wYWNpdHkpO2lmKHRoaXMuX3N0b3JlZFpJbmRleCl0aGlzLmhlbHBl ci5jc3MoInpJbmRleCIsdGhpcy5fc3RvcmVkWkluZGV4PT0iYXV0byI/IiI6dGhp cy5fc3RvcmVkWkluZGV4KTt0aGlzLmRyYWdnaW5nPWZhbHNlO2lmKHRoaXMuY2Fu Y2VsSGVscGVyUmVtb3ZhbCl7aWYoIWIpe3RoaXMuX3RyaWdnZXIoImJlZm9yZVN0 b3AiLGEsdGhpcy5fdWlIYXNoKCkpO2ZvcihlPTA7ZTxjLmxlbmd0aDtlKyspY1tl XS5jYWxsKHRoaXMsYSk7dGhpcy5fdHJpZ2dlcigic3RvcCIsYSx0aGlzLl91aUhh c2goKSl9cmV0dXJuIGZhbHNlfWJ8fHRoaXMuX3RyaWdnZXIoImJlZm9yZVN0b3Ai LGEsdGhpcy5fdWlIYXNoKCkpO3RoaXMucGxhY2Vob2xkZXJbMF0ucGFyZW50Tm9k ZS5yZW1vdmVDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKTt0aGlzLmhlbHBlclsw XSE9dGhpcy5jdXJyZW50SXRlbVswXSYmdGhpcy5oZWxwZXIucmVtb3ZlKCk7dGhp cy5oZWxwZXI9bnVsbDtpZighYil7Zm9yKGU9CjA7ZTxjLmxlbmd0aDtlKyspY1tl XS5jYWxsKHRoaXMsYSk7dGhpcy5fdHJpZ2dlcigic3RvcCIsYSx0aGlzLl91aUhh c2goKSl9dGhpcy5mcm9tT3V0c2lkZT1mYWxzZTtyZXR1cm4gdHJ1ZX0sX3RyaWdn ZXI6ZnVuY3Rpb24oKXtkLldpZGdldC5wcm90b3R5cGUuX3RyaWdnZXIuYXBwbHko dGhpcyxhcmd1bWVudHMpPT09ZmFsc2UmJnRoaXMuY2FuY2VsKCl9LF91aUhhc2g6 ZnVuY3Rpb24oYSl7dmFyIGI9YXx8dGhpcztyZXR1cm57aGVscGVyOmIuaGVscGVy LHBsYWNlaG9sZGVyOmIucGxhY2Vob2xkZXJ8fGQoW10pLHBvc2l0aW9uOmIucG9z aXRpb24sb3JpZ2luYWxQb3NpdGlvbjpiLm9yaWdpbmFsUG9zaXRpb24sb2Zmc2V0 OmIucG9zaXRpb25BYnMsaXRlbTpiLmN1cnJlbnRJdGVtLHNlbmRlcjphP2EuZWxl bWVudDpudWxsfX19KTtkLmV4dGVuZChkLnVpLnNvcnRhYmxlLHt2ZXJzaW9uOiIx LjguMiJ9KX0pKGpRdWVyeSk7CjsvKgogKiBqUXVlcnkgVUkgQWNjb3JkaW9uIDEu OC4yCiAqCiAqIENvcHlyaWdodCAoYykgMjAxMCBBVVRIT1JTLnR4dCAoaHR0cDov L2pxdWVyeXVpLmNvbS9hYm91dCkKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUg TUlUIChNSVQtTElDRU5TRS50eHQpCiAqIGFuZCBHUEwgKEdQTC1MSUNFTlNFLnR4 dCkgbGljZW5zZXMuCiAqCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvQWNj b3JkaW9uCiAqCiAqIERlcGVuZHM6CiAqCWpxdWVyeS51aS5jb3JlLmpzCiAqCWpx dWVyeS51aS53aWRnZXQuanMKICovCihmdW5jdGlvbihjKXtjLndpZGdldCgidWku YWNjb3JkaW9uIix7b3B0aW9uczp7YWN0aXZlOjAsYW5pbWF0ZWQ6InNsaWRlIixh dXRvSGVpZ2h0OnRydWUsY2xlYXJTdHlsZTpmYWxzZSxjb2xsYXBzaWJsZTpmYWxz ZSxldmVudDoiY2xpY2siLGZpbGxTcGFjZTpmYWxzZSxoZWFkZXI6Ij4gbGkgPiA6 Zmlyc3QtY2hpbGQsPiA6bm90KGxpKTpldmVuIixpY29uczp7aGVhZGVyOiJ1aS1p Y29uLXRyaWFuZ2xlLTEtZSIsaGVhZGVyU2VsZWN0ZWQ6InVpLWljb24tdHJpYW5n bGUtMS1zIn0sbmF2aWdhdGlvbjpmYWxzZSxuYXZpZ2F0aW9uRmlsdGVyOmZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuaHJlZi50b0xvd2VyQ2FzZSgpPT1sb2NhdGlvbi5o cmVmLnRvTG93ZXJDYXNlKCl9fSxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIGE9dGhp cy5vcHRpb25zLGI9dGhpczt0aGlzLnJ1bm5pbmc9MDt0aGlzLmVsZW1lbnQuYWRk Q2xhc3MoInVpLWFjY29yZGlvbiB1aS13aWRnZXQgdWktaGVscGVyLXJlc2V0Iik7 CnRoaXMuZWxlbWVudC5jaGlsZHJlbigibGkiKS5hZGRDbGFzcygidWktYWNjb3Jk aW9uLWxpLWZpeCIpO3RoaXMuaGVhZGVycz10aGlzLmVsZW1lbnQuZmluZChhLmhl YWRlcikuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1oZWFkZXIgdWktaGVscGVyLXJl c2V0IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCIpLmJpbmQoIm1vdXNl ZW50ZXIuYWNjb3JkaW9uIixmdW5jdGlvbigpe2ModGhpcykuYWRkQ2xhc3MoInVp LXN0YXRlLWhvdmVyIil9KS5iaW5kKCJtb3VzZWxlYXZlLmFjY29yZGlvbiIsZnVu Y3Rpb24oKXtjKHRoaXMpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpfSku YmluZCgiZm9jdXMuYWNjb3JkaW9uIixmdW5jdGlvbigpe2ModGhpcykuYWRkQ2xh c3MoInVpLXN0YXRlLWZvY3VzIil9KS5iaW5kKCJibHVyLmFjY29yZGlvbiIsZnVu Y3Rpb24oKXtjKHRoaXMpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfSk7 dGhpcy5oZWFkZXJzLm5leHQoKS5hZGRDbGFzcygidWktYWNjb3JkaW9uLWNvbnRl bnQgdWktaGVscGVyLXJlc2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1i b3R0b20iKTsKaWYoYS5uYXZpZ2F0aW9uKXt2YXIgZD10aGlzLmVsZW1lbnQuZmlu ZCgiYSIpLmZpbHRlcihhLm5hdmlnYXRpb25GaWx0ZXIpO2lmKGQubGVuZ3RoKXt2 YXIgZj1kLmNsb3Nlc3QoIi51aS1hY2NvcmRpb24taGVhZGVyIik7dGhpcy5hY3Rp dmU9Zi5sZW5ndGg/ZjpkLmNsb3Nlc3QoIi51aS1hY2NvcmRpb24tY29udGVudCIp LnByZXYoKX19dGhpcy5hY3RpdmU9dGhpcy5fZmluZEFjdGl2ZSh0aGlzLmFjdGl2 ZXx8YS5hY3RpdmUpLnRvZ2dsZUNsYXNzKCJ1aS1zdGF0ZS1kZWZhdWx0IikudG9n Z2xlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLnRvZ2dsZUNsYXNzKCJ1aS1jb3Ju ZXItYWxsIikudG9nZ2xlQ2xhc3MoInVpLWNvcm5lci10b3AiKTt0aGlzLmFjdGl2 ZS5uZXh0KCkuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZSIp O3RoaXMuX2NyZWF0ZUljb25zKCk7dGhpcy5yZXNpemUoKTt0aGlzLmVsZW1lbnQu YXR0cigicm9sZSIsInRhYmxpc3QiKTt0aGlzLmhlYWRlcnMuYXR0cigicm9sZSIs CiJ0YWIiKS5iaW5kKCJrZXlkb3duIixmdW5jdGlvbihnKXtyZXR1cm4gYi5fa2V5 ZG93bihnKX0pLm5leHQoKS5hdHRyKCJyb2xlIiwidGFicGFuZWwiKTt0aGlzLmhl YWRlcnMubm90KHRoaXMuYWN0aXZlfHwiIikuYXR0cigiYXJpYS1leHBhbmRlZCIs ImZhbHNlIikuYXR0cigidGFiSW5kZXgiLCItMSIpLm5leHQoKS5oaWRlKCk7dGhp cy5hY3RpdmUubGVuZ3RoP3RoaXMuYWN0aXZlLmF0dHIoImFyaWEtZXhwYW5kZWQi LCJ0cnVlIikuYXR0cigidGFiSW5kZXgiLCIwIik6dGhpcy5oZWFkZXJzLmVxKDAp LmF0dHIoInRhYkluZGV4IiwiMCIpO2MuYnJvd3Nlci5zYWZhcml8fHRoaXMuaGVh ZGVycy5maW5kKCJhIikuYXR0cigidGFiSW5kZXgiLCItMSIpO2EuZXZlbnQmJnRo aXMuaGVhZGVycy5iaW5kKGEuZXZlbnQrIi5hY2NvcmRpb24iLGZ1bmN0aW9uKGcp e2IuX2NsaWNrSGFuZGxlci5jYWxsKGIsZyx0aGlzKTtnLnByZXZlbnREZWZhdWx0 KCl9KX0sX2NyZWF0ZUljb25zOmZ1bmN0aW9uKCl7dmFyIGE9CnRoaXMub3B0aW9u cztpZihhLmljb25zKXtjKCI8c3Bhbi8+IikuYWRkQ2xhc3MoInVpLWljb24gIith Lmljb25zLmhlYWRlcikucHJlcGVuZFRvKHRoaXMuaGVhZGVycyk7dGhpcy5hY3Rp dmUuZmluZCgiLnVpLWljb24iKS50b2dnbGVDbGFzcyhhLmljb25zLmhlYWRlciku dG9nZ2xlQ2xhc3MoYS5pY29ucy5oZWFkZXJTZWxlY3RlZCk7dGhpcy5lbGVtZW50 LmFkZENsYXNzKCJ1aS1hY2NvcmRpb24taWNvbnMiKX19LF9kZXN0cm95SWNvbnM6 ZnVuY3Rpb24oKXt0aGlzLmhlYWRlcnMuY2hpbGRyZW4oIi51aS1pY29uIikucmVt b3ZlKCk7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1hY2NvcmRpb24taWNv bnMiKX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9uczt0aGlz LmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWFjY29yZGlvbiB1aS13aWRnZXQgdWkt aGVscGVyLXJlc2V0IikucmVtb3ZlQXR0cigicm9sZSIpLnVuYmluZCgiLmFjY29y ZGlvbiIpLnJlbW92ZURhdGEoImFjY29yZGlvbiIpOwp0aGlzLmhlYWRlcnMudW5i aW5kKCIuYWNjb3JkaW9uIikucmVtb3ZlQ2xhc3MoInVpLWFjY29yZGlvbi1oZWFk ZXIgdWktaGVscGVyLXJlc2V0IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFs bCB1aS1zdGF0ZS1hY3RpdmUgdWktY29ybmVyLXRvcCIpLnJlbW92ZUF0dHIoInJv bGUiKS5yZW1vdmVBdHRyKCJhcmlhLWV4cGFuZGVkIikucmVtb3ZlQXR0cigidGFi SW5kZXgiKTt0aGlzLmhlYWRlcnMuZmluZCgiYSIpLnJlbW92ZUF0dHIoInRhYklu ZGV4Iik7dGhpcy5fZGVzdHJveUljb25zKCk7dmFyIGI9dGhpcy5oZWFkZXJzLm5l eHQoKS5jc3MoImRpc3BsYXkiLCIiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3Zl Q2xhc3MoInVpLWhlbHBlci1yZXNldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3Ju ZXItYm90dG9tIHVpLWFjY29yZGlvbi1jb250ZW50IHVpLWFjY29yZGlvbi1jb250 ZW50LWFjdGl2ZSIpO2lmKGEuYXV0b0hlaWdodHx8YS5maWxsSGVpZ2h0KWIuY3Nz KCJoZWlnaHQiLAoiIik7cmV0dXJuIHRoaXN9LF9zZXRPcHRpb246ZnVuY3Rpb24o YSxiKXtjLldpZGdldC5wcm90b3R5cGUuX3NldE9wdGlvbi5hcHBseSh0aGlzLGFy Z3VtZW50cyk7YT09ImFjdGl2ZSImJnRoaXMuYWN0aXZhdGUoYik7aWYoYT09Imlj b25zIil7dGhpcy5fZGVzdHJveUljb25zKCk7YiYmdGhpcy5fY3JlYXRlSWNvbnMo KX19LF9rZXlkb3duOmZ1bmN0aW9uKGEpe3ZhciBiPWMudWkua2V5Q29kZTtpZigh KHRoaXMub3B0aW9ucy5kaXNhYmxlZHx8YS5hbHRLZXl8fGEuY3RybEtleSkpe3Zh ciBkPXRoaXMuaGVhZGVycy5sZW5ndGgsZj10aGlzLmhlYWRlcnMuaW5kZXgoYS50 YXJnZXQpLGc9ZmFsc2U7c3dpdGNoKGEua2V5Q29kZSl7Y2FzZSBiLlJJR0hUOmNh c2UgYi5ET1dOOmc9dGhpcy5oZWFkZXJzWyhmKzEpJWRdO2JyZWFrO2Nhc2UgYi5M RUZUOmNhc2UgYi5VUDpnPXRoaXMuaGVhZGVyc1soZi0xK2QpJWRdO2JyZWFrO2Nh c2UgYi5TUEFDRTpjYXNlIGIuRU5URVI6dGhpcy5fY2xpY2tIYW5kbGVyKHt0YXJn ZXQ6YS50YXJnZXR9LAphLnRhcmdldCk7YS5wcmV2ZW50RGVmYXVsdCgpfWlmKGcp e2MoYS50YXJnZXQpLmF0dHIoInRhYkluZGV4IiwiLTEiKTtjKGcpLmF0dHIoInRh YkluZGV4IiwiMCIpO2cuZm9jdXMoKTtyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9 fSxyZXNpemU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnMsYjtpZihhLmZp bGxTcGFjZSl7aWYoYy5icm93c2VyLm1zaWUpe3ZhciBkPXRoaXMuZWxlbWVudC5w YXJlbnQoKS5jc3MoIm92ZXJmbG93Iik7dGhpcy5lbGVtZW50LnBhcmVudCgpLmNz cygib3ZlcmZsb3ciLCJoaWRkZW4iKX1iPXRoaXMuZWxlbWVudC5wYXJlbnQoKS5o ZWlnaHQoKTtjLmJyb3dzZXIubXNpZSYmdGhpcy5lbGVtZW50LnBhcmVudCgpLmNz cygib3ZlcmZsb3ciLGQpO3RoaXMuaGVhZGVycy5lYWNoKGZ1bmN0aW9uKCl7Yi09 Yyh0aGlzKS5vdXRlckhlaWdodCh0cnVlKX0pO3RoaXMuaGVhZGVycy5uZXh0KCku ZWFjaChmdW5jdGlvbigpe2ModGhpcykuaGVpZ2h0KE1hdGgubWF4KDAsCmItYyh0 aGlzKS5pbm5lckhlaWdodCgpK2ModGhpcykuaGVpZ2h0KCkpKX0pLmNzcygib3Zl cmZsb3ciLCJhdXRvIil9ZWxzZSBpZihhLmF1dG9IZWlnaHQpe2I9MDt0aGlzLmhl YWRlcnMubmV4dCgpLmVhY2goZnVuY3Rpb24oKXtiPU1hdGgubWF4KGIsYyh0aGlz KS5oZWlnaHQoKSl9KS5oZWlnaHQoYil9cmV0dXJuIHRoaXN9LGFjdGl2YXRlOmZ1 bmN0aW9uKGEpe3RoaXMub3B0aW9ucy5hY3RpdmU9YTthPXRoaXMuX2ZpbmRBY3Rp dmUoYSlbMF07dGhpcy5fY2xpY2tIYW5kbGVyKHt0YXJnZXQ6YX0sYSk7cmV0dXJu IHRoaXN9LF9maW5kQWN0aXZlOmZ1bmN0aW9uKGEpe3JldHVybiBhP3R5cGVvZiBh PT0ibnVtYmVyIj90aGlzLmhlYWRlcnMuZmlsdGVyKCI6ZXEoIithKyIpIik6dGhp cy5oZWFkZXJzLm5vdCh0aGlzLmhlYWRlcnMubm90KGEpKTphPT09ZmFsc2U/Yyhb XSk6dGhpcy5oZWFkZXJzLmZpbHRlcigiOmVxKDApIil9LF9jbGlja0hhbmRsZXI6 ZnVuY3Rpb24oYSxiKXt2YXIgZD0KdGhpcy5vcHRpb25zO2lmKCFkLmRpc2FibGVk KWlmKGEudGFyZ2V0KXthPWMoYS5jdXJyZW50VGFyZ2V0fHxiKTtiPWFbMF09PXRo aXMuYWN0aXZlWzBdO2QuYWN0aXZlPWQuY29sbGFwc2libGUmJmI/ZmFsc2U6Yygi LnVpLWFjY29yZGlvbi1oZWFkZXIiLHRoaXMuZWxlbWVudCkuaW5kZXgoYSk7aWYo ISh0aGlzLnJ1bm5pbmd8fCFkLmNvbGxhcHNpYmxlJiZiKSl7dGhpcy5hY3RpdmUu cmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSB1aS1jb3JuZXItdG9wIikuYWRk Q2xhc3MoInVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCIpLmZpbmQoIi51 aS1pY29uIikucmVtb3ZlQ2xhc3MoZC5pY29ucy5oZWFkZXJTZWxlY3RlZCkuYWRk Q2xhc3MoZC5pY29ucy5oZWFkZXIpO2lmKCFiKXthLnJlbW92ZUNsYXNzKCJ1aS1z dGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwiKS5hZGRDbGFzcygidWktc3RhdGUt YWN0aXZlIHVpLWNvcm5lci10b3AiKS5maW5kKCIudWktaWNvbiIpLnJlbW92ZUNs YXNzKGQuaWNvbnMuaGVhZGVyKS5hZGRDbGFzcyhkLmljb25zLmhlYWRlclNlbGVj dGVkKTsKYS5uZXh0KCkuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1jb250ZW50LWFj dGl2ZSIpfWU9YS5uZXh0KCk7Zj10aGlzLmFjdGl2ZS5uZXh0KCk7Zz17b3B0aW9u czpkLG5ld0hlYWRlcjpiJiZkLmNvbGxhcHNpYmxlP2MoW10pOmEsb2xkSGVhZGVy OnRoaXMuYWN0aXZlLG5ld0NvbnRlbnQ6YiYmZC5jb2xsYXBzaWJsZT9jKFtdKTpl LG9sZENvbnRlbnQ6Zn07ZD10aGlzLmhlYWRlcnMuaW5kZXgodGhpcy5hY3RpdmVb MF0pPnRoaXMuaGVhZGVycy5pbmRleChhWzBdKTt0aGlzLmFjdGl2ZT1iP2MoW10p OmE7dGhpcy5fdG9nZ2xlKGUsZixnLGIsZCl9fWVsc2UgaWYoZC5jb2xsYXBzaWJs ZSl7dGhpcy5hY3RpdmUucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSB1aS1j b3JuZXItdG9wIikuYWRkQ2xhc3MoInVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVy LWFsbCIpLmZpbmQoIi51aS1pY29uIikucmVtb3ZlQ2xhc3MoZC5pY29ucy5oZWFk ZXJTZWxlY3RlZCkuYWRkQ2xhc3MoZC5pY29ucy5oZWFkZXIpOwp0aGlzLmFjdGl2 ZS5uZXh0KCkuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZSIp O3ZhciBmPXRoaXMuYWN0aXZlLm5leHQoKSxnPXtvcHRpb25zOmQsbmV3SGVhZGVy OmMoW10pLG9sZEhlYWRlcjpkLmFjdGl2ZSxuZXdDb250ZW50OmMoW10pLG9sZENv bnRlbnQ6Zn0sZT10aGlzLmFjdGl2ZT1jKFtdKTt0aGlzLl90b2dnbGUoZSxmLGcp fX0sX3RvZ2dsZTpmdW5jdGlvbihhLGIsZCxmLGcpe3ZhciBlPXRoaXMub3B0aW9u cyxrPXRoaXM7dGhpcy50b1Nob3c9YTt0aGlzLnRvSGlkZT1iO3RoaXMuZGF0YT1k O3ZhciBpPWZ1bmN0aW9uKCl7aWYoaylyZXR1cm4gay5fY29tcGxldGVkLmFwcGx5 KGssYXJndW1lbnRzKX07dGhpcy5fdHJpZ2dlcigiY2hhbmdlc3RhcnQiLG51bGws dGhpcy5kYXRhKTt0aGlzLnJ1bm5pbmc9Yi5zaXplKCk9PT0wP2Euc2l6ZSgpOmIu c2l6ZSgpO2lmKGUuYW5pbWF0ZWQpe2Q9e307ZD1lLmNvbGxhcHNpYmxlJiZmP3t0 b1Nob3c6YyhbXSksCnRvSGlkZTpiLGNvbXBsZXRlOmksZG93bjpnLGF1dG9IZWln aHQ6ZS5hdXRvSGVpZ2h0fHxlLmZpbGxTcGFjZX06e3RvU2hvdzphLHRvSGlkZTpi LGNvbXBsZXRlOmksZG93bjpnLGF1dG9IZWlnaHQ6ZS5hdXRvSGVpZ2h0fHxlLmZp bGxTcGFjZX07aWYoIWUucHJveGllZCllLnByb3hpZWQ9ZS5hbmltYXRlZDtpZigh ZS5wcm94aWVkRHVyYXRpb24pZS5wcm94aWVkRHVyYXRpb249ZS5kdXJhdGlvbjtl LmFuaW1hdGVkPWMuaXNGdW5jdGlvbihlLnByb3hpZWQpP2UucHJveGllZChkKTpl LnByb3hpZWQ7ZS5kdXJhdGlvbj1jLmlzRnVuY3Rpb24oZS5wcm94aWVkRHVyYXRp b24pP2UucHJveGllZER1cmF0aW9uKGQpOmUucHJveGllZER1cmF0aW9uO2Y9Yy51 aS5hY2NvcmRpb24uYW5pbWF0aW9uczt2YXIgaD1lLmR1cmF0aW9uLGo9ZS5hbmlt YXRlZDtpZihqJiYhZltqXSYmIWMuZWFzaW5nW2pdKWo9InNsaWRlIjtmW2pdfHwo ZltqXT1mdW5jdGlvbihsKXt0aGlzLnNsaWRlKGwse2Vhc2luZzpqLApkdXJhdGlv bjpofHw3MDB9KX0pO2Zbal0oZCl9ZWxzZXtpZihlLmNvbGxhcHNpYmxlJiZmKWEu dG9nZ2xlKCk7ZWxzZXtiLmhpZGUoKTthLnNob3coKX1pKHRydWUpfWIucHJldigp LmF0dHIoImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpLmF0dHIoInRhYkluZGV4Iiwi LTEiKS5ibHVyKCk7YS5wcmV2KCkuYXR0cigiYXJpYS1leHBhbmRlZCIsInRydWUi KS5hdHRyKCJ0YWJJbmRleCIsIjAiKS5mb2N1cygpfSxfY29tcGxldGVkOmZ1bmN0 aW9uKGEpe3ZhciBiPXRoaXMub3B0aW9uczt0aGlzLnJ1bm5pbmc9YT8wOi0tdGhp cy5ydW5uaW5nO2lmKCF0aGlzLnJ1bm5pbmcpe2IuY2xlYXJTdHlsZSYmdGhpcy50 b1Nob3cuYWRkKHRoaXMudG9IaWRlKS5jc3Moe2hlaWdodDoiIixvdmVyZmxvdzoi In0pO3RoaXMudG9IaWRlLnJlbW92ZUNsYXNzKCJ1aS1hY2NvcmRpb24tY29udGVu dC1hY3RpdmUiKTt0aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLG51bGwsdGhpcy5kYXRh KX19fSk7Yy5leHRlbmQoYy51aS5hY2NvcmRpb24sCnt2ZXJzaW9uOiIxLjguMiIs YW5pbWF0aW9uczp7c2xpZGU6ZnVuY3Rpb24oYSxiKXthPWMuZXh0ZW5kKHtlYXNp bmc6InN3aW5nIixkdXJhdGlvbjozMDB9LGEsYik7aWYoYS50b0hpZGUuc2l6ZSgp KWlmKGEudG9TaG93LnNpemUoKSl7dmFyIGQ9YS50b1Nob3cuY3NzKCJvdmVyZmxv dyIpLGY9MCxnPXt9LGU9e30saztiPWEudG9TaG93O2s9YlswXS5zdHlsZS53aWR0 aDtiLndpZHRoKHBhcnNlSW50KGIucGFyZW50KCkud2lkdGgoKSwxMCktcGFyc2VJ bnQoYi5jc3MoInBhZGRpbmdMZWZ0IiksMTApLXBhcnNlSW50KGIuY3NzKCJwYWRk aW5nUmlnaHQiKSwxMCktKHBhcnNlSW50KGIuY3NzKCJib3JkZXJMZWZ0V2lkdGgi KSwxMCl8fDApLShwYXJzZUludChiLmNzcygiYm9yZGVyUmlnaHRXaWR0aCIpLDEw KXx8MCkpO2MuZWFjaChbImhlaWdodCIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90 dG9tIl0sZnVuY3Rpb24oaSxoKXtlW2hdPSJoaWRlIjtpPSgiIitjLmNzcyhhLnRv U2hvd1swXSwKaCkpLm1hdGNoKC9eKFtcZCstLl0rKSguKikkLyk7Z1toXT17dmFs dWU6aVsxXSx1bml0OmlbMl18fCJweCJ9fSk7YS50b1Nob3cuY3NzKHtoZWlnaHQ6 MCxvdmVyZmxvdzoiaGlkZGVuIn0pLnNob3coKTthLnRvSGlkZS5maWx0ZXIoIjpo aWRkZW4iKS5lYWNoKGEuY29tcGxldGUpLmVuZCgpLmZpbHRlcigiOnZpc2libGUi KS5hbmltYXRlKGUse3N0ZXA6ZnVuY3Rpb24oaSxoKXtpZihoLnByb3A9PSJoZWln aHQiKWY9aC5lbmQtaC5zdGFydD09PTA/MDooaC5ub3ctaC5zdGFydCkvKGguZW5k LWguc3RhcnQpO2EudG9TaG93WzBdLnN0eWxlW2gucHJvcF09ZipnW2gucHJvcF0u dmFsdWUrZ1toLnByb3BdLnVuaXR9LGR1cmF0aW9uOmEuZHVyYXRpb24sZWFzaW5n OmEuZWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7YS5hdXRvSGVpZ2h0fHxhLnRv U2hvdy5jc3MoImhlaWdodCIsIiIpO2EudG9TaG93LmNzcygid2lkdGgiLGspO2Eu dG9TaG93LmNzcyh7b3ZlcmZsb3c6ZH0pO2EuY29tcGxldGUoKX19KX1lbHNlIGEu dG9IaWRlLmFuaW1hdGUoe2hlaWdodDoiaGlkZSJ9LAphKTtlbHNlIGEudG9TaG93 LmFuaW1hdGUoe2hlaWdodDoic2hvdyJ9LGEpfSxib3VuY2VzbGlkZTpmdW5jdGlv bihhKXt0aGlzLnNsaWRlKGEse2Vhc2luZzphLmRvd24/ImVhc2VPdXRCb3VuY2Ui OiJzd2luZyIsZHVyYXRpb246YS5kb3duPzFFMzoyMDB9KX19fSl9KShqUXVlcnkp Owo7LyoKICogalF1ZXJ5IFVJIEF1dG9jb21wbGV0ZSAxLjguMgogKgogKiBDb3B5 cmlnaHQgKGMpIDIwMTAgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20v YWJvdXQpCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCAoTUlULUxJQ0VO U0UudHh0KQogKiBhbmQgR1BMIChHUEwtTElDRU5TRS50eHQpIGxpY2Vuc2VzLgog KgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL0F1dG9jb21wbGV0ZQogKgog KiBEZXBlbmRzOgogKglqcXVlcnkudWkuY29yZS5qcwogKglqcXVlcnkudWkud2lk Z2V0LmpzCiAqCWpxdWVyeS51aS5wb3NpdGlvbi5qcwogKi8KKGZ1bmN0aW9uKGUp e2Uud2lkZ2V0KCJ1aS5hdXRvY29tcGxldGUiLHtvcHRpb25zOnttaW5MZW5ndGg6 MSxkZWxheTozMDB9LF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGM9dGhp cy5lbGVtZW50WzBdLm93bmVyRG9jdW1lbnQ7dGhpcy5lbGVtZW50LmFkZENsYXNz KCJ1aS1hdXRvY29tcGxldGUtaW5wdXQiKS5hdHRyKCJhdXRvY29tcGxldGUiLCJv ZmYiKS5hdHRyKHtyb2xlOiJ0ZXh0Ym94IiwiYXJpYS1hdXRvY29tcGxldGUiOiJs aXN0IiwiYXJpYS1oYXNwb3B1cCI6InRydWUifSkuYmluZCgia2V5ZG93bi5hdXRv Y29tcGxldGUiLGZ1bmN0aW9uKGQpe3ZhciBiPWUudWkua2V5Q29kZTtzd2l0Y2go ZC5rZXlDb2RlKXtjYXNlIGIuUEFHRV9VUDphLl9tb3ZlKCJwcmV2aW91c1BhZ2Ui LGQpO2JyZWFrO2Nhc2UgYi5QQUdFX0RPV046YS5fbW92ZSgibmV4dFBhZ2UiLGQp O2JyZWFrO2Nhc2UgYi5VUDphLl9tb3ZlKCJwcmV2aW91cyIsZCk7ZC5wcmV2ZW50 RGVmYXVsdCgpOwpicmVhaztjYXNlIGIuRE9XTjphLl9tb3ZlKCJuZXh0IixkKTtk LnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSBiLkVOVEVSOmNhc2UgYi5OVU1Q QURfRU5URVI6YS5tZW51LmFjdGl2ZSYmZC5wcmV2ZW50RGVmYXVsdCgpO2Nhc2Ug Yi5UQUI6aWYoIWEubWVudS5hY3RpdmUpcmV0dXJuO2EubWVudS5zZWxlY3QoZCk7 YnJlYWs7Y2FzZSBiLkVTQ0FQRTphLmVsZW1lbnQudmFsKGEudGVybSk7YS5jbG9z ZShkKTticmVhaztjYXNlIGIuTEVGVDpjYXNlIGIuUklHSFQ6Y2FzZSBiLlNISUZU OmNhc2UgYi5DT05UUk9MOmNhc2UgYi5BTFQ6Y2FzZSBiLkNPTU1BTkQ6Y2FzZSBi LkNPTU1BTkRfUklHSFQ6Y2FzZSBiLklOU0VSVDpjYXNlIGIuQ0FQU19MT0NLOmNh c2UgYi5FTkQ6Y2FzZSBiLkhPTUU6YnJlYWs7ZGVmYXVsdDpjbGVhclRpbWVvdXQo YS5zZWFyY2hpbmcpO2Euc2VhcmNoaW5nPXNldFRpbWVvdXQoZnVuY3Rpb24oKXth LnNlYXJjaChudWxsLGQpfSxhLm9wdGlvbnMuZGVsYXkpOwpicmVha319KS5iaW5k KCJmb2N1cy5hdXRvY29tcGxldGUiLGZ1bmN0aW9uKCl7YS5zZWxlY3RlZEl0ZW09 bnVsbDthLnByZXZpb3VzPWEuZWxlbWVudC52YWwoKX0pLmJpbmQoImJsdXIuYXV0 b2NvbXBsZXRlIixmdW5jdGlvbihkKXtjbGVhclRpbWVvdXQoYS5zZWFyY2hpbmcp O2EuY2xvc2luZz1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5jbG9zZShkKTthLl9j aGFuZ2UoZCl9LDE1MCl9KTt0aGlzLl9pbml0U291cmNlKCk7dGhpcy5yZXNwb25z ZT1mdW5jdGlvbigpe3JldHVybiBhLl9yZXNwb25zZS5hcHBseShhLGFyZ3VtZW50 cyl9O3RoaXMubWVudT1lKCI8dWw+PC91bD4iKS5hZGRDbGFzcygidWktYXV0b2Nv bXBsZXRlIikuYXBwZW5kVG8oImJvZHkiLGMpLm1vdXNlZG93bihmdW5jdGlvbigp e3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoYS5jbG9zaW5nKX0s MTMpfSkubWVudSh7Zm9jdXM6ZnVuY3Rpb24oZCxiKXtiPWIuaXRlbS5kYXRhKCJp dGVtLmF1dG9jb21wbGV0ZSIpOwpmYWxzZSE9PWEuX3RyaWdnZXIoImZvY3VzIixu dWxsLHtpdGVtOmJ9KSYmL15rZXkvLnRlc3QoZC5vcmlnaW5hbEV2ZW50LnR5cGUp JiZhLmVsZW1lbnQudmFsKGIudmFsdWUpfSxzZWxlY3RlZDpmdW5jdGlvbihkLGIp e2I9Yi5pdGVtLmRhdGEoIml0ZW0uYXV0b2NvbXBsZXRlIik7ZmFsc2UhPT1hLl90 cmlnZ2VyKCJzZWxlY3QiLGQse2l0ZW06Yn0pJiZhLmVsZW1lbnQudmFsKGIudmFs dWUpO2EuY2xvc2UoZCk7ZD1hLnByZXZpb3VzO2lmKGEuZWxlbWVudFswXSE9PWMu YWN0aXZlRWxlbWVudCl7YS5lbGVtZW50LmZvY3VzKCk7YS5wcmV2aW91cz1kfWEu c2VsZWN0ZWRJdGVtPWJ9LGJsdXI6ZnVuY3Rpb24oKXthLm1lbnUuZWxlbWVudC5p cygiOnZpc2libGUiKSYmYS5lbGVtZW50LnZhbChhLnRlcm0pfX0pLnpJbmRleCh0 aGlzLmVsZW1lbnQuekluZGV4KCkrMSkuY3NzKHt0b3A6MCxsZWZ0OjB9KS5oaWRl KCkuZGF0YSgibWVudSIpO2UuZm4uYmdpZnJhbWUmJnRoaXMubWVudS5lbGVtZW50 LmJnaWZyYW1lKCl9LApkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJl bW92ZUNsYXNzKCJ1aS1hdXRvY29tcGxldGUtaW5wdXQiKS5yZW1vdmVBdHRyKCJh dXRvY29tcGxldGUiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQXR0cigiYXJp YS1hdXRvY29tcGxldGUiKS5yZW1vdmVBdHRyKCJhcmlhLWhhc3BvcHVwIik7dGhp cy5tZW51LmVsZW1lbnQucmVtb3ZlKCk7ZS5XaWRnZXQucHJvdG90eXBlLmRlc3Ry b3kuY2FsbCh0aGlzKX0sX3NldE9wdGlvbjpmdW5jdGlvbihhKXtlLldpZGdldC5w cm90b3R5cGUuX3NldE9wdGlvbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7YT09PSJz b3VyY2UiJiZ0aGlzLl9pbml0U291cmNlKCl9LF9pbml0U291cmNlOmZ1bmN0aW9u KCl7dmFyIGEsYztpZihlLmlzQXJyYXkodGhpcy5vcHRpb25zLnNvdXJjZSkpe2E9 dGhpcy5vcHRpb25zLnNvdXJjZTt0aGlzLnNvdXJjZT1mdW5jdGlvbihkLGIpe2Io ZS51aS5hdXRvY29tcGxldGUuZmlsdGVyKGEsZC50ZXJtKSl9fWVsc2UgaWYodHlw ZW9mIHRoaXMub3B0aW9ucy5zb3VyY2U9PT0KInN0cmluZyIpe2M9dGhpcy5vcHRp b25zLnNvdXJjZTt0aGlzLnNvdXJjZT1mdW5jdGlvbihkLGIpe2UuZ2V0SlNPTihj LGQsYil9fWVsc2UgdGhpcy5zb3VyY2U9dGhpcy5vcHRpb25zLnNvdXJjZX0sc2Vh cmNoOmZ1bmN0aW9uKGEsYyl7YT1hIT1udWxsP2E6dGhpcy5lbGVtZW50LnZhbCgp O2lmKGEubGVuZ3RoPHRoaXMub3B0aW9ucy5taW5MZW5ndGgpcmV0dXJuIHRoaXMu Y2xvc2UoYyk7Y2xlYXJUaW1lb3V0KHRoaXMuY2xvc2luZyk7aWYodGhpcy5fdHJp Z2dlcigic2VhcmNoIikhPT1mYWxzZSlyZXR1cm4gdGhpcy5fc2VhcmNoKGEpfSxf c2VhcmNoOmZ1bmN0aW9uKGEpe3RoaXMudGVybT10aGlzLmVsZW1lbnQuYWRkQ2xh c3MoInVpLWF1dG9jb21wbGV0ZS1sb2FkaW5nIikudmFsKCk7dGhpcy5zb3VyY2Uo e3Rlcm06YX0sdGhpcy5yZXNwb25zZSl9LF9yZXNwb25zZTpmdW5jdGlvbihhKXtp ZihhLmxlbmd0aCl7YT10aGlzLl9ub3JtYWxpemUoYSk7dGhpcy5fc3VnZ2VzdChh KTsKdGhpcy5fdHJpZ2dlcigib3BlbiIpfWVsc2UgdGhpcy5jbG9zZSgpO3RoaXMu ZWxlbWVudC5yZW1vdmVDbGFzcygidWktYXV0b2NvbXBsZXRlLWxvYWRpbmciKX0s Y2xvc2U6ZnVuY3Rpb24oYSl7Y2xlYXJUaW1lb3V0KHRoaXMuY2xvc2luZyk7aWYo dGhpcy5tZW51LmVsZW1lbnQuaXMoIjp2aXNpYmxlIikpe3RoaXMuX3RyaWdnZXIo ImNsb3NlIixhKTt0aGlzLm1lbnUuZWxlbWVudC5oaWRlKCk7dGhpcy5tZW51LmRl YWN0aXZhdGUoKX19LF9jaGFuZ2U6ZnVuY3Rpb24oYSl7dGhpcy5wcmV2aW91cyE9 PXRoaXMuZWxlbWVudC52YWwoKSYmdGhpcy5fdHJpZ2dlcigiY2hhbmdlIixhLHtp dGVtOnRoaXMuc2VsZWN0ZWRJdGVtfSl9LF9ub3JtYWxpemU6ZnVuY3Rpb24oYSl7 aWYoYS5sZW5ndGgmJmFbMF0ubGFiZWwmJmFbMF0udmFsdWUpcmV0dXJuIGE7cmV0 dXJuIGUubWFwKGEsZnVuY3Rpb24oYyl7aWYodHlwZW9mIGM9PT0ic3RyaW5nIily ZXR1cm57bGFiZWw6Yyx2YWx1ZTpjfTtyZXR1cm4gZS5leHRlbmQoe2xhYmVsOmMu bGFiZWx8fApjLnZhbHVlLHZhbHVlOmMudmFsdWV8fGMubGFiZWx9LGMpfSl9LF9z dWdnZXN0OmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMubWVudS5lbGVtZW50LmVtcHR5 KCkuekluZGV4KHRoaXMuZWxlbWVudC56SW5kZXgoKSsxKSxkO3RoaXMuX3JlbmRl ck1lbnUoYyxhKTt0aGlzLm1lbnUuZGVhY3RpdmF0ZSgpO3RoaXMubWVudS5yZWZy ZXNoKCk7dGhpcy5tZW51LmVsZW1lbnQuc2hvdygpLnBvc2l0aW9uKHtteToibGVm dCB0b3AiLGF0OiJsZWZ0IGJvdHRvbSIsb2Y6dGhpcy5lbGVtZW50LGNvbGxpc2lv bjoibm9uZSJ9KTthPWMud2lkdGgoIiIpLndpZHRoKCk7ZD10aGlzLmVsZW1lbnQu d2lkdGgoKTtjLndpZHRoKE1hdGgubWF4KGEsZCkpfSxfcmVuZGVyTWVudTpmdW5j dGlvbihhLGMpe3ZhciBkPXRoaXM7ZS5lYWNoKGMsZnVuY3Rpb24oYixmKXtkLl9y ZW5kZXJJdGVtKGEsZil9KX0sX3JlbmRlckl0ZW06ZnVuY3Rpb24oYSxjKXtyZXR1 cm4gZSgiPGxpPjwvbGk+IikuZGF0YSgiaXRlbS5hdXRvY29tcGxldGUiLApjKS5h cHBlbmQoIjxhPiIrYy5sYWJlbCsiPC9hPiIpLmFwcGVuZFRvKGEpfSxfbW92ZTpm dW5jdGlvbihhLGMpe2lmKHRoaXMubWVudS5lbGVtZW50LmlzKCI6dmlzaWJsZSIp KWlmKHRoaXMubWVudS5maXJzdCgpJiYvXnByZXZpb3VzLy50ZXN0KGEpfHx0aGlz Lm1lbnUubGFzdCgpJiYvXm5leHQvLnRlc3QoYSkpe3RoaXMuZWxlbWVudC52YWwo dGhpcy50ZXJtKTt0aGlzLm1lbnUuZGVhY3RpdmF0ZSgpfWVsc2UgdGhpcy5tZW51 W2FdKGMpO2Vsc2UgdGhpcy5zZWFyY2gobnVsbCxjKX0sd2lkZ2V0OmZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMubWVudS5lbGVtZW50fX0pO2UuZXh0ZW5kKGUudWkuYXV0 b2NvbXBsZXRlLHtlc2NhcGVSZWdleDpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBs YWNlKC8oW1xeXCRcKFwpXFtcXVx7XH1cKlwuXCtcP1x8XFxdKS9naSwiXFwkMSIp fSxmaWx0ZXI6ZnVuY3Rpb24oYSxjKXt2YXIgZD1uZXcgUmVnRXhwKGUudWkuYXV0 b2NvbXBsZXRlLmVzY2FwZVJlZ2V4KGMpLAoiaSIpO3JldHVybiBlLmdyZXAoYSxm dW5jdGlvbihiKXtyZXR1cm4gZC50ZXN0KGIubGFiZWx8fGIudmFsdWV8fGIpfSl9 fSl9KShqUXVlcnkpOwooZnVuY3Rpb24oZSl7ZS53aWRnZXQoInVpLm1lbnUiLHtf Y3JlYXRlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLmVsZW1lbnQuYWRkQ2xh c3MoInVpLW1lbnUgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5l ci1hbGwiKS5hdHRyKHtyb2xlOiJsaXN0Ym94IiwiYXJpYS1hY3RpdmVkZXNjZW5k YW50IjoidWktYWN0aXZlLW1lbnVpdGVtIn0pLmNsaWNrKGZ1bmN0aW9uKGMpe2lm KGUoYy50YXJnZXQpLmNsb3Nlc3QoIi51aS1tZW51LWl0ZW0gYSIpLmxlbmd0aCl7 Yy5wcmV2ZW50RGVmYXVsdCgpO2Euc2VsZWN0KGMpfX0pO3RoaXMucmVmcmVzaCgp fSxyZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLmVsZW1lbnQuY2hp bGRyZW4oImxpOm5vdCgudWktbWVudS1pdGVtKTpoYXMoYSkiKS5hZGRDbGFzcygi dWktbWVudS1pdGVtIikuYXR0cigicm9sZSIsIm1lbnVpdGVtIikuY2hpbGRyZW4o ImEiKS5hZGRDbGFzcygidWktY29ybmVyLWFsbCIpLmF0dHIoInRhYmluZGV4IiwK LTEpLm1vdXNlZW50ZXIoZnVuY3Rpb24oYyl7YS5hY3RpdmF0ZShjLGUodGhpcyku cGFyZW50KCkpfSkubW91c2VsZWF2ZShmdW5jdGlvbigpe2EuZGVhY3RpdmF0ZSgp fSl9LGFjdGl2YXRlOmZ1bmN0aW9uKGEsYyl7dGhpcy5kZWFjdGl2YXRlKCk7aWYo dGhpcy5oYXNTY3JvbGwoKSl7dmFyIGQ9Yy5vZmZzZXQoKS50b3AtdGhpcy5lbGVt ZW50Lm9mZnNldCgpLnRvcCxiPXRoaXMuZWxlbWVudC5hdHRyKCJzY3JvbGxUb3Ai KSxmPXRoaXMuZWxlbWVudC5oZWlnaHQoKTtpZihkPDApdGhpcy5lbGVtZW50LmF0 dHIoInNjcm9sbFRvcCIsYitkKTtlbHNlIGQ+ZiYmdGhpcy5lbGVtZW50LmF0dHIo InNjcm9sbFRvcCIsYitkLWYrYy5oZWlnaHQoKSl9dGhpcy5hY3RpdmU9Yy5lcSgw KS5jaGlsZHJlbigiYSIpLmFkZENsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLmF0dHIo ImlkIiwidWktYWN0aXZlLW1lbnVpdGVtIikuZW5kKCk7dGhpcy5fdHJpZ2dlcigi Zm9jdXMiLGEse2l0ZW06Y30pfSxkZWFjdGl2YXRlOmZ1bmN0aW9uKCl7aWYodGhp cy5hY3RpdmUpe3RoaXMuYWN0aXZlLmNoaWxkcmVuKCJhIikucmVtb3ZlQ2xhc3Mo InVpLXN0YXRlLWhvdmVyIikucmVtb3ZlQXR0cigiaWQiKTsKdGhpcy5fdHJpZ2dl cigiYmx1ciIpO3RoaXMuYWN0aXZlPW51bGx9fSxuZXh0OmZ1bmN0aW9uKGEpe3Ro aXMubW92ZSgibmV4dCIsIi51aS1tZW51LWl0ZW06Zmlyc3QiLGEpfSxwcmV2aW91 czpmdW5jdGlvbihhKXt0aGlzLm1vdmUoInByZXYiLCIudWktbWVudS1pdGVtOmxh c3QiLGEpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFjdGl2ZSYmIXRo aXMuYWN0aXZlLnByZXYoKS5sZW5ndGh9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5hY3RpdmUmJiF0aGlzLmFjdGl2ZS5uZXh0KCkubGVuZ3RofSxtb3ZlOmZ1 bmN0aW9uKGEsYyxkKXtpZih0aGlzLmFjdGl2ZSl7YT10aGlzLmFjdGl2ZVthKyJB bGwiXSgiLnVpLW1lbnUtaXRlbSIpLmVxKDApO2EubGVuZ3RoP3RoaXMuYWN0aXZh dGUoZCxhKTp0aGlzLmFjdGl2YXRlKGQsdGhpcy5lbGVtZW50LmNoaWxkcmVuKGMp KX1lbHNlIHRoaXMuYWN0aXZhdGUoZCx0aGlzLmVsZW1lbnQuY2hpbGRyZW4oYykp fSxuZXh0UGFnZTpmdW5jdGlvbihhKXtpZih0aGlzLmhhc1Njcm9sbCgpKWlmKCF0 aGlzLmFjdGl2ZXx8CnRoaXMubGFzdCgpKXRoaXMuYWN0aXZhdGUoYSx0aGlzLmVs ZW1lbnQuY2hpbGRyZW4oIjpmaXJzdCIpKTtlbHNle3ZhciBjPXRoaXMuYWN0aXZl Lm9mZnNldCgpLnRvcCxkPXRoaXMuZWxlbWVudC5oZWlnaHQoKSxiPXRoaXMuZWxl bWVudC5jaGlsZHJlbigibGkiKS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgZj1lKHRo aXMpLm9mZnNldCgpLnRvcC1jLWQrZSh0aGlzKS5oZWlnaHQoKTtyZXR1cm4gZjwx MCYmZj4tMTB9KTtiLmxlbmd0aHx8KGI9dGhpcy5lbGVtZW50LmNoaWxkcmVuKCI6 bGFzdCIpKTt0aGlzLmFjdGl2YXRlKGEsYil9ZWxzZSB0aGlzLmFjdGl2YXRlKGEs dGhpcy5lbGVtZW50LmNoaWxkcmVuKCF0aGlzLmFjdGl2ZXx8dGhpcy5sYXN0KCk/ IjpmaXJzdCI6IjpsYXN0IikpfSxwcmV2aW91c1BhZ2U6ZnVuY3Rpb24oYSl7aWYo dGhpcy5oYXNTY3JvbGwoKSlpZighdGhpcy5hY3RpdmV8fHRoaXMuZmlyc3QoKSl0 aGlzLmFjdGl2YXRlKGEsdGhpcy5lbGVtZW50LmNoaWxkcmVuKCI6bGFzdCIpKTsK ZWxzZXt2YXIgYz10aGlzLmFjdGl2ZS5vZmZzZXQoKS50b3AsZD10aGlzLmVsZW1l bnQuaGVpZ2h0KCk7cmVzdWx0PXRoaXMuZWxlbWVudC5jaGlsZHJlbigibGkiKS5m aWx0ZXIoZnVuY3Rpb24oKXt2YXIgYj1lKHRoaXMpLm9mZnNldCgpLnRvcC1jK2Qt ZSh0aGlzKS5oZWlnaHQoKTtyZXR1cm4gYjwxMCYmYj4tMTB9KTtyZXN1bHQubGVu Z3RofHwocmVzdWx0PXRoaXMuZWxlbWVudC5jaGlsZHJlbigiOmZpcnN0IikpO3Ro aXMuYWN0aXZhdGUoYSxyZXN1bHQpfWVsc2UgdGhpcy5hY3RpdmF0ZShhLHRoaXMu ZWxlbWVudC5jaGlsZHJlbighdGhpcy5hY3RpdmV8fHRoaXMuZmlyc3QoKT8iOmxh c3QiOiI6Zmlyc3QiKSl9LGhhc1Njcm9sbDpmdW5jdGlvbigpe3JldHVybiB0aGlz LmVsZW1lbnQuaGVpZ2h0KCk8dGhpcy5lbGVtZW50LmF0dHIoInNjcm9sbEhlaWdo dCIpfSxzZWxlY3Q6ZnVuY3Rpb24oYSl7dGhpcy5fdHJpZ2dlcigic2VsZWN0ZWQi LGEse2l0ZW06dGhpcy5hY3RpdmV9KX19KX0pKGpRdWVyeSk7CjsvKgogKiBqUXVl cnkgVUkgQnV0dG9uIDEuOC4yCiAqCiAqIENvcHlyaWdodCAoYykgMjAxMCBBVVRI T1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKICogRHVhbCBsaWNl bnNlZCB1bmRlciB0aGUgTUlUIChNSVQtTElDRU5TRS50eHQpCiAqIGFuZCBHUEwg KEdQTC1MSUNFTlNFLnR4dCkgbGljZW5zZXMuCiAqCiAqIGh0dHA6Ly9kb2NzLmpx dWVyeS5jb20vVUkvQnV0dG9uCiAqCiAqIERlcGVuZHM6CiAqCWpxdWVyeS51aS5j b3JlLmpzCiAqCWpxdWVyeS51aS53aWRnZXQuanMKICovCihmdW5jdGlvbihhKXt2 YXIgZyxpPWZ1bmN0aW9uKGIpe2EoIjp1aS1idXR0b24iLGIudGFyZ2V0LmZvcm0p LmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpLmRhdGEoImJ1dHRvbiIpO3Nl dFRpbWVvdXQoZnVuY3Rpb24oKXtjLnJlZnJlc2goKX0sMSl9KX0saD1mdW5jdGlv bihiKXt2YXIgYz1iLm5hbWUsZD1iLmZvcm0sZT1hKFtdKTtpZihjKWU9ZD9hKGQp LmZpbmQoIltuYW1lPSciK2MrIiddIik6YSgiW25hbWU9JyIrYysiJ10iLGIub3du ZXJEb2N1bWVudCkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuZm9ybX0p O3JldHVybiBlfTthLndpZGdldCgidWkuYnV0dG9uIix7b3B0aW9uczp7dGV4dDp0 cnVlLGxhYmVsOm51bGwsaWNvbnM6e3ByaW1hcnk6bnVsbCxzZWNvbmRhcnk6bnVs bH19LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuY2xvc2VzdCgiZm9y bSIpLnVuYmluZCgicmVzZXQuYnV0dG9uIikuYmluZCgicmVzZXQuYnV0dG9uIixp KTt0aGlzLl9kZXRlcm1pbmVCdXR0b25UeXBlKCk7CnRoaXMuaGFzVGl0bGU9ISF0 aGlzLmJ1dHRvbkVsZW1lbnQuYXR0cigidGl0bGUiKTt2YXIgYj10aGlzLGM9dGhp cy5vcHRpb25zLGQ9dGhpcy50eXBlPT09ImNoZWNrYm94Inx8dGhpcy50eXBlPT09 InJhZGlvIixlPSJ1aS1zdGF0ZS1ob3ZlciIrKCFkPyIgdWktc3RhdGUtYWN0aXZl IjoiIik7aWYoYy5sYWJlbD09PW51bGwpYy5sYWJlbD10aGlzLmJ1dHRvbkVsZW1l bnQuaHRtbCgpO2lmKHRoaXMuZWxlbWVudC5pcygiOmRpc2FibGVkIikpYy5kaXNh YmxlZD10cnVlO3RoaXMuYnV0dG9uRWxlbWVudC5hZGRDbGFzcygidWktYnV0dG9u IHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwiKS5hdHRy KCJyb2xlIiwiYnV0dG9uIikuYmluZCgibW91c2VlbnRlci5idXR0b24iLGZ1bmN0 aW9uKCl7aWYoIWMuZGlzYWJsZWQpe2EodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRl LWhvdmVyIik7dGhpcz09PWcmJmEodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWFj dGl2ZSIpfX0pLmJpbmQoIm1vdXNlbGVhdmUuYnV0dG9uIiwKZnVuY3Rpb24oKXtj LmRpc2FibGVkfHxhKHRoaXMpLnJlbW92ZUNsYXNzKGUpfSkuYmluZCgiZm9jdXMu YnV0dG9uIixmdW5jdGlvbigpe2EodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWZv Y3VzIil9KS5iaW5kKCJibHVyLmJ1dHRvbiIsZnVuY3Rpb24oKXthKHRoaXMpLnJl bW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfSk7ZCYmdGhpcy5lbGVtZW50LmJp bmQoImNoYW5nZS5idXR0b24iLGZ1bmN0aW9uKCl7Yi5yZWZyZXNoKCl9KTtpZih0 aGlzLnR5cGU9PT0iY2hlY2tib3giKXRoaXMuYnV0dG9uRWxlbWVudC5iaW5kKCJj bGljay5idXR0b24iLGZ1bmN0aW9uKCl7aWYoYy5kaXNhYmxlZClyZXR1cm4gZmFs c2U7YSh0aGlzKS50b2dnbGVDbGFzcygidWktc3RhdGUtYWN0aXZlIik7Yi5idXR0 b25FbGVtZW50LmF0dHIoImFyaWEtcHJlc3NlZCIsYi5lbGVtZW50WzBdLmNoZWNr ZWQpfSk7ZWxzZSBpZih0aGlzLnR5cGU9PT0icmFkaW8iKXRoaXMuYnV0dG9uRWxl bWVudC5iaW5kKCJjbGljay5idXR0b24iLApmdW5jdGlvbigpe2lmKGMuZGlzYWJs ZWQpcmV0dXJuIGZhbHNlO2EodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2 ZSIpO2IuYnV0dG9uRWxlbWVudC5hdHRyKCJhcmlhLXByZXNzZWQiLHRydWUpO3Zh ciBmPWIuZWxlbWVudFswXTtoKGYpLm5vdChmKS5tYXAoZnVuY3Rpb24oKXtyZXR1 cm4gYSh0aGlzKS5idXR0b24oIndpZGdldCIpWzBdfSkucmVtb3ZlQ2xhc3MoInVp LXN0YXRlLWFjdGl2ZSIpLmF0dHIoImFyaWEtcHJlc3NlZCIsZmFsc2UpfSk7ZWxz ZXt0aGlzLmJ1dHRvbkVsZW1lbnQuYmluZCgibW91c2Vkb3duLmJ1dHRvbiIsZnVu Y3Rpb24oKXtpZihjLmRpc2FibGVkKXJldHVybiBmYWxzZTthKHRoaXMpLmFkZENs YXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKTtnPXRoaXM7YShkb2N1bWVudCkub25lKCJt b3VzZXVwIixmdW5jdGlvbigpe2c9bnVsbH0pfSkuYmluZCgibW91c2V1cC5idXR0 b24iLGZ1bmN0aW9uKCl7aWYoYy5kaXNhYmxlZClyZXR1cm4gZmFsc2U7YSh0aGlz KS5yZW1vdmVDbGFzcygidWktc3RhdGUtYWN0aXZlIil9KS5iaW5kKCJrZXlkb3du LmJ1dHRvbiIsCmZ1bmN0aW9uKGYpe2lmKGMuZGlzYWJsZWQpcmV0dXJuIGZhbHNl O2lmKGYua2V5Q29kZT09YS51aS5rZXlDb2RlLlNQQUNFfHxmLmtleUNvZGU9PWEu dWkua2V5Q29kZS5FTlRFUilhKHRoaXMpLmFkZENsYXNzKCJ1aS1zdGF0ZS1hY3Rp dmUiKX0pLmJpbmQoImtleXVwLmJ1dHRvbiIsZnVuY3Rpb24oKXthKHRoaXMpLnJl bW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKX0pO3RoaXMuYnV0dG9uRWxlbWVu dC5pcygiYSIpJiZ0aGlzLmJ1dHRvbkVsZW1lbnQua2V5dXAoZnVuY3Rpb24oZil7 Zi5rZXlDb2RlPT09YS51aS5rZXlDb2RlLlNQQUNFJiZhKHRoaXMpLmNsaWNrKCl9 KX10aGlzLl9zZXRPcHRpb24oImRpc2FibGVkIixjLmRpc2FibGVkKX0sX2RldGVy bWluZUJ1dHRvblR5cGU6ZnVuY3Rpb24oKXt0aGlzLnR5cGU9dGhpcy5lbGVtZW50 LmlzKCI6Y2hlY2tib3giKT8iY2hlY2tib3giOnRoaXMuZWxlbWVudC5pcygiOnJh ZGlvIik/InJhZGlvIjp0aGlzLmVsZW1lbnQuaXMoImlucHV0Iik/CiJpbnB1dCI6 ImJ1dHRvbiI7aWYodGhpcy50eXBlPT09ImNoZWNrYm94Inx8dGhpcy50eXBlPT09 InJhZGlvIil7dGhpcy5idXR0b25FbGVtZW50PXRoaXMuZWxlbWVudC5wYXJlbnRz KCkubGFzdCgpLmZpbmQoIltmb3I9Iit0aGlzLmVsZW1lbnQuYXR0cigiaWQiKSsi XSIpO3RoaXMuZWxlbWVudC5hZGRDbGFzcygidWktaGVscGVyLWhpZGRlbi1hY2Nl c3NpYmxlIik7dmFyIGI9dGhpcy5lbGVtZW50LmlzKCI6Y2hlY2tlZCIpO2ImJnRo aXMuYnV0dG9uRWxlbWVudC5hZGRDbGFzcygidWktc3RhdGUtYWN0aXZlIik7dGhp cy5idXR0b25FbGVtZW50LmF0dHIoImFyaWEtcHJlc3NlZCIsYil9ZWxzZSB0aGlz LmJ1dHRvbkVsZW1lbnQ9dGhpcy5lbGVtZW50fSx3aWRnZXQ6ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5idXR0b25FbGVtZW50fSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhp cy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2li bGUiKTt0aGlzLmJ1dHRvbkVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWJ1dHRvbiB1 aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLXN0YXRl LWhvdmVyIHVpLXN0YXRlLWFjdGl2ZSAgdWktYnV0dG9uLWljb25zLW9ubHkgdWkt YnV0dG9uLWljb24tb25seSB1aS1idXR0b24tdGV4dC1pY29ucyB1aS1idXR0b24t dGV4dC1pY29uIHVpLWJ1dHRvbi10ZXh0LW9ubHkiKS5yZW1vdmVBdHRyKCJyb2xl IikucmVtb3ZlQXR0cigiYXJpYS1wcmVzc2VkIikuaHRtbCh0aGlzLmJ1dHRvbkVs ZW1lbnQuZmluZCgiLnVpLWJ1dHRvbi10ZXh0IikuaHRtbCgpKTsKdGhpcy5oYXNU aXRsZXx8dGhpcy5idXR0b25FbGVtZW50LnJlbW92ZUF0dHIoInRpdGxlIik7YS5X aWRnZXQucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKX0sX3NldE9wdGlvbjpm dW5jdGlvbihiLGMpe2EuV2lkZ2V0LnByb3RvdHlwZS5fc2V0T3B0aW9uLmFwcGx5 KHRoaXMsYXJndW1lbnRzKTtpZihiPT09ImRpc2FibGVkIiljP3RoaXMuZWxlbWVu dC5hdHRyKCJkaXNhYmxlZCIsdHJ1ZSk6dGhpcy5lbGVtZW50LnJlbW92ZUF0dHIo ImRpc2FibGVkIik7dGhpcy5fcmVzZXRCdXR0b24oKX0scmVmcmVzaDpmdW5jdGlv bigpe3ZhciBiPXRoaXMuZWxlbWVudC5pcygiOmRpc2FibGVkIik7YiE9PXRoaXMu b3B0aW9ucy5kaXNhYmxlZCYmdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsYik7 aWYodGhpcy50eXBlPT09InJhZGlvIiloKHRoaXMuZWxlbWVudFswXSkuZWFjaChm dW5jdGlvbigpe2EodGhpcykuaXMoIjpjaGVja2VkIik/YSh0aGlzKS5idXR0b24o IndpZGdldCIpLmFkZENsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKS5hdHRyKCJhcmlh LXByZXNzZWQiLAp0cnVlKTphKHRoaXMpLmJ1dHRvbigid2lkZ2V0IikucmVtb3Zl Q2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLmF0dHIoImFyaWEtcHJlc3NlZCIsZmFs c2UpfSk7ZWxzZSBpZih0aGlzLnR5cGU9PT0iY2hlY2tib3giKXRoaXMuZWxlbWVu dC5pcygiOmNoZWNrZWQiKT90aGlzLmJ1dHRvbkVsZW1lbnQuYWRkQ2xhc3MoInVp LXN0YXRlLWFjdGl2ZSIpLmF0dHIoImFyaWEtcHJlc3NlZCIsdHJ1ZSk6dGhpcy5i dXR0b25FbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKS5hdHRy KCJhcmlhLXByZXNzZWQiLGZhbHNlKX0sX3Jlc2V0QnV0dG9uOmZ1bmN0aW9uKCl7 aWYodGhpcy50eXBlPT09ImlucHV0Iil0aGlzLm9wdGlvbnMubGFiZWwmJnRoaXMu ZWxlbWVudC52YWwodGhpcy5vcHRpb25zLmxhYmVsKTtlbHNle3ZhciBiPXRoaXMu YnV0dG9uRWxlbWVudC5yZW1vdmVDbGFzcygidWktYnV0dG9uLWljb25zLW9ubHkg dWktYnV0dG9uLWljb24tb25seSB1aS1idXR0b24tdGV4dC1pY29ucyB1aS1idXR0 b24tdGV4dC1pY29uIHVpLWJ1dHRvbi10ZXh0LW9ubHkiKSwKYz1hKCI8c3Bhbj48 L3NwYW4+IikuYWRkQ2xhc3MoInVpLWJ1dHRvbi10ZXh0IikuaHRtbCh0aGlzLm9w dGlvbnMubGFiZWwpLmFwcGVuZFRvKGIuZW1wdHkoKSkudGV4dCgpLGQ9dGhpcy5v cHRpb25zLmljb25zLGU9ZC5wcmltYXJ5JiZkLnNlY29uZGFyeTtpZihkLnByaW1h cnl8fGQuc2Vjb25kYXJ5KXtiLmFkZENsYXNzKCJ1aS1idXR0b24tdGV4dC1pY29u IisoZT8icyI6IiIpKTtkLnByaW1hcnkmJmIucHJlcGVuZCgiPHNwYW4gY2xhc3M9 J3VpLWJ1dHRvbi1pY29uLXByaW1hcnkgdWktaWNvbiAiK2QucHJpbWFyeSsiJz48 L3NwYW4+Iik7ZC5zZWNvbmRhcnkmJmIuYXBwZW5kKCI8c3BhbiBjbGFzcz0ndWkt YnV0dG9uLWljb24tc2Vjb25kYXJ5IHVpLWljb24gIitkLnNlY29uZGFyeSsiJz48 L3NwYW4+Iik7aWYoIXRoaXMub3B0aW9ucy50ZXh0KXtiLmFkZENsYXNzKGU/InVp LWJ1dHRvbi1pY29ucy1vbmx5IjoidWktYnV0dG9uLWljb24tb25seSIpLnJlbW92 ZUNsYXNzKCJ1aS1idXR0b24tdGV4dC1pY29ucyB1aS1idXR0b24tdGV4dC1pY29u Iik7CnRoaXMuaGFzVGl0bGV8fGIuYXR0cigidGl0bGUiLGMpfX1lbHNlIGIuYWRk Q2xhc3MoInVpLWJ1dHRvbi10ZXh0LW9ubHkiKX19fSk7YS53aWRnZXQoInVpLmJ1 dHRvbnNldCIse19jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuYWRkQ2xh c3MoInVpLWJ1dHRvbnNldCIpO3RoaXMuX2luaXQoKX0sX2luaXQ6ZnVuY3Rpb24o KXt0aGlzLnJlZnJlc2goKX0sX3NldE9wdGlvbjpmdW5jdGlvbihiLGMpe2I9PT0i ZGlzYWJsZWQiJiZ0aGlzLmJ1dHRvbnMuYnV0dG9uKCJvcHRpb24iLGIsYyk7YS5X aWRnZXQucHJvdG90eXBlLl9zZXRPcHRpb24uYXBwbHkodGhpcyxhcmd1bWVudHMp fSxyZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5idXR0b25zPXRoaXMuZWxlbWVudC5m aW5kKCI6YnV0dG9uLCA6c3VibWl0LCA6cmVzZXQsIDpjaGVja2JveCwgOnJhZGlv LCBhLCA6ZGF0YShidXR0b24pIikuZmlsdGVyKCI6dWktYnV0dG9uIikuYnV0dG9u KCJyZWZyZXNoIikuZW5kKCkubm90KCI6dWktYnV0dG9uIikuYnV0dG9uKCkuZW5k KCkubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGEodGhpcykuYnV0dG9uKCJ3aWRnZXQi KVswXX0pLnJlbW92ZUNsYXNzKCJ1aS1jb3JuZXItYWxsIHVpLWNvcm5lci1sZWZ0 IHVpLWNvcm5lci1yaWdodCIpLmZpbHRlcigiOmZpcnN0IikuYWRkQ2xhc3MoInVp LWNvcm5lci1sZWZ0IikuZW5kKCkuZmlsdGVyKCI6bGFzdCIpLmFkZENsYXNzKCJ1 aS1jb3JuZXItcmlnaHQiKS5lbmQoKS5lbmQoKX0sCmRlc3Ryb3k6ZnVuY3Rpb24o KXt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWJ1dHRvbnNldCIpO3RoaXMu YnV0dG9ucy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gYSh0aGlzKS5idXR0b24oIndp ZGdldCIpWzBdfSkucmVtb3ZlQ2xhc3MoInVpLWNvcm5lci1sZWZ0IHVpLWNvcm5l ci1yaWdodCIpLmVuZCgpLmJ1dHRvbigiZGVzdHJveSIpO2EuV2lkZ2V0LnByb3Rv dHlwZS5kZXN0cm95LmNhbGwodGhpcyl9fSl9KShqUXVlcnkpOwo7LyoKICogalF1 ZXJ5IFVJIERpYWxvZyAxLjguMgogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAgQVVU SE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCiAqIER1YWwgbGlj ZW5zZWQgdW5kZXIgdGhlIE1JVCAoTUlULUxJQ0VOU0UudHh0KQogKiBhbmQgR1BM IChHUEwtTElDRU5TRS50eHQpIGxpY2Vuc2VzLgogKgogKiBodHRwOi8vZG9jcy5q cXVlcnkuY29tL1VJL0RpYWxvZwogKgogKiBEZXBlbmRzOgogKglqcXVlcnkudWku Y29yZS5qcwogKglqcXVlcnkudWkud2lkZ2V0LmpzCiAqICBqcXVlcnkudWkuYnV0 dG9uLmpzCiAqCWpxdWVyeS51aS5kcmFnZ2FibGUuanMKICoJanF1ZXJ5LnVpLm1v dXNlLmpzCiAqCWpxdWVyeS51aS5wb3NpdGlvbi5qcwogKglqcXVlcnkudWkucmVz aXphYmxlLmpzCiAqLwooZnVuY3Rpb24oYyl7Yy53aWRnZXQoInVpLmRpYWxvZyIs e29wdGlvbnM6e2F1dG9PcGVuOnRydWUsYnV0dG9uczp7fSxjbG9zZU9uRXNjYXBl OnRydWUsY2xvc2VUZXh0OiJjbG9zZSIsZGlhbG9nQ2xhc3M6IiIsZHJhZ2dhYmxl OnRydWUsaGlkZTpudWxsLGhlaWdodDoiYXV0byIsbWF4SGVpZ2h0OmZhbHNlLG1h eFdpZHRoOmZhbHNlLG1pbkhlaWdodDoxNTAsbWluV2lkdGg6MTUwLG1vZGFsOmZh bHNlLHBvc2l0aW9uOiJjZW50ZXIiLHJlc2l6YWJsZTp0cnVlLHNob3c6bnVsbCxz dGFjazp0cnVlLHRpdGxlOiIiLHdpZHRoOjMwMCx6SW5kZXg6MUUzfSxfY3JlYXRl OmZ1bmN0aW9uKCl7dGhpcy5vcmlnaW5hbFRpdGxlPXRoaXMuZWxlbWVudC5hdHRy KCJ0aXRsZSIpO3ZhciBhPXRoaXMsYj1hLm9wdGlvbnMsZD1iLnRpdGxlfHxhLm9y aWdpbmFsVGl0bGV8fCImIzE2MDsiLGU9Yy51aS5kaWFsb2cuZ2V0VGl0bGVJZChh LmVsZW1lbnQpLGc9KGEudWlEaWFsb2c9YygiPGRpdj48L2Rpdj4iKSkuYXBwZW5k VG8oZG9jdW1lbnQuYm9keSkuaGlkZSgpLmFkZENsYXNzKCJ1aS1kaWFsb2cgdWkt d2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgIisKYi5kaWFs b2dDbGFzcykuY3NzKHt6SW5kZXg6Yi56SW5kZXh9KS5hdHRyKCJ0YWJJbmRleCIs LTEpLmNzcygib3V0bGluZSIsMCkua2V5ZG93bihmdW5jdGlvbihpKXtpZihiLmNs b3NlT25Fc2NhcGUmJmkua2V5Q29kZSYmaS5rZXlDb2RlPT09Yy51aS5rZXlDb2Rl LkVTQ0FQRSl7YS5jbG9zZShpKTtpLnByZXZlbnREZWZhdWx0KCl9fSkuYXR0cih7 cm9sZToiZGlhbG9nIiwiYXJpYS1sYWJlbGxlZGJ5IjplfSkubW91c2Vkb3duKGZ1 bmN0aW9uKGkpe2EubW92ZVRvVG9wKGZhbHNlLGkpfSk7YS5lbGVtZW50LnNob3co KS5yZW1vdmVBdHRyKCJ0aXRsZSIpLmFkZENsYXNzKCJ1aS1kaWFsb2ctY29udGVu dCB1aS13aWRnZXQtY29udGVudCIpLmFwcGVuZFRvKGcpO3ZhciBmPShhLnVpRGlh bG9nVGl0bGViYXI9YygiPGRpdj48L2Rpdj4iKSkuYWRkQ2xhc3MoInVpLWRpYWxv Zy10aXRsZWJhciB1aS13aWRnZXQtaGVhZGVyIHVpLWNvcm5lci1hbGwgdWktaGVs cGVyLWNsZWFyZml4IikucHJlcGVuZFRvKGcpLApoPWMoJzxhIGhyZWY9IiMiPjwv YT4nKS5hZGRDbGFzcygidWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHVpLWNvcm5l ci1hbGwiKS5hdHRyKCJyb2xlIiwiYnV0dG9uIikuaG92ZXIoZnVuY3Rpb24oKXto LmFkZENsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpfSxmdW5jdGlvbigpe2gucmVtb3Zl Q2xhc3MoInVpLXN0YXRlLWhvdmVyIil9KS5mb2N1cyhmdW5jdGlvbigpe2guYWRk Q2xhc3MoInVpLXN0YXRlLWZvY3VzIil9KS5ibHVyKGZ1bmN0aW9uKCl7aC5yZW1v dmVDbGFzcygidWktc3RhdGUtZm9jdXMiKX0pLmNsaWNrKGZ1bmN0aW9uKGkpe2Eu Y2xvc2UoaSk7cmV0dXJuIGZhbHNlfSkuYXBwZW5kVG8oZik7KGEudWlEaWFsb2dU aXRsZWJhckNsb3NlVGV4dD1jKCI8c3Bhbj48L3NwYW4+IikpLmFkZENsYXNzKCJ1 aS1pY29uIHVpLWljb24tY2xvc2V0aGljayIpLnRleHQoYi5jbG9zZVRleHQpLmFw cGVuZFRvKGgpO2MoIjxzcGFuPjwvc3Bhbj4iKS5hZGRDbGFzcygidWktZGlhbG9n LXRpdGxlIikuYXR0cigiaWQiLAplKS5odG1sKGQpLnByZXBlbmRUbyhmKTtpZihj LmlzRnVuY3Rpb24oYi5iZWZvcmVjbG9zZSkmJiFjLmlzRnVuY3Rpb24oYi5iZWZv cmVDbG9zZSkpYi5iZWZvcmVDbG9zZT1iLmJlZm9yZWNsb3NlO2YuZmluZCgiKiIp LmFkZChmKS5kaXNhYmxlU2VsZWN0aW9uKCk7Yi5kcmFnZ2FibGUmJmMuZm4uZHJh Z2dhYmxlJiZhLl9tYWtlRHJhZ2dhYmxlKCk7Yi5yZXNpemFibGUmJmMuZm4ucmVz aXphYmxlJiZhLl9tYWtlUmVzaXphYmxlKCk7YS5fY3JlYXRlQnV0dG9ucyhiLmJ1 dHRvbnMpO2EuX2lzT3Blbj1mYWxzZTtjLmZuLmJnaWZyYW1lJiZnLmJnaWZyYW1l KCl9LF9pbml0OmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLmF1dG9PcGVuJiZ0aGlz Lm9wZW4oKX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciBhPXRoaXM7YS5vdmVybGF5 JiZhLm92ZXJsYXkuZGVzdHJveSgpO2EudWlEaWFsb2cuaGlkZSgpO2EuZWxlbWVu dC51bmJpbmQoIi5kaWFsb2ciKS5yZW1vdmVEYXRhKCJkaWFsb2ciKS5yZW1vdmVD bGFzcygidWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiKS5oaWRl KCkuYXBwZW5kVG8oImJvZHkiKTsKYS51aURpYWxvZy5yZW1vdmUoKTthLm9yaWdp bmFsVGl0bGUmJmEuZWxlbWVudC5hdHRyKCJ0aXRsZSIsYS5vcmlnaW5hbFRpdGxl KTtyZXR1cm4gYX0sd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudWlEaWFs b2d9LGNsb3NlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsZDtpZihmYWxzZSE9PWIu X3RyaWdnZXIoImJlZm9yZUNsb3NlIixhKSl7Yi5vdmVybGF5JiZiLm92ZXJsYXku ZGVzdHJveSgpO2IudWlEaWFsb2cudW5iaW5kKCJrZXlwcmVzcy51aS1kaWFsb2ci KTtiLl9pc09wZW49ZmFsc2U7aWYoYi5vcHRpb25zLmhpZGUpYi51aURpYWxvZy5o aWRlKGIub3B0aW9ucy5oaWRlLGZ1bmN0aW9uKCl7Yi5fdHJpZ2dlcigiY2xvc2Ui LGEpfSk7ZWxzZXtiLnVpRGlhbG9nLmhpZGUoKTtiLl90cmlnZ2VyKCJjbG9zZSIs YSl9Yy51aS5kaWFsb2cub3ZlcmxheS5yZXNpemUoKTtpZihiLm9wdGlvbnMubW9k YWwpe2Q9MDtjKCIudWktZGlhbG9nIikuZWFjaChmdW5jdGlvbigpe2lmKHRoaXMh PT0KYi51aURpYWxvZ1swXSlkPU1hdGgubWF4KGQsYyh0aGlzKS5jc3MoInotaW5k ZXgiKSl9KTtjLnVpLmRpYWxvZy5tYXhaPWR9cmV0dXJuIGJ9fSxpc09wZW46ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5faXNPcGVufSxtb3ZlVG9Ub3A6ZnVuY3Rpb24o YSxiKXt2YXIgZD10aGlzLGU9ZC5vcHRpb25zO2lmKGUubW9kYWwmJiFhfHwhZS5z dGFjayYmIWUubW9kYWwpcmV0dXJuIGQuX3RyaWdnZXIoImZvY3VzIixiKTtpZihl LnpJbmRleD5jLnVpLmRpYWxvZy5tYXhaKWMudWkuZGlhbG9nLm1heFo9ZS56SW5k ZXg7aWYoZC5vdmVybGF5KXtjLnVpLmRpYWxvZy5tYXhaKz0xO2Qub3ZlcmxheS4k ZWwuY3NzKCJ6LWluZGV4IixjLnVpLmRpYWxvZy5vdmVybGF5Lm1heFo9Yy51aS5k aWFsb2cubWF4Wil9YT17c2Nyb2xsVG9wOmQuZWxlbWVudC5hdHRyKCJzY3JvbGxU b3AiKSxzY3JvbGxMZWZ0OmQuZWxlbWVudC5hdHRyKCJzY3JvbGxMZWZ0Iil9O2Mu dWkuZGlhbG9nLm1heForPTE7ZC51aURpYWxvZy5jc3MoInotaW5kZXgiLApjLnVp LmRpYWxvZy5tYXhaKTtkLmVsZW1lbnQuYXR0cihhKTtkLl90cmlnZ2VyKCJmb2N1 cyIsYik7cmV0dXJuIGR9LG9wZW46ZnVuY3Rpb24oKXtpZighdGhpcy5faXNPcGVu KXt2YXIgYT10aGlzLGI9YS5vcHRpb25zLGQ9YS51aURpYWxvZzthLm92ZXJsYXk9 Yi5tb2RhbD9uZXcgYy51aS5kaWFsb2cub3ZlcmxheShhKTpudWxsO2QubmV4dCgp Lmxlbmd0aCYmZC5hcHBlbmRUbygiYm9keSIpO2EuX3NpemUoKTthLl9wb3NpdGlv bihiLnBvc2l0aW9uKTtkLnNob3coYi5zaG93KTthLm1vdmVUb1RvcCh0cnVlKTti Lm1vZGFsJiZkLmJpbmQoImtleXByZXNzLnVpLWRpYWxvZyIsZnVuY3Rpb24oZSl7 aWYoZS5rZXlDb2RlPT09Yy51aS5rZXlDb2RlLlRBQil7dmFyIGc9YygiOnRhYmJh YmxlIix0aGlzKSxmPWcuZmlsdGVyKCI6Zmlyc3QiKTtnPWcuZmlsdGVyKCI6bGFz dCIpO2lmKGUudGFyZ2V0PT09Z1swXSYmIWUuc2hpZnRLZXkpe2YuZm9jdXMoMSk7 cmV0dXJuIGZhbHNlfWVsc2UgaWYoZS50YXJnZXQ9PT0KZlswXSYmZS5zaGlmdEtl eSl7Zy5mb2N1cygxKTtyZXR1cm4gZmFsc2V9fX0pO2MoW10pLmFkZChkLmZpbmQo Ii51aS1kaWFsb2ctY29udGVudCA6dGFiYmFibGU6Zmlyc3QiKSkuYWRkKGQuZmlu ZCgiLnVpLWRpYWxvZy1idXR0b25wYW5lIDp0YWJiYWJsZTpmaXJzdCIpKS5hZGQo ZCkuZmlsdGVyKCI6Zmlyc3QiKS5mb2N1cygpO2EuX3RyaWdnZXIoIm9wZW4iKTth Ll9pc09wZW49dHJ1ZTtyZXR1cm4gYX19LF9jcmVhdGVCdXR0b25zOmZ1bmN0aW9u KGEpe3ZhciBiPXRoaXMsZD1mYWxzZSxlPWMoIjxkaXY+PC9kaXY+IikuYWRkQ2xh c3MoInVpLWRpYWxvZy1idXR0b25wYW5lIHVpLXdpZGdldC1jb250ZW50IHVpLWhl bHBlci1jbGVhcmZpeCIpO2IudWlEaWFsb2cuZmluZCgiLnVpLWRpYWxvZy1idXR0 b25wYW5lIikucmVtb3ZlKCk7dHlwZW9mIGE9PT0ib2JqZWN0IiYmYSE9PW51bGwm JmMuZWFjaChhLGZ1bmN0aW9uKCl7cmV0dXJuIShkPXRydWUpfSk7aWYoZCl7Yy5l YWNoKGEsCmZ1bmN0aW9uKGcsZil7Zz1jKCc8YnV0dG9uIHR5cGU9ImJ1dHRvbiI+ PC9idXR0b24+JykudGV4dChnKS5jbGljayhmdW5jdGlvbigpe2YuYXBwbHkoYi5l bGVtZW50WzBdLGFyZ3VtZW50cyl9KS5hcHBlbmRUbyhlKTtjLmZuLmJ1dHRvbiYm Zy5idXR0b24oKX0pO2UuYXBwZW5kVG8oYi51aURpYWxvZyl9fSxfbWFrZURyYWdn YWJsZTpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoZil7cmV0dXJue3Bvc2l0aW9uOmYu cG9zaXRpb24sb2Zmc2V0OmYub2Zmc2V0fX12YXIgYj10aGlzLGQ9Yi5vcHRpb25z LGU9Yyhkb2N1bWVudCksZztiLnVpRGlhbG9nLmRyYWdnYWJsZSh7Y2FuY2VsOiIu dWktZGlhbG9nLWNvbnRlbnQsIC51aS1kaWFsb2ctdGl0bGViYXItY2xvc2UiLGhh bmRsZToiLnVpLWRpYWxvZy10aXRsZWJhciIsY29udGFpbm1lbnQ6ImRvY3VtZW50 IixzdGFydDpmdW5jdGlvbihmLGgpe2c9ZC5oZWlnaHQ9PT0iYXV0byI/ImF1dG8i OmModGhpcykuaGVpZ2h0KCk7Yyh0aGlzKS5oZWlnaHQoYyh0aGlzKS5oZWlnaHQo KSkuYWRkQ2xhc3MoInVpLWRpYWxvZy1kcmFnZ2luZyIpOwpiLl90cmlnZ2VyKCJk cmFnU3RhcnQiLGYsYShoKSl9LGRyYWc6ZnVuY3Rpb24oZixoKXtiLl90cmlnZ2Vy KCJkcmFnIixmLGEoaCkpfSxzdG9wOmZ1bmN0aW9uKGYsaCl7ZC5wb3NpdGlvbj1b aC5wb3NpdGlvbi5sZWZ0LWUuc2Nyb2xsTGVmdCgpLGgucG9zaXRpb24udG9wLWUu c2Nyb2xsVG9wKCldO2ModGhpcykucmVtb3ZlQ2xhc3MoInVpLWRpYWxvZy1kcmFn Z2luZyIpLmhlaWdodChnKTtiLl90cmlnZ2VyKCJkcmFnU3RvcCIsZixhKGgpKTtj LnVpLmRpYWxvZy5vdmVybGF5LnJlc2l6ZSgpfX0pfSxfbWFrZVJlc2l6YWJsZTpm dW5jdGlvbihhKXtmdW5jdGlvbiBiKGYpe3JldHVybntvcmlnaW5hbFBvc2l0aW9u OmYub3JpZ2luYWxQb3NpdGlvbixvcmlnaW5hbFNpemU6Zi5vcmlnaW5hbFNpemUs cG9zaXRpb246Zi5wb3NpdGlvbixzaXplOmYuc2l6ZX19YT1hPT09dW5kZWZpbmVk P3RoaXMub3B0aW9ucy5yZXNpemFibGU6YTt2YXIgZD10aGlzLGU9ZC5vcHRpb25z LGc9ZC51aURpYWxvZy5jc3MoInBvc2l0aW9uIik7CmE9dHlwZW9mIGE9PT0ic3Ry aW5nIj9hOiJuLGUscyx3LHNlLHN3LG5lLG53IjtkLnVpRGlhbG9nLnJlc2l6YWJs ZSh7Y2FuY2VsOiIudWktZGlhbG9nLWNvbnRlbnQiLGNvbnRhaW5tZW50OiJkb2N1 bWVudCIsYWxzb1Jlc2l6ZTpkLmVsZW1lbnQsbWF4V2lkdGg6ZS5tYXhXaWR0aCxt YXhIZWlnaHQ6ZS5tYXhIZWlnaHQsbWluV2lkdGg6ZS5taW5XaWR0aCxtaW5IZWln aHQ6ZC5fbWluSGVpZ2h0KCksaGFuZGxlczphLHN0YXJ0OmZ1bmN0aW9uKGYsaCl7 Yyh0aGlzKS5hZGRDbGFzcygidWktZGlhbG9nLXJlc2l6aW5nIik7ZC5fdHJpZ2dl cigicmVzaXplU3RhcnQiLGYsYihoKSl9LHJlc2l6ZTpmdW5jdGlvbihmLGgpe2Qu X3RyaWdnZXIoInJlc2l6ZSIsZixiKGgpKX0sc3RvcDpmdW5jdGlvbihmLGgpe2Mo dGhpcykucmVtb3ZlQ2xhc3MoInVpLWRpYWxvZy1yZXNpemluZyIpO2UuaGVpZ2h0 PWModGhpcykuaGVpZ2h0KCk7ZS53aWR0aD1jKHRoaXMpLndpZHRoKCk7ZC5fdHJp Z2dlcigicmVzaXplU3RvcCIsCmYsYihoKSk7Yy51aS5kaWFsb2cub3ZlcmxheS5y ZXNpemUoKX19KS5jc3MoInBvc2l0aW9uIixnKS5maW5kKCIudWktcmVzaXphYmxl LXNlIikuYWRkQ2xhc3MoInVpLWljb24gdWktaWNvbi1ncmlwLWRpYWdvbmFsLXNl Iil9LF9taW5IZWlnaHQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnM7cmV0 dXJuIGEuaGVpZ2h0PT09ImF1dG8iP2EubWluSGVpZ2h0Ok1hdGgubWluKGEubWlu SGVpZ2h0LGEuaGVpZ2h0KX0sX3Bvc2l0aW9uOmZ1bmN0aW9uKGEpe3ZhciBiPVtd LGQ9WzAsMF07YT1hfHxjLnVpLmRpYWxvZy5wcm90b3R5cGUub3B0aW9ucy5wb3Np dGlvbjtpZih0eXBlb2YgYT09PSJzdHJpbmcifHx0eXBlb2YgYT09PSJvYmplY3Qi JiYiMCJpbiBhKXtiPWEuc3BsaXQ/YS5zcGxpdCgiICIpOlthWzBdLGFbMV1dO2lm KGIubGVuZ3RoPT09MSliWzFdPWJbMF07Yy5lYWNoKFsibGVmdCIsInRvcCJdLGZ1 bmN0aW9uKGUsZyl7aWYoK2JbZV09PT1iW2VdKXtkW2VdPWJbZV07YltlXT0KZ319 KX1lbHNlIGlmKHR5cGVvZiBhPT09Im9iamVjdCIpe2lmKCJsZWZ0ImluIGEpe2Jb MF09ImxlZnQiO2RbMF09YS5sZWZ0fWVsc2UgaWYoInJpZ2h0ImluIGEpe2JbMF09 InJpZ2h0IjtkWzBdPS1hLnJpZ2h0fWlmKCJ0b3AiaW4gYSl7YlsxXT0idG9wIjtk WzFdPWEudG9wfWVsc2UgaWYoImJvdHRvbSJpbiBhKXtiWzFdPSJib3R0b20iO2Rb MV09LWEuYm90dG9tfX0oYT10aGlzLnVpRGlhbG9nLmlzKCI6dmlzaWJsZSIpKXx8 dGhpcy51aURpYWxvZy5zaG93KCk7dGhpcy51aURpYWxvZy5jc3Moe3RvcDowLGxl ZnQ6MH0pLnBvc2l0aW9uKHtteTpiLmpvaW4oIiAiKSxhdDpiLmpvaW4oIiAiKSxv ZmZzZXQ6ZC5qb2luKCIgIiksb2Y6d2luZG93LGNvbGxpc2lvbjoiZml0Iix1c2lu ZzpmdW5jdGlvbihlKXt2YXIgZz1jKHRoaXMpLmNzcyhlKS5vZmZzZXQoKS50b3A7 ZzwwJiZjKHRoaXMpLmNzcygidG9wIixlLnRvcC1nKX19KTthfHx0aGlzLnVpRGlh bG9nLmhpZGUoKX0sX3NldE9wdGlvbjpmdW5jdGlvbihhLApiKXt2YXIgZD10aGlz LGU9ZC51aURpYWxvZyxnPWUuaXMoIjpkYXRhKHJlc2l6YWJsZSkiKSxmPWZhbHNl O3N3aXRjaChhKXtjYXNlICJiZWZvcmVjbG9zZSI6YT0iYmVmb3JlQ2xvc2UiO2Jy ZWFrO2Nhc2UgImJ1dHRvbnMiOmQuX2NyZWF0ZUJ1dHRvbnMoYik7YnJlYWs7Y2Fz ZSAiY2xvc2VUZXh0IjpkLnVpRGlhbG9nVGl0bGViYXJDbG9zZVRleHQudGV4dCgi IitiKTticmVhaztjYXNlICJkaWFsb2dDbGFzcyI6ZS5yZW1vdmVDbGFzcyhkLm9w dGlvbnMuZGlhbG9nQ2xhc3MpLmFkZENsYXNzKCJ1aS1kaWFsb2cgdWktd2lkZ2V0 IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgIitiKTticmVhaztjYXNl ICJkaXNhYmxlZCI6Yj9lLmFkZENsYXNzKCJ1aS1kaWFsb2ctZGlzYWJsZWQiKTpl LnJlbW92ZUNsYXNzKCJ1aS1kaWFsb2ctZGlzYWJsZWQiKTticmVhaztjYXNlICJk cmFnZ2FibGUiOmI/ZC5fbWFrZURyYWdnYWJsZSgpOmUuZHJhZ2dhYmxlKCJkZXN0 cm95Iik7YnJlYWs7CmNhc2UgImhlaWdodCI6Zj10cnVlO2JyZWFrO2Nhc2UgIm1h eEhlaWdodCI6ZyYmZS5yZXNpemFibGUoIm9wdGlvbiIsIm1heEhlaWdodCIsYik7 Zj10cnVlO2JyZWFrO2Nhc2UgIm1heFdpZHRoIjpnJiZlLnJlc2l6YWJsZSgib3B0 aW9uIiwibWF4V2lkdGgiLGIpO2Y9dHJ1ZTticmVhaztjYXNlICJtaW5IZWlnaHQi OmcmJmUucmVzaXphYmxlKCJvcHRpb24iLCJtaW5IZWlnaHQiLGIpO2Y9dHJ1ZTti cmVhaztjYXNlICJtaW5XaWR0aCI6ZyYmZS5yZXNpemFibGUoIm9wdGlvbiIsIm1p bldpZHRoIixiKTtmPXRydWU7YnJlYWs7Y2FzZSAicG9zaXRpb24iOmQuX3Bvc2l0 aW9uKGIpO2JyZWFrO2Nhc2UgInJlc2l6YWJsZSI6ZyYmIWImJmUucmVzaXphYmxl KCJkZXN0cm95Iik7ZyYmdHlwZW9mIGI9PT0ic3RyaW5nIiYmZS5yZXNpemFibGUo Im9wdGlvbiIsImhhbmRsZXMiLGIpOyFnJiZiIT09ZmFsc2UmJmQuX21ha2VSZXNp emFibGUoYik7YnJlYWs7Y2FzZSAidGl0bGUiOmMoIi51aS1kaWFsb2ctdGl0bGUi LApkLnVpRGlhbG9nVGl0bGViYXIpLmh0bWwoIiIrKGJ8fCImIzE2MDsiKSk7YnJl YWs7Y2FzZSAid2lkdGgiOmY9dHJ1ZTticmVha31jLldpZGdldC5wcm90b3R5cGUu X3NldE9wdGlvbi5hcHBseShkLGFyZ3VtZW50cyk7ZiYmZC5fc2l6ZSgpfSxfc2l6 ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucyxiO3RoaXMuZWxlbWVudC5j c3Moe3dpZHRoOiJhdXRvIixtaW5IZWlnaHQ6MCxoZWlnaHQ6MH0pO2I9dGhpcy51 aURpYWxvZy5jc3Moe2hlaWdodDoiYXV0byIsd2lkdGg6YS53aWR0aH0pLmhlaWdo dCgpO3RoaXMuZWxlbWVudC5jc3MoYS5oZWlnaHQ9PT0iYXV0byI/e21pbkhlaWdo dDpNYXRoLm1heChhLm1pbkhlaWdodC1iLDApLGhlaWdodDoiYXV0byJ9OnttaW5I ZWlnaHQ6MCxoZWlnaHQ6TWF0aC5tYXgoYS5oZWlnaHQtYiwwKX0pLnNob3coKTt0 aGlzLnVpRGlhbG9nLmlzKCI6ZGF0YShyZXNpemFibGUpIikmJnRoaXMudWlEaWFs b2cucmVzaXphYmxlKCJvcHRpb24iLCJtaW5IZWlnaHQiLAp0aGlzLl9taW5IZWln aHQoKSl9fSk7Yy5leHRlbmQoYy51aS5kaWFsb2cse3ZlcnNpb246IjEuOC4yIix1 dWlkOjAsbWF4WjowLGdldFRpdGxlSWQ6ZnVuY3Rpb24oYSl7YT1hLmF0dHIoImlk Iik7aWYoIWEpe3RoaXMudXVpZCs9MTthPXRoaXMudXVpZH1yZXR1cm4idWktZGlh bG9nLXRpdGxlLSIrYX0sb3ZlcmxheTpmdW5jdGlvbihhKXt0aGlzLiRlbD1jLnVp LmRpYWxvZy5vdmVybGF5LmNyZWF0ZShhKX19KTtjLmV4dGVuZChjLnVpLmRpYWxv Zy5vdmVybGF5LHtpbnN0YW5jZXM6W10sb2xkSW5zdGFuY2VzOltdLG1heFo6MCxl dmVudHM6Yy5tYXAoImZvY3VzLG1vdXNlZG93bixtb3VzZXVwLGtleWRvd24sa2V5 cHJlc3MsY2xpY2siLnNwbGl0KCIsIiksZnVuY3Rpb24oYSl7cmV0dXJuIGErIi5k aWFsb2ctb3ZlcmxheSJ9KS5qb2luKCIgIiksY3JlYXRlOmZ1bmN0aW9uKGEpe2lm KHRoaXMuaW5zdGFuY2VzLmxlbmd0aD09PTApe3NldFRpbWVvdXQoZnVuY3Rpb24o KXtjLnVpLmRpYWxvZy5vdmVybGF5Lmluc3RhbmNlcy5sZW5ndGgmJgpjKGRvY3Vt ZW50KS5iaW5kKGMudWkuZGlhbG9nLm92ZXJsYXkuZXZlbnRzLGZ1bmN0aW9uKGQp e3JldHVybiBjKGQudGFyZ2V0KS56SW5kZXgoKT49Yy51aS5kaWFsb2cub3Zlcmxh eS5tYXhafSl9LDEpO2MoZG9jdW1lbnQpLmJpbmQoImtleWRvd24uZGlhbG9nLW92 ZXJsYXkiLGZ1bmN0aW9uKGQpe2lmKGEub3B0aW9ucy5jbG9zZU9uRXNjYXBlJiZk LmtleUNvZGUmJmQua2V5Q29kZT09PWMudWkua2V5Q29kZS5FU0NBUEUpe2EuY2xv c2UoZCk7ZC5wcmV2ZW50RGVmYXVsdCgpfX0pO2Mod2luZG93KS5iaW5kKCJyZXNp emUuZGlhbG9nLW92ZXJsYXkiLGMudWkuZGlhbG9nLm92ZXJsYXkucmVzaXplKX12 YXIgYj0odGhpcy5vbGRJbnN0YW5jZXMucG9wKCl8fGMoIjxkaXY+PC9kaXY+Iiku YWRkQ2xhc3MoInVpLXdpZGdldC1vdmVybGF5IikpLmFwcGVuZFRvKGRvY3VtZW50 LmJvZHkpLmNzcyh7d2lkdGg6dGhpcy53aWR0aCgpLGhlaWdodDp0aGlzLmhlaWdo dCgpfSk7Yy5mbi5iZ2lmcmFtZSYmCmIuYmdpZnJhbWUoKTt0aGlzLmluc3RhbmNl cy5wdXNoKGIpO3JldHVybiBifSxkZXN0cm95OmZ1bmN0aW9uKGEpe3RoaXMub2xk SW5zdGFuY2VzLnB1c2godGhpcy5pbnN0YW5jZXMuc3BsaWNlKGMuaW5BcnJheShh LHRoaXMuaW5zdGFuY2VzKSwxKVswXSk7dGhpcy5pbnN0YW5jZXMubGVuZ3RoPT09 MCYmYyhbZG9jdW1lbnQsd2luZG93XSkudW5iaW5kKCIuZGlhbG9nLW92ZXJsYXki KTthLnJlbW92ZSgpO3ZhciBiPTA7Yy5lYWNoKHRoaXMuaW5zdGFuY2VzLGZ1bmN0 aW9uKCl7Yj1NYXRoLm1heChiLHRoaXMuY3NzKCJ6LWluZGV4IikpfSk7dGhpcy5t YXhaPWJ9LGhlaWdodDpmdW5jdGlvbigpe3ZhciBhLGI7aWYoYy5icm93c2VyLm1z aWUmJmMuYnJvd3Nlci52ZXJzaW9uPDcpe2E9TWF0aC5tYXgoZG9jdW1lbnQuZG9j dW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCxkb2N1bWVudC5ib2R5LnNjcm9sbEhl aWdodCk7Yj1NYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0 SGVpZ2h0LApkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCk7cmV0dXJuIGE8Yj9j KHdpbmRvdykuaGVpZ2h0KCkrInB4IjphKyJweCJ9ZWxzZSByZXR1cm4gYyhkb2N1 bWVudCkuaGVpZ2h0KCkrInB4In0sd2lkdGg6ZnVuY3Rpb24oKXt2YXIgYSxiO2lm KGMuYnJvd3Nlci5tc2llJiZjLmJyb3dzZXIudmVyc2lvbjw3KXthPU1hdGgubWF4 KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxXaWR0aCxkb2N1bWVudC5i b2R5LnNjcm9sbFdpZHRoKTtiPU1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxl bWVudC5vZmZzZXRXaWR0aCxkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoKTtyZXR1 cm4gYTxiP2Mod2luZG93KS53aWR0aCgpKyJweCI6YSsicHgifWVsc2UgcmV0dXJu IGMoZG9jdW1lbnQpLndpZHRoKCkrInB4In0scmVzaXplOmZ1bmN0aW9uKCl7dmFy IGE9YyhbXSk7Yy5lYWNoKGMudWkuZGlhbG9nLm92ZXJsYXkuaW5zdGFuY2VzLGZ1 bmN0aW9uKCl7YT1hLmFkZCh0aGlzKX0pO2EuY3NzKHt3aWR0aDowLApoZWlnaHQ6 MH0pLmNzcyh7d2lkdGg6Yy51aS5kaWFsb2cub3ZlcmxheS53aWR0aCgpLGhlaWdo dDpjLnVpLmRpYWxvZy5vdmVybGF5LmhlaWdodCgpfSl9fSk7Yy5leHRlbmQoYy51 aS5kaWFsb2cub3ZlcmxheS5wcm90b3R5cGUse2Rlc3Ryb3k6ZnVuY3Rpb24oKXtj LnVpLmRpYWxvZy5vdmVybGF5LmRlc3Ryb3kodGhpcy4kZWwpfX0pfSkoalF1ZXJ5 KTsKOy8qCiAqIGpRdWVyeSBVSSBTbGlkZXIgMS44LjIKICoKICogQ29weXJpZ2h0 IChjKSAyMDEwIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0 KQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKE1JVC1MSUNFTlNFLnR4 dCkKICogYW5kIEdQTCAoR1BMLUxJQ0VOU0UudHh0KSBsaWNlbnNlcy4KICoKICog aHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9TbGlkZXIKICoKICogRGVwZW5kczoK ICoJanF1ZXJ5LnVpLmNvcmUuanMKICoJanF1ZXJ5LnVpLm1vdXNlLmpzCiAqCWpx dWVyeS51aS53aWRnZXQuanMKICovCihmdW5jdGlvbihkKXtkLndpZGdldCgidWku c2xpZGVyIixkLnVpLm1vdXNlLHt3aWRnZXRFdmVudFByZWZpeDoic2xpZGUiLG9w dGlvbnM6e2FuaW1hdGU6ZmFsc2UsZGlzdGFuY2U6MCxtYXg6MTAwLG1pbjowLG9y aWVudGF0aW9uOiJob3Jpem9udGFsIixyYW5nZTpmYWxzZSxzdGVwOjEsdmFsdWU6 MCx2YWx1ZXM6bnVsbH0sX2NyZWF0ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMsYj10 aGlzLm9wdGlvbnM7dGhpcy5fbW91c2VTbGlkaW5nPXRoaXMuX2tleVNsaWRpbmc9 ZmFsc2U7dGhpcy5fYW5pbWF0ZU9mZj10cnVlO3RoaXMuX2hhbmRsZUluZGV4PW51 bGw7dGhpcy5fZGV0ZWN0T3JpZW50YXRpb24oKTt0aGlzLl9tb3VzZUluaXQoKTt0 aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXNsaWRlciB1aS1zbGlkZXItIit0aGlz Lm9yaWVudGF0aW9uKyIgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNv cm5lci1hbGwiKTtiLmRpc2FibGVkJiZ0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVp LXNsaWRlci1kaXNhYmxlZCB1aS1kaXNhYmxlZCIpOwp0aGlzLnJhbmdlPWQoW10p O2lmKGIucmFuZ2Upe2lmKGIucmFuZ2U9PT10cnVlKXt0aGlzLnJhbmdlPWQoIjxk aXY+PC9kaXY+Iik7aWYoIWIudmFsdWVzKWIudmFsdWVzPVt0aGlzLl92YWx1ZU1p bigpLHRoaXMuX3ZhbHVlTWluKCldO2lmKGIudmFsdWVzLmxlbmd0aCYmYi52YWx1 ZXMubGVuZ3RoIT09MiliLnZhbHVlcz1bYi52YWx1ZXNbMF0sYi52YWx1ZXNbMF1d fWVsc2UgdGhpcy5yYW5nZT1kKCI8ZGl2PjwvZGl2PiIpO3RoaXMucmFuZ2UuYXBw ZW5kVG8odGhpcy5lbGVtZW50KS5hZGRDbGFzcygidWktc2xpZGVyLXJhbmdlIik7 aWYoYi5yYW5nZT09PSJtaW4ifHxiLnJhbmdlPT09Im1heCIpdGhpcy5yYW5nZS5h ZGRDbGFzcygidWktc2xpZGVyLXJhbmdlLSIrYi5yYW5nZSk7dGhpcy5yYW5nZS5h ZGRDbGFzcygidWktd2lkZ2V0LWhlYWRlciIpfWQoIi51aS1zbGlkZXItaGFuZGxl Iix0aGlzLmVsZW1lbnQpLmxlbmd0aD09PTAmJmQoIjxhIGhyZWY9JyMnPjwvYT4i KS5hcHBlbmRUbyh0aGlzLmVsZW1lbnQpLmFkZENsYXNzKCJ1aS1zbGlkZXItaGFu ZGxlIik7CmlmKGIudmFsdWVzJiZiLnZhbHVlcy5sZW5ndGgpZm9yKDtkKCIudWkt c2xpZGVyLWhhbmRsZSIsdGhpcy5lbGVtZW50KS5sZW5ndGg8Yi52YWx1ZXMubGVu Z3RoOylkKCI8YSBocmVmPScjJz48L2E+IikuYXBwZW5kVG8odGhpcy5lbGVtZW50 KS5hZGRDbGFzcygidWktc2xpZGVyLWhhbmRsZSIpO3RoaXMuaGFuZGxlcz1kKCIu dWktc2xpZGVyLWhhbmRsZSIsdGhpcy5lbGVtZW50KS5hZGRDbGFzcygidWktc3Rh dGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIik7dGhpcy5oYW5kbGU9dGhpcy5oYW5k bGVzLmVxKDApO3RoaXMuaGFuZGxlcy5hZGQodGhpcy5yYW5nZSkuZmlsdGVyKCJh IikuY2xpY2soZnVuY3Rpb24oYyl7Yy5wcmV2ZW50RGVmYXVsdCgpfSkuaG92ZXIo ZnVuY3Rpb24oKXtiLmRpc2FibGVkfHxkKHRoaXMpLmFkZENsYXNzKCJ1aS1zdGF0 ZS1ob3ZlciIpfSxmdW5jdGlvbigpe2QodGhpcykucmVtb3ZlQ2xhc3MoInVpLXN0 YXRlLWhvdmVyIil9KS5mb2N1cyhmdW5jdGlvbigpe2lmKGIuZGlzYWJsZWQpZCh0 aGlzKS5ibHVyKCk7CmVsc2V7ZCgiLnVpLXNsaWRlciAudWktc3RhdGUtZm9jdXMi KS5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKTtkKHRoaXMpLmFkZENsYXNz KCJ1aS1zdGF0ZS1mb2N1cyIpfX0pLmJsdXIoZnVuY3Rpb24oKXtkKHRoaXMpLnJl bW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfSk7dGhpcy5oYW5kbGVzLmVhY2go ZnVuY3Rpb24oYyl7ZCh0aGlzKS5kYXRhKCJpbmRleC51aS1zbGlkZXItaGFuZGxl IixjKX0pO3RoaXMuaGFuZGxlcy5rZXlkb3duKGZ1bmN0aW9uKGMpe3ZhciBlPXRy dWUsZj1kKHRoaXMpLmRhdGEoImluZGV4LnVpLXNsaWRlci1oYW5kbGUiKSxnLGgs aTtpZighYS5vcHRpb25zLmRpc2FibGVkKXtzd2l0Y2goYy5rZXlDb2RlKXtjYXNl IGQudWkua2V5Q29kZS5IT01FOmNhc2UgZC51aS5rZXlDb2RlLkVORDpjYXNlIGQu dWkua2V5Q29kZS5QQUdFX1VQOmNhc2UgZC51aS5rZXlDb2RlLlBBR0VfRE9XTjpj YXNlIGQudWkua2V5Q29kZS5VUDpjYXNlIGQudWkua2V5Q29kZS5SSUdIVDpjYXNl IGQudWkua2V5Q29kZS5ET1dOOmNhc2UgZC51aS5rZXlDb2RlLkxFRlQ6ZT0KZmFs c2U7aWYoIWEuX2tleVNsaWRpbmcpe2EuX2tleVNsaWRpbmc9dHJ1ZTtkKHRoaXMp LmFkZENsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKTtnPWEuX3N0YXJ0KGMsZik7aWYo Zz09PWZhbHNlKXJldHVybn1icmVha31pPWEub3B0aW9ucy5zdGVwO2c9YS5vcHRp b25zLnZhbHVlcyYmYS5vcHRpb25zLnZhbHVlcy5sZW5ndGg/KGg9YS52YWx1ZXMo ZikpOihoPWEudmFsdWUoKSk7c3dpdGNoKGMua2V5Q29kZSl7Y2FzZSBkLnVpLmtl eUNvZGUuSE9NRTpoPWEuX3ZhbHVlTWluKCk7YnJlYWs7Y2FzZSBkLnVpLmtleUNv ZGUuRU5EOmg9YS5fdmFsdWVNYXgoKTticmVhaztjYXNlIGQudWkua2V5Q29kZS5Q QUdFX1VQOmg9YS5fdHJpbUFsaWduVmFsdWUoZysoYS5fdmFsdWVNYXgoKS1hLl92 YWx1ZU1pbigpKS81KTticmVhaztjYXNlIGQudWkua2V5Q29kZS5QQUdFX0RPV046 aD1hLl90cmltQWxpZ25WYWx1ZShnLShhLl92YWx1ZU1heCgpLWEuX3ZhbHVlTWlu KCkpLzUpO2JyZWFrO2Nhc2UgZC51aS5rZXlDb2RlLlVQOmNhc2UgZC51aS5rZXlD b2RlLlJJR0hUOmlmKGc9PT0KYS5fdmFsdWVNYXgoKSlyZXR1cm47aD1hLl90cmlt QWxpZ25WYWx1ZShnK2kpO2JyZWFrO2Nhc2UgZC51aS5rZXlDb2RlLkRPV046Y2Fz ZSBkLnVpLmtleUNvZGUuTEVGVDppZihnPT09YS5fdmFsdWVNaW4oKSlyZXR1cm47 aD1hLl90cmltQWxpZ25WYWx1ZShnLWkpO2JyZWFrfWEuX3NsaWRlKGMsZixoKTty ZXR1cm4gZX19KS5rZXl1cChmdW5jdGlvbihjKXt2YXIgZT1kKHRoaXMpLmRhdGEo ImluZGV4LnVpLXNsaWRlci1oYW5kbGUiKTtpZihhLl9rZXlTbGlkaW5nKXthLl9r ZXlTbGlkaW5nPWZhbHNlO2EuX3N0b3AoYyxlKTthLl9jaGFuZ2UoYyxlKTtkKHRo aXMpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKX19KTt0aGlzLl9yZWZy ZXNoVmFsdWUoKTt0aGlzLl9hbmltYXRlT2ZmPWZhbHNlfSxkZXN0cm95OmZ1bmN0 aW9uKCl7dGhpcy5oYW5kbGVzLnJlbW92ZSgpO3RoaXMucmFuZ2UucmVtb3ZlKCk7 dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zbGlkZXIgdWktc2xpZGVyLWhv cml6b250YWwgdWktc2xpZGVyLXZlcnRpY2FsIHVpLXNsaWRlci1kaXNhYmxlZCB1 aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCIpLnJlbW92 ZURhdGEoInNsaWRlciIpLnVuYmluZCgiLnNsaWRlciIpOwp0aGlzLl9tb3VzZURl c3Ryb3koKTtyZXR1cm4gdGhpc30sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbihhKXt2 YXIgYj10aGlzLm9wdGlvbnMsYyxlLGYsZyxoLGk7aWYoYi5kaXNhYmxlZClyZXR1 cm4gZmFsc2U7dGhpcy5lbGVtZW50U2l6ZT17d2lkdGg6dGhpcy5lbGVtZW50Lm91 dGVyV2lkdGgoKSxoZWlnaHQ6dGhpcy5lbGVtZW50Lm91dGVySGVpZ2h0KCl9O3Ro aXMuZWxlbWVudE9mZnNldD10aGlzLmVsZW1lbnQub2Zmc2V0KCk7Yz17eDphLnBh Z2VYLHk6YS5wYWdlWX07ZT10aGlzLl9ub3JtVmFsdWVGcm9tTW91c2UoYyk7Zj10 aGlzLl92YWx1ZU1heCgpLXRoaXMuX3ZhbHVlTWluKCkrMTtoPXRoaXM7dGhpcy5o YW5kbGVzLmVhY2goZnVuY3Rpb24oail7dmFyIGs9TWF0aC5hYnMoZS1oLnZhbHVl cyhqKSk7aWYoZj5rKXtmPWs7Zz1kKHRoaXMpO2k9an19KTtpZihiLnJhbmdlPT09 dHJ1ZSYmdGhpcy52YWx1ZXMoMSk9PT1iLm1pbil7aSs9MTtnPWQodGhpcy5oYW5k bGVzW2ldKX1pZih0aGlzLl9zdGFydChhLAppKT09PWZhbHNlKXJldHVybiBmYWxz ZTt0aGlzLl9tb3VzZVNsaWRpbmc9dHJ1ZTtoLl9oYW5kbGVJbmRleD1pO2cuYWRk Q2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLmZvY3VzKCk7Yj1nLm9mZnNldCgpO3Ro aXMuX2NsaWNrT2Zmc2V0PSFkKGEudGFyZ2V0KS5wYXJlbnRzKCkuYW5kU2VsZigp LmlzKCIudWktc2xpZGVyLWhhbmRsZSIpP3tsZWZ0OjAsdG9wOjB9OntsZWZ0OmEu cGFnZVgtYi5sZWZ0LWcud2lkdGgoKS8yLHRvcDphLnBhZ2VZLWIudG9wLWcuaGVp Z2h0KCkvMi0ocGFyc2VJbnQoZy5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHww KS0ocGFyc2VJbnQoZy5jc3MoImJvcmRlckJvdHRvbVdpZHRoIiksMTApfHwwKSso cGFyc2VJbnQoZy5jc3MoIm1hcmdpblRvcCIpLDEwKXx8MCl9O2U9dGhpcy5fbm9y bVZhbHVlRnJvbU1vdXNlKGMpO3RoaXMuX3NsaWRlKGEsaSxlKTtyZXR1cm4gdGhp cy5fYW5pbWF0ZU9mZj10cnVlfSxfbW91c2VTdGFydDpmdW5jdGlvbigpe3JldHVy biB0cnVlfSwKX21vdXNlRHJhZzpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9ub3Jt VmFsdWVGcm9tTW91c2Uoe3g6YS5wYWdlWCx5OmEucGFnZVl9KTt0aGlzLl9zbGlk ZShhLHRoaXMuX2hhbmRsZUluZGV4LGIpO3JldHVybiBmYWxzZX0sX21vdXNlU3Rv cDpmdW5jdGlvbihhKXt0aGlzLmhhbmRsZXMucmVtb3ZlQ2xhc3MoInVpLXN0YXRl LWFjdGl2ZSIpO3RoaXMuX21vdXNlU2xpZGluZz1mYWxzZTt0aGlzLl9zdG9wKGEs dGhpcy5faGFuZGxlSW5kZXgpO3RoaXMuX2NoYW5nZShhLHRoaXMuX2hhbmRsZUlu ZGV4KTt0aGlzLl9jbGlja09mZnNldD10aGlzLl9oYW5kbGVJbmRleD1udWxsO3Jl dHVybiB0aGlzLl9hbmltYXRlT2ZmPWZhbHNlfSxfZGV0ZWN0T3JpZW50YXRpb246 ZnVuY3Rpb24oKXt0aGlzLm9yaWVudGF0aW9uPXRoaXMub3B0aW9ucy5vcmllbnRh dGlvbj09PSJ2ZXJ0aWNhbCI/InZlcnRpY2FsIjoiaG9yaXpvbnRhbCJ9LF9ub3Jt VmFsdWVGcm9tTW91c2U6ZnVuY3Rpb24oYSl7dmFyIGI7CmlmKHRoaXMub3JpZW50 YXRpb249PT0iaG9yaXpvbnRhbCIpe2I9dGhpcy5lbGVtZW50U2l6ZS53aWR0aDth PWEueC10aGlzLmVsZW1lbnRPZmZzZXQubGVmdC0odGhpcy5fY2xpY2tPZmZzZXQ/ dGhpcy5fY2xpY2tPZmZzZXQubGVmdDowKX1lbHNle2I9dGhpcy5lbGVtZW50U2l6 ZS5oZWlnaHQ7YT1hLnktdGhpcy5lbGVtZW50T2Zmc2V0LnRvcC0odGhpcy5fY2xp Y2tPZmZzZXQ/dGhpcy5fY2xpY2tPZmZzZXQudG9wOjApfWI9YS9iO2lmKGI+MSli PTE7aWYoYjwwKWI9MDtpZih0aGlzLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIili PTEtYjthPXRoaXMuX3ZhbHVlTWF4KCktdGhpcy5fdmFsdWVNaW4oKTtyZXR1cm4g dGhpcy5fdHJpbUFsaWduVmFsdWUodGhpcy5fdmFsdWVNaW4oKStiKmEpfSxfc3Rh cnQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz17aGFuZGxlOnRoaXMuaGFuZGxlc1tiXSx2 YWx1ZTp0aGlzLnZhbHVlKCl9O2lmKHRoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMu b3B0aW9ucy52YWx1ZXMubGVuZ3RoKXtjLnZhbHVlPQp0aGlzLnZhbHVlcyhiKTtj LnZhbHVlcz10aGlzLnZhbHVlcygpfXJldHVybiB0aGlzLl90cmlnZ2VyKCJzdGFy dCIsYSxjKX0sX3NsaWRlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZTtpZih0aGlzLm9w dGlvbnMudmFsdWVzJiZ0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aCl7ZT10aGlz LnZhbHVlcyhiPzA6MSk7aWYodGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGg9PT0y JiZ0aGlzLm9wdGlvbnMucmFuZ2U9PT10cnVlJiYoYj09PTAmJmM+ZXx8Yj09PTEm JmM8ZSkpYz1lO2lmKGMhPT10aGlzLnZhbHVlcyhiKSl7ZT10aGlzLnZhbHVlcygp O2VbYl09YzthPXRoaXMuX3RyaWdnZXIoInNsaWRlIixhLHtoYW5kbGU6dGhpcy5o YW5kbGVzW2JdLHZhbHVlOmMsdmFsdWVzOmV9KTt0aGlzLnZhbHVlcyhiPzA6MSk7 YSE9PWZhbHNlJiZ0aGlzLnZhbHVlcyhiLGMsdHJ1ZSl9fWVsc2UgaWYoYyE9PXRo aXMudmFsdWUoKSl7YT10aGlzLl90cmlnZ2VyKCJzbGlkZSIsYSx7aGFuZGxlOnRo aXMuaGFuZGxlc1tiXSwKdmFsdWU6Y30pO2EhPT1mYWxzZSYmdGhpcy52YWx1ZShj KX19LF9zdG9wOmZ1bmN0aW9uKGEsYil7dmFyIGM9e2hhbmRsZTp0aGlzLmhhbmRs ZXNbYl0sdmFsdWU6dGhpcy52YWx1ZSgpfTtpZih0aGlzLm9wdGlvbnMudmFsdWVz JiZ0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aCl7Yy52YWx1ZT10aGlzLnZhbHVl cyhiKTtjLnZhbHVlcz10aGlzLnZhbHVlcygpfXRoaXMuX3RyaWdnZXIoInN0b3Ai LGEsYyl9LF9jaGFuZ2U6ZnVuY3Rpb24oYSxiKXtpZighdGhpcy5fa2V5U2xpZGlu ZyYmIXRoaXMuX21vdXNlU2xpZGluZyl7dmFyIGM9e2hhbmRsZTp0aGlzLmhhbmRs ZXNbYl0sdmFsdWU6dGhpcy52YWx1ZSgpfTtpZih0aGlzLm9wdGlvbnMudmFsdWVz JiZ0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aCl7Yy52YWx1ZT10aGlzLnZhbHVl cyhiKTtjLnZhbHVlcz10aGlzLnZhbHVlcygpfXRoaXMuX3RyaWdnZXIoImNoYW5n ZSIsYSxjKX19LHZhbHVlOmZ1bmN0aW9uKGEpe2lmKGFyZ3VtZW50cy5sZW5ndGgp e3RoaXMub3B0aW9ucy52YWx1ZT0KdGhpcy5fdHJpbUFsaWduVmFsdWUoYSk7dGhp cy5fcmVmcmVzaFZhbHVlKCk7dGhpcy5fY2hhbmdlKG51bGwsMCl9cmV0dXJuIHRo aXMuX3ZhbHVlKCl9LHZhbHVlczpmdW5jdGlvbihhLGIpe3ZhciBjLGUsZjtpZihh cmd1bWVudHMubGVuZ3RoPjEpe3RoaXMub3B0aW9ucy52YWx1ZXNbYV09dGhpcy5f dHJpbUFsaWduVmFsdWUoYik7dGhpcy5fcmVmcmVzaFZhbHVlKCk7dGhpcy5fY2hh bmdlKG51bGwsYSl9aWYoYXJndW1lbnRzLmxlbmd0aClpZihkLmlzQXJyYXkoYXJn dW1lbnRzWzBdKSl7Yz10aGlzLm9wdGlvbnMudmFsdWVzO2U9YXJndW1lbnRzWzBd O2ZvcihmPTA7ZjxjLmxlbmd0aDtmKz0xKXtjW2ZdPXRoaXMuX3RyaW1BbGlnblZh bHVlKGVbZl0pO3RoaXMuX2NoYW5nZShudWxsLGYpfXRoaXMuX3JlZnJlc2hWYWx1 ZSgpfWVsc2UgcmV0dXJuIHRoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9u cy52YWx1ZXMubGVuZ3RoP3RoaXMuX3ZhbHVlcyhhKTp0aGlzLnZhbHVlKCk7CmVs c2UgcmV0dXJuIHRoaXMuX3ZhbHVlcygpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGEs Yil7dmFyIGMsZT0wO2lmKGQuaXNBcnJheSh0aGlzLm9wdGlvbnMudmFsdWVzKSll PXRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoO2QuV2lkZ2V0LnByb3RvdHlwZS5f c2V0T3B0aW9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtzd2l0Y2goYSl7Y2FzZSAi ZGlzYWJsZWQiOmlmKGIpe3RoaXMuaGFuZGxlcy5maWx0ZXIoIi51aS1zdGF0ZS1m b2N1cyIpLmJsdXIoKTt0aGlzLmhhbmRsZXMucmVtb3ZlQ2xhc3MoInVpLXN0YXRl LWhvdmVyIik7dGhpcy5oYW5kbGVzLmF0dHIoImRpc2FibGVkIiwiZGlzYWJsZWQi KTt0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLWRpc2FibGVkIil9ZWxzZXt0aGlz LmhhbmRsZXMucmVtb3ZlQXR0cigiZGlzYWJsZWQiKTt0aGlzLmVsZW1lbnQucmVt b3ZlQ2xhc3MoInVpLWRpc2FibGVkIil9YnJlYWs7Y2FzZSAib3JpZW50YXRpb24i OnRoaXMuX2RldGVjdE9yaWVudGF0aW9uKCk7CnRoaXMuZWxlbWVudC5yZW1vdmVD bGFzcygidWktc2xpZGVyLWhvcml6b250YWwgdWktc2xpZGVyLXZlcnRpY2FsIiku YWRkQ2xhc3MoInVpLXNsaWRlci0iK3RoaXMub3JpZW50YXRpb24pO3RoaXMuX3Jl ZnJlc2hWYWx1ZSgpO2JyZWFrO2Nhc2UgInZhbHVlIjp0aGlzLl9hbmltYXRlT2Zm PXRydWU7dGhpcy5fcmVmcmVzaFZhbHVlKCk7dGhpcy5fY2hhbmdlKG51bGwsMCk7 dGhpcy5fYW5pbWF0ZU9mZj1mYWxzZTticmVhaztjYXNlICJ2YWx1ZXMiOnRoaXMu X2FuaW1hdGVPZmY9dHJ1ZTt0aGlzLl9yZWZyZXNoVmFsdWUoKTtmb3IoYz0wO2M8 ZTtjKz0xKXRoaXMuX2NoYW5nZShudWxsLGMpO3RoaXMuX2FuaW1hdGVPZmY9ZmFs c2U7YnJlYWt9fSxfdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnMu dmFsdWU7cmV0dXJuIGE9dGhpcy5fdHJpbUFsaWduVmFsdWUoYSl9LF92YWx1ZXM6 ZnVuY3Rpb24oYSl7dmFyIGIsYztpZihhcmd1bWVudHMubGVuZ3RoKXtiPXRoaXMu b3B0aW9ucy52YWx1ZXNbYV07CnJldHVybiBiPXRoaXMuX3RyaW1BbGlnblZhbHVl KGIpfWVsc2V7Yj10aGlzLm9wdGlvbnMudmFsdWVzLnNsaWNlKCk7Zm9yKGM9MDtj PGIubGVuZ3RoO2MrPTEpYltjXT10aGlzLl90cmltQWxpZ25WYWx1ZShiW2NdKTty ZXR1cm4gYn19LF90cmltQWxpZ25WYWx1ZTpmdW5jdGlvbihhKXtpZihhPHRoaXMu X3ZhbHVlTWluKCkpcmV0dXJuIHRoaXMuX3ZhbHVlTWluKCk7aWYoYT50aGlzLl92 YWx1ZU1heCgpKXJldHVybiB0aGlzLl92YWx1ZU1heCgpO3ZhciBiPXRoaXMub3B0 aW9ucy5zdGVwPjA/dGhpcy5vcHRpb25zLnN0ZXA6MSxjPWElYjthPWEtYztpZihN YXRoLmFicyhjKSoyPj1iKWErPWM+MD9iOi1iO3JldHVybiBwYXJzZUZsb2F0KGEu dG9GaXhlZCg1KSl9LF92YWx1ZU1pbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9w dGlvbnMubWlufSxfdmFsdWVNYXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRp b25zLm1heH0sX3JlZnJlc2hWYWx1ZTpmdW5jdGlvbigpe3ZhciBhPQp0aGlzLm9w dGlvbnMucmFuZ2UsYj10aGlzLm9wdGlvbnMsYz10aGlzLGU9IXRoaXMuX2FuaW1h dGVPZmY/Yi5hbmltYXRlOmZhbHNlLGYsZz17fSxoLGksaixrO2lmKHRoaXMub3B0 aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoKXRoaXMuaGFu ZGxlcy5lYWNoKGZ1bmN0aW9uKGwpe2Y9KGMudmFsdWVzKGwpLWMuX3ZhbHVlTWlu KCkpLyhjLl92YWx1ZU1heCgpLWMuX3ZhbHVlTWluKCkpKjEwMDtnW2Mub3JpZW50 YXRpb249PT0iaG9yaXpvbnRhbCI/ImxlZnQiOiJib3R0b20iXT1mKyIlIjtkKHRo aXMpLnN0b3AoMSwxKVtlPyJhbmltYXRlIjoiY3NzIl0oZyxiLmFuaW1hdGUpO2lm KGMub3B0aW9ucy5yYW5nZT09PXRydWUpaWYoYy5vcmllbnRhdGlvbj09PSJob3Jp em9udGFsIil7aWYobD09PTApYy5yYW5nZS5zdG9wKDEsMSlbZT8iYW5pbWF0ZSI6 ImNzcyJdKHtsZWZ0OmYrIiUifSxiLmFuaW1hdGUpO2lmKGw9PT0xKWMucmFuZ2Vb ZT8iYW5pbWF0ZSI6ImNzcyJdKHt3aWR0aDpmLQpoKyIlIn0se3F1ZXVlOmZhbHNl LGR1cmF0aW9uOmIuYW5pbWF0ZX0pfWVsc2V7aWYobD09PTApYy5yYW5nZS5zdG9w KDEsMSlbZT8iYW5pbWF0ZSI6ImNzcyJdKHtib3R0b206ZisiJSJ9LGIuYW5pbWF0 ZSk7aWYobD09PTEpYy5yYW5nZVtlPyJhbmltYXRlIjoiY3NzIl0oe2hlaWdodDpm LWgrIiUifSx7cXVldWU6ZmFsc2UsZHVyYXRpb246Yi5hbmltYXRlfSl9aD1mfSk7 ZWxzZXtpPXRoaXMudmFsdWUoKTtqPXRoaXMuX3ZhbHVlTWluKCk7az10aGlzLl92 YWx1ZU1heCgpO2Y9ayE9PWo/KGktaikvKGstaikqMTAwOjA7Z1tjLm9yaWVudGF0 aW9uPT09Imhvcml6b250YWwiPyJsZWZ0IjoiYm90dG9tIl09ZisiJSI7dGhpcy5o YW5kbGUuc3RvcCgxLDEpW2U/ImFuaW1hdGUiOiJjc3MiXShnLGIuYW5pbWF0ZSk7 aWYoYT09PSJtaW4iJiZ0aGlzLm9yaWVudGF0aW9uPT09Imhvcml6b250YWwiKXRo aXMucmFuZ2Uuc3RvcCgxLDEpW2U/ImFuaW1hdGUiOiJjc3MiXSh7d2lkdGg6Zisi JSJ9LApiLmFuaW1hdGUpO2lmKGE9PT0ibWF4IiYmdGhpcy5vcmllbnRhdGlvbj09 PSJob3Jpem9udGFsIil0aGlzLnJhbmdlW2U/ImFuaW1hdGUiOiJjc3MiXSh7d2lk dGg6MTAwLWYrIiUifSx7cXVldWU6ZmFsc2UsZHVyYXRpb246Yi5hbmltYXRlfSk7 aWYoYT09PSJtaW4iJiZ0aGlzLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIil0aGlz LnJhbmdlLnN0b3AoMSwxKVtlPyJhbmltYXRlIjoiY3NzIl0oe2hlaWdodDpmKyIl In0sYi5hbmltYXRlKTtpZihhPT09Im1heCImJnRoaXMub3JpZW50YXRpb249PT0i dmVydGljYWwiKXRoaXMucmFuZ2VbZT8iYW5pbWF0ZSI6ImNzcyJdKHtoZWlnaHQ6 MTAwLWYrIiUifSx7cXVldWU6ZmFsc2UsZHVyYXRpb246Yi5hbmltYXRlfSl9fX0p O2QuZXh0ZW5kKGQudWkuc2xpZGVyLHt2ZXJzaW9uOiIxLjguMiJ9KX0pKGpRdWVy eSk7CjsvKgogKiBqUXVlcnkgVUkgVGFicyAxLjguMgogKgogKiBDb3B5cmlnaHQg KGMpIDIwMTAgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQp CiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCAoTUlULUxJQ0VOU0UudHh0 KQogKiBhbmQgR1BMIChHUEwtTElDRU5TRS50eHQpIGxpY2Vuc2VzLgogKgogKiBo dHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL1RhYnMKICoKICogRGVwZW5kczoKICoJ anF1ZXJ5LnVpLmNvcmUuanMKICoJanF1ZXJ5LnVpLndpZGdldC5qcwogKi8KKGZ1 bmN0aW9uKGQpe2Z1bmN0aW9uIHMoKXtyZXR1cm4rK3V9ZnVuY3Rpb24gdigpe3Jl dHVybisrd312YXIgdT0wLHc9MDtkLndpZGdldCgidWkudGFicyIse29wdGlvbnM6 e2FkZDpudWxsLGFqYXhPcHRpb25zOm51bGwsY2FjaGU6ZmFsc2UsY29va2llOm51 bGwsY29sbGFwc2libGU6ZmFsc2UsZGlzYWJsZTpudWxsLGRpc2FibGVkOltdLGVu YWJsZTpudWxsLGV2ZW50OiJjbGljayIsZng6bnVsbCxpZFByZWZpeDoidWktdGFi cy0iLGxvYWQ6bnVsbCxwYW5lbFRlbXBsYXRlOiI8ZGl2PjwvZGl2PiIscmVtb3Zl Om51bGwsc2VsZWN0Om51bGwsc2hvdzpudWxsLHNwaW5uZXI6IjxlbT5Mb2FkaW5n JiM4MjMwOzwvZW0+Iix0YWJUZW1wbGF0ZTonPGxpPjxhIGhyZWY9IiN7aHJlZn0i PjxzcGFuPiN7bGFiZWx9PC9zcGFuPjwvYT48L2xpPid9LF9jcmVhdGU6ZnVuY3Rp b24oKXt0aGlzLl90YWJpZnkodHJ1ZSl9LF9zZXRPcHRpb246ZnVuY3Rpb24oYyxl KXtpZihjPT0ic2VsZWN0ZWQiKXRoaXMub3B0aW9ucy5jb2xsYXBzaWJsZSYmCmU9 PXRoaXMub3B0aW9ucy5zZWxlY3RlZHx8dGhpcy5zZWxlY3QoZSk7ZWxzZXt0aGlz Lm9wdGlvbnNbY109ZTt0aGlzLl90YWJpZnkoKX19LF90YWJJZDpmdW5jdGlvbihj KXtyZXR1cm4gYy50aXRsZSYmYy50aXRsZS5yZXBsYWNlKC9ccy9nLCJfIikucmVw bGFjZSgvW15BLVphLXowLTlcLV86XC5dL2csIiIpfHx0aGlzLm9wdGlvbnMuaWRQ cmVmaXgrcygpfSxfc2FuaXRpemVTZWxlY3RvcjpmdW5jdGlvbihjKXtyZXR1cm4g Yy5yZXBsYWNlKC86L2csIlxcOiIpfSxfY29va2llOmZ1bmN0aW9uKCl7dmFyIGM9 dGhpcy5jb29raWV8fCh0aGlzLmNvb2tpZT10aGlzLm9wdGlvbnMuY29va2llLm5h bWV8fCJ1aS10YWJzLSIrdigpKTtyZXR1cm4gZC5jb29raWUuYXBwbHkobnVsbCxb Y10uY29uY2F0KGQubWFrZUFycmF5KGFyZ3VtZW50cykpKX0sX3VpOmZ1bmN0aW9u KGMsZSl7cmV0dXJue3RhYjpjLHBhbmVsOmUsaW5kZXg6dGhpcy5hbmNob3JzLmlu ZGV4KGMpfX0sX2NsZWFudXA6ZnVuY3Rpb24oKXt0aGlzLmxpcy5maWx0ZXIoIi51 aS1zdGF0ZS1wcm9jZXNzaW5nIikucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLXByb2Nl c3NpbmciKS5maW5kKCJzcGFuOmRhdGEobGFiZWwudGFicykiKS5lYWNoKGZ1bmN0 aW9uKCl7dmFyIGM9CmQodGhpcyk7Yy5odG1sKGMuZGF0YSgibGFiZWwudGFicyIp KS5yZW1vdmVEYXRhKCJsYWJlbC50YWJzIil9KX0sX3RhYmlmeTpmdW5jdGlvbihj KXtmdW5jdGlvbiBlKGcsZil7Zy5jc3Moe2Rpc3BsYXk6IiJ9KTshZC5zdXBwb3J0 Lm9wYWNpdHkmJmYub3BhY2l0eSYmZ1swXS5zdHlsZS5yZW1vdmVBdHRyaWJ1dGUo ImZpbHRlciIpfXRoaXMubGlzdD10aGlzLmVsZW1lbnQuZmluZCgib2wsdWwiKS5l cSgwKTt0aGlzLmxpcz1kKCJsaTpoYXMoYVtocmVmXSkiLHRoaXMubGlzdCk7dGhp cy5hbmNob3JzPXRoaXMubGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBkKCJhIix0 aGlzKVswXX0pO3RoaXMucGFuZWxzPWQoW10pO3ZhciBhPXRoaXMsYj10aGlzLm9w dGlvbnMsaD0vXiMuKy87dGhpcy5hbmNob3JzLmVhY2goZnVuY3Rpb24oZyxmKXt2 YXIgaj1kKGYpLmF0dHIoImhyZWYiKSxsPWouc3BsaXQoIiMiKVswXSxwO2lmKGwm JihsPT09bG9jYXRpb24udG9TdHJpbmcoKS5zcGxpdCgiIyIpWzBdfHwKKHA9ZCgi YmFzZSIpWzBdKSYmbD09PXAuaHJlZikpe2o9Zi5oYXNoO2YuaHJlZj1qfWlmKGgu dGVzdChqKSlhLnBhbmVscz1hLnBhbmVscy5hZGQoYS5fc2FuaXRpemVTZWxlY3Rv cihqKSk7ZWxzZSBpZihqIT0iIyIpe2QuZGF0YShmLCJocmVmLnRhYnMiLGopO2Qu ZGF0YShmLCJsb2FkLnRhYnMiLGoucmVwbGFjZSgvIy4qJC8sIiIpKTtqPWEuX3Rh YklkKGYpO2YuaHJlZj0iIyIrajtmPWQoIiMiK2opO2lmKCFmLmxlbmd0aCl7Zj1k KGIucGFuZWxUZW1wbGF0ZSkuYXR0cigiaWQiLGopLmFkZENsYXNzKCJ1aS10YWJz LXBhbmVsIHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1ib3R0b20iKS5pbnNl cnRBZnRlcihhLnBhbmVsc1tnLTFdfHxhLmxpc3QpO2YuZGF0YSgiZGVzdHJveS50 YWJzIix0cnVlKX1hLnBhbmVscz1hLnBhbmVscy5hZGQoZil9ZWxzZSBiLmRpc2Fi bGVkLnB1c2goZyl9KTtpZihjKXt0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXRh YnMgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiKTsK dGhpcy5saXN0LmFkZENsYXNzKCJ1aS10YWJzLW5hdiB1aS1oZWxwZXItcmVzZXQg dWktaGVscGVyLWNsZWFyZml4IHVpLXdpZGdldC1oZWFkZXIgdWktY29ybmVyLWFs bCIpO3RoaXMubGlzLmFkZENsYXNzKCJ1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5l ci10b3AiKTt0aGlzLnBhbmVscy5hZGRDbGFzcygidWktdGFicy1wYW5lbCB1aS13 aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9tIik7aWYoYi5zZWxlY3RlZD09 PXVuZGVmaW5lZCl7bG9jYXRpb24uaGFzaCYmdGhpcy5hbmNob3JzLmVhY2goZnVu Y3Rpb24oZyxmKXtpZihmLmhhc2g9PWxvY2F0aW9uLmhhc2gpe2Iuc2VsZWN0ZWQ9 ZztyZXR1cm4gZmFsc2V9fSk7aWYodHlwZW9mIGIuc2VsZWN0ZWQhPSJudW1iZXIi JiZiLmNvb2tpZSliLnNlbGVjdGVkPXBhcnNlSW50KGEuX2Nvb2tpZSgpLDEwKTtp Zih0eXBlb2YgYi5zZWxlY3RlZCE9Im51bWJlciImJnRoaXMubGlzLmZpbHRlcigi LnVpLXRhYnMtc2VsZWN0ZWQiKS5sZW5ndGgpYi5zZWxlY3RlZD0KdGhpcy5saXMu aW5kZXgodGhpcy5saXMuZmlsdGVyKCIudWktdGFicy1zZWxlY3RlZCIpKTtiLnNl bGVjdGVkPWIuc2VsZWN0ZWR8fCh0aGlzLmxpcy5sZW5ndGg/MDotMSl9ZWxzZSBp ZihiLnNlbGVjdGVkPT09bnVsbCliLnNlbGVjdGVkPS0xO2Iuc2VsZWN0ZWQ9Yi5z ZWxlY3RlZD49MCYmdGhpcy5hbmNob3JzW2Iuc2VsZWN0ZWRdfHxiLnNlbGVjdGVk PDA/Yi5zZWxlY3RlZDowO2IuZGlzYWJsZWQ9ZC51bmlxdWUoYi5kaXNhYmxlZC5j b25jYXQoZC5tYXAodGhpcy5saXMuZmlsdGVyKCIudWktc3RhdGUtZGlzYWJsZWQi KSxmdW5jdGlvbihnKXtyZXR1cm4gYS5saXMuaW5kZXgoZyl9KSkpLnNvcnQoKTtk LmluQXJyYXkoYi5zZWxlY3RlZCxiLmRpc2FibGVkKSE9LTEmJmIuZGlzYWJsZWQu c3BsaWNlKGQuaW5BcnJheShiLnNlbGVjdGVkLGIuZGlzYWJsZWQpLDEpO3RoaXMu cGFuZWxzLmFkZENsYXNzKCJ1aS10YWJzLWhpZGUiKTt0aGlzLmxpcy5yZW1vdmVD bGFzcygidWktdGFicy1zZWxlY3RlZCB1aS1zdGF0ZS1hY3RpdmUiKTsKaWYoYi5z ZWxlY3RlZD49MCYmdGhpcy5hbmNob3JzLmxlbmd0aCl7dGhpcy5wYW5lbHMuZXEo Yi5zZWxlY3RlZCkucmVtb3ZlQ2xhc3MoInVpLXRhYnMtaGlkZSIpO3RoaXMubGlz LmVxKGIuc2VsZWN0ZWQpLmFkZENsYXNzKCJ1aS10YWJzLXNlbGVjdGVkIHVpLXN0 YXRlLWFjdGl2ZSIpO2EuZWxlbWVudC5xdWV1ZSgidGFicyIsZnVuY3Rpb24oKXth Ll90cmlnZ2VyKCJzaG93IixudWxsLGEuX3VpKGEuYW5jaG9yc1tiLnNlbGVjdGVk XSxhLnBhbmVsc1tiLnNlbGVjdGVkXSkpfSk7dGhpcy5sb2FkKGIuc2VsZWN0ZWQp fWQod2luZG93KS5iaW5kKCJ1bmxvYWQiLGZ1bmN0aW9uKCl7YS5saXMuYWRkKGEu YW5jaG9ycykudW5iaW5kKCIudGFicyIpO2EubGlzPWEuYW5jaG9ycz1hLnBhbmVs cz1udWxsfSl9ZWxzZSBiLnNlbGVjdGVkPXRoaXMubGlzLmluZGV4KHRoaXMubGlz LmZpbHRlcigiLnVpLXRhYnMtc2VsZWN0ZWQiKSk7dGhpcy5lbGVtZW50W2IuY29s bGFwc2libGU/ImFkZENsYXNzIjoKInJlbW92ZUNsYXNzIl0oInVpLXRhYnMtY29s bGFwc2libGUiKTtiLmNvb2tpZSYmdGhpcy5fY29va2llKGIuc2VsZWN0ZWQsYi5j b29raWUpO2M9MDtmb3IodmFyIGk7aT10aGlzLmxpc1tjXTtjKyspZChpKVtkLmlu QXJyYXkoYyxiLmRpc2FibGVkKSE9LTEmJiFkKGkpLmhhc0NsYXNzKCJ1aS10YWJz LXNlbGVjdGVkIik/ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3MiXSgidWktc3RhdGUt ZGlzYWJsZWQiKTtiLmNhY2hlPT09ZmFsc2UmJnRoaXMuYW5jaG9ycy5yZW1vdmVE YXRhKCJjYWNoZS50YWJzIik7dGhpcy5saXMuYWRkKHRoaXMuYW5jaG9ycykudW5i aW5kKCIudGFicyIpO2lmKGIuZXZlbnQhPSJtb3VzZW92ZXIiKXt2YXIgaz1mdW5j dGlvbihnLGYpe2YuaXMoIjpub3QoLnVpLXN0YXRlLWRpc2FibGVkKSIpJiZmLmFk ZENsYXNzKCJ1aS1zdGF0ZS0iK2cpfSxuPWZ1bmN0aW9uKGcsZil7Zi5yZW1vdmVD bGFzcygidWktc3RhdGUtIitnKX07dGhpcy5saXMuYmluZCgibW91c2VvdmVyLnRh YnMiLApmdW5jdGlvbigpe2soImhvdmVyIixkKHRoaXMpKX0pO3RoaXMubGlzLmJp bmQoIm1vdXNlb3V0LnRhYnMiLGZ1bmN0aW9uKCl7bigiaG92ZXIiLGQodGhpcykp fSk7dGhpcy5hbmNob3JzLmJpbmQoImZvY3VzLnRhYnMiLGZ1bmN0aW9uKCl7aygi Zm9jdXMiLGQodGhpcykuY2xvc2VzdCgibGkiKSl9KTt0aGlzLmFuY2hvcnMuYmlu ZCgiYmx1ci50YWJzIixmdW5jdGlvbigpe24oImZvY3VzIixkKHRoaXMpLmNsb3Nl c3QoImxpIikpfSl9dmFyIG0sbztpZihiLmZ4KWlmKGQuaXNBcnJheShiLmZ4KSl7 bT1iLmZ4WzBdO289Yi5meFsxXX1lbHNlIG09bz1iLmZ4O3ZhciBxPW8/ZnVuY3Rp b24oZyxmKXtkKGcpLmNsb3Nlc3QoImxpIikuYWRkQ2xhc3MoInVpLXRhYnMtc2Vs ZWN0ZWQgdWktc3RhdGUtYWN0aXZlIik7Zi5oaWRlKCkucmVtb3ZlQ2xhc3MoInVp LXRhYnMtaGlkZSIpLmFuaW1hdGUobyxvLmR1cmF0aW9ufHwibm9ybWFsIixmdW5j dGlvbigpe2UoZixvKTthLl90cmlnZ2VyKCJzaG93IiwKbnVsbCxhLl91aShnLGZb MF0pKX0pfTpmdW5jdGlvbihnLGYpe2QoZykuY2xvc2VzdCgibGkiKS5hZGRDbGFz cygidWktdGFicy1zZWxlY3RlZCB1aS1zdGF0ZS1hY3RpdmUiKTtmLnJlbW92ZUNs YXNzKCJ1aS10YWJzLWhpZGUiKTthLl90cmlnZ2VyKCJzaG93IixudWxsLGEuX3Vp KGcsZlswXSkpfSxyPW0/ZnVuY3Rpb24oZyxmKXtmLmFuaW1hdGUobSxtLmR1cmF0 aW9ufHwibm9ybWFsIixmdW5jdGlvbigpe2EubGlzLnJlbW92ZUNsYXNzKCJ1aS10 YWJzLXNlbGVjdGVkIHVpLXN0YXRlLWFjdGl2ZSIpO2YuYWRkQ2xhc3MoInVpLXRh YnMtaGlkZSIpO2UoZixtKTthLmVsZW1lbnQuZGVxdWV1ZSgidGFicyIpfSl9OmZ1 bmN0aW9uKGcsZil7YS5saXMucmVtb3ZlQ2xhc3MoInVpLXRhYnMtc2VsZWN0ZWQg dWktc3RhdGUtYWN0aXZlIik7Zi5hZGRDbGFzcygidWktdGFicy1oaWRlIik7YS5l bGVtZW50LmRlcXVldWUoInRhYnMiKX07dGhpcy5hbmNob3JzLmJpbmQoYi5ldmVu dCsiLnRhYnMiLApmdW5jdGlvbigpe3ZhciBnPXRoaXMsZj1kKHRoaXMpLmNsb3Nl c3QoImxpIiksaj1hLnBhbmVscy5maWx0ZXIoIjpub3QoLnVpLXRhYnMtaGlkZSki KSxsPWQoYS5fc2FuaXRpemVTZWxlY3Rvcih0aGlzLmhhc2gpKTtpZihmLmhhc0Ns YXNzKCJ1aS10YWJzLXNlbGVjdGVkIikmJiFiLmNvbGxhcHNpYmxlfHxmLmhhc0Ns YXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpfHxmLmhhc0NsYXNzKCJ1aS1zdGF0ZS1w cm9jZXNzaW5nIil8fGEuX3RyaWdnZXIoInNlbGVjdCIsbnVsbCxhLl91aSh0aGlz LGxbMF0pKT09PWZhbHNlKXt0aGlzLmJsdXIoKTtyZXR1cm4gZmFsc2V9Yi5zZWxl Y3RlZD1hLmFuY2hvcnMuaW5kZXgodGhpcyk7YS5hYm9ydCgpO2lmKGIuY29sbGFw c2libGUpaWYoZi5oYXNDbGFzcygidWktdGFicy1zZWxlY3RlZCIpKXtiLnNlbGVj dGVkPS0xO2IuY29va2llJiZhLl9jb29raWUoYi5zZWxlY3RlZCxiLmNvb2tpZSk7 YS5lbGVtZW50LnF1ZXVlKCJ0YWJzIixmdW5jdGlvbigpe3IoZywKail9KS5kZXF1 ZXVlKCJ0YWJzIik7dGhpcy5ibHVyKCk7cmV0dXJuIGZhbHNlfWVsc2UgaWYoIWou bGVuZ3RoKXtiLmNvb2tpZSYmYS5fY29va2llKGIuc2VsZWN0ZWQsYi5jb29raWUp O2EuZWxlbWVudC5xdWV1ZSgidGFicyIsZnVuY3Rpb24oKXtxKGcsbCl9KTthLmxv YWQoYS5hbmNob3JzLmluZGV4KHRoaXMpKTt0aGlzLmJsdXIoKTtyZXR1cm4gZmFs c2V9Yi5jb29raWUmJmEuX2Nvb2tpZShiLnNlbGVjdGVkLGIuY29va2llKTtpZihs Lmxlbmd0aCl7ai5sZW5ndGgmJmEuZWxlbWVudC5xdWV1ZSgidGFicyIsZnVuY3Rp b24oKXtyKGcsail9KTthLmVsZW1lbnQucXVldWUoInRhYnMiLGZ1bmN0aW9uKCl7 cShnLGwpfSk7YS5sb2FkKGEuYW5jaG9ycy5pbmRleCh0aGlzKSl9ZWxzZSB0aHJv dyJqUXVlcnkgVUkgVGFiczogTWlzbWF0Y2hpbmcgZnJhZ21lbnQgaWRlbnRpZmll ci4iO2QuYnJvd3Nlci5tc2llJiZ0aGlzLmJsdXIoKX0pO3RoaXMuYW5jaG9ycy5i aW5kKCJjbGljay50YWJzIiwKZnVuY3Rpb24oKXtyZXR1cm4gZmFsc2V9KX0sZGVz dHJveTpmdW5jdGlvbigpe3ZhciBjPXRoaXMub3B0aW9uczt0aGlzLmFib3J0KCk7 dGhpcy5lbGVtZW50LnVuYmluZCgiLnRhYnMiKS5yZW1vdmVDbGFzcygidWktdGFi cyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS10 YWJzLWNvbGxhcHNpYmxlIikucmVtb3ZlRGF0YSgidGFicyIpO3RoaXMubGlzdC5y ZW1vdmVDbGFzcygidWktdGFicy1uYXYgdWktaGVscGVyLXJlc2V0IHVpLWhlbHBl ci1jbGVhcmZpeCB1aS13aWRnZXQtaGVhZGVyIHVpLWNvcm5lci1hbGwiKTt0aGlz LmFuY2hvcnMuZWFjaChmdW5jdGlvbigpe3ZhciBlPWQuZGF0YSh0aGlzLCJocmVm LnRhYnMiKTtpZihlKXRoaXMuaHJlZj1lO3ZhciBhPWQodGhpcykudW5iaW5kKCIu dGFicyIpO2QuZWFjaChbImhyZWYiLCJsb2FkIiwiY2FjaGUiXSxmdW5jdGlvbihi LGgpe2EucmVtb3ZlRGF0YShoKyIudGFicyIpfSl9KTt0aGlzLmxpcy51bmJpbmQo Ii50YWJzIikuYWRkKHRoaXMucGFuZWxzKS5lYWNoKGZ1bmN0aW9uKCl7ZC5kYXRh KHRoaXMsCiJkZXN0cm95LnRhYnMiKT9kKHRoaXMpLnJlbW92ZSgpOmQodGhpcyku cmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLXRvcCB1aS10 YWJzLXNlbGVjdGVkIHVpLXN0YXRlLWFjdGl2ZSB1aS1zdGF0ZS1ob3ZlciB1aS1z dGF0ZS1mb2N1cyB1aS1zdGF0ZS1kaXNhYmxlZCB1aS10YWJzLXBhbmVsIHVpLXdp ZGdldC1jb250ZW50IHVpLWNvcm5lci1ib3R0b20gdWktdGFicy1oaWRlIil9KTtj LmNvb2tpZSYmdGhpcy5fY29va2llKG51bGwsYy5jb29raWUpO3JldHVybiB0aGlz fSxhZGQ6ZnVuY3Rpb24oYyxlLGEpe2lmKGE9PT11bmRlZmluZWQpYT10aGlzLmFu Y2hvcnMubGVuZ3RoO3ZhciBiPXRoaXMsaD10aGlzLm9wdGlvbnM7ZT1kKGgudGFi VGVtcGxhdGUucmVwbGFjZSgvI1x7aHJlZlx9L2csYykucmVwbGFjZSgvI1x7bGFi ZWxcfS9nLGUpKTtjPSFjLmluZGV4T2YoIiMiKT9jLnJlcGxhY2UoIiMiLCIiKTp0 aGlzLl90YWJJZChkKCJhIixlKVswXSk7ZS5hZGRDbGFzcygidWktc3RhdGUtZGVm YXVsdCB1aS1jb3JuZXItdG9wIikuZGF0YSgiZGVzdHJveS50YWJzIiwKdHJ1ZSk7 dmFyIGk9ZCgiIyIrYyk7aS5sZW5ndGh8fChpPWQoaC5wYW5lbFRlbXBsYXRlKS5h dHRyKCJpZCIsYykuZGF0YSgiZGVzdHJveS50YWJzIix0cnVlKSk7aS5hZGRDbGFz cygidWktdGFicy1wYW5lbCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90 dG9tIHVpLXRhYnMtaGlkZSIpO2lmKGE+PXRoaXMubGlzLmxlbmd0aCl7ZS5hcHBl bmRUbyh0aGlzLmxpc3QpO2kuYXBwZW5kVG8odGhpcy5saXN0WzBdLnBhcmVudE5v ZGUpfWVsc2V7ZS5pbnNlcnRCZWZvcmUodGhpcy5saXNbYV0pO2kuaW5zZXJ0QmVm b3JlKHRoaXMucGFuZWxzW2FdKX1oLmRpc2FibGVkPWQubWFwKGguZGlzYWJsZWQs ZnVuY3Rpb24oayl7cmV0dXJuIGs+PWE/KytrOmt9KTt0aGlzLl90YWJpZnkoKTtp Zih0aGlzLmFuY2hvcnMubGVuZ3RoPT0xKXtoLnNlbGVjdGVkPTA7ZS5hZGRDbGFz cygidWktdGFicy1zZWxlY3RlZCB1aS1zdGF0ZS1hY3RpdmUiKTtpLnJlbW92ZUNs YXNzKCJ1aS10YWJzLWhpZGUiKTsKdGhpcy5lbGVtZW50LnF1ZXVlKCJ0YWJzIixm dW5jdGlvbigpe2IuX3RyaWdnZXIoInNob3ciLG51bGwsYi5fdWkoYi5hbmNob3Jz WzBdLGIucGFuZWxzWzBdKSl9KTt0aGlzLmxvYWQoMCl9dGhpcy5fdHJpZ2dlcigi YWRkIixudWxsLHRoaXMuX3VpKHRoaXMuYW5jaG9yc1thXSx0aGlzLnBhbmVsc1th XSkpO3JldHVybiB0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oYyl7dmFyIGU9dGhpcy5v cHRpb25zLGE9dGhpcy5saXMuZXEoYykucmVtb3ZlKCksYj10aGlzLnBhbmVscy5l cShjKS5yZW1vdmUoKTtpZihhLmhhc0NsYXNzKCJ1aS10YWJzLXNlbGVjdGVkIikm JnRoaXMuYW5jaG9ycy5sZW5ndGg+MSl0aGlzLnNlbGVjdChjKyhjKzE8dGhpcy5h bmNob3JzLmxlbmd0aD8xOi0xKSk7ZS5kaXNhYmxlZD1kLm1hcChkLmdyZXAoZS5k aXNhYmxlZCxmdW5jdGlvbihoKXtyZXR1cm4gaCE9Y30pLGZ1bmN0aW9uKGgpe3Jl dHVybiBoPj1jPy0taDpofSk7dGhpcy5fdGFiaWZ5KCk7dGhpcy5fdHJpZ2dlcigi cmVtb3ZlIiwKbnVsbCx0aGlzLl91aShhLmZpbmQoImEiKVswXSxiWzBdKSk7cmV0 dXJuIHRoaXN9LGVuYWJsZTpmdW5jdGlvbihjKXt2YXIgZT10aGlzLm9wdGlvbnM7 aWYoZC5pbkFycmF5KGMsZS5kaXNhYmxlZCkhPS0xKXt0aGlzLmxpcy5lcShjKS5y ZW1vdmVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiKTtlLmRpc2FibGVkPWQuZ3Jl cChlLmRpc2FibGVkLGZ1bmN0aW9uKGEpe3JldHVybiBhIT1jfSk7dGhpcy5fdHJp Z2dlcigiZW5hYmxlIixudWxsLHRoaXMuX3VpKHRoaXMuYW5jaG9yc1tjXSx0aGlz LnBhbmVsc1tjXSkpO3JldHVybiB0aGlzfX0sZGlzYWJsZTpmdW5jdGlvbihjKXt2 YXIgZT10aGlzLm9wdGlvbnM7aWYoYyE9ZS5zZWxlY3RlZCl7dGhpcy5saXMuZXEo YykuYWRkQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIik7ZS5kaXNhYmxlZC5wdXNo KGMpO2UuZGlzYWJsZWQuc29ydCgpO3RoaXMuX3RyaWdnZXIoImRpc2FibGUiLG51 bGwsdGhpcy5fdWkodGhpcy5hbmNob3JzW2NdLHRoaXMucGFuZWxzW2NdKSl9cmV0 dXJuIHRoaXN9LApzZWxlY3Q6ZnVuY3Rpb24oYyl7aWYodHlwZW9mIGM9PSJzdHJp bmciKWM9dGhpcy5hbmNob3JzLmluZGV4KHRoaXMuYW5jaG9ycy5maWx0ZXIoIlto cmVmJD0iK2MrIl0iKSk7ZWxzZSBpZihjPT09bnVsbCljPS0xO2lmKGM9PS0xJiZ0 aGlzLm9wdGlvbnMuY29sbGFwc2libGUpYz10aGlzLm9wdGlvbnMuc2VsZWN0ZWQ7 dGhpcy5hbmNob3JzLmVxKGMpLnRyaWdnZXIodGhpcy5vcHRpb25zLmV2ZW50KyIu dGFicyIpO3JldHVybiB0aGlzfSxsb2FkOmZ1bmN0aW9uKGMpe3ZhciBlPXRoaXMs YT10aGlzLm9wdGlvbnMsYj10aGlzLmFuY2hvcnMuZXEoYylbMF0saD1kLmRhdGEo YiwibG9hZC50YWJzIik7dGhpcy5hYm9ydCgpO2lmKCFofHx0aGlzLmVsZW1lbnQu cXVldWUoInRhYnMiKS5sZW5ndGghPT0wJiZkLmRhdGEoYiwiY2FjaGUudGFicyIp KXRoaXMuZWxlbWVudC5kZXF1ZXVlKCJ0YWJzIik7ZWxzZXt0aGlzLmxpcy5lcShj KS5hZGRDbGFzcygidWktc3RhdGUtcHJvY2Vzc2luZyIpOwppZihhLnNwaW5uZXIp e3ZhciBpPWQoInNwYW4iLGIpO2kuZGF0YSgibGFiZWwudGFicyIsaS5odG1sKCkp Lmh0bWwoYS5zcGlubmVyKX10aGlzLnhocj1kLmFqYXgoZC5leHRlbmQoe30sYS5h amF4T3B0aW9ucyx7dXJsOmgsc3VjY2VzczpmdW5jdGlvbihrLG4pe2QoZS5fc2Fu aXRpemVTZWxlY3RvcihiLmhhc2gpKS5odG1sKGspO2UuX2NsZWFudXAoKTthLmNh Y2hlJiZkLmRhdGEoYiwiY2FjaGUudGFicyIsdHJ1ZSk7ZS5fdHJpZ2dlcigibG9h ZCIsbnVsbCxlLl91aShlLmFuY2hvcnNbY10sZS5wYW5lbHNbY10pKTt0cnl7YS5h amF4T3B0aW9ucy5zdWNjZXNzKGssbil9Y2F0Y2gobSl7fX0sZXJyb3I6ZnVuY3Rp b24oayxuKXtlLl9jbGVhbnVwKCk7ZS5fdHJpZ2dlcigibG9hZCIsbnVsbCxlLl91 aShlLmFuY2hvcnNbY10sZS5wYW5lbHNbY10pKTt0cnl7YS5hamF4T3B0aW9ucy5l cnJvcihrLG4sYyxiKX1jYXRjaChtKXt9fX0pKTtlLmVsZW1lbnQuZGVxdWV1ZSgi dGFicyIpO3JldHVybiB0aGlzfX0sCmFib3J0OmZ1bmN0aW9uKCl7dGhpcy5lbGVt ZW50LnF1ZXVlKFtdKTt0aGlzLnBhbmVscy5zdG9wKGZhbHNlLHRydWUpO3RoaXMu ZWxlbWVudC5xdWV1ZSgidGFicyIsdGhpcy5lbGVtZW50LnF1ZXVlKCJ0YWJzIiku c3BsaWNlKC0yLDIpKTtpZih0aGlzLnhocil7dGhpcy54aHIuYWJvcnQoKTtkZWxl dGUgdGhpcy54aHJ9dGhpcy5fY2xlYW51cCgpO3JldHVybiB0aGlzfSx1cmw6ZnVu Y3Rpb24oYyxlKXt0aGlzLmFuY2hvcnMuZXEoYykucmVtb3ZlRGF0YSgiY2FjaGUu dGFicyIpLmRhdGEoImxvYWQudGFicyIsZSk7cmV0dXJuIHRoaXN9LGxlbmd0aDpm dW5jdGlvbigpe3JldHVybiB0aGlzLmFuY2hvcnMubGVuZ3RofX0pO2QuZXh0ZW5k KGQudWkudGFicyx7dmVyc2lvbjoiMS44LjIifSk7ZC5leHRlbmQoZC51aS50YWJz LnByb3RvdHlwZSx7cm90YXRpb246bnVsbCxyb3RhdGU6ZnVuY3Rpb24oYyxlKXt2 YXIgYT10aGlzLGI9dGhpcy5vcHRpb25zLGg9YS5fcm90YXRlfHwoYS5fcm90YXRl PQpmdW5jdGlvbihpKXtjbGVhclRpbWVvdXQoYS5yb3RhdGlvbik7YS5yb3RhdGlv bj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGs9Yi5zZWxlY3RlZDthLnNlbGVj dCgrK2s8YS5hbmNob3JzLmxlbmd0aD9rOjApfSxjKTtpJiZpLnN0b3BQcm9wYWdh dGlvbigpfSk7ZT1hLl91bnJvdGF0ZXx8KGEuX3Vucm90YXRlPSFlP2Z1bmN0aW9u KGkpe2kuY2xpZW50WCYmYS5yb3RhdGUobnVsbCl9OmZ1bmN0aW9uKCl7dD1iLnNl bGVjdGVkO2goKX0pO2lmKGMpe3RoaXMuZWxlbWVudC5iaW5kKCJ0YWJzc2hvdyIs aCk7dGhpcy5hbmNob3JzLmJpbmQoYi5ldmVudCsiLnRhYnMiLGUpO2goKX1lbHNl e2NsZWFyVGltZW91dChhLnJvdGF0aW9uKTt0aGlzLmVsZW1lbnQudW5iaW5kKCJ0 YWJzc2hvdyIsaCk7dGhpcy5hbmNob3JzLnVuYmluZChiLmV2ZW50KyIudGFicyIs ZSk7ZGVsZXRlIHRoaXMuX3JvdGF0ZTtkZWxldGUgdGhpcy5fdW5yb3RhdGV9cmV0 dXJuIHRoaXN9fSl9KShqUXVlcnkpOwo7LyoKICogalF1ZXJ5IFVJIERhdGVwaWNr ZXIgMS44LjIKICoKICogQ29weXJpZ2h0IChjKSAyMDEwIEFVVEhPUlMudHh0ICho dHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVy IHRoZSBNSVQgKE1JVC1MSUNFTlNFLnR4dCkKICogYW5kIEdQTCAoR1BMLUxJQ0VO U0UudHh0KSBsaWNlbnNlcy4KICoKICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9V SS9EYXRlcGlja2VyCiAqCiAqIERlcGVuZHM6CiAqCWpxdWVyeS51aS5jb3JlLmpz CiAqLwooZnVuY3Rpb24oZCl7ZnVuY3Rpb24gSigpe3RoaXMuZGVidWc9ZmFsc2U7 dGhpcy5fY3VySW5zdD1udWxsO3RoaXMuX2tleUV2ZW50PWZhbHNlO3RoaXMuX2Rp c2FibGVkSW5wdXRzPVtdO3RoaXMuX2luRGlhbG9nPXRoaXMuX2RhdGVwaWNrZXJT aG93aW5nPWZhbHNlO3RoaXMuX21haW5EaXZJZD0idWktZGF0ZXBpY2tlci1kaXYi O3RoaXMuX2lubGluZUNsYXNzPSJ1aS1kYXRlcGlja2VyLWlubGluZSI7dGhpcy5f YXBwZW5kQ2xhc3M9InVpLWRhdGVwaWNrZXItYXBwZW5kIjt0aGlzLl90cmlnZ2Vy Q2xhc3M9InVpLWRhdGVwaWNrZXItdHJpZ2dlciI7dGhpcy5fZGlhbG9nQ2xhc3M9 InVpLWRhdGVwaWNrZXItZGlhbG9nIjt0aGlzLl9kaXNhYmxlQ2xhc3M9InVpLWRh dGVwaWNrZXItZGlzYWJsZWQiO3RoaXMuX3Vuc2VsZWN0YWJsZUNsYXNzPSJ1aS1k YXRlcGlja2VyLXVuc2VsZWN0YWJsZSI7dGhpcy5fY3VycmVudENsYXNzPSJ1aS1k YXRlcGlja2VyLWN1cnJlbnQtZGF5Ijt0aGlzLl9kYXlPdmVyQ2xhc3M9CiJ1aS1k YXRlcGlja2VyLWRheXMtY2VsbC1vdmVyIjt0aGlzLnJlZ2lvbmFsPVtdO3RoaXMu cmVnaW9uYWxbIiJdPXtjbG9zZVRleHQ6IkRvbmUiLHByZXZUZXh0OiJQcmV2Iixu ZXh0VGV4dDoiTmV4dCIsY3VycmVudFRleHQ6IlRvZGF5Iixtb250aE5hbWVzOlsi SmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUi LCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVy IiwiRGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIi LCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3Yi LCJEZWMiXSxkYXlOYW1lczpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJX ZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sZGF5TmFt ZXNTaG9ydDpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNh dCJdLGRheU5hbWVzTWluOlsiU3UiLAoiTW8iLCJUdSIsIldlIiwiVGgiLCJGciIs IlNhIl0sd2Vla0hlYWRlcjoiV2siLGRhdGVGb3JtYXQ6Im1tL2RkL3l5IixmaXJz dERheTowLGlzUlRMOmZhbHNlLHNob3dNb250aEFmdGVyWWVhcjpmYWxzZSx5ZWFy U3VmZml4OiIifTt0aGlzLl9kZWZhdWx0cz17c2hvd09uOiJmb2N1cyIsc2hvd0Fu aW06ImZhZGVJbiIsc2hvd09wdGlvbnM6e30sZGVmYXVsdERhdGU6bnVsbCxhcHBl bmRUZXh0OiIiLGJ1dHRvblRleHQ6Ii4uLiIsYnV0dG9uSW1hZ2U6IiIsYnV0dG9u SW1hZ2VPbmx5OmZhbHNlLGhpZGVJZk5vUHJldk5leHQ6ZmFsc2UsbmF2aWdhdGlv bkFzRGF0ZUZvcm1hdDpmYWxzZSxnb3RvQ3VycmVudDpmYWxzZSxjaGFuZ2VNb250 aDpmYWxzZSxjaGFuZ2VZZWFyOmZhbHNlLHllYXJSYW5nZToiYy0xMDpjKzEwIixz aG93T3RoZXJNb250aHM6ZmFsc2Usc2VsZWN0T3RoZXJNb250aHM6ZmFsc2Usc2hv d1dlZWs6ZmFsc2UsY2FsY3VsYXRlV2Vlazp0aGlzLmlzbzg2MDFXZWVrLHNob3J0 WWVhckN1dG9mZjoiKzEwIiwKbWluRGF0ZTpudWxsLG1heERhdGU6bnVsbCxkdXJh dGlvbjoiZmFzdCIsYmVmb3JlU2hvd0RheTpudWxsLGJlZm9yZVNob3c6bnVsbCxv blNlbGVjdDpudWxsLG9uQ2hhbmdlTW9udGhZZWFyOm51bGwsb25DbG9zZTpudWxs LG51bWJlck9mTW9udGhzOjEsc2hvd0N1cnJlbnRBdFBvczowLHN0ZXBNb250aHM6 MSxzdGVwQmlnTW9udGhzOjEyLGFsdEZpZWxkOiIiLGFsdEZvcm1hdDoiIixjb25z dHJhaW5JbnB1dDp0cnVlLHNob3dCdXR0b25QYW5lbDpmYWxzZSxhdXRvU2l6ZTpm YWxzZX07ZC5leHRlbmQodGhpcy5fZGVmYXVsdHMsdGhpcy5yZWdpb25hbFsiIl0p O3RoaXMuZHBEaXY9ZCgnPGRpdiBpZD0iJyt0aGlzLl9tYWluRGl2SWQrJyIgY2xh c3M9InVpLWRhdGVwaWNrZXIgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVp LWhlbHBlci1jbGVhcmZpeCB1aS1jb3JuZXItYWxsIHVpLWhlbHBlci1oaWRkZW4t YWNjZXNzaWJsZSI+PC9kaXY+Jyl9ZnVuY3Rpb24gRShhLGIpe2QuZXh0ZW5kKGEs CmIpO2Zvcih2YXIgYyBpbiBiKWlmKGJbY109PW51bGx8fGJbY109PXVuZGVmaW5l ZClhW2NdPWJbY107cmV0dXJuIGF9ZC5leHRlbmQoZC51aSx7ZGF0ZXBpY2tlcjp7 dmVyc2lvbjoiMS44LjIifX0pO3ZhciB5PShuZXcgRGF0ZSkuZ2V0VGltZSgpO2Qu ZXh0ZW5kKEoucHJvdG90eXBlLHttYXJrZXJDbGFzc05hbWU6Imhhc0RhdGVwaWNr ZXIiLGxvZzpmdW5jdGlvbigpe3RoaXMuZGVidWcmJmNvbnNvbGUubG9nLmFwcGx5 KCIiLGFyZ3VtZW50cyl9LF93aWRnZXREYXRlcGlja2VyOmZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMuZHBEaXZ9LHNldERlZmF1bHRzOmZ1bmN0aW9uKGEpe0UodGhpcy5f ZGVmYXVsdHMsYXx8e30pO3JldHVybiB0aGlzfSxfYXR0YWNoRGF0ZXBpY2tlcjpm dW5jdGlvbihhLGIpe3ZhciBjPW51bGw7Zm9yKHZhciBlIGluIHRoaXMuX2RlZmF1 bHRzKXt2YXIgZj1hLmdldEF0dHJpYnV0ZSgiZGF0ZToiK2UpO2lmKGYpe2M9Y3x8 e307dHJ5e2NbZV09ZXZhbChmKX1jYXRjaChoKXtjW2VdPQpmfX19ZT1hLm5vZGVO YW1lLnRvTG93ZXJDYXNlKCk7Zj1lPT0iZGl2Inx8ZT09InNwYW4iO2lmKCFhLmlk KXt0aGlzLnV1aWQrPTE7YS5pZD0iZHAiK3RoaXMudXVpZH12YXIgaT10aGlzLl9u ZXdJbnN0KGQoYSksZik7aS5zZXR0aW5ncz1kLmV4dGVuZCh7fSxifHx7fSxjfHx7 fSk7aWYoZT09ImlucHV0Iil0aGlzLl9jb25uZWN0RGF0ZXBpY2tlcihhLGkpO2Vs c2UgZiYmdGhpcy5faW5saW5lRGF0ZXBpY2tlcihhLGkpfSxfbmV3SW5zdDpmdW5j dGlvbihhLGIpe3JldHVybntpZDphWzBdLmlkLnJlcGxhY2UoLyhbXkEtWmEtejAt OV9dKS9nLCJcXFxcJDEiKSxpbnB1dDphLHNlbGVjdGVkRGF5OjAsc2VsZWN0ZWRN b250aDowLHNlbGVjdGVkWWVhcjowLGRyYXdNb250aDowLGRyYXdZZWFyOjAsaW5s aW5lOmIsZHBEaXY6IWI/dGhpcy5kcERpdjpkKCc8ZGl2IGNsYXNzPSInK3RoaXMu X2lubGluZUNsYXNzKycgdWktZGF0ZXBpY2tlciB1aS13aWRnZXQgdWktd2lkZ2V0 LWNvbnRlbnQgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci1hbGwiPjwvZGl2 PicpfX0sCl9jb25uZWN0RGF0ZXBpY2tlcjpmdW5jdGlvbihhLGIpe3ZhciBjPWQo YSk7Yi5hcHBlbmQ9ZChbXSk7Yi50cmlnZ2VyPWQoW10pO2lmKCFjLmhhc0NsYXNz KHRoaXMubWFya2VyQ2xhc3NOYW1lKSl7dGhpcy5fYXR0YWNobWVudHMoYyxiKTtj LmFkZENsYXNzKHRoaXMubWFya2VyQ2xhc3NOYW1lKS5rZXlkb3duKHRoaXMuX2Rv S2V5RG93bikua2V5cHJlc3ModGhpcy5fZG9LZXlQcmVzcykua2V5dXAodGhpcy5f ZG9LZXlVcCkuYmluZCgic2V0RGF0YS5kYXRlcGlja2VyIixmdW5jdGlvbihlLGYs aCl7Yi5zZXR0aW5nc1tmXT1ofSkuYmluZCgiZ2V0RGF0YS5kYXRlcGlja2VyIixm dW5jdGlvbihlLGYpe3JldHVybiB0aGlzLl9nZXQoYixmKX0pO3RoaXMuX2F1dG9T aXplKGIpO2QuZGF0YShhLCJkYXRlcGlja2VyIixiKX19LF9hdHRhY2htZW50czpm dW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuX2dldChiLCJhcHBlbmRUZXh0IiksZT10 aGlzLl9nZXQoYiwiaXNSVEwiKTtiLmFwcGVuZCYmCmIuYXBwZW5kLnJlbW92ZSgp O2lmKGMpe2IuYXBwZW5kPWQoJzxzcGFuIGNsYXNzPSInK3RoaXMuX2FwcGVuZENs YXNzKyciPicrYysiPC9zcGFuPiIpO2FbZT8iYmVmb3JlIjoiYWZ0ZXIiXShiLmFw cGVuZCl9YS51bmJpbmQoImZvY3VzIix0aGlzLl9zaG93RGF0ZXBpY2tlcik7Yi50 cmlnZ2VyJiZiLnRyaWdnZXIucmVtb3ZlKCk7Yz10aGlzLl9nZXQoYiwic2hvd09u Iik7aWYoYz09ImZvY3VzInx8Yz09ImJvdGgiKWEuZm9jdXModGhpcy5fc2hvd0Rh dGVwaWNrZXIpO2lmKGM9PSJidXR0b24ifHxjPT0iYm90aCIpe2M9dGhpcy5fZ2V0 KGIsImJ1dHRvblRleHQiKTt2YXIgZj10aGlzLl9nZXQoYiwiYnV0dG9uSW1hZ2Ui KTtiLnRyaWdnZXI9ZCh0aGlzLl9nZXQoYiwiYnV0dG9uSW1hZ2VPbmx5Iik/ZCgi PGltZy8+IikuYWRkQ2xhc3ModGhpcy5fdHJpZ2dlckNsYXNzKS5hdHRyKHtzcmM6 ZixhbHQ6Yyx0aXRsZTpjfSk6ZCgnPGJ1dHRvbiB0eXBlPSJidXR0b24iPjwvYnV0 dG9uPicpLmFkZENsYXNzKHRoaXMuX3RyaWdnZXJDbGFzcykuaHRtbChmPT0KIiI/ YzpkKCI8aW1nLz4iKS5hdHRyKHtzcmM6ZixhbHQ6Yyx0aXRsZTpjfSkpKTthW2U/ ImJlZm9yZSI6ImFmdGVyIl0oYi50cmlnZ2VyKTtiLnRyaWdnZXIuY2xpY2soZnVu Y3Rpb24oKXtkLmRhdGVwaWNrZXIuX2RhdGVwaWNrZXJTaG93aW5nJiZkLmRhdGVw aWNrZXIuX2xhc3RJbnB1dD09YVswXT9kLmRhdGVwaWNrZXIuX2hpZGVEYXRlcGlj a2VyKCk6ZC5kYXRlcGlja2VyLl9zaG93RGF0ZXBpY2tlcihhWzBdKTtyZXR1cm4g ZmFsc2V9KX19LF9hdXRvU2l6ZTpmdW5jdGlvbihhKXtpZih0aGlzLl9nZXQoYSwi YXV0b1NpemUiKSYmIWEuaW5saW5lKXt2YXIgYj1uZXcgRGF0ZSgyMDA5LDExLDIw KSxjPXRoaXMuX2dldChhLCJkYXRlRm9ybWF0Iik7aWYoYy5tYXRjaCgvW0RNXS8p KXt2YXIgZT1mdW5jdGlvbihmKXtmb3IodmFyIGg9MCxpPTAsZz0wO2c8Zi5sZW5n dGg7ZysrKWlmKGZbZ10ubGVuZ3RoPmgpe2g9ZltnXS5sZW5ndGg7aT1nfXJldHVy biBpfTtiLnNldE1vbnRoKGUodGhpcy5fZ2V0KGEsCmMubWF0Y2goL01NLyk/Im1v bnRoTmFtZXMiOiJtb250aE5hbWVzU2hvcnQiKSkpO2Iuc2V0RGF0ZShlKHRoaXMu X2dldChhLGMubWF0Y2goL0RELyk/ImRheU5hbWVzIjoiZGF5TmFtZXNTaG9ydCIp KSsyMC1iLmdldERheSgpKX1hLmlucHV0LmF0dHIoInNpemUiLHRoaXMuX2Zvcm1h dERhdGUoYSxiKS5sZW5ndGgpfX0sX2lubGluZURhdGVwaWNrZXI6ZnVuY3Rpb24o YSxiKXt2YXIgYz1kKGEpO2lmKCFjLmhhc0NsYXNzKHRoaXMubWFya2VyQ2xhc3NO YW1lKSl7Yy5hZGRDbGFzcyh0aGlzLm1hcmtlckNsYXNzTmFtZSkuYXBwZW5kKGIu ZHBEaXYpLmJpbmQoInNldERhdGEuZGF0ZXBpY2tlciIsZnVuY3Rpb24oZSxmLGgp e2Iuc2V0dGluZ3NbZl09aH0pLmJpbmQoImdldERhdGEuZGF0ZXBpY2tlciIsZnVu Y3Rpb24oZSxmKXtyZXR1cm4gdGhpcy5fZ2V0KGIsZil9KTtkLmRhdGEoYSwiZGF0 ZXBpY2tlciIsYik7dGhpcy5fc2V0RGF0ZShiLHRoaXMuX2dldERlZmF1bHREYXRl KGIpLAp0cnVlKTt0aGlzLl91cGRhdGVEYXRlcGlja2VyKGIpO3RoaXMuX3VwZGF0 ZUFsdGVybmF0ZShiKX19LF9kaWFsb2dEYXRlcGlja2VyOmZ1bmN0aW9uKGEsYixj LGUsZil7YT10aGlzLl9kaWFsb2dJbnN0O2lmKCFhKXt0aGlzLnV1aWQrPTE7dGhp cy5fZGlhbG9nSW5wdXQ9ZCgnPGlucHV0IHR5cGU9InRleHQiIGlkPSInKygiZHAi K3RoaXMudXVpZCkrJyIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAt MTAwcHg7IHdpZHRoOiAwcHg7IHotaW5kZXg6IC0xMDsiLz4nKTt0aGlzLl9kaWFs b2dJbnB1dC5rZXlkb3duKHRoaXMuX2RvS2V5RG93bik7ZCgiYm9keSIpLmFwcGVu ZCh0aGlzLl9kaWFsb2dJbnB1dCk7YT10aGlzLl9kaWFsb2dJbnN0PXRoaXMuX25l d0luc3QodGhpcy5fZGlhbG9nSW5wdXQsZmFsc2UpO2Euc2V0dGluZ3M9e307ZC5k YXRhKHRoaXMuX2RpYWxvZ0lucHV0WzBdLCJkYXRlcGlja2VyIixhKX1FKGEuc2V0 dGluZ3MsZXx8e30pO2I9YiYmYi5jb25zdHJ1Y3Rvcj09CkRhdGU/dGhpcy5fZm9y bWF0RGF0ZShhLGIpOmI7dGhpcy5fZGlhbG9nSW5wdXQudmFsKGIpO3RoaXMuX3Bv cz1mP2YubGVuZ3RoP2Y6W2YucGFnZVgsZi5wYWdlWV06bnVsbDtpZighdGhpcy5f cG9zKXRoaXMuX3Bvcz1bZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdp ZHRoLzItMTAwKyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdHx8 ZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0KSxkb2N1bWVudC5kb2N1bWVudEVsZW1l bnQuY2xpZW50SGVpZ2h0LzItMTUwKyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQu c2Nyb2xsVG9wfHxkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCldO3RoaXMuX2RpYWxv Z0lucHV0LmNzcygibGVmdCIsdGhpcy5fcG9zWzBdKzIwKyJweCIpLmNzcygidG9w Iix0aGlzLl9wb3NbMV0rInB4Iik7YS5zZXR0aW5ncy5vblNlbGVjdD1jO3RoaXMu X2luRGlhbG9nPXRydWU7dGhpcy5kcERpdi5hZGRDbGFzcyh0aGlzLl9kaWFsb2dD bGFzcyk7dGhpcy5fc2hvd0RhdGVwaWNrZXIodGhpcy5fZGlhbG9nSW5wdXRbMF0p OwpkLmJsb2NrVUkmJmQuYmxvY2tVSSh0aGlzLmRwRGl2KTtkLmRhdGEodGhpcy5f ZGlhbG9nSW5wdXRbMF0sImRhdGVwaWNrZXIiLGEpO3JldHVybiB0aGlzfSxfZGVz dHJveURhdGVwaWNrZXI6ZnVuY3Rpb24oYSl7dmFyIGI9ZChhKSxjPWQuZGF0YShh LCJkYXRlcGlja2VyIik7aWYoYi5oYXNDbGFzcyh0aGlzLm1hcmtlckNsYXNzTmFt ZSkpe3ZhciBlPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtkLnJlbW92ZURhdGEo YSwiZGF0ZXBpY2tlciIpO2lmKGU9PSJpbnB1dCIpe2MuYXBwZW5kLnJlbW92ZSgp O2MudHJpZ2dlci5yZW1vdmUoKTtiLnJlbW92ZUNsYXNzKHRoaXMubWFya2VyQ2xh c3NOYW1lKS51bmJpbmQoImZvY3VzIix0aGlzLl9zaG93RGF0ZXBpY2tlcikudW5i aW5kKCJrZXlkb3duIix0aGlzLl9kb0tleURvd24pLnVuYmluZCgia2V5cHJlc3Mi LHRoaXMuX2RvS2V5UHJlc3MpLnVuYmluZCgia2V5dXAiLHRoaXMuX2RvS2V5VXAp fWVsc2UgaWYoZT09ImRpdiJ8fGU9PSJzcGFuIiliLnJlbW92ZUNsYXNzKHRoaXMu bWFya2VyQ2xhc3NOYW1lKS5lbXB0eSgpfX0sCl9lbmFibGVEYXRlcGlja2VyOmZ1 bmN0aW9uKGEpe3ZhciBiPWQoYSksYz1kLmRhdGEoYSwiZGF0ZXBpY2tlciIpO2lm KGIuaGFzQ2xhc3ModGhpcy5tYXJrZXJDbGFzc05hbWUpKXt2YXIgZT1hLm5vZGVO YW1lLnRvTG93ZXJDYXNlKCk7aWYoZT09ImlucHV0Iil7YS5kaXNhYmxlZD1mYWxz ZTtjLnRyaWdnZXIuZmlsdGVyKCJidXR0b24iKS5lYWNoKGZ1bmN0aW9uKCl7dGhp cy5kaXNhYmxlZD1mYWxzZX0pLmVuZCgpLmZpbHRlcigiaW1nIikuY3NzKHtvcGFj aXR5OiIxLjAiLGN1cnNvcjoiIn0pfWVsc2UgaWYoZT09ImRpdiJ8fGU9PSJzcGFu IiliLmNoaWxkcmVuKCIuIit0aGlzLl9pbmxpbmVDbGFzcykuY2hpbGRyZW4oKS5y ZW1vdmVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiKTt0aGlzLl9kaXNhYmxlZElu cHV0cz1kLm1hcCh0aGlzLl9kaXNhYmxlZElucHV0cyxmdW5jdGlvbihmKXtyZXR1 cm4gZj09YT9udWxsOmZ9KX19LF9kaXNhYmxlRGF0ZXBpY2tlcjpmdW5jdGlvbihh KXt2YXIgYj0KZChhKSxjPWQuZGF0YShhLCJkYXRlcGlja2VyIik7aWYoYi5oYXND bGFzcyh0aGlzLm1hcmtlckNsYXNzTmFtZSkpe3ZhciBlPWEubm9kZU5hbWUudG9M b3dlckNhc2UoKTtpZihlPT0iaW5wdXQiKXthLmRpc2FibGVkPXRydWU7Yy50cmln Z2VyLmZpbHRlcigiYnV0dG9uIikuZWFjaChmdW5jdGlvbigpe3RoaXMuZGlzYWJs ZWQ9dHJ1ZX0pLmVuZCgpLmZpbHRlcigiaW1nIikuY3NzKHtvcGFjaXR5OiIwLjUi LGN1cnNvcjoiZGVmYXVsdCJ9KX1lbHNlIGlmKGU9PSJkaXYifHxlPT0ic3BhbiIp Yi5jaGlsZHJlbigiLiIrdGhpcy5faW5saW5lQ2xhc3MpLmNoaWxkcmVuKCkuYWRk Q2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIik7dGhpcy5fZGlzYWJsZWRJbnB1dHM9 ZC5tYXAodGhpcy5fZGlzYWJsZWRJbnB1dHMsZnVuY3Rpb24oZil7cmV0dXJuIGY9 PWE/bnVsbDpmfSk7dGhpcy5fZGlzYWJsZWRJbnB1dHNbdGhpcy5fZGlzYWJsZWRJ bnB1dHMubGVuZ3RoXT1hfX0sX2lzRGlzYWJsZWREYXRlcGlja2VyOmZ1bmN0aW9u KGEpe2lmKCFhKXJldHVybiBmYWxzZTsKZm9yKHZhciBiPTA7Yjx0aGlzLl9kaXNh YmxlZElucHV0cy5sZW5ndGg7YisrKWlmKHRoaXMuX2Rpc2FibGVkSW5wdXRzW2Jd PT1hKXJldHVybiB0cnVlO3JldHVybiBmYWxzZX0sX2dldEluc3Q6ZnVuY3Rpb24o YSl7dHJ5e3JldHVybiBkLmRhdGEoYSwiZGF0ZXBpY2tlciIpfWNhdGNoKGIpe3Ro cm93Ik1pc3NpbmcgaW5zdGFuY2UgZGF0YSBmb3IgdGhpcyBkYXRlcGlja2VyIjt9 fSxfb3B0aW9uRGF0ZXBpY2tlcjpmdW5jdGlvbihhLGIsYyl7dmFyIGU9dGhpcy5f Z2V0SW5zdChhKTtpZihhcmd1bWVudHMubGVuZ3RoPT0yJiZ0eXBlb2YgYj09InN0 cmluZyIpcmV0dXJuIGI9PSJkZWZhdWx0cyI/ZC5leHRlbmQoe30sZC5kYXRlcGlj a2VyLl9kZWZhdWx0cyk6ZT9iPT0iYWxsIj9kLmV4dGVuZCh7fSxlLnNldHRpbmdz KTp0aGlzLl9nZXQoZSxiKTpudWxsO3ZhciBmPWJ8fHt9O2lmKHR5cGVvZiBiPT0i c3RyaW5nIil7Zj17fTtmW2JdPWN9aWYoZSl7dGhpcy5fY3VySW5zdD09ZSYmCnRo aXMuX2hpZGVEYXRlcGlja2VyKCk7dmFyIGg9dGhpcy5fZ2V0RGF0ZURhdGVwaWNr ZXIoYSx0cnVlKTtFKGUuc2V0dGluZ3MsZik7dGhpcy5fYXR0YWNobWVudHMoZChh KSxlKTt0aGlzLl9hdXRvU2l6ZShlKTt0aGlzLl9zZXREYXRlRGF0ZXBpY2tlcihh LGgpO3RoaXMuX3VwZGF0ZURhdGVwaWNrZXIoZSl9fSxfY2hhbmdlRGF0ZXBpY2tl cjpmdW5jdGlvbihhLGIsYyl7dGhpcy5fb3B0aW9uRGF0ZXBpY2tlcihhLGIsYyl9 LF9yZWZyZXNoRGF0ZXBpY2tlcjpmdW5jdGlvbihhKXsoYT10aGlzLl9nZXRJbnN0 KGEpKSYmdGhpcy5fdXBkYXRlRGF0ZXBpY2tlcihhKX0sX3NldERhdGVEYXRlcGlj a2VyOmZ1bmN0aW9uKGEsYil7aWYoYT10aGlzLl9nZXRJbnN0KGEpKXt0aGlzLl9z ZXREYXRlKGEsYik7dGhpcy5fdXBkYXRlRGF0ZXBpY2tlcihhKTt0aGlzLl91cGRh dGVBbHRlcm5hdGUoYSl9fSxfZ2V0RGF0ZURhdGVwaWNrZXI6ZnVuY3Rpb24oYSxi KXsoYT10aGlzLl9nZXRJbnN0KGEpKSYmCiFhLmlubGluZSYmdGhpcy5fc2V0RGF0 ZUZyb21GaWVsZChhLGIpO3JldHVybiBhP3RoaXMuX2dldERhdGUoYSk6bnVsbH0s X2RvS2V5RG93bjpmdW5jdGlvbihhKXt2YXIgYj1kLmRhdGVwaWNrZXIuX2dldElu c3QoYS50YXJnZXQpLGM9dHJ1ZSxlPWIuZHBEaXYuaXMoIi51aS1kYXRlcGlja2Vy LXJ0bCIpO2IuX2tleUV2ZW50PXRydWU7aWYoZC5kYXRlcGlja2VyLl9kYXRlcGlj a2VyU2hvd2luZylzd2l0Y2goYS5rZXlDb2RlKXtjYXNlIDk6ZC5kYXRlcGlja2Vy Ll9oaWRlRGF0ZXBpY2tlcigpO2M9ZmFsc2U7YnJlYWs7Y2FzZSAxMzpjPWQoInRk LiIrZC5kYXRlcGlja2VyLl9kYXlPdmVyQ2xhc3MsYi5kcERpdikuYWRkKGQoInRk LiIrZC5kYXRlcGlja2VyLl9jdXJyZW50Q2xhc3MsYi5kcERpdikpO2NbMF0/ZC5k YXRlcGlja2VyLl9zZWxlY3REYXkoYS50YXJnZXQsYi5zZWxlY3RlZE1vbnRoLGIu c2VsZWN0ZWRZZWFyLGNbMF0pOmQuZGF0ZXBpY2tlci5faGlkZURhdGVwaWNrZXIo KTsKcmV0dXJuIGZhbHNlO2Nhc2UgMjc6ZC5kYXRlcGlja2VyLl9oaWRlRGF0ZXBp Y2tlcigpO2JyZWFrO2Nhc2UgMzM6ZC5kYXRlcGlja2VyLl9hZGp1c3REYXRlKGEu dGFyZ2V0LGEuY3RybEtleT8tZC5kYXRlcGlja2VyLl9nZXQoYiwic3RlcEJpZ01v bnRocyIpOi1kLmRhdGVwaWNrZXIuX2dldChiLCJzdGVwTW9udGhzIiksIk0iKTti cmVhaztjYXNlIDM0OmQuZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZShhLnRhcmdldCxh LmN0cmxLZXk/K2QuZGF0ZXBpY2tlci5fZ2V0KGIsInN0ZXBCaWdNb250aHMiKTor ZC5kYXRlcGlja2VyLl9nZXQoYiwic3RlcE1vbnRocyIpLCJNIik7YnJlYWs7Y2Fz ZSAzNTppZihhLmN0cmxLZXl8fGEubWV0YUtleSlkLmRhdGVwaWNrZXIuX2NsZWFy RGF0ZShhLnRhcmdldCk7Yz1hLmN0cmxLZXl8fGEubWV0YUtleTticmVhaztjYXNl IDM2OmlmKGEuY3RybEtleXx8YS5tZXRhS2V5KWQuZGF0ZXBpY2tlci5fZ290b1Rv ZGF5KGEudGFyZ2V0KTtjPWEuY3RybEtleXx8CmEubWV0YUtleTticmVhaztjYXNl IDM3OmlmKGEuY3RybEtleXx8YS5tZXRhS2V5KWQuZGF0ZXBpY2tlci5fYWRqdXN0 RGF0ZShhLnRhcmdldCxlPysxOi0xLCJEIik7Yz1hLmN0cmxLZXl8fGEubWV0YUtl eTtpZihhLm9yaWdpbmFsRXZlbnQuYWx0S2V5KWQuZGF0ZXBpY2tlci5fYWRqdXN0 RGF0ZShhLnRhcmdldCxhLmN0cmxLZXk/LWQuZGF0ZXBpY2tlci5fZ2V0KGIsInN0 ZXBCaWdNb250aHMiKTotZC5kYXRlcGlja2VyLl9nZXQoYiwic3RlcE1vbnRocyIp LCJNIik7YnJlYWs7Y2FzZSAzODppZihhLmN0cmxLZXl8fGEubWV0YUtleSlkLmRh dGVwaWNrZXIuX2FkanVzdERhdGUoYS50YXJnZXQsLTcsIkQiKTtjPWEuY3RybEtl eXx8YS5tZXRhS2V5O2JyZWFrO2Nhc2UgMzk6aWYoYS5jdHJsS2V5fHxhLm1ldGFL ZXkpZC5kYXRlcGlja2VyLl9hZGp1c3REYXRlKGEudGFyZ2V0LGU/LTE6KzEsIkQi KTtjPWEuY3RybEtleXx8YS5tZXRhS2V5O2lmKGEub3JpZ2luYWxFdmVudC5hbHRL ZXkpZC5kYXRlcGlja2VyLl9hZGp1c3REYXRlKGEudGFyZ2V0LAphLmN0cmxLZXk/ K2QuZGF0ZXBpY2tlci5fZ2V0KGIsInN0ZXBCaWdNb250aHMiKTorZC5kYXRlcGlj a2VyLl9nZXQoYiwic3RlcE1vbnRocyIpLCJNIik7YnJlYWs7Y2FzZSA0MDppZihh LmN0cmxLZXl8fGEubWV0YUtleSlkLmRhdGVwaWNrZXIuX2FkanVzdERhdGUoYS50 YXJnZXQsKzcsIkQiKTtjPWEuY3RybEtleXx8YS5tZXRhS2V5O2JyZWFrO2RlZmF1 bHQ6Yz1mYWxzZX1lbHNlIGlmKGEua2V5Q29kZT09MzYmJmEuY3RybEtleSlkLmRh dGVwaWNrZXIuX3Nob3dEYXRlcGlja2VyKHRoaXMpO2Vsc2UgYz1mYWxzZTtpZihj KXthLnByZXZlbnREZWZhdWx0KCk7YS5zdG9wUHJvcGFnYXRpb24oKX19LF9kb0tl eVByZXNzOmZ1bmN0aW9uKGEpe3ZhciBiPWQuZGF0ZXBpY2tlci5fZ2V0SW5zdChh LnRhcmdldCk7aWYoZC5kYXRlcGlja2VyLl9nZXQoYiwiY29uc3RyYWluSW5wdXQi KSl7Yj1kLmRhdGVwaWNrZXIuX3Bvc3NpYmxlQ2hhcnMoZC5kYXRlcGlja2VyLl9n ZXQoYiwiZGF0ZUZvcm1hdCIpKTsKdmFyIGM9U3RyaW5nLmZyb21DaGFyQ29kZShh LmNoYXJDb2RlPT11bmRlZmluZWQ/YS5rZXlDb2RlOmEuY2hhckNvZGUpO3JldHVy biBhLmN0cmxLZXl8fGM8IiAifHwhYnx8Yi5pbmRleE9mKGMpPi0xfX0sX2RvS2V5 VXA6ZnVuY3Rpb24oYSl7YT1kLmRhdGVwaWNrZXIuX2dldEluc3QoYS50YXJnZXQp O2lmKGEuaW5wdXQudmFsKCkhPWEubGFzdFZhbCl0cnl7aWYoZC5kYXRlcGlja2Vy LnBhcnNlRGF0ZShkLmRhdGVwaWNrZXIuX2dldChhLCJkYXRlRm9ybWF0IiksYS5p bnB1dD9hLmlucHV0LnZhbCgpOm51bGwsZC5kYXRlcGlja2VyLl9nZXRGb3JtYXRD b25maWcoYSkpKXtkLmRhdGVwaWNrZXIuX3NldERhdGVGcm9tRmllbGQoYSk7ZC5k YXRlcGlja2VyLl91cGRhdGVBbHRlcm5hdGUoYSk7ZC5kYXRlcGlja2VyLl91cGRh dGVEYXRlcGlja2VyKGEpfX1jYXRjaChiKXtkLmRhdGVwaWNrZXIubG9nKGIpfXJl dHVybiB0cnVlfSxfc2hvd0RhdGVwaWNrZXI6ZnVuY3Rpb24oYSl7YT1hLnRhcmdl dHx8CmE7aWYoYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT0iaW5wdXQiKWE9ZCgi aW5wdXQiLGEucGFyZW50Tm9kZSlbMF07aWYoIShkLmRhdGVwaWNrZXIuX2lzRGlz YWJsZWREYXRlcGlja2VyKGEpfHxkLmRhdGVwaWNrZXIuX2xhc3RJbnB1dD09YSkp e3ZhciBiPWQuZGF0ZXBpY2tlci5fZ2V0SW5zdChhKTtkLmRhdGVwaWNrZXIuX2N1 ckluc3QmJmQuZGF0ZXBpY2tlci5fY3VySW5zdCE9YiYmZC5kYXRlcGlja2VyLl9j dXJJbnN0LmRwRGl2LnN0b3AodHJ1ZSx0cnVlKTt2YXIgYz1kLmRhdGVwaWNrZXIu X2dldChiLCJiZWZvcmVTaG93Iik7RShiLnNldHRpbmdzLGM/Yy5hcHBseShhLFth LGJdKTp7fSk7Yi5sYXN0VmFsPW51bGw7ZC5kYXRlcGlja2VyLl9sYXN0SW5wdXQ9 YTtkLmRhdGVwaWNrZXIuX3NldERhdGVGcm9tRmllbGQoYik7aWYoZC5kYXRlcGlj a2VyLl9pbkRpYWxvZylhLnZhbHVlPSIiO2lmKCFkLmRhdGVwaWNrZXIuX3Bvcyl7 ZC5kYXRlcGlja2VyLl9wb3M9ZC5kYXRlcGlja2VyLl9maW5kUG9zKGEpOwpkLmRh dGVwaWNrZXIuX3Bvc1sxXSs9YS5vZmZzZXRIZWlnaHR9dmFyIGU9ZmFsc2U7ZChh KS5wYXJlbnRzKCkuZWFjaChmdW5jdGlvbigpe2V8PWQodGhpcykuY3NzKCJwb3Np dGlvbiIpPT0iZml4ZWQiO3JldHVybiFlfSk7aWYoZSYmZC5icm93c2VyLm9wZXJh KXtkLmRhdGVwaWNrZXIuX3Bvc1swXS09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 LnNjcm9sbExlZnQ7ZC5kYXRlcGlja2VyLl9wb3NbMV0tPWRvY3VtZW50LmRvY3Vt ZW50RWxlbWVudC5zY3JvbGxUb3B9Yz17bGVmdDpkLmRhdGVwaWNrZXIuX3Bvc1sw XSx0b3A6ZC5kYXRlcGlja2VyLl9wb3NbMV19O2QuZGF0ZXBpY2tlci5fcG9zPW51 bGw7Yi5kcERpdi5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsZGlzcGxheToiYmxv Y2siLHRvcDoiLTEwMDBweCJ9KTtkLmRhdGVwaWNrZXIuX3VwZGF0ZURhdGVwaWNr ZXIoYik7Yz1kLmRhdGVwaWNrZXIuX2NoZWNrT2Zmc2V0KGIsYyxlKTtiLmRwRGl2 LmNzcyh7cG9zaXRpb246ZC5kYXRlcGlja2VyLl9pbkRpYWxvZyYmCmQuYmxvY2tV ST8ic3RhdGljIjplPyJmaXhlZCI6ImFic29sdXRlIixkaXNwbGF5OiJub25lIixs ZWZ0OmMubGVmdCsicHgiLHRvcDpjLnRvcCsicHgifSk7aWYoIWIuaW5saW5lKXtj PWQuZGF0ZXBpY2tlci5fZ2V0KGIsInNob3dBbmltIik7dmFyIGY9ZC5kYXRlcGlj a2VyLl9nZXQoYiwiZHVyYXRpb24iKSxoPWZ1bmN0aW9uKCl7ZC5kYXRlcGlja2Vy Ll9kYXRlcGlja2VyU2hvd2luZz10cnVlO3ZhciBpPWQuZGF0ZXBpY2tlci5fZ2V0 Qm9yZGVycyhiLmRwRGl2KTtiLmRwRGl2LmZpbmQoImlmcmFtZS51aS1kYXRlcGlj a2VyLWNvdmVyIikuY3NzKHtsZWZ0Oi1pWzBdLHRvcDotaVsxXSx3aWR0aDpiLmRw RGl2Lm91dGVyV2lkdGgoKSxoZWlnaHQ6Yi5kcERpdi5vdXRlckhlaWdodCgpfSl9 O2IuZHBEaXYuekluZGV4KGQoYSkuekluZGV4KCkrMSk7ZC5lZmZlY3RzJiZkLmVm ZmVjdHNbY10/Yi5kcERpdi5zaG93KGMsZC5kYXRlcGlja2VyLl9nZXQoYiwic2hv d09wdGlvbnMiKSxmLApoKTpiLmRwRGl2W2N8fCJzaG93Il0oYz9mOm51bGwsaCk7 aWYoIWN8fCFmKWgoKTtiLmlucHV0LmlzKCI6dmlzaWJsZSIpJiYhYi5pbnB1dC5p cygiOmRpc2FibGVkIikmJmIuaW5wdXQuZm9jdXMoKTtkLmRhdGVwaWNrZXIuX2N1 ckluc3Q9Yn19fSxfdXBkYXRlRGF0ZXBpY2tlcjpmdW5jdGlvbihhKXt2YXIgYj10 aGlzLGM9ZC5kYXRlcGlja2VyLl9nZXRCb3JkZXJzKGEuZHBEaXYpO2EuZHBEaXYu ZW1wdHkoKS5hcHBlbmQodGhpcy5fZ2VuZXJhdGVIVE1MKGEpKS5maW5kKCJpZnJh bWUudWktZGF0ZXBpY2tlci1jb3ZlciIpLmNzcyh7bGVmdDotY1swXSx0b3A6LWNb MV0sd2lkdGg6YS5kcERpdi5vdXRlcldpZHRoKCksaGVpZ2h0OmEuZHBEaXYub3V0 ZXJIZWlnaHQoKX0pLmVuZCgpLmZpbmQoImJ1dHRvbiwgLnVpLWRhdGVwaWNrZXIt cHJldiwgLnVpLWRhdGVwaWNrZXItbmV4dCwgLnVpLWRhdGVwaWNrZXItY2FsZW5k YXIgdGQgYSIpLmJpbmQoIm1vdXNlb3V0IixmdW5jdGlvbigpe2QodGhpcykucmVt b3ZlQ2xhc3MoInVpLXN0YXRlLWhvdmVyIik7CnRoaXMuY2xhc3NOYW1lLmluZGV4 T2YoInVpLWRhdGVwaWNrZXItcHJldiIpIT0tMSYmZCh0aGlzKS5yZW1vdmVDbGFz cygidWktZGF0ZXBpY2tlci1wcmV2LWhvdmVyIik7dGhpcy5jbGFzc05hbWUuaW5k ZXhPZigidWktZGF0ZXBpY2tlci1uZXh0IikhPS0xJiZkKHRoaXMpLnJlbW92ZUNs YXNzKCJ1aS1kYXRlcGlja2VyLW5leHQtaG92ZXIiKX0pLmJpbmQoIm1vdXNlb3Zl ciIsZnVuY3Rpb24oKXtpZighYi5faXNEaXNhYmxlZERhdGVwaWNrZXIoYS5pbmxp bmU/YS5kcERpdi5wYXJlbnQoKVswXTphLmlucHV0WzBdKSl7ZCh0aGlzKS5wYXJl bnRzKCIudWktZGF0ZXBpY2tlci1jYWxlbmRhciIpLmZpbmQoImEiKS5yZW1vdmVD bGFzcygidWktc3RhdGUtaG92ZXIiKTtkKHRoaXMpLmFkZENsYXNzKCJ1aS1zdGF0 ZS1ob3ZlciIpO3RoaXMuY2xhc3NOYW1lLmluZGV4T2YoInVpLWRhdGVwaWNrZXIt cHJldiIpIT0tMSYmZCh0aGlzKS5hZGRDbGFzcygidWktZGF0ZXBpY2tlci1wcmV2 LWhvdmVyIik7CnRoaXMuY2xhc3NOYW1lLmluZGV4T2YoInVpLWRhdGVwaWNrZXIt bmV4dCIpIT0tMSYmZCh0aGlzKS5hZGRDbGFzcygidWktZGF0ZXBpY2tlci1uZXh0 LWhvdmVyIil9fSkuZW5kKCkuZmluZCgiLiIrdGhpcy5fZGF5T3ZlckNsYXNzKyIg YSIpLnRyaWdnZXIoIm1vdXNlb3ZlciIpLmVuZCgpO2M9dGhpcy5fZ2V0TnVtYmVy T2ZNb250aHMoYSk7dmFyIGU9Y1sxXTtlPjE/YS5kcERpdi5hZGRDbGFzcygidWkt ZGF0ZXBpY2tlci1tdWx0aS0iK2UpLmNzcygid2lkdGgiLDE3KmUrImVtIik6YS5k cERpdi5yZW1vdmVDbGFzcygidWktZGF0ZXBpY2tlci1tdWx0aS0yIHVpLWRhdGVw aWNrZXItbXVsdGktMyB1aS1kYXRlcGlja2VyLW11bHRpLTQiKS53aWR0aCgiIik7 YS5kcERpdlsoY1swXSE9MXx8Y1sxXSE9MT8iYWRkIjoicmVtb3ZlIikrIkNsYXNz Il0oInVpLWRhdGVwaWNrZXItbXVsdGkiKTthLmRwRGl2Wyh0aGlzLl9nZXQoYSwi aXNSVEwiKT8iYWRkIjoicmVtb3ZlIikrIkNsYXNzIl0oInVpLWRhdGVwaWNrZXIt cnRsIik7CmE9PWQuZGF0ZXBpY2tlci5fY3VySW5zdCYmZC5kYXRlcGlja2VyLl9k YXRlcGlja2VyU2hvd2luZyYmYS5pbnB1dCYmYS5pbnB1dC5pcygiOnZpc2libGUi KSYmIWEuaW5wdXQuaXMoIjpkaXNhYmxlZCIpJiZhLmlucHV0LmZvY3VzKCl9LF9n ZXRCb3JkZXJzOmZ1bmN0aW9uKGEpe3ZhciBiPWZ1bmN0aW9uKGMpe3JldHVybnt0 aGluOjEsbWVkaXVtOjIsdGhpY2s6M31bY118fGN9O3JldHVybltwYXJzZUZsb2F0 KGIoYS5jc3MoImJvcmRlci1sZWZ0LXdpZHRoIikpKSxwYXJzZUZsb2F0KGIoYS5j c3MoImJvcmRlci10b3Atd2lkdGgiKSkpXX0sX2NoZWNrT2Zmc2V0OmZ1bmN0aW9u KGEsYixjKXt2YXIgZT1hLmRwRGl2Lm91dGVyV2lkdGgoKSxmPWEuZHBEaXYub3V0 ZXJIZWlnaHQoKSxoPWEuaW5wdXQ/YS5pbnB1dC5vdXRlcldpZHRoKCk6MCxpPWEu aW5wdXQ/YS5pbnB1dC5vdXRlckhlaWdodCgpOjAsZz1kb2N1bWVudC5kb2N1bWVu dEVsZW1lbnQuY2xpZW50V2lkdGgrZChkb2N1bWVudCkuc2Nyb2xsTGVmdCgpLApr PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQrZChkb2N1bWVu dCkuc2Nyb2xsVG9wKCk7Yi5sZWZ0LT10aGlzLl9nZXQoYSwiaXNSVEwiKT9lLWg6 MDtiLmxlZnQtPWMmJmIubGVmdD09YS5pbnB1dC5vZmZzZXQoKS5sZWZ0P2QoZG9j dW1lbnQpLnNjcm9sbExlZnQoKTowO2IudG9wLT1jJiZiLnRvcD09YS5pbnB1dC5v ZmZzZXQoKS50b3AraT9kKGRvY3VtZW50KS5zY3JvbGxUb3AoKTowO2IubGVmdC09 TWF0aC5taW4oYi5sZWZ0LGIubGVmdCtlPmcmJmc+ZT9NYXRoLmFicyhiLmxlZnQr ZS1nKTowKTtiLnRvcC09TWF0aC5taW4oYi50b3AsYi50b3ArZj5rJiZrPmY/TWF0 aC5hYnMoZitpKTowKTtyZXR1cm4gYn0sX2ZpbmRQb3M6ZnVuY3Rpb24oYSl7Zm9y KHZhciBiPXRoaXMuX2dldCh0aGlzLl9nZXRJbnN0KGEpLCJpc1JUTCIpO2EmJihh LnR5cGU9PSJoaWRkZW4ifHxhLm5vZGVUeXBlIT0xKTspYT1hW2I/InByZXZpb3Vz U2libGluZyI6Im5leHRTaWJsaW5nIl07CmE9ZChhKS5vZmZzZXQoKTtyZXR1cm5b YS5sZWZ0LGEudG9wXX0sX2hpZGVEYXRlcGlja2VyOmZ1bmN0aW9uKGEpe3ZhciBi PXRoaXMuX2N1ckluc3Q7aWYoISghYnx8YSYmYiE9ZC5kYXRhKGEsImRhdGVwaWNr ZXIiKSkpaWYodGhpcy5fZGF0ZXBpY2tlclNob3dpbmcpe2E9dGhpcy5fZ2V0KGIs InNob3dBbmltIik7dmFyIGM9dGhpcy5fZ2V0KGIsImR1cmF0aW9uIiksZT1mdW5j dGlvbigpe2QuZGF0ZXBpY2tlci5fdGlkeURpYWxvZyhiKTt0aGlzLl9jdXJJbnN0 PW51bGx9O2QuZWZmZWN0cyYmZC5lZmZlY3RzW2FdP2IuZHBEaXYuaGlkZShhLGQu ZGF0ZXBpY2tlci5fZ2V0KGIsInNob3dPcHRpb25zIiksYyxlKTpiLmRwRGl2W2E9 PSJzbGlkZURvd24iPyJzbGlkZVVwIjphPT0iZmFkZUluIj8iZmFkZU91dCI6Imhp ZGUiXShhP2M6bnVsbCxlKTthfHxlKCk7aWYoYT10aGlzLl9nZXQoYiwib25DbG9z ZSIpKWEuYXBwbHkoYi5pbnB1dD9iLmlucHV0WzBdOm51bGwsW2IuaW5wdXQ/Yi5p bnB1dC52YWwoKToKIiIsYl0pO3RoaXMuX2RhdGVwaWNrZXJTaG93aW5nPWZhbHNl O3RoaXMuX2xhc3RJbnB1dD1udWxsO2lmKHRoaXMuX2luRGlhbG9nKXt0aGlzLl9k aWFsb2dJbnB1dC5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDoiMCIsdG9w OiItMTAwcHgifSk7aWYoZC5ibG9ja1VJKXtkLnVuYmxvY2tVSSgpO2QoImJvZHki KS5hcHBlbmQodGhpcy5kcERpdil9fXRoaXMuX2luRGlhbG9nPWZhbHNlfX0sX3Rp ZHlEaWFsb2c6ZnVuY3Rpb24oYSl7YS5kcERpdi5yZW1vdmVDbGFzcyh0aGlzLl9k aWFsb2dDbGFzcykudW5iaW5kKCIudWktZGF0ZXBpY2tlci1jYWxlbmRhciIpfSxf Y2hlY2tFeHRlcm5hbENsaWNrOmZ1bmN0aW9uKGEpe2lmKGQuZGF0ZXBpY2tlci5f Y3VySW5zdCl7YT1kKGEudGFyZ2V0KTthWzBdLmlkIT1kLmRhdGVwaWNrZXIuX21h aW5EaXZJZCYmYS5wYXJlbnRzKCIjIitkLmRhdGVwaWNrZXIuX21haW5EaXZJZCku bGVuZ3RoPT0wJiYhYS5oYXNDbGFzcyhkLmRhdGVwaWNrZXIubWFya2VyQ2xhc3NO YW1lKSYmCiFhLmhhc0NsYXNzKGQuZGF0ZXBpY2tlci5fdHJpZ2dlckNsYXNzKSYm ZC5kYXRlcGlja2VyLl9kYXRlcGlja2VyU2hvd2luZyYmIShkLmRhdGVwaWNrZXIu X2luRGlhbG9nJiZkLmJsb2NrVUkpJiZkLmRhdGVwaWNrZXIuX2hpZGVEYXRlcGlj a2VyKCl9fSxfYWRqdXN0RGF0ZTpmdW5jdGlvbihhLGIsYyl7YT1kKGEpO3ZhciBl PXRoaXMuX2dldEluc3QoYVswXSk7aWYoIXRoaXMuX2lzRGlzYWJsZWREYXRlcGlj a2VyKGFbMF0pKXt0aGlzLl9hZGp1c3RJbnN0RGF0ZShlLGIrKGM9PSJNIj90aGlz Ll9nZXQoZSwic2hvd0N1cnJlbnRBdFBvcyIpOjApLGMpO3RoaXMuX3VwZGF0ZURh dGVwaWNrZXIoZSl9fSxfZ290b1RvZGF5OmZ1bmN0aW9uKGEpe2E9ZChhKTt2YXIg Yj10aGlzLl9nZXRJbnN0KGFbMF0pO2lmKHRoaXMuX2dldChiLCJnb3RvQ3VycmVu dCIpJiZiLmN1cnJlbnREYXkpe2Iuc2VsZWN0ZWREYXk9Yi5jdXJyZW50RGF5O2Iu ZHJhd01vbnRoPWIuc2VsZWN0ZWRNb250aD1iLmN1cnJlbnRNb250aDsKYi5kcmF3 WWVhcj1iLnNlbGVjdGVkWWVhcj1iLmN1cnJlbnRZZWFyfWVsc2V7dmFyIGM9bmV3 IERhdGU7Yi5zZWxlY3RlZERheT1jLmdldERhdGUoKTtiLmRyYXdNb250aD1iLnNl bGVjdGVkTW9udGg9Yy5nZXRNb250aCgpO2IuZHJhd1llYXI9Yi5zZWxlY3RlZFll YXI9Yy5nZXRGdWxsWWVhcigpfXRoaXMuX25vdGlmeUNoYW5nZShiKTt0aGlzLl9h ZGp1c3REYXRlKGEpfSxfc2VsZWN0TW9udGhZZWFyOmZ1bmN0aW9uKGEsYixjKXth PWQoYSk7dmFyIGU9dGhpcy5fZ2V0SW5zdChhWzBdKTtlLl9zZWxlY3RpbmdNb250 aFllYXI9ZmFsc2U7ZVsic2VsZWN0ZWQiKyhjPT0iTSI/Ik1vbnRoIjoiWWVhciIp XT1lWyJkcmF3IisoYz09Ik0iPyJNb250aCI6IlllYXIiKV09cGFyc2VJbnQoYi5v cHRpb25zW2Iuc2VsZWN0ZWRJbmRleF0udmFsdWUsMTApO3RoaXMuX25vdGlmeUNo YW5nZShlKTt0aGlzLl9hZGp1c3REYXRlKGEpfSxfY2xpY2tNb250aFllYXI6ZnVu Y3Rpb24oYSl7YT10aGlzLl9nZXRJbnN0KGQoYSlbMF0pOwphLmlucHV0JiZhLl9z ZWxlY3RpbmdNb250aFllYXImJiFkLmJyb3dzZXIubXNpZSYmYS5pbnB1dC5mb2N1 cygpO2EuX3NlbGVjdGluZ01vbnRoWWVhcj0hYS5fc2VsZWN0aW5nTW9udGhZZWFy fSxfc2VsZWN0RGF5OmZ1bmN0aW9uKGEsYixjLGUpe3ZhciBmPWQoYSk7aWYoIShk KGUpLmhhc0NsYXNzKHRoaXMuX3Vuc2VsZWN0YWJsZUNsYXNzKXx8dGhpcy5faXNE aXNhYmxlZERhdGVwaWNrZXIoZlswXSkpKXtmPXRoaXMuX2dldEluc3QoZlswXSk7 Zi5zZWxlY3RlZERheT1mLmN1cnJlbnREYXk9ZCgiYSIsZSkuaHRtbCgpO2Yuc2Vs ZWN0ZWRNb250aD1mLmN1cnJlbnRNb250aD1iO2Yuc2VsZWN0ZWRZZWFyPWYuY3Vy cmVudFllYXI9Yzt0aGlzLl9zZWxlY3REYXRlKGEsdGhpcy5fZm9ybWF0RGF0ZShm LGYuY3VycmVudERheSxmLmN1cnJlbnRNb250aCxmLmN1cnJlbnRZZWFyKSl9fSxf Y2xlYXJEYXRlOmZ1bmN0aW9uKGEpe2E9ZChhKTt0aGlzLl9nZXRJbnN0KGFbMF0p O3RoaXMuX3NlbGVjdERhdGUoYSwKIiIpfSxfc2VsZWN0RGF0ZTpmdW5jdGlvbihh LGIpe2E9dGhpcy5fZ2V0SW5zdChkKGEpWzBdKTtiPWIhPW51bGw/Yjp0aGlzLl9m b3JtYXREYXRlKGEpO2EuaW5wdXQmJmEuaW5wdXQudmFsKGIpO3RoaXMuX3VwZGF0 ZUFsdGVybmF0ZShhKTt2YXIgYz10aGlzLl9nZXQoYSwib25TZWxlY3QiKTtpZihj KWMuYXBwbHkoYS5pbnB1dD9hLmlucHV0WzBdOm51bGwsW2IsYV0pO2Vsc2UgYS5p bnB1dCYmYS5pbnB1dC50cmlnZ2VyKCJjaGFuZ2UiKTtpZihhLmlubGluZSl0aGlz Ll91cGRhdGVEYXRlcGlja2VyKGEpO2Vsc2V7dGhpcy5faGlkZURhdGVwaWNrZXIo KTt0aGlzLl9sYXN0SW5wdXQ9YS5pbnB1dFswXTt0eXBlb2YgYS5pbnB1dFswXSE9 Im9iamVjdCImJmEuaW5wdXQuZm9jdXMoKTt0aGlzLl9sYXN0SW5wdXQ9bnVsbH19 LF91cGRhdGVBbHRlcm5hdGU6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5fZ2V0KGEs ImFsdEZpZWxkIik7aWYoYil7dmFyIGM9dGhpcy5fZ2V0KGEsImFsdEZvcm1hdCIp fHwKdGhpcy5fZ2V0KGEsImRhdGVGb3JtYXQiKSxlPXRoaXMuX2dldERhdGUoYSks Zj10aGlzLmZvcm1hdERhdGUoYyxlLHRoaXMuX2dldEZvcm1hdENvbmZpZyhhKSk7 ZChiKS5lYWNoKGZ1bmN0aW9uKCl7ZCh0aGlzKS52YWwoZil9KX19LG5vV2Vla2Vu ZHM6ZnVuY3Rpb24oYSl7YT1hLmdldERheSgpO3JldHVyblthPjAmJmE8NiwiIl19 LGlzbzg2MDFXZWVrOmZ1bmN0aW9uKGEpe2E9bmV3IERhdGUoYS5nZXRUaW1lKCkp O2Euc2V0RGF0ZShhLmdldERhdGUoKSs0LShhLmdldERheSgpfHw3KSk7dmFyIGI9 YS5nZXRUaW1lKCk7YS5zZXRNb250aCgwKTthLnNldERhdGUoMSk7cmV0dXJuIE1h dGguZmxvb3IoTWF0aC5yb3VuZCgoYi1hKS84NjRFNSkvNykrMX0scGFyc2VEYXRl OmZ1bmN0aW9uKGEsYixjKXtpZihhPT1udWxsfHxiPT1udWxsKXRocm93IkludmFs aWQgYXJndW1lbnRzIjtiPXR5cGVvZiBiPT0ib2JqZWN0Ij9iLnRvU3RyaW5nKCk6 YisiIjtpZihiPT0iIilyZXR1cm4gbnVsbDsKZm9yKHZhciBlPShjP2Muc2hvcnRZ ZWFyQ3V0b2ZmOm51bGwpfHx0aGlzLl9kZWZhdWx0cy5zaG9ydFllYXJDdXRvZmYs Zj0oYz9jLmRheU5hbWVzU2hvcnQ6bnVsbCl8fHRoaXMuX2RlZmF1bHRzLmRheU5h bWVzU2hvcnQsaD0oYz9jLmRheU5hbWVzOm51bGwpfHx0aGlzLl9kZWZhdWx0cy5k YXlOYW1lcyxpPShjP2MubW9udGhOYW1lc1Nob3J0Om51bGwpfHx0aGlzLl9kZWZh dWx0cy5tb250aE5hbWVzU2hvcnQsZz0oYz9jLm1vbnRoTmFtZXM6bnVsbCl8fHRo aXMuX2RlZmF1bHRzLm1vbnRoTmFtZXMsaz1jPS0xLGw9LTEsdT0tMSxqPWZhbHNl LG89ZnVuY3Rpb24ocCl7KHA9eisxPGEubGVuZ3RoJiZhLmNoYXJBdCh6KzEpPT1w KSYmeisrO3JldHVybiBwfSxtPWZ1bmN0aW9uKHApe28ocCk7cD1uZXcgUmVnRXhw KCJeXFxkezEsIisocD09IkAiPzE0OnA9PSIhIj8yMDpwPT0ieSI/NDpwPT0ibyI/ MzoyKSsifSIpO3A9Yi5zdWJzdHJpbmcocykubWF0Y2gocCk7aWYoIXApdGhyb3ci TWlzc2luZyBudW1iZXIgYXQgcG9zaXRpb24gIisKcztzKz1wWzBdLmxlbmd0aDty ZXR1cm4gcGFyc2VJbnQocFswXSwxMCl9LG49ZnVuY3Rpb24ocCx3LEcpe3A9byhw KT9HOnc7Zm9yKHc9MDt3PHAubGVuZ3RoO3crKylpZihiLnN1YnN0cihzLHBbd10u bGVuZ3RoKT09cFt3XSl7cys9cFt3XS5sZW5ndGg7cmV0dXJuIHcrMX10aHJvdyJV bmtub3duIG5hbWUgYXQgcG9zaXRpb24gIitzO30scj1mdW5jdGlvbigpe2lmKGIu Y2hhckF0KHMpIT1hLmNoYXJBdCh6KSl0aHJvdyJVbmV4cGVjdGVkIGxpdGVyYWwg YXQgcG9zaXRpb24gIitzO3MrK30scz0wLHo9MDt6PGEubGVuZ3RoO3orKylpZihq KWlmKGEuY2hhckF0KHopPT0iJyImJiFvKCInIikpaj1mYWxzZTtlbHNlIHIoKTtl bHNlIHN3aXRjaChhLmNoYXJBdCh6KSl7Y2FzZSAiZCI6bD1tKCJkIik7YnJlYWs7 Y2FzZSAiRCI6bigiRCIsZixoKTticmVhaztjYXNlICJvIjp1PW0oIm8iKTticmVh aztjYXNlICJtIjprPW0oIm0iKTticmVhaztjYXNlICJNIjprPW4oIk0iLGksZyk7 YnJlYWs7CmNhc2UgInkiOmM9bSgieSIpO2JyZWFrO2Nhc2UgIkAiOnZhciB2PW5l dyBEYXRlKG0oIkAiKSk7Yz12LmdldEZ1bGxZZWFyKCk7az12LmdldE1vbnRoKCkr MTtsPXYuZ2V0RGF0ZSgpO2JyZWFrO2Nhc2UgIiEiOnY9bmV3IERhdGUoKG0oIiEi KS10aGlzLl90aWNrc1RvMTk3MCkvMUU0KTtjPXYuZ2V0RnVsbFllYXIoKTtrPXYu Z2V0TW9udGgoKSsxO2w9di5nZXREYXRlKCk7YnJlYWs7Y2FzZSAiJyI6aWYobygi JyIpKXIoKTtlbHNlIGo9dHJ1ZTticmVhaztkZWZhdWx0OnIoKX1pZihjPT0tMSlj PShuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKTtlbHNlIGlmKGM8MTAwKWMrPShuZXcg RGF0ZSkuZ2V0RnVsbFllYXIoKS0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCklMTAw KyhjPD1lPzA6LTEwMCk7aWYodT4tMSl7az0xO2w9dTtkb3tlPXRoaXMuX2dldERh eXNJbk1vbnRoKGMsay0xKTtpZihsPD1lKWJyZWFrO2srKztsLT1lfXdoaWxlKDEp fXY9dGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QobmV3IERhdGUoYywKay0xLGwp KTtpZih2LmdldEZ1bGxZZWFyKCkhPWN8fHYuZ2V0TW9udGgoKSsxIT1rfHx2Lmdl dERhdGUoKSE9bCl0aHJvdyJJbnZhbGlkIGRhdGUiO3JldHVybiB2fSxBVE9NOiJ5 eS1tbS1kZCIsQ09PS0lFOiJELCBkZCBNIHl5IixJU09fODYwMToieXktbW0tZGQi LFJGQ184MjI6IkQsIGQgTSB5IixSRkNfODUwOiJERCwgZGQtTS15IixSRkNfMTAz NjoiRCwgZCBNIHkiLFJGQ18xMTIzOiJELCBkIE0geXkiLFJGQ18yODIyOiJELCBk IE0geXkiLFJTUzoiRCwgZCBNIHkiLFRJQ0tTOiIhIixUSU1FU1RBTVA6IkAiLFcz QzoieXktbW0tZGQiLF90aWNrc1RvMTk3MDooNzE4Njg1K01hdGguZmxvb3IoNDky LjUpLU1hdGguZmxvb3IoMTkuNykrTWF0aC5mbG9vcig0LjkyNSkpKjI0KjYwKjYw KjFFNyxmb3JtYXREYXRlOmZ1bmN0aW9uKGEsYixjKXtpZighYilyZXR1cm4iIjt2 YXIgZT0oYz9jLmRheU5hbWVzU2hvcnQ6bnVsbCl8fHRoaXMuX2RlZmF1bHRzLmRh eU5hbWVzU2hvcnQsZj0oYz8KYy5kYXlOYW1lczpudWxsKXx8dGhpcy5fZGVmYXVs dHMuZGF5TmFtZXMsaD0oYz9jLm1vbnRoTmFtZXNTaG9ydDpudWxsKXx8dGhpcy5f ZGVmYXVsdHMubW9udGhOYW1lc1Nob3J0O2M9KGM/Yy5tb250aE5hbWVzOm51bGwp fHx0aGlzLl9kZWZhdWx0cy5tb250aE5hbWVzO3ZhciBpPWZ1bmN0aW9uKG8peyhv PWorMTxhLmxlbmd0aCYmYS5jaGFyQXQoaisxKT09bykmJmorKztyZXR1cm4gb30s Zz1mdW5jdGlvbihvLG0sbil7bT0iIittO2lmKGkobykpZm9yKDttLmxlbmd0aDxu OyltPSIwIittO3JldHVybiBtfSxrPWZ1bmN0aW9uKG8sbSxuLHIpe3JldHVybiBp KG8pP3JbbV06blttXX0sbD0iIix1PWZhbHNlO2lmKGIpZm9yKHZhciBqPTA7ajxh Lmxlbmd0aDtqKyspaWYodSlpZihhLmNoYXJBdChqKT09IiciJiYhaSgiJyIpKXU9 ZmFsc2U7ZWxzZSBsKz1hLmNoYXJBdChqKTtlbHNlIHN3aXRjaChhLmNoYXJBdChq KSl7Y2FzZSAiZCI6bCs9ZygiZCIsYi5nZXREYXRlKCksMik7YnJlYWs7CmNhc2Ug IkQiOmwrPWsoIkQiLGIuZ2V0RGF5KCksZSxmKTticmVhaztjYXNlICJvIjpsKz1n KCJvIiwoYi5nZXRUaW1lKCktKG5ldyBEYXRlKGIuZ2V0RnVsbFllYXIoKSwwLDAp KS5nZXRUaW1lKCkpLzg2NEU1LDMpO2JyZWFrO2Nhc2UgIm0iOmwrPWcoIm0iLGIu Z2V0TW9udGgoKSsxLDIpO2JyZWFrO2Nhc2UgIk0iOmwrPWsoIk0iLGIuZ2V0TW9u dGgoKSxoLGMpO2JyZWFrO2Nhc2UgInkiOmwrPWkoInkiKT9iLmdldEZ1bGxZZWFy KCk6KGIuZ2V0WWVhcigpJTEwMDwxMD8iMCI6IiIpK2IuZ2V0WWVhcigpJTEwMDti cmVhaztjYXNlICJAIjpsKz1iLmdldFRpbWUoKTticmVhaztjYXNlICIhIjpsKz1i LmdldFRpbWUoKSoxRTQrdGhpcy5fdGlja3NUbzE5NzA7YnJlYWs7Y2FzZSAiJyI6 aWYoaSgiJyIpKWwrPSInIjtlbHNlIHU9dHJ1ZTticmVhaztkZWZhdWx0OmwrPWEu Y2hhckF0KGopfXJldHVybiBsfSxfcG9zc2libGVDaGFyczpmdW5jdGlvbihhKXtm b3IodmFyIGI9IiIsYz1mYWxzZSwKZT1mdW5jdGlvbihoKXsoaD1mKzE8YS5sZW5n dGgmJmEuY2hhckF0KGYrMSk9PWgpJiZmKys7cmV0dXJuIGh9LGY9MDtmPGEubGVu Z3RoO2YrKylpZihjKWlmKGEuY2hhckF0KGYpPT0iJyImJiFlKCInIikpYz1mYWxz ZTtlbHNlIGIrPWEuY2hhckF0KGYpO2Vsc2Ugc3dpdGNoKGEuY2hhckF0KGYpKXtj YXNlICJkIjpjYXNlICJtIjpjYXNlICJ5IjpjYXNlICJAIjpiKz0iMDEyMzQ1Njc4 OSI7YnJlYWs7Y2FzZSAiRCI6Y2FzZSAiTSI6cmV0dXJuIG51bGw7Y2FzZSAiJyI6 aWYoZSgiJyIpKWIrPSInIjtlbHNlIGM9dHJ1ZTticmVhaztkZWZhdWx0OmIrPWEu Y2hhckF0KGYpfXJldHVybiBifSxfZ2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEu c2V0dGluZ3NbYl0hPT11bmRlZmluZWQ/YS5zZXR0aW5nc1tiXTp0aGlzLl9kZWZh dWx0c1tiXX0sX3NldERhdGVGcm9tRmllbGQ6ZnVuY3Rpb24oYSxiKXtpZihhLmlu cHV0LnZhbCgpIT1hLmxhc3RWYWwpe3ZhciBjPXRoaXMuX2dldChhLCJkYXRlRm9y bWF0IiksCmU9YS5sYXN0VmFsPWEuaW5wdXQ/YS5pbnB1dC52YWwoKTpudWxsLGYs aDtmPWg9dGhpcy5fZ2V0RGVmYXVsdERhdGUoYSk7dmFyIGk9dGhpcy5fZ2V0Rm9y bWF0Q29uZmlnKGEpO3RyeXtmPXRoaXMucGFyc2VEYXRlKGMsZSxpKXx8aH1jYXRj aChnKXt0aGlzLmxvZyhnKTtlPWI/IiI6ZX1hLnNlbGVjdGVkRGF5PWYuZ2V0RGF0 ZSgpO2EuZHJhd01vbnRoPWEuc2VsZWN0ZWRNb250aD1mLmdldE1vbnRoKCk7YS5k cmF3WWVhcj1hLnNlbGVjdGVkWWVhcj1mLmdldEZ1bGxZZWFyKCk7YS5jdXJyZW50 RGF5PWU/Zi5nZXREYXRlKCk6MDthLmN1cnJlbnRNb250aD1lP2YuZ2V0TW9udGgo KTowO2EuY3VycmVudFllYXI9ZT9mLmdldEZ1bGxZZWFyKCk6MDt0aGlzLl9hZGp1 c3RJbnN0RGF0ZShhKX19LF9nZXREZWZhdWx0RGF0ZTpmdW5jdGlvbihhKXtyZXR1 cm4gdGhpcy5fcmVzdHJpY3RNaW5NYXgoYSx0aGlzLl9kZXRlcm1pbmVEYXRlKGEs dGhpcy5fZ2V0KGEsImRlZmF1bHREYXRlIiksbmV3IERhdGUpKX0sCl9kZXRlcm1p bmVEYXRlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZT1mdW5jdGlvbihoKXt2YXIgaT1u ZXcgRGF0ZTtpLnNldERhdGUoaS5nZXREYXRlKCkraCk7cmV0dXJuIGl9LGY9ZnVu Y3Rpb24oaCl7dHJ5e3JldHVybiBkLmRhdGVwaWNrZXIucGFyc2VEYXRlKGQuZGF0 ZXBpY2tlci5fZ2V0KGEsImRhdGVGb3JtYXQiKSxoLGQuZGF0ZXBpY2tlci5fZ2V0 Rm9ybWF0Q29uZmlnKGEpKX1jYXRjaChpKXt9dmFyIGc9KGgudG9Mb3dlckNhc2Uo KS5tYXRjaCgvXmMvKT9kLmRhdGVwaWNrZXIuX2dldERhdGUoYSk6bnVsbCl8fG5l dyBEYXRlLGs9Zy5nZXRGdWxsWWVhcigpLGw9Zy5nZXRNb250aCgpO2c9Zy5nZXRE YXRlKCk7Zm9yKHZhciB1PS8oWystXT9bMC05XSspXHMqKGR8RHx3fFd8bXxNfHl8 WSk/L2csaj11LmV4ZWMoaCk7ajspe3N3aXRjaChqWzJdfHwiZCIpe2Nhc2UgImQi OmNhc2UgIkQiOmcrPXBhcnNlSW50KGpbMV0sMTApO2JyZWFrO2Nhc2UgInciOmNh c2UgIlciOmcrPXBhcnNlSW50KGpbMV0sCjEwKSo3O2JyZWFrO2Nhc2UgIm0iOmNh c2UgIk0iOmwrPXBhcnNlSW50KGpbMV0sMTApO2c9TWF0aC5taW4oZyxkLmRhdGVw aWNrZXIuX2dldERheXNJbk1vbnRoKGssbCkpO2JyZWFrO2Nhc2UgInkiOmNhc2Ug IlkiOmsrPXBhcnNlSW50KGpbMV0sMTApO2c9TWF0aC5taW4oZyxkLmRhdGVwaWNr ZXIuX2dldERheXNJbk1vbnRoKGssbCkpO2JyZWFrfWo9dS5leGVjKGgpfXJldHVy biBuZXcgRGF0ZShrLGwsZyl9O2lmKGI9KGI9Yj09bnVsbD9jOnR5cGVvZiBiPT0i c3RyaW5nIj9mKGIpOnR5cGVvZiBiPT0ibnVtYmVyIj9pc05hTihiKT9jOmUoYik6 YikmJmIudG9TdHJpbmcoKT09IkludmFsaWQgRGF0ZSI/YzpiKXtiLnNldEhvdXJz KDApO2Iuc2V0TWludXRlcygwKTtiLnNldFNlY29uZHMoMCk7Yi5zZXRNaWxsaXNl Y29uZHMoMCl9cmV0dXJuIHRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KGIpfSxf ZGF5bGlnaHRTYXZpbmdBZGp1c3Q6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIG51 bGw7CmEuc2V0SG91cnMoYS5nZXRIb3VycygpPjEyP2EuZ2V0SG91cnMoKSsyOjAp O3JldHVybiBhfSxfc2V0RGF0ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGU9IWIsZj1h LnNlbGVjdGVkTW9udGgsaD1hLnNlbGVjdGVkWWVhcjtiPXRoaXMuX3Jlc3RyaWN0 TWluTWF4KGEsdGhpcy5fZGV0ZXJtaW5lRGF0ZShhLGIsbmV3IERhdGUpKTthLnNl bGVjdGVkRGF5PWEuY3VycmVudERheT1iLmdldERhdGUoKTthLmRyYXdNb250aD1h LnNlbGVjdGVkTW9udGg9YS5jdXJyZW50TW9udGg9Yi5nZXRNb250aCgpO2EuZHJh d1llYXI9YS5zZWxlY3RlZFllYXI9YS5jdXJyZW50WWVhcj1iLmdldEZ1bGxZZWFy KCk7aWYoKGYhPWEuc2VsZWN0ZWRNb250aHx8aCE9YS5zZWxlY3RlZFllYXIpJiYh Yyl0aGlzLl9ub3RpZnlDaGFuZ2UoYSk7dGhpcy5fYWRqdXN0SW5zdERhdGUoYSk7 aWYoYS5pbnB1dClhLmlucHV0LnZhbChlPyIiOnRoaXMuX2Zvcm1hdERhdGUoYSkp fSxfZ2V0RGF0ZTpmdW5jdGlvbihhKXtyZXR1cm4hYS5jdXJyZW50WWVhcnx8CmEu aW5wdXQmJmEuaW5wdXQudmFsKCk9PSIiP251bGw6dGhpcy5fZGF5bGlnaHRTYXZp bmdBZGp1c3QobmV3IERhdGUoYS5jdXJyZW50WWVhcixhLmN1cnJlbnRNb250aCxh LmN1cnJlbnREYXkpKX0sX2dlbmVyYXRlSFRNTDpmdW5jdGlvbihhKXt2YXIgYj1u ZXcgRGF0ZTtiPXRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKGIu Z2V0RnVsbFllYXIoKSxiLmdldE1vbnRoKCksYi5nZXREYXRlKCkpKTt2YXIgYz10 aGlzLl9nZXQoYSwiaXNSVEwiKSxlPXRoaXMuX2dldChhLCJzaG93QnV0dG9uUGFu ZWwiKSxmPXRoaXMuX2dldChhLCJoaWRlSWZOb1ByZXZOZXh0IiksaD10aGlzLl9n ZXQoYSwibmF2aWdhdGlvbkFzRGF0ZUZvcm1hdCIpLGk9dGhpcy5fZ2V0TnVtYmVy T2ZNb250aHMoYSksZz10aGlzLl9nZXQoYSwic2hvd0N1cnJlbnRBdFBvcyIpLGs9 dGhpcy5fZ2V0KGEsInN0ZXBNb250aHMiKSxsPWlbMF0hPTF8fGlbMV0hPTEsdT10 aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdCghYS5jdXJyZW50RGF5PwpuZXcgRGF0 ZSg5OTk5LDksOSk6bmV3IERhdGUoYS5jdXJyZW50WWVhcixhLmN1cnJlbnRNb250 aCxhLmN1cnJlbnREYXkpKSxqPXRoaXMuX2dldE1pbk1heERhdGUoYSwibWluIiks bz10aGlzLl9nZXRNaW5NYXhEYXRlKGEsIm1heCIpO2c9YS5kcmF3TW9udGgtZzt2 YXIgbT1hLmRyYXdZZWFyO2lmKGc8MCl7Zys9MTI7bS0tfWlmKG8pe3ZhciBuPXRo aXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKG8uZ2V0RnVsbFllYXIo KSxvLmdldE1vbnRoKCktaVswXSppWzFdKzEsby5nZXREYXRlKCkpKTtmb3Iobj1q JiZuPGo/ajpuO3RoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKG0s ZywxKSk+bjspe2ctLTtpZihnPDApe2c9MTE7bS0tfX19YS5kcmF3TW9udGg9Zzth LmRyYXdZZWFyPW07bj10aGlzLl9nZXQoYSwicHJldlRleHQiKTtuPSFoP246dGhp cy5mb3JtYXREYXRlKG4sdGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QobmV3IERh dGUobSxnLWssMSkpLHRoaXMuX2dldEZvcm1hdENvbmZpZyhhKSk7Cm49dGhpcy5f Y2FuQWRqdXN0TW9udGgoYSwtMSxtLGcpPyc8YSBjbGFzcz0idWktZGF0ZXBpY2tl ci1wcmV2IHVpLWNvcm5lci1hbGwiIG9uY2xpY2s9IkRQX2pRdWVyeV8nK3krIi5k YXRlcGlja2VyLl9hZGp1c3REYXRlKCcjIithLmlkKyInLCAtIitrKyIsICdNJyk7 XCIgdGl0bGU9XCIiK24rJyI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1j aXJjbGUtdHJpYW5nbGUtJysoYz8iZSI6InciKSsnIj4nK24rIjwvc3Bhbj48L2E+ IjpmPyIiOic8YSBjbGFzcz0idWktZGF0ZXBpY2tlci1wcmV2IHVpLWNvcm5lci1h bGwgdWktc3RhdGUtZGlzYWJsZWQiIHRpdGxlPSInK24rJyI+PHNwYW4gY2xhc3M9 InVpLWljb24gdWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtJysoYz8iZSI6InciKSsn Ij4nK24rIjwvc3Bhbj48L2E+Ijt2YXIgcj10aGlzLl9nZXQoYSwibmV4dFRleHQi KTtyPSFoP3I6dGhpcy5mb3JtYXREYXRlKHIsdGhpcy5fZGF5bGlnaHRTYXZpbmdB ZGp1c3QobmV3IERhdGUobSwKZytrLDEpKSx0aGlzLl9nZXRGb3JtYXRDb25maWco YSkpO2Y9dGhpcy5fY2FuQWRqdXN0TW9udGgoYSwrMSxtLGcpPyc8YSBjbGFzcz0i dWktZGF0ZXBpY2tlci1uZXh0IHVpLWNvcm5lci1hbGwiIG9uY2xpY2s9IkRQX2pR dWVyeV8nK3krIi5kYXRlcGlja2VyLl9hZGp1c3REYXRlKCcjIithLmlkKyInLCAr IitrKyIsICdNJyk7XCIgdGl0bGU9XCIiK3IrJyI+PHNwYW4gY2xhc3M9InVpLWlj b24gdWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtJysoYz8idyI6ImUiKSsnIj4nK3Ir Ijwvc3Bhbj48L2E+IjpmPyIiOic8YSBjbGFzcz0idWktZGF0ZXBpY2tlci1uZXh0 IHVpLWNvcm5lci1hbGwgdWktc3RhdGUtZGlzYWJsZWQiIHRpdGxlPSInK3IrJyI+ PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtJyso Yz8idyI6ImUiKSsnIj4nK3IrIjwvc3Bhbj48L2E+IjtrPXRoaXMuX2dldChhLCJj dXJyZW50VGV4dCIpO3I9dGhpcy5fZ2V0KGEsImdvdG9DdXJyZW50IikmJgphLmN1 cnJlbnREYXk/dTpiO2s9IWg/azp0aGlzLmZvcm1hdERhdGUoayxyLHRoaXMuX2dl dEZvcm1hdENvbmZpZyhhKSk7aD0hYS5pbmxpbmU/JzxidXR0b24gdHlwZT0iYnV0 dG9uIiBjbGFzcz0idWktZGF0ZXBpY2tlci1jbG9zZSB1aS1zdGF0ZS1kZWZhdWx0 IHVpLXByaW9yaXR5LXByaW1hcnkgdWktY29ybmVyLWFsbCIgb25jbGljaz0iRFBf alF1ZXJ5XycreSsnLmRhdGVwaWNrZXIuX2hpZGVEYXRlcGlja2VyKCk7Ij4nK3Ro aXMuX2dldChhLCJjbG9zZVRleHQiKSsiPC9idXR0b24+IjoiIjtlPWU/JzxkaXYg Y2xhc3M9InVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSB1aS13aWRnZXQtY29udGVu dCI+JysoYz9oOiIiKSsodGhpcy5faXNJblJhbmdlKGEscik/JzxidXR0b24gdHlw ZT0iYnV0dG9uIiBjbGFzcz0idWktZGF0ZXBpY2tlci1jdXJyZW50IHVpLXN0YXRl LWRlZmF1bHQgdWktcHJpb3JpdHktc2Vjb25kYXJ5IHVpLWNvcm5lci1hbGwiIG9u Y2xpY2s9IkRQX2pRdWVyeV8nKwp5KyIuZGF0ZXBpY2tlci5fZ290b1RvZGF5KCcj IithLmlkKyInKTtcIj4iK2srIjwvYnV0dG9uPiI6IiIpKyhjPyIiOmgpKyI8L2Rp dj4iOiIiO2g9cGFyc2VJbnQodGhpcy5fZ2V0KGEsImZpcnN0RGF5IiksMTApO2g9 aXNOYU4oaCk/MDpoO2s9dGhpcy5fZ2V0KGEsInNob3dXZWVrIik7cj10aGlzLl9n ZXQoYSwiZGF5TmFtZXMiKTt0aGlzLl9nZXQoYSwiZGF5TmFtZXNTaG9ydCIpO3Zh ciBzPXRoaXMuX2dldChhLCJkYXlOYW1lc01pbiIpLHo9dGhpcy5fZ2V0KGEsIm1v bnRoTmFtZXMiKSx2PXRoaXMuX2dldChhLCJtb250aE5hbWVzU2hvcnQiKSxwPXRo aXMuX2dldChhLCJiZWZvcmVTaG93RGF5Iiksdz10aGlzLl9nZXQoYSwic2hvd090 aGVyTW9udGhzIiksRz10aGlzLl9nZXQoYSwic2VsZWN0T3RoZXJNb250aHMiKTt0 aGlzLl9nZXQoYSwiY2FsY3VsYXRlV2VlayIpO2Zvcih2YXIgSz10aGlzLl9nZXRE ZWZhdWx0RGF0ZShhKSxIPSIiLEM9MDtDPGlbMF07QysrKXtmb3IodmFyIEw9CiIi LEQ9MDtEPGlbMV07RCsrKXt2YXIgTT10aGlzLl9kYXlsaWdodFNhdmluZ0FkanVz dChuZXcgRGF0ZShtLGcsYS5zZWxlY3RlZERheSkpLHQ9IiB1aS1jb3JuZXItYWxs Iix4PSIiO2lmKGwpe3grPSc8ZGl2IGNsYXNzPSJ1aS1kYXRlcGlja2VyLWdyb3Vw JztpZihpWzFdPjEpc3dpdGNoKEQpe2Nhc2UgMDp4Kz0iIHVpLWRhdGVwaWNrZXIt Z3JvdXAtZmlyc3QiO3Q9IiB1aS1jb3JuZXItIisoYz8icmlnaHQiOiJsZWZ0Iik7 YnJlYWs7Y2FzZSBpWzFdLTE6eCs9IiB1aS1kYXRlcGlja2VyLWdyb3VwLWxhc3Qi O3Q9IiB1aS1jb3JuZXItIisoYz8ibGVmdCI6InJpZ2h0Iik7YnJlYWs7ZGVmYXVs dDp4Kz0iIHVpLWRhdGVwaWNrZXItZ3JvdXAtbWlkZGxlIjt0PSIiO2JyZWFrfXgr PSciPid9eCs9JzxkaXYgY2xhc3M9InVpLWRhdGVwaWNrZXItaGVhZGVyIHVpLXdp ZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4Jyt0KyciPicrKC9hbGx8bGVm dC8udGVzdCh0KSYmQz09MD9jPwpmOm46IiIpKygvYWxsfHJpZ2h0Ly50ZXN0KHQp JiZDPT0wP2M/bjpmOiIiKSt0aGlzLl9nZW5lcmF0ZU1vbnRoWWVhckhlYWRlcihh LGcsbSxqLG8sQz4wfHxEPjAseix2KSsnPC9kaXY+PHRhYmxlIGNsYXNzPSJ1aS1k YXRlcGlja2VyLWNhbGVuZGFyIj48dGhlYWQ+PHRyPic7dmFyIEE9az8nPHRoIGNs YXNzPSJ1aS1kYXRlcGlja2VyLXdlZWstY29sIj4nK3RoaXMuX2dldChhLCJ3ZWVr SGVhZGVyIikrIjwvdGg+IjoiIjtmb3IodD0wO3Q8Nzt0Kyspe3ZhciBxPSh0K2gp JTc7QSs9Ijx0aCIrKCh0K2grNiklNz49NT8nIGNsYXNzPSJ1aS1kYXRlcGlja2Vy LXdlZWstZW5kIic6IiIpKyc+PHNwYW4gdGl0bGU9IicrcltxXSsnIj4nK3NbcV0r Ijwvc3Bhbj48L3RoPiJ9eCs9QSsiPC90cj48L3RoZWFkPjx0Ym9keT4iO0E9dGhp cy5fZ2V0RGF5c0luTW9udGgobSxnKTtpZihtPT1hLnNlbGVjdGVkWWVhciYmZz09 YS5zZWxlY3RlZE1vbnRoKWEuc2VsZWN0ZWREYXk9TWF0aC5taW4oYS5zZWxlY3Rl ZERheSwKQSk7dD0odGhpcy5fZ2V0Rmlyc3REYXlPZk1vbnRoKG0sZyktaCs3KSU3 O0E9bD82Ok1hdGguY2VpbCgodCtBKS83KTtxPXRoaXMuX2RheWxpZ2h0U2F2aW5n QWRqdXN0KG5ldyBEYXRlKG0sZywxLXQpKTtmb3IodmFyIE49MDtOPEE7TisrKXt4 Kz0iPHRyPiI7dmFyIE89IWs/IiI6Jzx0ZCBjbGFzcz0idWktZGF0ZXBpY2tlci13 ZWVrLWNvbCI+Jyt0aGlzLl9nZXQoYSwiY2FsY3VsYXRlV2VlayIpKHEpKyI8L3Rk PiI7Zm9yKHQ9MDt0PDc7dCsrKXt2YXIgRj1wP3AuYXBwbHkoYS5pbnB1dD9hLmlu cHV0WzBdOm51bGwsW3FdKTpbdHJ1ZSwiIl0sQj1xLmdldE1vbnRoKCkhPWcsST1C JiYhR3x8IUZbMF18fGomJnE8anx8byYmcT5vO08rPSc8dGQgY2xhc3M9IicrKCh0 K2grNiklNz49NT8iIHVpLWRhdGVwaWNrZXItd2Vlay1lbmQiOiIiKSsoQj8iIHVp LWRhdGVwaWNrZXItb3RoZXItbW9udGgiOiIiKSsocS5nZXRUaW1lKCk9PU0uZ2V0 VGltZSgpJiZnPT1hLnNlbGVjdGVkTW9udGgmJgphLl9rZXlFdmVudHx8Sy5nZXRU aW1lKCk9PXEuZ2V0VGltZSgpJiZLLmdldFRpbWUoKT09TS5nZXRUaW1lKCk/IiAi K3RoaXMuX2RheU92ZXJDbGFzczoiIikrKEk/IiAiK3RoaXMuX3Vuc2VsZWN0YWJs ZUNsYXNzKyIgdWktc3RhdGUtZGlzYWJsZWQiOiIiKSsoQiYmIXc/IiI6IiAiK0Zb MV0rKHEuZ2V0VGltZSgpPT11LmdldFRpbWUoKT8iICIrdGhpcy5fY3VycmVudENs YXNzOiIiKSsocS5nZXRUaW1lKCk9PWIuZ2V0VGltZSgpPyIgdWktZGF0ZXBpY2tl ci10b2RheSI6IiIpKSsnIicrKCghQnx8dykmJkZbMl0/JyB0aXRsZT0iJytGWzJd KyciJzoiIikrKEk/IiI6JyBvbmNsaWNrPSJEUF9qUXVlcnlfJyt5KyIuZGF0ZXBp Y2tlci5fc2VsZWN0RGF5KCcjIithLmlkKyInLCIrcS5nZXRNb250aCgpKyIsIitx LmdldEZ1bGxZZWFyKCkrJywgdGhpcyk7cmV0dXJuIGZhbHNlOyInKSsiPiIrKEIm JiF3PyImI3hhMDsiOkk/JzxzcGFuIGNsYXNzPSJ1aS1zdGF0ZS1kZWZhdWx0Ij4n K3EuZ2V0RGF0ZSgpKwoiPC9zcGFuPiI6JzxhIGNsYXNzPSJ1aS1zdGF0ZS1kZWZh dWx0JysocS5nZXRUaW1lKCk9PWIuZ2V0VGltZSgpPyIgdWktc3RhdGUtaGlnaGxp Z2h0IjoiIikrKHEuZ2V0VGltZSgpPT11LmdldFRpbWUoKT8iIHVpLXN0YXRlLWFj dGl2ZSI6IiIpKyhCPyIgdWktcHJpb3JpdHktc2Vjb25kYXJ5IjoiIikrJyIgaHJl Zj0iIyI+JytxLmdldERhdGUoKSsiPC9hPiIpKyI8L3RkPiI7cS5zZXREYXRlKHEu Z2V0RGF0ZSgpKzEpO3E9dGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QocSl9eCs9 TysiPC90cj4ifWcrKztpZihnPjExKXtnPTA7bSsrfXgrPSI8L3Rib2R5PjwvdGFi bGU+IisobD8iPC9kaXY+IisoaVswXT4wJiZEPT1pWzFdLTE/JzxkaXYgY2xhc3M9 InVpLWRhdGVwaWNrZXItcm93LWJyZWFrIj48L2Rpdj4nOiIiKToiIik7TCs9eH1I Kz1MfUgrPWUrKGQuYnJvd3Nlci5tc2llJiZwYXJzZUludChkLmJyb3dzZXIudmVy c2lvbiwxMCk8NyYmIWEuaW5saW5lPyc8aWZyYW1lIHNyYz0iamF2YXNjcmlwdDpm YWxzZTsiIGNsYXNzPSJ1aS1kYXRlcGlja2VyLWNvdmVyIiBmcmFtZWJvcmRlcj0i MCI+PC9pZnJhbWU+JzoKIiIpO2EuX2tleUV2ZW50PWZhbHNlO3JldHVybiBIfSxf Z2VuZXJhdGVNb250aFllYXJIZWFkZXI6ZnVuY3Rpb24oYSxiLGMsZSxmLGgsaSxn KXt2YXIgaz10aGlzLl9nZXQoYSwiY2hhbmdlTW9udGgiKSxsPXRoaXMuX2dldChh LCJjaGFuZ2VZZWFyIiksdT10aGlzLl9nZXQoYSwic2hvd01vbnRoQWZ0ZXJZZWFy Iiksaj0nPGRpdiBjbGFzcz0idWktZGF0ZXBpY2tlci10aXRsZSI+JyxvPSIiO2lm KGh8fCFrKW8rPSc8c3BhbiBjbGFzcz0idWktZGF0ZXBpY2tlci1tb250aCI+Jytp W2JdKyI8L3NwYW4+IjtlbHNle2k9ZSYmZS5nZXRGdWxsWWVhcigpPT1jO3ZhciBt PWYmJmYuZ2V0RnVsbFllYXIoKT09YztvKz0nPHNlbGVjdCBjbGFzcz0idWktZGF0 ZXBpY2tlci1tb250aCIgb25jaGFuZ2U9IkRQX2pRdWVyeV8nK3krIi5kYXRlcGlj a2VyLl9zZWxlY3RNb250aFllYXIoJyMiK2EuaWQrIicsIHRoaXMsICdNJyk7XCIg b25jbGljaz1cIkRQX2pRdWVyeV8iK3krIi5kYXRlcGlja2VyLl9jbGlja01vbnRo WWVhcignIyIrCmEuaWQrIicpO1wiPiI7Zm9yKHZhciBuPTA7bjwxMjtuKyspaWYo KCFpfHxuPj1lLmdldE1vbnRoKCkpJiYoIW18fG48PWYuZ2V0TW9udGgoKSkpbys9 JzxvcHRpb24gdmFsdWU9IicrbisnIicrKG49PWI/JyBzZWxlY3RlZD0ic2VsZWN0 ZWQiJzoiIikrIj4iK2dbbl0rIjwvb3B0aW9uPiI7bys9Ijwvc2VsZWN0PiJ9dXx8 KGorPW8rKGh8fCEoayYmbCk/IiYjeGEwOyI6IiIpKTtpZihofHwhbClqKz0nPHNw YW4gY2xhc3M9InVpLWRhdGVwaWNrZXIteWVhciI+JytjKyI8L3NwYW4+IjtlbHNl e2c9dGhpcy5fZ2V0KGEsInllYXJSYW5nZSIpLnNwbGl0KCI6Iik7dmFyIHI9KG5l dyBEYXRlKS5nZXRGdWxsWWVhcigpO2k9ZnVuY3Rpb24ocyl7cz1zLm1hdGNoKC9j WystXS4qLyk/YytwYXJzZUludChzLnN1YnN0cmluZygxKSwxMCk6cy5tYXRjaCgv WystXS4qLyk/citwYXJzZUludChzLDEwKTpwYXJzZUludChzLDEwKTtyZXR1cm4g aXNOYU4ocyk/cjpzfTtiPWkoZ1swXSk7Zz1NYXRoLm1heChiLAppKGdbMV18fCIi KSk7Yj1lP01hdGgubWF4KGIsZS5nZXRGdWxsWWVhcigpKTpiO2c9Zj9NYXRoLm1p bihnLGYuZ2V0RnVsbFllYXIoKSk6Zztmb3Ioais9JzxzZWxlY3QgY2xhc3M9InVp LWRhdGVwaWNrZXIteWVhciIgb25jaGFuZ2U9IkRQX2pRdWVyeV8nK3krIi5kYXRl cGlja2VyLl9zZWxlY3RNb250aFllYXIoJyMiK2EuaWQrIicsIHRoaXMsICdZJyk7 XCIgb25jbGljaz1cIkRQX2pRdWVyeV8iK3krIi5kYXRlcGlja2VyLl9jbGlja01v bnRoWWVhcignIyIrYS5pZCsiJyk7XCI+IjtiPD1nO2IrKylqKz0nPG9wdGlvbiB2 YWx1ZT0iJytiKyciJysoYj09Yz8nIHNlbGVjdGVkPSJzZWxlY3RlZCInOiIiKSsi PiIrYisiPC9vcHRpb24+IjtqKz0iPC9zZWxlY3Q+In1qKz10aGlzLl9nZXQoYSwi eWVhclN1ZmZpeCIpO2lmKHUpais9KGh8fCEoayYmbCk/IiYjeGEwOyI6IiIpK287 ais9IjwvZGl2PiI7cmV0dXJuIGp9LF9hZGp1c3RJbnN0RGF0ZTpmdW5jdGlvbihh LGIsYyl7dmFyIGU9CmEuZHJhd1llYXIrKGM9PSJZIj9iOjApLGY9YS5kcmF3TW9u dGgrKGM9PSJNIj9iOjApO2I9TWF0aC5taW4oYS5zZWxlY3RlZERheSx0aGlzLl9n ZXREYXlzSW5Nb250aChlLGYpKSsoYz09IkQiP2I6MCk7ZT10aGlzLl9yZXN0cmlj dE1pbk1heChhLHRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKGUs ZixiKSkpO2Euc2VsZWN0ZWREYXk9ZS5nZXREYXRlKCk7YS5kcmF3TW9udGg9YS5z ZWxlY3RlZE1vbnRoPWUuZ2V0TW9udGgoKTthLmRyYXdZZWFyPWEuc2VsZWN0ZWRZ ZWFyPWUuZ2V0RnVsbFllYXIoKTtpZihjPT0iTSJ8fGM9PSJZIil0aGlzLl9ub3Rp ZnlDaGFuZ2UoYSl9LF9yZXN0cmljdE1pbk1heDpmdW5jdGlvbihhLGIpe3ZhciBj PXRoaXMuX2dldE1pbk1heERhdGUoYSwibWluIik7YT10aGlzLl9nZXRNaW5NYXhE YXRlKGEsIm1heCIpO2I9YyYmYjxjP2M6YjtyZXR1cm4gYj1hJiZiPmE/YTpifSxf bm90aWZ5Q2hhbmdlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuX2dldChhLAoib25D aGFuZ2VNb250aFllYXIiKTtpZihiKWIuYXBwbHkoYS5pbnB1dD9hLmlucHV0WzBd Om51bGwsW2Euc2VsZWN0ZWRZZWFyLGEuc2VsZWN0ZWRNb250aCsxLGFdKX0sX2dl dE51bWJlck9mTW9udGhzOmZ1bmN0aW9uKGEpe2E9dGhpcy5fZ2V0KGEsIm51bWJl ck9mTW9udGhzIik7cmV0dXJuIGE9PW51bGw/WzEsMV06dHlwZW9mIGE9PSJudW1i ZXIiP1sxLGFdOmF9LF9nZXRNaW5NYXhEYXRlOmZ1bmN0aW9uKGEsYil7cmV0dXJu IHRoaXMuX2RldGVybWluZURhdGUoYSx0aGlzLl9nZXQoYSxiKyJEYXRlIiksbnVs bCl9LF9nZXREYXlzSW5Nb250aDpmdW5jdGlvbihhLGIpe3JldHVybiAzMi0obmV3 IERhdGUoYSxiLDMyKSkuZ2V0RGF0ZSgpfSxfZ2V0Rmlyc3REYXlPZk1vbnRoOmZ1 bmN0aW9uKGEsYil7cmV0dXJuKG5ldyBEYXRlKGEsYiwxKSkuZ2V0RGF5KCl9LF9j YW5BZGp1c3RNb250aDpmdW5jdGlvbihhLGIsYyxlKXt2YXIgZj10aGlzLl9nZXRO dW1iZXJPZk1vbnRocyhhKTsKYz10aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChu ZXcgRGF0ZShjLGUrKGI8MD9iOmZbMF0qZlsxXSksMSkpO2I8MCYmYy5zZXREYXRl KHRoaXMuX2dldERheXNJbk1vbnRoKGMuZ2V0RnVsbFllYXIoKSxjLmdldE1vbnRo KCkpKTtyZXR1cm4gdGhpcy5faXNJblJhbmdlKGEsYyl9LF9pc0luUmFuZ2U6ZnVu Y3Rpb24oYSxiKXt2YXIgYz10aGlzLl9nZXRNaW5NYXhEYXRlKGEsIm1pbiIpO2E9 dGhpcy5fZ2V0TWluTWF4RGF0ZShhLCJtYXgiKTtyZXR1cm4oIWN8fGIuZ2V0VGlt ZSgpPj1jLmdldFRpbWUoKSkmJighYXx8Yi5nZXRUaW1lKCk8PWEuZ2V0VGltZSgp KX0sX2dldEZvcm1hdENvbmZpZzpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9nZXQo YSwic2hvcnRZZWFyQ3V0b2ZmIik7Yj10eXBlb2YgYiE9InN0cmluZyI/YjoobmV3 IERhdGUpLmdldEZ1bGxZZWFyKCklMTAwK3BhcnNlSW50KGIsMTApO3JldHVybntz aG9ydFllYXJDdXRvZmY6YixkYXlOYW1lc1Nob3J0OnRoaXMuX2dldChhLAoiZGF5 TmFtZXNTaG9ydCIpLGRheU5hbWVzOnRoaXMuX2dldChhLCJkYXlOYW1lcyIpLG1v bnRoTmFtZXNTaG9ydDp0aGlzLl9nZXQoYSwibW9udGhOYW1lc1Nob3J0IiksbW9u dGhOYW1lczp0aGlzLl9nZXQoYSwibW9udGhOYW1lcyIpfX0sX2Zvcm1hdERhdGU6 ZnVuY3Rpb24oYSxiLGMsZSl7aWYoIWIpe2EuY3VycmVudERheT1hLnNlbGVjdGVk RGF5O2EuY3VycmVudE1vbnRoPWEuc2VsZWN0ZWRNb250aDthLmN1cnJlbnRZZWFy PWEuc2VsZWN0ZWRZZWFyfWI9Yj90eXBlb2YgYj09Im9iamVjdCI/Yjp0aGlzLl9k YXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZShlLGMsYikpOnRoaXMuX2RheWxp Z2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKGEuY3VycmVudFllYXIsYS5jdXJyZW50 TW9udGgsYS5jdXJyZW50RGF5KSk7cmV0dXJuIHRoaXMuZm9ybWF0RGF0ZSh0aGlz Ll9nZXQoYSwiZGF0ZUZvcm1hdCIpLGIsdGhpcy5fZ2V0Rm9ybWF0Q29uZmlnKGEp KX19KTtkLmZuLmRhdGVwaWNrZXI9CmZ1bmN0aW9uKGEpe2lmKCFkLmRhdGVwaWNr ZXIuaW5pdGlhbGl6ZWQpe2QoZG9jdW1lbnQpLm1vdXNlZG93bihkLmRhdGVwaWNr ZXIuX2NoZWNrRXh0ZXJuYWxDbGljaykuZmluZCgiYm9keSIpLmFwcGVuZChkLmRh dGVwaWNrZXIuZHBEaXYpO2QuZGF0ZXBpY2tlci5pbml0aWFsaXplZD10cnVlfXZh ciBiPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtpZih0 eXBlb2YgYT09InN0cmluZyImJihhPT0iaXNEaXNhYmxlZCJ8fGE9PSJnZXREYXRl Inx8YT09IndpZGdldCIpKXJldHVybiBkLmRhdGVwaWNrZXJbIl8iK2ErIkRhdGVw aWNrZXIiXS5hcHBseShkLmRhdGVwaWNrZXIsW3RoaXNbMF1dLmNvbmNhdChiKSk7 aWYoYT09Im9wdGlvbiImJmFyZ3VtZW50cy5sZW5ndGg9PTImJnR5cGVvZiBhcmd1 bWVudHNbMV09PSJzdHJpbmciKXJldHVybiBkLmRhdGVwaWNrZXJbIl8iK2ErIkRh dGVwaWNrZXIiXS5hcHBseShkLmRhdGVwaWNrZXIsW3RoaXNbMF1dLmNvbmNhdChi KSk7CnJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0eXBlb2YgYT09InN0cmlu ZyI/ZC5kYXRlcGlja2VyWyJfIithKyJEYXRlcGlja2VyIl0uYXBwbHkoZC5kYXRl cGlja2VyLFt0aGlzXS5jb25jYXQoYikpOmQuZGF0ZXBpY2tlci5fYXR0YWNoRGF0 ZXBpY2tlcih0aGlzLGEpfSl9O2QuZGF0ZXBpY2tlcj1uZXcgSjtkLmRhdGVwaWNr ZXIuaW5pdGlhbGl6ZWQ9ZmFsc2U7ZC5kYXRlcGlja2VyLnV1aWQ9KG5ldyBEYXRl KS5nZXRUaW1lKCk7ZC5kYXRlcGlja2VyLnZlcnNpb249IjEuOC4yIjt3aW5kb3db IkRQX2pRdWVyeV8iK3ldPWR9KShqUXVlcnkpOwo7LyoKICogalF1ZXJ5IFVJIFBy b2dyZXNzYmFyIDEuOC4yCiAqCiAqIENvcHlyaWdodCAoYykgMjAxMCBBVVRIT1JT LnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKICogRHVhbCBsaWNlbnNl ZCB1bmRlciB0aGUgTUlUIChNSVQtTElDRU5TRS50eHQpCiAqIGFuZCBHUEwgKEdQ TC1MSUNFTlNFLnR4dCkgbGljZW5zZXMuCiAqCiAqIGh0dHA6Ly9kb2NzLmpxdWVy eS5jb20vVUkvUHJvZ3Jlc3NiYXIKICoKICogRGVwZW5kczoKICogICBqcXVlcnku dWkuY29yZS5qcwogKiAgIGpxdWVyeS51aS53aWRnZXQuanMKICovCihmdW5jdGlv bihiKXtiLndpZGdldCgidWkucHJvZ3Jlc3NiYXIiLHtvcHRpb25zOnt2YWx1ZTow fSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1w cm9ncmVzc2JhciB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVy LWFsbCIpLmF0dHIoe3JvbGU6InByb2dyZXNzYmFyIiwiYXJpYS12YWx1ZW1pbiI6 dGhpcy5fdmFsdWVNaW4oKSwiYXJpYS12YWx1ZW1heCI6dGhpcy5fdmFsdWVNYXgo KSwiYXJpYS12YWx1ZW5vdyI6dGhpcy5fdmFsdWUoKX0pO3RoaXMudmFsdWVEaXY9 YigiPGRpdiBjbGFzcz0ndWktcHJvZ3Jlc3NiYXItdmFsdWUgdWktd2lkZ2V0LWhl YWRlciB1aS1jb3JuZXItbGVmdCc+PC9kaXY+IikuYXBwZW5kVG8odGhpcy5lbGVt ZW50KTt0aGlzLl9yZWZyZXNoVmFsdWUoKX0sZGVzdHJveTpmdW5jdGlvbigpe3Ro aXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktcHJvZ3Jlc3NiYXIgdWktd2lkZ2V0 IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiKS5yZW1vdmVBdHRyKCJy b2xlIikucmVtb3ZlQXR0cigiYXJpYS12YWx1ZW1pbiIpLnJlbW92ZUF0dHIoImFy aWEtdmFsdWVtYXgiKS5yZW1vdmVBdHRyKCJhcmlhLXZhbHVlbm93Iik7CnRoaXMu dmFsdWVEaXYucmVtb3ZlKCk7Yi5XaWRnZXQucHJvdG90eXBlLmRlc3Ryb3kuYXBw bHkodGhpcyxhcmd1bWVudHMpfSx2YWx1ZTpmdW5jdGlvbihhKXtpZihhPT09dW5k ZWZpbmVkKXJldHVybiB0aGlzLl92YWx1ZSgpO3RoaXMuX3NldE9wdGlvbigidmFs dWUiLGEpO3JldHVybiB0aGlzfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGEsYyl7c3dp dGNoKGEpe2Nhc2UgInZhbHVlIjp0aGlzLm9wdGlvbnMudmFsdWU9Yzt0aGlzLl9y ZWZyZXNoVmFsdWUoKTt0aGlzLl90cmlnZ2VyKCJjaGFuZ2UiKTticmVha31iLldp ZGdldC5wcm90b3R5cGUuX3NldE9wdGlvbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9 LF92YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucy52YWx1ZTtpZih0 eXBlb2YgYSE9PSJudW1iZXIiKWE9MDtpZihhPHRoaXMuX3ZhbHVlTWluKCkpYT10 aGlzLl92YWx1ZU1pbigpO2lmKGE+dGhpcy5fdmFsdWVNYXgoKSlhPXRoaXMuX3Zh bHVlTWF4KCk7cmV0dXJuIGF9LApfdmFsdWVNaW46ZnVuY3Rpb24oKXtyZXR1cm4g MH0sX3ZhbHVlTWF4OmZ1bmN0aW9uKCl7cmV0dXJuIDEwMH0sX3JlZnJlc2hWYWx1 ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMudmFsdWUoKTt0aGlzLnZhbHVlRGl2W2E9 PT10aGlzLl92YWx1ZU1heCgpPyJhZGRDbGFzcyI6InJlbW92ZUNsYXNzIl0oInVp LWNvcm5lci1yaWdodCIpLndpZHRoKGErIiUiKTt0aGlzLmVsZW1lbnQuYXR0cigi YXJpYS12YWx1ZW5vdyIsYSl9fSk7Yi5leHRlbmQoYi51aS5wcm9ncmVzc2Jhcix7 dmVyc2lvbjoiMS44LjIifSl9KShqUXVlcnkpOwo7LyoKICogalF1ZXJ5IFVJIEVm ZmVjdHMgMS44LjIKICoKICogQ29weXJpZ2h0IChjKSAyMDEwIEFVVEhPUlMudHh0 IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQogKiBEdWFsIGxpY2Vuc2VkIHVu ZGVyIHRoZSBNSVQgKE1JVC1MSUNFTlNFLnR4dCkKICogYW5kIEdQTCAoR1BMLUxJ Q0VOU0UudHh0KSBsaWNlbnNlcy4KICoKICogaHR0cDovL2RvY3MuanF1ZXJ5LmNv bS9VSS9FZmZlY3RzLwogKi8KalF1ZXJ5LmVmZmVjdHN8fGZ1bmN0aW9uKGYpe2Z1 bmN0aW9uIGsoYyl7dmFyIGE7aWYoYyYmYy5jb25zdHJ1Y3Rvcj09QXJyYXkmJmMu bGVuZ3RoPT0zKXJldHVybiBjO2lmKGE9L3JnYlwoXHMqKFswLTldezEsM30pXHMq LFxzKihbMC05XXsxLDN9KVxzKixccyooWzAtOV17MSwzfSlccypcKS8uZXhlYyhj KSlyZXR1cm5bcGFyc2VJbnQoYVsxXSwxMCkscGFyc2VJbnQoYVsyXSwxMCkscGFy c2VJbnQoYVszXSwxMCldO2lmKGE9L3JnYlwoXHMqKFswLTldKyg/OlwuWzAtOV0r KT8pXCVccyosXHMqKFswLTldKyg/OlwuWzAtOV0rKT8pXCVccyosXHMqKFswLTld Kyg/OlwuWzAtOV0rKT8pXCVccypcKS8uZXhlYyhjKSlyZXR1cm5bcGFyc2VGbG9h dChhWzFdKSoyLjU1LHBhcnNlRmxvYXQoYVsyXSkqMi41NSxwYXJzZUZsb2F0KGFb M10pKjIuNTVdO2lmKGE9LyMoW2EtZkEtRjAtOV17Mn0pKFthLWZBLUYwLTldezJ9 KShbYS1mQS1GMC05XXsyfSkvLmV4ZWMoYykpcmV0dXJuW3BhcnNlSW50KGFbMV0s CjE2KSxwYXJzZUludChhWzJdLDE2KSxwYXJzZUludChhWzNdLDE2KV07aWYoYT0v IyhbYS1mQS1GMC05XSkoW2EtZkEtRjAtOV0pKFthLWZBLUYwLTldKS8uZXhlYyhj KSlyZXR1cm5bcGFyc2VJbnQoYVsxXSthWzFdLDE2KSxwYXJzZUludChhWzJdK2Fb Ml0sMTYpLHBhcnNlSW50KGFbM10rYVszXSwxNildO2lmKC9yZ2JhXCgwLCAwLCAw LCAwXCkvLmV4ZWMoYykpcmV0dXJuIGwudHJhbnNwYXJlbnQ7cmV0dXJuIGxbZi50 cmltKGMpLnRvTG93ZXJDYXNlKCldfWZ1bmN0aW9uIHEoYyxhKXt2YXIgYjtkb3ti PWYuY3VyQ1NTKGMsYSk7aWYoYiE9IiImJmIhPSJ0cmFuc3BhcmVudCJ8fGYubm9k ZU5hbWUoYywiYm9keSIpKWJyZWFrO2E9ImJhY2tncm91bmRDb2xvciJ9d2hpbGUo Yz1jLnBhcmVudE5vZGUpO3JldHVybiBrKGIpfWZ1bmN0aW9uIG0oKXt2YXIgYz1k b2N1bWVudC5kZWZhdWx0Vmlldz9kb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w dXRlZFN0eWxlKHRoaXMsbnVsbCk6dGhpcy5jdXJyZW50U3R5bGUsCmE9e30sYixk O2lmKGMmJmMubGVuZ3RoJiZjWzBdJiZjW2NbMF1dKWZvcih2YXIgZT1jLmxlbmd0 aDtlLS07KXtiPWNbZV07aWYodHlwZW9mIGNbYl09PSJzdHJpbmciKXtkPWIucmVw bGFjZSgvXC0oXHcpL2csZnVuY3Rpb24oZyxoKXtyZXR1cm4gaC50b1VwcGVyQ2Fz ZSgpfSk7YVtkXT1jW2JdfX1lbHNlIGZvcihiIGluIGMpaWYodHlwZW9mIGNbYl09 PT0ic3RyaW5nIilhW2JdPWNbYl07cmV0dXJuIGF9ZnVuY3Rpb24gbihjKXt2YXIg YSxiO2ZvcihhIGluIGMpe2I9Y1thXTtpZihiPT1udWxsfHxmLmlzRnVuY3Rpb24o Yil8fGEgaW4gcnx8L3Njcm9sbGJhci8udGVzdChhKXx8IS9jb2xvci9pLnRlc3Qo YSkmJmlzTmFOKHBhcnNlRmxvYXQoYikpKWRlbGV0ZSBjW2FdfXJldHVybiBjfWZ1 bmN0aW9uIHMoYyxhKXt2YXIgYj17XzowfSxkO2ZvcihkIGluIGEpaWYoY1tkXSE9 YVtkXSliW2RdPWFbZF07cmV0dXJuIGJ9ZnVuY3Rpb24gaihjLGEsYixkKXtpZih0 eXBlb2YgYz09Im9iamVjdCIpe2Q9CmE7Yj1udWxsO2E9YztjPWEuZWZmZWN0fWlm KGYuaXNGdW5jdGlvbihhKSl7ZD1hO2I9bnVsbDthPXt9fWlmKGYuaXNGdW5jdGlv bihiKSl7ZD1iO2I9bnVsbH1pZih0eXBlb2YgYT09Im51bWJlciJ8fGYuZnguc3Bl ZWRzW2FdKXtkPWI7Yj1hO2E9e319YT1hfHx7fTtiPWJ8fGEuZHVyYXRpb247Yj1m LmZ4Lm9mZj8wOnR5cGVvZiBiPT0ibnVtYmVyIj9iOmYuZnguc3BlZWRzW2JdfHxm LmZ4LnNwZWVkcy5fZGVmYXVsdDtkPWR8fGEuY29tcGxldGU7cmV0dXJuW2MsYSxi LGRdfWYuZWZmZWN0cz17fTtmLmVhY2goWyJiYWNrZ3JvdW5kQ29sb3IiLCJib3Jk ZXJCb3R0b21Db2xvciIsImJvcmRlckxlZnRDb2xvciIsImJvcmRlclJpZ2h0Q29s b3IiLCJib3JkZXJUb3BDb2xvciIsImNvbG9yIiwib3V0bGluZUNvbG9yIl0sZnVu Y3Rpb24oYyxhKXtmLmZ4LnN0ZXBbYV09ZnVuY3Rpb24oYil7aWYoIWIuY29sb3JJ bml0KXtiLnN0YXJ0PXEoYi5lbGVtLGEpO2IuZW5kPWsoYi5lbmQpO2IuY29sb3JJ bml0PQp0cnVlfWIuZWxlbS5zdHlsZVthXT0icmdiKCIrTWF0aC5tYXgoTWF0aC5t aW4ocGFyc2VJbnQoYi5wb3MqKGIuZW5kWzBdLWIuc3RhcnRbMF0pK2Iuc3RhcnRb MF0sMTApLDI1NSksMCkrIiwiK01hdGgubWF4KE1hdGgubWluKHBhcnNlSW50KGIu cG9zKihiLmVuZFsxXS1iLnN0YXJ0WzFdKStiLnN0YXJ0WzFdLDEwKSwyNTUpLDAp KyIsIitNYXRoLm1heChNYXRoLm1pbihwYXJzZUludChiLnBvcyooYi5lbmRbMl0t Yi5zdGFydFsyXSkrYi5zdGFydFsyXSwxMCksMjU1KSwwKSsiKSJ9fSk7dmFyIGw9 e2FxdWE6WzAsMjU1LDI1NV0sYXp1cmU6WzI0MCwyNTUsMjU1XSxiZWlnZTpbMjQ1 LDI0NSwyMjBdLGJsYWNrOlswLDAsMF0sYmx1ZTpbMCwwLDI1NV0sYnJvd246WzE2 NSw0Miw0Ml0sY3lhbjpbMCwyNTUsMjU1XSxkYXJrYmx1ZTpbMCwwLDEzOV0sZGFy a2N5YW46WzAsMTM5LDEzOV0sZGFya2dyZXk6WzE2OSwxNjksMTY5XSxkYXJrZ3Jl ZW46WzAsMTAwLDBdLGRhcmtraGFraTpbMTg5LAoxODMsMTA3XSxkYXJrbWFnZW50 YTpbMTM5LDAsMTM5XSxkYXJrb2xpdmVncmVlbjpbODUsMTA3LDQ3XSxkYXJrb3Jh bmdlOlsyNTUsMTQwLDBdLGRhcmtvcmNoaWQ6WzE1Myw1MCwyMDRdLGRhcmtyZWQ6 WzEzOSwwLDBdLGRhcmtzYWxtb246WzIzMywxNTAsMTIyXSxkYXJrdmlvbGV0Olsx NDgsMCwyMTFdLGZ1Y2hzaWE6WzI1NSwwLDI1NV0sZ29sZDpbMjU1LDIxNSwwXSxn cmVlbjpbMCwxMjgsMF0saW5kaWdvOls3NSwwLDEzMF0sa2hha2k6WzI0MCwyMzAs MTQwXSxsaWdodGJsdWU6WzE3MywyMTYsMjMwXSxsaWdodGN5YW46WzIyNCwyNTUs MjU1XSxsaWdodGdyZWVuOlsxNDQsMjM4LDE0NF0sbGlnaHRncmV5OlsyMTEsMjEx LDIxMV0sbGlnaHRwaW5rOlsyNTUsMTgyLDE5M10sbGlnaHR5ZWxsb3c6WzI1NSwy NTUsMjI0XSxsaW1lOlswLDI1NSwwXSxtYWdlbnRhOlsyNTUsMCwyNTVdLG1hcm9v bjpbMTI4LDAsMF0sbmF2eTpbMCwwLDEyOF0sb2xpdmU6WzEyOCwxMjgsMF0sb3Jh bmdlOlsyNTUsCjE2NSwwXSxwaW5rOlsyNTUsMTkyLDIwM10scHVycGxlOlsxMjgs MCwxMjhdLHZpb2xldDpbMTI4LDAsMTI4XSxyZWQ6WzI1NSwwLDBdLHNpbHZlcjpb MTkyLDE5MiwxOTJdLHdoaXRlOlsyNTUsMjU1LDI1NV0seWVsbG93OlsyNTUsMjU1 LDBdLHRyYW5zcGFyZW50OlsyNTUsMjU1LDI1NV19LG89WyJhZGQiLCJyZW1vdmUi LCJ0b2dnbGUiXSxyPXtib3JkZXI6MSxib3JkZXJCb3R0b206MSxib3JkZXJDb2xv cjoxLGJvcmRlckxlZnQ6MSxib3JkZXJSaWdodDoxLGJvcmRlclRvcDoxLGJvcmRl cldpZHRoOjEsbWFyZ2luOjEscGFkZGluZzoxfTtmLmVmZmVjdHMuYW5pbWF0ZUNs YXNzPWZ1bmN0aW9uKGMsYSxiLGQpe2lmKGYuaXNGdW5jdGlvbihiKSl7ZD1iO2I9 bnVsbH1yZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9Zih0aGlzKSxn PWUuYXR0cigic3R5bGUiKXx8IiAiLGg9bihtLmNhbGwodGhpcykpLHAsdD1lLmF0 dHIoImNsYXNzTmFtZSIpO2YuZWFjaChvLGZ1bmN0aW9uKHUsCmkpe2NbaV0mJmVb aSsiQ2xhc3MiXShjW2ldKX0pO3A9bihtLmNhbGwodGhpcykpO2UuYXR0cigiY2xh c3NOYW1lIix0KTtlLmFuaW1hdGUocyhoLHApLGEsYixmdW5jdGlvbigpe2YuZWFj aChvLGZ1bmN0aW9uKHUsaSl7Y1tpXSYmZVtpKyJDbGFzcyJdKGNbaV0pfSk7aWYo dHlwZW9mIGUuYXR0cigic3R5bGUiKT09Im9iamVjdCIpe2UuYXR0cigic3R5bGUi KS5jc3NUZXh0PSIiO2UuYXR0cigic3R5bGUiKS5jc3NUZXh0PWd9ZWxzZSBlLmF0 dHIoInN0eWxlIixnKTtkJiZkLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSl9O2Yu Zm4uZXh0ZW5kKHtfYWRkQ2xhc3M6Zi5mbi5hZGRDbGFzcyxhZGRDbGFzczpmdW5j dGlvbihjLGEsYixkKXtyZXR1cm4gYT9mLmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmFw cGx5KHRoaXMsW3thZGQ6Y30sYSxiLGRdKTp0aGlzLl9hZGRDbGFzcyhjKX0sX3Jl bW92ZUNsYXNzOmYuZm4ucmVtb3ZlQ2xhc3MscmVtb3ZlQ2xhc3M6ZnVuY3Rpb24o YyxhLGIsZCl7cmV0dXJuIGE/CmYuZWZmZWN0cy5hbmltYXRlQ2xhc3MuYXBwbHko dGhpcyxbe3JlbW92ZTpjfSxhLGIsZF0pOnRoaXMuX3JlbW92ZUNsYXNzKGMpfSxf dG9nZ2xlQ2xhc3M6Zi5mbi50b2dnbGVDbGFzcyx0b2dnbGVDbGFzczpmdW5jdGlv bihjLGEsYixkLGUpe3JldHVybiB0eXBlb2YgYT09ImJvb2xlYW4ifHxhPT09dW5k ZWZpbmVkP2I/Zi5lZmZlY3RzLmFuaW1hdGVDbGFzcy5hcHBseSh0aGlzLFthP3th ZGQ6Y306e3JlbW92ZTpjfSxiLGQsZV0pOnRoaXMuX3RvZ2dsZUNsYXNzKGMsYSk6 Zi5lZmZlY3RzLmFuaW1hdGVDbGFzcy5hcHBseSh0aGlzLFt7dG9nZ2xlOmN9LGEs YixkXSl9LHN3aXRjaENsYXNzOmZ1bmN0aW9uKGMsYSxiLGQsZSl7cmV0dXJuIGYu ZWZmZWN0cy5hbmltYXRlQ2xhc3MuYXBwbHkodGhpcyxbe2FkZDphLHJlbW92ZTpj fSxiLGQsZV0pfX0pO2YuZXh0ZW5kKGYuZWZmZWN0cyx7dmVyc2lvbjoiMS44LjIi LHNhdmU6ZnVuY3Rpb24oYyxhKXtmb3IodmFyIGI9MDtiPGEubGVuZ3RoO2IrKylh W2JdIT09Cm51bGwmJmMuZGF0YSgiZWMuc3RvcmFnZS4iK2FbYl0sY1swXS5zdHls ZVthW2JdXSl9LHJlc3RvcmU6ZnVuY3Rpb24oYyxhKXtmb3IodmFyIGI9MDtiPGEu bGVuZ3RoO2IrKylhW2JdIT09bnVsbCYmYy5jc3MoYVtiXSxjLmRhdGEoImVjLnN0 b3JhZ2UuIithW2JdKSl9LHNldE1vZGU6ZnVuY3Rpb24oYyxhKXtpZihhPT0idG9n Z2xlIilhPWMuaXMoIjpoaWRkZW4iKT8ic2hvdyI6ImhpZGUiO3JldHVybiBhfSxn ZXRCYXNlbGluZTpmdW5jdGlvbihjLGEpe3ZhciBiO3N3aXRjaChjWzBdKXtjYXNl ICJ0b3AiOmI9MDticmVhaztjYXNlICJtaWRkbGUiOmI9MC41O2JyZWFrO2Nhc2Ug ImJvdHRvbSI6Yj0xO2JyZWFrO2RlZmF1bHQ6Yj1jWzBdL2EuaGVpZ2h0fXN3aXRj aChjWzFdKXtjYXNlICJsZWZ0IjpjPTA7YnJlYWs7Y2FzZSAiY2VudGVyIjpjPTAu NTticmVhaztjYXNlICJyaWdodCI6Yz0xO2JyZWFrO2RlZmF1bHQ6Yz1jWzFdL2Eu d2lkdGh9cmV0dXJue3g6Yyx5OmJ9fSxjcmVhdGVXcmFwcGVyOmZ1bmN0aW9uKGMp e2lmKGMucGFyZW50KCkuaXMoIi51aS1lZmZlY3RzLXdyYXBwZXIiKSlyZXR1cm4g Yy5wYXJlbnQoKTsKdmFyIGE9e3dpZHRoOmMub3V0ZXJXaWR0aCh0cnVlKSxoZWln aHQ6Yy5vdXRlckhlaWdodCh0cnVlKSwiZmxvYXQiOmMuY3NzKCJmbG9hdCIpfSxi PWYoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoInVpLWVmZmVjdHMtd3JhcHBlciIp LmNzcyh7Zm9udFNpemU6IjEwMCUiLGJhY2tncm91bmQ6InRyYW5zcGFyZW50Iixi b3JkZXI6Im5vbmUiLG1hcmdpbjowLHBhZGRpbmc6MH0pO2Mud3JhcChiKTtiPWMu cGFyZW50KCk7aWYoYy5jc3MoInBvc2l0aW9uIik9PSJzdGF0aWMiKXtiLmNzcyh7 cG9zaXRpb246InJlbGF0aXZlIn0pO2MuY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUi fSl9ZWxzZXtmLmV4dGVuZChhLHtwb3NpdGlvbjpjLmNzcygicG9zaXRpb24iKSx6 SW5kZXg6Yy5jc3MoInotaW5kZXgiKX0pO2YuZWFjaChbInRvcCIsImxlZnQiLCJi b3R0b20iLCJyaWdodCJdLGZ1bmN0aW9uKGQsZSl7YVtlXT1jLmNzcyhlKTtpZihp c05hTihwYXJzZUludChhW2VdLDEwKSkpYVtlXT0iYXV0byJ9KTsKYy5jc3Moe3Bv c2l0aW9uOiJyZWxhdGl2ZSIsdG9wOjAsbGVmdDowfSl9cmV0dXJuIGIuY3NzKGEp LnNob3coKX0scmVtb3ZlV3JhcHBlcjpmdW5jdGlvbihjKXtpZihjLnBhcmVudCgp LmlzKCIudWktZWZmZWN0cy13cmFwcGVyIikpcmV0dXJuIGMucGFyZW50KCkucmVw bGFjZVdpdGgoYyk7cmV0dXJuIGN9LHNldFRyYW5zaXRpb246ZnVuY3Rpb24oYyxh LGIsZCl7ZD1kfHx7fTtmLmVhY2goYSxmdW5jdGlvbihlLGcpe3VuaXQ9Yy5jc3NV bml0KGcpO2lmKHVuaXRbMF0+MClkW2ddPXVuaXRbMF0qYit1bml0WzFdfSk7cmV0 dXJuIGR9fSk7Zi5mbi5leHRlbmQoe2VmZmVjdDpmdW5jdGlvbihjKXt2YXIgYT1q LmFwcGx5KHRoaXMsYXJndW1lbnRzKTthPXtvcHRpb25zOmFbMV0sZHVyYXRpb246 YVsyXSxjYWxsYmFjazphWzNdfTt2YXIgYj1mLmVmZmVjdHNbY107cmV0dXJuIGIm JiFmLmZ4Lm9mZj9iLmNhbGwodGhpcyxhKTp0aGlzfSxfc2hvdzpmLmZuLnNob3cs c2hvdzpmdW5jdGlvbihjKXtpZighY3x8CnR5cGVvZiBjPT0ibnVtYmVyInx8Zi5m eC5zcGVlZHNbY10pcmV0dXJuIHRoaXMuX3Nob3cuYXBwbHkodGhpcyxhcmd1bWVu dHMpO2Vsc2V7dmFyIGE9ai5hcHBseSh0aGlzLGFyZ3VtZW50cyk7YVsxXS5tb2Rl PSJzaG93IjtyZXR1cm4gdGhpcy5lZmZlY3QuYXBwbHkodGhpcyxhKX19LF9oaWRl OmYuZm4uaGlkZSxoaWRlOmZ1bmN0aW9uKGMpe2lmKCFjfHx0eXBlb2YgYz09Im51 bWJlciJ8fGYuZnguc3BlZWRzW2NdKXJldHVybiB0aGlzLl9oaWRlLmFwcGx5KHRo aXMsYXJndW1lbnRzKTtlbHNle3ZhciBhPWouYXBwbHkodGhpcyxhcmd1bWVudHMp O2FbMV0ubW9kZT0iaGlkZSI7cmV0dXJuIHRoaXMuZWZmZWN0LmFwcGx5KHRoaXMs YSl9fSxfX3RvZ2dsZTpmLmZuLnRvZ2dsZSx0b2dnbGU6ZnVuY3Rpb24oYyl7aWYo IWN8fHR5cGVvZiBjPT0ibnVtYmVyInx8Zi5meC5zcGVlZHNbY118fHR5cGVvZiBj PT0iYm9vbGVhbiJ8fGYuaXNGdW5jdGlvbihjKSlyZXR1cm4gdGhpcy5fX3RvZ2ds ZS5hcHBseSh0aGlzLAphcmd1bWVudHMpO2Vsc2V7dmFyIGE9ai5hcHBseSh0aGlz LGFyZ3VtZW50cyk7YVsxXS5tb2RlPSJ0b2dnbGUiO3JldHVybiB0aGlzLmVmZmVj dC5hcHBseSh0aGlzLGEpfX0sY3NzVW5pdDpmdW5jdGlvbihjKXt2YXIgYT10aGlz LmNzcyhjKSxiPVtdO2YuZWFjaChbImVtIiwicHgiLCIlIiwicHQiXSxmdW5jdGlv bihkLGUpe2lmKGEuaW5kZXhPZihlKT4wKWI9W3BhcnNlRmxvYXQoYSksZV19KTty ZXR1cm4gYn19KTtmLmVhc2luZy5qc3dpbmc9Zi5lYXNpbmcuc3dpbmc7Zi5leHRl bmQoZi5lYXNpbmcse2RlZjoiZWFzZU91dFF1YWQiLHN3aW5nOmZ1bmN0aW9uKGMs YSxiLGQsZSl7cmV0dXJuIGYuZWFzaW5nW2YuZWFzaW5nLmRlZl0oYyxhLGIsZCxl KX0sZWFzZUluUXVhZDpmdW5jdGlvbihjLGEsYixkLGUpe3JldHVybiBkKihhLz1l KSphK2J9LGVhc2VPdXRRdWFkOmZ1bmN0aW9uKGMsYSxiLGQsZSl7cmV0dXJuLWQq KGEvPWUpKihhLTIpK2J9LGVhc2VJbk91dFF1YWQ6ZnVuY3Rpb24oYywKYSxiLGQs ZSl7aWYoKGEvPWUvMik8MSlyZXR1cm4gZC8yKmEqYStiO3JldHVybi1kLzIqKC0t YSooYS0yKS0xKStifSxlYXNlSW5DdWJpYzpmdW5jdGlvbihjLGEsYixkLGUpe3Jl dHVybiBkKihhLz1lKSphKmErYn0sZWFzZU91dEN1YmljOmZ1bmN0aW9uKGMsYSxi LGQsZSl7cmV0dXJuIGQqKChhPWEvZS0xKSphKmErMSkrYn0sZWFzZUluT3V0Q3Vi aWM6ZnVuY3Rpb24oYyxhLGIsZCxlKXtpZigoYS89ZS8yKTwxKXJldHVybiBkLzIq YSphKmErYjtyZXR1cm4gZC8yKigoYS09MikqYSphKzIpK2J9LGVhc2VJblF1YXJ0 OmZ1bmN0aW9uKGMsYSxiLGQsZSl7cmV0dXJuIGQqKGEvPWUpKmEqYSphK2J9LGVh c2VPdXRRdWFydDpmdW5jdGlvbihjLGEsYixkLGUpe3JldHVybi1kKigoYT1hL2Ut MSkqYSphKmEtMSkrYn0sZWFzZUluT3V0UXVhcnQ6ZnVuY3Rpb24oYyxhLGIsZCxl KXtpZigoYS89ZS8yKTwxKXJldHVybiBkLzIqYSphKmEqYStiO3JldHVybi1kLzIq KChhLT0yKSphKmEqYS0yKSsKYn0sZWFzZUluUXVpbnQ6ZnVuY3Rpb24oYyxhLGIs ZCxlKXtyZXR1cm4gZCooYS89ZSkqYSphKmEqYStifSxlYXNlT3V0UXVpbnQ6ZnVu Y3Rpb24oYyxhLGIsZCxlKXtyZXR1cm4gZCooKGE9YS9lLTEpKmEqYSphKmErMSkr Yn0sZWFzZUluT3V0UXVpbnQ6ZnVuY3Rpb24oYyxhLGIsZCxlKXtpZigoYS89ZS8y KTwxKXJldHVybiBkLzIqYSphKmEqYSphK2I7cmV0dXJuIGQvMiooKGEtPTIpKmEq YSphKmErMikrYn0sZWFzZUluU2luZTpmdW5jdGlvbihjLGEsYixkLGUpe3JldHVy bi1kKk1hdGguY29zKGEvZSooTWF0aC5QSS8yKSkrZCtifSxlYXNlT3V0U2luZTpm dW5jdGlvbihjLGEsYixkLGUpe3JldHVybiBkKk1hdGguc2luKGEvZSooTWF0aC5Q SS8yKSkrYn0sZWFzZUluT3V0U2luZTpmdW5jdGlvbihjLGEsYixkLGUpe3JldHVy bi1kLzIqKE1hdGguY29zKE1hdGguUEkqYS9lKS0xKStifSxlYXNlSW5FeHBvOmZ1 bmN0aW9uKGMsYSxiLGQsZSl7cmV0dXJuIGE9PTA/YjpkKk1hdGgucG93KDIsCjEw KihhL2UtMSkpK2J9LGVhc2VPdXRFeHBvOmZ1bmN0aW9uKGMsYSxiLGQsZSl7cmV0 dXJuIGE9PWU/YitkOmQqKC1NYXRoLnBvdygyLC0xMCphL2UpKzEpK2J9LGVhc2VJ bk91dEV4cG86ZnVuY3Rpb24oYyxhLGIsZCxlKXtpZihhPT0wKXJldHVybiBiO2lm KGE9PWUpcmV0dXJuIGIrZDtpZigoYS89ZS8yKTwxKXJldHVybiBkLzIqTWF0aC5w b3coMiwxMCooYS0xKSkrYjtyZXR1cm4gZC8yKigtTWF0aC5wb3coMiwtMTAqLS1h KSsyKStifSxlYXNlSW5DaXJjOmZ1bmN0aW9uKGMsYSxiLGQsZSl7cmV0dXJuLWQq KE1hdGguc3FydCgxLShhLz1lKSphKS0xKStifSxlYXNlT3V0Q2lyYzpmdW5jdGlv bihjLGEsYixkLGUpe3JldHVybiBkKk1hdGguc3FydCgxLShhPWEvZS0xKSphKSti fSxlYXNlSW5PdXRDaXJjOmZ1bmN0aW9uKGMsYSxiLGQsZSl7aWYoKGEvPWUvMik8 MSlyZXR1cm4tZC8yKihNYXRoLnNxcnQoMS1hKmEpLTEpK2I7cmV0dXJuIGQvMioo TWF0aC5zcXJ0KDEtKGEtPTIpKgphKSsxKStifSxlYXNlSW5FbGFzdGljOmZ1bmN0 aW9uKGMsYSxiLGQsZSl7Yz0xLjcwMTU4O3ZhciBnPTAsaD1kO2lmKGE9PTApcmV0 dXJuIGI7aWYoKGEvPWUpPT0xKXJldHVybiBiK2Q7Z3x8KGc9ZSowLjMpO2lmKGg8 TWF0aC5hYnMoZCkpe2g9ZDtjPWcvNH1lbHNlIGM9Zy8oMipNYXRoLlBJKSpNYXRo LmFzaW4oZC9oKTtyZXR1cm4tKGgqTWF0aC5wb3coMiwxMCooYS09MSkpKk1hdGgu c2luKChhKmUtYykqMipNYXRoLlBJL2cpKStifSxlYXNlT3V0RWxhc3RpYzpmdW5j dGlvbihjLGEsYixkLGUpe2M9MS43MDE1ODt2YXIgZz0wLGg9ZDtpZihhPT0wKXJl dHVybiBiO2lmKChhLz1lKT09MSlyZXR1cm4gYitkO2d8fChnPWUqMC4zKTtpZiho PE1hdGguYWJzKGQpKXtoPWQ7Yz1nLzR9ZWxzZSBjPWcvKDIqTWF0aC5QSSkqTWF0 aC5hc2luKGQvaCk7cmV0dXJuIGgqTWF0aC5wb3coMiwtMTAqYSkqTWF0aC5zaW4o KGEqZS1jKSoyKk1hdGguUEkvZykrZCtifSxlYXNlSW5PdXRFbGFzdGljOmZ1bmN0 aW9uKGMsCmEsYixkLGUpe2M9MS43MDE1ODt2YXIgZz0wLGg9ZDtpZihhPT0wKXJl dHVybiBiO2lmKChhLz1lLzIpPT0yKXJldHVybiBiK2Q7Z3x8KGc9ZSowLjMqMS41 KTtpZihoPE1hdGguYWJzKGQpKXtoPWQ7Yz1nLzR9ZWxzZSBjPWcvKDIqTWF0aC5Q SSkqTWF0aC5hc2luKGQvaCk7aWYoYTwxKXJldHVybi0wLjUqaCpNYXRoLnBvdygy LDEwKihhLT0xKSkqTWF0aC5zaW4oKGEqZS1jKSoyKk1hdGguUEkvZykrYjtyZXR1 cm4gaCpNYXRoLnBvdygyLC0xMCooYS09MSkpKk1hdGguc2luKChhKmUtYykqMipN YXRoLlBJL2cpKjAuNStkK2J9LGVhc2VJbkJhY2s6ZnVuY3Rpb24oYyxhLGIsZCxl LGcpe2lmKGc9PXVuZGVmaW5lZClnPTEuNzAxNTg7cmV0dXJuIGQqKGEvPWUpKmEq KChnKzEpKmEtZykrYn0sZWFzZU91dEJhY2s6ZnVuY3Rpb24oYyxhLGIsZCxlLGcp e2lmKGc9PXVuZGVmaW5lZClnPTEuNzAxNTg7cmV0dXJuIGQqKChhPWEvZS0xKSph KigoZysxKSphK2cpKzEpK2J9LGVhc2VJbk91dEJhY2s6ZnVuY3Rpb24oYywKYSxi LGQsZSxnKXtpZihnPT11bmRlZmluZWQpZz0xLjcwMTU4O2lmKChhLz1lLzIpPDEp cmV0dXJuIGQvMiphKmEqKCgoZyo9MS41MjUpKzEpKmEtZykrYjtyZXR1cm4gZC8y KigoYS09MikqYSooKChnKj0xLjUyNSkrMSkqYStnKSsyKStifSxlYXNlSW5Cb3Vu Y2U6ZnVuY3Rpb24oYyxhLGIsZCxlKXtyZXR1cm4gZC1mLmVhc2luZy5lYXNlT3V0 Qm91bmNlKGMsZS1hLDAsZCxlKStifSxlYXNlT3V0Qm91bmNlOmZ1bmN0aW9uKGMs YSxiLGQsZSl7cmV0dXJuKGEvPWUpPDEvMi43NT9kKjcuNTYyNSphKmErYjphPDIv Mi43NT9kKig3LjU2MjUqKGEtPTEuNS8yLjc1KSphKzAuNzUpK2I6YTwyLjUvMi43 NT9kKig3LjU2MjUqKGEtPTIuMjUvMi43NSkqYSswLjkzNzUpK2I6ZCooNy41NjI1 KihhLT0yLjYyNS8yLjc1KSphKzAuOTg0Mzc1KStifSxlYXNlSW5PdXRCb3VuY2U6 ZnVuY3Rpb24oYyxhLGIsZCxlKXtpZihhPGUvMilyZXR1cm4gZi5lYXNpbmcuZWFz ZUluQm91bmNlKGMsYSoyLDAsCmQsZSkqMC41K2I7cmV0dXJuIGYuZWFzaW5nLmVh c2VPdXRCb3VuY2UoYyxhKjItZSwwLGQsZSkqMC41K2QqMC41K2J9fSl9KGpRdWVy eSk7CjsvKgogKiBqUXVlcnkgVUkgRWZmZWN0cyBCbGluZCAxLjguMgogKgogKiBD b3B5cmlnaHQgKGMpIDIwMTAgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5j b20vYWJvdXQpCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCAoTUlULUxJ Q0VOU0UudHh0KQogKiBhbmQgR1BMIChHUEwtTElDRU5TRS50eHQpIGxpY2Vuc2Vz LgogKgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL0VmZmVjdHMvQmxpbmQK ICoKICogRGVwZW5kczoKICoJanF1ZXJ5LmVmZmVjdHMuY29yZS5qcwogKi8KKGZ1 bmN0aW9uKGIpe2IuZWZmZWN0cy5ibGluZD1mdW5jdGlvbihjKXtyZXR1cm4gdGhp cy5xdWV1ZShmdW5jdGlvbigpe3ZhciBhPWIodGhpcyksZz1bInBvc2l0aW9uIiwi dG9wIiwibGVmdCJdLGY9Yi5lZmZlY3RzLnNldE1vZGUoYSxjLm9wdGlvbnMubW9k ZXx8ImhpZGUiKSxkPWMub3B0aW9ucy5kaXJlY3Rpb258fCJ2ZXJ0aWNhbCI7Yi5l ZmZlY3RzLnNhdmUoYSxnKTthLnNob3coKTt2YXIgZT1iLmVmZmVjdHMuY3JlYXRl V3JhcHBlcihhKS5jc3Moe292ZXJmbG93OiJoaWRkZW4ifSksaD1kPT0idmVydGlj YWwiPyJoZWlnaHQiOiJ3aWR0aCI7ZD1kPT0idmVydGljYWwiP2UuaGVpZ2h0KCk6 ZS53aWR0aCgpO2Y9PSJzaG93IiYmZS5jc3MoaCwwKTt2YXIgaT17fTtpW2hdPWY9 PSJzaG93Ij9kOjA7ZS5hbmltYXRlKGksYy5kdXJhdGlvbixjLm9wdGlvbnMuZWFz aW5nLGZ1bmN0aW9uKCl7Zj09ImhpZGUiJiZhLmhpZGUoKTtiLmVmZmVjdHMucmVz dG9yZShhLGcpO2IuZWZmZWN0cy5yZW1vdmVXcmFwcGVyKGEpOwpjLmNhbGxiYWNr JiZjLmNhbGxiYWNrLmFwcGx5KGFbMF0sYXJndW1lbnRzKTthLmRlcXVldWUoKX0p fSl9fSkoalF1ZXJ5KTsKOy8qCiAqIGpRdWVyeSBVSSBFZmZlY3RzIEJvdW5jZSAx LjguMgogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAgQVVUSE9SUy50eHQgKGh0dHA6 Ly9qcXVlcnl1aS5jb20vYWJvdXQpCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhl IE1JVCAoTUlULUxJQ0VOU0UudHh0KQogKiBhbmQgR1BMIChHUEwtTElDRU5TRS50 eHQpIGxpY2Vuc2VzLgogKgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL0Vm ZmVjdHMvQm91bmNlCiAqCiAqIERlcGVuZHM6CiAqCWpxdWVyeS5lZmZlY3RzLmNv cmUuanMKICovCihmdW5jdGlvbihlKXtlLmVmZmVjdHMuYm91bmNlPWZ1bmN0aW9u KGIpe3JldHVybiB0aGlzLnF1ZXVlKGZ1bmN0aW9uKCl7dmFyIGE9ZSh0aGlzKSxs PVsicG9zaXRpb24iLCJ0b3AiLCJsZWZ0Il0saD1lLmVmZmVjdHMuc2V0TW9kZShh LGIub3B0aW9ucy5tb2RlfHwiZWZmZWN0IiksZD1iLm9wdGlvbnMuZGlyZWN0aW9u fHwidXAiLGM9Yi5vcHRpb25zLmRpc3RhbmNlfHwyMCxtPWIub3B0aW9ucy50aW1l c3x8NSxpPWIuZHVyYXRpb258fDI1MDsvc2hvd3xoaWRlLy50ZXN0KGgpJiZsLnB1 c2goIm9wYWNpdHkiKTtlLmVmZmVjdHMuc2F2ZShhLGwpO2Euc2hvdygpO2UuZWZm ZWN0cy5jcmVhdGVXcmFwcGVyKGEpO3ZhciBmPWQ9PSJ1cCJ8fGQ9PSJkb3duIj8i dG9wIjoibGVmdCI7ZD1kPT0idXAifHxkPT0ibGVmdCI/InBvcyI6Im5lZyI7Yz1i Lm9wdGlvbnMuZGlzdGFuY2V8fChmPT0idG9wIj9hLm91dGVySGVpZ2h0KHttYXJn aW46dHJ1ZX0pLzM6YS5vdXRlcldpZHRoKHttYXJnaW46dHJ1ZX0pLwozKTtpZiho PT0ic2hvdyIpYS5jc3MoIm9wYWNpdHkiLDApLmNzcyhmLGQ9PSJwb3MiPy1jOmMp O2lmKGg9PSJoaWRlIiljLz1tKjI7aCE9ImhpZGUiJiZtLS07aWYoaD09InNob3ci KXt2YXIgZz17b3BhY2l0eToxfTtnW2ZdPShkPT0icG9zIj8iKz0iOiItPSIpK2M7 YS5hbmltYXRlKGcsaS8yLGIub3B0aW9ucy5lYXNpbmcpO2MvPTI7bS0tfWZvcihn PTA7ZzxtO2crKyl7dmFyIGo9e30saz17fTtqW2ZdPShkPT0icG9zIj8iLT0iOiIr PSIpK2M7a1tmXT0oZD09InBvcyI/Iis9IjoiLT0iKStjO2EuYW5pbWF0ZShqLGkv MixiLm9wdGlvbnMuZWFzaW5nKS5hbmltYXRlKGssaS8yLGIub3B0aW9ucy5lYXNp bmcpO2M9aD09ImhpZGUiP2MqMjpjLzJ9aWYoaD09ImhpZGUiKXtnPXtvcGFjaXR5 OjB9O2dbZl09KGQ9PSJwb3MiPyItPSI6Iis9IikrYzthLmFuaW1hdGUoZyxpLzIs Yi5vcHRpb25zLmVhc2luZyxmdW5jdGlvbigpe2EuaGlkZSgpO2UuZWZmZWN0cy5y ZXN0b3JlKGEsbCk7ZS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIoYSk7CmIuY2FsbGJh Y2smJmIuY2FsbGJhY2suYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9ZWxzZXtqPXt9 O2s9e307altmXT0oZD09InBvcyI/Ii09IjoiKz0iKStjO2tbZl09KGQ9PSJwb3Mi PyIrPSI6Ii09IikrYzthLmFuaW1hdGUoaixpLzIsYi5vcHRpb25zLmVhc2luZyku YW5pbWF0ZShrLGkvMixiLm9wdGlvbnMuZWFzaW5nLGZ1bmN0aW9uKCl7ZS5lZmZl Y3RzLnJlc3RvcmUoYSxsKTtlLmVmZmVjdHMucmVtb3ZlV3JhcHBlcihhKTtiLmNh bGxiYWNrJiZiLmNhbGxiYWNrLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfWEucXVl dWUoImZ4IixmdW5jdGlvbigpe2EuZGVxdWV1ZSgpfSk7YS5kZXF1ZXVlKCl9KX19 KShqUXVlcnkpOwo7LyoKICogalF1ZXJ5IFVJIEVmZmVjdHMgQ2xpcCAxLjguMgog KgogKiBDb3B5cmlnaHQgKGMpIDIwMTAgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVl cnl1aS5jb20vYWJvdXQpCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCAo TUlULUxJQ0VOU0UudHh0KQogKiBhbmQgR1BMIChHUEwtTElDRU5TRS50eHQpIGxp Y2Vuc2VzLgogKgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL0VmZmVjdHMv Q2xpcAogKgogKiBEZXBlbmRzOgogKglqcXVlcnkuZWZmZWN0cy5jb3JlLmpzCiAq LwooZnVuY3Rpb24oYil7Yi5lZmZlY3RzLmNsaXA9ZnVuY3Rpb24oZSl7cmV0dXJu IHRoaXMucXVldWUoZnVuY3Rpb24oKXt2YXIgYT1iKHRoaXMpLGk9WyJwb3NpdGlv biIsInRvcCIsImxlZnQiLCJoZWlnaHQiLCJ3aWR0aCJdLGY9Yi5lZmZlY3RzLnNl dE1vZGUoYSxlLm9wdGlvbnMubW9kZXx8ImhpZGUiKSxjPWUub3B0aW9ucy5kaXJl Y3Rpb258fCJ2ZXJ0aWNhbCI7Yi5lZmZlY3RzLnNhdmUoYSxpKTthLnNob3coKTt2 YXIgZD1iLmVmZmVjdHMuY3JlYXRlV3JhcHBlcihhKS5jc3Moe292ZXJmbG93OiJo aWRkZW4ifSk7ZD1hWzBdLnRhZ05hbWU9PSJJTUciP2Q6YTt2YXIgZz17c2l6ZTpj PT0idmVydGljYWwiPyJoZWlnaHQiOiJ3aWR0aCIscG9zaXRpb246Yz09InZlcnRp Y2FsIj8idG9wIjoibGVmdCJ9O2M9Yz09InZlcnRpY2FsIj9kLmhlaWdodCgpOmQu d2lkdGgoKTtpZihmPT0ic2hvdyIpe2QuY3NzKGcuc2l6ZSwwKTtkLmNzcyhnLnBv c2l0aW9uLGMvMil9dmFyIGg9e307aFtnLnNpemVdPQpmPT0ic2hvdyI/YzowO2hb Zy5wb3NpdGlvbl09Zj09InNob3ciPzA6Yy8yO2QuYW5pbWF0ZShoLHtxdWV1ZTpm YWxzZSxkdXJhdGlvbjplLmR1cmF0aW9uLGVhc2luZzplLm9wdGlvbnMuZWFzaW5n LGNvbXBsZXRlOmZ1bmN0aW9uKCl7Zj09ImhpZGUiJiZhLmhpZGUoKTtiLmVmZmVj dHMucmVzdG9yZShhLGkpO2IuZWZmZWN0cy5yZW1vdmVXcmFwcGVyKGEpO2UuY2Fs bGJhY2smJmUuY2FsbGJhY2suYXBwbHkoYVswXSxhcmd1bWVudHMpO2EuZGVxdWV1 ZSgpfX0pfSl9fSkoalF1ZXJ5KTsKOy8qCiAqIGpRdWVyeSBVSSBFZmZlY3RzIERy b3AgMS44LjIKICoKICogQ29weXJpZ2h0IChjKSAyMDEwIEFVVEhPUlMudHh0ICho dHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVy IHRoZSBNSVQgKE1JVC1MSUNFTlNFLnR4dCkKICogYW5kIEdQTCAoR1BMLUxJQ0VO U0UudHh0KSBsaWNlbnNlcy4KICoKICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9V SS9FZmZlY3RzL0Ryb3AKICoKICogRGVwZW5kczoKICoJanF1ZXJ5LmVmZmVjdHMu Y29yZS5qcwogKi8KKGZ1bmN0aW9uKGMpe2MuZWZmZWN0cy5kcm9wPWZ1bmN0aW9u KGQpe3JldHVybiB0aGlzLnF1ZXVlKGZ1bmN0aW9uKCl7dmFyIGE9Yyh0aGlzKSxo PVsicG9zaXRpb24iLCJ0b3AiLCJsZWZ0Iiwib3BhY2l0eSJdLGU9Yy5lZmZlY3Rz LnNldE1vZGUoYSxkLm9wdGlvbnMubW9kZXx8ImhpZGUiKSxiPWQub3B0aW9ucy5k aXJlY3Rpb258fCJsZWZ0IjtjLmVmZmVjdHMuc2F2ZShhLGgpO2Euc2hvdygpO2Mu ZWZmZWN0cy5jcmVhdGVXcmFwcGVyKGEpO3ZhciBmPWI9PSJ1cCJ8fGI9PSJkb3du Ij8idG9wIjoibGVmdCI7Yj1iPT0idXAifHxiPT0ibGVmdCI/InBvcyI6Im5lZyI7 dmFyIGc9ZC5vcHRpb25zLmRpc3RhbmNlfHwoZj09InRvcCI/YS5vdXRlckhlaWdo dCh7bWFyZ2luOnRydWV9KS8yOmEub3V0ZXJXaWR0aCh7bWFyZ2luOnRydWV9KS8y KTtpZihlPT0ic2hvdyIpYS5jc3MoIm9wYWNpdHkiLDApLmNzcyhmLGI9PSJwb3Mi Py1nOmcpO3ZhciBpPXtvcGFjaXR5OmU9PSJzaG93Ij8xOgowfTtpW2ZdPShlPT0i c2hvdyI/Yj09InBvcyI/Iis9IjoiLT0iOmI9PSJwb3MiPyItPSI6Iis9IikrZzth LmFuaW1hdGUoaSx7cXVldWU6ZmFsc2UsZHVyYXRpb246ZC5kdXJhdGlvbixlYXNp bmc6ZC5vcHRpb25zLmVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigpe2U9PSJoaWRl IiYmYS5oaWRlKCk7Yy5lZmZlY3RzLnJlc3RvcmUoYSxoKTtjLmVmZmVjdHMucmVt b3ZlV3JhcHBlcihhKTtkLmNhbGxiYWNrJiZkLmNhbGxiYWNrLmFwcGx5KHRoaXMs YXJndW1lbnRzKTthLmRlcXVldWUoKX19KX0pfX0pKGpRdWVyeSk7CjsvKgogKiBq UXVlcnkgVUkgRWZmZWN0cyBFeHBsb2RlIDEuOC4yCiAqCiAqIENvcHlyaWdodCAo YykgMjAxMCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkK ICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIChNSVQtTElDRU5TRS50eHQp CiAqIGFuZCBHUEwgKEdQTC1MSUNFTlNFLnR4dCkgbGljZW5zZXMuCiAqCiAqIGh0 dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvRWZmZWN0cy9FeHBsb2RlCiAqCiAqIERl cGVuZHM6CiAqCWpxdWVyeS5lZmZlY3RzLmNvcmUuanMKICovCihmdW5jdGlvbihq KXtqLmVmZmVjdHMuZXhwbG9kZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1 ZShmdW5jdGlvbigpe3ZhciBjPWEub3B0aW9ucy5waWVjZXM/TWF0aC5yb3VuZChN YXRoLnNxcnQoYS5vcHRpb25zLnBpZWNlcykpOjMsZD1hLm9wdGlvbnMucGllY2Vz P01hdGgucm91bmQoTWF0aC5zcXJ0KGEub3B0aW9ucy5waWVjZXMpKTozO2Eub3B0 aW9ucy5tb2RlPWEub3B0aW9ucy5tb2RlPT0idG9nZ2xlIj9qKHRoaXMpLmlzKCI6 dmlzaWJsZSIpPyJoaWRlIjoic2hvdyI6YS5vcHRpb25zLm1vZGU7dmFyIGI9aih0 aGlzKS5zaG93KCkuY3NzKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIiksZz1iLm9mZnNl dCgpO2cudG9wLT1wYXJzZUludChiLmNzcygibWFyZ2luVG9wIiksMTApfHwwO2cu bGVmdC09cGFyc2VJbnQoYi5jc3MoIm1hcmdpbkxlZnQiKSwxMCl8fDA7Zm9yKHZh ciBoPWIub3V0ZXJXaWR0aCh0cnVlKSxpPWIub3V0ZXJIZWlnaHQodHJ1ZSksZT0w O2U8YztlKyspZm9yKHZhciBmPQowO2Y8ZDtmKyspYi5jbG9uZSgpLmFwcGVuZFRv KCJib2R5Iikud3JhcCgiPGRpdj48L2Rpdj4iKS5jc3Moe3Bvc2l0aW9uOiJhYnNv bHV0ZSIsdmlzaWJpbGl0eToidmlzaWJsZSIsbGVmdDotZiooaC9kKSx0b3A6LWUq KGkvYyl9KS5wYXJlbnQoKS5hZGRDbGFzcygidWktZWZmZWN0cy1leHBsb2RlIiku Y3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLG92ZXJmbG93OiJoaWRkZW4iLHdpZHRo OmgvZCxoZWlnaHQ6aS9jLGxlZnQ6Zy5sZWZ0K2YqKGgvZCkrKGEub3B0aW9ucy5t b2RlPT0ic2hvdyI/KGYtTWF0aC5mbG9vcihkLzIpKSooaC9kKTowKSx0b3A6Zy50 b3ArZSooaS9jKSsoYS5vcHRpb25zLm1vZGU9PSJzaG93Ij8oZS1NYXRoLmZsb29y KGMvMikpKihpL2MpOjApLG9wYWNpdHk6YS5vcHRpb25zLm1vZGU9PSJzaG93Ij8w OjF9KS5hbmltYXRlKHtsZWZ0OmcubGVmdCtmKihoL2QpKyhhLm9wdGlvbnMubW9k ZT09InNob3ciPzA6KGYtTWF0aC5mbG9vcihkLzIpKSooaC9kKSksdG9wOmcudG9w KwplKihpL2MpKyhhLm9wdGlvbnMubW9kZT09InNob3ciPzA6KGUtTWF0aC5mbG9v cihjLzIpKSooaS9jKSksb3BhY2l0eTphLm9wdGlvbnMubW9kZT09InNob3ciPzE6 MH0sYS5kdXJhdGlvbnx8NTAwKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5vcHRp b25zLm1vZGU9PSJzaG93Ij9iLmNzcyh7dmlzaWJpbGl0eToidmlzaWJsZSJ9KTpi LmNzcyh7dmlzaWJpbGl0eToidmlzaWJsZSJ9KS5oaWRlKCk7YS5jYWxsYmFjayYm YS5jYWxsYmFjay5hcHBseShiWzBdKTtiLmRlcXVldWUoKTtqKCJkaXYudWktZWZm ZWN0cy1leHBsb2RlIikucmVtb3ZlKCl9LGEuZHVyYXRpb258fDUwMCl9KX19KShq UXVlcnkpOwo7LyoKICogalF1ZXJ5IFVJIEVmZmVjdHMgRm9sZCAxLjguMgogKgog KiBDb3B5cmlnaHQgKGMpIDIwMTAgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1 aS5jb20vYWJvdXQpCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCAoTUlU LUxJQ0VOU0UudHh0KQogKiBhbmQgR1BMIChHUEwtTElDRU5TRS50eHQpIGxpY2Vu c2VzLgogKgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL0VmZmVjdHMvRm9s ZAogKgogKiBEZXBlbmRzOgogKglqcXVlcnkuZWZmZWN0cy5jb3JlLmpzCiAqLwoo ZnVuY3Rpb24oYyl7Yy5lZmZlY3RzLmZvbGQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRo aXMucXVldWUoZnVuY3Rpb24oKXt2YXIgYj1jKHRoaXMpLGo9WyJwb3NpdGlvbiIs InRvcCIsImxlZnQiXSxkPWMuZWZmZWN0cy5zZXRNb2RlKGIsYS5vcHRpb25zLm1v ZGV8fCJoaWRlIiksZz1hLm9wdGlvbnMuc2l6ZXx8MTUsaD0hIWEub3B0aW9ucy5o b3JpekZpcnN0LGs9YS5kdXJhdGlvbj9hLmR1cmF0aW9uLzI6Yy5meC5zcGVlZHMu X2RlZmF1bHQvMjtjLmVmZmVjdHMuc2F2ZShiLGopO2Iuc2hvdygpO3ZhciBlPWMu ZWZmZWN0cy5jcmVhdGVXcmFwcGVyKGIpLmNzcyh7b3ZlcmZsb3c6ImhpZGRlbiJ9 KSxmPWQ9PSJzaG93IiE9aCxsPWY/WyJ3aWR0aCIsImhlaWdodCJdOlsiaGVpZ2h0 Iiwid2lkdGgiXTtmPWY/W2Uud2lkdGgoKSxlLmhlaWdodCgpXTpbZS5oZWlnaHQo KSxlLndpZHRoKCldO3ZhciBpPS8oWzAtOV0rKSUvLmV4ZWMoZyk7aWYoaSlnPXBh cnNlSW50KGlbMV0sMTApLzEwMCoKZltkPT0iaGlkZSI/MDoxXTtpZihkPT0ic2hv dyIpZS5jc3MoaD97aGVpZ2h0OjAsd2lkdGg6Z306e2hlaWdodDpnLHdpZHRoOjB9 KTtoPXt9O2k9e307aFtsWzBdXT1kPT0ic2hvdyI/ZlswXTpnO2lbbFsxXV09ZD09 InNob3ciP2ZbMV06MDtlLmFuaW1hdGUoaCxrLGEub3B0aW9ucy5lYXNpbmcpLmFu aW1hdGUoaSxrLGEub3B0aW9ucy5lYXNpbmcsZnVuY3Rpb24oKXtkPT0iaGlkZSIm JmIuaGlkZSgpO2MuZWZmZWN0cy5yZXN0b3JlKGIsaik7Yy5lZmZlY3RzLnJlbW92 ZVdyYXBwZXIoYik7YS5jYWxsYmFjayYmYS5jYWxsYmFjay5hcHBseShiWzBdLGFy Z3VtZW50cyk7Yi5kZXF1ZXVlKCl9KX0pfX0pKGpRdWVyeSk7CjsvKgogKiBqUXVl cnkgVUkgRWZmZWN0cyBIaWdobGlnaHQgMS44LjIKICoKICogQ29weXJpZ2h0IChj KSAyMDEwIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQog KiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKE1JVC1MSUNFTlNFLnR4dCkK ICogYW5kIEdQTCAoR1BMLUxJQ0VOU0UudHh0KSBsaWNlbnNlcy4KICoKICogaHR0 cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9FZmZlY3RzL0hpZ2hsaWdodAogKgogKiBE ZXBlbmRzOgogKglqcXVlcnkuZWZmZWN0cy5jb3JlLmpzCiAqLwooZnVuY3Rpb24o Yil7Yi5lZmZlY3RzLmhpZ2hsaWdodD1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5x dWV1ZShmdW5jdGlvbigpe3ZhciBhPWIodGhpcyksZT1bImJhY2tncm91bmRJbWFn ZSIsImJhY2tncm91bmRDb2xvciIsIm9wYWNpdHkiXSxkPWIuZWZmZWN0cy5zZXRN b2RlKGEsYy5vcHRpb25zLm1vZGV8fCJzaG93IiksZj17YmFja2dyb3VuZENvbG9y OmEuY3NzKCJiYWNrZ3JvdW5kQ29sb3IiKX07aWYoZD09ImhpZGUiKWYub3BhY2l0 eT0wO2IuZWZmZWN0cy5zYXZlKGEsZSk7YS5zaG93KCkuY3NzKHtiYWNrZ3JvdW5k SW1hZ2U6Im5vbmUiLGJhY2tncm91bmRDb2xvcjpjLm9wdGlvbnMuY29sb3J8fCIj ZmZmZjk5In0pLmFuaW1hdGUoZix7cXVldWU6ZmFsc2UsZHVyYXRpb246Yy5kdXJh dGlvbixlYXNpbmc6Yy5vcHRpb25zLmVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigp e2Q9PSJoaWRlIiYmYS5oaWRlKCk7Yi5lZmZlY3RzLnJlc3RvcmUoYSxlKTtkPT0i c2hvdyImJiFiLnN1cHBvcnQub3BhY2l0eSYmCnRoaXMuc3R5bGUucmVtb3ZlQXR0 cmlidXRlKCJmaWx0ZXIiKTtjLmNhbGxiYWNrJiZjLmNhbGxiYWNrLmFwcGx5KHRo aXMsYXJndW1lbnRzKTthLmRlcXVldWUoKX19KX0pfX0pKGpRdWVyeSk7CjsvKgog KiBqUXVlcnkgVUkgRWZmZWN0cyBQdWxzYXRlIDEuOC4yCiAqCiAqIENvcHlyaWdo dCAoYykgMjAxMCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91 dCkKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIChNSVQtTElDRU5TRS50 eHQpCiAqIGFuZCBHUEwgKEdQTC1MSUNFTlNFLnR4dCkgbGljZW5zZXMuCiAqCiAq IGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvRWZmZWN0cy9QdWxzYXRlCiAqCiAq IERlcGVuZHM6CiAqCWpxdWVyeS5lZmZlY3RzLmNvcmUuanMKICovCihmdW5jdGlv bihkKXtkLmVmZmVjdHMucHVsc2F0ZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5x dWV1ZShmdW5jdGlvbigpe3ZhciBiPWQodGhpcyksYz1kLmVmZmVjdHMuc2V0TW9k ZShiLGEub3B0aW9ucy5tb2RlfHwic2hvdyIpO3RpbWVzPShhLm9wdGlvbnMudGlt ZXN8fDUpKjItMTtkdXJhdGlvbj1hLmR1cmF0aW9uP2EuZHVyYXRpb24vMjpkLmZ4 LnNwZWVkcy5fZGVmYXVsdC8yO2lzVmlzaWJsZT1iLmlzKCI6dmlzaWJsZSIpO2Fu aW1hdGVUbz0wO2lmKCFpc1Zpc2libGUpe2IuY3NzKCJvcGFjaXR5IiwwKS5zaG93 KCk7YW5pbWF0ZVRvPTF9aWYoYz09ImhpZGUiJiZpc1Zpc2libGV8fGM9PSJzaG93 IiYmIWlzVmlzaWJsZSl0aW1lcy0tO2ZvcihjPTA7Yzx0aW1lcztjKyspe2IuYW5p bWF0ZSh7b3BhY2l0eTphbmltYXRlVG99LGR1cmF0aW9uLGEub3B0aW9ucy5lYXNp bmcpO2FuaW1hdGVUbz0oYW5pbWF0ZVRvKzEpJTJ9Yi5hbmltYXRlKHtvcGFjaXR5 OmFuaW1hdGVUb30sZHVyYXRpb24sCmEub3B0aW9ucy5lYXNpbmcsZnVuY3Rpb24o KXthbmltYXRlVG89PTAmJmIuaGlkZSgpO2EuY2FsbGJhY2smJmEuY2FsbGJhY2su YXBwbHkodGhpcyxhcmd1bWVudHMpfSk7Yi5xdWV1ZSgiZngiLGZ1bmN0aW9uKCl7 Yi5kZXF1ZXVlKCl9KS5kZXF1ZXVlKCl9KX19KShqUXVlcnkpOwo7LyoKICogalF1 ZXJ5IFVJIEVmZmVjdHMgU2NhbGUgMS44LjIKICoKICogQ29weXJpZ2h0IChjKSAy MDEwIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQogKiBE dWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKE1JVC1MSUNFTlNFLnR4dCkKICog YW5kIEdQTCAoR1BMLUxJQ0VOU0UudHh0KSBsaWNlbnNlcy4KICoKICogaHR0cDov L2RvY3MuanF1ZXJ5LmNvbS9VSS9FZmZlY3RzL1NjYWxlCiAqCiAqIERlcGVuZHM6 CiAqCWpxdWVyeS5lZmZlY3RzLmNvcmUuanMKICovCihmdW5jdGlvbihjKXtjLmVm ZmVjdHMucHVmZj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5xdWV1ZShmdW5jdGlv bigpe3ZhciBhPWModGhpcyksZT1jLmVmZmVjdHMuc2V0TW9kZShhLGIub3B0aW9u cy5tb2RlfHwiaGlkZSIpLGc9cGFyc2VJbnQoYi5vcHRpb25zLnBlcmNlbnQsMTAp fHwxNTAsaD1nLzEwMCxpPXtoZWlnaHQ6YS5oZWlnaHQoKSx3aWR0aDphLndpZHRo KCl9O2MuZXh0ZW5kKGIub3B0aW9ucyx7ZmFkZTp0cnVlLG1vZGU6ZSxwZXJjZW50 OmU9PSJoaWRlIj9nOjEwMCxmcm9tOmU9PSJoaWRlIj9pOntoZWlnaHQ6aS5oZWln aHQqaCx3aWR0aDppLndpZHRoKmh9fSk7YS5lZmZlY3QoInNjYWxlIixiLm9wdGlv bnMsYi5kdXJhdGlvbixiLmNhbGxiYWNrKTthLmRlcXVldWUoKX0pfTtjLmVmZmVj dHMuc2NhbGU9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMucXVldWUoZnVuY3Rpb24o KXt2YXIgYT1jKHRoaXMpLGU9Yy5leHRlbmQodHJ1ZSx7fSxiLm9wdGlvbnMpLGc9 Yy5lZmZlY3RzLnNldE1vZGUoYSwKYi5vcHRpb25zLm1vZGV8fCJlZmZlY3QiKSxo PXBhcnNlSW50KGIub3B0aW9ucy5wZXJjZW50LDEwKXx8KHBhcnNlSW50KGIub3B0 aW9ucy5wZXJjZW50LDEwKT09MD8wOmc9PSJoaWRlIj8wOjEwMCksaT1iLm9wdGlv bnMuZGlyZWN0aW9ufHwiYm90aCIsZj1iLm9wdGlvbnMub3JpZ2luO2lmKGchPSJl ZmZlY3QiKXtlLm9yaWdpbj1mfHxbIm1pZGRsZSIsImNlbnRlciJdO2UucmVzdG9y ZT10cnVlfWY9e2hlaWdodDphLmhlaWdodCgpLHdpZHRoOmEud2lkdGgoKX07YS5m cm9tPWIub3B0aW9ucy5mcm9tfHwoZz09InNob3ciP3toZWlnaHQ6MCx3aWR0aDow fTpmKTtoPXt5OmkhPSJob3Jpem9udGFsIj9oLzEwMDoxLHg6aSE9InZlcnRpY2Fs Ij9oLzEwMDoxfTthLnRvPXtoZWlnaHQ6Zi5oZWlnaHQqaC55LHdpZHRoOmYud2lk dGgqaC54fTtpZihiLm9wdGlvbnMuZmFkZSl7aWYoZz09InNob3ciKXthLmZyb20u b3BhY2l0eT0wO2EudG8ub3BhY2l0eT0xfWlmKGc9PSJoaWRlIil7YS5mcm9tLm9w YWNpdHk9CjE7YS50by5vcGFjaXR5PTB9fWUuZnJvbT1hLmZyb207ZS50bz1hLnRv O2UubW9kZT1nO2EuZWZmZWN0KCJzaXplIixlLGIuZHVyYXRpb24sYi5jYWxsYmFj ayk7YS5kZXF1ZXVlKCl9KX07Yy5lZmZlY3RzLnNpemU9ZnVuY3Rpb24oYil7cmV0 dXJuIHRoaXMucXVldWUoZnVuY3Rpb24oKXt2YXIgYT1jKHRoaXMpLGU9WyJwb3Np dGlvbiIsInRvcCIsImxlZnQiLCJ3aWR0aCIsImhlaWdodCIsIm92ZXJmbG93Iiwi b3BhY2l0eSJdLGc9WyJwb3NpdGlvbiIsInRvcCIsImxlZnQiLCJvdmVyZmxvdyIs Im9wYWNpdHkiXSxoPVsid2lkdGgiLCJoZWlnaHQiLCJvdmVyZmxvdyJdLGk9WyJm b250U2l6ZSJdLGY9WyJib3JkZXJUb3BXaWR0aCIsImJvcmRlckJvdHRvbVdpZHRo IiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iXSxrPVsiYm9yZGVyTGVmdFdp ZHRoIiwiYm9yZGVyUmlnaHRXaWR0aCIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1Jp Z2h0Il0scD1jLmVmZmVjdHMuc2V0TW9kZShhLApiLm9wdGlvbnMubW9kZXx8ImVm ZmVjdCIpLG49Yi5vcHRpb25zLnJlc3RvcmV8fGZhbHNlLG09Yi5vcHRpb25zLnNj YWxlfHwiYm90aCIsbD1iLm9wdGlvbnMub3JpZ2luLGo9e2hlaWdodDphLmhlaWdo dCgpLHdpZHRoOmEud2lkdGgoKX07YS5mcm9tPWIub3B0aW9ucy5mcm9tfHxqO2Eu dG89Yi5vcHRpb25zLnRvfHxqO2lmKGwpe2w9Yy5lZmZlY3RzLmdldEJhc2VsaW5l KGwsaik7YS5mcm9tLnRvcD0oai5oZWlnaHQtYS5mcm9tLmhlaWdodCkqbC55O2Eu ZnJvbS5sZWZ0PShqLndpZHRoLWEuZnJvbS53aWR0aCkqbC54O2EudG8udG9wPShq LmhlaWdodC1hLnRvLmhlaWdodCkqbC55O2EudG8ubGVmdD0oai53aWR0aC1hLnRv LndpZHRoKSpsLnh9dmFyIGQ9e2Zyb206e3k6YS5mcm9tLmhlaWdodC9qLmhlaWdo dCx4OmEuZnJvbS53aWR0aC9qLndpZHRofSx0bzp7eTphLnRvLmhlaWdodC9qLmhl aWdodCx4OmEudG8ud2lkdGgvai53aWR0aH19O2lmKG09PSJib3gifHxtPT0iYm90 aCIpe2lmKGQuZnJvbS55IT0KZC50by55KXtlPWUuY29uY2F0KGYpO2EuZnJvbT1j LmVmZmVjdHMuc2V0VHJhbnNpdGlvbihhLGYsZC5mcm9tLnksYS5mcm9tKTthLnRv PWMuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGEsZixkLnRvLnksYS50byl9aWYoZC5m cm9tLnghPWQudG8ueCl7ZT1lLmNvbmNhdChrKTthLmZyb209Yy5lZmZlY3RzLnNl dFRyYW5zaXRpb24oYSxrLGQuZnJvbS54LGEuZnJvbSk7YS50bz1jLmVmZmVjdHMu c2V0VHJhbnNpdGlvbihhLGssZC50by54LGEudG8pfX1pZihtPT0iY29udGVudCJ8 fG09PSJib3RoIilpZihkLmZyb20ueSE9ZC50by55KXtlPWUuY29uY2F0KGkpO2Eu ZnJvbT1jLmVmZmVjdHMuc2V0VHJhbnNpdGlvbihhLGksZC5mcm9tLnksYS5mcm9t KTthLnRvPWMuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGEsaSxkLnRvLnksYS50byl9 Yy5lZmZlY3RzLnNhdmUoYSxuP2U6Zyk7YS5zaG93KCk7Yy5lZmZlY3RzLmNyZWF0 ZVdyYXBwZXIoYSk7YS5jc3MoIm92ZXJmbG93IiwiaGlkZGVuIikuY3NzKGEuZnJv bSk7CmlmKG09PSJjb250ZW50Inx8bT09ImJvdGgiKXtmPWYuY29uY2F0KFsibWFy Z2luVG9wIiwibWFyZ2luQm90dG9tIl0pLmNvbmNhdChpKTtrPWsuY29uY2F0KFsi bWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0Il0pO2g9ZS5jb25jYXQoZikuY29uY2F0 KGspO2EuZmluZCgiKlt3aWR0aF0iKS5lYWNoKGZ1bmN0aW9uKCl7Y2hpbGQ9Yyh0 aGlzKTtuJiZjLmVmZmVjdHMuc2F2ZShjaGlsZCxoKTt2YXIgbz17aGVpZ2h0OmNo aWxkLmhlaWdodCgpLHdpZHRoOmNoaWxkLndpZHRoKCl9O2NoaWxkLmZyb209e2hl aWdodDpvLmhlaWdodCpkLmZyb20ueSx3aWR0aDpvLndpZHRoKmQuZnJvbS54fTtj aGlsZC50bz17aGVpZ2h0Om8uaGVpZ2h0KmQudG8ueSx3aWR0aDpvLndpZHRoKmQu dG8ueH07aWYoZC5mcm9tLnkhPWQudG8ueSl7Y2hpbGQuZnJvbT1jLmVmZmVjdHMu c2V0VHJhbnNpdGlvbihjaGlsZCxmLGQuZnJvbS55LGNoaWxkLmZyb20pO2NoaWxk LnRvPWMuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGNoaWxkLApmLGQudG8ueSxjaGls ZC50byl9aWYoZC5mcm9tLnghPWQudG8ueCl7Y2hpbGQuZnJvbT1jLmVmZmVjdHMu c2V0VHJhbnNpdGlvbihjaGlsZCxrLGQuZnJvbS54LGNoaWxkLmZyb20pO2NoaWxk LnRvPWMuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGNoaWxkLGssZC50by54LGNoaWxk LnRvKX1jaGlsZC5jc3MoY2hpbGQuZnJvbSk7Y2hpbGQuYW5pbWF0ZShjaGlsZC50 byxiLmR1cmF0aW9uLGIub3B0aW9ucy5lYXNpbmcsZnVuY3Rpb24oKXtuJiZjLmVm ZmVjdHMucmVzdG9yZShjaGlsZCxoKX0pfSl9YS5hbmltYXRlKGEudG8se3F1ZXVl OmZhbHNlLGR1cmF0aW9uOmIuZHVyYXRpb24sZWFzaW5nOmIub3B0aW9ucy5lYXNp bmcsY29tcGxldGU6ZnVuY3Rpb24oKXthLnRvLm9wYWNpdHk9PT0wJiZhLmNzcygi b3BhY2l0eSIsYS5mcm9tLm9wYWNpdHkpO3A9PSJoaWRlIiYmYS5oaWRlKCk7Yy5l ZmZlY3RzLnJlc3RvcmUoYSxuP2U6Zyk7Yy5lZmZlY3RzLnJlbW92ZVdyYXBwZXIo YSk7Yi5jYWxsYmFjayYmCmIuY2FsbGJhY2suYXBwbHkodGhpcyxhcmd1bWVudHMp O2EuZGVxdWV1ZSgpfX0pfSl9fSkoalF1ZXJ5KTsKOy8qCiAqIGpRdWVyeSBVSSBF ZmZlY3RzIFNoYWtlIDEuOC4yCiAqCiAqIENvcHlyaWdodCAoYykgMjAxMCBBVVRI T1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKICogRHVhbCBsaWNl bnNlZCB1bmRlciB0aGUgTUlUIChNSVQtTElDRU5TRS50eHQpCiAqIGFuZCBHUEwg KEdQTC1MSUNFTlNFLnR4dCkgbGljZW5zZXMuCiAqCiAqIGh0dHA6Ly9kb2NzLmpx dWVyeS5jb20vVUkvRWZmZWN0cy9TaGFrZQogKgogKiBEZXBlbmRzOgogKglqcXVl cnkuZWZmZWN0cy5jb3JlLmpzCiAqLwooZnVuY3Rpb24oZCl7ZC5lZmZlY3RzLnNo YWtlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGZ1bmN0aW9uKCl7dmFy IGI9ZCh0aGlzKSxqPVsicG9zaXRpb24iLCJ0b3AiLCJsZWZ0Il07ZC5lZmZlY3Rz LnNldE1vZGUoYixhLm9wdGlvbnMubW9kZXx8ImVmZmVjdCIpO3ZhciBjPWEub3B0 aW9ucy5kaXJlY3Rpb258fCJsZWZ0IixlPWEub3B0aW9ucy5kaXN0YW5jZXx8MjAs bD1hLm9wdGlvbnMudGltZXN8fDMsZj1hLmR1cmF0aW9ufHxhLm9wdGlvbnMuZHVy YXRpb258fDE0MDtkLmVmZmVjdHMuc2F2ZShiLGopO2Iuc2hvdygpO2QuZWZmZWN0 cy5jcmVhdGVXcmFwcGVyKGIpO3ZhciBnPWM9PSJ1cCJ8fGM9PSJkb3duIj8idG9w IjoibGVmdCIsaD1jPT0idXAifHxjPT0ibGVmdCI/InBvcyI6Im5lZyI7Yz17fTt2 YXIgaT17fSxrPXt9O2NbZ109KGg9PSJwb3MiPyItPSI6Iis9IikrZTtpW2ddPSho PT0icG9zIj8iKz0iOiItPSIpK2UqMjtrW2ddPShoPT0icG9zIj8iLT0iOiIrPSIp KwplKjI7Yi5hbmltYXRlKGMsZixhLm9wdGlvbnMuZWFzaW5nKTtmb3IoZT0xO2U8 bDtlKyspYi5hbmltYXRlKGksZixhLm9wdGlvbnMuZWFzaW5nKS5hbmltYXRlKGss ZixhLm9wdGlvbnMuZWFzaW5nKTtiLmFuaW1hdGUoaSxmLGEub3B0aW9ucy5lYXNp bmcpLmFuaW1hdGUoYyxmLzIsYS5vcHRpb25zLmVhc2luZyxmdW5jdGlvbigpe2Qu ZWZmZWN0cy5yZXN0b3JlKGIsaik7ZC5lZmZlY3RzLnJlbW92ZVdyYXBwZXIoYik7 YS5jYWxsYmFjayYmYS5jYWxsYmFjay5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KTti LnF1ZXVlKCJmeCIsZnVuY3Rpb24oKXtiLmRlcXVldWUoKX0pO2IuZGVxdWV1ZSgp fSl9fSkoalF1ZXJ5KTsKOy8qCiAqIGpRdWVyeSBVSSBFZmZlY3RzIFNsaWRlIDEu OC4yCiAqCiAqIENvcHlyaWdodCAoYykgMjAxMCBBVVRIT1JTLnR4dCAoaHR0cDov L2pxdWVyeXVpLmNvbS9hYm91dCkKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUg TUlUIChNSVQtTElDRU5TRS50eHQpCiAqIGFuZCBHUEwgKEdQTC1MSUNFTlNFLnR4 dCkgbGljZW5zZXMuCiAqCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvRWZm ZWN0cy9TbGlkZQogKgogKiBEZXBlbmRzOgogKglqcXVlcnkuZWZmZWN0cy5jb3Jl LmpzCiAqLwooZnVuY3Rpb24oYyl7Yy5lZmZlY3RzLnNsaWRlPWZ1bmN0aW9uKGQp e3JldHVybiB0aGlzLnF1ZXVlKGZ1bmN0aW9uKCl7dmFyIGE9Yyh0aGlzKSxoPVsi cG9zaXRpb24iLCJ0b3AiLCJsZWZ0Il0sZT1jLmVmZmVjdHMuc2V0TW9kZShhLGQu b3B0aW9ucy5tb2RlfHwic2hvdyIpLGI9ZC5vcHRpb25zLmRpcmVjdGlvbnx8Imxl ZnQiO2MuZWZmZWN0cy5zYXZlKGEsaCk7YS5zaG93KCk7Yy5lZmZlY3RzLmNyZWF0 ZVdyYXBwZXIoYSkuY3NzKHtvdmVyZmxvdzoiaGlkZGVuIn0pO3ZhciBmPWI9PSJ1 cCJ8fGI9PSJkb3duIj8idG9wIjoibGVmdCI7Yj1iPT0idXAifHxiPT0ibGVmdCI/ InBvcyI6Im5lZyI7dmFyIGc9ZC5vcHRpb25zLmRpc3RhbmNlfHwoZj09InRvcCI/ YS5vdXRlckhlaWdodCh7bWFyZ2luOnRydWV9KTphLm91dGVyV2lkdGgoe21hcmdp bjp0cnVlfSkpO2lmKGU9PSJzaG93IilhLmNzcyhmLGI9PSJwb3MiPy1nOmcpO3Zh ciBpPXt9O2lbZl09KGU9PSJzaG93Ij9iPT0icG9zIj8KIis9IjoiLT0iOmI9PSJw b3MiPyItPSI6Iis9IikrZzthLmFuaW1hdGUoaSx7cXVldWU6ZmFsc2UsZHVyYXRp b246ZC5kdXJhdGlvbixlYXNpbmc6ZC5vcHRpb25zLmVhc2luZyxjb21wbGV0ZTpm dW5jdGlvbigpe2U9PSJoaWRlIiYmYS5oaWRlKCk7Yy5lZmZlY3RzLnJlc3RvcmUo YSxoKTtjLmVmZmVjdHMucmVtb3ZlV3JhcHBlcihhKTtkLmNhbGxiYWNrJiZkLmNh bGxiYWNrLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthLmRlcXVldWUoKX19KX0pfX0p KGpRdWVyeSk7CjsvKgogKiBqUXVlcnkgVUkgRWZmZWN0cyBUcmFuc2ZlciAxLjgu MgogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAgQVVUSE9SUy50eHQgKGh0dHA6Ly9q cXVlcnl1aS5jb20vYWJvdXQpCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1J VCAoTUlULUxJQ0VOU0UudHh0KQogKiBhbmQgR1BMIChHUEwtTElDRU5TRS50eHQp IGxpY2Vuc2VzLgogKgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL0VmZmVj dHMvVHJhbnNmZXIKICoKICogRGVwZW5kczoKICoJanF1ZXJ5LmVmZmVjdHMuY29y ZS5qcwogKi8KKGZ1bmN0aW9uKGUpe2UuZWZmZWN0cy50cmFuc2Zlcj1mdW5jdGlv bihhKXtyZXR1cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciBiPWUodGhpcyks Yz1lKGEub3B0aW9ucy50byksZD1jLm9mZnNldCgpO2M9e3RvcDpkLnRvcCxsZWZ0 OmQubGVmdCxoZWlnaHQ6Yy5pbm5lckhlaWdodCgpLHdpZHRoOmMuaW5uZXJXaWR0 aCgpfTtkPWIub2Zmc2V0KCk7dmFyIGY9ZSgnPGRpdiBjbGFzcz0idWktZWZmZWN0 cy10cmFuc2ZlciI+PC9kaXY+JykuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSkuYWRk Q2xhc3MoYS5vcHRpb25zLmNsYXNzTmFtZSkuY3NzKHt0b3A6ZC50b3AsbGVmdDpk LmxlZnQsaGVpZ2h0OmIuaW5uZXJIZWlnaHQoKSx3aWR0aDpiLmlubmVyV2lkdGgo KSxwb3NpdGlvbjoiYWJzb2x1dGUifSkuYW5pbWF0ZShjLGEuZHVyYXRpb24sYS5v cHRpb25zLmVhc2luZyxmdW5jdGlvbigpe2YucmVtb3ZlKCk7YS5jYWxsYmFjayYm YS5jYWxsYmFjay5hcHBseShiWzBdLGFyZ3VtZW50cyk7CmIuZGVxdWV1ZSgpfSl9 KX19KShqUXVlcnkpOwo7 ------------OBg9i9L0LVC3BilRJbEwsz Content-Disposition: inline; filename=popoup.js Content-Type: application/javascript; charset=iso-8859-1; name=popoup.js Content-Location: http://www.gs1es.org/js/popoup.js Content-Transfer-Encoding: Base64 DQogICAgZnVuY3Rpb24gb3Blbl9wYXltZW50KHN6SW1wb3J0ZSxzekh0bWwpew0K ICAgICAgIA0KICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cHYnKS5z cmMgPSBzekh0bWw7DQogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bv cG91cF90aXRsZV9wYWdvJykuaW5uZXJIVE1MID0gc3pJbXBvcnRlOw0KICAgICAg IGl3ID0gKCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggPyBk b2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggOiBkb2N1bWVudC5i b2R5LmNsaWVudFdpZHRoICk7DQogICAgICAgaWggPSBnZXRoZWlnaHQoKTsNCiAg ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9wb3VwX3BhbmVsJykuc3R5 bGUud2lkdGggPSAiMTAwJSI7ICAgICAgICAgIA0KICAgICAgIGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCdwb3BvdXBfcGFuZWwnKS5zdHlsZS5oZWlnaHQgPSAoaWgg KyAyMCkgKyAicHgiOw0KICAgICAgIHBvc1kgPSBnZXRQb3NZKCk7DQogICAgICAg ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvcG91cF9wYW5lbF9jb250YWluZXJf cGFnbycpLnN0eWxlLnRvcCA9IHBvc1kgKyA1MCArICJweCI7DQogICAgICAgZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvcG91cF9wYW5lbF9jb250YWluZXJfcGFn bycpLnN0eWxlLmxlZnQgPSAgKGl3IC0gODAwKS8yICsgInB4IjsgICAgICAgICAg ICAgDQogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvcG91cF9wYW5l bCcpLnN0eWxlLmRpc3BsYXkgPSAiIjsgDQogICAgICAgZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJ3BvcG91cF9wYW5lbF9jb250YWluZXJfcGFnbycpLnN0eWxlLmRp c3BsYXkgPSAiIjsgDQogICAgfQ0KDQogICAgZnVuY3Rpb24gb3Blbl9wb3BvdXAo c3pIdG1sLCB0aXRsZSwgY29udCl7DQogICAgICAgDQogICAgICAgc2V0X3RpdGxl KHRpdGxlKTsNCiAgICAgICBpdyA9ICggZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 LmNsaWVudFdpZHRoID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdp ZHRoIDogZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCApOw0KICAgICAgIGloID0g Z2V0aGVpZ2h0KCk7DQogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bv cG91cF9wYW5lbCcpLnN0eWxlLndpZHRoID0gIjEwMCUiOyAgICANCiAgICAgICBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9wb3VwX3BhbmVsJykuc3R5bGUuaGVp Z2h0ID0gaWggKyAicHgiOw0KICAgICAgIHBvc1kgPSBnZXRQb3NZKCk7DQogICAg ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvcG91cF9wYW5lbF9jb250YWlu ZXInKS5zdHlsZS50b3AgPSBwb3NZICsgNTAgKyAicHgiOw0KICAgICANCiAgICAg ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9wb3VwX3BhbmVsX2NvbnRhaW5l cicpLnN0eWxlLmxlZnQgPSAgKGl3IC0gNTAwKS8yICsgInB4IjsgICAgICAgDQog ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rpdl9jb250YWluZXJfcG9w b3VwJykuaW5uZXJIVE1MID0gc3pIdG1sOyAgDQogICAgICAgDQogICAgICAgZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjY2VwdF9idXR0b25fcG9wb3VwJykuc3R5 bGUuZGlzcGxheSA9ICIiOw0KICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdjYW5jZWxfYnV0dG9uX3BvcG91cCcpLnN0eWxlLmRpc3BsYXkgPSAiIjsgDQog ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByaW50X2J1dHRvbl9wb3Bv dXAnKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgIGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCdjZXJyYXJfYnV0dG9uX3BvcG91cCcpLnN0eWxlLmRpc3Bs YXkgPSAibm9uZSI7DQogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nl cnJhcl94X2J1dHRvbl9wb3BvdXAnKS5zdHlsZS5kaXNwbGF5ID0gIiI7DQogICAg ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NlcnJhcl94X2J1dHRvbl9wb3Bv dXBfcmVsb2FkJykuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICAgICANCiAg ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9wb3VwX3BhbmVsJykuc3R5 bGUuZGlzcGxheSA9ICIiOyANCiAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgncG9wb3VwX3BhbmVsX2NvbnRhaW5lcicpLnN0eWxlLmRpc3BsYXkgPSAiIjsg DQogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvcG91cF9jb250Jyku dmFsdWUgPSBjb250Ow0KICAgIH0NCiAgICANCiAgICBmdW5jdGlvbiB2YWxpZGFf Y29udChvYmopew0KICAgICAgICB2YWxvciA9IHBhcnNlSW50KGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCdwb3BvdXBfY29udCcpLnZhbHVlKTsNCiAgICAgICAgaWYo b2JqLmNoZWNrZWQpew0KICAgICAgICAgICAgaWYodmFsb3IgPCAyKXsNCiAgICAg ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9wb3VwX2NvbnQn KS52YWx1ZSA9IHZhbG9yICsgMSAgIA0KICAgICAgICAgICAgfQ0KICAgICAgICAg ICAgZWxzZXsNCiAgICAgICAgICAgICAgICBhbGVydCgiTm8gc2UgcHVlZGVuIGFn cmVnYXIgbeFzIGRlIGRvcyBhY3RpdmlkYWRlcyIpOw0KICAgICAgICAgICAgICAg IG9iai5jaGVja2VkID0gZmFsc2U7ICAgDQogICAgICAgICAgICB9DQogICAgICAg IH0NCiAgICAgICAgZWxzZXsNCiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdwb3BvdXBfY29udCcpLnZhbHVlID0gdmFsb3IgLSAxDQogICAgICAg IH0NCiAgICB9DQogICAgDQogICAgZnVuY3Rpb24gb3Blbl9wb3BvdXBfcmVzdWx0 KHN6SHRtbCwgdGl0bGUpew0KICAgICAgIA0KICAgICAgIHNldF90aXRsZSh0aXRs ZSk7DQogICAgICAgaXcgPSAoIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGll bnRXaWR0aCA/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCA6 IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggKTsNCiAgICAgICBpaCA9IGdldGhl aWdodCgpOw0KICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwb3BvdXBf cGFuZWwnKS5zdHlsZS53aWR0aCA9ICIxMDAlIjsgICAgICAgICAgDQogICAgICAg ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvcG91cF9wYW5lbCcpLnN0eWxlLmhl aWdodCA9IGloICsgInB4IjsNCiAgICAgICBwb3NZID0gZ2V0UG9zWSgpOw0KICAg ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwb3BvdXBfcGFuZWxfY29udGFp bmVyJykuc3R5bGUudG9wID0gcG9zWSArIDUwICsgInB4IjsNCiAgICAgDQogICAg ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvcG91cF9wYW5lbF9jb250YWlu ZXInKS5zdHlsZS5sZWZ0ID0gIChpdyAtIDUwMCkvMiArICJweCI7ICAgICAgIA0K ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZfY29udGFpbmVyX3Bv cG91cCcpLmlubmVySFRNTCA9IHN6SHRtbDsgIA0KICAgICAgIA0KICAgICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY2NlcHRfYnV0dG9uX3BvcG91cCcpLnN0 eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ2NhbmNlbF9idXR0b25fcG9wb3VwJykuc3R5bGUuZGlzcGxheSA9ICJu b25lIjsgDQogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByaW50X2J1 dHRvbl9wb3BvdXAnKS5zdHlsZS5kaXNwbGF5ID0gIiI7DQogICAgICAgZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoJ2NlcnJhcl9idXR0b25fcG9wb3VwJykuc3R5bGUu ZGlzcGxheSA9ICIiOw0KICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj ZXJyYXJfeF9idXR0b25fcG9wb3VwJykuc3R5bGUuZGlzcGxheSA9ICJub25lIjsN CiAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2VycmFyX3hfYnV0dG9u X3BvcG91cF9yZWxvYWQnKS5zdHlsZS5kaXNwbGF5ID0gIiI7IA0KICAgICAgIA0K ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwb3BvdXBfcGFuZWwnKS5z dHlsZS5kaXNwbGF5ID0gIiI7IA0KICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdwb3BvdXBfcGFuZWxfY29udGFpbmVyJykuc3R5bGUuZGlzcGxheSA9ICIi OyANCiAgICB9DQogICAgDQogICAgZnVuY3Rpb24gZ2V0aGVpZ2h0KCl7DQogICAg ICAgIHZhciBkPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7DQogICAgICAgIHZh ciBiPSBkb2N1bWVudC5ib2R5Ow0KICAgICAgICB2YXIgd2hvPSBkLm9mZnNldEhl aWdodD8gZDogYiA7DQogICAgICAgIHJldHVybiBNYXRoLm1heCh3aG8uc2Nyb2xs SGVpZ2h0LHdoby5vZmZzZXRIZWlnaHQpOw0KICAgIH0NCiAgICANCiAgICBmdW5j dGlvbiBnZXRQb3NZKCl7ICAgICAgDQogICAgICAgICANCiAgICAgICBpZiAoZG9j dW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmICFkb2N1bWVudC5kb2N1bWVudEVsZW1l bnQuc2Nyb2xsVG9wKXsNCiAgICAgICAgICAgIHJldHVybiA3NTA7DQogICAgICAg fQ0KICAgICAgIGVsc2UgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBk b2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wKXsNCiAgICAgICAgICAg cmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7DQogICAg ICAgfQ0KICAgICAgIGVsc2UgaWYgKGRvY3VtZW50LmJvZHkgJiYgZG9jdW1lbnQu Ym9keS5zY3JvbGxUb3Apew0KICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9k eS5zY3JvbGxUb3AgOw0KICAgICAgIH0gICANCiAgICAgICAgDQogICAgIH0NCg0K ICAgIGZ1bmN0aW9uIHNldF90aXRsZShzelRpdGxlKXsNCiAgICAgICAgZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoJ3BvcG91cF90aXRsZScpLmlubmVySFRNTCA9IHN6 VGl0bGU7ICAgIA0KICAgIH0NCiAgICANCiAgICBmdW5jdGlvbiBjbG9zZV9wb3Bv dXAoKXsNCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvcG91cF9w YW5lbCcpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgIGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdwb3BvdXBfcGFuZWxfY29udGFpbmVyJykuc3R5bGUu ZGlzcGxheSA9ICJub25lIjsgDQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdwb3BvdXBfdGl0bGUnKS5pbm5lckhUTUwgPSAiIjsgIA0KICAgIH0NCiAg ICANCiAgICAvKmZ1bmN0aW9uIGNsb3NlX3BvcG91cF9wYWdvKCl7DQogICAgICAg IA0KICAgICAgICAgICAgaWYoY29uZmlybSgnvyBFc3RhIHNlZ3VybyBkZSBzYWxp ciB5IGNhbmNlbGFyIGVsIHBhZ28sIHNpIGhhIHJlYWxpemFkbyBlbCBwYWdvIGhh Z2EgY2xpY2sgZW4gInZvbHZlciBhbCBjb21lcmNpbyIgPycpKXsNCiAgICAgICAg ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHB2Jykuc3JjID0gIiI7 DQogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvcG91 cF9wYW5lbCcpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgICAgICAg ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvcG91cF9wYW5lbF9jb250YWlu ZXJfcGFnbycpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7IA0KICAgICAgICAgICAg ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwb3BvdXBfdGl0bGVfcGFnbycp LmlubmVySFRNTCA9ICIiOw0KICAgICAgICAgICAgICAgIHdpbmRvdy5mcmFtZXMu bWFpbmZyYW1lLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdudW1fcGVkaWRvJyku dmFsdWUgPSBwYXJzZUludCh3aW5kb3cuZnJhbWVzLm1haW5mcmFtZS5kb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnbnVtX3BlZGlkbycpLnZhbHVlKSArIDEgICAgDQog ICAgICAgICAgICAgICAgd2luZG93LmZyYW1lcy5tYWluZnJhbWUuZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJ2NrX3BhZ29fdGFyamV0YScpLmNoZWNrZWQgPSBmYWxz ZTsgICAgICAgICAgICAgICANCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0K ICAgIH0gKi8NCiAgICANCiAgICBmdW5jdGlvbiBjbG9zZV9wb3BvdXBfcGFnb19m aW5hbGl6YWRvKCl7DQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdw b3BvdXBfcGFuZWwnKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9wb3VwX3BhbmVsX2NvbnRhaW5lcl9w YWdvJykuc3R5bGUuZGlzcGxheSA9ICJub25lIjsgDQogICAgICAgIGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdwb3BvdXBfdGl0bGVfcGFnbycpLmlubmVySFRNTCA9 ICIiOw0KICAgICAgICB3aW5kb3cuZnJhbWVzLm1haW5mcmFtZS5kb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgncGFnb19maW5hbGl6YWRvJykudmFsdWUgPSAiMCI7DQog ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cHYnKS5zcmMgPSAiIjsN CiAgICAgICAgd2luZG93LmZyYW1lcy5tYWluZnJhbWUuc3VibWl0X2Zvcm0oKTsN CiAgICB9DQogICAgDQogICAgZnVuY3Rpb24gY2xvc2VfcG9wb3VwX3BhZ29fbm9f ZmluYWxpemFkbygpew0KICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn dHB2Jykuc3JjID0gIiI7DQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdwb3BvdXBfcGFuZWwnKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAg ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9wb3VwX3BhbmVsX2NvbnRhaW5l cl9wYWdvJykuc3R5bGUuZGlzcGxheSA9ICJub25lIjsgDQogICAgICAgIGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCdwb3BvdXBfdGl0bGVfcGFnbycpLmlubmVySFRN TCA9ICIiOw0KICAgICAgICB3aW5kb3cuZnJhbWVzLm1haW5mcmFtZS5zaG93X2Zp bigiTm8gc2UgaGEgcG9kaWRvIHJlYWxpemFyIGVsIHJlZ2lzdHJvLCBwdWVzIGhh IG9jdXJyaWRvIHVuIGVycm9yIGVuIGVsIHBhZ28iKTsNCiAgICB9DQogICAgICAg ICAgICANCiAgICBmdW5jdGlvbiBpbml0c19wb3BvdXAoKXsgICAgICAgDQogICAg ICAgJCgiI3BvcG91cF9wYW5lbF9jb250YWluZXIiKS5kcmFnZ2FibGUoKTsNCiAg ICAgICAkKCIjcG9wb3VwX3BhbmVsX2NvbnRhaW5lcl9wYWdvIikuZHJhZ2dhYmxl KCk7DQogICAgfQ0KICAgIA0KICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9u KCkgeyBpbml0c19wb3BvdXAoKTt9KTsNCg0KICAgIA0K ------------OBg9i9L0LVC3BilRJbEwsz Content-Disposition: inline; filename=boton_BUSCADOR.jpg Content-Type: image/jpeg; name=boton_BUSCADOR.jpg Content-Location: http://www.gs1es.org/imagenes/botones/boton_BUSCADOR.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAgEASABIAAD/4QWURXhpZgAATU0AKgAAAAgABwESAAMAAAAB AAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAc AAAAcgEyAAIAAAAUAAAAjodpAAQAAAABAAAApAAAANAACvyAAAAnEAAK/IAAACcQ QWRvYmUgUGhvdG9zaG9wIENTMiBXaW5kb3dzADIwMDg6MDI6MjUgMTE6Mjc6MDcA AAAAA6ABAAMAAAAB//8AAKACAAQAAAABAAAAQKADAAQAAAABAAAAEwAAAAAAAAAG AQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAA AgEABAAAAAEAAAEuAgIABAAAAAEAAAReAAAAAAAAAEgAAAABAAAASAAAAAH/2P/g ABBKRklGAAECAABIAEgAAP/tAAxBZG9iZV9DTQAC/+4ADkFkb2JlAGSAAAAAAf/b AIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwR EQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAEwBAAwEi AAIRAQMRAf/dAAQABP/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEA AQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIR AwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZE k1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm 9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUy gZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi 8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//a AAwDAQACEQMRAD8A57KyssZeQBkWgC2wACxwAAc7+Uliv6hl5dGJTk2C3JsZTWXW vDdzyGN3EbvbuchZf9MyP+Os/wCqci9Jvqxur4GTe7ZTj5NNtr4JhjHte921su+i FoUOHbosb3U+k9c6axtjsxuYx17sRxwr7LizIYC9+LbXtrsZfsa52zYs9tvVHuax jst7nguY1vqkuDTtc5jW/Sa130l1uR9Y+iNzsG77Y3J9Lq92abMfHfS2rGtZZXsy GbKvteTvezff6Vt/85/118X6w9IxRTj19Ua5rKHV22elksa7dknIc1mRQKs3GtbQ /wDRur/RW/4X8xRiUq1hf0S8eMnPcx9jbck11aWPDrC1h/4R/wBGv+2per1SKzuy 4u0pP6WH9/0X+l/62uhv67023pd9NHUsjELbeoOsoFZdZmtyZ+yG4vrfi/Qd6dn2 j9NX/wAF9NaT/rN0IX4gr6gbMbHzce+sWNyXWtrZRZRkOvffvp9T1n/zWHXVX6f+ kRMj+536K+rxRyc5ph197DAMOe9pg6tdDj+cpU5WWb6gci0g2MBBsd+8P5SbPy78 3Ovysi52Q+yx22x/JZud6I/ktbX+ah0f0in/AIxn/VNT6FbBD//Q5/K+zfa759Of VsmfXn6Tv3fahfq3/Bf+zC49JXRsP5xb9j2H6t/wX/swl+rf8F/7MLj0kv8AwxX2 PYfq3/Bf+zCX6t/wX/swuPSS/wDDFfY9h+rf8F/7MKdP2b16o9OfUZH8/wDvDxXG JJH/AKor7H//2f/tCkRQaG90b3Nob3AgMy4wADhCSU0EJQAAAAAAEAAAAAAAAAAA AAAAAAAAAAA4QklNA+0AAAAAABAASAAAAAEAAgBIAAAAAQACOEJJTQQmAAAAAAAO AAAAAAAAAAAAAD+AAAA4QklNBA0AAAAAAAQAAAAeOEJJTQQZAAAAAAAEAAAAHjhC SU0D8wAAAAAACQAAAAAAAAAAAQA4QklNBAoAAAAAAAEAADhCSU0nEAAAAAAACgAB AAAAAAAAAAI4QklNA/UAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZma AAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklN A/gAAAAAAHAAAP////////////////////////////8D6AAAAAD///////////// ////////////////A+gAAAAA/////////////////////////////wPoAAAAAP// //////////////////////////8D6AAAOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJA AAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAA00AAAAGAAAAAAAAAAAAAAAT AAAAQAAAAAwAYgBvAHQAbwBuAF8AYgB1AHMAYwBhAHIAAAABAAAAAAAAAAAAAAAA AAAAAAAAAAEAAAAAAAAAAAAAAEAAAAATAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAA AAAAAAAAAAAAAAAAEAAAAAEAAAAAAABudWxsAAAAAgAAAAZib3VuZHNPYmpjAAAA AQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAA AAAAQnRvbWxvbmcAAAATAAAAAFJnaHRsb25nAAAAQAAAAAZzbGljZXNWbExzAAAA AU9iamMAAAABAAAAAAAFc2xpY2UAAAASAAAAB3NsaWNlSURsb25nAAAAAAAAAAdn cm91cElEbG9uZwAAAAAAAAAGb3JpZ2luZW51bQAAAAxFU2xpY2VPcmlnaW4AAAAN YXV0b0dlbmVyYXRlZAAAAABUeXBlZW51bQAAAApFU2xpY2VUeXBlAAAAAEltZyAA AAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAA AAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAAAEwAAAABSZ2h0bG9uZwAAAEAA AAADdXJsVEVYVAAAAAEAAAAAAABudWxsVEVYVAAAAAEAAAAAAABNc2dlVEVYVAAA AAEAAAAAAAZhbHRUYWdURVhUAAAAAQAAAAAADmNlbGxUZXh0SXNIVE1MYm9vbAEA AAAIY2VsbFRleHRURVhUAAAAAQAAAAAACWhvcnpBbGlnbmVudW0AAAAPRVNsaWNl SG9yekFsaWduAAAAB2RlZmF1bHQAAAAJdmVydEFsaWduZW51bQAAAA9FU2xpY2VW ZXJ0QWxpZ24AAAAHZGVmYXVsdAAAAAtiZ0NvbG9yVHlwZWVudW0AAAARRVNsaWNl QkdDb2xvclR5cGUAAAAATm9uZQAAAAl0b3BPdXRzZXRsb25nAAAAAAAAAApsZWZ0 T3V0c2V0bG9uZwAAAAAAAAAMYm90dG9tT3V0c2V0bG9uZwAAAAAAAAALcmlnaHRP dXRzZXRsb25nAAAAAAA4QklNBCgAAAAAAAwAAAABP/AAAAAAAAA4QklNBBEAAAAA AAEBADhCSU0EFAAAAAAABAAAAAE4QklNBAwAAAAABHoAAAABAAAAQAAAABMAAADA AAAOQAAABF4AGAAB/9j/4AAQSkZJRgABAgAASABIAAD/7QAMQWRvYmVfQ00AAv/u AA5BZG9iZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgTExUTExgR DAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQO Dg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM DAwMDP/AABEIABMAQAMBIgACEQEDEQH/3QAEAAT/xAE/AAABBQEBAQEBAQAAAAAA AAADAAECBAUGBwgJCgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQB AwIEAgUHBggFAwwzAQACEQMEIRIxBUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFD ByWSU/Dh8WNzNRaisoMmRJNUZEXCo3Q2F9JV4mXys4TD03Xj80YnlKSFtJXE1OT0 pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3EQACAgECBAQDBAUGBwcGBTUB AAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNTFWNzNPElBhaisoMH JjXC0kSTVKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG 1ub2JzdHV2d3h5ent8f/2gAMAwEAAhEDEQA/AOeysrLGXkAZFoAtsAAscAAHO/lJ Yr+oZeXRiU5NgtybGU1l1rw3c8hjdxG727nIWX/TMj/jrP8AqnIvSb6sbq+Bk3u2 U4+TTba+CYYx7XvdtbLvohaFDh26LG91PpPXOmsbY7MbmMde7EccK+y4syGAvfi2 17a7GX7Guds2LPbb1R7msY7Le54LmNb6pLg07XOY1v0mtd9JdbkfWPojc7Bu+2Ny fS6vdmmzHx30tqxrWWV7Mhmyr7Xk73s33+lbf/Of9dfF+sPSMUU49fVGuayh1dtn pZLGu3ZJyHNZkUCrNxrW0P8A0bq/0Vv+F/MUYlKtYX9EvHjJz3MfY23JNdWljw6w tYf+Ef8ARr/tqXq9Uis7suLtKT+lh/f9F/pf+trob+u9Nt6XfTR1LIxC23qDrKBW XWZrcmfshuL634v0HenZ9o/TV/8ABfTWk/6zdCF+IK+oGzGx83HvrFjcl1ra2UWU ZDr3376fU9Z/81h11V+n/pETI/ud+ivq8UcnOaYdfewwDDnvaYOrXQ4/nKVOVlm+ oHItINjAQbHfvD+Umz8u/Nzr8rIudkPssdtsfyWbneiP5LW1/modH9Ip/wCMZ/1T U+hWwQ//0Ofyvs32u+fTn1bJn15+k7932oX6t/wX/swuPSV0bD+cW/Y9h+rf8F/7 MJfq3/Bf+zC49JL/AMMV9j2H6t/wX/swl+rf8F/7MLj0kv8AwxX2PYfq3/Bf+zCn T9m9eqPTn1GR/P8A7w8VxiSR/wCqK+x//9k4QklNBCEAAAAAAFUAAAABAQAAAA8A QQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAAAATAEEAZABvAGIAZQAgAFAA aABvAHQAbwBzAGgAbwBwACAAQwBTADIAAAABADhCSU0EBgAAAAAABwAIAAAAAQEA /+E5HWh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2lu PSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0 YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iMy4xLjEtMTExIj4K ICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAy LzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6 YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eGFwTU09Imh0dHA6Ly9ucy5hZG9i ZS5jb20veGFwLzEuMC9tbS8iPgogICAgICAgICA8eGFwTU06RG9jdW1lbnRJRD51 dWlkOjU0OTY0OTIxOENFM0RDMTFCM0U1QUQzOTcyRTFGMkQxPC94YXBNTTpEb2N1 bWVudElEPgogICAgICAgICA8eGFwTU06SW5zdGFuY2VJRD51dWlkOjU1OTY0OTIx OENFM0RDMTFCM0U1QUQzOTcyRTFGMkQxPC94YXBNTTpJbnN0YW5jZUlEPgogICAg ICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6 YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eGFwPSJodHRwOi8vbnMuYWRvYmUu Y29tL3hhcC8xLjAvIj4KICAgICAgICAgPHhhcDpDcmVhdGVEYXRlPjIwMDgtMDIt MjVUMTE6MjY6MTArMDE6MDA8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFw Ok1vZGlmeURhdGU+MjAwOC0wMi0yNVQxMToyNzowNyswMTowMDwveGFwOk1vZGlm eURhdGU+CiAgICAgICAgIDx4YXA6TWV0YWRhdGFEYXRlPjIwMDgtMDItMjVUMTE6 Mjc6MDcrMDE6MDA8L3hhcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDx4YXA6Q3Jl YXRvclRvb2w+QWRvYmUgUGhvdG9zaG9wIENTMiBXaW5kb3dzPC94YXA6Q3JlYXRv clRvb2w+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2Ny aXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDov L3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogICAgICAgICA8ZGM6Zm9ybWF0 PmltYWdlL2pwZWc8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+ CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAg IHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3Av MS4wLyI+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hv cDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SGlzdG9yeS8+CiAgICAg IDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjph Ym91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUu Y29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3Rp ZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAw MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29s dXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8 dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAg ICAgICA8dGlmZjpOYXRpdmVEaWdlc3Q+MjU2LDI1NywyNTgsMjU5LDI2MiwyNzQs Mjc3LDI4NCw1MzAsNTMxLDI4MiwyODMsMjk2LDMwMSwzMTgsMzE5LDUyOSw1MzIs MzA2LDI3MCwyNzEsMjcyLDMwNSwzMTUsMzM0MzI7NEM5RTk1RTc1REUwOTk2MEY3 QTgxMjQxRTA4RTUzRDc8L3RpZmY6TmF0aXZlRGlnZXN0PgogICAgICA8L3JkZjpE ZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIK ICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlm LzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NjQ8L2V4aWY6 UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+ MTk8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNw YWNlPi0xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOk5hdGl2ZURp Z2VzdD4zNjg2NCw0MDk2MCw0MDk2MSwzNzEyMSwzNzEyMiw0MDk2Miw0MDk2Mywz NzUxMCw0MDk2NCwzNjg2NywzNjg2OCwzMzQzNCwzMzQzNywzNDg1MCwzNDg1Miwz NDg1NSwzNDg1NiwzNzM3NywzNzM3OCwzNzM3OSwzNzM4MCwzNzM4MSwzNzM4Miwz NzM4MywzNzM4NCwzNzM4NSwzNzM4NiwzNzM5Niw0MTQ4Myw0MTQ4NCw0MTQ4Niw0 MTQ4Nyw0MTQ4OCw0MTQ5Miw0MTQ5Myw0MTQ5NSw0MTcyOCw0MTcyOSw0MTczMCw0 MTk4NSw0MTk4Niw0MTk4Nyw0MTk4OCw0MTk4OSw0MTk5MCw0MTk5MSw0MTk5Miw0 MTk5Myw0MTk5NCw0MTk5NSw0MTk5Niw0MjAxNiwwLDIsNCw1LDYsNyw4LDksMTAs MTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMjAsMjIsMjMsMjQsMjUsMjYsMjcsMjgs MzA7ODU0NTY4ODdEMDg1RUEwMkFFRUI3MzFENzhCNTVDODE8L2V4aWY6TmF0aXZl RGlnZXN0PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8 L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pv/uAA5BZG9iZQBkQAAAAAH/ 2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEC AgICAgICAgICAgMDAwMDAwMDAwMBAQEBAQEBAQEBAQICAQICAwMDAwMDAwMDAwMD AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA//AABEIABMAQAMB EQACEQEDEQH/3QAEAAj/xAGiAAAABgIDAQAAAAAAAAAAAAAHCAYFBAkDCgIBAAsB AAAGAwEBAQAAAAAAAAAAAAYFBAMHAggBCQAKCxAAAgEDBAEDAwIDAwMCBgl1AQID BBEFEgYhBxMiAAgxFEEyIxUJUUIWYSQzF1JxgRhikSVDobHwJjRyChnB0TUn4VM2 gvGSokRUc0VGN0djKFVWVxqywtLi8mSDdJOEZaOzw9PjKThm83UqOTpISUpYWVpn aGlqdnd4eXqFhoeIiYqUlZaXmJmapKWmp6ipqrS1tre4ubrExcbHyMnK1NXW19jZ 2uTl5ufo6er09fb3+Pn6EQACAQMCBAQDBQQEBAYGBW0BAgMRBCESBTEGACITQVEH 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 nu9M9WTw9cfw/EP4/Xr/2Q== ------------OBg9i9L0LVC3BilRJbEwsz Content-Disposition: inline; filename=cabeceraIzq2.jpg Content-Type: image/jpeg; name=cabeceraIzq2.jpg Content-Location: http://www.gs1es.org/imagenes/cabeceraIzq2.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAgEASABIAAD/4Q/QRXhpZgAATU0AKgAAAAgABwESAAMAAAAB AAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAc AAAAcgEyAAIAAAAUAAAAjodpAAQAAAABAAAApAAAANAACvyAAAAnEAAK/IAAACcQ QWRvYmUgUGhvdG9zaG9wIENTMiBXaW5kb3dzADIwMDg6MDI6MjUgMTE6MzY6MDMA AAAAA6ABAAMAAAAB//8AAKACAAQAAAABAAAAdKADAAQAAAABAAAAYwAAAAAAAAAG AQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAA AgEABAAAAAEAAAEuAgIABAAAAAEAAA6aAAAAAAAAAEgAAAABAAAASAAAAAH/2P/g ABBKRklGAAECAABIAEgAAP/tAAxBZG9iZV9DTQAC/+4ADkFkb2JlAGSAAAAAAf/b AIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwR EQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAYwB0AwEi AAIRAQMRAf/dAAQACP/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEA AQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIR AwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZE k1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm 9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUy gZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi 8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//a AAwDAQACEQMRAD8AyFZovrfV9lyifRmarAJNbj3/AJVT/wDCVqfpYwIymMNuIfbb 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 +qfQ+jHfiUbr/wDuRad9n9lzv5v/AK2jLmIAaepAxyO+jzf1G+pNmLYzq/Vq9l7d cXGdyz/hrh/pP9HX/g/667POzRiNrhhtsueK6qwQJcQXavd7W/RVlVOpY999TBUy u0NeHPptA2vbH0d+1/pv/deqeacpXLr0psYYxEgJfL1vRVHUGlr/ALUz7I+t21ws I2kkbwa7foWN2o/2vF9H1/WZ6P8ApNw2/wCf9FYd2HlUvpe6prRbl1urxN5exu1l m6Xlvt9T+SzYrB6fnbLLQxjXXZAudjscBtaGen7LSwtba5/6R+1ihGSeo4brw/Fs Sw4tCJgX46f1o/pf47onMq3MLXsNL2OsNu8RDNuoH5zPd7n/AJiJVkUXFwqsZYWf SDXAxP721YlfSM8VW1ljRNeU1hD90m/Y6vVzW/uq9i4FlGdXcGtbW3FbS7bH0w7d wjGcydY1stnixAGp2aNfa6KSSSla6kkkklP/1fVUy+VkklP1SkvlZJJT9UpL5WSS U/VKS+VkklP1SnXyqkkp+qkl8qpJKfqpJfKqSSn6qSXyqkkp/9n/7RR4UGhvdG9z aG9wIDMuMAA4QklNBCUAAAAAABAAAAAAAAAAAAAAAAAAAAAAOEJJTQPtAAAAAAAQ AEgAAAABAAIASAAAAAEAAjhCSU0EJgAAAAAADgAAAAAAAAAAAAA/gAAAOEJJTQQN AAAAAAAEAAAAHjhCSU0EGQAAAAAABAAAAB44QklNA/MAAAAAAAkAAAAAAAAAAAEA OEJJTQQKAAAAAAABAAA4QklNJxAAAAAAAAoAAQAAAAAAAAACOEJJTQP1AAAAAABI AC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAG AAAAAAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD///////////// ////////////////A+gAAAAA/////////////////////////////wPoAAAAAP// //////////////////////////8D6AAAAAD///////////////////////////// A+gAADhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAAAAA4QklNBB4AAAAAAAQAAAAA OEJJTQQaAAAAAANFAAAABgAAAAAAAAAAAAAAYwAAAHQAAAAIAGwAbwBnAG8AdABp AHAAbwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAdAAAAGMAAAAA AAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAG51bGwA AAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcA AAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAGMAAAAAUmdodGxvbmcA AAB0AAAABnNsaWNlc1ZsTHMAAAABT2JqYwAAAAEAAAAAAAVzbGljZQAAABIAAAAH c2xpY2VJRGxvbmcAAAAAAAAAB2dyb3VwSURsb25nAAAAAAAAAAZvcmlnaW5lbnVt AAAADEVTbGljZU9yaWdpbgAAAA1hdXRvR2VuZXJhdGVkAAAAAFR5cGVlbnVtAAAA CkVTbGljZVR5cGUAAAAASW1nIAAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEA AAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcA AABjAAAAAFJnaHRsb25nAAAAdAAAAAN1cmxURVhUAAAAAQAAAAAAAG51bGxURVhU AAAAAQAAAAAAAE1zZ2VURVhUAAAAAQAAAAAABmFsdFRhZ1RFWFQAAAABAAAAAAAO Y2VsbFRleHRJc0hUTUxib29sAQAAAAhjZWxsVGV4dFRFWFQAAAABAAAAAAAJaG9y ekFsaWduZW51bQAAAA9FU2xpY2VIb3J6QWxpZ24AAAAHZGVmYXVsdAAAAAl2ZXJ0 QWxpZ25lbnVtAAAAD0VTbGljZVZlcnRBbGlnbgAAAAdkZWZhdWx0AAAAC2JnQ29s b3JUeXBlZW51bQAAABFFU2xpY2VCR0NvbG9yVHlwZQAAAABOb25lAAAACXRvcE91 dHNldGxvbmcAAAAAAAAACmxlZnRPdXRzZXRsb25nAAAAAAAAAAxib3R0b21PdXRz ZXRsb25nAAAAAAAAAAtyaWdodE91dHNldGxvbmcAAAAAADhCSU0EKAAAAAAADAAA AAE/8AAAAAAAADhCSU0EEQAAAAAAAQEAOEJJTQQUAAAAAAAEAAAAAThCSU0EDAAA AAAOtgAAAAEAAAB0AAAAYwAAAVwAAIaUAAAOmgAYAAH/2P/gABBKRklGAAECAABI AEgAAP/tAAxBZG9iZV9DTQAC/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJ DBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwM DAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwM DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAYwB0AwEiAAIRAQMRAf/dAAQA CP/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAA AAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJx gTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXi ZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX 5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAz JGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSF tJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A yFZovrfV9lyifRmarAJNbj3/AJVT/wDCVqfpYwIymMNuIfbbXPvqJ/lf+ebULIw3 1vZ6R9aq7+ZsaPpfyNv5trfz61AZRlobHY/uyH/dxbNEa7/wbF1LrHNxskhuU0D0 L59lrPzGus/883f9asW7/i8Y9nWMtjwWvbRDmnQgh7VlWYTmYtXTHN+0dQe7exgO lDT9Jrnfyvz2/QXQ/VO3Dx+pZDS/1LMXEP2nKJ9p2uadv8r0W+31EzDluQiNQb22 4R/lB/q5/wDoissfST2/lw/3m39dc+932XouE4tys2xpJadpDAdrPcPo77P/AD2g fUXMyGZGf0nLe591D97dxLvon0bo3fym1rn2ZnXeo9Yt630/GffYx5FZDPUbWI21 sj99tSsdHy+pYP1rpyep1Ox7c8lloc3YCLPYHhv/ABzWKxerFWlNj62fbcv61V4G Jc6t7662NG9zW7jvf7tiiPqb9agQTlNgc/p7P/IoX1pw8jN+uD8XFj17W1hknaJF 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 2aNfa6KSSSla6kkkklP/1fVUy+VkklP1SkvlZJJT9UpL5WSSU/VKS+VkklP1SnXy qkkp+qkl8qpJKfqpJfKqSSn6qSXyqkkp/9k4QklNBCEAAAAAAFUAAAABAQAAAA8A QQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAAAATAEEAZABvAGIAZQAgAFAA aABvAHQAbwBzAGgAbwBwACAAQwBTADIAAAABADhCSU0EBgAAAAAABwAIAAAAAQEA /+E5Hmh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2lu PSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0 YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iMy4xLjEtMTExIj4K ICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAy LzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6 YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eGFwTU09Imh0dHA6Ly9ucy5hZG9i ZS5jb20veGFwLzEuMC9tbS8iPgogICAgICAgICA8eGFwTU06RG9jdW1lbnRJRD51 dWlkOjVDOTY0OTIxOENFM0RDMTFCM0U1QUQzOTcyRTFGMkQxPC94YXBNTTpEb2N1 bWVudElEPgogICAgICAgICA8eGFwTU06SW5zdGFuY2VJRD51dWlkOjVEOTY0OTIx OENFM0RDMTFCM0U1QUQzOTcyRTFGMkQxPC94YXBNTTpJbnN0YW5jZUlEPgogICAg ICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6 YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eGFwPSJodHRwOi8vbnMuYWRvYmUu Y29tL3hhcC8xLjAvIj4KICAgICAgICAgPHhhcDpDcmVhdGVEYXRlPjIwMDgtMDIt MjVUMTA6NDI6MDIrMDE6MDA8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFw Ok1vZGlmeURhdGU+MjAwOC0wMi0yNVQxMTozNjowMyswMTowMDwveGFwOk1vZGlm eURhdGU+CiAgICAgICAgIDx4YXA6TWV0YWRhdGFEYXRlPjIwMDgtMDItMjVUMTE6 MzY6MDMrMDE6MDA8L3hhcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDx4YXA6Q3Jl YXRvclRvb2w+QWRvYmUgUGhvdG9zaG9wIENTMiBXaW5kb3dzPC94YXA6Q3JlYXRv clRvb2w+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2Ny aXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDov L3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogICAgICAgICA8ZGM6Zm9ybWF0 PmltYWdlL2pwZWc8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+ CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAg IHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3Av MS4wLyI+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hv cDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SGlzdG9yeS8+CiAgICAg IDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjph Ym91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUu Y29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3Rp ZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAw MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29s dXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8 dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAg ICAgICA8dGlmZjpOYXRpdmVEaWdlc3Q+MjU2LDI1NywyNTgsMjU5LDI2MiwyNzQs Mjc3LDI4NCw1MzAsNTMxLDI4MiwyODMsMjk2LDMwMSwzMTgsMzE5LDUyOSw1MzIs MzA2LDI3MCwyNzEsMjcyLDMwNSwzMTUsMzM0MzI7OTYxMkI3NjkyRTg1MjdFREM4 OEVGQjRCMkE1RTEwQkI8L3RpZmY6TmF0aXZlRGlnZXN0PgogICAgICA8L3JkZjpE ZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIK ICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlm LzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MTE2PC9leGlm OlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9u Pjk5PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6Q29sb3JT cGFjZT4tMTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpOYXRpdmVE aWdlc3Q+MzY4NjQsNDA5NjAsNDA5NjEsMzcxMjEsMzcxMjIsNDA5NjIsNDA5NjMs Mzc1MTAsNDA5NjQsMzY4NjcsMzY4NjgsMzM0MzQsMzM0MzcsMzQ4NTAsMzQ4NTIs MzQ4NTUsMzQ4NTYsMzczNzcsMzczNzgsMzczNzksMzczODAsMzczODEsMzczODIs MzczODMsMzczODQsMzczODUsMzczODYsMzczOTYsNDE0ODMsNDE0ODQsNDE0ODYs NDE0ODcsNDE0ODgsNDE0OTIsNDE0OTMsNDE0OTUsNDE3MjgsNDE3MjksNDE3MzAs NDE5ODUsNDE5ODYsNDE5ODcsNDE5ODgsNDE5ODksNDE5OTAsNDE5OTEsNDE5OTIs NDE5OTMsNDE5OTQsNDE5OTUsNDE5OTYsNDIwMTYsMCwyLDQsNSw2LDcsOCw5LDEw LDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDIwLDIyLDIzLDI0LDI1LDI2LDI3LDI4 LDMwOzE1ODI4RjEyMTcxNkMxRTdBMkZCREI5MjdFMzUwQkI4PC9leGlmOk5hdGl2 ZURpZ2VzdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4K PC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz7/7gAOQWRvYmUAZEAAAAAB /9sAhAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AgICAgICAgICAgIDAwMDAwMDAwMDAQEBAQEBAQEBAQECAgECAgMDAwMDAwMDAwMD AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwP/wAARCABjAHQD AREAAhEBAxEB/90ABAAP/8QBogAAAAYCAwEAAAAAAAAAAAAABwgGBQQJAwoCAQAL AQAABgMBAQEAAAAAAAAAAAAGBQQDBwIIAQkACgsQAAIBAwQBAwMCAwMDAgYJdQEC AwQRBRIGIQcTIgAIMRRBMiMVCVFCFmEkMxdScYEYYpElQ6Gx8CY0cgoZwdE1J+FT NoLxkqJEVHNFRjdHYyhVVlcassLS4vJkg3SThGWjs8PT4yk4ZvN1Kjk6SElKWFla Z2hpanZ3eHl6hYaHiImKlJWWl5iZmqSlpqeoqaq0tba3uLm6xMXGx8jJytTV1tfY 2drk5ebn6Onq9PX29/j5+hEAAgEDAgQEAwUEBAQGBgVtAQIDEQQhEgUxBgAiE0FR BzJhFHEIQoEjkRVSoWIWMwmxJMHRQ3LwF+GCNCWSUxhjRPGisiY1GVQ2RWQnCnOD k0Z0wtLi8lVldVY3hIWjs8PT4/MpGpSktMTU5PSVpbXF1eX1KEdXZjh2hpamtsbW 5vZnd4eXp7fH1+f3SFhoeIiYqLjI2Oj4OUlZaXmJmam5ydnp+So6SlpqeoqaqrrK 2ur6/9oADAMBAAIRAxEAPwCub2F+pW6HPYu+9u5na/8Aoh7crK5NjfcVWQ2LvClp P4pl+ot0VxUVFdT0lxV5Xr7PsAM1iYm1XC1lKv3MZWWNeZeWd22/eRz3yLBGeZNC peWrN4cW526fCjN8Md7D/wARLlhSlYJT4T1QSbZuVpcWf7i32RhttS0MoGpraQ8S BxaF/wDRYx/p07hQiLuzaOU3LX4vq7tHJYrFdw4vGYqDqntCXI00+xe4di1MBG18 Nmd4lY4apZYkWLbm4piUCH+G5Ew+KOSAKbHvtntFtec58mWk0/IU00h3LbgjC82u 8Vv8YlitclaElr6yXJP+N2via2WQ2vrGW8kh2beZkTfkRRbXGoGG6hI/TRpfPGIJ j5fpS6aArbB/wnoxOUwPy8+Q+DzmOrcPmcR0Y+NyuKyVPJSZDHZCk7K2zDVUdZTT KskNRBKpDKR/iLgg+582C+stztoNy227jn2+eFZI5I2DJIjZVlYYII4fzz1E/NkE 1tGlvcwtHcRzFWVhRlYAggg8COrFP51HfO+sivQXwS6IzmRxvc/yV39tqpyVRg83 V4HIYnaFLnosbgKeqy2Ongr8XRbh3daeaVGUigw1UDdSVYyvZG/TgjPex/l/q/wd E+x28Y+o3C4UGCJTxzmnp8h/MjoKv5FfcW/sBv75a/DbuHdG4tw756y3lVbqxT7l zuWz1RE2Ay8nWvYdHQVmdqKjIrjoMvjMVUwx6gumtZ9ILNelg7BpoXJLA/7B6d3+ GN47O+gUCN1pgAce4cPkT+zoof8ANi/00d0fzTtqfHbpnsPcO0twbm6+6u2bh6OD sfdm1NqjcOTg3fulqvNR7clkGNkfHVMYd1pZ5nRYzYhlAZu9b3YjRyCQBxx0t2fw YNpe5njBQMxPaCaYGK/Ppng/k1/zUYZ6eafvbbUcENRTzTu/yV7e0JBFMkkzOP7t 8qsakn/D376O7/35/wAaPVjve0kEC3NafwL/AJ+k13p8pPm3/NR+Te4egfifmN47 d6e28+TxWJ2/t7c1VsjBTbQxFVHg8r2Z3Nu7DTioq8fn64XpaIvUQpDLDBT0s9S0 ryVklnupTHFXR+z8yet29pYbRaJcXiq0x8yKmvEKo+Xr/OnQvdYfyhfmZ8U+3+uf kbu/u7rSt656i3rs7s7tuv292T2VQ5uXrrYmQoNw71jmpcptjH024YqDblDVotLU VQjqYoyllD6Pbi2c0TrIZBpBBOTwHHpmXebG7gktkt2EjqVWqrSpwPPFT0DGW7K/ mI/zme5d/wBP0Xn81190Zs2paOg28u98r111/tHbmUnqV23BvzJbcWXMb53/ALjo aVp5oft6yOAK4ijp4FDO2WuL128M0jHzoPz9T0+Itt2SCM3ChrhvOgYk+dK4AH+q vSe7D+LP82L+WXgou8MF2jnZ9h7brKWTcOT637K3F2HszCLVVCRxyb+633jj6Klq Nt1dSyxzVZx89PA7qZJoGZH9+aK7tR4gftHoaj8x1aO72fdG+naECQjFVCn8iPP5 V6umqP5wW2Kj+WtW/MGh25RwduRZhOlz12auKoxdH33VUPkgme9QldJsoYq+4kjb TVSYxDBq8t5faz6wfS+NTv4U+f8Am8+iQbM/70FkW/Rpq1f0P8/l9vVJnT/wq/mY /wAz3DV/fO7u3cjSbNzs2XO3Ny9v753bhdvbpfy1MFfS9fbA2nj8jQYvaCVsb0hm joqOgJDLCKgJJZEkNzdAyF+0+pP8h6dHk99tW1MLdIAXFKhQCR9pPE+fr0I3/DGf 8yC39zf9LnWn9zNPn0/6aez/AO63lt9l4v7sf3Qv5PsuP+Aujw+i/wDZ93+hufh1 in2npr9/bZXX4DeJ/pVr+2vX/9AvA2z1vRVFD2xhtt5Te3SVdK2E7A2V/F3TsDqD JZmFqcQNlYRDHVJTzn7jbedqIWx+QMf2lbHHU61OPX745uuIrnkfcN3h273FiHjW V34QNlukcR1VEZqVLDsvrRGE0OrxoGaLSRkJ9HtMbR75bWj3HLrHRPFq/WtWcUpq FK0PdBMRoemiQBqgorfvUWX2vldvNtOom7F2Xv8Al/4xju/b2OqJf72GSRYzgKrE wCepwu/MTLIIcjh5f34JRrTXA8crCHljnuw3mx3Rd8iXaeYdrX/dhazuo+moK+Ms hostnIBqguV7HXtbTIGQF257FPZz2psWN3t90f8AF5UUnxP6BUVKzLweM5ByKqQe jdbj6YrsP1lsb4rV2Km7V+Tm586u68Bt7F5CF8X8b9s5QQvmcPm85T+dTFnUQ1WS oZnXHUkp+5QCTQ9VBO0+4Vvf848ye9Vtersns7Z2xtp55IyJN+uI6iKWGFqZhJEc EyAzyL+kxKahCN7nYZItn27k2SA3nNksniIisNNjG1NQZxXDfE6k6ATrAqFMlxv8 qLdXTnXHyO7cxNRumLdm6ekfiPVx949+1GSEW3czBtvfG3K5sVTxASDLUXXmJp2o hl55DVSU9OkDl/ECkm+wa823qc0827pYrtPJu63BuNu2op+paxsavcSMaeEbtv1z bIvhq7tIoXX3AL3X/daQ7HtFpKbverakdxdVxKwFFjA/F4Q7BIx1EAKa6cVY4juH 50fJr5ib9+enxz6W3Z2XufB7tyWK2jWUHXDdjbc60wkmEqMPs7b4x9RGtBDnsVsm tWUSEeRauqlqbLJKD7nAPPLM1xEhJrjHD0/l0EGh2+1so9uupwikAnNCxrk/ZX/V joYvh/2t8jehP5rXWvZvyv6+z3Ve8flDmMntXe9JuLZ42DSZ2l7J+227jdx47FTF aWnpE7CwmMeokiaxlEpaxkN7wvJHdq8q0Z+Plx/2embyK1uNolis5A6RCooa005p /vJPUn+aP1F2H3z/ADfNzdRdTmkXsXe2A6sodqvXZuTblKldQdSxZuoeXOQpJLjt GOxcxV1BJayj9Xv10jSXhRPiNP8AB17aporfZkmm/sgWriv4qcOlf1T/ACnP5jPT m/sN2xvGrwo251zQbu3fXfwnu3JZ7Impw2yNy1OFSkwr0wTKPJnlpVMJIDqTyPr7 2lpcowdiKCp4/Lqk+8bbNE0MddbED4KcSK5+zo2n/CbM7V/uB8nyjY/+/Mm6utTW K8sRzDbPj21lTiHELfvrjRnZ8hdlupmNm5C+3ttppl/iqOkfM+vxbXj4elvsrXP8 qdWz/wA1ibOwfy7/AJXvtwVJyDdYTw1H2ia5v4FUZvDQbpJX8QDbMlYZSOVi1Ecj 2ru6i3lpxp0T7SFO5Werhr/n5fz6Jb/wnym2W3wq3TBg2x/98Yu8N5yb/jjenOVE 82L26u1pq6NGNUlDJtqGFaUuAjPHNouQ/tjb9PgGnHUa9LuY9f166q6PDFP51/n1 aB8ztz7I2d8TPkdnuxWof7nU/S/YtJl6Wvmggiyn8V2tk8VRYSBqmWGN8hnMhWxU lKgYPJUTIqeoj2qmKrFIW+HSeiqyWR7y2WL49a0/bx/LrQvraPe9J/L2wtX5qltl ZT5jbogaJRMIf744P4+bXFNMrMoheSWgy1So03IMZvb03IaN9OD+HX/OnUgAxnc2 /wB+CAfs1n/Y638fi5/dL/Za+gF2G2NbZydN9bR7cOIlimx38Ki2hiI6ZaeWGySa FWzk2fyBtXqv7P4qeHHThpHUe3ev6q48SuvW1a/aeh39udJ+v//RFXZP8pn+Z5sH cEG4cL8dcfUt9tU43LYbLdldR1uA3Pt/IJ4cttncmN/v3GmSweWp/TLGSGRgssbJ LHG6gTmPlGDmjapNq3BJEGtZIpY2CTW86GsVxA+THNG2VbgRVGDIzKZP27my02u6 W6t7hWwVZGVikiNho5Fp3IwwR5YIIYAg9HUH8ur5VfHnb+a3N1/8duxc5uPsnOwJ UdcVnbPS9LTdIYqlopaPI7k27uLJ7syOJ3bveJMlUQ4PItDFK1ABDXJH+75ca+ff Z73W91d02/Z+aE2m22naLYlb9Ks27yM4ZIJ4I3SS2tD4aNdwBmUTVkty3ZokfZPc LkXli2nu9subuS4u5M25BAtFAozo7KySy0ZhE5FSlFk00OpCb0/ls/PDrPr/ACvW 3x36b3HuPcHaCPmu7++tz9hdVYTfO6Dky9QNj4eKff09dh8fSpOy5OdZnNTUNJ4p HVzJ7E3L3tRzTzhzRZc3e62y2dptWzERbRs1vIstnb+H2/WSkAJK7FQYEKjw0C61 UqF6Ldx5+5b2nbZtq5W3Saa6u6vd3kiOk0mrPhKCCVABIdqmpJ0kgk9F+68/li/z SOsNkd3bN2x8eEpE7x2Ng+udyZCHtbqKKen2hjd4YneGXxVMg3ryu45MJBRzkMn+ SPKhuJCPeR4t7sCUaKlhnI/z9RrJum0yvbu1ziNiwGluNKDy8uP29bRP8tr4s1nx A+IvWvVG4aSlpewauOu3x2j9pPBVxf3+3bMtdk6D72mZ6etG3MelLilmjd4pUoAy MVIPsztovBhVD8XE/b0FNzuxeXksyn9Pgv2Dh+3j+fRIv52Xwy7k+Su0OhOw/jns ut3l271PvjKUZocPXYXFZZNrbgoYMxDl0rs5lMPSePbm7NqULoom8qmrZkU+ohi9 heURtGtXB6X7HfQWr3EV0+mB19CcjHlXiCeqxvmT8UP5mva/zHm+VPUfRPZG0N01 uxOm6rF7i2xu7r3CZvae6qXprbOC3xiqGrO9IaiOfGbkqMrRNKupJYSdDMhB9pp4 bp5vFRCDQeY40z59GljebXDZC0nnVkDNggkEaiQeHpQ9R9gdTfz6Id/7Bm3Xk/lH PtSHfWzpt1QZPuPZdZjJtsRbkxkm4YslRrveVqvHyYdZlniCOZIiyhSTY6VL/Uuo tSo8x1uWfl/wpdCxa9Jp2njTHl69Ch3/APys/m38O/kFuH5Ify6czWZjbmWyucyG L2ttXJYak31szE7gqRkslsrK7X3gV2t2HseCvfTRR6qmpSOGLyUwkhWoa8lrPDIZ LY4/n9nzHTVvu1je2y2u5LRhTJrQ086jKn1/w+XSw+PW0v5znyK7w2FtT5d03aGK +MeQytXRd34XOUnUuwdv7l2LNtzM0uR21XY/aSYzcubodxyVMVJPDTB1YSln06Cy 7jF7JIolB8Lz4DHTdy2yW1vI1mVN1SqkaiQajOcCnHoANw/y3P5oH8vrs/ce7fhP uPcW+tk5moWKmzHW+T242ZyWBpslVPgML2V1fveVsfnMniKeo/4E00OQhGuV0kg8 jx+2zbXVu5MBqvy/yg9KV3PatyiRL9AsgHnWgPmVYcK+mOg+3V8bP50v8wbMYDaX euF7Hx20cdlIqhZ+24dtdS9abeq41MR3DWbP25RYzIbiyFJC7eGWHF19QpZliaMO 591aK9uCFkBp88DpyO62PbVZ7dlMhH4asx+VTw/aOr+M7/Kq6hyn8vjHfB+lyAp6 /B0q7uw3aD0QGQXvK9TkKnsOro4WDyUOTyNZNRz0etmGEl+1V7okgMDaIbfwP5/P 16Dy7vOu4m/pxwV/o+n7PP1z1R/tbo7+eb8GcfkulekaTd+4Ot48hkK3C1fXkXW3 Zmy71Ukj1ddtVd+UUu59mxZGedp5KKSloQagtJ4i5Z2QhL6AFEFV+VCP59Hzz7Bu BE85Al89WpT+dMH7c9Cb/o6/n+/6Ov8ASf8A3v7m/v8Af34+1/uR/fDpj7r+4v8A dXV/F/7l/d/3W1/3h/a8Pg+/1fuaNHPu2ncdOqp1V4VHCnTPi8u+L4Xhp4enjRuN fXjw/Lr/0t/j37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691/9Pfyd2VrA8WJtx+Bf37r3WNne/BPFhx xc2v7917olnyt/mI/D/4T00C/Ivu/bWzNw1tCcjidg0MVdursfM0ZYpFVUGx9tUm Uz6UM8ilUqqiGCkLKR5eDYQbJytv3MLEbTtzyxg0L4VAfQuxC1+QNfl0X3u62G3/ AO5VwFenw8WP2AVPVJ29f+FT3xZxdbLT7C+N3yD3nRxzMkeRzlb11siOpgAGmpip P7w7lrY1dvokqRsFtex4EhW/szvjorXO6WsbHyGt6fsUDoPSc52StSO0lYep0j/K T1P2H/wqX+JGaraWl7C6A+QmwKaepWKfLYsbA31Q0MDMqfeVFPR7kwmXmii1FnSC lll0r6VZiF91ufZrfo1Y2u42srDyOtCf2qR+09bi5ysWIEtrKv2Ub/KOrvfi588f if8AM/E1GS+N/d+0ew62gpErc1tGOWowPYG3qZjCjT53Ye4qbF7rx1JHNOsZqWpT TNIwCyNcXjreeXN75fkWPd9ukhDGgbijf6V1qp/bX16EVluVjuC1tLhWNMjgR9oO f8nRuFkf8tx/rLb/AGJtx7JOl3Xnkbizf1+lvfuvdcondmsTcWJ/H+9/X8+/de6k e/de697917r3v3Xuve/de697917r3v3Xuv/U375f1/7A2/5JHv3XutYr+cN/OS33 1pvum+Df8v2et3h8m89l6bbO/t7bHwcO+sxsbMZDXBT9XdcYWCmy0OZ7frGIauf7 eoTBQ3TT96WNHL3IfIVteWzcy80AR7KilkV20BwP9Ec4pEPLILnh28Qfvu/yRS/u 3azqvSaEgaqH+FR5t6+g+fDWZ3F8eMDtPseHCfIbNdo/Mb5xdk5WpyGW+MPQu7H3 bndu7mmkkqq3HfI7vakot8Zev36jK7ZPbG1KSrrMTEH+9zFBIpjSX4d2mntGl2iG DbuWIhT6mddAZeAMEJ0gL5K8hAb8KN0EGtVSXTds8+5Ma+GhqQf+GPQ59VTh5sOg h3v15hqDJTYPcMvQfXG8M0k8WF6H6N2zun5I9pYjJR2gg2zns7/eTdeLwmdlkhvJ BJuusykDyHy0cf6EWWt5KyCWH6qe3XjPOyW8RH8SjSpYfPwwp8mIz0nlhVW8N2iS Q8EQGRh9pqc/7atPLopm4tuZHb1c9HX4zPYuVAA9NuPEnCZNJQWEiTY96iolh0sh HqIIIIIBHsRQTxzqGjkRl9VNR+3pEVZfjUj7RT+XUrY2+d7dYbvwXYHW279ybB31 teuiyO3d4bQzNdgNxYatiYMs1BlcdNBUxBiLOhJilT0yKykg1urW1vreS0vLdJbZ xRlYBlP2g/8AFjyPW45pIZElikKyLwINCOt5j+Sn/Omk+Xa03xh+VWcweO+S+No2 fr7fHiosFj++sNRQSTVtHPjqeOmxWO7TwlPCZqilpFigytGGqKeGN4ahBjd7h+3v 7hJ3jZY2bZ2PeuSYWJxk1Jjb8JOVOCTUEyNy9v8A9dSzvWAvB8J4axT/AI8PQceI 62ReCR/S3+++nuJc06Fv+HrLCLMf9b/D/D8j3uuade6k+99e697917r3v3Xuve/d e697917r3v3Xuv/V2v8A+bz8xch8Ivgz2x2ztTJwYztLcK4/q7p+eVUlkpt/75Mt HBnKeB2Czz7P29T5DMqrBoy2PAcFSQRbyPsK8xcyWFhMtbNSZJf9ImSP9saJ/tui jfL87dts86H9Y9q/6Y+f5Cp/LrTH2zhd8fCH4u9Rbw2M2Yyn8x3+Zw1S/XWd/fqO yOmPjTu7P/3epMztPJVjPVYztz5S7tyKoM8JBVwYVp0RophLK8+zvbcyb3fwXOle UdmHevCOWdBUqwHGK3UGicNVK1B6AKLJttnbvFU7teVKn8Sxk0x/TkPnxAr0q6jp 6fq3fO7P5d3x17KoevanrzYW5t6/zUfnDTY+pqZqDFbex1Hluzur9u5vHum6KXpT q6oqI8AuCoqukq+wt71HirCY9EaJlvhfW8HNe72jTCWVY9tsq0BJJEchU9plkpr1 kEQxCq9X+nMEj7VaTBGVS1zN5imWUHiFX4aChduPRZ8plNuYrqmq7B69fdPxO+IT 19V1t1XjNsQYeb5bfMvce22gG8szursCmTGPSYPEPVK+cq1lh2Vtg1FNh6HG5bIx SFjdYZpL5LW60X/MNBJKWLfS2it8AVMjUadgoZZKGRnRSOkRaNbfxYS0G31otKeL KRxJb0H4vwrgAE9FOwey9+dvruVugvixuzce3UK0NRVbO2T2d3ZnsE5dmjqMhvSi pKyiptxVSoWmkgoMfBIdRSmRbKp+93abX4Z3bfo1lP8AG8cSn7EwaeWWY8BU9IVh kuSzW1oxUfwh2/af8OBny6BTce2dz7NzNdtveO2tw7Q3Hi5BFktvbqweT23nsdLb UI63DZqkocjRu6cgSRLqHI49mkNxb3MazW0ySRHgVYMD9hBI/n0wyMjFJEKv6EEH 9hz0LfXnUfyeioMH3n1L1N30cZtLJ0+69tdvbE6z7AyGG2/mNr1f39LuHF7xw+Aq cRFJgq2g8rTLOY4zGRJxqHsvvtw2Nmk2vcL+11SKVaJ5EDEMKaSpNc19K+nSiKC9 VRd28MulTUOqmgI86gdfSr/lsfLJ/mz8LOkPkHkkoKfeO5MBVbf7Hx+OkV6eh7G2 Xk6va27vHGkFOtLDlsjizkYIAv7NNWxrqYDUcRubtj/q7zDuO1KSYY3rGT5xsAy/ mAaE+ZB6lrab07ht9tdEjWwo3+mBof2nNPQ9Hop5YpGYxSxyBWeNzE6SBJEPrjYq TpdT9VPI/PsNjjQ8ejEdTPdut9e9+691737r3Xvfuvde9+691737r3X/1rIP+FNG XyvYfY/8u/4tY6rmNH2R2VuLNZTFA6IK3I5ncPXvWG26qWT1NroqbdmWRAFIAnZj cge5s9oY1tLXmze2GYbcKp9KB5GH/GE6BPNzNLNtVmD2u5J/Mqo/wn9vQF5yvwm7 P56/yo7DpMfBJsf+Wl8St/bn6m2pVwQy7b2vXfHforbuC2njaHHTSfbUOKwm+98V uSp0iCqK2JGIAJ9mEaSwe2uy2hci43e/RZWHxMJpSxJPqyIqn5dJWKvzJezU/TtI GKDyGhBT9hYnqm3F5bduE/lg7u3MlfFN2X89vnbB1/vfdNQRNuLcmyOl9l4fsbIY fIVkrrMMNnO8OzaLJVkeopU1FFEZP0ofcgSR28nOcEWj/Etr2zWgr2h5XKA/aIkK jGK9ECtINndgf1bq60k+ZCgNT83av5dGixPxY2l8ov5ye0PgbW1tfQfHv425KTo9 MOmQqqZ06r+NezqnP9mw4eWmE8uNzXbvY9DmMnkJ47zvW5yeYyeRUKkr7zcbJ7fz 8yhQd1vB41af6JcNSOvqIo9IUcKKAOlq2Ud5v6bYx/xSHsp6Ki935s1SftPQMdh/ zJPnv353LU9Z/DzdXbXTHWlBlc3troH4v/EGhy2zKTBbB2tNk6nFU9Lt3rWji3Fu jcT4GifIZeqlafVJ5WCx08aohlZ8n8sbXty3u/xQXF6wDT3F0Q1XalTqkOlRU6VH H1JJr0nm3fcrm4aGwZ44gSEjjqKAfJck0yT0WLtbLfIOX5MdQb3/AJkeA78y882b 66/vhH3hgNxbe33uvpXau76eLPY7Gnc+HoKzJ4yDHvXU/kWKXXLJIjMzn2c2UW1D ZdxtuUJbYdkmnwWVlWZkwTQmhrSg8sdI52ufq7eTdhITVa6wQxQHPEAnz/z9XJfz Jtz/AM0PbHaO+Pk18T/kF2lvT+X7lcZSV3Su6/h/vqom6Q6q6ppdu4vFQbJ3X11s GoGP2XX7VhDxVtTXY4xXHmaaF1MMEf8AKMPJUtnBs2+7ZDHzSrESrdJSWSQsTqWR 8tq4hQwPoDxJ/u77ys0t5ZXTttpHYYj2KtOBVeFPOo/PozH/AAnX23uD5IfDf5e/ G+p7g7g6n25gu+OsN6Uu6emt2x7N3zTUG8sCtRu/b+I3X9jkchiKLesWxft6+en0 VSxVLyU8sU37gKPdd4tq5g2Ld1soZpHtpE0yrqQlCQpK1AJTXUA4wKgjHSvlRGu9 vv7Q3EiJ4imqGhoRmhzxpmmc4PVsX8ifb2M2h8cvk/s/BitTBbQ/mGfLjauDiyOU yWarYMLt3c2AxGLgqstmKmtyuSqIqGkQST1M0s8z3eR2dmJAnuFM9xuuz3EtPFk2 u2ZqAKKslSaAAD7AKDy6OuWlCWl5GtdC3UgFTXAoBk8ertPYE6EXXvfuvde9+691 737r3Xvfuvde9+691//XsW/4UzY7Jdc9t/y6fk9RU9QaHr7f+5sZkchpJo6TIba3 V1r2bg6WZlIdZq+k2/k3QfQrTvYgj3N/tA63VlzZs5I1ywqQPWqyRk/kWWv2joEc 3gxT7VeeSuR+whv8AP7OgeyuCxu3v553zc6sxdTFU4T+Yj8Le1MR1DmZGgXDbsyv dvQ+2N47fmx2Rnlp6Spx+T3FsTKUcEsUjJJVKseq5NlqyyTe23L164pLtW5RmQcS oilZTUeRAdTT06YMarzHuMHEXVuwU+R1oCP+Okfb1S3tan3FvT+Vdu3HY2nhXfHw Y+buE7W3LgpAqZrDbB752RiOuqnMVENpZf4Xg+5euKCirJNIiglrow5JMamQ5zFB zvbu7Vtdz21olNMF4XLgfa0Tkj1pw6D0as+yuqn9W2udRB40dQtfyZQD6dGSq/lb ivir/N42T/MGpMPlM10n8h6ii+RCpFQRVdblOq/kTs+o293FiMGgmigrtydX78qs 9i5YNccv8RwhhkVDILkybLJvnIVxyu0gG52f6HGgEkD1iJ9Fkj0EH+F8cOlbXqWW +R7qFJt5e/Hmsgo4+ZVqg/MdOW8f5Q/y+pe08j3V/LT3jhfkj0hnMvk9y9Rd1/H/ ALw2js7e+0sFu37uaPaO7Kas3ntPdO0t0YTEZRqGu8TsktPfzeGR5aWJu3575fks V2vnG2a13BVCyxTwsyMUp3r2sGBI1Cox5VABO5divlnNxtDiW3JJV0dQVBrg5BBA NPs9OHSk/m97K7B3bvz+V38e93bv27l/kRiPiP1/1B2u26O1du7gba3buR3dBjMj T9m9gHPZnHY6oTIStNWV9bVuphDTl3X1FrkG6sraz503a2gcbT9c8sWmMjVEFYjw 0oCcUAUAU4dO73HI8my2ryKb0QqrVYGjE/iappnia/PobP5bfwW/mHfAP5T4HuXv b+G/Gb4hbUTNZX5K7z3h3H15WdL9jddz7Xy8SYNdv4PdWepd/Z3O1LU4xjrj2qYJ ApWSMnxyF3N/M3KfM+yPZbYpu9+kKiBVicSxvqGdRUaQBWo1UNfzD20bbum2Xiz3 IENitfEJZdDLQ4pU1JPDHVnX/Ca/CYbIYP8AmE9wbEwNTgOoOzPlc1H1RRS47+HQ U21Nuw7kz+MxlNTeST7YYjBb/oKd4BxTFdFyQQAf7syyo/Km3Xcuu+gsQZDWve2l SfzKE/OtejnlMIw3W5hQrC8/aOGACRT/AHro8P8AJQSROmvmGJI5Ii38yz5puFkj eMsjb5xRV1DqpaNgeCOD+PYa57KtfbEQwNNptBgg/wCh5/P5cel/LwIt7+oIrdy/ 4R1cx7BHQg697917r3v3Xuve/de697917r3v3Xuv/9Daa/nRfELLfMv4Fdp7E2Zt 87j7V2BPi+3+qMbTiL+I5HdOyWmbK4HGtK8SvW7o2VX5THwxFrS1FRGLFtJAy5B3 5eX+ZrG6nk0WUlYpT5BX8z8lYKx+QPRLv9gdw2yeJFrMvco9SPL8xUfn1p/bR7D3 18w/if0FurqCsyrfzE/5Wc61u36WkasO++0/iHtbLRbj2zntvwu0VZuTcnx13Okd BXYSA/fNgqmeXTKZ2RZ1uLS22DfNzgvgv9Ud7FGONEdywoQx/CswqVc41AenQFSW W/sbaS3b/dtZcPVowagj1KHBHGlT59d9gdpUVH2BkP5ovxf2Djd9/HjvLETbO/mH fGANPHtbrve3ZsQou2+q9+0FIZchRdR9xZBf7ybI3aaeWjxuekVRLHW0iU51a2TN apyVvNyYt3tmD2Fx+KRI8xSIeBkjB8OWOoJTyKmvW5pwJm3iziDWsgpPH5KWHcre YVuKNwDedegVyGF2rU9cbi2Vsai3j8sfgwman3z15XbcqcKPmF8J9w7jWKbOw5fY 0n3VXRUFXNEKPcNO0EvX28zTQZKlyOOyZEkS+OWYXkV1O0dhzNo0OHr9LeKOFHGC fNDUTw1KlHTpIyxmJo4gZ9trVaU8WEnjUZ+wj4G4gg9V653AYbbVblm2J21hNx4g cxz0MW79g7kyKOiB6fJ7Ty1DD4MjTm8c8cdbXQB0OieVNLEXwyvcrH9XtzI9M10S IP8ASuDkHy7R8wOixgsZbwp6jHCqn8wf9n7eg5McbeYuiOahi1QXUO07soDNOW1G V2UcliSfa0YoAKAcKD/Nw6ZpUk+Z6fIJNzbllw21qWbce5J6zI0OL25tiOryeXaq zGRqoaLFY3B4V5poTka+vnjhgjhjDvI6qvJ9slLa3WWZlRAASzUAooFSSacAMmvV gGYBFqSSAB8+HD19Ovpzfysvidkfhb8GOjukNy0NBQ9iU2Frt69qLj2WVP8ASNv3 IVG5NwUU9Ug01tRt2OsgxPmUsjpj10Epp94dc572vMHMe5bjExNqW0x1/gQaVx86 aqepPUwbNZHb9ut7Z6eJSrf6Y5P7OH5dWFU0UURbwxxxKxZ3EaKgeRiC0jBQt3b8 k8n2GBxHRoMdTPe+t9e9+691737r3Xvfuvde9+691737r3X/0d++Xh7j6gH/AKFH v3XutRj+bz/KM7b6n7bqf5j38uQbuw2/cXuiTsPs7rPrRBDuva25limq8x231VQ0 pM+boM5N5G3JttYKo1BqZpoYZqeaopkm/kXnixvbD+qXNhjazZNEcknwlfKOQ/hp /oclRSgBIIU9Affdkngn/e20hhKGqyrxB82X7fxL+fr1RLtD5d9b7y7FyXduP3HU /Br5T5rHV+A7A3d15sP/AEifED5BDJxzJu+n7z6DNPmMxsE71qARnMfi8Tura9dU yNP/AAWglDSe5Gn5fvbazTbWgG6bEpDRq7+HdQU+EwTiiuFHwlmjcDGth0GkvoZJ jcBzbXhBDFV1RPX+NOKg+YGpT/CDnoIN3YHZGd3Nkt9bK2rszrndGIrYKul3f8R/ kZs2DrOCvOiapzO0uue28zt7tfZS1UKNMtDS5qCKmmbxRU9OgWFDC2e8WFbSWSSa 3ONF3Awk+StJGGien8RTPmxOSnkEPieIqhHGdUTjTX5K1GWvoCKeg6Kpvvc82ZrZ YKffG8N6UErmrqshvTFUWLzEuTdy1RJMafcm7pK278+d60tISSV5uRDa2y26UW3j jPohOkD0GBT7KDpC8jOfiZh6nj/hPSCghmqailoqWnnq6yuqYKKioqSGWprK6tqZ FhpqOipKdJamrrKmZgsUUStJI5CqCSB7UswQMzNRQKknAA8yT5D16p5inxE+Xn+X n1ue/wAjr+SnuLqnPbZ+aPzD2pLg+wsVoyvQ/Sucjhav2TPU0w+27M7Ex7JIaDes MEzfwfFOxkxOs1NSqVoijpcfPcf3Div45uX9hm1WZxNKOD0/0ND5pX4m/HwHbXUP +XeXnhdNwv0pMMon8P8ASYevoPLzz1svd2dy0vT2M2eYduZDeW7Oxd643r7Ym1KH JYvBjM7myVDksoqZDcObmgxWFx1NjcTPLJK/kkYqscUUkjqvvGjmrmiLlm32zTZP c7he3S21vErLHrlZWejSSEJGoVGJY1PAKrMQOp29veQZ+fLvfi26xWGy7Vt8l7eX DpJL4VvG8cdUhiDSSu0kqKqiiipZ3RVLdNeyO/8AG1dFuIdvbdqOgs/tXcMO2clQ dhZzDRbdy9XWYOTctDX7K3yJqTAbvxdRhaWeV2gKT0zU0yTxRmM+0+184QSxXn9Z LFtnvLecRMty6CNyYzKrQT1EcyFAxOmjKVYOq6elu++2t1Bc7b/Ujdk5l267tDcK 9lFKZ4VWYQOl3aUaa1kWVkUBwUkEkbRuwcdCYe1esF2evYTdjbFGwnYRpvU7swI2 o8hmNMIl3B9//CmmNSDHoEuryDTbVx7O/wCsOwjbRvP76tP3Qf8AR/Fj8LjSniat Fa4pWtcceguOTubjvh5YHK+4/wBZBxtfp5vqAKVr4OjxKUzXTSmeHTHP3BtQZPbk 1Dn9jV+xM5sreW95t9x9g7bSkpcVs+owsVXXUGO80j5zARR5OVq7JQTClxjQos5v Mlkr8ybcJ7Jory0faprWacz/AFEQASEoGZVrV4wHJklU6IqAP8Q6MI+R97Npuiz7 ZuEe/wBtuFraC0NlOWaW6EpRHkoBFMxjAhgdfEn1MYxSNulZtnf+xN6VOWo9n702 nuqrwMsEOcpdubhxGbqcPNVRmWmiykGNq6mXHyVEYLIJQhYA2vY+zGx3jadze4i2 3dLe4khIDiORHKEioDBSStRwrSvRNu3LXMWwxWU++bDeWcFyGMTTwyRLKFNGMZdV DhTg6a0PHpXezHok697917r3v3Xuv//S375f1f7Bv+hffuvdcf7X+sR/0KffuvdV efMX+T18FvmvWVO6ux+r32R2dURTK/a3UFZBsPeVbNI7SCp3HFS0VVtnedQkzEiT LY+snCkqsiA+xfsPPXMfLwWGzvfEsx/oUo1oP9LU1X/akdE+4bFtu41aaHTKfxLg /n6/n1RV2F/wlOyQyJfqn5l0jYgxXipezeoWqMtDOZW/abKbT3fQ0VRAsNvUKKJi 1+APclWnvWNAF9sH6gxWOSgP5MrEftPQbl5KOomC/AH9Jc/yI/wdOHW//CVFRWrL 3F8y5p8cklM5x3VvU0GNrqiPVIayE5reG681T0pZNHjkFBLY6roePdLz3scqRYcv gP6ySEgf7VVWv7erRcmAkePfkj+iv+Uk9X0fDv8AlQ/B/wCD9RFnenOpYMr2LHH4 27b7NrBv3sdRdGP8Jy2Sp48btNZCg1rhqPHK9vWGNz7jLfudOYuYwY9wviLX/fad kf5gfF9rFj0JLDZdu26jW8FZv4my35E8PyA6se/rf/G/PP8Aif8AX9hWlDXo16L1 8jdhb139tbblLtDA9c75p8Juujze6es+0sdQz7b7A2/FR11O+KpM/VYXPz7Q3Jjq 2oirKGvipnAlhMUn7cjewVzvs+67xYWUe2WljdpFcq8trdKpiuIwrDQshSQwSqxD xyBTldLdrHqUPavmXl7lreN1m33cd12+W4snit7/AG+RxPZTl0YSNCssIuoJEVop oGkXtfWvcgHRBN49O9nbLy3Wedr9j7Wx1Hvj5ddWZnZfx/j3rnd6bI2fBtnq7sim y9TXbor8JLR4TIbsrHSUrQ444yinp6ZtMravcN7tyxzBtd1sF5NtMCxXXMtpJBt4 nknggEVpdK7NK0ZEbTNQnRF4UbKhoxr1k7y5z9ydv+3c4bXBzFdyXG38i7jDdbyb WG0u7trjcbB4kS3SbVMlsgZR4s/1EyPMAUUL0M8/QHeIwm7d0UW1to4TJdgfIbEd q5jqDbG7MXQf3d2tiOvV2ZD/AHa7AyWzchicLv3K7gpYMvla2ix0Mk0Xkggqkkdp XFTcnc2C23HcItvtYp7zeku3s4pVXw4kt/BHhXDQsiXDyKs0rpEpI1IkgYljHy+5 Xt295suy3O77hPabZytJt0W5T27uZriW9+qPj2Ud0kktnFA72tvFLcOqsFlkhZQs ahlgviN3xRba31t6swO1qY1vXvzZ2/t2am39Pn46rI/IWfY2Z2VRz5DKYXFZILS1 mLrKatq5ogWki85UCUKA/Ze2vN0NpulpNbW667PfY4yLhpKtuRgeBSzRq3aUdZHI 4jXTup0Md299Pbq6v9gv7W7vW8Pc+Up5gbNIaJsa3cV2ypHNIlXWSJ4Y1agVvD1d lSa/q7ovcGxO79o71hwe3sNtXG/FHa/VGZ/g8tHTzTb7w27qfLSRvQUlPD95R0+O 8vjq2J5cqANRvJGw8pXW0c07duiWsEVhHy/FaPooCZ0mD/CAKqFrRj6kUz1B/Nvu JY8xcg7zy/Lf3c+7y843G5RmXUyi1ltjF8bMSrs+nUgHAAkmg6OJ7kjqE+ve/de6 97917r//09/Y/X+z9D9fr+f949+691x/P+6vx/r/AJ9+6911+P8AdX0/2H0/3r37 r3XZ/H+b+h+v+v8Aj/D37r3XX9f83/vv6+/deHXQ+h/zP+w+n+x9668fPrsfj/Nf QfT/AIj/AA978utHh178/wC6vr/sfz/vPvR4H7Ot+XXJfr/Y/wCQfr72OHXvPrn7 917r3v3Xuve/de697917r3v3Xuve/de6/9k= ------------OBg9i9L0LVC3BilRJbEwsz Content-Disposition: inline; filename="flecha naranja_abierta.jpg" Content-Type: image/jpeg; name="flecha naranja_abierta.jpg" Content-Location: http://www.gs1es.org/imagenes/botones/flecha%20naranja_abierta.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAgEASABIAAD/4QPaRXhpZgAATU0AKgAAAAgABwESAAMAAAAB AAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAc AAAAcgEyAAIAAAAUAAAAjodpAAQAAAABAAAApAAAANAACvyAAAAnEAAK/IAAACcQ QWRvYmUgUGhvdG9zaG9wIENTMiBXaW5kb3dzADIwMDg6MDE6MjkgMTI6MzA6MDgA AAAAA6ABAAMAAAAB//8AAKACAAQAAAABAAAADKADAAQAAAABAAAADAAAAAAAAAAG AQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAA AgEABAAAAAEAAAEuAgIABAAAAAEAAAKkAAAAAAAAAEgAAAABAAAASAAAAAH/2P/g ABBKRklGAAECAABIAEgAAP/tAAxBZG9iZV9DTQAC/+4ADkFkb2JlAGSAAAAAAf/b AIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwR EQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgADAAMAwEi AAIRAQMRAf/dAAQAAf/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEA AQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIR AwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZE k1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm 9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUy gZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi 8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//a AAwDAQACEQMRAD8A6Sii7r12RdkXvqey3ZUAfYwbbX/Q/wCtJftPqP7P+wfaG7vt Hofbd3t2bd/89/39Q65+zvtt32X19u79b9H+a3a7ufz/AKS0v+x7/m7+d9kn/rvq /wDpX/wPZ/wazgJGRAJEwfVP1+v1+n0u0TERjKURLHIfq8f6sDHWKXFU+L1cT//Z /+0InlBob3Rvc2hvcCAzLjAAOEJJTQQlAAAAAAAQAAAAAAAAAAAAAAAAAAAAADhC SU0D7QAAAAAAEABIAAAAAQACAEgAAAABAAI4QklNBCYAAAAAAA4AAAAAAAAAAAAA P4AAADhCSU0EDQAAAAAABAAAAB44QklNBBkAAAAAAAQAAAAeOEJJTQPzAAAAAAAJ AAAAAAAAAAABADhCSU0ECgAAAAAAAQAAOEJJTScQAAAAAAAKAAEAAAAAAAAAAjhC SU0D9QAAAAAASAAvZmYAAQBsZmYABgAAAAAAAQAvZmYAAQChmZoABgAAAAAAAQAy AAAAAQBaAAAABgAAAAAAAQA1AAAAAQAtAAAABgAAAAAAAThCSU0D+AAAAAAAcAAA /////////////////////////////wPoAAAAAP////////////////////////// //8D6AAAAAD/////////////////////////////A+gAAAAA//////////////// /////////////wPoAAA4QklNBAgAAAAAABAAAAABAAACQAAAAkAAAAAAOEJJTQQe AAAAAAAEAAAAADhCSU0EGgAAAAADYQAAAAYAAAAAAAAAAAAAAAwAAAAMAAAAFgBm AGwAZQBjAGgAYQAgAG4AYQByAGEAbgBqAGEAXwBhAGIAaQBlAHIAdABhAAAAAQAA AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAA AAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIAAAAGYm91 bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVm dGxvbmcAAAAAAAAAAEJ0b21sb25nAAAADAAAAABSZ2h0bG9uZwAAAAwAAAAGc2xp Y2VzVmxMcwAAAAFPYmpjAAAAAQAAAAAABXNsaWNlAAAAEgAAAAdzbGljZUlEbG9u ZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAAAAAABm9yaWdpbmVudW0AAAAMRVNsaWNl T3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlwZWVudW0AAAAKRVNsaWNlVHlw ZQAAAABJbWcgAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9w IGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAAwAAAAAUmdo dGxvbmcAAAAMAAAAA3VybFRFWFQAAAABAAAAAAAAbnVsbFRFWFQAAAABAAAAAAAA TXNnZVRFWFQAAAABAAAAAAAGYWx0VGFnVEVYVAAAAAEAAAAAAA5jZWxsVGV4dElz SFRNTGJvb2wBAAAACGNlbGxUZXh0VEVYVAAAAAEAAAAAAAlob3J6QWxpZ25lbnVt AAAAD0VTbGljZUhvcnpBbGlnbgAAAAdkZWZhdWx0AAAACXZlcnRBbGlnbmVudW0A AAAPRVNsaWNlVmVydEFsaWduAAAAB2RlZmF1bHQAAAALYmdDb2xvclR5cGVlbnVt AAAAEUVTbGljZUJHQ29sb3JUeXBlAAAAAE5vbmUAAAAJdG9wT3V0c2V0bG9uZwAA AAAAAAAKbGVmdE91dHNldGxvbmcAAAAAAAAADGJvdHRvbU91dHNldGxvbmcAAAAA AAAAC3JpZ2h0T3V0c2V0bG9uZwAAAAAAOEJJTQQoAAAAAAAMAAAAAT/wAAAAAAAA OEJJTQQRAAAAAAABAQA4QklNBBQAAAAAAAQAAAABOEJJTQQMAAAAAALAAAAAAQAA AAwAAAAMAAAAJAAAAbAAAAKkABgAAf/Y/+AAEEpGSUYAAQIAAEgASAAA/+0ADEFk b2JlX0NNAAL/7gAOQWRvYmUAZIAAAAAB/9sAhAAMCAgICQgMCQkMEQsKCxEVDwwM DxUYExMVExMYEQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQ0L Cw0ODRAODhAUDg4OFBQODg4OFBEMDAwMDBERDAwMDAwMEQwMDAwMDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAz/wAARCAAMAAwDASIAAhEBAxEB/90ABAAB/8QBPwAAAQUB AQEBAQEAAAAAAAAAAwABAgQFBgcICQoLAQABBQEBAQEBAQAAAAAAAAABAAIDBAUG BwgJCgsQAAEEAQMCBAIFBwYIBQMMMwEAAhEDBCESMQVBUWETInGBMgYUkaGxQiMk FVLBYjM0coLRQwclklPw4fFjczUWorKDJkSTVGRFwqN0NhfSVeJl8rOEw9N14/NG J5SkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2N0dXZ3eHl6e3x9fn9xEAAgIBAgQE AwQFBgcHBgU1AQACEQMhMRIEQVFhcSITBTKBkRShsUIjwVLR8DMkYuFygpJDUxVj czTxJQYWorKDByY1wtJEk1SjF2RFVTZ0ZeLys4TD03Xj80aUpIW0lcTU5PSltcXV 5fVWZnaGlqa2xtbm9ic3R1dnd4eXp7fH/9oADAMBAAIRAxEAPwDpKKLuvXZF2Re+ p7LdlQB9jBttf9D/AK0l+0+o/s/7B9obu+0eh9t3e3Zt3/z3/f1Drn7O+23fZfX2 7v1v0f5rdru5/P8ApLS/7Hv+bv532Sf+u+r/AOlf/A9n/BrOAkZEAkTB9U/X6/X6 fS7RMRGMpREsch+rx/qwMdYpcVT4vVxP/9k4QklNBCEAAAAAAFUAAAABAQAAAA8A QQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAAAATAEEAZABvAGIAZQAgAFAA aABvAHQAbwBzAGgAbwBwACAAQwBTADIAAAABADhCSU0EBgAAAAAABwAIAAAAAQEA /+E5HWh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2lu PSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0 YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iMy4xLjEtMTExIj4K ICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAy LzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6 YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eGFwTU09Imh0dHA6Ly9ucy5hZG9i ZS5jb20veGFwLzEuMC9tbS8iPgogICAgICAgICA8eGFwTU06RG9jdW1lbnRJRD51 dWlkOkE1M0NERTdFNURDRURDMTFBODQ2QjI5OEJFRDMzQUJEPC94YXBNTTpEb2N1 bWVudElEPgogICAgICAgICA8eGFwTU06SW5zdGFuY2VJRD51dWlkOjIzQTMxMjg3 NURDRURDMTFBODQ2QjI5OEJFRDMzQUJEPC94YXBNTTpJbnN0YW5jZUlEPgogICAg ICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6 YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eGFwPSJodHRwOi8vbnMuYWRvYmUu Y29tL3hhcC8xLjAvIj4KICAgICAgICAgPHhhcDpDcmVhdGVEYXRlPjIwMDgtMDEt MjlUMTE6NDM6NTcrMDE6MDA8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFw Ok1vZGlmeURhdGU+MjAwOC0wMS0yOVQxMjozMDowOCswMTowMDwveGFwOk1vZGlm eURhdGU+CiAgICAgICAgIDx4YXA6TWV0YWRhdGFEYXRlPjIwMDgtMDEtMjlUMTI6 MzA6MDgrMDE6MDA8L3hhcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDx4YXA6Q3Jl YXRvclRvb2w+QWRvYmUgUGhvdG9zaG9wIENTMiBXaW5kb3dzPC94YXA6Q3JlYXRv clRvb2w+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2Ny aXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDov L3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogICAgICAgICA8ZGM6Zm9ybWF0 PmltYWdlL2pwZWc8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+ CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAg IHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3Av MS4wLyI+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hv cDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SGlzdG9yeS8+CiAgICAg IDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjph Ym91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUu Y29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3Rp ZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAw MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29s dXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8 dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAg ICAgICA8dGlmZjpOYXRpdmVEaWdlc3Q+MjU2LDI1NywyNTgsMjU5LDI2MiwyNzQs Mjc3LDI4NCw1MzAsNTMxLDI4MiwyODMsMjk2LDMwMSwzMTgsMzE5LDUyOSw1MzIs MzA2LDI3MCwyNzEsMjcyLDMwNSwzMTUsMzM0MzI7OEY5MjczMDc3ODhCODU3MzVF MjI0MjVBNUYxQkJEQ0M8L3RpZmY6TmF0aXZlRGlnZXN0PgogICAgICA8L3JkZjpE ZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIK ICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlm LzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MTI8L2V4aWY6 UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+ MTI8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNw YWNlPi0xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOk5hdGl2ZURp Z2VzdD4zNjg2NCw0MDk2MCw0MDk2MSwzNzEyMSwzNzEyMiw0MDk2Miw0MDk2Mywz NzUxMCw0MDk2NCwzNjg2NywzNjg2OCwzMzQzNCwzMzQzNywzNDg1MCwzNDg1Miwz NDg1NSwzNDg1NiwzNzM3NywzNzM3OCwzNzM3OSwzNzM4MCwzNzM4MSwzNzM4Miwz NzM4MywzNzM4NCwzNzM4NSwzNzM4NiwzNzM5Niw0MTQ4Myw0MTQ4NCw0MTQ4Niw0 MTQ4Nyw0MTQ4OCw0MTQ5Miw0MTQ5Myw0MTQ5NSw0MTcyOCw0MTcyOSw0MTczMCw0 MTk4NSw0MTk4Niw0MTk4Nyw0MTk4OCw0MTk4OSw0MTk5MCw0MTk5MSw0MTk5Miw0 MTk5Myw0MTk5NCw0MTk5NSw0MTk5Niw0MjAxNiwwLDIsNCw1LDYsNyw4LDksMTAs MTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMjAsMjIsMjMsMjQsMjUsMjYsMjcsMjgs MzA7MjA1NDU3MTJBQjA3MjhGMjU3NEVEOTZGRjM4Mjk0Njk8L2V4aWY6TmF0aXZl RGlnZXN0PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8 L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pv/uAA5BZG9iZQBkQAAAAAH/ 2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEC AgICAgICAgICAgMDAwMDAwMDAwMBAQEBAQEBAQEBAQICAQICAwMDAwMDAwMDAwMD AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA//AABEIAAwADAMB EQACEQEDEQH/3QAEAAL/xAGiAAAABgIDAQAAAAAAAAAAAAAHCAYFBAkDCgIBAAsB AAAGAwEBAQAAAAAAAAAAAAYFBAMHAggBCQAKCxAAAgEDBAEDAwIDAwMCBgl1AQID BBEFEgYhBxMiAAgxFEEyIxUJUUIWYSQzF1JxgRhikSVDobHwJjRyChnB0TUn4VM2 gvGSokRUc0VGN0djKFVWVxqywtLi8mSDdJOEZaOzw9PjKThm83UqOTpISUpYWVpn aGlqdnd4eXqFhoeIiYqUlZaXmJmapKWmp6ipqrS1tre4ubrExcbHyMnK1NXW19jZ 2uTl5ufo6er09fb3+Pn6EQACAQMCBAQDBQQEBAYGBW0BAgMRBCESBTEGACITQVEH MmEUcQhCgSORFVKhYhYzCbEkwdFDcvAX4YI0JZJTGGNE8aKyJjUZVDZFZCcKc4OT RnTC0uLyVWV1VjeEhaOzw9Pj8ykalKS0xNTk9JWltcXV5fUoR1dmOHaGlqa2xtbm 9md3h5ent8fX5/dIWGh4iJiouMjY6Pg5SVlpeYmZqbnJ2en5KjpKWmp6ipqqusra 6vr/2gAMAwEAAhEDEQA/ALs9j7K3h/ML3j3FvLsXtfe2xdw7c7STamwqKlyLDZXX uEG0OztzQUU+3vLRtBJjZ9k00NTVw1NPUMZJ5XZ3KlcIdm2bcvezcObd23zmW8s7 223DwbZUekFugjuJADHUZUxAM6urZckkkU6qc080bF91XZfbPl7lXkTa902vcdmF zfSSx1u7yUzWkbMs9GFHE7GONonQBY1CgAg8v9ma+Q3+y+/7Lv8A6Zds/wAW/wBm E/0If7Mx/fKo/uv/AHI/ur/eP7X/AEkfbfxDxfcfsfxLR919j+zr1fu+2f6+87/1 L/qT/Wi3+q/ff0H718Y+D4Hg+LT6mmqte3xaa9HbWvd0q/1oPan/AF0f9dL/AFv7 392/1V/fP9Xvph9T9X9T9PX6HVppT9TwK+H4v6mnT+n1/9C5H5u/7Lt/pm7H/wBE X+n/APh3945P9mC/0Ufaf6Jf73fbZP8Ai+j+I/5F/eL7b7z7zyf7jr/daP8AlI94 Ie6/9TP6zb9/Vj99/T+Mf3l9FT6PxqNrrq7fE06/Er+n8dM6+uuH3ev9c/8AqLyd /X3+qf1/0w/cP721fvT6XUvh6NHf4GvwvBp+vTw648Lo7H/Yvb/hvD/l9/6Ff4v/ AM2v9Mn+mPT/AOc/9/dH/kK/hf8A1bvcqf8AMFv9ZP8A0T+qXifL6363/B9T/wBU vC/4R1j7/wCBS/8ABU/6D/rl+F8/3Z+7P8P0FP8AqI8f/l76/9k= ------------OBg9i9L0LVC3BilRJbEwsz Content-Disposition: inline; filename="flecha azul_abierta.jpg" Content-Type: image/jpeg; name="flecha azul_abierta.jpg" Content-Location: http://www.gs1es.org/imagenes/botones/flecha%20azul_abierta.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAgEASABIAAD/4QOaRXhpZgAATU0AKgAAAAgABwESAAMAAAAB AAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAc AAAAcgEyAAIAAAAUAAAAjodpAAQAAAABAAAApAAAANAACvyAAAAnEAAK/IAAACcQ QWRvYmUgUGhvdG9zaG9wIENTMiBXaW5kb3dzADIwMDg6MDE6MjkgMTI6MzA6MzgA AAAAA6ABAAMAAAAB//8AAKACAAQAAAABAAAACaADAAQAAAABAAAACQAAAAAAAAAG AQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAA AgEABAAAAAEAAAEuAgIABAAAAAEAAAJkAAAAAAAAAEgAAAABAAAASAAAAAH/2P/g ABBKRklGAAECAABIAEgAAP/tAAxBZG9iZV9DTQAC/+4ADkFkb2JlAGSAAAAAAf/b AIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwR EQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgACQAJAwEi AAIRAQMRAf/dAAQAAf/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEA AQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIR AwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZE k1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm 9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUy gZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi 8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//a AAwDAQACEQMRAD8Aa6+qx+VmdUz78TrtVtoqZU5zrBY17G42OzGn+a27tv0F0n7R +vv/AHEH+aE/Uv8Axd4n9j8i7FWvp0/l/wBTWv8A/9n/7QhYUGhvdG9zaG9wIDMu MAA4QklNBCUAAAAAABAAAAAAAAAAAAAAAAAAAAAAOEJJTQPtAAAAAAAQAEgAAAAB AAIASAAAAAEAAjhCSU0EJgAAAAAADgAAAAAAAAAAAAA/gAAAOEJJTQQNAAAAAAAE AAAAHjhCSU0EGQAAAAAABAAAAB44QklNA/MAAAAAAAkAAAAAAAAAAAEAOEJJTQQK AAAAAAABAAA4QklNJxAAAAAAAAoAAQAAAAAAAAACOEJJTQP1AAAAAABIAC9mZgAB AGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAAB ADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD///////////////////// ////////A+gAAAAA/////////////////////////////wPoAAAAAP////////// //////////////////8D6AAAAAD/////////////////////////////A+gAADhC SU0ECAAAAAAAEAAAAAEAAAJAAAACQAAAAAA4QklNBB4AAAAAAAQAAAAAOEJJTQQa AAAAAANbAAAABgAAAAAAAAAAAAAACQAAAAkAAAATAGYAbABlAGMAaABhACAAYQB6 AHUAbABfAGEAYgBpAGUAcgB0AGEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAA AAAAAAAAAAkAAAAJAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAA EAAAAAEAAAAAAABudWxsAAAAAgAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEA AAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcA AAAJAAAAAFJnaHRsb25nAAAACQAAAAZzbGljZXNWbExzAAAAAU9iamMAAAABAAAA AAAFc2xpY2UAAAASAAAAB3NsaWNlSURsb25nAAAAAAAAAAdncm91cElEbG9uZwAA AAAAAAAGb3JpZ2luZW51bQAAAAxFU2xpY2VPcmlnaW4AAAANYXV0b0dlbmVyYXRl ZAAAAABUeXBlZW51bQAAAApFU2xpY2VUeXBlAAAAAEltZyAAAAAGYm91bmRzT2Jq YwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcA AAAAAAAAAEJ0b21sb25nAAAACQAAAABSZ2h0bG9uZwAAAAkAAAADdXJsVEVYVAAA AAEAAAAAAABudWxsVEVYVAAAAAEAAAAAAABNc2dlVEVYVAAAAAEAAAAAAAZhbHRU YWdURVhUAAAAAQAAAAAADmNlbGxUZXh0SXNIVE1MYm9vbAEAAAAIY2VsbFRleHRU RVhUAAAAAQAAAAAACWhvcnpBbGlnbmVudW0AAAAPRVNsaWNlSG9yekFsaWduAAAA B2RlZmF1bHQAAAAJdmVydEFsaWduZW51bQAAAA9FU2xpY2VWZXJ0QWxpZ24AAAAH ZGVmYXVsdAAAAAtiZ0NvbG9yVHlwZWVudW0AAAARRVNsaWNlQkdDb2xvclR5cGUA AAAATm9uZQAAAAl0b3BPdXRzZXRsb25nAAAAAAAAAApsZWZ0T3V0c2V0bG9uZwAA AAAAAAAMYm90dG9tT3V0c2V0bG9uZwAAAAAAAAALcmlnaHRPdXRzZXRsb25nAAAA AAA4QklNBCgAAAAAAAwAAAABP/AAAAAAAAA4QklNBBEAAAAAAAEBADhCSU0EFAAA AAAABAAAAAE4QklNBAwAAAAAAoAAAAABAAAACQAAAAkAAAAcAAAA/AAAAmQAGAAB /9j/4AAQSkZJRgABAgAASABIAAD/7QAMQWRvYmVfQ00AAv/uAA5BZG9iZQBkgAAA AAH/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgTExUTExgRDAwMDAwMEQwMDAwM DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQODg4UFA4ODg4UEQwM DAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIAAkA CQMBIgACEQEDEQH/3QAEAAH/xAE/AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJ CgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUHBggFAwwz AQACEQMEIRIxBUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRai soMmRJNUZEXCo3Q2F9JV4mXys4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpam tsbW5vY3R1dnd4eXp7fH1+f3EQACAgECBAQDBAUGBwcGBTUBAAIRAyExEgRBUWFx IhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNTFWNzNPElBhaisoMHJjXC0kSTVKMXZEVV NnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2JzdHV2d3h5en t8f/2gAMAwEAAhEDEQA/AGuvqsflZnVM+/E67VbaKmVOc6wWNexuNjsxp/mtu7b9 BdJ+0fr7/wBxB/mhP1L/AMXeJ/Y/IuxVr6dP5f8AU1r/AP/ZOEJJTQQhAAAAAABV AAAAAQEAAAAPAEEAZABvAGIAZQAgAFAAaABvAHQAbwBzAGgAbwBwAAAAEwBBAGQA bwBiAGUAIABQAGgAbwB0AG8AcwBoAG8AcAAgAEMAUwAyAAAAAQA4QklNBAYAAAAA AAcACAAAAAEBAP/hORtodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBh Y2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+ Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IjMu MS4xLTExMSI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5v cmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3Jp cHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcE1NPSJodHRw Oi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIj4KICAgICAgICAgPHhhcE1NOkRv Y3VtZW50SUQ+dXVpZDpBMzNDREU3RTVEQ0VEQzExQTg0NkIyOThCRUQzM0FCRDwv eGFwTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhhcE1NOkluc3RhbmNlSUQ+dXVp ZDoyN0EzMTI4NzVEQ0VEQzExQTg0NkIyOThCRUQzM0FCRDwveGFwTU06SW5zdGFu Y2VJRD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3Jp cHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDov L25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6Q3JlYXRlRGF0 ZT4yMDA4LTAxLTI5VDExOjQ0OjIxKzAxOjAwPC94YXA6Q3JlYXRlRGF0ZT4KICAg ICAgICAgPHhhcDpNb2RpZnlEYXRlPjIwMDgtMDEtMjlUMTI6MzA6MzgrMDE6MDA8 L3hhcDpNb2RpZnlEYXRlPgogICAgICAgICA8eGFwOk1ldGFkYXRhRGF0ZT4yMDA4 LTAxLTI5VDEyOjMwOjM4KzAxOjAwPC94YXA6TWV0YWRhdGFEYXRlPgogICAgICAg ICA8eGFwOkNyZWF0b3JUb29sPkFkb2JlIFBob3Rvc2hvcCBDUzIgV2luZG93czwv eGFwOkNyZWF0b3JUb29sPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAg PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6 ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAg PGRjOmZvcm1hdD5pbWFnZS9qcGVnPC9kYzpmb3JtYXQ+CiAgICAgIDwvcmRmOkRl c2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgog ICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20v cGhvdG9zaG9wLzEuMC8iPgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4z PC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9zaG9wOkhpc3Rv cnkvPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlw dGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDov L25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpPcmllbnRh dGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1 dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0 aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4K ICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9u VW5pdD4KICAgICAgICAgPHRpZmY6TmF0aXZlRGlnZXN0PjI1NiwyNTcsMjU4LDI1 OSwyNjIsMjc0LDI3NywyODQsNTMwLDUzMSwyODIsMjgzLDI5NiwzMDEsMzE4LDMx OSw1MjksNTMyLDMwNiwyNzAsMjcxLDI3MiwzMDUsMzE1LDMzNDMyO0M1MTc0Qzkw ODk1NUZEMjJGNzIyMjY0NEEyMUE0OEI0PC90aWZmOk5hdGl2ZURpZ2VzdD4KICAg ICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRm OmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9i ZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9u Pjk8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlE aW1lbnNpb24+OTwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxleGlm OkNvbG9yU3BhY2U+LTE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6 TmF0aXZlRGlnZXN0PjM2ODY0LDQwOTYwLDQwOTYxLDM3MTIxLDM3MTIyLDQwOTYy LDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2ODY4LDMzNDM0LDMzNDM3LDM0ODUw LDM0ODUyLDM0ODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3Mzc5LDM3MzgwLDM3Mzgx LDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3Mzk2LDQxNDgzLDQxNDg0 LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQxNDk1LDQxNzI4LDQxNzI5 LDQxNzMwLDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQxOTg5LDQxOTkwLDQxOTkx LDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1LDQxOTk2LDQyMDE2LDAsMiw0LDUsNiw3 LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwyMCwyMiwyMywyNCwyNSwy NiwyNywyOCwzMDs2MEY1NTRERDkzQ0QwQzU4MkE0MzAzMkMzOEIzNkU5NDwvZXhp ZjpOYXRpdmVEaWdlc3Q+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3Jk ZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+/+4ADkFkb2Jl AGRAAAAAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQICAgICAgICAgICAwMDAwMDAwMDAwEBAQEBAQEBAQEBAgIBAgIDAwMD AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD/8AA EQgACQAJAwERAAIRAQMRAf/dAAQAAv/EAaIAAAAGAgMBAAAAAAAAAAAAAAcIBgUE CQMKAgEACwEAAAYDAQEBAAAAAAAAAAAABgUEAwcCCAEJAAoLEAACAQMEAQMDAgMD AwIGCXUBAgMEEQUSBiEHEyIACDEUQTIjFQlRQhZhJDMXUnGBGGKRJUOhsfAmNHIK GcHRNSfhUzaC8ZKiRFRzRUY3R2MoVVZXGrLC0uLyZIN0k4Rlo7PD0+MpOGbzdSo5 OkhJSlhZWmdoaWp2d3h5eoWGh4iJipSVlpeYmZqkpaanqKmqtLW2t7i5usTFxsfI ycrU1dbX2Nna5OXm5+jp6vT19vf4+foRAAIBAwIEBAMFBAQEBgYFbQECAxEEIRIF MQYAIhNBUQcyYRRxCEKBI5EVUqFiFjMJsSTB0UNy8BfhgjQlklMYY0TxorImNRlU NkVkJwpzg5NGdMLS4vJVZXVWN4SFo7PD0+PzKRqUpLTE1OT0laW1xdXl9ShHV2Y4 doaWprbG1ub2Z3eHl6e3x9fn90hYaHiImKi4yNjo+DlJWWl5iZmpucnZ6fkqOkpa anqKmqq6ytrq+v/aAAwDAQACEQMRAD8Ajbv3ztbdGW727p+WXyz786J/mRbF7S7w pNgbe663RuvcfYeM7D2/2VsrGdK9S7b6RgyFJQ02w8ng6yvgoRSS4ulqKFFqnlqF AjmyRt7aaJNvsNm2O2ueVJIIS7SKqoUaNzNI09K6w1Ca6iD2gDolJU63llZbgE0p x44FPTq6z/Zi/wCfL/3jxi//AEE8B/199gD92e3f/Rzb/em6WeJd/wC++v/Qur+S H/b9PoL/AKh+uv8A3TS+5O2z/p3+5fa/+HpC/wDuYv5dbJvuMel3X//Z ------------OBg9i9L0LVC3BilRJbEwsz Content-Disposition: inline; filename=lineaSeparacion.jpg Content-Type: image/jpeg; name=lineaSeparacion.jpg Content-Location: http://www.gs1es.org/imagenes/lineaSeparacion.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAgEASABIAAD/4QQKRXhpZgAATU0AKgAAAAgABwESAAMAAAAB AAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAc AAAAcgEyAAIAAAAUAAAAjodpAAQAAAABAAAApAAAANAACvyAAAAnEAAK/IAAACcQ QWRvYmUgUGhvdG9zaG9wIENTMiBXaW5kb3dzADIwMDg6MDE6MjkgMTI6MzQ6MDcA AAAAA6ABAAMAAAAB//8AAKACAAQAAAABAAADO6ADAAQAAAABAAAACQAAAAAAAAAG AQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAA AgEABAAAAAEAAAEuAgIABAAAAAEAAALUAAAAAAAAAEgAAAABAAAASAAAAAH/2P/g ABBKRklGAAECAABIAEgAAP/tAAxBZG9iZV9DTQAC/+4ADkFkb2JlAGSAAAAAAf/b AIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwR EQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAAgCgAwEi AAIRAQMRAf/dAAQACv/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEA AQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIR AwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZE k1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm 9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUy gZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi 8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//a AAwDAQACEQMRAD8A9F/9hEv/AGEXzKkoWy/TX/sIl/7CL5lSSU/TX/sIl/7CL5lS SU/TX/sIl/7CL5lSSU/TX/sIl/7CL5lSSU/TX/sIl/7CL5lSSU/TX/sIl/7CL5lS SU/TX/sIl/7CL5lSSU/TX/sIg5n9DyP6L/NP+jz9F3C+a0kJbHyXQ+aPmH3Uf+I6 z/iGf+3Ni4/66f8Aa7/09X/+29S86SV74f8AzWL+7H/oQavxD+fz/wB/J/05P//Z /+0IrFBob3Rvc2hvcCAzLjAAOEJJTQQlAAAAAAAQAAAAAAAAAAAAAAAAAAAAADhC SU0D7QAAAAAAEABIAAAAAQACAEgAAAABAAI4QklNBCYAAAAAAA4AAAAAAAAAAAAA P4AAADhCSU0EDQAAAAAABAAAAB44QklNBBkAAAAAAAQAAAAeOEJJTQPzAAAAAAAJ AAAAAAAAAAABADhCSU0ECgAAAAAAAQAAOEJJTScQAAAAAAAKAAEAAAAAAAAAAjhC SU0D9QAAAAAASAAvZmYAAQBsZmYABgAAAAAAAQAvZmYAAQChmZoABgAAAAAAAQAy AAAAAQBaAAAABgAAAAAAAQA1AAAAAQAtAAAABgAAAAAAAThCSU0D+AAAAAAAcAAA /////////////////////////////wPoAAAAAP////////////////////////// //8D6AAAAAD/////////////////////////////A+gAAAAA//////////////// /////////////wPoAAA4QklNBAgAAAAAABAAAAABAAACQAAAAkAAAAAAOEJJTQQe AAAAAAAEAAAAADhCSU0EGgAAAAADPwAAAAYAAAAAAAAAAAAAAAkAAAM7AAAABQBM AO0AbgBlAGEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAzsAAAAJ AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAABu dWxsAAAAAgAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBs b25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAAAJAAAAAFJnaHRs b25nAAADOwAAAAZzbGljZXNWbExzAAAAAU9iamMAAAABAAAAAAAFc2xpY2UAAAAS AAAAB3NsaWNlSURsb25nAAAAAAAAAAdncm91cElEbG9uZwAAAAAAAAAGb3JpZ2lu ZW51bQAAAAxFU2xpY2VPcmlnaW4AAAANYXV0b0dlbmVyYXRlZAAAAABUeXBlZW51 bQAAAApFU2xpY2VUeXBlAAAAAEltZyAAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABS Y3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21s b25nAAAACQAAAABSZ2h0bG9uZwAAAzsAAAADdXJsVEVYVAAAAAEAAAAAAABudWxs VEVYVAAAAAEAAAAAAABNc2dlVEVYVAAAAAEAAAAAAAZhbHRUYWdURVhUAAAAAQAA AAAADmNlbGxUZXh0SXNIVE1MYm9vbAEAAAAIY2VsbFRleHRURVhUAAAAAQAAAAAA CWhvcnpBbGlnbmVudW0AAAAPRVNsaWNlSG9yekFsaWduAAAAB2RlZmF1bHQAAAAJ dmVydEFsaWduZW51bQAAAA9FU2xpY2VWZXJ0QWxpZ24AAAAHZGVmYXVsdAAAAAti Z0NvbG9yVHlwZWVudW0AAAARRVNsaWNlQkdDb2xvclR5cGUAAAAATm9uZQAAAAl0 b3BPdXRzZXRsb25nAAAAAAAAAApsZWZ0T3V0c2V0bG9uZwAAAAAAAAAMYm90dG9t T3V0c2V0bG9uZwAAAAAAAAALcmlnaHRPdXRzZXRsb25nAAAAAAA4QklNBCgAAAAA AAwAAAABP/AAAAAAAAA4QklNBBEAAAAAAAEBADhCSU0EFAAAAAAABAAAAAE4QklN BAwAAAAAAvAAAAABAAAAoAAAAAIAAAHgAAADwAAAAtQAGAAB/9j/4AAQSkZJRgAB AgAASABIAAD/7QAMQWRvYmVfQ00AAv/uAA5BZG9iZQBkgAAAAAH/2wCEAAwICAgJ CAwJCQwRCwoLERUPDAwPFRgTExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwM DAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwR DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIAAIAoAMBIgACEQEDEQH/ 3QAEAAr/xAE/AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJCgsBAAEFAQEBAQEB AAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUHBggFAwwzAQACEQMEIRIxBUFR YRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNUZEXCo3Q2 F9JV4mXys4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eX p7fH1+f3EQACAgECBAQDBAUGBwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPB UtHwMyRi4XKCkkNTFWNzNPElBhaisoMHJjXC0kSTVKMXZEVVNnRl4vKzhMPTdePz RpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2JzdHV2d3h5ent8f/2gAMAwEAAhED EQA/APRf/YRL/wBhF8ypKFsv01/7CJf+wi+ZUklP01/7CJf+wi+ZUklP01/7CJf+ wi+ZUklP01/7CJf+wi+ZUklP01/7CJf+wi+ZUklP01/7CJf+wi+ZUklP01/7CJf+ wi+ZUklP01/7CIOZ/Q8j+i/zT/o8/RdwvmtJCWx8l0Pmj5h91H/iOs/4hn/tzYuP +un/AGu/9PV//tvUvOkle+H/AM1i/ux/6EGr8Q/n8/8Afyf9OT//2ThCSU0EIQAA AAAAVQAAAAEBAAAADwBBAGQAbwBiAGUAIABQAGgAbwB0AG8AcwBoAG8AcAAAABMA QQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAIABDAFMAMgAAAAEAOEJJTQQG AAAAAAAHAAgAAAABAQD/4TkdaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8 P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5 ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRr PSIzLjEuMS0xMTEiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cu dzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRl c2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXBNTT0i aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyI+CiAgICAgICAgIDx4YXBN TTpEb2N1bWVudElEPnV1aWQ6QkQyMDkxNDI1RENFREMxMUE4NDZCMjk4QkVEMzNB QkQ8L3hhcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4YXBNTTpJbnN0YW5jZUlE PnV1aWQ6NTZEOUJBRkQ1RENFREMxMUE4NDZCMjk4QkVEMzNBQkQ8L3hhcE1NOklu c3RhbmNlSUQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRl c2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXA9Imh0 dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgogICAgICAgICA8eGFwOkNyZWF0 ZURhdGU+MjAwOC0wMS0yOVQxMTozNjoxMSswMTowMDwveGFwOkNyZWF0ZURhdGU+ CiAgICAgICAgIDx4YXA6TW9kaWZ5RGF0ZT4yMDA4LTAxLTI5VDEyOjM0OjA3KzAx OjAwPC94YXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhhcDpNZXRhZGF0YURhdGU+ MjAwOC0wMS0yOVQxMjozNDowNyswMTowMDwveGFwOk1ldGFkYXRhRGF0ZT4KICAg ICAgICAgPHhhcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ1MyIFdpbmRv d3M8L3hhcDpDcmVhdG9yVG9vbD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAg ICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHht bG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+CiAgICAg ICAgIDxkYzpmb3JtYXQ+aW1hZ2UvanBlZzwvZGM6Zm9ybWF0PgogICAgICA8L3Jk ZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9 IiIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUu Y29tL3Bob3Rvc2hvcC8xLjAvIj4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1v ZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHBob3Rvc2hvcDpI aXN0b3J5Lz4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVz Y3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0 dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIj4KICAgICAgICAgPHRpZmY6T3Jp ZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJl c29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAg ICA8dGlmZjpZUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WVJlc29sdXRp b24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1 dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOk5hdGl2ZURpZ2VzdD4yNTYsMjU3LDI1 OCwyNTksMjYyLDI3NCwyNzcsMjg0LDUzMCw1MzEsMjgyLDI4MywyOTYsMzAxLDMx OCwzMTksNTI5LDUzMiwzMDYsMjcwLDI3MSwyNzIsMzA1LDMxNSwzMzQzMjs1QzM0 MThFMDUyNUYzQTJDREVEMEM5NjFDRjVFMDJDRTwvdGlmZjpOYXRpdmVEaWdlc3Q+ CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9u IHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMu YWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVu c2lvbj44Mjc8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQ aXhlbFlEaW1lbnNpb24+OTwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAg IDxleGlmOkNvbG9yU3BhY2U+LTE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAg PGV4aWY6TmF0aXZlRGlnZXN0PjM2ODY0LDQwOTYwLDQwOTYxLDM3MTIxLDM3MTIy LDQwOTYyLDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2ODY4LDMzNDM0LDMzNDM3 LDM0ODUwLDM0ODUyLDM0ODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3Mzc5LDM3Mzgw LDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3Mzk2LDQxNDgz LDQxNDg0LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQxNDk1LDQxNzI4 LDQxNzI5LDQxNzMwLDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQxOTg5LDQxOTkw LDQxOTkxLDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1LDQxOTk2LDQyMDE2LDAsMiw0 LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwyMCwyMiwyMywy NCwyNSwyNiwyNywyOCwzMDswRUMwNUY3RThBMjFENzk0OEU3MTI5NzFCMkEwQ0ND RjwvZXhpZjpOYXRpdmVEaWdlc3Q+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgog ICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+/+4A DkFkb2JlAGRAAAAAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQICAgICAgICAgICAwMDAwMDAwMDAwEBAQEBAQEBAQEBAgIB AgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD AwMD/8AAEQgACQM7AwERAAIRAQMRAf/dAAQAaP/EAaIAAAAGAgMBAAAAAAAAAAAA AAcIBgUECQMKAgEACwEAAAYDAQEBAAAAAAAAAAAABgUEAwcCCAEJAAoLEAACAQME AQMDAgMDAwIGCXUBAgMEEQUSBiEHEyIACDEUQTIjFQlRQhZhJDMXUnGBGGKRJUOh sfAmNHIKGcHRNSfhUzaC8ZKiRFRzRUY3R2MoVVZXGrLC0uLyZIN0k4Rlo7PD0+Mp OGbzdSo5OkhJSlhZWmdoaWp2d3h5eoWGh4iJipSVlpeYmZqkpaanqKmqtLW2t7i5 usTFxsfIycrU1dbX2Nna5OXm5+jp6vT19vf4+foRAAIBAwIEBAMFBAQEBgYFbQEC AxEEIRIFMQYAIhNBUQcyYRRxCEKBI5EVUqFiFjMJsSTB0UNy8BfhgjQlklMYY0Tx orImNRlUNkVkJwpzg5NGdMLS4vJVZXVWN4SFo7PD0+PzKRqUpLTE1OT0laW1xdXl 9ShHV2Y4doaWprbG1ub2Z3eHl6e3x9fn90hYaHiImKi4yNjo+DlJWWl5iZmpucnZ 6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A3Pf9kI+HH/ePPXf/AJ7an/6s 9xt/rPe2P/TF2X+8n/oLqdP+CZ9+/wDwqe6/85F/6B69/shHw4/7x567/wDPbU// AFZ79/rPe2P/AExdl/vJ/wCguvf8Ez79/wDhU91/5yL/ANA9e/2Qj4cf9489d/8A ntqf/qz37/We9sf+mLsv95P/AEF17/gmffv/AMKnuv8AzkX/AKB69/shHw4/7x56 7/8APbU//Vnv3+s97Y/9MXZf7yf+guvf8Ez79/8AhU91/wCci/8AQPXv9kI+HH/e PPXf/ntqf/qz37/We9sf+mLsv95P/QXXv+CZ9+//AAqe6/8AORf+gevf7IR8OP8A vHnrv/z21P8A9We/f6z3tj/0xdl/vJ/6C69/wTPv3/4VPdf+ci/9A9e/2Qj4cf8A ePPXf/ntqf8A6s9+/wBZ72x/6Yuy/wB5P/QXXv8Agmffv/wqe6/85F/6B69/shHw 4/7x567/APPbU/8A1Z79/rPe2P8A0xdl/vJ/6C69/wAEz79/+FT3X/nIv/QPXv8A ZCPhx/3jz13/AOe2p/8Aqz37/We9sf8Api7L/eT/ANBde/4Jn37/APCp7r/zkX/o Hr3+yEfDj/vHnrv/AM9tT/8AVnv3+s97Y/8ATF2X+8n/AKC69/wTPv3/AOFT3X/n Iv8A0D17/ZCPhx/3jz13/wCe2p/+rPfv9Z72x/6Yuy/3k/8AQXXv+CZ9+/8Awqe6 /wDORf8AoHr3+yEfDj/vHnrv/wA9tT/9We/f6z3tj/0xdl/vJ/6C69/wTPv3/wCF T3X/AJyL/wBA9e/2Qj4cf9489d/+e2p/+rPfv9Z72x/6Yuy/3k/9Bde/4Jn37/8A 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 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691WR/Nt/wCyQcn/ AOJG68/92tR7gb7x/wD07K8/57Lb/q51l/8Acc/6f9tP/Stvv+rB61dz/vv9v758 ddpT1sifyaP+yeux/wDxMeS/943Z3vOn7rv/ACpW+f8AS0b/AKsQ9cjP7wP/AKer yl/4r8f/AGlXXTr33/2XJ19/2uOpf/duPebmz/8AKo3/APpZv+O9c+J/9z4vtXq2 b3HXRt1pK/P/AP7LW+S3/iTKv/3TYb3lDyd/yquyf80f+fm6Ae5/7n3X+m/yDrZ8 /llf9kKfHb/w1s3/AO9ruf3BXPP/ACte8/8ANRf+OL0K9p/5J9r/AKU/4T1ohfzI /wDt4H8zP/Fi+zP/AHdSe8qeR/8AlUOWv+eRP8B6i3ef+SpuX/NVv8PVnP8Awm3/ AOy3+0P/ABWPdP8A78vrD2CPej/lVrD/AJ7k/wCrcvR1yh/yVJv+aLf8eXrWe/mm /wDbyz57/wDi23ev/vfZn3OHIH/Kkcn/APSvh/6tjqGua/8AlY96/wCeqX/q43RD PYx6D3Xvfuvdf//Z ------------OBg9i9L0LVC3BilRJbEwsz Content-Disposition: inline; filename=gc_search.htm Content-Type: text/html; charset=iso-8859-1; name=gc_search.htm Content-Location: http://www.gs1es.org/admin/web/gc_search.php?&tipo=3&entidad=36&plantilla=70&Id=327&target=Navegador:&target=Navegador: Content-Transfer-Encoding: 8bit AECOC - La asociación de fabricantes y distribuidores ------------OBg9i9L0LVC3BilRJbEwsz--