dmencu 0.4.13 → 0.4.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1524,6 +1524,7 @@ function FormularioDespliegue(props:{forPk:ForPk}){
|
|
|
1524
1524
|
= useSelectorVivienda(props.forPk);
|
|
1525
1525
|
var soloLectura = getDatosByPass().soloLectura;
|
|
1526
1526
|
const dispatch = useDispatch();
|
|
1527
|
+
var esVolver = opciones.pilaForPk.length>0;
|
|
1527
1528
|
useEffect(()=>{
|
|
1528
1529
|
var controlScroll=()=>{
|
|
1529
1530
|
var arriba = document.getElementById('fab-activo-arriba');
|
|
@@ -1560,9 +1561,17 @@ function FormularioDespliegue(props:{forPk:ForPk}){
|
|
|
1560
1561
|
}
|
|
1561
1562
|
var listaModos:ModoDespliegue[]=['metadatos','relevamiento','PDF'];
|
|
1562
1563
|
['boton-volver-1', 'boton-volver-2'].forEach(id=>{
|
|
1563
|
-
registrarElemento({id,
|
|
1564
|
-
|
|
1565
|
-
|
|
1564
|
+
registrarElemento({id, direct:true,
|
|
1565
|
+
fun:(
|
|
1566
|
+
r:Respuestas,
|
|
1567
|
+
feedbackForm: FormStructureState<IdVariable, Valor, IdFin>,
|
|
1568
|
+
elemento:HTMLDivElement,
|
|
1569
|
+
feedbackAll:{[formulario in PlainForPk]:FormStructureState<IdVariable, Valor, IdFin>},
|
|
1570
|
+
_estructura:Estructura
|
|
1571
|
+
)=>{
|
|
1572
|
+
elemento.setAttribute('resumen-estado',esVolver?feedbackForm.resumen:calcularResumenVivienda(forPk, feedbackAll, r).resumenEstado);
|
|
1573
|
+
}
|
|
1574
|
+
})
|
|
1566
1575
|
})
|
|
1567
1576
|
// @ts-expect-error especial hay que leerlo en el parser de casilleros si esto termina quedando así
|
|
1568
1577
|
var pantallaCompleta = formulario.especial?.pantallaCompleta;
|
|
@@ -104,7 +104,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
104
104
|
from usuarios
|
|
105
105
|
where rol in (select rol_subordinado from roles_subordinados where rol = ${q(rol)})`).fetchAll()).rows;
|
|
106
106
|
});
|
|
107
|
-
var puede = result.find((user) => user.usuario == userToChangePass
|
|
107
|
+
var puede = !!result.find((user) => user.usuario == userToChangePass);
|
|
108
108
|
var isAdmin = be.isAdmin(reqOrContext);
|
|
109
109
|
return isAdmin || puede;
|
|
110
110
|
}
|
|
@@ -717,4 +717,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
717
717
|
exports.emergeAppDmEncu = emergeAppDmEncu;
|
|
718
718
|
exports.AppDmEncu = emergeAppDmEncu((0, procesamiento_1.emergeAppProcesamiento)((0, procesamiento_1.emergeAppConsistencias)((0, procesamiento_1.emergeAppVarCal)((0, procesamiento_1.emergeAppDatosExt)((0, procesamiento_1.emergeAppOperativos)(procesamiento_1.AppBackend))))));
|
|
719
719
|
});
|
|
720
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWRtZW5jdS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2ZXIvYXBwLWRtZW5jdS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLFlBQVksQ0FBQzs7O0lBR2IsaURBQTBMO0lBQzFMLDJEQUF5RTtJQUV6RSx3Q0FBd0M7SUFFeEMsd0NBQXdDO0lBUXhDLDJDQUF3QztJQUV4Qyw2QkFBNkI7SUFFN0Isa0NBQWtDO0lBQ2xDLG1DQUFtQztJQUVuQywyQkFBbUM7SUFFbkMsK0NBQW9EO0lBQ3BELHFEQUF1RDtJQUN2RCxpRUFBNkQ7SUFDN0QsK0RBQWdFO0lBQ2hFLCtEQUFnRTtJQUNoRSwrREFBZ0U7SUFDaEUsdUVBQWdFO0lBQ2hFLCtEQUE0RDtJQUM1RCw2REFBMkQ7SUFDM0QsNkRBQTJEO0lBQzNELHFEQUF1RDtJQUN2RCxpRUFBNkQ7SUFDN0QseURBQXlEO0lBQ3pELHlFQUFpRTtJQUVqRSxpREFBcUQ7SUFDckQseURBQXlEO0lBQ3pELDJDQUFrRDtJQUNsRCwrREFBNEQ7SUFDNUQsbURBQXNEO0lBQ3RELHFEQUF1RDtJQUN2RCwyREFBMEQ7SUFDMUQsbURBQXNEO0lBQ3RELCtDQUFvRDtJQUNwRCxxRUFBK0Q7SUFDL0QsaURBQXFEO0lBQ3JELHlEQUd5RDtJQUN6RCw2REFBMkQ7SUFDM0QscUZBQTRFO0lBQzVFLHFFQUErRDtJQUMvRCw2REFBMkQ7SUFDM0QsNkRBQTJEO0lBQzNELDZEQUEyRDtJQUMzRCx5REFBeUQ7SUFDekQsaUVBQTZEO0lBQzdELDZFQUFtRTtJQUNuRSxxRUFBK0Q7SUFDL0QsK0RBQTREO0lBQzVELG1FQUE4RDtJQUM5RCx1REFBd0Q7SUFDeEQsbURBQXNEO0lBQ3RELG1EQUFzRDtJQUN0RCxxREFBdUQ7SUFDdkQsMkRBQTBEO0lBQzFELDJEQUEwRDtJQUMxRCw2REFBMkQ7SUFFM0QsbURBQXNEO0lBQ3RELHFEQUF1RDtJQUN2RCxxRUFBK0Q7SUFHL0QsaURBQStCO0lBQy9CLDZDQUFzQztJQUV0QyxNQUFNLGNBQWMsR0FBQyxXQUFXLENBQUM7SUFFakMsU0FBZ0IsZUFBZSxDQUEwRSxJQUFNO1FBQzdHLE9BQU8sTUFBTSxTQUFVLFNBQVEsSUFBSTtZQUNqQyxZQUFZLEdBQUcsSUFBVTtnQkFDckIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFDLEVBQUUsQ0FBQTtnQkFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxHQUFDLEVBQUUsQ0FBQTtnQkFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQ0FBZ0MsR0FBRyxLQUFLLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzRCxDQUFDO1lBQ1EsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCO2dCQUN2RCxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQ2QsSUFBSSxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLEVBQUU7b0JBQ25ELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUMzQixJQUFJLEdBQUcsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztvQkFDaEMsT0FBTyxDQUFDLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQzs7OzZGQUdzRCxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNqSCxDQUFDLENBQUMsQ0FBQTtnQkFDRixJQUFJLEtBQUssR0FBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFDLEVBQUUsQ0FBQSxJQUFJLENBQUMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNoRixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN2QyxPQUFPLE9BQU8sSUFBSSxLQUFLLENBQUE7WUFFM0IsQ0FBQztZQUNRLEtBQUssQ0FBQyxhQUFhO2dCQUN4QixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQ2QsSUFBSSx3QkFBd0IsR0FBQyxDQUFDLGNBQWMsRUFBQyxZQUFZLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxVQUFVLEdBQUcsTUFBTSxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzdDLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDeEcsVUFBVSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFBLEVBQUU7b0JBQ2pDLElBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxtQkFBbUIsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLHFCQUFxQixFQUFDO3dCQUNoRixJQUFJLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7d0JBQy9DLE9BQU8sQ0FBQyxZQUFZLEdBQUcsS0FBSyxXQUFVLE9BQWUsRUFBRSxVQUFpQzs0QkFDcEYsSUFBSSxNQUFNLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUE7NEJBQzNELElBQUcsVUFBVSxDQUFDLEtBQUssSUFBSSxZQUFZLEVBQUM7Z0NBQ2hDLEVBQUUsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQ0FDckQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUE7NkJBQ3RFOzRCQUNELE9BQU8sTUFBTSxDQUFDO3dCQUNsQixDQUFDLENBQUE7cUJBQ0o7b0JBQ0QsT0FBTyxPQUFPLENBQUM7Z0JBQ25CLENBQUMsQ0FBQyxDQUFBO2dCQUNGLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxvQ0FBZ0IsQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFDUSxLQUFLLENBQUMsc0JBQXNCLENBQUMsT0FBYztZQUNwRCxDQUFDO1lBQ1Esc0JBQXNCLENBQUMsT0FBNkIsRUFBRSxPQUFjO2dCQUN6RSxJQUFJLEVBQUUsR0FBQyxJQUFJLENBQUM7Z0JBQ1osS0FBSyxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDL0MsNERBQTREO2dCQUM1RCxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDLENBQUE7Z0JBQ3BGLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBUyxHQUFXLEVBQUMsSUFBYSxFQUFFLElBQWlCO29CQUM3RCxJQUFHLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBQzt3QkFDbkMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUMsRUFBRSxDQUFDLENBQUM7cUJBQ2hFO29CQUNELElBQUksRUFBRSxDQUFDO2dCQUNYLENBQUMsQ0FBQyxDQUFBO2dCQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFDLFNBQVMsRUFBQyxLQUFLLFdBQVUsR0FBRyxFQUFDLEdBQUcsRUFBQyxLQUFLO29CQUN0RCxnRkFBZ0Y7b0JBQ2hGLElBQUksRUFBQyxTQUFTLEVBQUMsR0FBRyxHQUFHLENBQUM7b0JBQ3RCLElBQUksUUFBUSxHQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBQyxTQUFTLEVBQUMsRUFBRSxLQUFLLEVBQUUsRUFBQyxRQUFRLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUM1RixTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2xELENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFDLFFBQVEsRUFBQyxLQUFLLFdBQVUsR0FBRyxFQUFDLEdBQUcsRUFBQyxLQUFLO29CQUNyRCxnRkFBZ0Y7b0JBQ2hGLElBQUksRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLEdBQUcsR0FBRyxDQUFDO29CQUM1QixJQUFHLElBQUksRUFBQzt3QkFDSix3Q0FBd0M7d0JBQ3hDLElBQUksZUFBZSxHQUFHLG1DQUFtQyxDQUFDO3dCQUMxRCxJQUFJLFFBQVEsR0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxFQUFFLEtBQUssRUFBRSxFQUFDLFFBQVEsRUFBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNwSCxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUMsR0FBRyxDQUFDLENBQUM7cUJBQ2hEO3lCQUFJO3dCQUNELEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLE9BQU8sR0FBQywyQkFBMkIsQ0FBQyxDQUFBO3FCQUN6RDtnQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLG1CQUFtQixHQUFHLEtBQUs7b0JBQzNCLElBQUksRUFBRSxHQUFHLE1BQU0sYUFBRSxDQUFDLFFBQVEsQ0FBQyxzRUFBc0UsRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDM0csSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixFQUFFLENBQUM7b0JBQ2hELElBQUksVUFBVSxHQUFHLEVBQUU7eUJBQ2QsT0FBTyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzt5QkFDMUQsT0FBTyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzt5QkFDMUQsT0FBTyxDQUFDLCtCQUErQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO3lCQUN4RSxPQUFPLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ2pGLGtHQUFrRztvQkFDdEcsT0FBTyxVQUFVLENBQUE7Z0JBQ3JCLENBQUMsQ0FBQTtnQkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBQyxpQkFBaUIsRUFBRSxLQUFLLFdBQVUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJO29CQUNoRSxJQUFHO3dCQUNDLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxtQkFBbUIsRUFBRSxFQUFDLHdCQUF3QixDQUFDLENBQUMsR0FBRyxFQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUN0RjtvQkFBQSxPQUFNLEdBQUcsRUFBQzt3QkFDUCxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUMsSUFBSSxDQUFDLENBQUMsSUFBQSx1QkFBVSxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7cUJBQ3JEO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFDLG9DQUFvQyxFQUFFLEtBQUssV0FBVSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUk7b0JBQ25GLE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQWdCLEVBQUMsRUFBRSxDQUMvRCxNQUFNLENBQUMsS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FDM0YsQ0FBQyxDQUFDLEtBQUssQ0FBQztvQkFDVCxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFBLE9BQU8sQ0FBQSxDQUFDO3dCQUNyRSxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUMsQ0FBQSxPQUFPLENBQUEsQ0FBQyxDQUFBLEVBQUUsQ0FBQztvQkFDeEMsSUFBRzt3QkFDQyxNQUFNLE9BQU8sR0FBRzs0QkFDZCxNQUFNLEVBQUUsR0FBRyxRQUFRLEdBQUcsTUFBTSxzQkFBc0I7NEJBQ2xELFlBQVksRUFBRSxHQUFHLFFBQVEsR0FBRyxNQUFNLE1BQU07NEJBQ3hDLGFBQWEsRUFBRSwyQkFBMkIsUUFBUSxHQUFHLE1BQU0sR0FBRzs0QkFDOUQsT0FBTyxFQUFFO2dDQUNQO29DQUNFLEtBQUssRUFBRSxVQUFVLFFBQVEsY0FBYyxNQUFNLE1BQU07b0NBQ25ELE9BQU8sRUFBRSxPQUFPO29DQUNoQixNQUFNLEVBQUUsV0FBVztpQ0FDcEI7Z0NBQ0Q7b0NBQ0UsS0FBSyxFQUFFLFVBQVUsUUFBUSxjQUFjLE1BQU0sTUFBTTtvQ0FDbkQsT0FBTyxFQUFFLE9BQU87b0NBQ2hCLE1BQU0sRUFBRSxXQUFXO2lDQUNwQjtnQ0FDRDtvQ0FDRSxLQUFLLEVBQUUsVUFBVSxRQUFRLGNBQWMsTUFBTSxNQUFNO29DQUNuRCxPQUFPLEVBQUUsT0FBTztvQ0FDaEIsTUFBTSxFQUFFLFdBQVc7aUNBQ3BCO2dDQUNEO29DQUNFLEtBQUssRUFBRSxVQUFVLFFBQVEsY0FBYyxNQUFNLE1BQU07b0NBQ25ELE9BQU8sRUFBRSxPQUFPO29DQUNoQixNQUFNLEVBQUUsV0FBVztpQ0FDcEI7Z0NBQ0Q7b0NBQ0UsS0FBSyxFQUFFLFVBQVUsUUFBUSxlQUFlLE1BQU0sTUFBTTtvQ0FDcEQsT0FBTyxFQUFFLFNBQVM7b0NBQ2xCLE1BQU0sRUFBRSxXQUFXO2lDQUNwQjtnQ0FDRDtvQ0FDRSxLQUFLLEVBQUUsVUFBVSxRQUFRLGVBQWUsTUFBTSxNQUFNO29DQUNwRCxPQUFPLEVBQUUsU0FBUztvQ0FDbEIsTUFBTSxFQUFFLFdBQVc7aUNBQ3BCOzZCQUNGOzRCQUNELEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUF5QixDQUFDO3lCQUMvQyxDQUFBO3dCQUNELFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLEdBQUcsRUFBQyxHQUFHLENBQUMsQ0FBQztxQkFDN0U7b0JBQUEsT0FBTSxHQUFHLEVBQUM7d0JBQ1AsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUEsdUJBQVUsRUFBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO3FCQUN2RDtnQkFDTCxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7WUFDRCxhQUFhLENBQUMsT0FBd0I7Z0JBQ2xDLE9BQU87b0JBQ0gsV0FBVyxFQUFFLFVBQVU7b0JBQ3ZCLFNBQVMsRUFBRSxZQUFZO29CQUN2QixhQUFhLEVBQUUsU0FBUztvQkFDeEIsa0JBQWtCLEVBQUUsU0FBUztpQkFDaEMsQ0FBQTtZQUNMLENBQUM7WUFDUSxpQkFBaUI7Z0JBQ3RCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztnQkFDZCxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDMUIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxXQUFVLEdBQVcsRUFBRSxHQUFZLEVBQUUsS0FBa0I7b0JBQ3pGLFNBQVMsQ0FBQyxTQUFTLENBQUMsOEJBQThCLEVBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNwRSxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxXQUFVLEdBQVcsRUFBQyxHQUFZO29CQUN6RCxJQUFJLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUNuQyxDQUFDLE1BQWdCLEVBQUMsRUFBRSxDQUNwQixNQUFNLENBQUMsS0FBSyxDQUFDLGlEQUFpRCxFQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQzt5QkFDckYsZ0JBQWdCLEVBQUUsQ0FDdEIsQ0FBQztvQkFDRixJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO29CQUN4QixTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksRUFBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzFDLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxLQUFLLFdBQVUsR0FBVyxFQUFDLEdBQVk7b0JBQzdELFNBQVMsQ0FBQyxTQUFTLENBQUMsZUFBZSxHQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBQyxHQUFHLENBQUMsQ0FBQztnQkFDbkUsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFDLEtBQUssV0FBVSxHQUFXLEVBQUUsR0FBWSxFQUFFLElBQWE7b0JBQ2hGLElBQUcsR0FBRyxDQUFDLElBQUksSUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUUsT0FBTyxFQUFDO3dCQUN2QyxPQUFPLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxFQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTt3QkFDekQsT0FBTyxJQUFJLEVBQUUsQ0FBQztxQkFDakI7b0JBQ0QsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQzdCLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUMzQixJQUFJLElBQUksR0FBRyxtQkFBbUIsQ0FBQTtvQkFDOUIsSUFBSSxLQUFLLEdBQUcsTUFBTSxhQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNuQyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFdBQVUsUUFBZTt3QkFDdEQsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFDLEdBQUcsR0FBQyxRQUFRLENBQUM7d0JBQzdCLElBQUksSUFBSSxHQUFHLE1BQU0sYUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDL0IsSUFBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUM7NEJBQ2IsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUMsUUFBUSxDQUFDLENBQUM7eUJBQzlCO29CQUNMLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ0osR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNkLENBQUMsQ0FBQyxDQUFBO1lBQ04sQ0FBQztZQUNRLEtBQUssQ0FBQyxVQUFVO2dCQUNyQixNQUFNLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxFQUFFLEdBQUMsSUFBSSxDQUFDO2dCQUNaLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0NBQWdDLEdBQUcsS0FBSyxDQUFDO2dCQUNuRCxNQUFNLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssV0FBVSxNQUFnQjtvQkFDeEQsSUFBSSxTQUFTLEdBQUM7Ozs7Ozs7Ozs7O2FBV2IsQ0FBQztvQkFDRixJQUFJLE9BQU8sR0FBRzt3QkFDVixNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFO3dCQUMvRSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUU7d0JBQ3JILE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQzs7Ozs7OztpQkFPbEIsQ0FBQyxDQUFDLGdCQUFnQixFQUFFO3FCQUN4QixDQUFDO29CQUNGLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQ3ZDLEVBQUUsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEdBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztvQkFDL0MsRUFBRSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsR0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO29CQUM3QyxFQUFFLENBQUMsTUFBTSxDQUFDLGlCQUFpQixHQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQSxFQUFFLENBQUEsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUEsRUFBRSxDQUFBLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUE7b0JBQy9HLHVEQUF1RDtvQkFDdkQscURBQXFEO29CQUNyRCxxREFBcUQ7Z0JBQ3pELENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQy9CLENBQUM7WUFDUSxrQkFBa0I7Z0JBQ3ZCLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLHNCQUFTLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ1EsY0FBYyxDQUFDLEdBQVcsRUFBRSxJQUFtQjtnQkFDcEQsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO2dCQUNkLElBQUksUUFBUSxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUN4QyxJQUFJLGVBQWUsR0FBMkIsUUFBUSxDQUFBLENBQUMsQ0FBQTtvQkFDbkQsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtpQkFDNUcsQ0FBQSxDQUFDLENBQUE7b0JBQ0UsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtpQkFDdEcsQ0FBQztnQkFDRixJQUFHLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFDO29CQUN2QixlQUFlLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQzdEO2dCQUNELElBQUksaUJBQWlCLEdBQTRCO29CQUM3QyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBQyxzQkFBc0IsRUFBRSxJQUFJLEVBQUMseUJBQXlCLEVBQUU7b0JBQ3ZILEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFDLDBCQUEwQixFQUFFLElBQUksRUFBQyw2QkFBNkIsRUFBRTtvQkFDbkksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBQyw0QkFBNEIsRUFBRSxJQUFJLEVBQUMsK0JBQStCLEVBQUU7b0JBQy9JLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQyxhQUFhLEVBQUU7b0JBQ2xELEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBQyxTQUFTLEVBQUUsZUFBZSxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUMsY0FBYyxFQUFFO29CQUNuRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUMsU0FBUyxFQUFFLGVBQWUsRUFBQyxnQkFBZ0IsRUFBRSxJQUFJLEVBQUMsb0JBQW9CLEVBQUU7b0JBQ3JILEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFHLElBQUksRUFBQyxnQkFBZ0IsRUFBRTtvQkFDN0QsMEVBQTBFO29CQUMxRSxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUEsRUFBRSxDQUFBLENBQUMsQ0FBQyxJQUFJLElBQUUsaUJBQWlCLENBQUM7eUJBQ3RFLE1BQU0sQ0FBQyxDQUFDLENBQUEsRUFBRSxDQUFBLENBQUMsUUFBUSxJQUFJLElBQUk7MkJBQ3JCLENBQUMsQ0FBQyxJQUFJLElBQUUsWUFBWTsyQkFDcEIsQ0FBQyxDQUFDLElBQUksSUFBRSxZQUFZLENBQzFCO29CQUNELEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUcsSUFBSSxFQUFDLHlCQUF5QixFQUFFO29CQUMvRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLHdCQUF3QixFQUFFO2lCQUNsRyxDQUFDO2dCQUNGLElBQUksU0FBUyxHQUE0QjtvQkFDckMsR0FBRyxpQkFBaUI7b0JBQ3BCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7b0JBQ3RHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7b0JBQ3RHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtvQkFDbEgsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO29CQUNqSCxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7b0JBQy9HLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtvQkFDbEgsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO29CQUNqSCxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO29CQUNwRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7b0JBQ3BILEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtvQkFDakgsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO29CQUNsSCxHQUFJLGVBQWU7aUJBQ3RCLENBQUE7Z0JBQ0QsT0FBTyxTQUFTLENBQUE7Z0JBQ2hCLHFEQUFxRDtZQUN6RCxDQUFDO1lBQ0QsS0FBSyxDQUFDLGFBQWE7Z0JBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO2dCQUMxRCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsRUFBRTtvQkFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBQy9HLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFBO29CQUNyRCxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUM7O2FBRTVELENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsY0FBYyxHQUFHLENBQUMsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDOzthQUU3RCxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxDQUFDLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUMzSCxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQTtvQkFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUM7O2FBRWhFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUM7O1NBRXJFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDcEIsQ0FBQyxDQUFDLENBQUE7Z0JBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM3QixDQUFDO1lBQ0Qsc0NBQXNDO1lBQ3RDLGtCQUFrQjtZQUNsQiwwREFBMEQ7WUFDMUQsaUhBQWlIO1lBQ2pILDBDQUEwQztZQUMxQyxPQUFPO1lBQ0UsVUFBVSxDQUFDLEdBQVc7O2dCQUMzQixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQ2QsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUMsSUFBRyxhQUFhLENBQUMsSUFBSSxFQUFDO29CQUNsQixJQUFHLENBQUEsTUFBQSxHQUFHLENBQUMsSUFBSSwwQ0FBRSxHQUFHLEtBQUcsSUFBSSxLQUFJLE1BQUEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsMENBQUUsU0FBUyxDQUFBLEVBQUM7d0JBQ3RFLE9BQU8sRUFBQyxTQUFTLEVBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsYUFBYSxFQUFDLENBQUE7cUJBQ2hGO3lCQUFJO3dCQUNELE9BQU8sRUFBQyxLQUFLLEVBQUUsTUFBQSxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQywwQ0FBRSxLQUFLLEVBQUUsR0FBRyxhQUFhLEVBQUMsQ0FBQTtxQkFDL0U7aUJBQ0o7Z0JBQ0QsT0FBTyxFQUFDLEtBQUssRUFBQyxFQUFFLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsYUFBYSxFQUFDLENBQUM7WUFDakUsQ0FBQztZQUNRLGlCQUFpQjtnQkFDdEIsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzlDLE9BQU8sRUFBQyxTQUFTLEVBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsYUFBYSxFQUFDLENBQUM7WUFDcEYsQ0FBQztZQUNRLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxHQUFXOztnQkFDdEQsT0FBTztvQkFDSCxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsK0JBQStCLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3JELEtBQUssRUFBRSxNQUFBLEdBQUcsQ0FBQyxJQUFJLDBDQUFFLEtBQUs7aUJBQ3pCLENBQUE7WUFDTCxDQUFDO1lBQ0QsMkJBQTJCO2dCQUN2QixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQ2QsSUFBSSxVQUFVLEdBQUc7b0JBQ2IsT0FBTyxFQUFFLGNBQWM7b0JBQ3ZCLE9BQU8sRUFBRSxRQUFRO29CQUNqQixLQUFLLEVBQUU7d0JBQ0gsT0FBTzt3QkFDUCxTQUFTO3dCQUNULDZCQUE2Qjt3QkFDN0IsaUNBQWlDO3dCQUNqQyxtQ0FBbUM7d0JBQ25DLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQix3QkFBd0I7d0JBQ3hCLG9CQUFvQjt3QkFDcEIsa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixxQkFBcUI7d0JBQ3JCLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQiw0QkFBNEI7d0JBQzVCLGlCQUFpQjt3QkFDakIsb0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLHNCQUFzQjt3QkFDdEIsa0JBQWtCO3dCQUNsQixrQkFBa0I7d0JBQ2xCLGtDQUFrQzt3QkFDbEMsc0JBQXNCO3dCQUN0QixvQkFBb0I7d0JBQ3BCLHNCQUFzQjt3QkFDdEIsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsMEJBQTBCO3dCQUMxQixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4QixrQkFBa0I7d0JBQ2xCLGtCQUFrQjt3QkFDbEIsNkJBQTZCO3dCQUM3QixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsOEJBQThCO3dCQUM5Qiw2QkFBNkI7d0JBQzdCLDRCQUE0Qjt3QkFDNUIsOEJBQThCO3dCQUM5QiwwQkFBMEI7d0JBQzFCLGtDQUFrQzt3QkFDbEMsNEJBQTRCO3dCQUM1Qiw2QkFBNkI7d0JBQzdCLGlDQUFpQzt3QkFDakMsaUNBQWlDO3dCQUNqQyxpQkFBaUI7d0JBQ2pCLDZCQUE2Qjt3QkFDN0IsNEJBQTRCO3dCQUM1QiwwQkFBMEI7d0JBQzFCLDZCQUE2Qjt3QkFDN0IsNEJBQTRCO3dCQUM1QixpQ0FBaUM7d0JBQ2pDLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxvQkFBb0I7d0JBQ3BCLGtCQUFrQjt3QkFDbEIsc0JBQXNCO3dCQUN0QixzQkFBc0I7d0JBQ3RCLDhCQUE4Qjt3QkFDOUIsd0JBQXdCO3dCQUN4Qix5QkFBeUI7d0JBQ3pCLGNBQWM7d0JBQ2QsdUJBQXVCO3dCQUN2QiwwQkFBMEI7d0JBQzFCLHFCQUFxQjt3QkFDckIsbUNBQW1DO3dCQUNuQyxxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2Qsd0JBQXdCO3dCQUN4QiwwQkFBMEI7d0JBQzFCLHdCQUF3QjtxQkFDM0I7b0JBQ0QsUUFBUSxFQUFFO3dCQUNOLEVBQUMsTUFBTSxFQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUMsU0FBUyxFQUFDO3dCQUN0QyxFQUFDLE1BQU0sRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFDLFNBQVMsRUFBQzt3QkFDdkMsRUFBQyxNQUFNLEVBQUMscUJBQXFCLEVBQUUsVUFBVSxFQUFDLFNBQVMsRUFBQzt3QkFDcEQsRUFBQyxNQUFNLEVBQUMsb0JBQW9CLEVBQUUsVUFBVSxFQUFDLFNBQVMsRUFBQztxQkFDdEQ7aUJBQ0osQ0FBQztnQkFDRixPQUFPLFVBQVUsQ0FBQTtZQUNyQixDQUFDO1lBQ0QsT0FBTyxDQUFDLE9BQWU7O2dCQUNuQixJQUFJLElBQUksR0FBa0IsRUFBRSxDQUFDO2dCQUM3QixJQUFJLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN2RyxJQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBRSxLQUFLLEVBQUM7b0JBQ2hDLElBQUcsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxTQUFTLENBQUMsT0FBTyxFQUFDO3dCQUNoQyxJQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxJQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsSUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLElBQUUsTUFBTSxFQUFDOzRCQUM1SSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUMsUUFBUSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsTUFBTSxFQUFFLGlCQUFpQixFQUFDLElBQUksRUFBQyxDQUFDLENBQUE7eUJBQ3BFOzZCQUFJOzRCQUNELElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxRQUFRLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyxjQUFjLEVBQUUsSUFBSSxFQUFDLFFBQVEsRUFBQyxDQUFDLENBQUE7eUJBQ25FO3dCQUNELElBQUksQ0FBQyxJQUFJLENBQ0wsRUFBQyxRQUFRLEVBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFDLGFBQWEsRUFBQyxDQUNsRCxDQUFDO3FCQUNMO2lCQUNKO3FCQUFJO29CQUNELElBQUcsTUFBQSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLEtBQUssMENBQUUsTUFBTSxFQUFDO3dCQUM1QixJQUFJLGNBQWMsR0FBa0IsRUFBRSxDQUFBO3dCQUN0QyxJQUFJLE1BQUEsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxLQUFLLDBDQUFFLFdBQVcsRUFBRTs0QkFDbkMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO3lCQUNsRzt3QkFDRCxjQUFjLENBQUMsSUFBSSxDQUNmLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLG1CQUFtQixFQUFFLEVBQUUsRUFDaEgsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLG1CQUFtQixFQUFFLEVBQUUsRUFDMUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUcsS0FBSyxFQUFFLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLG1CQUFtQixFQUFFLEVBQUUsQ0FDN0ksQ0FBQzt3QkFDRixJQUFJLENBQUMsSUFBSSxDQUNMLEVBQUMsUUFBUSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsWUFBWSxFQUFFLEtBQUssRUFBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBQyxFQUNyRixFQUFDLFFBQVEsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUMsV0FBVyxFQUFFLFdBQVcsRUFBQztnQ0FDL0QsRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxhQUFhLEVBQUUsS0FBSyxFQUFDLHlCQUF5QixFQUFDO2dDQUN2RSxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUMseUJBQXlCLEVBQUM7Z0NBQ3ZFLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsWUFBWSxFQUFHLEtBQUssRUFBQyx3QkFBd0IsRUFBRTs2QkFDMUUsRUFBQyxFQUNGLEVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtnQ0FDNUMsRUFBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFDO2dDQUNwRCxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBQzs2QkFDM0YsRUFBQyxDQUNMLENBQUM7cUJBQ0w7b0JBQ0QsSUFBRyxNQUFBLE1BQUEsT0FBTyxDQUFDLEtBQUssMENBQUUsS0FBSywwQ0FBRSxXQUFXLEVBQUM7d0JBQ2pDLElBQUksQ0FBQyxJQUFJLENBQ0wsRUFBQyxRQUFRLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFDO2dDQUMxQyxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUMsSUFBSSxFQUFDO2dDQUNuRixFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsdUJBQXVCLEVBQUM7Z0NBQ2pFLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxFQUFLLEtBQUssRUFBQyxvQkFBb0IsRUFBRztnQ0FDaEUsRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxRQUFRLEVBQUcsS0FBSyxFQUFDLHNCQUFzQixFQUFDO2dDQUNoRSxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0sRUFBSyxLQUFLLEVBQUMsb0JBQW9CLEVBQUc7Z0NBQ2hFLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsZUFBZSxFQUFVLEtBQUssRUFBQyw2QkFBNkIsRUFBRzs2QkFDMUYsRUFBQyxDQUNMLENBQUE7cUJBQ0o7b0JBQ0QsSUFBRyxNQUFBLE1BQUEsT0FBTyxDQUFDLEtBQUssMENBQUUsU0FBUywwQ0FBRSxRQUFRLEVBQUM7d0JBQ2xDLElBQUksQ0FBQyxJQUFJLENBQ0wsRUFBQyxRQUFRLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyxVQUFVLEVBQUUsV0FBVyxFQUFDO2dDQUMzQyxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLFdBQVcsRUFBSztnQ0FDeEMsRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxlQUFlLEVBQUM7Z0NBQ3hDLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsaUJBQWlCLEVBQUM7Z0NBQzFDLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsYUFBYSxFQUFHO2dDQUN4QyxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLGFBQWEsRUFBSSxLQUFLLEVBQUMsY0FBYyxFQUFFOzZCQUNsRSxFQUFDLENBQ0wsQ0FBQztxQkFDTDtvQkFDRCxJQUFJLGNBQWMsR0FBa0IsRUFBRSxDQUFDO29CQUN2QyxJQUFHLE1BQUEsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxLQUFLLDBDQUFFLFdBQVcsRUFBQzt3QkFDakMsY0FBYyxDQUFDLElBQUksQ0FDZixFQUFDLFFBQVEsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBQztnQ0FDM0QsRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQztnQ0FDNUMsRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxRQUFRLEVBQUM7NkJBQ3BDLEVBQUMsQ0FDTCxDQUFDO3FCQUNMO29CQUNELElBQUcsTUFBQSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLGdCQUFnQiwwQ0FBRSxNQUFNLEVBQUM7d0JBQ3ZDLGNBQWMsQ0FBQyxJQUFJLENBQ2YsRUFBQyxRQUFRLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyxXQUFXLEVBQUUsV0FBVyxFQUFDO2dDQUM1QyxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLFlBQVksRUFBQztnQ0FDckMsRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxhQUFhLEVBQUcsS0FBSyxFQUFDLHdCQUF3QixFQUFDO2dDQUN2RSxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLE9BQU8sRUFBUyxLQUFLLEVBQUMsWUFBWSxFQUFDO2dDQUMzRCxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLE9BQU8sRUFBUyxLQUFLLEVBQUMsaUJBQWlCLEVBQUM7Z0NBQ2hFLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsYUFBYSxFQUFHLEtBQUssRUFBQyx1QkFBdUIsRUFBQzs2QkFDekUsRUFBQyxDQUNMLENBQUM7cUJBQ0w7b0JBQ0QsSUFBRyxPQUFPLENBQUMsU0FBUyxFQUFDO3dCQUNqQixjQUFjLENBQUMsSUFBSSxDQUNmLEVBQUMsUUFBUSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsa0JBQWtCLEVBQUUsS0FBSyxFQUFDLGtCQUFrQixFQUFFLFdBQVcsRUFBQztnQ0FDN0UsRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxTQUFTLEVBQUM7Z0NBQ2xDLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsVUFBVSxFQUFDO2dDQUNuQyxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLGtCQUFrQixFQUFDOzZCQUM5QyxFQUFDLEVBQ0YsRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxZQUFZLEVBQUMsQ0FDeEMsQ0FBQTtxQkFDSjtvQkFDRCxJQUFHLENBQUEsTUFBQSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLEtBQUssMENBQUUsV0FBVyxNQUFJLE1BQUEsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxTQUFTLDBDQUFFLFFBQVEsQ0FBQSxFQUFDO3dCQUN2RSxjQUFjLENBQUMsSUFBSSxDQUNmLEVBQUMsUUFBUSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBQztnQ0FDM0MsRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxVQUFVLEVBQUUsaUJBQWlCLEVBQUMsSUFBSSxFQUFDO2dDQUMzRCxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLE9BQU8sRUFBQztnQ0FDaEMsRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxVQUFVLEVBQUM7Z0NBQ25DLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsZ0JBQWdCLEVBQUM7NkJBQzVDLEVBQUMsQ0FDTCxDQUFBO3FCQUNKO29CQUNELElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxRQUFRLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyxZQUFZLEVBQUUsV0FBVyxFQUFDLGNBQWMsRUFBQyxDQUFDLENBQUM7aUJBQy9FO2dCQUNELE9BQU8sRUFBQyxJQUFJLEVBQUMsQ0FBQztZQUNsQixDQUFDO1lBQ1EsZ0JBQWdCO2dCQUNyQixJQUFJLEVBQUUsR0FBQyxJQUFJLENBQUM7Z0JBQ1osS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxrQkFBa0IsR0FBQztvQkFDcEIsR0FBRyxJQUFJLENBQUMsa0JBQWtCO29CQUN4QixLQUFLLEVBQUwsbUJBQUs7b0JBQ0wsUUFBUSxFQUFSLHlCQUFRO29CQUNSLFFBQVEsRUFBUix5QkFBUTtvQkFDUixjQUFjLEVBQWQscUNBQWM7b0JBQ2QsdUJBQXVCLEVBQXZCLDZDQUF1QjtvQkFDdkIsdUJBQXVCLEVBQXZCLDZDQUF1QjtvQkFDdkIsc0JBQXNCLEVBQXRCLDRDQUFzQjtvQkFDdEIsaUJBQWlCLEVBQWpCLDJDQUFpQjtvQkFDakIsYUFBYSxFQUFiLG1DQUFhO29CQUNiLFlBQVksRUFBWixpQ0FBWTtvQkFDWixZQUFZLEVBQVosaUNBQVk7b0JBQ1osUUFBUSxFQUFSLHlCQUFRO29CQUNSLGNBQWMsRUFBZCxxQ0FBYztvQkFDZCxrQkFBa0IsRUFBbEIsNkNBQWtCO29CQUNsQixNQUFNLEVBQU4scUJBQU07b0JBQ04sVUFBVSxFQUFWLDZCQUFVO29CQUNWLE9BQU8sRUFBUCx1QkFBTztvQkFDUCxPQUFPLEVBQVAsdUJBQU87b0JBQ1AsUUFBUSxFQUFSLHlCQUFRO29CQUNSLGdCQUFnQixFQUFoQix5Q0FBZ0I7b0JBQ2hCLEdBQUcsRUFBSCxlQUFHO29CQUNILGFBQWEsRUFBYixtQ0FBYTtvQkFDYixVQUFVLEVBQVYsNkJBQVU7b0JBQ1YsV0FBVyxFQUFYLCtCQUFXO29CQUNYLE9BQU8sRUFBUCx1QkFBTztvQkFDUCxLQUFLLEVBQUwsbUJBQUs7b0JBQ0wsZ0JBQWdCLEVBQWhCLHlDQUFnQjtvQkFDaEIsTUFBTSxFQUFOLHFCQUFNO29CQUNOLFVBQVUsRUFBViw2QkFBVTtvQkFDVixlQUFlLEVBQWYsa0NBQWU7b0JBQ2YsZUFBZSxFQUFmLGtDQUFlO29CQUNmLGVBQWUsRUFBZixrQ0FBZTtvQkFDZixZQUFZLEVBQVosaUNBQVk7b0JBQ1osd0JBQXdCLEVBQXhCLHlEQUF3QjtvQkFDeEIsZ0JBQWdCLEVBQWhCLHlDQUFnQjtvQkFDaEIsWUFBWSxFQUFaLGlDQUFZO29CQUNaLFlBQVksRUFBWixpQ0FBWTtvQkFDWixZQUFZLEVBQVosaUNBQVk7b0JBQ1osVUFBVSxFQUFWLDZCQUFVO29CQUNWLGNBQWMsRUFBZCxxQ0FBYztvQkFDZCxvQkFBb0IsRUFBcEIsaURBQW9CO29CQUNwQixnQkFBZ0IsRUFBaEIseUNBQWdCO29CQUNoQixhQUFhLEVBQWIsbUNBQWE7b0JBQ2IsZUFBZSxFQUFmLHVDQUFlO29CQUNmLGtCQUFrQixFQUFFLE9BQU8sQ0FBQSxFQUFFLENBQUEsSUFBQSxtQ0FBYSxFQUFDLE9BQU8sRUFDaEQsRUFBQyxNQUFNLEVBQUMsc0JBQXNCLEVBQUUsS0FBSyxFQUFDLG1DQUFtQyxFQUFFLFdBQVcsRUFBQyxDQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUMsTUFBTSxFQUFDLENBQUMsRUFBRSxXQUFXLEVBQUMsV0FBVyxFQUFFLENBQ3JKO29CQUNDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQSxFQUFFLENBQUEsSUFBQSxtQ0FBYSxFQUFDLE9BQU8sRUFDbEQsRUFBQyxNQUFNLEVBQUMsc0JBQXNCLEVBQUUsS0FBSyxFQUFDLHFDQUFxQyxFQUFFLFdBQVcsRUFBQyxDQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUMsTUFBTSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsV0FBVyxFQUFFLFFBQVEsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBQyxXQUFXLEVBQUUsQ0FDOUw7b0JBQ0Msa0JBQWtCLEVBQUUsT0FBTyxDQUFBLEVBQUUsQ0FBQSxJQUFBLG1DQUFhLEVBQUMsT0FBTyxFQUNoRCxFQUFDLE1BQU0sRUFBQyxzQkFBc0IsRUFBRSxLQUFLLEVBQUMsc0JBQXNCLEVBQUUsV0FBVyxFQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFFLFFBQVEsRUFBQyxNQUFNLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxXQUFXLEVBQUUsUUFBUSxFQUFDLFNBQVMsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUMsU0FBUyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsaUJBQWlCLEVBQUUsUUFBUSxFQUFDLE1BQU0sRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUMsTUFBTSxFQUFDLENBQUMsRUFBQyxDQUNuUTtvQkFDQywyQkFBMkIsRUFBRSxPQUFPLENBQUEsRUFBRSxDQUFBLElBQUEsbUNBQWEsRUFBQyxPQUFPLEVBQ3pELEVBQUMsTUFBTSxFQUFDLHNCQUFzQixFQUFFLEtBQUssRUFBQywrQkFBK0IsRUFBRSxXQUFXLEVBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxlQUFlLEVBQUUsUUFBUSxFQUFDLFFBQVEsRUFBQyxDQUFDLEVBQUMsQ0FDbEk7b0JBQ0MscUJBQXFCLEVBQUUsT0FBTyxDQUFBLEVBQUUsQ0FBQSxJQUFBLG1DQUFhLEVBQUMsT0FBTyxFQUNuRCxFQUFDLE1BQU0sRUFBQyxzQkFBc0IsRUFBRSxLQUFLLEVBQUMseUJBQXlCLEVBQUUsV0FBVyxFQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsU0FBUyxFQUFFLFFBQVEsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLENBQ3ZIO29CQUNDLFNBQVMsRUFBVCwyQkFBUztvQkFDVCxPQUFPLEVBQVAsdUJBQU87b0JBQ1AsT0FBTyxFQUFQLHVCQUFPO29CQUNQLFFBQVEsRUFBUix5QkFBUTtvQkFDUixXQUFXLEVBQVgsK0JBQVc7b0JBQ1gsV0FBVyxFQUFYLCtCQUFXO29CQUNYLFlBQVksRUFBWixpQ0FBWTtpQkFDakIsQ0FBQTtnQkFDRCxFQUFFLENBQUMsdUJBQXVCLENBQUMsZUFBZSxFQUFDLFVBQVMsUUFBUSxFQUFFLE9BQU87b0JBQ2pFLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVMsS0FBSzt3QkFDbEMsSUFBRyxLQUFLLENBQUMsSUFBSSxJQUFFLG1CQUFtQixFQUFDOzRCQUMvQixJQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUM7Z0NBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQywwREFBMEQsQ0FBQyxDQUFDOzZCQUM3RTs0QkFDRCxLQUFLLENBQUMsT0FBTyxHQUFDLElBQUksQ0FBQzt5QkFDdEI7b0JBQ0wsQ0FBQyxDQUFDLENBQUE7Z0JBQ04sQ0FBQyxDQUFDLENBQUE7Z0JBQ0YsRUFBRSxDQUFDLHVCQUF1QixDQUFDLGlCQUFpQixFQUFDLFVBQVMsUUFBUSxFQUFFLE9BQU87O29CQUNuRSxRQUFRLENBQUMsR0FBRyxHQUFDLEVBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBQyxJQUFJLEVBQUMsQ0FBQztvQkFDN0MsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFDdEIsRUFBQyxJQUFJLEVBQUMsVUFBVSxFQUFNLFFBQVEsRUFBQyxNQUFNLEVBQU8sUUFBUSxFQUFFLEtBQUssRUFBQyxFQUM1RCxFQUFDLElBQUksRUFBQyxPQUFPLEVBQVMsUUFBUSxFQUFDLFFBQVEsRUFBSyxRQUFRLEVBQUUsS0FBSyxFQUFDLEVBQzVELEVBQUMsSUFBSSxFQUFDLFNBQVMsRUFBTyxRQUFRLEVBQUMsUUFBUSxFQUFLLFFBQVEsRUFBRSxLQUFLLEVBQUMsRUFDNUQsRUFBQyxJQUFJLEVBQUMsUUFBUSxFQUFRLFFBQVEsRUFBQyxRQUFRLEVBQUssUUFBUSxFQUFFLEtBQUssRUFBQyxDQUMvRCxDQUFDO29CQUNGLFFBQVEsQ0FBQyxRQUFRLEdBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUEsQ0FBQztvQkFDM0UsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBUyxLQUFLOzt3QkFDbEMsSUFBRyxLQUFLLENBQUMsSUFBSSxJQUFFLGNBQWMsRUFBQzs0QkFDMUIsS0FBSyxDQUFDLE9BQU8sR0FBQyxLQUFLLENBQUM7eUJBQ3ZCO3dCQUNELElBQUcsS0FBSyxDQUFDLElBQUksSUFBRSxlQUFlLEVBQUM7NEJBQzNCLEtBQUssQ0FBQyxRQUFRLEdBQUMsT0FBTyxDQUFDLE9BQU8sS0FBSSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUEsQ0FBQzt5QkFDekU7b0JBQ0wsQ0FBQyxDQUFDLENBQUE7b0JBQ0YsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUMsV0FBVyxFQUFRLFFBQVEsRUFBQyxNQUFNO3dCQUN2RCxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBQyxLQUFLO3FCQUNuQyxDQUFDLENBQUE7b0JBQ0YsUUFBUSxDQUFDLEdBQUksQ0FBQyxJQUFJLEdBQUM7Ozs7YUFJbEIsQ0FBQTtnQkFDTCxDQUFDLENBQUMsQ0FBQTtnQkFDRixFQUFFLENBQUMsdUJBQXVCLENBQUMsWUFBWSxFQUFDLFVBQVMsUUFBUSxFQUFFLE9BQU87b0JBQzlELFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUM7d0JBQ3ZCLElBQUksRUFBQyxlQUFlO3dCQUNwQixRQUFRLEVBQUMsT0FBTzt3QkFDaEIsUUFBUSxFQUFFLEtBQUs7cUJBQ2xCLENBQUMsQ0FBQztvQkFDSCxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDO3dCQUN2QixJQUFJLEVBQUMsaUJBQWlCO3dCQUN0QixRQUFRLEVBQUMsU0FBUzt3QkFDbEIsWUFBWSxFQUFFLEtBQUs7d0JBQ25CLFFBQVEsRUFBRSxPQUFPLENBQUMsT0FBTyxJQUFFLENBQUMsT0FBTyxFQUFDLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO3FCQUFDLENBQ3BGLENBQUM7Z0JBQ04sQ0FBQyxDQUFDLENBQUE7Z0JBQ0YsRUFBRSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsRUFBQyxVQUFTLFFBQVEsRUFBRSxPQUFPO29CQUM1RCxJQUFJLGVBQWUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBQyxFQUFFLENBQUEsS0FBSyxDQUFDLElBQUksSUFBSSxhQUFhLENBQUUsQ0FBQztvQkFDbEYsSUFBSSxXQUFXLEdBQUcsQ0FBQyxPQUFPLEVBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3BFLGVBQWUsQ0FBQyxLQUFLLEdBQUcsRUFBQyxNQUFNLEVBQUMsV0FBVyxFQUFFLE1BQU0sRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDO2dCQUM1RSxDQUFDLENBQUMsQ0FBQTtnQkFDRix1RUFBdUU7Z0JBQ3ZFLGdHQUFnRztnQkFDaEcsS0FBSztZQUNULENBQUM7U0FDRixDQUFBO0lBQ0gsQ0FBQztJQXZwQkQsMENBdXBCQztJQUVVLFFBQUEsU0FBUyxHQUFHLGVBQWUsQ0FBQyxJQUFBLHNDQUFzQixFQUFDLElBQUEsc0NBQXNCLEVBQUMsSUFBQSwrQkFBZSxFQUFDLElBQUEsaUNBQWlCLEVBQUMsSUFBQSxtQ0FBbUIsRUFBQywwQkFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgKiBhcyBwcm9jZXNhbWllbnRvIGZyb20gXCJwcm9jZXNhbWllbnRvXCI7XHJcbmltcG9ydCB7ZW1lcmdlQXBwUHJvY2VzYW1pZW50bywgZW1lcmdlQXBwQ29uc2lzdGVuY2lhcywgZW1lcmdlQXBwVmFyQ2FsLCBlbWVyZ2VBcHBEYXRvc0V4dCwgZW1lcmdlQXBwT3BlcmF0aXZvcywgQXBwQmFja2VuZCwgQ2xpZW50TW9kdWxlRGVmaW5pdGlvbiwgT3B0c0NsaWVudFBhZ2V9IGZyb20gXCJwcm9jZXNhbWllbnRvXCI7XHJcbmltcG9ydCB7Z2V0T3BlcmF0aXZvQWN0dWFsLCBQcm9jZWR1cmVzRG1FbmN1fSBmcm9tIFwiLi9wcm9jZWR1cmVzLWRtZW5jdVwiO1xyXG5cclxuaW1wb3J0ICogYXMgcGcgZnJvbSBcInBnLXByb21pc2Utc3RyaWN0XCI7XHJcbmltcG9ydCB7anNvbn0gZnJvbSBcInBnLXByb21pc2Utc3RyaWN0XCI7XHJcbmltcG9ydCAqIGFzIG1pbmlUb29scyBmcm9tIFwibWluaS10b29sc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgQ2xpZW50LCBDb250ZXh0LCBDb3JlRnVuY3Rpb25QYXJhbWV0ZXJzLCBcclxuICAgIE1lbnVJbmZvQmFzZSwgXHJcbiAgICBSZXF1ZXN0LCBSZXNwb25zZSxcclxuICAgIFN1Zmlqb3NBbWJpZW50ZSxcclxufSBmcm9tIFwiLi90eXBlcy1kbWVuY3VcIjtcclxuXHJcbmltcG9ydCB7IHVuZXhwZWN0ZWQgfSBmcm9tIFwiY2FzdC1lcnJvclwiO1xyXG5cclxuaW1wb3J0ICogYXMgeWF6bCBmcm9tIFwieWF6bFwiO1xyXG5pbXBvcnQgeyBOZXh0RnVuY3Rpb24gfSBmcm9tIFwiZXhwcmVzcy1zZXJ2ZS1zdGF0aWMtY29yZVwiO1xyXG5pbXBvcnQgKiBhcyBsaWtlQXIgZnJvbSBcImxpa2UtYXJcIjtcclxuaW1wb3J0ICogYXMgZXhwcmVzcyBmcm9tIFwiZXhwcmVzc1wiO1xyXG5cclxuaW1wb3J0IHtwcm9taXNlcyBhcyBmcyB9IGZyb20gXCJmc1wiO1xyXG5cclxuaW1wb3J0IHsgcm9sZXMgICAgICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXJvbGVzXCI7XHJcbmltcG9ydCB7IHBlcnNvbmFsICAgICAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1wZXJzb25hbFwiO1xyXG5pbXBvcnQgeyByZWNlcGNpb25pc3RhcyAgICAgIH0gZnJvbSBcIi4vdGFibGUtcmVjZXBjaW9uaXN0YXNcIjtcclxuaW1wb3J0IHsgZW5jdWVzdGFkb3Jlc19hc2lnbmFkb3MgfSBmcm9tIFwiLi90YWJsZS1lbmN1ZXN0YWRvcmVzXCI7XHJcbmltcG9ydCB7IHJlY3VwZXJhZG9yZXNfYXNpZ25hZG9zIH0gZnJvbSBcIi4vdGFibGUtZW5jdWVzdGFkb3Jlc1wiO1xyXG5pbXBvcnQgeyBzdXBlcnZpc29yZXNfYXNpZ25hZG9zICB9IGZyb20gXCIuL3RhYmxlLWVuY3Vlc3RhZG9yZXNcIjtcclxuaW1wb3J0IHsgbWlzX2VuY3Vlc3RhZG9yZXMgICB9IGZyb20gXCIuL3RhYmxlLW1pc19lbmN1ZXN0YWRvcmVzXCI7XHJcbmltcG9ydCB7IHJlY3VwZXJhZG9yZXMgICAgICAgfSBmcm9tIFwiLi90YWJsZS1yZWN1cGVyYWRvcmVzXCI7XHJcbmltcG9ydCB7IHN1cGVydmlzb3JlcyAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1zdXBlcnZpc29yZXNcIjtcclxuaW1wb3J0IHsgcGVyc29uYWxfcm9sICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXBlcnNvbmFsX3JvbFwiO1xyXG5pbXBvcnQgeyBwZXJtaXNvcyAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtcGVybWlzb3NcIjtcclxuaW1wb3J0IHsgcm9sZXNfcGVybWlzb3MgICAgICB9IGZyb20gXCIuL3RhYmxlLXJvbGVzX3Blcm1pc29zXCI7XHJcbmltcG9ydCB7IHBhcmFtZXRyb3MgICAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1wYXJhbWV0cm9zXCI7XHJcbmltcG9ydCB7IHJvbGVzX3N1Ym9yZGluYWRvcyAgfSBmcm9tIFwiLi90YWJsZS1yb2xlc19zdWJvcmRpbmFkb3NcIjtcclxuXHJcbmltcG9ydCB7bm9fcmVhICAgICAgICAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1ub19yZWFcIjtcclxuaW1wb3J0IHtub19yZWFfc3VwICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLW5vX3JlYV9zdXBcIjtcclxuaW1wb3J0IHt0ZW0gICAgICAgICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXRlbVwiO1xyXG5pbXBvcnQge3RlbV9yZWNlcGNpb24gICAgICAgIH0gZnJvbSBcIi4vdGFibGUtdGVtX3JlY2VwY2lvblwiO1xyXG5pbXBvcnQge3NlbWFuYXMgICAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtc2VtYW5hc1wiO1xyXG5pbXBvcnQgeyB1c3VhcmlvcyAgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS11c3Vhcmlvcyc7XHJcbmltcG9ydCB7IG9wZXJhY2lvbmVzICAgICAgICAgfSBmcm9tICcuL3RhYmxlLW9wZXJhY2lvbmVzJztcclxuaW1wb3J0IHsgY29tdW5hcyAgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtY29tdW5hcyc7XHJcbmltcG9ydCB7IGFyZWFzICAgICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLWFyZWFzJztcclxuaW1wb3J0IHsgc2luY3Jvbml6YWNpb25lcyAgICB9IGZyb20gJy4vdGFibGUtc2luY3Jvbml6YWNpb25lcyc7XHJcbmltcG9ydCB7IHRhcmVhcyAgICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLXRhcmVhcyc7XHJcbmltcG9ydCB7IHRhcmVhc190ZW0sIFxyXG4gICAgICAgICB0YXJlYXNfdGVtX2VuY3UsIFxyXG4gICAgICAgICB0YXJlYXNfdGVtX3JlY3UsIFxyXG4gICAgICAgICB0YXJlYXNfdGVtX3N1cGUgICAgIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfdGVtJztcclxuaW1wb3J0IHsgdGFyZWFzX2FyZWFzICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgYXJlYXNfYXNpZ25hY2lvbl9nZW5lcmFsIH0gZnJvbSAnLi90YWJsZS1hcmVhc19hc2lnbmFjaW9uX2dlbmVyYWwnO1xyXG5pbXBvcnQgeyBncmlsbGFfaG9qYV9ydXRhICAgIH0gZnJvbSAnLi90YWJsZS1ncmlsbGFfaG9qYV9ydXRhJztcclxuaW1wb3J0IHsgdF9lbmN1X2FyZWFzICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgdF9yZWN1X2FyZWFzICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgdF9zdXBlX2FyZWFzICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgbWlzX3RhcmVhcyAgICAgICAgICB9IGZyb20gJy4vdGFibGUtbWlzX3RhcmVhcyc7XHJcbmltcG9ydCB7IHRlbV9hc2lnbmFjaW9uICAgICAgfSBmcm9tICcuL3RhYmxlLXRlbV9hc2lnbmFjaW9uJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbV9yZWNlcGNpb259IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9yZWNlcGNpb24nO1xyXG5pbXBvcnQgeyBtaXNfdGFyZWFzX2FyZWFzICAgIH0gZnJvbSAnLi90YWJsZS1taXNfdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgY29udHJvbF9jYW1wbyAgICAgICB9IGZyb20gJy4vdGFibGUtY29udHJvbF9jYW1wbyc7XHJcbmltcG9ydCB7IGNvbnRyb2xfcmVzdW1lbiAgICAgfSBmcm9tICcuL3RhYmxlLWNvbnRyb2xfcmVzdW1lbic7XHJcbmltcG9ydCB7IHZpdmllbmRhcyAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLXZpdmllbmRhcyc7XHJcbmltcG9ydCB7IHZpc2l0YXMgICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLXZpc2l0YXMnO1xyXG5pbXBvcnQgeyBob2dhcmVzICAgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS1ob2dhcmVzJztcclxuaW1wb3J0IHsgcGVyc29uYXMgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtcGVyc29uYXMnO1xyXG5pbXBvcnQgeyB2aXNpdGFzX3N1cCAgICAgICAgIH0gZnJvbSAnLi90YWJsZS12aXNpdGFzX3N1cCc7XHJcbmltcG9ydCB7IGhvZ2FyZXNfc3VwICAgICAgICAgfSBmcm9tICcuL3RhYmxlLWhvZ2FyZXNfc3VwJztcclxuaW1wb3J0IHsgcGVyc29uYXNfc3VwICAgICAgICB9IGZyb20gJy4vdGFibGUtcGVyc29uYXNfc3VwJztcclxuXHJcbmltcG9ydCB7IGVzdGFkb3MgICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLWVzdGFkb3MnO1xyXG5pbXBvcnQgeyBhY2Npb25lcyAgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS1hY2Npb25lcyc7XHJcbmltcG9ydCB7IGVzdGFkb3NfYWNjaW9uZXMgICAgfSBmcm9tICcuL3RhYmxlLWVzdGFkb3NfYWNjaW9uZXMnO1xyXG5cclxuXHJcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzLWRtZW5jdVwiO1xyXG5pbXBvcnQge2RlZkNvbmZpZ30gZnJvbSBcIi4vZGVmLWNvbmZpZ1wiXHJcblxyXG5jb25zdCBBUFBfRE1fVkVSU0lPTj1cIiMyMi0xMi0xNVwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGVtZXJnZUFwcERtRW5jdTxUIGV4dGVuZHMgcHJvY2VzYW1pZW50by5Db25zdHJ1Y3Rvcjxwcm9jZXNhbWllbnRvLkFwcFByb2Nlc2FtaWVudG9UeXBlPj4oQmFzZTpUKXtcclxuICByZXR1cm4gY2xhc3MgQXBwRG1FbmN1IGV4dGVuZHMgQmFzZXtcclxuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6YW55W10peyBcclxuICAgICAgICBzdXBlcihhcmdzKTsgXHJcbiAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50ID0gdGhpcy5jYWNoZXMudGFibGVDb250ZW50IHx8IHt9O1xyXG4gICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWE9W11cclxuICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX2dyb3Vwcz1bXVxyXG4gICAgICAgIHRoaXMuY2FjaGVzLm1ldGFFbmNJbmNsdWlyQ2FzaWxsZXJvc1NhbHRvUkVMID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYWNoZXMudGltZXN0YW1wRXN0cnVjdHVyYSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgfVxyXG4gICAgb3ZlcnJpZGUgYXN5bmMgY2FuQ2hhbmdlUGFzcyhyZXFPckNvbnRleHQsIHVzZXJUb0NoYW5nZVBhc3Mpe1xyXG4gICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IGF3YWl0IGJlLmluRGJDbGllbnQobnVsbCwgYXN5bmMgKGNsaWVudCk9PntcclxuICAgICAgICAgICAgdmFyIHEgPSBiZS5kYi5xdW90ZUxpdGVyYWw7XHJcbiAgICAgICAgICAgIHZhciByb2wgPSByZXFPckNvbnRleHQudXNlci5yb2w7XHJcbiAgICAgICAgICAgIHJldHVybiAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgICAgIHNlbGVjdCAqIFxyXG4gICAgICAgICAgICAgICAgICBmcm9tIHVzdWFyaW9zIFxyXG4gICAgICAgICAgICAgICAgICB3aGVyZSByb2wgaW4gKHNlbGVjdCByb2xfc3Vib3JkaW5hZG8gZnJvbSByb2xlc19zdWJvcmRpbmFkb3Mgd2hlcmUgcm9sID0gJHtxKHJvbCl9KWApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB2YXIgcHVlZGU9IHJlc3VsdC5maW5kKCh1c2VyKT0+dXNlci51c3VhcmlvID09IHVzZXJUb0NoYW5nZVBhc3MudXNlcm5hbWUpICE9IC0xO1xyXG4gICAgICAgIHZhciBpc0FkbWluID0gYmUuaXNBZG1pbihyZXFPckNvbnRleHQpO1xyXG4gICAgICAgIHJldHVybiBpc0FkbWluIHx8IHB1ZWRlXHJcbiAgICAgICAgXHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBhc3luYyBnZXRQcm9jZWR1cmVzKCl7XHJcbiAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICB2YXIgcHJvY2VkaW1pZW50b0FSZWVtcGxhemFyPVtcImNhc29fZ3VhcmRhclwiLFwiY2Fzb190cmFlclwiXTtcclxuICAgICAgICB2YXIgcGFyZW50UHJvYyA9IGF3YWl0IHN1cGVyLmdldFByb2NlZHVyZXMoKTtcclxuICAgICAgICBwYXJlbnRQcm9jID0gcGFyZW50UHJvYy5maWx0ZXIoKHByb2NlZHVyZTphbnkpID0+ICFwcm9jZWRpbWllbnRvQVJlZW1wbGF6YXIuaW5jbHVkZXMocHJvY2VkdXJlLmFjdGlvbikpO1xyXG4gICAgICAgIHBhcmVudFByb2MgPSBwYXJlbnRQcm9jLm1hcChwcm9jRGVmPT57XHJcbiAgICAgICAgICAgIGlmKHByb2NEZWYuYWN0aW9uID09ICd0YWJsZV9yZWNvcmRfc2F2ZScgfHwgcHJvY0RlZi5hY3Rpb24gPT0gJ3RhYmxlX3JlY29yZF9kZWxldGUnKXtcclxuICAgICAgICAgICAgICAgIHZhciBjb3JlRnVuY3Rpb25JbnRlcm5vID0gcHJvY0RlZi5jb3JlRnVuY3Rpb247XHJcbiAgICAgICAgICAgICAgICBwcm9jRGVmLmNvcmVGdW5jdGlvbiA9IGFzeW5jIGZ1bmN0aW9uKGNvbnRleHQ6Q29udGV4dCwgcGFyYW1ldGVyczpDb3JlRnVuY3Rpb25QYXJhbWV0ZXJzKXtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgY29yZUZ1bmN0aW9uSW50ZXJubyhjb250ZXh0LCBwYXJhbWV0ZXJzKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHBhcmFtZXRlcnMudGFibGUgPT0gJ2Nhc2lsbGVyb3MnKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmUuY2FjaGVzLnRpbWVzdGFtcEVzdHJ1Y3R1cmEgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3NlIHRvY8OzIGxhIGVzdHJ1Y3R1cmEnLCBiZS5jYWNoZXMudGltZXN0YW1wRXN0cnVjdHVyYSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcHJvY0RlZjtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybiBwYXJlbnRQcm9jLmNvbmNhdChQcm9jZWR1cmVzRG1FbmN1KTtcclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGFzeW5jIGNoZWNrRGF0YWJhc2VTdHJ1Y3R1cmUoX2NsaWVudDpDbGllbnQpe1xyXG4gICAgfVxyXG4gICAgb3ZlcnJpZGUgYWRkU2NocsO2ZGluZ2VyU2VydmljZXMobWFpbkFwcDpwcm9jZXNhbWllbnRvLkV4cHJlc3MsIGJhc2VVcmw6c3RyaW5nKXtcclxuICAgICAgICBsZXQgYmU9dGhpcztcclxuICAgICAgICBzdXBlci5hZGRTY2hyw7ZkaW5nZXJTZXJ2aWNlcyhtYWluQXBwLCBiYXNlVXJsKTtcclxuICAgICAgICAvL3Blcm1pdG8gbGV2YW50YXIgbWlzIGltYWdlbmVzIGVuIGFwbGljYWNpb25lcyBkZXBlbmRpZW50ZXNcclxuICAgICAgICBiZS5hcHAudXNlKCcvaW1nJywgZXhwcmVzcy5zdGF0aWMoJ25vZGVfbW9kdWxlcy9kbWVuY3UvZGlzdC91bmxvZ2dlZC91bmxvZ2dlZC9pbWcnKSlcclxuICAgICAgICBtYWluQXBwLnVzZShmdW5jdGlvbihyZXE6UmVxdWVzdCxfcmVzOlJlc3BvbnNlLCBuZXh0Ok5leHRGdW5jdGlvbil7XHJcbiAgICAgICAgICAgIGlmKHJlcS5zZXNzaW9uICYmICFyZXEuc2Vzc2lvbi5pbnN0YWxsKXtcclxuICAgICAgICAgICAgICAgIHJlcS5zZXNzaW9uLmluc3RhbGw9TWF0aC5yYW5kb20oKS50b1N0cmluZygpLnJlcGxhY2UoJy4nLCcnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBuZXh0KCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsKycvc2FsdmFyJyxhc3luYyBmdW5jdGlvbihyZXEscmVzLF9uZXh0KXtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBzw6kgcXVlIHZveSBhIHJlY2liaXIgdXNlcmFnZW50IHBvciBsb3MgbWlkZGxld2FyZXMgZGUgQmFja2VuZC1wbHVzXHJcbiAgICAgICAgICAgIHZhciB7dXNlcmFnZW50fSA9IHJlcTtcclxuICAgICAgICAgICAgdmFyIGh0bWxNYWluPWJlLm1haW5QYWdlKHt1c2VyYWdlbnR9LCBmYWxzZSwge3NraXBNZW51OnRydWUsIG9mZmxpbmVGaWxlOnRydWV9KS50b0h0bWxEb2MoKTtcclxuICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChodG1sTWFpbiwnaHRtbCcpKHJlcSxyZXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG1haW5BcHAuZ2V0KGJhc2VVcmwrJy9jYW1wbycsYXN5bmMgZnVuY3Rpb24ocmVxLHJlcyxfbmV4dCl7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgc8OpIHF1ZSB2b3kgYSByZWNpYmlyIHVzZXJhZ2VudCBwb3IgbG9zIG1pZGRsZXdhcmVzIGRlIEJhY2tlbmQtcGx1c1xyXG4gICAgICAgICAgICB2YXIge3VzZXJhZ2VudCwgdXNlcn0gPSByZXE7XHJcbiAgICAgICAgICAgIGlmKHVzZXIpe1xyXG4gICAgICAgICAgICAgICAgLyoqIEB0eXBlIHt7dHlwZTonanMnLCBzcmM6c3RyaW5nfVtdfSAqL1xyXG4gICAgICAgICAgICAgICAgdmFyIHdlYk1hbmlmZXN0UGF0aCA9ICdjYXJnYS1kbS93ZWItbWFuaWZlc3Qud2VibWFuaWZlc3QnO1xyXG4gICAgICAgICAgICAgICAgdmFyIGh0bWxNYWluPWJlLm1haW5QYWdlKHt1c2VyYWdlbnQsIHVzZXJ9LCBmYWxzZSwge3NraXBNZW51OnRydWUsIHdlYk1hbmlmZXN0UGF0aCwgb2ZmbGluZUZpbGU6dHJ1ZX0pLnRvSHRtbERvYygpO1xyXG4gICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVUZXh0KGh0bWxNYWluLCdodG1sJykocmVxLHJlcyk7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgcmVzLnJlZGlyZWN0KDQwMSwgYmFzZVVybCsnL2xvZ2luI3c9cGF0aCZwYXRoPS9jYW1wbycpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB2YXIgY3JlYXRlU2VydmljZVdvcmtlciA9IGFzeW5jIGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIHZhciBzdyA9IGF3YWl0IGZzLnJlYWRGaWxlKCdub2RlX21vZHVsZXMvc2VydmljZS13b3JrZXItYWRtaW4vZGlzdC9zZXJ2aWNlLXdvcmtlci13by1tYW5pZmVzdC5qcycsICd1dGY4Jyk7XHJcbiAgICAgICAgICAgIHZhciBtYW5pZmVzdCA9IGJlLmNyZWF0ZVJlc291cmNlc0ZvckNhY2hlSnNvbigpO1xyXG4gICAgICAgICAgICB2YXIgc3dNYW5pZmVzdCA9IHN3XHJcbiAgICAgICAgICAgICAgICAucmVwbGFjZShcIicvKnZlcnNpb24qLydcIiwgSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QudmVyc2lvbikpXHJcbiAgICAgICAgICAgICAgICAucmVwbGFjZShcIicvKmFwcE5hbWUqLydcIiwgSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QuYXBwTmFtZSkpXHJcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbXFxzKlxcL1xcKnVybHNUb0NhY2hlXFwqXFwvXFxzKlxcXS8sIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmNhY2hlKSlcclxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFtcXHMqXFwvXFwqZmFsbGJhY2tzXFwqXFwvXFxzKlxcXS8sIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmZhbGxiYWNrIHx8IFtdKSk7XHJcbiAgICAgICAgICAgICAgICAvLy5yZXBsYWNlKFwiLyNDQUNIRSQvXCIsIFwiLyhhXFxcXGQrbVxcXFxkK3BcXFxcZCt0XFxcXGQrX2VzdHJ1Y3R1cmEuanMpfChhXFxcXGQrbVxcXFxkK3BcXFxcZCt0XFxcXGQrX2hkci5qc29uKS9cIik7XHJcbiAgICAgICAgICAgIHJldHVybiBzd01hbmlmZXN0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1haW5BcHAuZ2V0KGJhc2VVcmwrYC9zdy1tYW5pZmVzdC5qc2AsIGFzeW5jIGZ1bmN0aW9uKHJlcSwgcmVzLCBuZXh0KXtcclxuICAgICAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChhd2FpdCBjcmVhdGVTZXJ2aWNlV29ya2VyKCksJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnKShyZXEscmVzKTtcclxuICAgICAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVFcnIocmVxLHJlcyxuZXh0KSh1bmV4cGVjdGVkKGVycikpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbWFpbkFwcC5nZXQoYmFzZVVybCtgL2NhcmdhLWRtL3dlYi1tYW5pZmVzdC53ZWJtYW5pZmVzdGAsIGFzeW5jIGZ1bmN0aW9uKHJlcSwgcmVzLCBuZXh0KXtcclxuICAgICAgICAgICAgY29uc3QgQVBQX05BTUUgPSAoYXdhaXQgYmUuaW5UcmFuc2FjdGlvbihudWxsLCAoY2xpZW50OnBnLkNsaWVudCk9PlxyXG4gICAgICAgICAgICAgICAgY2xpZW50LnF1ZXJ5KFwic2VsZWN0IG9wZXJhdGl2byBmcm9tIHBhcmFtZXRyb3Mgd2hlcmUgdW5pY29fcmVnaXN0cm9cIikuZmV0Y2hVbmlxdWVWYWx1ZSgpXHJcbiAgICAgICAgICAgICkpLnZhbHVlO1xyXG4gICAgICAgICAgICB2YXIgc3VmaWpvID0gYmFzZVVybC5pbmNsdWRlcygndGVzdCcpIHx8IGJhc2VVcmwuaW5jbHVkZXMoJy9wcicpPydfdGVzdCc6XHJcbiAgICAgICAgICAgICAgICBiYXNlVXJsLmluY2x1ZGVzKCdjYXBhJyk/J19jYXBhJzonJztcclxuICAgICAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHtcclxuICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IGAke0FQUF9OQU1FfSR7c3VmaWpvfSBQcm9ncmVzc2l2ZSBXZWIgQXBwYCxcclxuICAgICAgICAgICAgICAgICAgXCJzaG9ydF9uYW1lXCI6IGAke0FQUF9OQU1FfSR7c3VmaWpvfSBQV0FgLFxyXG4gICAgICAgICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IGBQcm9ncmVzc2l2ZSBXZWIgQXBwIGZvciAke0FQUF9OQU1FfSR7c3VmaWpvfS5gLFxyXG4gICAgICAgICAgICAgICAgICBcImljb25zXCI6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNyY1wiOiBgLi4vaW1nLyR7QVBQX05BTUV9LWxvZ28tZG0tMzIke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICAgICAgICAgICAgICAgIFwic2l6ZXNcIjogXCIzMngzMlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwic3JjXCI6IGAuLi9pbWcvJHtBUFBfTkFNRX0tbG9nby1kbS00OCR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzaXplc1wiOiBcIjQ4eDQ4XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJpbWFnZS9wbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTY0JHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNpemVzXCI6IFwiNjR4NjRcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImltYWdlL3BuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNyY1wiOiBgLi4vaW1nLyR7QVBQX05BTUV9LWxvZ28tZG0tNzIke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICAgICAgICAgICAgICAgIFwic2l6ZXNcIjogXCI3Mng3MlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwic3JjXCI6IGAuLi9pbWcvJHtBUFBfTkFNRX0tbG9nby1kbS0xOTIke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICAgICAgICAgICAgICAgIFwic2l6ZXNcIjogXCIxOTJ4MTkyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJpbWFnZS9wbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTUxMiR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzaXplc1wiOiBcIjUxMng1MTJcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImltYWdlL3BuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAuLi5iZS5nZXRDb2xvcnNKc29uKHN1ZmlqbyBhcyBTdWZpam9zQW1iaWVudGUpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVUZXh0KEpTT04uc3RyaW5naWZ5KGNvbnRlbnQpLCAnYXBwbGljYXRpb24vanNvbicpKHJlcSxyZXMpO1xyXG4gICAgICAgICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUVycihyZXEsIHJlcywgbmV4dCkodW5leHBlY3RlZChlcnIpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZ2V0Q29sb3JzSnNvbihfc3VmaWpvOiBTdWZpam9zQW1iaWVudGUpe1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIFwic3RhcnRfdXJsXCI6IFwiLi4vY2FtcG9cIixcclxuICAgICAgICAgICAgXCJkaXNwbGF5XCI6IFwic3RhbmRhbG9uZVwiLFxyXG4gICAgICAgICAgICBcInRoZW1lX2NvbG9yXCI6IFwiIzNGNTFCNVwiLFxyXG4gICAgICAgICAgICBcImJhY2tncm91bmRfY29sb3JcIjogXCIjNmQ2MGVkXCJcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBhZGRMb2dnZWRTZXJ2aWNlcygpe1xyXG4gICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgc3VwZXIuYWRkTG9nZ2VkU2VydmljZXMoKTtcclxuICAgICAgICBiZS5hcHAuZ2V0KCcvbWFuaWZlc3QubWFuaWZlc3QnLCBhc3luYyBmdW5jdGlvbihyZXE6UmVxdWVzdCwgcmVzOlJlc3BvbnNlLCBfbmV4dDpOZXh0RnVuY3Rpb24pe1xyXG4gICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVGaWxlKCdzcmMvY2xpZW50L21hbmlmZXN0Lm1hbmlmZXN0Jyx7fSkocmVxLHJlcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5hcHAuZ2V0KCcvZmlsZScsIGFzeW5jIGZ1bmN0aW9uKHJlcTpSZXF1ZXN0LHJlczpSZXNwb25zZSl7XHJcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBiZS5pblRyYW5zYWN0aW9uKHJlcSwgXHJcbiAgICAgICAgICAgICAgICAoY2xpZW50OnBnLkNsaWVudCk9PlxyXG4gICAgICAgICAgICAgICAgY2xpZW50LnF1ZXJ5KFwic2VsZWN0IHJ1dGEgZnJvbSBhZGp1bnRvcyB3aGVyZSBpZF9hZGp1bnRvID0gJDFcIixbcmVxLnF1ZXJ5LmlkX2FkanVudG9dKVxyXG4gICAgICAgICAgICAgICAgLmZldGNoVW5pcXVlVmFsdWUoKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB2YXIgcGF0aCA9IHJlc3VsdC52YWx1ZTtcclxuICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlRmlsZShwYXRoLHt9KShyZXEscmVzKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmFwcC5nZXQoJy9pbWFnZW5lcycsIGFzeW5jIGZ1bmN0aW9uKHJlcTpSZXF1ZXN0LHJlczpSZXNwb25zZSl7XHJcbiAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUZpbGUoJ2xvY2FsLWltYWdlcy8nK3JlcS5xdWVyeS5wZGYse30pKHJlcSxyZXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYXBwLmdldCgnL2Rvd25sb2FkL2FsbCcsYXN5bmMgZnVuY3Rpb24ocmVxOlJlcXVlc3QsIHJlczpSZXNwb25zZSwgbmV4dDooKT0+dm9pZCl7XHJcbiAgICAgICAgICAgIGlmKHJlcS51c2VyPT1udWxsIHx8IHJlcS51c2VyLnJvbCE9J2FkbWluJyl7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbm8gZXN0w6EgYXV0b3JpemFkbyBhIGJhamFyc2UgdG9kbycscmVxLnVzZXIpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV4dCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCB6aXAgPSBuZXcgeWF6bC5aaXBGaWxlKCk7XHJcbiAgICAgICAgICAgIHppcC5vdXRwdXRTdHJlYW0ucGlwZShyZXMpO1xyXG4gICAgICAgICAgICBsZXQgYmFzZSA9ICdsb2NhbC1hdHRhY2htZW50cydcclxuICAgICAgICAgICAgbGV0IGZpbGVzID0gYXdhaXQgZnMucmVhZGRpcihiYXNlKTtcclxuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoZmlsZXMubWFwKGFzeW5jIGZ1bmN0aW9uKGZpbGVOYW1lOnN0cmluZyl7XHJcbiAgICAgICAgICAgICAgICB2YXIgcGF0aCA9IGJhc2UrJy8nK2ZpbGVOYW1lO1xyXG4gICAgICAgICAgICAgICAgdmFyIHN0YXQgPSBhd2FpdCBmcy5zdGF0KHBhdGgpO1xyXG4gICAgICAgICAgICAgICAgaWYoc3RhdC5pc0ZpbGUoKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgemlwLmFkZEZpbGUocGF0aCxmaWxlTmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgemlwLmVuZCgpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBhc3luYyBwb3N0Q29uZmlnKCl7XHJcbiAgICAgICAgYXdhaXQgc3VwZXIucG9zdENvbmZpZygpO1xyXG4gICAgICAgIHZhciBiZT10aGlzO1xyXG4gICAgICAgIGJlLmNhY2hlcy5tZXRhRW5jSW5jbHVpckNhc2lsbGVyb3NTYWx0b1JFTCA9IGZhbHNlO1xyXG4gICAgICAgIGF3YWl0IGJlLmluVHJhbnNhY3Rpb24obnVsbCwgYXN5bmMgZnVuY3Rpb24oY2xpZW50OnBnLkNsaWVudCl7XHJcbiAgICAgICAgICAgIHZhciBxUGVybWlzb3M9YFxyXG4gICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhyLnJvbCxqc29uYl9idWlsZF9vYmplY3QoJ3N1cGVydXNlcicsci5zdXBlcnVzZXIsJ3B1ZWRlJywoXHJcbiAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHJwLnBlcm1pc28sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhycGEuYWNjaW9uLHJwYS5oYWJpbGl0YWRvKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gcm9sZXNfcGVybWlzb3MgcnBhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgcnBhLnJvbD1ycC5yb2wgQU5EIHJwYS5wZXJtaXNvPXJwLnBlcm1pc29cclxuICAgICAgICAgICAgICAgICAgICApKVxyXG4gICAgICAgICAgICAgICAgICAgIEZST00gcm9sZXNfcGVybWlzb3MgcnBcclxuICAgICAgICAgICAgICAgICAgICBXSEVSRSBycC5yb2w9ci5yb2wgI2NvbmRIYWJpbGl0YWRvI1xyXG4gICAgICAgICAgICAgICkpKVxyXG4gICAgICAgICAgICAgIEZST00gcm9sZXMgclxyXG4gICAgICAgICAgICBgO1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0cyA9IFtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5xdWVyeShxUGVybWlzb3MucmVwbGFjZSgnI2NvbmRIYWJpbGl0YWRvIycsJycpKS5mZXRjaFVuaXF1ZVZhbHVlKCksXHJcbiAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucXVlcnkocVBlcm1pc29zLnJlcGxhY2UoJyNjb25kSGFiaWxpdGFkbyMnLGAgYW5kIHJwLiR7cGcucXVvdGVJZGVudCgnaGFiaWxpdGFkbycpfWApKS5mZXRjaFVuaXF1ZVZhbHVlKCksXHJcbiAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHBlcm1pc28sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhhY2Npb24sdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NIHBlcm1pc29zIHBhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgcGEucGVybWlzbz1wLnBlcm1pc29cclxuICAgICAgICAgICAgICAgICAgICAgICkpXHJcbiAgICAgICAgICAgICAgICAgICAgICBGUk9NIHBlcm1pc29zIHBcclxuICAgICAgICAgICAgICAgIGApLmZldGNoVW5pcXVlVmFsdWUoKVxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICBiZS5jYWNoZXMucGVybWlzb3NSb2w9cmVzdWx0c1swXS52YWx1ZTtcclxuICAgICAgICAgICAgYmUuY2FjaGVzLnBlcm1pc29zUm9sU29sb1RydWU9cmVzdWx0c1sxXS52YWx1ZTtcclxuICAgICAgICAgICAgYmUuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyPXJlc3VsdHNbMl0udmFsdWU7XHJcbiAgICAgICAgICAgIGJlLmNhY2hlcy5wZXJtaXNvc1BhcmFOYWRpZT1saWtlQXIoYmUuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyKS5tYXAocD0+bGlrZUFyKHApLm1hcChfPT5mYWxzZSkucGxhaW4oKSkucGxhaW4oKVxyXG4gICAgICAgICAgICAvL2NvbnNvbGUuZGlyKGJlLmNhY2hlcy5wZXJtaXNvc1JvbFNvbG9UcnVlLHtkZXB0aDo5fSk7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5kaXIoYmUuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyLHtkZXB0aDo5fSk7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5kaXIoYmUuY2FjaGVzLnBlcm1pc29zUGFyYU5hZGllLHtkZXB0aDo5fSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoQ2FjaGVzKCk7XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBjb25maWdTdGF0aWNDb25maWcoKXtcclxuICAgICAgICBzdXBlci5jb25maWdTdGF0aWNDb25maWcoKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRpY0NvbmZpZyhkZWZDb25maWcpO1xyXG4gICAgfVxyXG4gICAgb3ZlcnJpZGUgY2xpZW50SW5jbHVkZXMocmVxOlJlcXVlc3QsIG9wdHM6T3B0c0NsaWVudFBhZ2UpOkNsaWVudE1vZHVsZURlZmluaXRpb25bXSB7XHJcbiAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICB2YXIgdW5sb2dnZWQgPSBvcHRzICYmIG9wdHMub2ZmbGluZUZpbGU7XHJcbiAgICAgICAgdmFyIG1lbnVlZFJlc291cmNlczpDbGllbnRNb2R1bGVEZWZpbml0aW9uW109IHVubG9nZ2VkP1tcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAndW5sb2dnZWQuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgIF06W1xyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi9jbGllbnQvY2xpZW50JywgZmlsZTogJ2NsaWVudC5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgXTtcclxuICAgICAgICBpZihvcHRzICYmIG9wdHMuZXh0cmFGaWxlcyl7XHJcbiAgICAgICAgICAgIG1lbnVlZFJlc291cmNlcyA9IG1lbnVlZFJlc291cmNlcy5jb25jYXQob3B0cy5leHRyYUZpbGVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGV4dGVybmFsUmVzb3VyY2VzOkNsaWVudE1vZHVsZURlZmluaXRpb25bXSA9IFtcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdyZWFjdCcsIG1vZFBhdGg6ICd1bWQnLCBmaWxlRGV2ZWxvcG1lbnQ6J3JlYWN0LmRldmVsb3BtZW50LmpzJywgZmlsZToncmVhY3QucHJvZHVjdGlvbi5taW4uanMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVhY3QtZG9tJywgbW9kUGF0aDogJ3VtZCcsIGZpbGVEZXZlbG9wbWVudDoncmVhY3QtZG9tLmRldmVsb3BtZW50LmpzJywgZmlsZToncmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ0BtYXRlcmlhbC11aS9jb3JlJywgbW9kUGF0aDogJ3VtZCcsIGZpbGVEZXZlbG9wbWVudDonbWF0ZXJpYWwtdWkuZGV2ZWxvcG1lbnQuanMnLCBmaWxlOidtYXRlcmlhbC11aS5wcm9kdWN0aW9uLm1pbi5qcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdjbHN4JywgZmlsZTonY2xzeC5taW4uanMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVkdXgnLCBtb2RQYXRoOicuLi9kaXN0JywgZmlsZURldmVsb3BtZW50OidyZWR1eC5qcycsIGZpbGU6J3JlZHV4Lm1pbi5qcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdyZWFjdC1yZWR1eCcsIG1vZFBhdGg6Jy4uL2Rpc3QnLCBmaWxlRGV2ZWxvcG1lbnQ6J3JlYWN0LXJlZHV4LmpzJywgZmlsZToncmVhY3QtcmVkdXgubWluLmpzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ21lbW9pemUtb25lJywgIGZpbGU6J21lbW9pemUtb25lLmpzJyB9LFxyXG4gICAgICAgICAgICAvL3sgdHlwZTogJ2pzJywgbW9kdWxlOiAncXJjb2RlJywgbW9kUGF0aDogJy4uL2J1aWxkJywgZmlsZTogJ3FyY29kZS5qcyd9LFxyXG4gICAgICAgICAgICAuLi5zdXBlci5jbGllbnRJbmNsdWRlcyhyZXEsIG9wdHMpLmZpbHRlcihtPT5tLmZpbGUhPSdmb3JtdWxhcmlvcy5jc3MnKVxyXG4gICAgICAgICAgICAuZmlsdGVyKG09PiF1bmxvZ2dlZCB8fCB0cnVlXHJcbiAgICAgICAgICAgICAgICAmJiBtLmZpbGUhPSd2YXItY2FsLmpzJ1xyXG4gICAgICAgICAgICAgICAgJiYgbS5maWxlIT0ndmFyLWNhbC5qcycgICAgIFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3NlcnZpY2Utd29ya2VyLWFkbWluJywgIGZpbGU6J3NlcnZpY2Utd29ya2VyLWFkbWluLmpzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlZHV4LXR5cGVkLXJlZHVjZXInLCBtb2RQYXRoOicuLi9kaXN0JywgZmlsZToncmVkdXgtdHlwZWQtcmVkdWNlci5qcycgfVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdmFyIHJlc291cmNlczpDbGllbnRNb2R1bGVEZWZpbml0aW9uW10gPSBbXHJcbiAgICAgICAgICAgIC4uLmV4dGVybmFsUmVzb3VyY2VzLFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdhZGFwdC5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3RpcG9zLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnYnlwYXNzLWZvcm11bGFyaW8uanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdyZWR1eC1mb3JtdWxhcmlvLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAncmVuZGVyLWdlbmVyYWwuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdyZW5kZXItZm9ybXVsYXJpby5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ2FicmlyLWZvcm11bGFyaW8uanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdjc3MnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vY2xpZW50L2NsaWVudC9jc3MnLCBmaWxlOiAnbWVudS5jc3MnLCBwYXRoOiAnY3NzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdjc3MnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQvY3NzJywgZmlsZTogJ2Zvcm11bGFyaW8tcmVhY3QuY3NzJywgcGF0aDogJ2NzcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnY3NzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkL2NzcycsIGZpbGU6ICdib290c3RyYXAubWluLmNzcycsIHBhdGg6ICdjc3MnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ3R0ZicsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZC9jc3MnLCBmaWxlOiAnUm9ib3RvLVJlZ3VsYXIudHRmJywgcGF0aDogJ2NzcycgfSxcclxuICAgICAgICAgICAgLi4uIG1lbnVlZFJlc291cmNlcyxcclxuICAgICAgICBdXHJcbiAgICAgICAgcmV0dXJuIHJlc291cmNlc1xyXG4gICAgICAgIC8vIC5tYXAobT0+KHsuLi5tLCBmaWxlOm0uZmlsZURldmVsb3BtZW50fHxtLmZpbGV9KSk7XHJcbiAgICB9XHJcbiAgICBhc3luYyByZWZyZXNoQ2FjaGVzKCl7XHJcbiAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50ID0gdGhpcy5jYWNoZXMudGFibGVDb250ZW50IHx8IHt9O1xyXG4gICAgICAgIGF3YWl0IHRoaXMuaW5EYkNsaWVudChudWxsLCBhc3luYyAoY2xpZW50KT0+e1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhID0gKGF3YWl0IGNsaWVudC5xdWVyeShgc2VsZWN0ICogZnJvbSBub19yZWEgb3JkZXIgYnkgbm9fcmVhYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2NhY2hlcycsdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYSlcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9ncm91cHMgPSAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgICAgIHNlbGVjdCBncnVwbywganNvbmJfYWdnKHRvX2pzb24oci4qKSkgYXMgY29kaWdvcyBmcm9tIG5vX3JlYSByIGdyb3VwIGJ5IGdydXBvIG9yZGVyIGJ5IDFcclxuICAgICAgICAgICAgYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9ncm91cHMwID0gKGF3YWl0IGNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgICAgICBzZWxlY3QgZ3J1cG8wIGFzIGdydXBvLCBqc29uYl9hZ2codG9fanNvbihyLiopKSBhcyBjb2RpZ29zIGZyb20gbm9fcmVhIHIgZ3JvdXAgYnkgZ3J1cG8wIG9yZGVyIGJ5IDFcclxuICAgICAgICAgICAgYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9zdXAgPSAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBzZWxlY3QgKiBmcm9tIG5vX3JlYV9zdXAgb3JkZXIgYnkgbm9fcmVhX3N1cGApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjYWNoZXMnLHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfc3VwKVxyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX3N1cF9ncm91cHMgPSAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgc2VsZWN0IGdydXBvX3N1cCwganNvbmJfYWdnKHRvX2pzb24oci4qKSkgYXMgY29kaWdvcyBmcm9tIG5vX3JlYV9zdXAgciBncm91cCBieSBncnVwb19zdXAgb3JkZXIgYnkgMVxyXG4gICAgICAgICAgICBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX3N1cF9ncm91cHMwID0gKGF3YWl0IGNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgIHNlbGVjdCBncnVwbzBfc3VwIGFzIGdydXBvLCBqc29uYl9hZ2codG9fanNvbihyLiopKSBhcyBjb2RpZ29zIGZyb20gbm9fcmVhX3N1cCByIGdyb3VwIGJ5IGdydXBvMF9zdXAgb3JkZXIgYnkgMVxyXG4gICAgICAgIGApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBjb25zb2xlLmxvZygnY2FjaGVzIG9rJyk7XHJcbiAgICB9XHJcbiAgICAvL3NxbE5vcmVhQ2FzZShjYW1wb05lY2VzYXJpbzpzdHJpbmcpe1xyXG4gICAgLy8gICAgdmFyIGJlPXRoaXM7XHJcbiAgICAvLyAgICByZXR1cm4gYENBU0UgJHtiZS5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYS5tYXAoeD0+XHJcbiAgICAvLyAgICAgICAgYCBXSEVOIG5vcmVhICA9ICR7YmUuZGIucXVvdGVMaXRlcmFsKHgubm9fcmVhKX06OmludGVnZXIgVEhFTiAke2JlLmRiLnF1b3RlTGl0ZXJhbCh4W2NhbXBvTmVjZXNhcmlvXSl9YFxyXG4gICAgLy8gICAgKS5qb2luKCcnKX0gV0hFTiBUUlVFIFRIRU4gTlVMTCBFTkRgXHJcbiAgICAvL30gICAgXHJcbiAgICBvdmVycmlkZSBnZXRDb250ZXh0KHJlcTpSZXF1ZXN0KTpDb250ZXh0e1xyXG4gICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgdmFyIGZhdGhlckNvbnRleHQgPSBzdXBlci5nZXRDb250ZXh0KHJlcSk7XHJcbiAgICAgICAgaWYoZmF0aGVyQ29udGV4dC51c2VyKXtcclxuICAgICAgICAgICAgaWYocmVxLnVzZXI/LnJvbCAhPW51bGwgJiYgYmUuY2FjaGVzLnBlcm1pc29zUm9sW3JlcS51c2VyLnJvbF0/LnN1cGVydXNlcil7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge3N1cGVydXNlcjp0cnVlLCBwdWVkZTogYmUuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyLCAuLi5mYXRoZXJDb250ZXh0fVxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7cHVlZGU6IGJlLmNhY2hlcy5wZXJtaXNvc1JvbFtyZXEudXNlci5yb2xdPy5wdWVkZSwgLi4uZmF0aGVyQ29udGV4dH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge3B1ZWRlOmJlLmNhY2hlcy5wZXJtaXNvc1BhcmFOYWRpZSwgLi4uZmF0aGVyQ29udGV4dH07XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBnZXRDb250ZXh0Rm9yRHVtcCgpOkNvbnRleHR7XHJcbiAgICAgICAgdmFyIGZhdGhlckNvbnRleHQgPSBzdXBlci5nZXRDb250ZXh0Rm9yRHVtcCgpO1xyXG4gICAgICAgIHJldHVybiB7c3VwZXJ1c2VyOnRydWUsIHB1ZWRlOiB0aGlzLmNhY2hlcy5wZXJtaXNvc1N1cGVydXNlciwgLi4uZmF0aGVyQ29udGV4dH07XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBhc3luYyBnZXRDbGllbnRTZXR1cEZvclNlbmRUb0Zyb250RW5kKHJlcTpSZXF1ZXN0KXtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi4oYXdhaXQgc3VwZXIuZ2V0Q2xpZW50U2V0dXBGb3JTZW5kVG9Gcm9udEVuZChyZXEpKSxcclxuICAgICAgICAgICAgaWRwZXI6IHJlcS51c2VyPy5pZHBlclxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNyZWF0ZVJlc291cmNlc0ZvckNhY2hlSnNvbigpe1xyXG4gICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgdmFyIGpzb25SZXN1bHQgPSB7XHJcbiAgICAgICAgICAgIHZlcnNpb246IEFQUF9ETV9WRVJTSU9OLFxyXG4gICAgICAgICAgICBhcHBOYW1lOiAnZG1lbmN1JyxcclxuICAgICAgICAgICAgY2FjaGU6IFtcclxuICAgICAgICAgICAgICAgIFwiY2FtcG9cIixcclxuICAgICAgICAgICAgICAgIFwib2ZmbGluZVwiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvcmVhY3QucHJvZHVjdGlvbi5taW4uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbWF0ZXJpYWwtdWkucHJvZHVjdGlvbi5taW4uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL2Nsc3gubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9yZWR1eC5taW4uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3JlYWN0LXJlZHV4Lm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbWVtb2l6ZS1vbmUuanNcIixcclxuICAgICAgICAgICAgICAgIC8vXCJsaWIvcXJjb2RlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9yZXF1aXJlLWJyby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvY2FzdC1lcnJvci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbGlrZS1hci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvYmVzdC1nbG9iYWxzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9qc29uNGFsbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvanMtdG8taHRtbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvcmVkdXgtdHlwZWQtcmVkdWNlci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkbWVuY3UvYWRhcHQuanNcIixcclxuICAgICAgICAgICAgICAgIFwiZG1lbmN1L3VubG9nZ2VkLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9qcy15YW1sLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi94bHN4LmNvcmUubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9sYXp5LXNvbWUuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3NxbC10b29scy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkaWFsb2ctcHJvbWlzZS9kaWFsb2ctcHJvbWlzZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJtb21lbnQvbWluL21vbWVudC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJwaWthZGF5L3Bpa2FkYXkuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3BvbHlmaWxscy1icm8uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL2JpZy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvdHlwZS1zdG9yZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvdHlwZWQtY29udHJvbHMuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL2FqYXgtYmVzdC1wcm9taXNlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcIm15LWFqYXguanNcIixcclxuICAgICAgICAgICAgICAgIFwibXktc3RhcnQuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL215LWxvY2FsZGIuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL215LXdlYnNxbGRiLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9teS1sb2NhbGRiLmpzLm1hcFwiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbXktd2Vic3FsZGIuanMubWFwXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9teS10aGluZ3MuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL215LXRhYmxlcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbXktaW5mb3JtLW5ldC1zdGF0dXMuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL215LW1lbnUuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL215LXNraW4uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL2NsaWVudGUtZW4tY2FzdGVsbGFuby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvc2VydmljZS13b3JrZXItYWRtaW4uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3JlZHV4LXR5cGVkLXJlZHVjZXIuanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvb3BlcmF0aXZvcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy92YXJjYWwuanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvZm9ybS1zdHJ1Y3R1cmUuanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvbWV0YS1lbmMuanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvZGF0b3MtZXh0LmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL2NvbnNpc3RlbmNpYXMuanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvcHJvY2VzYW1pZW50by5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkbWVuY3UvdGlwb3MuanNcIixcclxuICAgICAgICAgICAgICAgIFwiZG1lbmN1L2J5cGFzcy1mb3JtdWxhcmlvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImRtZW5jdS9yZWR1eC1mb3JtdWxhcmlvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImRtZW5jdS9yZW5kZXItZ2VuZXJhbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkbWVuY3UvcmVuZGVyLWZvcm11bGFyaW8uanNcIixcclxuICAgICAgICAgICAgICAgIFwiZG1lbmN1L2FicmlyLWZvcm11bGFyaW8uanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvcm93LXZhbGlkYXRvci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjbGllbnQvbWVudS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJpbWcvbG9nby5wbmdcIixcclxuICAgICAgICAgICAgICAgIC8vXCJpbWcvbG9nby1kbS5wbmdcIixcclxuICAgICAgICAgICAgICAgIFwiaW1nL2xvZ28tMTI4LnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgXCJpbWcvbWFpbi1sb2FkaW5nLmdpZlwiLFxyXG4gICAgICAgICAgICAgICAgXCJpbWcvYm9ycmFyLXZhbG9yLnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgXCJpbWcvZm9uZG8tc2FsdGVhZG8tZXJyb3IucG5nXCIsXHJcbiAgICAgICAgICAgICAgICBcImltZy9mb25kby1zYWx0ZWFkby5wbmdcIixcclxuICAgICAgICAgICAgICAgIFwiaW1nL2JhY2tncm91bmQtdGVzdC5wbmdcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50LXNldHVwXCIsXHJcbiAgICAgICAgICAgICAgICBcImNzcy9ib290c3RyYXAubWluLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjc3MvZm9ybXVsYXJpby1yZWFjdC5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwicGlrYWRheS9waWthZGF5LmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkaWFsb2ctcHJvbWlzZS9kaWFsb2ctcHJvbWlzZS5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwicmVsLWVuYy9lc3RhZG9zLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjc3MvbXktdGFibGVzLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjc3MvbXktbWVudS5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwiY3NzL215LXRoaW5ncy5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwiY3NzL21lbnUuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICBcInJlbC1lbmMvbXktdGhpbmdzMi5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwiY3NzL2Zvcm11bGFyaW8tcmVhY3QuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICBcImNzcy9Sb2JvdG8tUmVndWxhci50dGZcIlxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBmYWxsYmFjazogW1xyXG4gICAgICAgICAgICAgICAge1wicGF0aFwiOlwibG9naW5cIiwgXCJmYWxsYmFja1wiOlwib2ZmbGluZVwifSxcclxuICAgICAgICAgICAgICAgIHtcInBhdGhcIjpcImxvZ291dFwiLCBcImZhbGxiYWNrXCI6XCJvZmZsaW5lXCJ9LFxyXG4gICAgICAgICAgICAgICAge1wicGF0aFwiOlwibG9naW4jaT1zaW5jcm9uaXphclwiLCBcImZhbGxiYWNrXCI6XCJvZmZsaW5lXCJ9LFxyXG4gICAgICAgICAgICAgICAge1wicGF0aFwiOlwibWVudSNpPXNpbmNyb25pemFyXCIsIFwiZmFsbGJhY2tcIjpcIm9mZmxpbmVcIn1cclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGpzb25SZXN1bHRcclxuICAgIH1cclxuICAgIGdldE1lbnUoY29udGV4dDpDb250ZXh0KXtcclxuICAgICAgICBsZXQgbWVudTpNZW51SW5mb0Jhc2VbXSA9IFtdO1xyXG4gICAgICAgIGxldCBmaWx0cm9SZWNlcGNpb25pc3RhID0gY29udGV4dC51c2VyLnJvbD09J3JlY2VwY2lvbmlzdGEnID8ge3JlY2VwY2lvbmlzdGE6IGNvbnRleHQudXNlci5pZHBlcn0gOiB7fTtcclxuICAgICAgICBpZih0aGlzLmNvbmZpZy5zZXJ2ZXIucG9saWN5PT0nd2ViJyl7XHJcbiAgICAgICAgICAgIGlmKGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcy5yZWxldmFyKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuY29uZmlnWydjbGllbnQtc2V0dXAnXS5hbWJpZW50ZT09J2RlbW8nIHx8IHRoaXMuY29uZmlnWydjbGllbnQtc2V0dXAnXS5hbWJpZW50ZT09J3Rlc3QnIHx8IHRoaXMuY29uZmlnWydjbGllbnQtc2V0dXAnXS5hbWJpZW50ZT09J2NhcGEnKXtcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goe21lbnVUeXBlOidkZW1vJywgbmFtZTonZGVtbycsIHNlbGVjdGVkQnlEZWZhdWx0OnRydWV9KVxyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKHttZW51VHlwZToncGF0aCcsIG5hbWU6J3JlbGV2YW1pZW50bycsIHBhdGg6Jy9jYW1wbyd9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTonc2luY3Jvbml6YXJfZG0nLCBuYW1lOidzaW5jcm9uaXphcid9LFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBpZihjb250ZXh0LnB1ZWRlPy5jYW1wbz8uZWRpdGFyKXtcclxuICAgICAgICAgICAgICAgIGxldCBtZW51QXNpZ25hY2lvbjpNZW51SW5mb0Jhc2VbXSA9IFtdXHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudUFzaWduYWNpb24ucHVzaCh7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZ2VuZXJhbCcsIHRhYmxlOiAnYXJlYXNfYXNpZ25hY2lvbl9nZW5lcmFsJyB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG1lbnVBc2lnbmFjaW9uLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2VuY3Vlc3RhZG9yJywgdGFibGU6ICd0X2VuY3VfYXJlYXMnLCBmZjogeyB0YXJlYTogJ2VuY3UnLCAuLi5maWx0cm9SZWNlcGNpb25pc3RhIH0gfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncmVjdXBlcmFkb3InLCB0YWJsZTogJ3RhcmVhc190ZW1fcmVjdScsIGZmOiB7IHRhcmVhX2FzaWduYXI6ICdyZWN1JywgdGFyZWE6ICdyZWN1JywgLi4uZmlsdHJvUmVjZXBjaW9uaXN0YSB9IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3N1cGVydmlzb3InICwgdGFibGU6ICd0YXJlYXNfdGVtX3N1cGUnLCBmZjogeyB0YXJlYV9hc2lnbmFyOiAnc3VwZScsIHRhcmVhOiAnc3VwZScsIC4uLmZpbHRyb1JlY2VwY2lvbmlzdGEgfSB9LFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIG1lbnUucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J21lbnUnLCBuYW1lOidhc2lnbmFjaW9uJywgbGFiZWw6J2FzaWduYWNpw7NuJyAsbWVudUNvbnRlbnQ6IG1lbnVBc2lnbmFjaW9ufSxcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J21lbnUnLCBuYW1lOidyZWNlcGNpb24nLCBsYWJlbDoncmVjZXBjacOzbicgLG1lbnVDb250ZW50OltcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2VuY3Vlc3RhZG9yJywgdGFibGU6J2VuY3Vlc3RhZG9yZXNfYXNpZ25hZG9zJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidyZWN1cGVyYWRvcicsIHRhYmxlOidyZWN1cGVyYWRvcmVzX2FzaWduYWRvcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonc3VwZXJ2aXNvcicgLCB0YWJsZTonc3VwZXJ2aXNvcmVzX2FzaWduYWRvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICBdfSwgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6ICdtZW51JywgbmFtZTogJ3ZhcmlvcycsIG1lbnVDb250ZW50OiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTogJ2FicmlyX2VuY3Vlc3RhJywgbmFtZTogJ2FicmlyX2VuY3Vlc3RhJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2hvamFfcnV0YScsIHRhYmxlOiAnZ3JpbGxhX2hvamFfcnV0YScsIGxhYmVsOiAnaG9qYSBkZSBydXRhJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgXX1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKXtcclxuICAgICAgICAgICAgICAgIG1lbnUucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J21lbnUnLCBuYW1lOidjb250cm9sJywgbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncmVzdW1lbicsIHRhYmxlOidjb250cm9sX3Jlc3VtZW4nLCBzZWxlY3RlZEJ5RGVmYXVsdDp0cnVlfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2RvbWluaW8nLCB0YWJsZTonY29udHJvbF9jYW1wb19kb21pbmlvJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid6b25hJyAgICwgdGFibGU6J2NvbnRyb2xfY2FtcG9fem9uYScgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidjb211bmEnICwgdGFibGU6J2NvbnRyb2xfY2FtcG9fY29tdW5hJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOifDoXJlYScgICAsIHRhYmxlOidjb250cm9sX2NhbXBvX2FyZWEnICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncGFydGljaXBhY2lvbicgICAgICAgICwgdGFibGU6J2NvbnRyb2xfY2FtcG9fcGFydGljaXBhY2lvbicgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgXX0sICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcil7XHJcbiAgICAgICAgICAgICAgICBtZW51LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZToncHJvY2VzYXInLCBtZW51Q29udGVudDpbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid2YXJpYWJsZXMnICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidjb25zaXN0ZW5jaWFzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidpbmNvbnNpc3RlbmNpYXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3RhYmxhX2RhdG9zJyAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2RpY2Npb25hcmlvJyAgLCBsYWJlbDonZGljY2lvbmFyaW9zJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIF19LFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgbWVudUNvbmZpZ3VyYXI6TWVudUluZm9CYXNlW10gPSBbXTtcclxuICAgICAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKXtcclxuICAgICAgICAgICAgICAgIG1lbnVDb25maWd1cmFyLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZTonbXVlc3RyYScsIGxhYmVsOidtdWVzdHJhJywgbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondGVtJywgbGFiZWw6ICdURU0nfSAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid0YXJlYXMnfSxcclxuICAgICAgICAgICAgICAgICAgICBdfSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uY2FzaWxsZXJvc190ZXh0bz8uZWRpdGFyKXtcclxuICAgICAgICAgICAgICAgIG1lbnVDb25maWd1cmFyLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZTonbWV0YWRhdG9zJywgbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonb3BlcmF0aXZvcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonZm9ybXVsYXJpb3MnICwgdGFibGU6J2Nhc2lsbGVyb3NfcHJpbmNpcGFsZXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3BsYW5vJyAgICAgICAsIHRhYmxlOidjYXNpbGxlcm9zJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid0aXBvYycgICAgICAgLCBsYWJlbDondGlwb3MgZGUgY2VsZGFzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid0aXBvY190aXBvYycgLCBsYWJlbDonaW5jbHVzaW9uZXMgZGUgY2VsZGFzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgXX0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGNvbnRleHQuc3VwZXJ1c2VyKXtcclxuICAgICAgICAgICAgICAgIG1lbnVDb25maWd1cmFyLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZTonZXN0YWRvc19hY2Npb25lcycsIGxhYmVsOidlc3RhZG9zL2FjY2lvbmVzJywgbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonZXN0YWRvcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonYWNjaW9uZXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2VzdGFkb3NfYWNjaW9uZXMnfSxcclxuICAgICAgICAgICAgICAgICAgICBdfSxcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncGFyYW1ldHJvcyd9LFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhciB8fCBjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKXtcclxuICAgICAgICAgICAgICAgIG1lbnVDb25maWd1cmFyLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZTondXN1YXJpb3MnLCBtZW51Q29udGVudDpbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid1c3VhcmlvcycsIHNlbGVjdGVkQnlEZWZhdWx0OnRydWV9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncm9sZXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3Blcm1pc29zJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidyb2xlc19wZXJtaXNvcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgIF19LFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG1lbnUucHVzaCh7bWVudVR5cGU6J21lbnUnLCBuYW1lOidjb25maWd1cmFyJywgbWVudUNvbnRlbnQ6bWVudUNvbmZpZ3VyYXJ9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHttZW51fTtcclxuICAgIH1cclxuICAgIG92ZXJyaWRlIHByZXBhcmVHZXRUYWJsZXMoKXtcclxuICAgICAgICB2YXIgYmU9dGhpcztcclxuICAgICAgICBzdXBlci5wcmVwYXJlR2V0VGFibGVzKCk7XHJcbiAgICAgICAgdGhpcy5nZXRUYWJsZURlZmluaXRpb249e1xyXG4gICAgICAgICAgICAuLi50aGlzLmdldFRhYmxlRGVmaW5pdGlvblxyXG4gICAgICAgICAgICAsIHJvbGVzXHJcbiAgICAgICAgICAgICwgdXN1YXJpb3NcclxuICAgICAgICAgICAgLCBwZXJzb25hbFxyXG4gICAgICAgICAgICAsIHJlY2VwY2lvbmlzdGFzXHJcbiAgICAgICAgICAgICwgZW5jdWVzdGFkb3Jlc19hc2lnbmFkb3NcclxuICAgICAgICAgICAgLCByZWN1cGVyYWRvcmVzX2FzaWduYWRvc1xyXG4gICAgICAgICAgICAsIHN1cGVydmlzb3Jlc19hc2lnbmFkb3NcclxuICAgICAgICAgICAgLCBtaXNfZW5jdWVzdGFkb3Jlc1xyXG4gICAgICAgICAgICAsIHJlY3VwZXJhZG9yZXNcclxuICAgICAgICAgICAgLCBzdXBlcnZpc29yZXNcclxuICAgICAgICAgICAgLCBwZXJzb25hbF9yb2xcclxuICAgICAgICAgICAgLCBwZXJtaXNvc1xyXG4gICAgICAgICAgICAsIHJvbGVzX3Blcm1pc29zXHJcbiAgICAgICAgICAgICwgcm9sZXNfc3Vib3JkaW5hZG9zXHJcbiAgICAgICAgICAgICwgbm9fcmVhXHJcbiAgICAgICAgICAgICwgbm9fcmVhX3N1cFxyXG4gICAgICAgICAgICAsIHNlbWFuYXNcclxuICAgICAgICAgICAgLCBlc3RhZG9zXHJcbiAgICAgICAgICAgICwgYWNjaW9uZXNcclxuICAgICAgICAgICAgLCBlc3RhZG9zX2FjY2lvbmVzXHJcbiAgICAgICAgICAgICwgdGVtXHJcbiAgICAgICAgICAgICwgdGVtX3JlY2VwY2lvblxyXG4gICAgICAgICAgICAsIHBhcmFtZXRyb3NcclxuICAgICAgICAgICAgLCBvcGVyYWNpb25lc1xyXG4gICAgICAgICAgICAsIGNvbXVuYXNcclxuICAgICAgICAgICAgLCBhcmVhc1xyXG4gICAgICAgICAgICAsIHNpbmNyb25pemFjaW9uZXNcclxuICAgICAgICAgICAgLCB0YXJlYXNcclxuICAgICAgICAgICAgLCB0YXJlYXNfdGVtXHJcbiAgICAgICAgICAgICwgdGFyZWFzX3RlbV9lbmN1XHJcbiAgICAgICAgICAgICwgdGFyZWFzX3RlbV9yZWN1XHJcbiAgICAgICAgICAgICwgdGFyZWFzX3RlbV9zdXBlXHJcbiAgICAgICAgICAgICwgdGFyZWFzX2FyZWFzXHJcbiAgICAgICAgICAgICwgYXJlYXNfYXNpZ25hY2lvbl9nZW5lcmFsXHJcbiAgICAgICAgICAgICwgZ3JpbGxhX2hvamFfcnV0YVxyXG4gICAgICAgICAgICAsIHRfZW5jdV9hcmVhc1xyXG4gICAgICAgICAgICAsIHRfcmVjdV9hcmVhc1xyXG4gICAgICAgICAgICAsIHRfc3VwZV9hcmVhc1xyXG4gICAgICAgICAgICAsIG1pc190YXJlYXNcclxuICAgICAgICAgICAgLCB0ZW1fYXNpZ25hY2lvblxyXG4gICAgICAgICAgICAsIHRhcmVhc190ZW1fcmVjZXBjaW9uXHJcbiAgICAgICAgICAgICwgbWlzX3RhcmVhc19hcmVhc1xyXG4gICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9cclxuICAgICAgICAgICAgLCBjb250cm9sX3Jlc3VtZW5cclxuICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX3pvbmE6IGNvbnRleHQ9PmNvbnRyb2xfY2FtcG8oY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICB7bm9tYnJlOidjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOidjb250cm9sIGNhbXBvIHggem9uYSBzb2xvIGNlbWVudG8nLCBjYW1wb3NDb3J0ZTpbe25hbWU6J3pvbmEnLCB0eXBlTmFtZTondGV4dCd9XSwgZmlsdHJvV2hlcmU6J2RvbWluaW89MycgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgICwgY29udHJvbF9jYW1wb19jb211bmE6IGNvbnRleHQ9PmNvbnRyb2xfY2FtcG8oY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICB7bm9tYnJlOidjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOidjb250cm9sIGNhbXBvIHggY29tdW5hIHNvbG8gY2VtZW50bycsIGNhbXBvc0NvcnRlOlt7bmFtZTonem9uYScsIHR5cGVOYW1lOid0ZXh0J30se25hbWU6J25yb2NvbXVuYScsIHR5cGVOYW1lOidpbnRlZ2VyJ31dLCBmaWx0cm9XaGVyZTonZG9taW5pbz0zJyB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX2FyZWE6IGNvbnRleHQ9PmNvbnRyb2xfY2FtcG8oY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICB7bm9tYnJlOidjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOidjb250cm9sIGNhbXBvIHggYXJlYScsIGNhbXBvc0NvcnRlOlt7bmFtZTonem9uYScsIHR5cGVOYW1lOid0ZXh0J30se25hbWU6J25yb2NvbXVuYScsIHR5cGVOYW1lOidpbnRlZ2VyJ30se25hbWU6J2FyZWEnLCB0eXBlTmFtZTonaW50ZWdlcid9LHtuYW1lOidwYXJ0aWNpcGFjaW9uX2EnLCB0eXBlTmFtZTondGV4dCd9LHtuYW1lOidjbGFzZV9hJywgdHlwZU5hbWU6J3RleHQnfV19XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX3BhcnRpY2lwYWNpb246IGNvbnRleHQ9PmNvbnRyb2xfY2FtcG8oY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICB7bm9tYnJlOidjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOidjb250cm9sIGNhbXBvIHggcGFydGljaXBhY2lvbicsIGNhbXBvc0NvcnRlOlt7bmFtZToncGFydGljaXBhY2lvbicsIHR5cGVOYW1lOidiaWdpbnQnfV19XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX2RvbWluaW86IGNvbnRleHQ9PmNvbnRyb2xfY2FtcG8oY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICB7bm9tYnJlOidjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOidjb250cm9sIGNhbXBvIHggZG9taW5pbycsIGNhbXBvc0NvcnRlOlt7bmFtZTonZG9taW5pbycsIHR5cGVOYW1lOidpbnRlZ2VyJ31dfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgICwgdml2aWVuZGFzXHJcbiAgICAgICAgICAgICwgdmlzaXRhc1xyXG4gICAgICAgICAgICAsIGhvZ2FyZXNcclxuICAgICAgICAgICAgLCBwZXJzb25hc1xyXG4gICAgICAgICAgICAsIHZpc2l0YXNfc3VwXHJcbiAgICAgICAgICAgICwgaG9nYXJlc19zdXBcclxuICAgICAgICAgICAgLCBwZXJzb25hc19zdXBcclxuICAgICAgICB9XHJcbiAgICAgICAgYmUuYXBwZW5kVG9UYWJsZURlZmluaXRpb24oJ2NvbnNpc3RlbmNpYXMnLGZ1bmN0aW9uKHRhYmxlRGVmLCBjb250ZXh0KXtcclxuICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLmZvckVhY2goZnVuY3Rpb24oZmllbGQpe1xyXG4gICAgICAgICAgICAgICAgaWYoZmllbGQubmFtZT09J2Vycm9yX2NvbXBpbGFjaW9uJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZmllbGQudmlzaWJsZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJyoqKioqKioqKioqKiBRVUlUQVIgRVNUTyBlcnJvcl9jb21waWxhY2lvbiB5YSBlcyB2aXNpYmxlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnZpc2libGU9dHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdpbmNvbnNpc3RlbmNpYXMnLGZ1bmN0aW9uKHRhYmxlRGVmLCBjb250ZXh0KXtcclxuICAgICAgICAgICAgdGFibGVEZWYuc3FsPXsuLi50YWJsZURlZi5zcWwsIGlzVGFibGU6dHJ1ZX07XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5zcGxpY2UoMiwwLFxyXG4gICAgICAgICAgICAgICAge25hbWU6J3ZpdmllbmRhJyAgICAsIHR5cGVOYW1lOid0ZXh0JyAgICAgLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICAgICAgICAgICAge25hbWU6J2hvZ2FyJyAgICAgICAsIHR5cGVOYW1lOidiaWdpbnQnICAgLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICAgICAgICAgICAge25hbWU6J3BlcnNvbmEnICAgICAsIHR5cGVOYW1lOidiaWdpbnQnICAgLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICAgICAgICAgICAge25hbWU6J3Zpc2l0YScgICAgICAsIHR5cGVOYW1lOidiaWdpbnQnICAgLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0YWJsZURlZi5lZGl0YWJsZT10YWJsZURlZi5lZGl0YWJsZSB8fCBjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXMuanVzdGlmaWNhcjtcclxuICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLmZvckVhY2goZnVuY3Rpb24oZmllbGQpe1xyXG4gICAgICAgICAgICAgICAgaWYoZmllbGQubmFtZT09J3BrX2ludGVncmFkYScpe1xyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnZpc2libGU9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZihmaWVsZC5uYW1lPT0nanVzdGlmaWNhY2lvbicpe1xyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLmVkaXRhYmxlPWNvbnRleHQuZm9yRHVtcCB8fCBjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXMuanVzdGlmaWNhcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLnB1c2goe25hbWU6J2Zpbl9jYW1wbycgICAgICAsIHR5cGVOYW1lOid0ZXh0JyAgIFxyXG4gICAgICAgICAgICAgICAgLCBlZGl0YWJsZTogZmFsc2UsIGluVGFibGU6ZmFsc2VcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGFibGVEZWYuc3FsIS5mcm9tPWBcclxuICAgICAgICAgICAgICAgIChzZWxlY3QgaS4qLCB0LmZpbl9jYW1wbyBcclxuICAgICAgICAgICAgICAgICAgZnJvbSBpbmNvbnNpc3RlbmNpYXMgaSBqb2luIHRlbSB0IG9uIGkudml2aWVuZGE9dC5lbmMgYW5kIGkub3BlcmF0aXZvPXQub3BlcmF0aXZvIFxyXG4gICAgICAgICAgICAgICAgKSAgXHJcbiAgICAgICAgICAgIGBcclxuICAgICAgICB9KVxyXG4gICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdvcGVyYXRpdm9zJyxmdW5jdGlvbih0YWJsZURlZiwgY29udGV4dCl7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5zcGxpY2UoMiwwLHtcclxuICAgICAgICAgICAgICAgIG5hbWU6J2NvbmZpZ19zb3J0ZW8nLCBcclxuICAgICAgICAgICAgICAgIHR5cGVOYW1lOidqc29uYicsXHJcbiAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5zcGxpY2UoMywwLHtcclxuICAgICAgICAgICAgICAgIG5hbWU6J2Rpc2Zvcm1fY2VycmFkbycsIFxyXG4gICAgICAgICAgICAgICAgdHlwZU5hbWU6J2Jvb2xlYW4nLCBcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsIFxyXG4gICAgICAgICAgICAgICAgZWRpdGFibGU6IGNvbnRleHQuZm9yRHVtcHx8WydhZG1pbicsJ2Rpc19jb25jZXB0dWFsJ10uaW5jbHVkZXMoY29udGV4dC51c2VyLnJvbCl9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbigndXN1YXJpb3MnLGZ1bmN0aW9uKHRhYmxlRGVmLCBjb250ZXh0KXtcclxuICAgICAgICAgICAgbGV0IGNsYXZlTnVldmFGaWVsZCA9IHRhYmxlRGVmLmZpZWxkcy5maW5kKChmaWVsZCk9PmZpZWxkLm5hbWUgPT0gJ2NsYXZlX251ZXZhJykhO1xyXG4gICAgICAgICAgICB2YXIgYWRtaW5PQ29vcmQgPSBbJ2FkbWluJywnY29vcl9jYW1wbyddLmluY2x1ZGVzKGNvbnRleHQudXNlci5yb2wpO1xyXG4gICAgICAgICAgICBjbGF2ZU51ZXZhRmllbGQuYWxsb3cgPSB7c2VsZWN0OmFkbWluT0Nvb3JkLCB1cGRhdGU6dHJ1ZSwgaW5zZXJ0OmZhbHNlfTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC8vIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdjYXNpbGxlcm9zJyxmdW5jdGlvbih0YWJsZURlZiwgY29udGV4dCl7XHJcbiAgICAgICAgLy8gICAgIHRhYmxlRGVmLmNvbnN0cmFpbnRzID0gdGFibGVEZWYuY29uc3RyYWludHMuZmlsdGVyKGM9PmMuY29uc05hbWUhPSdjYXNpbGxlcm9zIHNhbHRvIFJFTCcpXHJcbiAgICAgICAgLy8gfSlcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgQXBwRG1FbmN1ID0gZW1lcmdlQXBwRG1FbmN1KGVtZXJnZUFwcFByb2Nlc2FtaWVudG8oZW1lcmdlQXBwQ29uc2lzdGVuY2lhcyhlbWVyZ2VBcHBWYXJDYWwoZW1lcmdlQXBwRGF0b3NFeHQoZW1lcmdlQXBwT3BlcmF0aXZvcyhBcHBCYWNrZW5kKSkpKSkpO1xyXG5leHBvcnQgdHlwZSBBcHBBcHBEbUVuY3VUeXBlID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBBcHBEbUVuY3U+OyJdfQ==
|
|
720
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWRtZW5jdS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2ZXIvYXBwLWRtZW5jdS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLFlBQVksQ0FBQzs7O0lBR2IsaURBQTBMO0lBQzFMLDJEQUF5RTtJQUV6RSx3Q0FBd0M7SUFFeEMsd0NBQXdDO0lBUXhDLDJDQUF3QztJQUV4Qyw2QkFBNkI7SUFFN0Isa0NBQWtDO0lBQ2xDLG1DQUFtQztJQUVuQywyQkFBbUM7SUFFbkMsK0NBQW9EO0lBQ3BELHFEQUF1RDtJQUN2RCxpRUFBNkQ7SUFDN0QsK0RBQWdFO0lBQ2hFLCtEQUFnRTtJQUNoRSwrREFBZ0U7SUFDaEUsdUVBQWdFO0lBQ2hFLCtEQUE0RDtJQUM1RCw2REFBMkQ7SUFDM0QsNkRBQTJEO0lBQzNELHFEQUF1RDtJQUN2RCxpRUFBNkQ7SUFDN0QseURBQXlEO0lBQ3pELHlFQUFpRTtJQUVqRSxpREFBcUQ7SUFDckQseURBQXlEO0lBQ3pELDJDQUFrRDtJQUNsRCwrREFBNEQ7SUFDNUQsbURBQXNEO0lBQ3RELHFEQUF1RDtJQUN2RCwyREFBMEQ7SUFDMUQsbURBQXNEO0lBQ3RELCtDQUFvRDtJQUNwRCxxRUFBK0Q7SUFDL0QsaURBQXFEO0lBQ3JELHlEQUd5RDtJQUN6RCw2REFBMkQ7SUFDM0QscUZBQTRFO0lBQzVFLHFFQUErRDtJQUMvRCw2REFBMkQ7SUFDM0QsNkRBQTJEO0lBQzNELDZEQUEyRDtJQUMzRCx5REFBeUQ7SUFDekQsaUVBQTZEO0lBQzdELDZFQUFtRTtJQUNuRSxxRUFBK0Q7SUFDL0QsK0RBQTREO0lBQzVELG1FQUE4RDtJQUM5RCx1REFBd0Q7SUFDeEQsbURBQXNEO0lBQ3RELG1EQUFzRDtJQUN0RCxxREFBdUQ7SUFDdkQsMkRBQTBEO0lBQzFELDJEQUEwRDtJQUMxRCw2REFBMkQ7SUFFM0QsbURBQXNEO0lBQ3RELHFEQUF1RDtJQUN2RCxxRUFB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aUJBQWlCO3dCQUN0QixRQUFRLEVBQUMsU0FBUzt3QkFDbEIsWUFBWSxFQUFFLEtBQUs7d0JBQ25CLFFBQVEsRUFBRSxPQUFPLENBQUMsT0FBTyxJQUFFLENBQUMsT0FBTyxFQUFDLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO3FCQUFDLENBQ3BGLENBQUM7Z0JBQ04sQ0FBQyxDQUFDLENBQUE7Z0JBQ0YsRUFBRSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsRUFBQyxVQUFTLFFBQVEsRUFBRSxPQUFPO29CQUM1RCxJQUFJLGVBQWUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBQyxFQUFFLENBQUEsS0FBSyxDQUFDLElBQUksSUFBSSxhQUFhLENBQUUsQ0FBQztvQkFDbEYsSUFBSSxXQUFXLEdBQUcsQ0FBQyxPQUFPLEVBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3BFLGVBQWUsQ0FBQyxLQUFLLEdBQUcsRUFBQyxNQUFNLEVBQUMsV0FBVyxFQUFFLE1BQU0sRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDO2dCQUM1RSxDQUFDLENBQUMsQ0FBQTtnQkFDRix1RUFBdUU7Z0JBQ3ZFLGdHQUFnRztnQkFDaEcsS0FBSztZQUNULENBQUM7U0FDRixDQUFBO0lBQ0gsQ0FBQztJQXZwQkQsMENBdXBCQztJQUVVLFFBQUEsU0FBUyxHQUFHLGVBQWUsQ0FBQyxJQUFBLHNDQUFzQixFQUFDLElBQUEsc0NBQXNCLEVBQUMsSUFBQSwrQkFBZSxFQUFDLElBQUEsaUNBQWlCLEVBQUMsSUFBQSxtQ0FBbUIsRUFBQywwQkFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgKiBhcyBwcm9jZXNhbWllbnRvIGZyb20gXCJwcm9jZXNhbWllbnRvXCI7XHJcbmltcG9ydCB7ZW1lcmdlQXBwUHJvY2VzYW1pZW50bywgZW1lcmdlQXBwQ29uc2lzdGVuY2lhcywgZW1lcmdlQXBwVmFyQ2FsLCBlbWVyZ2VBcHBEYXRvc0V4dCwgZW1lcmdlQXBwT3BlcmF0aXZvcywgQXBwQmFja2VuZCwgQ2xpZW50TW9kdWxlRGVmaW5pdGlvbiwgT3B0c0NsaWVudFBhZ2V9IGZyb20gXCJwcm9jZXNhbWllbnRvXCI7XHJcbmltcG9ydCB7Z2V0T3BlcmF0aXZvQWN0dWFsLCBQcm9jZWR1cmVzRG1FbmN1fSBmcm9tIFwiLi9wcm9jZWR1cmVzLWRtZW5jdVwiO1xyXG5cclxuaW1wb3J0ICogYXMgcGcgZnJvbSBcInBnLXByb21pc2Utc3RyaWN0XCI7XHJcbmltcG9ydCB7anNvbn0gZnJvbSBcInBnLXByb21pc2Utc3RyaWN0XCI7XHJcbmltcG9ydCAqIGFzIG1pbmlUb29scyBmcm9tIFwibWluaS10b29sc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgQ2xpZW50LCBDb250ZXh0LCBDb3JlRnVuY3Rpb25QYXJhbWV0ZXJzLCBcclxuICAgIE1lbnVJbmZvQmFzZSwgXHJcbiAgICBSZXF1ZXN0LCBSZXNwb25zZSxcclxuICAgIFN1Zmlqb3NBbWJpZW50ZSxcclxufSBmcm9tIFwiLi90eXBlcy1kbWVuY3VcIjtcclxuXHJcbmltcG9ydCB7IHVuZXhwZWN0ZWQgfSBmcm9tIFwiY2FzdC1lcnJvclwiO1xyXG5cclxuaW1wb3J0ICogYXMgeWF6bCBmcm9tIFwieWF6bFwiO1xyXG5pbXBvcnQgeyBOZXh0RnVuY3Rpb24gfSBmcm9tIFwiZXhwcmVzcy1zZXJ2ZS1zdGF0aWMtY29yZVwiO1xyXG5pbXBvcnQgKiBhcyBsaWtlQXIgZnJvbSBcImxpa2UtYXJcIjtcclxuaW1wb3J0ICogYXMgZXhwcmVzcyBmcm9tIFwiZXhwcmVzc1wiO1xyXG5cclxuaW1wb3J0IHtwcm9taXNlcyBhcyBmcyB9IGZyb20gXCJmc1wiO1xyXG5cclxuaW1wb3J0IHsgcm9sZXMgICAgICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXJvbGVzXCI7XHJcbmltcG9ydCB7IHBlcnNvbmFsICAgICAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1wZXJzb25hbFwiO1xyXG5pbXBvcnQgeyByZWNlcGNpb25pc3RhcyAgICAgIH0gZnJvbSBcIi4vdGFibGUtcmVjZXBjaW9uaXN0YXNcIjtcclxuaW1wb3J0IHsgZW5jdWVzdGFkb3Jlc19hc2lnbmFkb3MgfSBmcm9tIFwiLi90YWJsZS1lbmN1ZXN0YWRvcmVzXCI7XHJcbmltcG9ydCB7IHJlY3VwZXJhZG9yZXNfYXNpZ25hZG9zIH0gZnJvbSBcIi4vdGFibGUtZW5jdWVzdGFkb3Jlc1wiO1xyXG5pbXBvcnQgeyBzdXBlcnZpc29yZXNfYXNpZ25hZG9zICB9IGZyb20gXCIuL3RhYmxlLWVuY3Vlc3RhZG9yZXNcIjtcclxuaW1wb3J0IHsgbWlzX2VuY3Vlc3RhZG9yZXMgICB9IGZyb20gXCIuL3RhYmxlLW1pc19lbmN1ZXN0YWRvcmVzXCI7XHJcbmltcG9ydCB7IHJlY3VwZXJhZG9yZXMgICAgICAgfSBmcm9tIFwiLi90YWJsZS1yZWN1cGVyYWRvcmVzXCI7XHJcbmltcG9ydCB7IHN1cGVydmlzb3JlcyAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1zdXBlcnZpc29yZXNcIjtcclxuaW1wb3J0IHsgcGVyc29uYWxfcm9sICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXBlcnNvbmFsX3JvbFwiO1xyXG5pbXBvcnQgeyBwZXJtaXNvcyAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtcGVybWlzb3NcIjtcclxuaW1wb3J0IHsgcm9sZXNfcGVybWlzb3MgICAgICB9IGZyb20gXCIuL3RhYmxlLXJvbGVzX3Blcm1pc29zXCI7XHJcbmltcG9ydCB7IHBhcmFtZXRyb3MgICAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1wYXJhbWV0cm9zXCI7XHJcbmltcG9ydCB7IHJvbGVzX3N1Ym9yZGluYWRvcyAgfSBmcm9tIFwiLi90YWJsZS1yb2xlc19zdWJvcmRpbmFkb3NcIjtcclxuXHJcbmltcG9ydCB7bm9fcmVhICAgICAgICAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1ub19yZWFcIjtcclxuaW1wb3J0IHtub19yZWFfc3VwICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLW5vX3JlYV9zdXBcIjtcclxuaW1wb3J0IHt0ZW0gICAgICAgICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXRlbVwiO1xyXG5pbXBvcnQge3RlbV9yZWNlcGNpb24gICAgICAgIH0gZnJvbSBcIi4vdGFibGUtdGVtX3JlY2VwY2lvblwiO1xyXG5pbXBvcnQge3NlbWFuYXMgICAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtc2VtYW5hc1wiO1xyXG5pbXBvcnQgeyB1c3VhcmlvcyAgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS11c3Vhcmlvcyc7XHJcbmltcG9ydCB7IG9wZXJhY2lvbmVzICAgICAgICAgfSBmcm9tICcuL3RhYmxlLW9wZXJhY2lvbmVzJztcclxuaW1wb3J0IHsgY29tdW5hcyAgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtY29tdW5hcyc7XHJcbmltcG9ydCB7IGFyZWFzICAgICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLWFyZWFzJztcclxuaW1wb3J0IHsgc2luY3Jvbml6YWNpb25lcyAgICB9IGZyb20gJy4vdGFibGUtc2luY3Jvbml6YWNpb25lcyc7XHJcbmltcG9ydCB7IHRhcmVhcyAgICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLXRhcmVhcyc7XHJcbmltcG9ydCB7IHRhcmVhc190ZW0sIFxyXG4gICAgICAgICB0YXJlYXNfdGVtX2VuY3UsIFxyXG4gICAgICAgICB0YXJlYXNfdGVtX3JlY3UsIFxyXG4gICAgICAgICB0YXJlYXNfdGVtX3N1cGUgICAgIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfdGVtJztcclxuaW1wb3J0IHsgdGFyZWFzX2FyZWFzICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgYXJlYXNfYXNpZ25hY2lvbl9nZW5lcmFsIH0gZnJvbSAnLi90YWJsZS1hcmVhc19hc2lnbmFjaW9uX2dlbmVyYWwnO1xyXG5pbXBvcnQgeyBncmlsbGFfaG9qYV9ydXRhICAgIH0gZnJvbSAnLi90YWJsZS1ncmlsbGFfaG9qYV9ydXRhJztcclxuaW1wb3J0IHsgdF9lbmN1X2FyZWFzICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgdF9yZWN1X2FyZWFzICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgdF9zdXBlX2FyZWFzICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgbWlzX3RhcmVhcyAgICAgICAgICB9IGZyb20gJy4vdGFibGUtbWlzX3RhcmVhcyc7XHJcbmltcG9ydCB7IHRlbV9hc2lnbmFjaW9uICAgICAgfSBmcm9tICcuL3RhYmxlLXRlbV9hc2lnbmFjaW9uJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbV9yZWNlcGNpb259IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9yZWNlcGNpb24nO1xyXG5pbXBvcnQgeyBtaXNfdGFyZWFzX2FyZWFzICAgIH0gZnJvbSAnLi90YWJsZS1taXNfdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgY29udHJvbF9jYW1wbyAgICAgICB9IGZyb20gJy4vdGFibGUtY29udHJvbF9jYW1wbyc7XHJcbmltcG9ydCB7IGNvbnRyb2xfcmVzdW1lbiAgICAgfSBmcm9tICcuL3RhYmxlLWNvbnRyb2xfcmVzdW1lbic7XHJcbmltcG9ydCB7IHZpdmllbmRhcyAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLXZpdmllbmRhcyc7XHJcbmltcG9ydCB7IHZpc2l0YXMgICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLXZpc2l0YXMnO1xyXG5pbXBvcnQgeyBob2dhcmVzICAgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS1ob2dhcmVzJztcclxuaW1wb3J0IHsgcGVyc29uYXMgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtcGVyc29uYXMnO1xyXG5pbXBvcnQgeyB2aXNpdGFzX3N1cCAgICAgICAgIH0gZnJvbSAnLi90YWJsZS12aXNpdGFzX3N1cCc7XHJcbmltcG9ydCB7IGhvZ2FyZXNfc3VwICAgICAgICAgfSBmcm9tICcuL3RhYmxlLWhvZ2FyZXNfc3VwJztcclxuaW1wb3J0IHsgcGVyc29uYXNfc3VwICAgICAgICB9IGZyb20gJy4vdGFibGUtcGVyc29uYXNfc3VwJztcclxuXHJcbmltcG9ydCB7IGVzdGFkb3MgICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLWVzdGFkb3MnO1xyXG5pbXBvcnQgeyBhY2Npb25lcyAgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS1hY2Npb25lcyc7XHJcbmltcG9ydCB7IGVzdGFkb3NfYWNjaW9uZXMgICAgfSBmcm9tICcuL3RhYmxlLWVzdGFkb3NfYWNjaW9uZXMnO1xyXG5cclxuXHJcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzLWRtZW5jdVwiO1xyXG5pbXBvcnQge2RlZkNvbmZpZ30gZnJvbSBcIi4vZGVmLWNvbmZpZ1wiXHJcblxyXG5jb25zdCBBUFBfRE1fVkVSU0lPTj1cIiMyMi0xMi0xNVwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGVtZXJnZUFwcERtRW5jdTxUIGV4dGVuZHMgcHJvY2VzYW1pZW50by5Db25zdHJ1Y3Rvcjxwcm9jZXNhbWllbnRvLkFwcFByb2Nlc2FtaWVudG9UeXBlPj4oQmFzZTpUKXtcclxuICByZXR1cm4gY2xhc3MgQXBwRG1FbmN1IGV4dGVuZHMgQmFzZXtcclxuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6YW55W10peyBcclxuICAgICAgICBzdXBlcihhcmdzKTsgXHJcbiAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50ID0gdGhpcy5jYWNoZXMudGFibGVDb250ZW50IHx8IHt9O1xyXG4gICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWE9W11cclxuICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX2dyb3Vwcz1bXVxyXG4gICAgICAgIHRoaXMuY2FjaGVzLm1ldGFFbmNJbmNsdWlyQ2FzaWxsZXJvc1NhbHRvUkVMID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYWNoZXMudGltZXN0YW1wRXN0cnVjdHVyYSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgfVxyXG4gICAgb3ZlcnJpZGUgYXN5bmMgY2FuQ2hhbmdlUGFzcyhyZXFPckNvbnRleHQsIHVzZXJUb0NoYW5nZVBhc3Mpe1xyXG4gICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IGF3YWl0IGJlLmluRGJDbGllbnQobnVsbCwgYXN5bmMgKGNsaWVudCk9PntcclxuICAgICAgICAgICAgdmFyIHEgPSBiZS5kYi5xdW90ZUxpdGVyYWw7XHJcbiAgICAgICAgICAgIHZhciByb2wgPSByZXFPckNvbnRleHQudXNlci5yb2w7XHJcbiAgICAgICAgICAgIHJldHVybiAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgICAgIHNlbGVjdCAqIFxyXG4gICAgICAgICAgICAgICAgICBmcm9tIHVzdWFyaW9zIFxyXG4gICAgICAgICAgICAgICAgICB3aGVyZSByb2wgaW4gKHNlbGVjdCByb2xfc3Vib3JkaW5hZG8gZnJvbSByb2xlc19zdWJvcmRpbmFkb3Mgd2hlcmUgcm9sID0gJHtxKHJvbCl9KWApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB2YXIgcHVlZGUgPSAhIXJlc3VsdC5maW5kKCh1c2VyKT0+dXNlci51c3VhcmlvID09IHVzZXJUb0NoYW5nZVBhc3MpO1xyXG4gICAgICAgIHZhciBpc0FkbWluID0gYmUuaXNBZG1pbihyZXFPckNvbnRleHQpO1xyXG4gICAgICAgIHJldHVybiBpc0FkbWluIHx8IHB1ZWRlXHJcbiAgICAgICAgXHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBhc3luYyBnZXRQcm9jZWR1cmVzKCl7XHJcbiAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICB2YXIgcHJvY2VkaW1pZW50b0FSZWVtcGxhemFyPVtcImNhc29fZ3VhcmRhclwiLFwiY2Fzb190cmFlclwiXTtcclxuICAgICAgICB2YXIgcGFyZW50UHJvYyA9IGF3YWl0IHN1cGVyLmdldFByb2NlZHVyZXMoKTtcclxuICAgICAgICBwYXJlbnRQcm9jID0gcGFyZW50UHJvYy5maWx0ZXIoKHByb2NlZHVyZTphbnkpID0+ICFwcm9jZWRpbWllbnRvQVJlZW1wbGF6YXIuaW5jbHVkZXMocHJvY2VkdXJlLmFjdGlvbikpO1xyXG4gICAgICAgIHBhcmVudFByb2MgPSBwYXJlbnRQcm9jLm1hcChwcm9jRGVmPT57XHJcbiAgICAgICAgICAgIGlmKHByb2NEZWYuYWN0aW9uID09ICd0YWJsZV9yZWNvcmRfc2F2ZScgfHwgcHJvY0RlZi5hY3Rpb24gPT0gJ3RhYmxlX3JlY29yZF9kZWxldGUnKXtcclxuICAgICAgICAgICAgICAgIHZhciBjb3JlRnVuY3Rpb25JbnRlcm5vID0gcHJvY0RlZi5jb3JlRnVuY3Rpb247XHJcbiAgICAgICAgICAgICAgICBwcm9jRGVmLmNvcmVGdW5jdGlvbiA9IGFzeW5jIGZ1bmN0aW9uKGNvbnRleHQ6Q29udGV4dCwgcGFyYW1ldGVyczpDb3JlRnVuY3Rpb25QYXJhbWV0ZXJzKXtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgY29yZUZ1bmN0aW9uSW50ZXJubyhjb250ZXh0LCBwYXJhbWV0ZXJzKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHBhcmFtZXRlcnMudGFibGUgPT0gJ2Nhc2lsbGVyb3MnKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmUuY2FjaGVzLnRpbWVzdGFtcEVzdHJ1Y3R1cmEgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3NlIHRvY8OzIGxhIGVzdHJ1Y3R1cmEnLCBiZS5jYWNoZXMudGltZXN0YW1wRXN0cnVjdHVyYSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcHJvY0RlZjtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybiBwYXJlbnRQcm9jLmNvbmNhdChQcm9jZWR1cmVzRG1FbmN1KTtcclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGFzeW5jIGNoZWNrRGF0YWJhc2VTdHJ1Y3R1cmUoX2NsaWVudDpDbGllbnQpe1xyXG4gICAgfVxyXG4gICAgb3ZlcnJpZGUgYWRkU2NocsO2ZGluZ2VyU2VydmljZXMobWFpbkFwcDpwcm9jZXNhbWllbnRvLkV4cHJlc3MsIGJhc2VVcmw6c3RyaW5nKXtcclxuICAgICAgICBsZXQgYmU9dGhpcztcclxuICAgICAgICBzdXBlci5hZGRTY2hyw7ZkaW5nZXJTZXJ2aWNlcyhtYWluQXBwLCBiYXNlVXJsKTtcclxuICAgICAgICAvL3Blcm1pdG8gbGV2YW50YXIgbWlzIGltYWdlbmVzIGVuIGFwbGljYWNpb25lcyBkZXBlbmRpZW50ZXNcclxuICAgICAgICBiZS5hcHAudXNlKCcvaW1nJywgZXhwcmVzcy5zdGF0aWMoJ25vZGVfbW9kdWxlcy9kbWVuY3UvZGlzdC91bmxvZ2dlZC91bmxvZ2dlZC9pbWcnKSlcclxuICAgICAgICBtYWluQXBwLnVzZShmdW5jdGlvbihyZXE6UmVxdWVzdCxfcmVzOlJlc3BvbnNlLCBuZXh0Ok5leHRGdW5jdGlvbil7XHJcbiAgICAgICAgICAgIGlmKHJlcS5zZXNzaW9uICYmICFyZXEuc2Vzc2lvbi5pbnN0YWxsKXtcclxuICAgICAgICAgICAgICAgIHJlcS5zZXNzaW9uLmluc3RhbGw9TWF0aC5yYW5kb20oKS50b1N0cmluZygpLnJlcGxhY2UoJy4nLCcnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBuZXh0KCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsKycvc2FsdmFyJyxhc3luYyBmdW5jdGlvbihyZXEscmVzLF9uZXh0KXtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBzw6kgcXVlIHZveSBhIHJlY2liaXIgdXNlcmFnZW50IHBvciBsb3MgbWlkZGxld2FyZXMgZGUgQmFja2VuZC1wbHVzXHJcbiAgICAgICAgICAgIHZhciB7dXNlcmFnZW50fSA9IHJlcTtcclxuICAgICAgICAgICAgdmFyIGh0bWxNYWluPWJlLm1haW5QYWdlKHt1c2VyYWdlbnR9LCBmYWxzZSwge3NraXBNZW51OnRydWUsIG9mZmxpbmVGaWxlOnRydWV9KS50b0h0bWxEb2MoKTtcclxuICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChodG1sTWFpbiwnaHRtbCcpKHJlcSxyZXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG1haW5BcHAuZ2V0KGJhc2VVcmwrJy9jYW1wbycsYXN5bmMgZnVuY3Rpb24ocmVxLHJlcyxfbmV4dCl7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgc8OpIHF1ZSB2b3kgYSByZWNpYmlyIHVzZXJhZ2VudCBwb3IgbG9zIG1pZGRsZXdhcmVzIGRlIEJhY2tlbmQtcGx1c1xyXG4gICAgICAgICAgICB2YXIge3VzZXJhZ2VudCwgdXNlcn0gPSByZXE7XHJcbiAgICAgICAgICAgIGlmKHVzZXIpe1xyXG4gICAgICAgICAgICAgICAgLyoqIEB0eXBlIHt7dHlwZTonanMnLCBzcmM6c3RyaW5nfVtdfSAqL1xyXG4gICAgICAgICAgICAgICAgdmFyIHdlYk1hbmlmZXN0UGF0aCA9ICdjYXJnYS1kbS93ZWItbWFuaWZlc3Qud2VibWFuaWZlc3QnO1xyXG4gICAgICAgICAgICAgICAgdmFyIGh0bWxNYWluPWJlLm1haW5QYWdlKHt1c2VyYWdlbnQsIHVzZXJ9LCBmYWxzZSwge3NraXBNZW51OnRydWUsIHdlYk1hbmlmZXN0UGF0aCwgb2ZmbGluZUZpbGU6dHJ1ZX0pLnRvSHRtbERvYygpO1xyXG4gICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVUZXh0KGh0bWxNYWluLCdodG1sJykocmVxLHJlcyk7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgcmVzLnJlZGlyZWN0KDQwMSwgYmFzZVVybCsnL2xvZ2luI3c9cGF0aCZwYXRoPS9jYW1wbycpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB2YXIgY3JlYXRlU2VydmljZVdvcmtlciA9IGFzeW5jIGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIHZhciBzdyA9IGF3YWl0IGZzLnJlYWRGaWxlKCdub2RlX21vZHVsZXMvc2VydmljZS13b3JrZXItYWRtaW4vZGlzdC9zZXJ2aWNlLXdvcmtlci13by1tYW5pZmVzdC5qcycsICd1dGY4Jyk7XHJcbiAgICAgICAgICAgIHZhciBtYW5pZmVzdCA9IGJlLmNyZWF0ZVJlc291cmNlc0ZvckNhY2hlSnNvbigpO1xyXG4gICAgICAgICAgICB2YXIgc3dNYW5pZmVzdCA9IHN3XHJcbiAgICAgICAgICAgICAgICAucmVwbGFjZShcIicvKnZlcnNpb24qLydcIiwgSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QudmVyc2lvbikpXHJcbiAgICAgICAgICAgICAgICAucmVwbGFjZShcIicvKmFwcE5hbWUqLydcIiwgSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QuYXBwTmFtZSkpXHJcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbXFxzKlxcL1xcKnVybHNUb0NhY2hlXFwqXFwvXFxzKlxcXS8sIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmNhY2hlKSlcclxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFtcXHMqXFwvXFwqZmFsbGJhY2tzXFwqXFwvXFxzKlxcXS8sIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmZhbGxiYWNrIHx8IFtdKSk7XHJcbiAgICAgICAgICAgICAgICAvLy5yZXBsYWNlKFwiLyNDQUNIRSQvXCIsIFwiLyhhXFxcXGQrbVxcXFxkK3BcXFxcZCt0XFxcXGQrX2VzdHJ1Y3R1cmEuanMpfChhXFxcXGQrbVxcXFxkK3BcXFxcZCt0XFxcXGQrX2hkci5qc29uKS9cIik7XHJcbiAgICAgICAgICAgIHJldHVybiBzd01hbmlmZXN0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1haW5BcHAuZ2V0KGJhc2VVcmwrYC9zdy1tYW5pZmVzdC5qc2AsIGFzeW5jIGZ1bmN0aW9uKHJlcSwgcmVzLCBuZXh0KXtcclxuICAgICAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChhd2FpdCBjcmVhdGVTZXJ2aWNlV29ya2VyKCksJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnKShyZXEscmVzKTtcclxuICAgICAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVFcnIocmVxLHJlcyxuZXh0KSh1bmV4cGVjdGVkKGVycikpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbWFpbkFwcC5nZXQoYmFzZVVybCtgL2NhcmdhLWRtL3dlYi1tYW5pZmVzdC53ZWJtYW5pZmVzdGAsIGFzeW5jIGZ1bmN0aW9uKHJlcSwgcmVzLCBuZXh0KXtcclxuICAgICAgICAgICAgY29uc3QgQVBQX05BTUUgPSAoYXdhaXQgYmUuaW5UcmFuc2FjdGlvbihudWxsLCAoY2xpZW50OnBnLkNsaWVudCk9PlxyXG4gICAgICAgICAgICAgICAgY2xpZW50LnF1ZXJ5KFwic2VsZWN0IG9wZXJhdGl2byBmcm9tIHBhcmFtZXRyb3Mgd2hlcmUgdW5pY29fcmVnaXN0cm9cIikuZmV0Y2hVbmlxdWVWYWx1ZSgpXHJcbiAgICAgICAgICAgICkpLnZhbHVlO1xyXG4gICAgICAgICAgICB2YXIgc3VmaWpvID0gYmFzZVVybC5pbmNsdWRlcygndGVzdCcpIHx8IGJhc2VVcmwuaW5jbHVkZXMoJy9wcicpPydfdGVzdCc6XHJcbiAgICAgICAgICAgICAgICBiYXNlVXJsLmluY2x1ZGVzKCdjYXBhJyk/J19jYXBhJzonJztcclxuICAgICAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHtcclxuICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IGAke0FQUF9OQU1FfSR7c3VmaWpvfSBQcm9ncmVzc2l2ZSBXZWIgQXBwYCxcclxuICAgICAgICAgICAgICAgICAgXCJzaG9ydF9uYW1lXCI6IGAke0FQUF9OQU1FfSR7c3VmaWpvfSBQV0FgLFxyXG4gICAgICAgICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IGBQcm9ncmVzc2l2ZSBXZWIgQXBwIGZvciAke0FQUF9OQU1FfSR7c3VmaWpvfS5gLFxyXG4gICAgICAgICAgICAgICAgICBcImljb25zXCI6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNyY1wiOiBgLi4vaW1nLyR7QVBQX05BTUV9LWxvZ28tZG0tMzIke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICAgICAgICAgICAgICAgIFwic2l6ZXNcIjogXCIzMngzMlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwic3JjXCI6IGAuLi9pbWcvJHtBUFBfTkFNRX0tbG9nby1kbS00OCR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzaXplc1wiOiBcIjQ4eDQ4XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJpbWFnZS9wbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTY0JHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNpemVzXCI6IFwiNjR4NjRcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImltYWdlL3BuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNyY1wiOiBgLi4vaW1nLyR7QVBQX05BTUV9LWxvZ28tZG0tNzIke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICAgICAgICAgICAgICAgIFwic2l6ZXNcIjogXCI3Mng3MlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwic3JjXCI6IGAuLi9pbWcvJHtBUFBfTkFNRX0tbG9nby1kbS0xOTIke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICAgICAgICAgICAgICAgIFwic2l6ZXNcIjogXCIxOTJ4MTkyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJpbWFnZS9wbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTUxMiR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzaXplc1wiOiBcIjUxMng1MTJcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImltYWdlL3BuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAuLi5iZS5nZXRDb2xvcnNKc29uKHN1ZmlqbyBhcyBTdWZpam9zQW1iaWVudGUpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVUZXh0KEpTT04uc3RyaW5naWZ5KGNvbnRlbnQpLCAnYXBwbGljYXRpb24vanNvbicpKHJlcSxyZXMpO1xyXG4gICAgICAgICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUVycihyZXEsIHJlcywgbmV4dCkodW5leHBlY3RlZChlcnIpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZ2V0Q29sb3JzSnNvbihfc3VmaWpvOiBTdWZpam9zQW1iaWVudGUpe1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIFwic3RhcnRfdXJsXCI6IFwiLi4vY2FtcG9cIixcclxuICAgICAgICAgICAgXCJkaXNwbGF5XCI6IFwic3RhbmRhbG9uZVwiLFxyXG4gICAgICAgICAgICBcInRoZW1lX2NvbG9yXCI6IFwiIzNGNTFCNVwiLFxyXG4gICAgICAgICAgICBcImJhY2tncm91bmRfY29sb3JcIjogXCIjNmQ2MGVkXCJcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBhZGRMb2dnZWRTZXJ2aWNlcygpe1xyXG4gICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgc3VwZXIuYWRkTG9nZ2VkU2VydmljZXMoKTtcclxuICAgICAgICBiZS5hcHAuZ2V0KCcvbWFuaWZlc3QubWFuaWZlc3QnLCBhc3luYyBmdW5jdGlvbihyZXE6UmVxdWVzdCwgcmVzOlJlc3BvbnNlLCBfbmV4dDpOZXh0RnVuY3Rpb24pe1xyXG4gICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVGaWxlKCdzcmMvY2xpZW50L21hbmlmZXN0Lm1hbmlmZXN0Jyx7fSkocmVxLHJlcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5hcHAuZ2V0KCcvZmlsZScsIGFzeW5jIGZ1bmN0aW9uKHJlcTpSZXF1ZXN0LHJlczpSZXNwb25zZSl7XHJcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBiZS5pblRyYW5zYWN0aW9uKHJlcSwgXHJcbiAgICAgICAgICAgICAgICAoY2xpZW50OnBnLkNsaWVudCk9PlxyXG4gICAgICAgICAgICAgICAgY2xpZW50LnF1ZXJ5KFwic2VsZWN0IHJ1dGEgZnJvbSBhZGp1bnRvcyB3aGVyZSBpZF9hZGp1bnRvID0gJDFcIixbcmVxLnF1ZXJ5LmlkX2FkanVudG9dKVxyXG4gICAgICAgICAgICAgICAgLmZldGNoVW5pcXVlVmFsdWUoKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB2YXIgcGF0aCA9IHJlc3VsdC52YWx1ZTtcclxuICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlRmlsZShwYXRoLHt9KShyZXEscmVzKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmFwcC5nZXQoJy9pbWFnZW5lcycsIGFzeW5jIGZ1bmN0aW9uKHJlcTpSZXF1ZXN0LHJlczpSZXNwb25zZSl7XHJcbiAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUZpbGUoJ2xvY2FsLWltYWdlcy8nK3JlcS5xdWVyeS5wZGYse30pKHJlcSxyZXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYXBwLmdldCgnL2Rvd25sb2FkL2FsbCcsYXN5bmMgZnVuY3Rpb24ocmVxOlJlcXVlc3QsIHJlczpSZXNwb25zZSwgbmV4dDooKT0+dm9pZCl7XHJcbiAgICAgICAgICAgIGlmKHJlcS51c2VyPT1udWxsIHx8IHJlcS51c2VyLnJvbCE9J2FkbWluJyl7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbm8gZXN0w6EgYXV0b3JpemFkbyBhIGJhamFyc2UgdG9kbycscmVxLnVzZXIpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV4dCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCB6aXAgPSBuZXcgeWF6bC5aaXBGaWxlKCk7XHJcbiAgICAgICAgICAgIHppcC5vdXRwdXRTdHJlYW0ucGlwZShyZXMpO1xyXG4gICAgICAgICAgICBsZXQgYmFzZSA9ICdsb2NhbC1hdHRhY2htZW50cydcclxuICAgICAgICAgICAgbGV0IGZpbGVzID0gYXdhaXQgZnMucmVhZGRpcihiYXNlKTtcclxuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoZmlsZXMubWFwKGFzeW5jIGZ1bmN0aW9uKGZpbGVOYW1lOnN0cmluZyl7XHJcbiAgICAgICAgICAgICAgICB2YXIgcGF0aCA9IGJhc2UrJy8nK2ZpbGVOYW1lO1xyXG4gICAgICAgICAgICAgICAgdmFyIHN0YXQgPSBhd2FpdCBmcy5zdGF0KHBhdGgpO1xyXG4gICAgICAgICAgICAgICAgaWYoc3RhdC5pc0ZpbGUoKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgemlwLmFkZEZpbGUocGF0aCxmaWxlTmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgemlwLmVuZCgpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBhc3luYyBwb3N0Q29uZmlnKCl7XHJcbiAgICAgICAgYXdhaXQgc3VwZXIucG9zdENvbmZpZygpO1xyXG4gICAgICAgIHZhciBiZT10aGlzO1xyXG4gICAgICAgIGJlLmNhY2hlcy5tZXRhRW5jSW5jbHVpckNhc2lsbGVyb3NTYWx0b1JFTCA9IGZhbHNlO1xyXG4gICAgICAgIGF3YWl0IGJlLmluVHJhbnNhY3Rpb24obnVsbCwgYXN5bmMgZnVuY3Rpb24oY2xpZW50OnBnLkNsaWVudCl7XHJcbiAgICAgICAgICAgIHZhciBxUGVybWlzb3M9YFxyXG4gICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhyLnJvbCxqc29uYl9idWlsZF9vYmplY3QoJ3N1cGVydXNlcicsci5zdXBlcnVzZXIsJ3B1ZWRlJywoXHJcbiAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHJwLnBlcm1pc28sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhycGEuYWNjaW9uLHJwYS5oYWJpbGl0YWRvKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gcm9sZXNfcGVybWlzb3MgcnBhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgcnBhLnJvbD1ycC5yb2wgQU5EIHJwYS5wZXJtaXNvPXJwLnBlcm1pc29cclxuICAgICAgICAgICAgICAgICAgICApKVxyXG4gICAgICAgICAgICAgICAgICAgIEZST00gcm9sZXNfcGVybWlzb3MgcnBcclxuICAgICAgICAgICAgICAgICAgICBXSEVSRSBycC5yb2w9ci5yb2wgI2NvbmRIYWJpbGl0YWRvI1xyXG4gICAgICAgICAgICAgICkpKVxyXG4gICAgICAgICAgICAgIEZST00gcm9sZXMgclxyXG4gICAgICAgICAgICBgO1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0cyA9IFtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5xdWVyeShxUGVybWlzb3MucmVwbGFjZSgnI2NvbmRIYWJpbGl0YWRvIycsJycpKS5mZXRjaFVuaXF1ZVZhbHVlKCksXHJcbiAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucXVlcnkocVBlcm1pc29zLnJlcGxhY2UoJyNjb25kSGFiaWxpdGFkbyMnLGAgYW5kIHJwLiR7cGcucXVvdGVJZGVudCgnaGFiaWxpdGFkbycpfWApKS5mZXRjaFVuaXF1ZVZhbHVlKCksXHJcbiAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHBlcm1pc28sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhhY2Npb24sdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NIHBlcm1pc29zIHBhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgcGEucGVybWlzbz1wLnBlcm1pc29cclxuICAgICAgICAgICAgICAgICAgICAgICkpXHJcbiAgICAgICAgICAgICAgICAgICAgICBGUk9NIHBlcm1pc29zIHBcclxuICAgICAgICAgICAgICAgIGApLmZldGNoVW5pcXVlVmFsdWUoKVxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICBiZS5jYWNoZXMucGVybWlzb3NSb2w9cmVzdWx0c1swXS52YWx1ZTtcclxuICAgICAgICAgICAgYmUuY2FjaGVzLnBlcm1pc29zUm9sU29sb1RydWU9cmVzdWx0c1sxXS52YWx1ZTtcclxuICAgICAgICAgICAgYmUuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyPXJlc3VsdHNbMl0udmFsdWU7XHJcbiAgICAgICAgICAgIGJlLmNhY2hlcy5wZXJtaXNvc1BhcmFOYWRpZT1saWtlQXIoYmUuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyKS5tYXAocD0+bGlrZUFyKHApLm1hcChfPT5mYWxzZSkucGxhaW4oKSkucGxhaW4oKVxyXG4gICAgICAgICAgICAvL2NvbnNvbGUuZGlyKGJlLmNhY2hlcy5wZXJtaXNvc1JvbFNvbG9UcnVlLHtkZXB0aDo5fSk7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5kaXIoYmUuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyLHtkZXB0aDo5fSk7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5kaXIoYmUuY2FjaGVzLnBlcm1pc29zUGFyYU5hZGllLHtkZXB0aDo5fSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoQ2FjaGVzKCk7XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBjb25maWdTdGF0aWNDb25maWcoKXtcclxuICAgICAgICBzdXBlci5jb25maWdTdGF0aWNDb25maWcoKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRpY0NvbmZpZyhkZWZDb25maWcpO1xyXG4gICAgfVxyXG4gICAgb3ZlcnJpZGUgY2xpZW50SW5jbHVkZXMocmVxOlJlcXVlc3QsIG9wdHM6T3B0c0NsaWVudFBhZ2UpOkNsaWVudE1vZHVsZURlZmluaXRpb25bXSB7XHJcbiAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICB2YXIgdW5sb2dnZWQgPSBvcHRzICYmIG9wdHMub2ZmbGluZUZpbGU7XHJcbiAgICAgICAgdmFyIG1lbnVlZFJlc291cmNlczpDbGllbnRNb2R1bGVEZWZpbml0aW9uW109IHVubG9nZ2VkP1tcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAndW5sb2dnZWQuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgIF06W1xyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi9jbGllbnQvY2xpZW50JywgZmlsZTogJ2NsaWVudC5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgXTtcclxuICAgICAgICBpZihvcHRzICYmIG9wdHMuZXh0cmFGaWxlcyl7XHJcbiAgICAgICAgICAgIG1lbnVlZFJlc291cmNlcyA9IG1lbnVlZFJlc291cmNlcy5jb25jYXQob3B0cy5leHRyYUZpbGVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGV4dGVybmFsUmVzb3VyY2VzOkNsaWVudE1vZHVsZURlZmluaXRpb25bXSA9IFtcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdyZWFjdCcsIG1vZFBhdGg6ICd1bWQnLCBmaWxlRGV2ZWxvcG1lbnQ6J3JlYWN0LmRldmVsb3BtZW50LmpzJywgZmlsZToncmVhY3QucHJvZHVjdGlvbi5taW4uanMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVhY3QtZG9tJywgbW9kUGF0aDogJ3VtZCcsIGZpbGVEZXZlbG9wbWVudDoncmVhY3QtZG9tLmRldmVsb3BtZW50LmpzJywgZmlsZToncmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ0BtYXRlcmlhbC11aS9jb3JlJywgbW9kUGF0aDogJ3VtZCcsIGZpbGVEZXZlbG9wbWVudDonbWF0ZXJpYWwtdWkuZGV2ZWxvcG1lbnQuanMnLCBmaWxlOidtYXRlcmlhbC11aS5wcm9kdWN0aW9uLm1pbi5qcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdjbHN4JywgZmlsZTonY2xzeC5taW4uanMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVkdXgnLCBtb2RQYXRoOicuLi9kaXN0JywgZmlsZURldmVsb3BtZW50OidyZWR1eC5qcycsIGZpbGU6J3JlZHV4Lm1pbi5qcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdyZWFjdC1yZWR1eCcsIG1vZFBhdGg6Jy4uL2Rpc3QnLCBmaWxlRGV2ZWxvcG1lbnQ6J3JlYWN0LXJlZHV4LmpzJywgZmlsZToncmVhY3QtcmVkdXgubWluLmpzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ21lbW9pemUtb25lJywgIGZpbGU6J21lbW9pemUtb25lLmpzJyB9LFxyXG4gICAgICAgICAgICAvL3sgdHlwZTogJ2pzJywgbW9kdWxlOiAncXJjb2RlJywgbW9kUGF0aDogJy4uL2J1aWxkJywgZmlsZTogJ3FyY29kZS5qcyd9LFxyXG4gICAgICAgICAgICAuLi5zdXBlci5jbGllbnRJbmNsdWRlcyhyZXEsIG9wdHMpLmZpbHRlcihtPT5tLmZpbGUhPSdmb3JtdWxhcmlvcy5jc3MnKVxyXG4gICAgICAgICAgICAuZmlsdGVyKG09PiF1bmxvZ2dlZCB8fCB0cnVlXHJcbiAgICAgICAgICAgICAgICAmJiBtLmZpbGUhPSd2YXItY2FsLmpzJ1xyXG4gICAgICAgICAgICAgICAgJiYgbS5maWxlIT0ndmFyLWNhbC5qcycgICAgIFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3NlcnZpY2Utd29ya2VyLWFkbWluJywgIGZpbGU6J3NlcnZpY2Utd29ya2VyLWFkbWluLmpzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlZHV4LXR5cGVkLXJlZHVjZXInLCBtb2RQYXRoOicuLi9kaXN0JywgZmlsZToncmVkdXgtdHlwZWQtcmVkdWNlci5qcycgfVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdmFyIHJlc291cmNlczpDbGllbnRNb2R1bGVEZWZpbml0aW9uW10gPSBbXHJcbiAgICAgICAgICAgIC4uLmV4dGVybmFsUmVzb3VyY2VzLFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdhZGFwdC5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3RpcG9zLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnYnlwYXNzLWZvcm11bGFyaW8uanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdyZWR1eC1mb3JtdWxhcmlvLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAncmVuZGVyLWdlbmVyYWwuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdyZW5kZXItZm9ybXVsYXJpby5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ2FicmlyLWZvcm11bGFyaW8uanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdjc3MnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vY2xpZW50L2NsaWVudC9jc3MnLCBmaWxlOiAnbWVudS5jc3MnLCBwYXRoOiAnY3NzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdjc3MnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQvY3NzJywgZmlsZTogJ2Zvcm11bGFyaW8tcmVhY3QuY3NzJywgcGF0aDogJ2NzcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnY3NzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkL2NzcycsIGZpbGU6ICdib290c3RyYXAubWluLmNzcycsIHBhdGg6ICdjc3MnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ3R0ZicsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZC9jc3MnLCBmaWxlOiAnUm9ib3RvLVJlZ3VsYXIudHRmJywgcGF0aDogJ2NzcycgfSxcclxuICAgICAgICAgICAgLi4uIG1lbnVlZFJlc291cmNlcyxcclxuICAgICAgICBdXHJcbiAgICAgICAgcmV0dXJuIHJlc291cmNlc1xyXG4gICAgICAgIC8vIC5tYXAobT0+KHsuLi5tLCBmaWxlOm0uZmlsZURldmVsb3BtZW50fHxtLmZpbGV9KSk7XHJcbiAgICB9XHJcbiAgICBhc3luYyByZWZyZXNoQ2FjaGVzKCl7XHJcbiAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50ID0gdGhpcy5jYWNoZXMudGFibGVDb250ZW50IHx8IHt9O1xyXG4gICAgICAgIGF3YWl0IHRoaXMuaW5EYkNsaWVudChudWxsLCBhc3luYyAoY2xpZW50KT0+e1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhID0gKGF3YWl0IGNsaWVudC5xdWVyeShgc2VsZWN0ICogZnJvbSBub19yZWEgb3JkZXIgYnkgbm9fcmVhYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2NhY2hlcycsdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYSlcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9ncm91cHMgPSAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgICAgIHNlbGVjdCBncnVwbywganNvbmJfYWdnKHRvX2pzb24oci4qKSkgYXMgY29kaWdvcyBmcm9tIG5vX3JlYSByIGdyb3VwIGJ5IGdydXBvIG9yZGVyIGJ5IDFcclxuICAgICAgICAgICAgYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9ncm91cHMwID0gKGF3YWl0IGNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgICAgICBzZWxlY3QgZ3J1cG8wIGFzIGdydXBvLCBqc29uYl9hZ2codG9fanNvbihyLiopKSBhcyBjb2RpZ29zIGZyb20gbm9fcmVhIHIgZ3JvdXAgYnkgZ3J1cG8wIG9yZGVyIGJ5IDFcclxuICAgICAgICAgICAgYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9zdXAgPSAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBzZWxlY3QgKiBmcm9tIG5vX3JlYV9zdXAgb3JkZXIgYnkgbm9fcmVhX3N1cGApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjYWNoZXMnLHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfc3VwKVxyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX3N1cF9ncm91cHMgPSAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgc2VsZWN0IGdydXBvX3N1cCwganNvbmJfYWdnKHRvX2pzb24oci4qKSkgYXMgY29kaWdvcyBmcm9tIG5vX3JlYV9zdXAgciBncm91cCBieSBncnVwb19zdXAgb3JkZXIgYnkgMVxyXG4gICAgICAgICAgICBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX3N1cF9ncm91cHMwID0gKGF3YWl0IGNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgIHNlbGVjdCBncnVwbzBfc3VwIGFzIGdydXBvLCBqc29uYl9hZ2codG9fanNvbihyLiopKSBhcyBjb2RpZ29zIGZyb20gbm9fcmVhX3N1cCByIGdyb3VwIGJ5IGdydXBvMF9zdXAgb3JkZXIgYnkgMVxyXG4gICAgICAgIGApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBjb25zb2xlLmxvZygnY2FjaGVzIG9rJyk7XHJcbiAgICB9XHJcbiAgICAvL3NxbE5vcmVhQ2FzZShjYW1wb05lY2VzYXJpbzpzdHJpbmcpe1xyXG4gICAgLy8gICAgdmFyIGJlPXRoaXM7XHJcbiAgICAvLyAgICByZXR1cm4gYENBU0UgJHtiZS5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYS5tYXAoeD0+XHJcbiAgICAvLyAgICAgICAgYCBXSEVOIG5vcmVhICA9ICR7YmUuZGIucXVvdGVMaXRlcmFsKHgubm9fcmVhKX06OmludGVnZXIgVEhFTiAke2JlLmRiLnF1b3RlTGl0ZXJhbCh4W2NhbXBvTmVjZXNhcmlvXSl9YFxyXG4gICAgLy8gICAgKS5qb2luKCcnKX0gV0hFTiBUUlVFIFRIRU4gTlVMTCBFTkRgXHJcbiAgICAvL30gICAgXHJcbiAgICBvdmVycmlkZSBnZXRDb250ZXh0KHJlcTpSZXF1ZXN0KTpDb250ZXh0e1xyXG4gICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgdmFyIGZhdGhlckNvbnRleHQgPSBzdXBlci5nZXRDb250ZXh0KHJlcSk7XHJcbiAgICAgICAgaWYoZmF0aGVyQ29udGV4dC51c2VyKXtcclxuICAgICAgICAgICAgaWYocmVxLnVzZXI/LnJvbCAhPW51bGwgJiYgYmUuY2FjaGVzLnBlcm1pc29zUm9sW3JlcS51c2VyLnJvbF0/LnN1cGVydXNlcil7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge3N1cGVydXNlcjp0cnVlLCBwdWVkZTogYmUuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyLCAuLi5mYXRoZXJDb250ZXh0fVxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7cHVlZGU6IGJlLmNhY2hlcy5wZXJtaXNvc1JvbFtyZXEudXNlci5yb2xdPy5wdWVkZSwgLi4uZmF0aGVyQ29udGV4dH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge3B1ZWRlOmJlLmNhY2hlcy5wZXJtaXNvc1BhcmFOYWRpZSwgLi4uZmF0aGVyQ29udGV4dH07XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBnZXRDb250ZXh0Rm9yRHVtcCgpOkNvbnRleHR7XHJcbiAgICAgICAgdmFyIGZhdGhlckNvbnRleHQgPSBzdXBlci5nZXRDb250ZXh0Rm9yRHVtcCgpO1xyXG4gICAgICAgIHJldHVybiB7c3VwZXJ1c2VyOnRydWUsIHB1ZWRlOiB0aGlzLmNhY2hlcy5wZXJtaXNvc1N1cGVydXNlciwgLi4uZmF0aGVyQ29udGV4dH07XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBhc3luYyBnZXRDbGllbnRTZXR1cEZvclNlbmRUb0Zyb250RW5kKHJlcTpSZXF1ZXN0KXtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi4oYXdhaXQgc3VwZXIuZ2V0Q2xpZW50U2V0dXBGb3JTZW5kVG9Gcm9udEVuZChyZXEpKSxcclxuICAgICAgICAgICAgaWRwZXI6IHJlcS51c2VyPy5pZHBlclxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNyZWF0ZVJlc291cmNlc0ZvckNhY2hlSnNvbigpe1xyXG4gICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgdmFyIGpzb25SZXN1bHQgPSB7XHJcbiAgICAgICAgICAgIHZlcnNpb246IEFQUF9ETV9WRVJTSU9OLFxyXG4gICAgICAgICAgICBhcHBOYW1lOiAnZG1lbmN1JyxcclxuICAgICAgICAgICAgY2FjaGU6IFtcclxuICAgICAgICAgICAgICAgIFwiY2FtcG9cIixcclxuICAgICAgICAgICAgICAgIFwib2ZmbGluZVwiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvcmVhY3QucHJvZHVjdGlvbi5taW4uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbWF0ZXJpYWwtdWkucHJvZHVjdGlvbi5taW4uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL2Nsc3gubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9yZWR1eC5taW4uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3JlYWN0LXJlZHV4Lm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbWVtb2l6ZS1vbmUuanNcIixcclxuICAgICAgICAgICAgICAgIC8vXCJsaWIvcXJjb2RlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9yZXF1aXJlLWJyby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvY2FzdC1lcnJvci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbGlrZS1hci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvYmVzdC1nbG9iYWxzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9qc29uNGFsbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvanMtdG8taHRtbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvcmVkdXgtdHlwZWQtcmVkdWNlci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkbWVuY3UvYWRhcHQuanNcIixcclxuICAgICAgICAgICAgICAgIFwiZG1lbmN1L3VubG9nZ2VkLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9qcy15YW1sLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi94bHN4LmNvcmUubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9sYXp5LXNvbWUuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3NxbC10b29scy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkaWFsb2ctcHJvbWlzZS9kaWFsb2ctcHJvbWlzZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJtb21lbnQvbWluL21vbWVudC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJwaWthZGF5L3Bpa2FkYXkuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3BvbHlmaWxscy1icm8uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL2JpZy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvdHlwZS1zdG9yZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvdHlwZWQtY29udHJvbHMuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL2FqYXgtYmVzdC1wcm9taXNlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcIm15LWFqYXguanNcIixcclxuICAgICAgICAgICAgICAgIFwibXktc3RhcnQuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL215LWxvY2FsZGIuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL215LXdlYnNxbGRiLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9teS1sb2NhbGRiLmpzLm1hcFwiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbXktd2Vic3FsZGIuanMubWFwXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9teS10aGluZ3MuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL215LXRhYmxlcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbXktaW5mb3JtLW5ldC1zdGF0dXMuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL215LW1lbnUuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL215LXNraW4uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL2NsaWVudGUtZW4tY2FzdGVsbGFuby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvc2VydmljZS13b3JrZXItYWRtaW4uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3JlZHV4LXR5cGVkLXJlZHVjZXIuanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvb3BlcmF0aXZvcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy92YXJjYWwuanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvZm9ybS1zdHJ1Y3R1cmUuanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvbWV0YS1lbmMuanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvZGF0b3MtZXh0LmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL2NvbnNpc3RlbmNpYXMuanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvcHJvY2VzYW1pZW50by5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkbWVuY3UvdGlwb3MuanNcIixcclxuICAgICAgICAgICAgICAgIFwiZG1lbmN1L2J5cGFzcy1mb3JtdWxhcmlvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImRtZW5jdS9yZWR1eC1mb3JtdWxhcmlvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImRtZW5jdS9yZW5kZXItZ2VuZXJhbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkbWVuY3UvcmVuZGVyLWZvcm11bGFyaW8uanNcIixcclxuICAgICAgICAgICAgICAgIFwiZG1lbmN1L2FicmlyLWZvcm11bGFyaW8uanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvcm93LXZhbGlkYXRvci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjbGllbnQvbWVudS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJpbWcvbG9nby5wbmdcIixcclxuICAgICAgICAgICAgICAgIC8vXCJpbWcvbG9nby1kbS5wbmdcIixcclxuICAgICAgICAgICAgICAgIFwiaW1nL2xvZ28tMTI4LnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgXCJpbWcvbWFpbi1sb2FkaW5nLmdpZlwiLFxyXG4gICAgICAgICAgICAgICAgXCJpbWcvYm9ycmFyLXZhbG9yLnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgXCJpbWcvZm9uZG8tc2FsdGVhZG8tZXJyb3IucG5nXCIsXHJcbiAgICAgICAgICAgICAgICBcImltZy9mb25kby1zYWx0ZWFkby5wbmdcIixcclxuICAgICAgICAgICAgICAgIFwiaW1nL2JhY2tncm91bmQtdGVzdC5wbmdcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50LXNldHVwXCIsXHJcbiAgICAgICAgICAgICAgICBcImNzcy9ib290c3RyYXAubWluLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjc3MvZm9ybXVsYXJpby1yZWFjdC5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwicGlrYWRheS9waWthZGF5LmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkaWFsb2ctcHJvbWlzZS9kaWFsb2ctcHJvbWlzZS5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwicmVsLWVuYy9lc3RhZG9zLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjc3MvbXktdGFibGVzLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjc3MvbXktbWVudS5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwiY3NzL215LXRoaW5ncy5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwiY3NzL21lbnUuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICBcInJlbC1lbmMvbXktdGhpbmdzMi5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwiY3NzL2Zvcm11bGFyaW8tcmVhY3QuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICBcImNzcy9Sb2JvdG8tUmVndWxhci50dGZcIlxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBmYWxsYmFjazogW1xyXG4gICAgICAgICAgICAgICAge1wicGF0aFwiOlwibG9naW5cIiwgXCJmYWxsYmFja1wiOlwib2ZmbGluZVwifSxcclxuICAgICAgICAgICAgICAgIHtcInBhdGhcIjpcImxvZ291dFwiLCBcImZhbGxiYWNrXCI6XCJvZmZsaW5lXCJ9LFxyXG4gICAgICAgICAgICAgICAge1wicGF0aFwiOlwibG9naW4jaT1zaW5jcm9uaXphclwiLCBcImZhbGxiYWNrXCI6XCJvZmZsaW5lXCJ9LFxyXG4gICAgICAgICAgICAgICAge1wicGF0aFwiOlwibWVudSNpPXNpbmNyb25pemFyXCIsIFwiZmFsbGJhY2tcIjpcIm9mZmxpbmVcIn1cclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGpzb25SZXN1bHRcclxuICAgIH1cclxuICAgIGdldE1lbnUoY29udGV4dDpDb250ZXh0KXtcclxuICAgICAgICBsZXQgbWVudTpNZW51SW5mb0Jhc2VbXSA9IFtdO1xyXG4gICAgICAgIGxldCBmaWx0cm9SZWNlcGNpb25pc3RhID0gY29udGV4dC51c2VyLnJvbD09J3JlY2VwY2lvbmlzdGEnID8ge3JlY2VwY2lvbmlzdGE6IGNvbnRleHQudXNlci5pZHBlcn0gOiB7fTtcclxuICAgICAgICBpZih0aGlzLmNvbmZpZy5zZXJ2ZXIucG9saWN5PT0nd2ViJyl7XHJcbiAgICAgICAgICAgIGlmKGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcy5yZWxldmFyKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuY29uZmlnWydjbGllbnQtc2V0dXAnXS5hbWJpZW50ZT09J2RlbW8nIHx8IHRoaXMuY29uZmlnWydjbGllbnQtc2V0dXAnXS5hbWJpZW50ZT09J3Rlc3QnIHx8IHRoaXMuY29uZmlnWydjbGllbnQtc2V0dXAnXS5hbWJpZW50ZT09J2NhcGEnKXtcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goe21lbnVUeXBlOidkZW1vJywgbmFtZTonZGVtbycsIHNlbGVjdGVkQnlEZWZhdWx0OnRydWV9KVxyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKHttZW51VHlwZToncGF0aCcsIG5hbWU6J3JlbGV2YW1pZW50bycsIHBhdGg6Jy9jYW1wbyd9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTonc2luY3Jvbml6YXJfZG0nLCBuYW1lOidzaW5jcm9uaXphcid9LFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBpZihjb250ZXh0LnB1ZWRlPy5jYW1wbz8uZWRpdGFyKXtcclxuICAgICAgICAgICAgICAgIGxldCBtZW51QXNpZ25hY2lvbjpNZW51SW5mb0Jhc2VbXSA9IFtdXHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudUFzaWduYWNpb24ucHVzaCh7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZ2VuZXJhbCcsIHRhYmxlOiAnYXJlYXNfYXNpZ25hY2lvbl9nZW5lcmFsJyB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG1lbnVBc2lnbmFjaW9uLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2VuY3Vlc3RhZG9yJywgdGFibGU6ICd0X2VuY3VfYXJlYXMnLCBmZjogeyB0YXJlYTogJ2VuY3UnLCAuLi5maWx0cm9SZWNlcGNpb25pc3RhIH0gfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncmVjdXBlcmFkb3InLCB0YWJsZTogJ3RhcmVhc190ZW1fcmVjdScsIGZmOiB7IHRhcmVhX2FzaWduYXI6ICdyZWN1JywgdGFyZWE6ICdyZWN1JywgLi4uZmlsdHJvUmVjZXBjaW9uaXN0YSB9IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3N1cGVydmlzb3InICwgdGFibGU6ICd0YXJlYXNfdGVtX3N1cGUnLCBmZjogeyB0YXJlYV9hc2lnbmFyOiAnc3VwZScsIHRhcmVhOiAnc3VwZScsIC4uLmZpbHRyb1JlY2VwY2lvbmlzdGEgfSB9LFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIG1lbnUucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J21lbnUnLCBuYW1lOidhc2lnbmFjaW9uJywgbGFiZWw6J2FzaWduYWNpw7NuJyAsbWVudUNvbnRlbnQ6IG1lbnVBc2lnbmFjaW9ufSxcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J21lbnUnLCBuYW1lOidyZWNlcGNpb24nLCBsYWJlbDoncmVjZXBjacOzbicgLG1lbnVDb250ZW50OltcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2VuY3Vlc3RhZG9yJywgdGFibGU6J2VuY3Vlc3RhZG9yZXNfYXNpZ25hZG9zJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidyZWN1cGVyYWRvcicsIHRhYmxlOidyZWN1cGVyYWRvcmVzX2FzaWduYWRvcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonc3VwZXJ2aXNvcicgLCB0YWJsZTonc3VwZXJ2aXNvcmVzX2FzaWduYWRvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICBdfSwgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6ICdtZW51JywgbmFtZTogJ3ZhcmlvcycsIG1lbnVDb250ZW50OiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTogJ2FicmlyX2VuY3Vlc3RhJywgbmFtZTogJ2FicmlyX2VuY3Vlc3RhJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2hvamFfcnV0YScsIHRhYmxlOiAnZ3JpbGxhX2hvamFfcnV0YScsIGxhYmVsOiAnaG9qYSBkZSBydXRhJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgXX1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKXtcclxuICAgICAgICAgICAgICAgIG1lbnUucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J21lbnUnLCBuYW1lOidjb250cm9sJywgbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncmVzdW1lbicsIHRhYmxlOidjb250cm9sX3Jlc3VtZW4nLCBzZWxlY3RlZEJ5RGVmYXVsdDp0cnVlfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2RvbWluaW8nLCB0YWJsZTonY29udHJvbF9jYW1wb19kb21pbmlvJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid6b25hJyAgICwgdGFibGU6J2NvbnRyb2xfY2FtcG9fem9uYScgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidjb211bmEnICwgdGFibGU6J2NvbnRyb2xfY2FtcG9fY29tdW5hJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOifDoXJlYScgICAsIHRhYmxlOidjb250cm9sX2NhbXBvX2FyZWEnICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncGFydGljaXBhY2lvbicgICAgICAgICwgdGFibGU6J2NvbnRyb2xfY2FtcG9fcGFydGljaXBhY2lvbicgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgXX0sICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcil7XHJcbiAgICAgICAgICAgICAgICBtZW51LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZToncHJvY2VzYXInLCBtZW51Q29udGVudDpbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid2YXJpYWJsZXMnICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidjb25zaXN0ZW5jaWFzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidpbmNvbnNpc3RlbmNpYXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3RhYmxhX2RhdG9zJyAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2RpY2Npb25hcmlvJyAgLCBsYWJlbDonZGljY2lvbmFyaW9zJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIF19LFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgbWVudUNvbmZpZ3VyYXI6TWVudUluZm9CYXNlW10gPSBbXTtcclxuICAgICAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKXtcclxuICAgICAgICAgICAgICAgIG1lbnVDb25maWd1cmFyLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZTonbXVlc3RyYScsIGxhYmVsOidtdWVzdHJhJywgbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondGVtJywgbGFiZWw6ICdURU0nfSAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid0YXJlYXMnfSxcclxuICAgICAgICAgICAgICAgICAgICBdfSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uY2FzaWxsZXJvc190ZXh0bz8uZWRpdGFyKXtcclxuICAgICAgICAgICAgICAgIG1lbnVDb25maWd1cmFyLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZTonbWV0YWRhdG9zJywgbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonb3BlcmF0aXZvcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonZm9ybXVsYXJpb3MnICwgdGFibGU6J2Nhc2lsbGVyb3NfcHJpbmNpcGFsZXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3BsYW5vJyAgICAgICAsIHRhYmxlOidjYXNpbGxlcm9zJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid0aXBvYycgICAgICAgLCBsYWJlbDondGlwb3MgZGUgY2VsZGFzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid0aXBvY190aXBvYycgLCBsYWJlbDonaW5jbHVzaW9uZXMgZGUgY2VsZGFzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgXX0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGNvbnRleHQuc3VwZXJ1c2VyKXtcclxuICAgICAgICAgICAgICAgIG1lbnVDb25maWd1cmFyLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZTonZXN0YWRvc19hY2Npb25lcycsIGxhYmVsOidlc3RhZG9zL2FjY2lvbmVzJywgbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonZXN0YWRvcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonYWNjaW9uZXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2VzdGFkb3NfYWNjaW9uZXMnfSxcclxuICAgICAgICAgICAgICAgICAgICBdfSxcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncGFyYW1ldHJvcyd9LFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhciB8fCBjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKXtcclxuICAgICAgICAgICAgICAgIG1lbnVDb25maWd1cmFyLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZTondXN1YXJpb3MnLCBtZW51Q29udGVudDpbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid1c3VhcmlvcycsIHNlbGVjdGVkQnlEZWZhdWx0OnRydWV9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncm9sZXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3Blcm1pc29zJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidyb2xlc19wZXJtaXNvcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgIF19LFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG1lbnUucHVzaCh7bWVudVR5cGU6J21lbnUnLCBuYW1lOidjb25maWd1cmFyJywgbWVudUNvbnRlbnQ6bWVudUNvbmZpZ3VyYXJ9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHttZW51fTtcclxuICAgIH1cclxuICAgIG92ZXJyaWRlIHByZXBhcmVHZXRUYWJsZXMoKXtcclxuICAgICAgICB2YXIgYmU9dGhpcztcclxuICAgICAgICBzdXBlci5wcmVwYXJlR2V0VGFibGVzKCk7XHJcbiAgICAgICAgdGhpcy5nZXRUYWJsZURlZmluaXRpb249e1xyXG4gICAgICAgICAgICAuLi50aGlzLmdldFRhYmxlRGVmaW5pdGlvblxyXG4gICAgICAgICAgICAsIHJvbGVzXHJcbiAgICAgICAgICAgICwgdXN1YXJpb3NcclxuICAgICAgICAgICAgLCBwZXJzb25hbFxyXG4gICAgICAgICAgICAsIHJlY2VwY2lvbmlzdGFzXHJcbiAgICAgICAgICAgICwgZW5jdWVzdGFkb3Jlc19hc2lnbmFkb3NcclxuICAgICAgICAgICAgLCByZWN1cGVyYWRvcmVzX2FzaWduYWRvc1xyXG4gICAgICAgICAgICAsIHN1cGVydmlzb3Jlc19hc2lnbmFkb3NcclxuICAgICAgICAgICAgLCBtaXNfZW5jdWVzdGFkb3Jlc1xyXG4gICAgICAgICAgICAsIHJlY3VwZXJhZG9yZXNcclxuICAgICAgICAgICAgLCBzdXBlcnZpc29yZXNcclxuICAgICAgICAgICAgLCBwZXJzb25hbF9yb2xcclxuICAgICAgICAgICAgLCBwZXJtaXNvc1xyXG4gICAgICAgICAgICAsIHJvbGVzX3Blcm1pc29zXHJcbiAgICAgICAgICAgICwgcm9sZXNfc3Vib3JkaW5hZG9zXHJcbiAgICAgICAgICAgICwgbm9fcmVhXHJcbiAgICAgICAgICAgICwgbm9fcmVhX3N1cFxyXG4gICAgICAgICAgICAsIHNlbWFuYXNcclxuICAgICAgICAgICAgLCBlc3RhZG9zXHJcbiAgICAgICAgICAgICwgYWNjaW9uZXNcclxuICAgICAgICAgICAgLCBlc3RhZG9zX2FjY2lvbmVzXHJcbiAgICAgICAgICAgICwgdGVtXHJcbiAgICAgICAgICAgICwgdGVtX3JlY2VwY2lvblxyXG4gICAgICAgICAgICAsIHBhcmFtZXRyb3NcclxuICAgICAgICAgICAgLCBvcGVyYWNpb25lc1xyXG4gICAgICAgICAgICAsIGNvbXVuYXNcclxuICAgICAgICAgICAgLCBhcmVhc1xyXG4gICAgICAgICAgICAsIHNpbmNyb25pemFjaW9uZXNcclxuICAgICAgICAgICAgLCB0YXJlYXNcclxuICAgICAgICAgICAgLCB0YXJlYXNfdGVtXHJcbiAgICAgICAgICAgICwgdGFyZWFzX3RlbV9lbmN1XHJcbiAgICAgICAgICAgICwgdGFyZWFzX3RlbV9yZWN1XHJcbiAgICAgICAgICAgICwgdGFyZWFzX3RlbV9zdXBlXHJcbiAgICAgICAgICAgICwgdGFyZWFzX2FyZWFzXHJcbiAgICAgICAgICAgICwgYXJlYXNfYXNpZ25hY2lvbl9nZW5lcmFsXHJcbiAgICAgICAgICAgICwgZ3JpbGxhX2hvamFfcnV0YVxyXG4gICAgICAgICAgICAsIHRfZW5jdV9hcmVhc1xyXG4gICAgICAgICAgICAsIHRfcmVjdV9hcmVhc1xyXG4gICAgICAgICAgICAsIHRfc3VwZV9hcmVhc1xyXG4gICAgICAgICAgICAsIG1pc190YXJlYXNcclxuICAgICAgICAgICAgLCB0ZW1fYXNpZ25hY2lvblxyXG4gICAgICAgICAgICAsIHRhcmVhc190ZW1fcmVjZXBjaW9uXHJcbiAgICAgICAgICAgICwgbWlzX3RhcmVhc19hcmVhc1xyXG4gICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9cclxuICAgICAgICAgICAgLCBjb250cm9sX3Jlc3VtZW5cclxuICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX3pvbmE6IGNvbnRleHQ9PmNvbnRyb2xfY2FtcG8oY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICB7bm9tYnJlOidjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOidjb250cm9sIGNhbXBvIHggem9uYSBzb2xvIGNlbWVudG8nLCBjYW1wb3NDb3J0ZTpbe25hbWU6J3pvbmEnLCB0eXBlTmFtZTondGV4dCd9XSwgZmlsdHJvV2hlcmU6J2RvbWluaW89MycgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgICwgY29udHJvbF9jYW1wb19jb211bmE6IGNvbnRleHQ9PmNvbnRyb2xfY2FtcG8oY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICB7bm9tYnJlOidjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOidjb250cm9sIGNhbXBvIHggY29tdW5hIHNvbG8gY2VtZW50bycsIGNhbXBvc0NvcnRlOlt7bmFtZTonem9uYScsIHR5cGVOYW1lOid0ZXh0J30se25hbWU6J25yb2NvbXVuYScsIHR5cGVOYW1lOidpbnRlZ2VyJ31dLCBmaWx0cm9XaGVyZTonZG9taW5pbz0zJyB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX2FyZWE6IGNvbnRleHQ9PmNvbnRyb2xfY2FtcG8oY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICB7bm9tYnJlOidjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOidjb250cm9sIGNhbXBvIHggYXJlYScsIGNhbXBvc0NvcnRlOlt7bmFtZTonem9uYScsIHR5cGVOYW1lOid0ZXh0J30se25hbWU6J25yb2NvbXVuYScsIHR5cGVOYW1lOidpbnRlZ2VyJ30se25hbWU6J2FyZWEnLCB0eXBlTmFtZTonaW50ZWdlcid9LHtuYW1lOidwYXJ0aWNpcGFjaW9uX2EnLCB0eXBlTmFtZTondGV4dCd9LHtuYW1lOidjbGFzZV9hJywgdHlwZU5hbWU6J3RleHQnfV19XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX3BhcnRpY2lwYWNpb246IGNvbnRleHQ9PmNvbnRyb2xfY2FtcG8oY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICB7bm9tYnJlOidjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOidjb250cm9sIGNhbXBvIHggcGFydGljaXBhY2lvbicsIGNhbXBvc0NvcnRlOlt7bmFtZToncGFydGljaXBhY2lvbicsIHR5cGVOYW1lOidiaWdpbnQnfV19XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX2RvbWluaW86IGNvbnRleHQ9PmNvbnRyb2xfY2FtcG8oY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICB7bm9tYnJlOidjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOidjb250cm9sIGNhbXBvIHggZG9taW5pbycsIGNhbXBvc0NvcnRlOlt7bmFtZTonZG9taW5pbycsIHR5cGVOYW1lOidpbnRlZ2VyJ31dfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgICwgdml2aWVuZGFzXHJcbiAgICAgICAgICAgICwgdmlzaXRhc1xyXG4gICAgICAgICAgICAsIGhvZ2FyZXNcclxuICAgICAgICAgICAgLCBwZXJzb25hc1xyXG4gICAgICAgICAgICAsIHZpc2l0YXNfc3VwXHJcbiAgICAgICAgICAgICwgaG9nYXJlc19zdXBcclxuICAgICAgICAgICAgLCBwZXJzb25hc19zdXBcclxuICAgICAgICB9XHJcbiAgICAgICAgYmUuYXBwZW5kVG9UYWJsZURlZmluaXRpb24oJ2NvbnNpc3RlbmNpYXMnLGZ1bmN0aW9uKHRhYmxlRGVmLCBjb250ZXh0KXtcclxuICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLmZvckVhY2goZnVuY3Rpb24oZmllbGQpe1xyXG4gICAgICAgICAgICAgICAgaWYoZmllbGQubmFtZT09J2Vycm9yX2NvbXBpbGFjaW9uJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZmllbGQudmlzaWJsZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJyoqKioqKioqKioqKiBRVUlUQVIgRVNUTyBlcnJvcl9jb21waWxhY2lvbiB5YSBlcyB2aXNpYmxlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnZpc2libGU9dHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdpbmNvbnNpc3RlbmNpYXMnLGZ1bmN0aW9uKHRhYmxlRGVmLCBjb250ZXh0KXtcclxuICAgICAgICAgICAgdGFibGVEZWYuc3FsPXsuLi50YWJsZURlZi5zcWwsIGlzVGFibGU6dHJ1ZX07XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5zcGxpY2UoMiwwLFxyXG4gICAgICAgICAgICAgICAge25hbWU6J3ZpdmllbmRhJyAgICAsIHR5cGVOYW1lOid0ZXh0JyAgICAgLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICAgICAgICAgICAge25hbWU6J2hvZ2FyJyAgICAgICAsIHR5cGVOYW1lOidiaWdpbnQnICAgLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICAgICAgICAgICAge25hbWU6J3BlcnNvbmEnICAgICAsIHR5cGVOYW1lOidiaWdpbnQnICAgLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICAgICAgICAgICAge25hbWU6J3Zpc2l0YScgICAgICAsIHR5cGVOYW1lOidiaWdpbnQnICAgLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0YWJsZURlZi5lZGl0YWJsZT10YWJsZURlZi5lZGl0YWJsZSB8fCBjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXMuanVzdGlmaWNhcjtcclxuICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLmZvckVhY2goZnVuY3Rpb24oZmllbGQpe1xyXG4gICAgICAgICAgICAgICAgaWYoZmllbGQubmFtZT09J3BrX2ludGVncmFkYScpe1xyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnZpc2libGU9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZihmaWVsZC5uYW1lPT0nanVzdGlmaWNhY2lvbicpe1xyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLmVkaXRhYmxlPWNvbnRleHQuZm9yRHVtcCB8fCBjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXMuanVzdGlmaWNhcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLnB1c2goe25hbWU6J2Zpbl9jYW1wbycgICAgICAsIHR5cGVOYW1lOid0ZXh0JyAgIFxyXG4gICAgICAgICAgICAgICAgLCBlZGl0YWJsZTogZmFsc2UsIGluVGFibGU6ZmFsc2VcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGFibGVEZWYuc3FsIS5mcm9tPWBcclxuICAgICAgICAgICAgICAgIChzZWxlY3QgaS4qLCB0LmZpbl9jYW1wbyBcclxuICAgICAgICAgICAgICAgICAgZnJvbSBpbmNvbnNpc3RlbmNpYXMgaSBqb2luIHRlbSB0IG9uIGkudml2aWVuZGE9dC5lbmMgYW5kIGkub3BlcmF0aXZvPXQub3BlcmF0aXZvIFxyXG4gICAgICAgICAgICAgICAgKSAgXHJcbiAgICAgICAgICAgIGBcclxuICAgICAgICB9KVxyXG4gICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdvcGVyYXRpdm9zJyxmdW5jdGlvbih0YWJsZURlZiwgY29udGV4dCl7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5zcGxpY2UoMiwwLHtcclxuICAgICAgICAgICAgICAgIG5hbWU6J2NvbmZpZ19zb3J0ZW8nLCBcclxuICAgICAgICAgICAgICAgIHR5cGVOYW1lOidqc29uYicsXHJcbiAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5zcGxpY2UoMywwLHtcclxuICAgICAgICAgICAgICAgIG5hbWU6J2Rpc2Zvcm1fY2VycmFkbycsIFxyXG4gICAgICAgICAgICAgICAgdHlwZU5hbWU6J2Jvb2xlYW4nLCBcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsIFxyXG4gICAgICAgICAgICAgICAgZWRpdGFibGU6IGNvbnRleHQuZm9yRHVtcHx8WydhZG1pbicsJ2Rpc19jb25jZXB0dWFsJ10uaW5jbHVkZXMoY29udGV4dC51c2VyLnJvbCl9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbigndXN1YXJpb3MnLGZ1bmN0aW9uKHRhYmxlRGVmLCBjb250ZXh0KXtcclxuICAgICAgICAgICAgbGV0IGNsYXZlTnVldmFGaWVsZCA9IHRhYmxlRGVmLmZpZWxkcy5maW5kKChmaWVsZCk9PmZpZWxkLm5hbWUgPT0gJ2NsYXZlX251ZXZhJykhO1xyXG4gICAgICAgICAgICB2YXIgYWRtaW5PQ29vcmQgPSBbJ2FkbWluJywnY29vcl9jYW1wbyddLmluY2x1ZGVzKGNvbnRleHQudXNlci5yb2wpO1xyXG4gICAgICAgICAgICBjbGF2ZU51ZXZhRmllbGQuYWxsb3cgPSB7c2VsZWN0OmFkbWluT0Nvb3JkLCB1cGRhdGU6dHJ1ZSwgaW5zZXJ0OmZhbHNlfTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC8vIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdjYXNpbGxlcm9zJyxmdW5jdGlvbih0YWJsZURlZiwgY29udGV4dCl7XHJcbiAgICAgICAgLy8gICAgIHRhYmxlRGVmLmNvbnN0cmFpbnRzID0gdGFibGVEZWYuY29uc3RyYWludHMuZmlsdGVyKGM9PmMuY29uc05hbWUhPSdjYXNpbGxlcm9zIHNhbHRvIFJFTCcpXHJcbiAgICAgICAgLy8gfSlcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgQXBwRG1FbmN1ID0gZW1lcmdlQXBwRG1FbmN1KGVtZXJnZUFwcFByb2Nlc2FtaWVudG8oZW1lcmdlQXBwQ29uc2lzdGVuY2lhcyhlbWVyZ2VBcHBWYXJDYWwoZW1lcmdlQXBwRGF0b3NFeHQoZW1lcmdlQXBwT3BlcmF0aXZvcyhBcHBCYWNrZW5kKSkpKSkpO1xyXG5leHBvcnQgdHlwZSBBcHBBcHBEbUVuY3VUeXBlID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBBcHBEbUVuY3U+OyJdfQ==
|