@dataform/sqlx
Advanced tools
Comparing version 1.3.6 to 1.3.7
/// <amd-module name="@dataform/sqlx/lexer" /> | ||
export interface ISyntaxTreeNode { | ||
startTokenType: string; | ||
contentType: "sql" | "js" | "jsPlaceholder" | "sqlStatementSeparator" | "sqlComment"; | ||
contents: Array<string | ISyntaxTreeNode>; | ||
@@ -5,0 +5,0 @@ } |
30
lexer.js
@@ -75,3 +75,3 @@ (function (factory) { | ||
function constructSyntaxTree(code) { | ||
const parentNode = { startTokenType: "", contents: [] }; | ||
const parentNode = { contentType: "sql", contents: [] }; | ||
let currentNode = parentNode; | ||
@@ -87,3 +87,14 @@ const nodeStack = [currentNode]; | ||
else if (token.type.includes("_start")) { | ||
const newCurrentNode = { startTokenType: token.type, contents: [] }; | ||
const contentType = token.type.includes("_startJs") || token.type.includes("_startConfig") | ||
? token.type.includes("_startJsPlaceholder") | ||
? "jsPlaceholder" | ||
: "js" | ||
: "sql"; | ||
if (contentType === "sql" && currentNode.contentType !== "sql") { | ||
throw new Error("'sql' syntax tree nodes may only be children of other 'sql' nodes."); | ||
} | ||
const newCurrentNode = { | ||
contentType, | ||
contents: [] | ||
}; | ||
appendToNode(newCurrentNode, token.value); | ||
@@ -94,2 +105,15 @@ nodeStack.push(newCurrentNode); | ||
} | ||
else if (token.type.endsWith("_statementSeparator")) { | ||
currentNode.contents.push({ | ||
contentType: "sqlStatementSeparator", | ||
contents: [token.value] | ||
}); | ||
} | ||
else if ((token.type.startsWith("sql") || token.type.startsWith("innerSqlBlock")) && | ||
token.type.endsWith("Comment")) { | ||
currentNode.contents.push({ | ||
contentType: "sqlComment", | ||
contents: [token.value] | ||
}); | ||
} | ||
else { | ||
@@ -328,2 +352,2 @@ appendToNode(currentNode, token.value); | ||
}); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGV4ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcWx4L2xleGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBQUEsMkJBQTJCO0lBRTNCLE1BQU0saUJBQWlCLEdBQUc7UUFDeEIsR0FBRyxFQUFFLEtBQUs7UUFDVixRQUFRLEVBQUUsU0FBUztRQUNuQixrQkFBa0IsRUFBRSxrQkFBa0I7UUFDdEMsZUFBZSxFQUFFLGVBQWU7S0FDakMsQ0FBQztJQUVGLE1BQU0scUJBQXFCLEdBQUc7UUFDNUIsWUFBWSxFQUFFLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxjQUFjO1FBQ3BELFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsVUFBVTtRQUM1QyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsbUJBQW1CO1FBQzlELG9CQUFvQixFQUFFLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxxQkFBcUI7UUFDbkUscUJBQXFCLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxHQUFHLHNCQUFzQjtRQUNyRSxXQUFXLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxHQUFHLGFBQWE7UUFDbEQsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxHQUFHLHFCQUFxQjtRQUNsRSxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsb0JBQW9CO1FBQ2pFLGtCQUFrQixFQUFFLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxtQkFBbUI7UUFDL0QsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxHQUFHLG9CQUFvQjtRQUNqRSxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsb0JBQW9CO1FBQ2pFLG9CQUFvQixFQUFFLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxxQkFBcUI7UUFDbkUsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxHQUFHLGtCQUFrQjtRQUM1RCxRQUFRLEVBQUUsaUJBQWlCLENB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Q3RELEdBQUcseUJBQXlCLENBQUM7UUFDOUIsa0JBQWtCLENBQ2hCLGlDQUFpQyxDQUFDLG1CQUFtQixDQUN0RCxHQUFHLHlCQUF5QixDQUFDO1FBQzlCLGtCQUFrQixDQUFDLGlDQUFpQyxDQUFDLG9CQUFvQixDQUFDLEdBQUc7WUFDM0UsS0FBSyxFQUFFLElBQUk7WUFDWCxJQUFJLEVBQUUsaUJBQWlCLENBQUMsUUFBUTtTQUNqQyxDQUFDO1FBQ0Ysa0JBQWtCLENBQUMsaUNBQWlDLENBQUMsV0FBVyxDQUFDLEdBQUc7WUFDbEUsS0FBSyxFQUFFLEdBQUc7WUFDVixHQUFHLEVBQUUsQ0FBQztTQUNQLENBQUM7UUFDRixrQkFBa0IsQ0FBQyxpQ0FBaUMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHO1lBQ3ZFLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQztRQUNGLGtCQUFrQixDQUFDLGlDQUFpQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNyRSxrQkFBa0IsQ0FBQyxpQ0FBaUMsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHO1lBQzlFLEtBQUssRUFBRSxVQUFVO1lBQ2pCLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBK0IsRUFBRSxDQUFDO1FBQ25ELFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDOUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxHQUFHLFlBQVksQ0FBQztRQUN2RCxXQUFXLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxxQkFBcUIsQ0FBQztRQUMxRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEdBQUcsa0JBQWtCLENBQUM7UUFFcEUsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIG1vbyBmcm9tIFwibW9vXCI7XG5cbmNvbnN0IExFWEVSX1NUQVRFX05BTUVTID0ge1xuICBTUUw6IFwic3FsXCIsXG4gIEpTX0JMT0NLOiBcImpzQmxvY2tcIixcbiAgSlNfVEVNUExBVEVfU1RSSU5HOiBcImpzVGVtcGxhdGVTdHJpbmdcIixcbiAgSU5ORVJfU1FMX0JMT0NLOiBcImlubmVyU3FsQmxvY2tcIlxufTtcblxuY29uc3QgU1FMX0xFWEVSX1RPS0VOX05BTUVTID0ge1xuICBTVEFSVF9DT05GSUc6IExFWEVSX1NUQVRFX05BTUVTLlNRTCArIFwiX3N0YXJ0Q29uZmlnXCIsXG4gIFNUQVJUX0pTOiBMRVhFUl9TVEFURV9OQU1FUy5TUUwgKyBcIl9zdGFydEpzXCIsXG4gIFNUQVJUX0lOQ1JFTUVOVEFMOiBMRVhFUl9TVEFURV9OQU1FUy5TUUwgKyBcIl9zdGFydEluY3JlbWVudGFsXCIsXG4gIFNUQVJUX1BSRV9PUEVSQVRJT05TOiBMRVhFUl9TVEFURV9OQU1FUy5TUUwgKyBcIl9zdGFydFByZU9wZXJhdGlvbnNcIixcbiAgU1RBUlRfUE9TVF9PUEVSQVRJT05TOiBMRVhFUl9TVEFURV9OQU1FUy5TUUwgKyBcIl9zdGFydFBvc3RPcGVyYXRpb25zXCIsXG4gIFNUQVJUX0lOUFVUOiBMRVhFUl9TVEFURV9OQU1FUy5TUUwgKyBcIl9zdGFydElucHV0XCIsXG4gIFNUQVRFTUVOVF9TRVBFUkFUT1I6IExFWEVSX1NUQVRFX05BTUVTLlNRTCArIFwiX3N0YXRlbWVudFNlcGFyYXRvclwiLFxuICBTSU5HTEVfTElORV9DT01NRU5UOiBMRVhFUl9TVEFURV9OQU1FUy5TUUwgKyBcIl9zaW5nbGVMaW5lQ29tbWVudFwiLFxuICBNVUxUSV9MSU5FX0NPTU1FTlQ6IExFWEVSX1NUQVRFX05BTUVTLlNRTCArIFwiX211bHRpTGluZUNvbW1lbnRcIixcbiAgU0lOR0xFX1FVT1RFX1NUUklORzogTEVYRVJfU1RBVEVfTkFNRVMuU1FMICsgXCJfc2luZ2xlUXVvdGVTdHJpbmdcIixcbiAgRE9VQkxFX1FVT1RFX1NUUklORzogTEVYRVJfU1RBVEVfTkFNRVMuU1FMICsgXCJfZG91YmxlUXVvdGVTdHJpbmdcIixcbiAgU1RBUlRfSlNfUExBQ0VIT0xERVI6IExFWEVSX1NUQVRFX05BTUVTLlNRTCArIFwiX3N0YXJ0SnNQbGFjZWhvbGRlclwiLFxuICBFU0NBUEVEX0JBQ0tUSUNLOiBMRVhFUl9TVEFURV9OQU1FUy5TUUwgKyBcIl9lc2NhcGVkQmFja3RpY2tcIixcbiAgQkFDS1RJQ0s6IExFWEVSX1NUQVRFX05BTUVTLlNRTCArIFwiX2JhY2t0aWNrXCIsXG4gIENBUFRVUkVfRVZFUllUSElOR19FTFNFOiBMRVhFUl9TVEFURV9OQU1FUy5TUUwgKyBcIl9jYXB0dXJlRXZlcnl0aGluZ0Vsc2VcIlxufTtcblxuY29uc3QgSlNfQkxPQ0tfTEVYRVJfVE9LRU5fTkFNRVMgPSB7XG4gIFNJTkdMRV9MSU5FX0NPTU1FTlQ6IExFWEVSX1NUQVRFX05BTUVTLkpTX0JMT0NLICsgXCJfc2luZ2xlTGluZUNvbW1lbnRcIixcbiAgTVVMVElfTElORV9DT01NRU5UOiBMRVhFUl9TVEFURV9OQU1FUy5KU19CTE9DSyArIFwiX211bHRpTGluZUNvbW1lbnRcIixcbiAgU0lOR0xFX1FVT1RFX1NUUklORzogTEVYRVJfU1RBVEVfTkFNRVMuSlNfQkxPQ0sgKyBcIl9zaW5nbGVRdW90ZVN0cmluZ1wiLFxuICBET1VCTEVfUVVPVEVfU1RSSU5HOiBMRVhFUl9TVEFURV9OQU1FUy5KU19CTE9DSyArIFwiX2RvdWJsZVF1b3RlU3RyaW5nXCIsXG4gIFNUQVJUX0pTX1RFTVBMQVRFX1NUUklORzogTEVYRVJfU1RBVEVfTkFNRVMuSlNfQkxPQ0sgKyBcIl9zdGFydEpzVGVtcGxhdGVTdHJpbmdcIixcbiAgU1RBUlRfSlNfQkxPQ0s6IExFWEVSX1NUQVRFX05BTUVTLkpTX0JMT0NLICsgXCJfc3RhcnRKc0Jsb2NrXCIsXG4gIENMT1NFX0JMT0NLOiBMRVhFUl9TVEFURV9OQU1FUy5KU19CTE9DSyArIFwiX2Nsb3NlQmxvY2tcIixcbiAgQ0FQVFVSRV9FVkVSWVRISU5HX0VMU0U6IExFWEVSX1NUQVRFX05BTUVTLkpTX0JMT0NLICsgXCJfY2FwdHVyZUV2ZXJ5dGhpbmdFbHNlXCJcbn07XG5cbmNvbnN0IEpTX1RFTVBMQVRFX1NUUklOR19MRVhFUl9UT0tFTl9OQU1FUyA9IHtcbiAgRVNDQVBFRF9CQUNLU0xBU0g6IExFWEVSX1NUQVRFX05BTUVTLkpTX1RFTVBMQVRFX1NUUklORyArIFwiX2VzY2FwZWRCYWNrc2xhc2hcIixcbiAgRVNDQVBFRF9CQUNLVElDSzogTEVYRVJfU1RBVEVfTkFNRVMuSlNfVEVNUExBVEVfU1RSSU5HICsgXCJfZXNjYXBlZEJhY2t0aWNrXCIsXG4gIEVTQ0FQRURfRE9MTEFSX0JSQUNFOiBMRVhFUl9TVEFURV9OQU1FUy5KU19URU1QTEFURV9TVFJJTkcgKyBcIl9lc2NhcGVkRG9sbGFyQnJhY2VcIixcbiAgU1RBUlRfSlNfQkxPQ0s6IExFWEVSX1NUQVRFX05BTUVTLkpTX1RFTVBMQVRFX1NUUklORyArIFwiX3N0YXJ0SnNCbG9ja1wiLFxuICBDTE9TRV9TVFJJTkc6IExFWEVSX1NUQVRFX05BTUVTLkpTX1RFTVBMQVRFX1NUUklORyArIFwiX2Nsb3NlU3RyaW5nXCIsXG4gIENBUFRVUkVfRVZFUllUSElOR19FTFNFOiBMRVhFUl9TVEFURV9OQU1FUy5KU19URU1QTEFURV9TVFJJTkcgKyBcIl9jYXB0dXJlRXZlcnl0aGluZ0Vsc2VcIlxufTtcblxuY29uc3QgSU5ORVJfU1FMX0JMT0NLX0xFWEVSX1RPS0VOX05BTUVTID0ge1xuICBTVEFURU1FTlRfU0VQRVJBVE9SOiBMRVhFUl9TVEFURV9OQU1FUy5JTk5FUl9TUUxfQkxPQ0sgKyBcIl9zdGF0ZW1lbnRTZXBhcmF0b3JcIixcbiAgU0lOR0xFX0xJTkVfQ09NTUVOVDogTEVYRVJfU1RBVEVfTkFNRVMuSU5ORVJfU1FMX0JMT0NLICsgXCJfc2luZ2xlTGluZUNvbW1lbnRcIixcbiAgTVVMVElfTElORV9DT01NRU5UOiBMRVhFUl9TVEFURV9OQU1FUy5JTk5FUl9TUUxfQkxPQ0sgKyBcIl9tdWx0aUxpbmVDb21tZW50XCIsXG4gIFNJTkdMRV9RVU9URV9TVFJJTkc6IExFWEVSX1NUQVRFX05BTUVTLklOTkVSX1NRTF9CTE9DSyArIFwiX3NpbmdsZVF1b3RlU3RyaW5nXCIsXG4gIERPVUJMRV9RVU9URV9TVFJJTkc6IExFWEVSX1NUQVRFX05BTUVTLklOTkVSX1NRTF9CTE9DSyArIFwiX2RvdWJsZVF1b3RlU3RyaW5nXCIsXG4gIFNUQVJUX0pTX1BMQUNFSE9MREVSOiBMRVhFUl9TVEFURV9OQU1FUy5JTk5FUl9TUUxfQkxPQ0sgKyBcIl9zdGFydEpzUGxhY2Vob2xkZXJcIixcbiAgQ0xPU0VfQkxPQ0s6IExFWEVSX1NUQVRFX05BTUVTLklOTkVSX1NRTF9CTE9DSyArIFwiX2Nsb3NlQmxvY2tcIixcbiAgRVNDQVBFRF9CQUNLVElDSzogTEVYRVJfU1RBVEVfTkFNRVMuSU5ORVJfU1FMX0JMT0NLICsgXCJfZXNjYXBlZEJhY2t0aWNrXCIsXG4gIEJBQ0tUSUNLOiBMRVhFUl9TVEFURV9OQU1FUy5JTk5FUl9TUUxfQkxPQ0sgKyBcIl9iYWNrdGlja1wiLFxuICBDQVBUVVJFX0VWRVJZVEhJTkdfRUxTRTogTEVYRVJfU1RBVEVfTkFNRVMuSU5ORVJfU1FMX0JMT0NLICsgXCJfY2FwdHVyZUV2ZXJ5dGhpbmdFbHNlXCJcbn07XG5cbmNvbnN0IGxleGVyID0gbW9vLnN0YXRlcyhidWlsZFNxbHhMZXhlcigpKTtcblxuZXhwb3J0IGludGVyZmFjZSBJU3ludGF4VHJlZU5vZGUge1xuICBzdGFydFRva2VuVHlwZTogc3RyaW5nO1xuICBjb250ZW50czogQXJyYXk8c3RyaW5nIHwgSVN5bnRheFRyZWVOb2RlPjtcbn1cblxuZnVuY3Rpb24gYXBwZW5kVG9Ob2RlKG5vZGU6IElTeW50YXhUcmVlTm9kZSwgdG9rZW5WYWx1ZTogc3RyaW5nKSB7XG4gIGlmIChub2RlLmNvbnRlbnRzLmxlbmd0aCA+IDAgJiYgdHlwZW9mIG5vZGUuY29udGVudHNbbm9kZS5jb250ZW50cy5sZW5ndGggLSAxXSA9PT0gXCJzdHJpbmdcIikge1xuICAgIG5vZGUuY29udGVudHNbbm9kZS5jb250ZW50cy5sZW5ndGggLSAxXSA9IG5vZGUuY29udGVudHNbbm9kZS5jb250ZW50cy5sZW5ndGggLSAxXSArIHRva2VuVmFsdWU7XG4gICAgcmV0dXJuO1xuICB9XG4gIG5vZGUuY29udGVudHMucHVzaCh0b2tlblZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdFN5bnRheFRyZWUoY29kZTogc3RyaW5nKTogSVN5bnRheFRyZWVOb2RlIHtcbiAgY29uc3QgcGFyZW50Tm9kZTogSVN5bnRheFRyZWVOb2RlID0geyBzdGFydFRva2VuVHlwZTogXCJcIiwgY29udGVudHM6IFtdIH07XG4gIGxldCBjdXJyZW50Tm9kZSA9IHBhcmVudE5vZGU7XG4gIGNvbnN0IG5vZGVTdGFjayA9IFtjdXJyZW50Tm9kZV07XG4gIGxleGVyLnJlc2V0KGNvZGUpO1xuICBmb3IgKGNvbnN0IHRva2VuIG9mIGxleGVyKSB7XG4gICAgaWYgKHRva2VuLnR5cGUuaW5jbHVkZXMoXCJfY2xvc2VcIikpIHtcbiAgICAgIGFwcGVuZFRvTm9kZShjdXJyZW50Tm9kZSwgdG9rZW4udmFsdWUpO1xuICAgICAgbm9kZVN0YWNrLnBvcCgpO1xuICAgICAgY3VycmVudE5vZGUgPSBub2RlU3RhY2tbbm9kZVN0YWNrLmxlbmd0aCAtIDFdO1xuICAgIH0gZWxzZSBpZiAodG9rZW4udHlwZS5pbmNsdWRlcyhcIl9zdGFydFwiKSkge1xuICAgICAgY29uc3QgbmV3Q3VycmVudE5vZGU6IElTeW50YXhUcmVlTm9kZSA9IHsgc3RhcnRUb2tlblR5cGU6IHRva2VuLnR5cGUsIGNvbnRlbnRzOiBbXSB9O1xuICAgICAgYXBwZW5kVG9Ob2RlKG5ld0N1cnJlbnROb2RlLCB0b2tlbi52YWx1ZSk7XG4gICAgICBub2RlU3RhY2sucHVzaChuZXdDdXJyZW50Tm9kZSk7XG4gICAgICBjdXJyZW50Tm9kZS5jb250ZW50cy5wdXNoKG5ld0N1cnJlbnROb2RlKTtcbiAgICAgIGN1cnJlbnROb2RlID0gbmV3Q3VycmVudE5vZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwcGVuZFRvTm9kZShjdXJyZW50Tm9kZSwgdG9rZW4udmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcGFyZW50Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3FseFBhcnNlUmVzdWx0cyB7XG4gIGNvbmZpZzogc3RyaW5nO1xuICBqczogc3RyaW5nO1xuICBzcWw6IHN0cmluZ1tdO1xuICBpbmNyZW1lbnRhbDogc3RyaW5nO1xuICBwcmVPcGVyYXRpb25zOiBzdHJpbmdbXTtcbiAgcG9zdE9wZXJhdGlvbnM6IHN0cmluZ1tdO1xuICBpbnB1dDogeyBbbGFiZWw6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vLyBUT0RPOiBGaWd1cmUgb3V0IGlmIGl0J3MgcG9zc2libGUgdG8gYnJpbmcgcGFyc2VTcWx4KCkgYW5kIGNvbnN0cnVjdFN5bnRheFRyZWUoKSB0b2dldGhlci5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNxbHgoY29kZTogc3RyaW5nKTogSVNxbHhQYXJzZVJlc3VsdHMge1xuICBjb25zdCB2YWx1ZU1hcHBpbmdzID0gZ2V0VmFsdWVNYXBwaW5ncygpO1xuICBjb25zdCByZXN1bHRzOiBJU3FseFBhcnNlUmVzdWx0cyA9IHtcbiAgICBjb25maWc6IFwiXCIsXG4gICAganM6IFwiXCIsXG4gICAgc3FsOiBbXCJcIl0sXG4gICAgaW5jcmVtZW50YWw6IFwiXCIsXG4gICAgcHJlT3BlcmF0aW9uczogW1wiXCJdLFxuICAgIHBvc3RPcGVyYXRpb25zOiBbXCJcIl0sXG4gICAgaW5wdXQ6IHt9XG4gIH07XG4gIGxldCBjdXJyZW50SW5wdXRMYWJlbDtcbiAgY29uc3QgcGFyc2VTdGF0ZSA9IG5ldyBTcWx4UGFyc2VTdGF0ZSgpO1xuICBsZXhlci5yZXNldChjb2RlKTtcbiAgZm9yIChjb25zdCB0b2tlbiBvZiBsZXhlcikge1xuICAgIGlmICh2YWx1ZU1hcHBpbmdzW3Rva2VuLnR5cGVdKSB7XG4gICAgICB0b2tlbi52YWx1ZSA9IHZhbHVlTWFwcGluZ3NbdG9rZW4udHlwZV0odG9rZW4udmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCBwcmV2aW91c1N0YXRlID0gcGFyc2VTdGF0ZS5jdXJyZW50U3RhdGU7XG4gICAgY29uc3QgbmV3U3RhdGUgPSBwYXJzZVN0YXRlLmNvbXB1dGVTdGF0ZSh0b2tlbik7XG5cbiAgICBpZiAodG9rZW4udHlwZSA9PT0gU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNUQVJUX0lOUFVUKSB7XG4gICAgICBjdXJyZW50SW5wdXRMYWJlbCA9IHRva2VuLnZhbHVlO1xuICAgICAgdG9rZW4udmFsdWUgPSBcIlwiO1xuICAgIH1cblxuICAgIGNvbnN0IGlzU3RhdGVtZW50U2VwYXJhdG9yID1cbiAgICAgIHRva2VuLnR5cGUgPT09IFNRTF9MRVhFUl9UT0tFTl9OQU1FUy5TVEFURU1FTlRfU0VQRVJBVE9SIHx8XG4gICAgICB0b2tlbi50eXBlID09PSBJTk5FUl9TUUxfQkxPQ0tfTEVYRVJfVE9LRU5fTkFNRVMuU1RBVEVNRU5UX1NFUEVSQVRPUjtcblxuICAgIHN3aXRjaCAobmV3U3RhdGUpIHtcbiAgICAgIGNhc2UgXCJjb25maWdcIjoge1xuICAgICAgICByZXN1bHRzLmNvbmZpZyArPSB0b2tlbi52YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFwianNcIjoge1xuICAgICAgICByZXN1bHRzLmpzICs9IHRva2VuLnZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJzcWxcIjoge1xuICAgICAgICBpZiAoaXNTdGF0ZW1lbnRTZXBhcmF0b3IpIHtcbiAgICAgICAgICByZXN1bHRzLnNxbC5wdXNoKFwiXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdHMuc3FsW3Jlc3VsdHMuc3FsLmxlbmd0aCAtIDFdICs9IHRva2VuLnZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJpbmNyZW1lbnRhbFwiOiB7XG4gICAgICAgIGlmIChpc1N0YXRlbWVudFNlcGFyYXRvcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIFwiSW5jcmVtZW50YWwgY29kZSBibG9ja3MgbWF5IG5vdCBjb250YWluIFNRTCBzdGF0ZW1lbnQgc2VwYXJhdG9ycyAoJy0tLScpLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRzLmluY3JlbWVudGFsICs9IHRva2VuLnZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJwcmVPcGVyYXRpb25zXCI6IHtcbiAgICAgICAgaWYgKGlzU3RhdGVtZW50U2VwYXJhdG9yKSB7XG4gICAgICAgICAgcmVzdWx0cy5wcmVPcGVyYXRpb25zLnB1c2goXCJcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0cy5wcmVPcGVyYXRpb25zW3Jlc3VsdHMucHJlT3BlcmF0aW9ucy5sZW5ndGggLSAxXSArPSB0b2tlbi52YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFwicG9zdE9wZXJhdGlvbnNcIjoge1xuICAgICAgICBpZiAoaXNTdGF0ZW1lbnRTZXBhcmF0b3IpIHtcbiAgICAgICAgICByZXN1bHRzLnBvc3RPcGVyYXRpb25zLnB1c2goXCJcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0cy5wb3N0T3BlcmF0aW9uc1tyZXN1bHRzLnBvc3RPcGVyYXRpb25zLmxlbmd0aCAtIDFdICs9IHRva2VuLnZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJpbnB1dFwiOiB7XG4gICAgICAgIGlmIChpc1N0YXRlbWVudFNlcGFyYXRvcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIklucHV0IGNvZGUgYmxvY2tzIG1heSBub3QgY29udGFpbiBTUUwgc3RhdGVtZW50IHNlcGFyYXRvcnMgKCctLS0nKS5cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZXN1bHRzLmlucHV0W2N1cnJlbnRJbnB1dExhYmVsXSkge1xuICAgICAgICAgIHJlc3VsdHMuaW5wdXRbY3VycmVudElucHV0TGFiZWxdID0gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRzLmlucHV0W2N1cnJlbnRJbnB1dExhYmVsXSArPSB0b2tlbi52YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBwYXJzZSBzdGF0ZTogJHtuZXdTdGF0ZX1gKTtcbiAgICB9XG5cbiAgICBpZiAocHJldmlvdXNTdGF0ZSA9PT0gXCJqc1wiICYmIG5ld1N0YXRlICE9PSBcImpzXCIpIHtcbiAgICAgIC8vIElmIHdlJ3JlIGNsb3Npbmcgb2ZmIGEgSlMgYmxvY2ssIGN1dCBvZmYgdGhlIGxhc3QgY2xvc2luZyBicmFjZS5cbiAgICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIHdlIGludGVudGlvbmFsbHkgY3V0IG9mZiB0aGUgc3RhcnRpbmcgYnJhY2UgZHVyaW5nIGxleGluZy5cbiAgICAgIC8vIFdlIGNhbid0IGtlZXAgdGhlbSBiZWNhdXNlIHRoZSB1c2VyJ3MgSlMgbXVzdCBub3QgYmUgcnVuIGluc2lkZSBhIHNjb3BlZCBibG9jay5cbiAgICAgIHJlc3VsdHMuanMgPSByZXN1bHRzLmpzLnN1YnN0cmluZygwLCByZXN1bHRzLmpzLmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0cztcbn1cblxuY29uc3QgdG9rZW5UeXBlU3RhdGVNYXBwaW5nID0gbmV3IE1hcDxzdHJpbmcsIGtleW9mIElTcWx4UGFyc2VSZXN1bHRzPigpO1xudG9rZW5UeXBlU3RhdGVNYXBwaW5nLnNldChTUUxfTEVYRVJfVE9LRU5fTkFNRVMuU1RBUlRfQ09ORklHLCBcImNvbmZpZ1wiKTtcbnRva2VuVHlwZVN0YXRlTWFwcGluZy5zZXQoU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNUQVJUX0pTLCBcImpzXCIpO1xudG9rZW5UeXBlU3RhdGVNYXBwaW5nLnNldChTUUxfTEVYRVJfVE9LRU5fTkFNRVMuU1RBUlRfSU5DUkVNRU5UQUwsIFwiaW5jcmVtZW50YWxcIik7XG50b2tlblR5cGVTdGF0ZU1hcHBpbmcuc2V0KFNRTF9MRVhFUl9UT0tFTl9OQU1FUy5TVEFSVF9QUkVfT1BFUkFUSU9OUywgXCJwcmVPcGVyYXRpb25zXCIpO1xudG9rZW5UeXBlU3RhdGVNYXBwaW5nLnNldChTUUxfTEVYRVJfVE9LRU5fTkFNRVMuU1RBUlRfUE9TVF9PUEVSQVRJT05TLCBcInBvc3RPcGVyYXRpb25zXCIpO1xudG9rZW5UeXBlU3RhdGVNYXBwaW5nLnNldChTUUxfTEVYRVJfVE9LRU5fTkFNRVMuU1RBUlRfSU5QVVQsIFwiaW5wdXRcIik7XG5cbmNsYXNzIFNxbHhQYXJzZVN0YXRlIHtcbiAgcHVibGljIGN1cnJlbnRTdGF0ZToga2V5b2YgSVNxbHhQYXJzZVJlc3VsdHMgPSBcInNxbFwiO1xuXG4gIHB1YmxpYyBjb21wdXRlU3RhdGUodG9rZW46IG1vby5Ub2tlbik6IGtleW9mIElTcWx4UGFyc2VSZXN1bHRzIHtcbiAgICBpZiAoIXRva2VuLnR5cGUuc3RhcnRzV2l0aChMRVhFUl9TVEFURV9OQU1FUy5TUUwpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50U3RhdGU7XG4gICAgfVxuICAgIHRoaXMuY3VycmVudFN0YXRlID0gXCJzcWxcIjtcbiAgICBpZiAodG9rZW5UeXBlU3RhdGVNYXBwaW5nLmhhcyh0b2tlbi50eXBlKSkge1xuICAgICAgdGhpcy5jdXJyZW50U3RhdGUgPSB0b2tlblR5cGVTdGF0ZU1hcHBpbmcuZ2V0KHRva2VuLnR5cGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jdXJyZW50U3RhdGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWVNYXBwaW5ncygpIHtcbiAgY29uc3QgdmFsdWVNYXBwaW5nczoge1xuICAgIFt0b2tlblR5cGU6IHN0cmluZ106ICh0b2tlblZhbHVlOiBzdHJpbmcpID0+IHN0cmluZztcbiAgfSA9IHt9O1xuXG4gIHZhbHVlTWFwcGluZ3NbU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNUQVJUX0NPTkZJR10gPSAoKSA9PiBcIntcIjtcbiAgdmFsdWVNYXBwaW5nc1tTUUxfTEVYRVJfVE9LRU5fTkFNRVMuU1RBUlRfSlNdID0gKCkgPT4gXCJcIjtcbiAgdmFsdWVNYXBwaW5nc1tTUUxfTEVYRVJfVE9LRU5fTkFNRVMuU1RBUlRfSU5DUkVNRU5UQUxdID0gKCkgPT4gXCJcIjtcbiAgdmFsdWVNYXBwaW5nc1tTUUxfTEVYRVJfVE9LRU5fTkFNRVMuU1RBUlRfUFJFX09QRVJBVElPTlNdID0gKCkgPT4gXCJcIjtcbiAgdmFsdWVNYXBwaW5nc1tTUUxfTEVYRVJfVE9LRU5fTkFNRVMuU1RBUlRfUE9TVF9PUEVSQVRJT05TXSA9ICgpID0+IFwiXCI7XG4gIHZhbHVlTWFwcGluZ3NbU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNUQVJUX0lOUFVUXSA9ICh0b2tlblZhbHVlOiBzdHJpbmcpID0+XG4gICAgdG9rZW5WYWx1ZS5zcGxpdCgnXCInKVsxXTtcbiAgdmFsdWVNYXBwaW5nc1tTUUxfTEVYRVJfVE9LRU5fTkFNRVMuU1RBVEVNRU5UX1NFUEVSQVRPUl0gPSAoKSA9PiBcIlwiO1xuICB2YWx1ZU1hcHBpbmdzW1NRTF9MRVhFUl9UT0tFTl9OQU1FUy5TSU5HTEVfTElORV9DT01NRU5UXSA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgIHZhbHVlLnJlcGxhY2UoL2AvZywgXCJcXFxcYFwiKS5yZXBsYWNlKC9cXCR7L2csIFwiXFxcXCR7XCIpO1xuICB2YWx1ZU1hcHBpbmdzW1NRTF9MRVhFUl9UT0tFTl9OQU1FUy5NVUxUSV9MSU5FX0NPTU1FTlRdID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgdmFsdWUucmVwbGFjZSgvYC9nLCBcIlxcXFxgXCIpLnJlcGxhY2UoL1xcJHsvZywgXCJcXFxcJHtcIik7XG4gIHZhbHVlTWFwcGluZ3NbU1FMX0xFWEVSX1RPS0VOX05BTUVTLkJBQ0tUSUNLXSA9ICgpID0+IFwiXFxcXGBcIjtcblxuICB2YWx1ZU1hcHBpbmdzW0lOTkVSX1NRTF9CTE9DS19MRVhFUl9UT0tFTl9OQU1FUy5TVEFURU1FTlRfU0VQRVJBVE9SXSA9ICgpID0+IFwiXCI7XG4gIHZhbHVlTWFwcGluZ3NbSU5ORVJfU1FMX0JMT0NLX0xFWEVSX1RPS0VOX05BTUVTLkNMT1NFX0JMT0NLXSA9ICgpID0+IFwiXCI7XG4gIHZhbHVlTWFwcGluZ3NbSU5ORVJfU1FMX0JMT0NLX0xFWEVSX1RPS0VOX05BTUVTLkJBQ0tUSUNLXSA9ICgpID0+IFwiXFxcXGBcIjtcblxuICByZXR1cm4gdmFsdWVNYXBwaW5ncztcbn1cblxuZnVuY3Rpb24gYnVpbGRTcWx4TGV4ZXIoKTogeyBbeDogc3RyaW5nXTogbW9vLlJ1bGVzIH0ge1xuICBjb25zdCBzcWxMZXhlcjogbW9vLlJ1bGVzID0ge307XG4gIHNxbExleGVyW1NRTF9MRVhFUl9UT0tFTl9OQU1FUy5TVEFSVF9DT05GSUddID0ge1xuICAgIG1hdGNoOiBcImNvbmZpZyB7XCIsXG4gICAgcHVzaDogTEVYRVJfU1RBVEVfTkFNRVMuSlNfQkxPQ0tcbiAgfTtcbiAgc3FsTGV4ZXJbU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNUQVJUX0pTXSA9IHtcbiAgICBtYXRjaDogXCJqcyB7XCIsXG4gICAgcHVzaDogTEVYRVJfU1RBVEVfTkFNRVMuSlNfQkxPQ0tcbiAgfTtcbiAgc3FsTGV4ZXJbU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNUQVJUX0lOQ1JFTUVOVEFMXSA9IHtcbiAgICBtYXRjaDogXCJpbmNyZW1lbnRhbF93aGVyZSB7XCIsXG4gICAgcHVzaDogTEVYRVJfU1RBVEVfTkFNRVMuSU5ORVJfU1FMX0JMT0NLXG4gIH07XG4gIHNxbExleGVyW1NRTF9MRVhFUl9UT0tFTl9OQU1FUy5TVEFSVF9QUkVfT1BFUkFUSU9OU10gPSB7XG4gICAgbWF0Y2g6IFwicHJlX29wZXJhdGlvbnMge1wiLFxuICAgIHB1c2g6IExFWEVSX1NUQVRFX05BTUVTLklOTkVSX1NRTF9CTE9DS1xuICB9O1xuICBzcWxMZXhlcltTUUxfTEVYRVJfVE9LRU5fTkFNRVMuU1RBUlRfUE9TVF9PUEVSQVRJT05TXSA9IHtcbiAgICBtYXRjaDogXCJwb3N0X29wZXJhdGlvbnMge1wiLFxuICAgIHB1c2g6IExFWEVSX1NUQVRFX05BTUVTLklOTkVSX1NRTF9CTE9DS1xuICB9O1xuICBzcWxMZXhlcltTUUxfTEVYRVJfVE9LRU5fTkFNRVMuU1RBUlRfSU5QVVRdID0ge1xuICAgIG1hdGNoOiAvaW5wdXQgXCJbYS16QS1aMC05Xy1dK1wiIHsvLFxuICAgIHB1c2g6IExFWEVSX1NUQVRFX05BTUVTLklOTkVSX1NRTF9CTE9DS1xuICB9O1xuICBzcWxMZXhlcltTUUxfTEVYRVJfVE9LRU5fTkFNRVMuU1RBVEVNRU5UX1NFUEVSQVRPUl0gPSAvW15cXFNcXHJcXG5dKi0tLVteXFxTXFxyXFxuXSokLztcbiAgc3FsTGV4ZXJbU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNJTkdMRV9MSU5FX0NPTU1FTlRdID0gLy0tLio/JC87XG4gIHNxbExleGVyW1NRTF9MRVhFUl9UT0tFTl9OQU1FUy5NVUxUSV9MSU5FX0NPTU1FTlRdID0gL1xcL1xcKltcXHNcXFNdKj9cXCpcXC8vO1xuICBzcWxMZXhlcltTUUxfTEVYRVJfVE9LRU5fTkFNRVMuU0lOR0xFX1FVT1RFX1NUUklOR10gPSAvJyg/OlxcXFxbJ1xcXFxdfFteXFxuJ1xcXFxdKSonLztcbiAgc3FsTGV4ZXJbU1FMX0xFWEVSX1RPS0VOX05BTUVTLkRPVUJMRV9RVU9URV9TVFJJTkddID0gL1wiKD86XFxcXFtcIlxcXFxdfFteXFxuXCJcXFxcXSkqXCIvO1xuICBzcWxMZXhlcltTUUxfTEVYRVJfVE9LRU5fTkFNRVMuU1RBUlRfSlNfUExBQ0VIT0xERVJdID0ge1xuICAgIG1hdGNoOiBcIiR7XCIsXG4gICAgcHVzaDogTEVYRVJfU1RBVEVfTkFNRVMuSlNfQkxPQ0tcbiAgfTtcbiAgc3FsTGV4ZXJbU1FMX0xFWEVSX1RPS0VOX05BTUVTLkVTQ0FQRURfQkFDS1RJQ0tdID0ge1xuICAgIG1hdGNoOiBcIlxcXFxgXCJcbiAgfTtcbiAgc3FsTGV4ZXJbU1FMX0xFWEVSX1RPS0VOX05BTUVTLkJBQ0tUSUNLXSA9IFwiYFwiO1xuICBzcWxMZXhlcltTUUxfTEVYRVJfVE9LRU5fTkFNRVMuQ0FQVFVSRV9FVkVSWVRISU5HX0VMU0VdID0ge1xuICAgIG1hdGNoOiAvW1xcc1xcU10rPy8sXG4gICAgbGluZUJyZWFrczogdHJ1ZVxuICB9O1xuXG4gIGNvbnN0IGpzQmxvY2tMZXhlcjogbW9vLlJ1bGVzID0ge307XG4gIGpzQmxvY2tMZXhlcltKU19CTE9DS19MRVhFUl9UT0tFTl9OQU1FUy5TSU5HTEVfTElORV9DT01NRU5UXSA9IC9cXC9cXC8uKj8kLztcbiAganNCbG9ja0xleGVyW0pTX0JMT0NLX0xFWEVSX1RPS0VOX05BTUVTLk1VTFRJX0xJTkVfQ09NTUVOVF0gPSAvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy87XG4gIGpzQmxvY2tMZXhlcltKU19CTE9DS19MRVhFUl9UT0tFTl9OQU1FUy5TSU5HTEVfUVVPVEVfU1RSSU5HXSA9IC8nKD86XFxcXFsnXFxcXF18W15cXG4nXFxcXF0pKicvO1xuICBqc0Jsb2NrTGV4ZXJbSlNfQkxPQ0tfTEVYRVJfVE9LRU5fTkFNRVMuRE9VQkxFX1FVT1RFX1NUUklOR10gPSAvXCIoPzpcXFxcW1wiXFxcXF18W15cXG5cIlxcXFxdKSpcIi87XG4gIGpzQmxvY2tMZXhlcltKU19CTE9DS19MRVhFUl9UT0tFTl9OQU1FUy5TVEFSVF9KU19URU1QTEFURV9TVFJJTkddID0ge1xuICAgIG1hdGNoOiBcImBcIixcbiAgICBwdXNoOiBMRVhFUl9TVEFURV9OQU1FUy5KU19URU1QTEFURV9TVFJJTkdcbiAgfTtcbiAganNCbG9ja0xleGVyW0pTX0JMT0NLX0xFWEVSX1RPS0VOX05BTUVTLlNUQVJUX0pTX0JMT0NLXSA9IHtcbiAgICBtYXRjaDogXCJ7XCIsXG4gICAgcHVzaDogTEVYRVJfU1RBVEVfTkFNRVMuSlNfQkxPQ0tcbiAgfTtcbiAganNCbG9ja0xleGVyW0pTX0JMT0NLX0xFWEVSX1RPS0VOX05BTUVTLkNMT1NFX0JMT0NLXSA9IHsgbWF0Y2g6IFwifVwiLCBwb3A6IDEgfTtcbiAganNCbG9ja0xleGVyW0pTX0JMT0NLX0xFWEVSX1RPS0VOX05BTUVTLkNBUFRVUkVfRVZFUllUSElOR19FTFNFXSA9IHtcbiAgICBtYXRjaDogL1tcXHNcXFNdKz8vLFxuICAgIGxpbmVCcmVha3M6IHRydWVcbiAgfTtcblxuICBjb25zdCBqc1RlbXBsYXRlU3RyaW5nTGV4ZXI6IG1vby5SdWxlcyA9IHt9O1xuICBqc1RlbXBsYXRlU3RyaW5nTGV4ZXJbSlNfVEVNUExBVEVfU1RSSU5HX0xFWEVSX1RPS0VOX05BTUVTLkVTQ0FQRURfQkFDS1NMQVNIXSA9IC9cXFxcXFxcXC87XG4gIGpzVGVtcGxhdGVTdHJpbmdMZXhlcltKU19URU1QTEFURV9TVFJJTkdfTEVYRVJfVE9LRU5fTkFNRVMuRVNDQVBFRF9CQUNLVElDS10gPSAvXFxcXGAvO1xuICBqc1RlbXBsYXRlU3RyaW5nTGV4ZXJbSlNfVEVNUExBVEVfU1RSSU5HX0xFWEVSX1RPS0VOX05BTUVTLkVTQ0FQRURfRE9MTEFSX0JSQUNFXSA9IC9cXFxcXFwke2AvO1xuICBqc1RlbXBsYXRlU3RyaW5nTGV4ZXJbSlNfVEVNUExBVEVfU1RSSU5HX0xFWEVSX1RPS0VOX05BTUVTLlNUQVJUX0pTX0JMT0NLXSA9IHtcbiAgICBtYXRjaDogXCIke1wiLFxuICAgIHB1c2g6IExFWEVSX1NUQVRFX05BTUVTLkpTX0JMT0NLXG4gIH07XG4gIGpzVGVtcGxhdGVTdHJpbmdMZXhlcltKU19URU1QTEFURV9TVFJJTkdfTEVYRVJfVE9LRU5fTkFNRVMuQ0xPU0VfU1RSSU5HXSA9IHsgbWF0Y2g6IFwiYFwiLCBwb3A6IDEgfTtcbiAganNUZW1wbGF0ZVN0cmluZ0xleGVyW0pTX1RFTVBMQVRFX1NUUklOR19MRVhFUl9UT0tFTl9OQU1FUy5DQVBUVVJFX0VWRVJZVEhJTkdfRUxTRV0gPSB7XG4gICAgbWF0Y2g6IC9bXFxzXFxTXSs/LyxcbiAgICBsaW5lQnJlYWtzOiB0cnVlXG4gIH07XG5cbiAgY29uc3QgaW5uZXJTcWxCbG9ja0xleGVyOiBtb28uUnVsZXMgPSB7fTtcbiAgaW5uZXJTcWxCbG9ja0xleGVyW1xuICAgIElOTkVSX1NRTF9CTE9DS19MRVhFUl9UT0tFTl9OQU1FUy5TVEFURU1FTlRfU0VQRVJBVE9SXG4gIF0gPSAvW15cXFNcXHJcXG5dKi0tLVteXFxTXFxyXFxuXSokLztcbiAgaW5uZXJTcWxCbG9ja0xleGVyW0lOTkVSX1NRTF9CTE9DS19MRVhFUl9UT0tFTl9OQU1FUy5TSU5HTEVfTElORV9DT01NRU5UXSA9IC8tLS4qPyQvO1xuICBpbm5lclNxbEJsb2NrTGV4ZXJbSU5ORVJfU1FMX0JMT0NLX0xFWEVSX1RPS0VOX05BTUVTLk1VTFRJX0xJTkVfQ09NTUVOVF0gPSAvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy87XG4gIGlubmVyU3FsQmxvY2tMZXhlcltcbiAgICBJTk5FUl9TUUxfQkxPQ0tfTEVYRVJfVE9LRU5fTkFNRVMuU0lOR0xFX1FVT1RFX1NUUklOR1xuICBdID0gLycoPzpcXFxcWydcXFxcXXxbXlxcbidcXFxcXSkqJy87XG4gIGlubmVyU3FsQmxvY2tMZXhlcltcbiAgICBJTk5FUl9TUUxfQkxPQ0tfTEVYRVJfVE9LRU5fTkFNRVMuRE9VQkxFX1FVT1RFX1NUUklOR1xuICBdID0gL1wiKD86XFxcXFtcIlxcXFxdfFteXFxuXCJcXFxcXSkqXCIvO1xuICBpbm5lclNxbEJsb2NrTGV4ZXJbSU5ORVJfU1FMX0JMT0NLX0xFWEVSX1RPS0VOX05BTUVTLlNUQVJUX0pTX1BMQUNFSE9MREVSXSA9IHtcbiAgICBtYXRjaDogXCIke1wiLFxuICAgIHB1c2g6IExFWEVSX1NUQVRFX05BTUVTLkpTX0JMT0NLXG4gIH07XG4gIGlubmVyU3FsQmxvY2tMZXhlcltJTk5FUl9TUUxfQkxPQ0tfTEVYRVJfVE9LRU5fTkFNRVMuQ0xPU0VfQkxPQ0tdID0ge1xuICAgIG1hdGNoOiBcIn1cIixcbiAgICBwb3A6IDFcbiAgfTtcbiAgaW5uZXJTcWxCbG9ja0xleGVyW0lOTkVSX1NRTF9CTE9DS19MRVhFUl9UT0tFTl9OQU1FUy5FU0NBUEVEX0JBQ0tUSUNLXSA9IHtcbiAgICBtYXRjaDogXCJcXFxcYFwiXG4gIH07XG4gIGlubmVyU3FsQmxvY2tMZXhlcltJTk5FUl9TUUxfQkxPQ0tfTEVYRVJfVE9LRU5fTkFNRVMuQkFDS1RJQ0tdID0gXCJgXCI7XG4gIGlubmVyU3FsQmxvY2tMZXhlcltJTk5FUl9TUUxfQkxPQ0tfTEVYRVJfVE9LRU5fTkFNRVMuQ0FQVFVSRV9FVkVSWVRISU5HX0VMU0VdID0ge1xuICAgIG1hdGNoOiAvW1xcc1xcU10rPy8sXG4gICAgbGluZUJyZWFrczogdHJ1ZVxuICB9O1xuXG4gIGNvbnN0IGxleGVyU3RhdGVzOiB7IFt4OiBzdHJpbmddOiBtb28uUnVsZXMgfSA9IHt9O1xuICBsZXhlclN0YXRlc1tMRVhFUl9TVEFURV9OQU1FUy5TUUxdID0gc3FsTGV4ZXI7XG4gIGxleGVyU3RhdGVzW0xFWEVSX1NUQVRFX05BTUVTLkpTX0JMT0NLXSA9IGpzQmxvY2tMZXhlcjtcbiAgbGV4ZXJTdGF0ZXNbTEVYRVJfU1RBVEVfTkFNRVMuSlNfVEVNUExBVEVfU1RSSU5HXSA9IGpzVGVtcGxhdGVTdHJpbmdMZXhlcjtcbiAgbGV4ZXJTdGF0ZXNbTEVYRVJfU1RBVEVfTkFNRVMuSU5ORVJfU1FMX0JMT0NLXSA9IGlubmVyU3FsQmxvY2tMZXhlcjtcblxuICByZXR1cm4gbGV4ZXJTdGF0ZXM7XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGV4ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcWx4L2xleGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBQUEsMkJBQTJCO0lBRTNCLE1BQU0saUJBQWlCLEdBQUc7UUFDeEIsR0FBRyxFQUFFLEtBQUs7UUFDVixRQUFRLEVBQUUsU0FBUztRQUNuQixrQkFBa0IsRUFBRSxrQkFBa0I7UUFDdEMsZUFBZSxFQUFFLGVBQWU7S0FDakMsQ0FBQztJQUVGLE1BQU0scUJBQXFCLEdBQUc7UUFDNUIsWUFBWSxFQUFFLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxjQUFjO1FBQ3BELFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsVUFBVTtRQUM1QyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsbUJBQW1CO1FBQzlELG9CQUFvQixFQUFFLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxxQkFBcUI7UUFDbkUscUJBQXFCLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxHQUFHLHNCQUFzQjtRQUNyRSxXQUFXLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxHQUFHLGFBQWE7UUFDbEQsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxHQUFHLHFCQUFxQjtRQUNsRSxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsb0JBQW9CO1FBQ2pFLGtCQUFrQixFQUFFLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxtQkFBbUI7UUFDL0QsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxHQUFHLG9CQUFvQjtRQUNqRSxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsb0JBQW9CO1FBQ2pFLG9CQUFvQixFQUFFLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxxQkFBcUI7UUFDbkUsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxHQUFHLGtCQUFrQjtRQUM1RCxRQUFRLEVBQUUsaUJBQWlCLENB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LENBQUMsb0JBQW9CLENBQUMsR0FBRztZQUMzRSxLQUFLLEVBQUUsSUFBSTtZQUNYLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxRQUFRO1NBQ2pDLENBQUM7UUFDRixrQkFBa0IsQ0FBQyxpQ0FBaUMsQ0FBQyxXQUFXLENBQUMsR0FBRztZQUNsRSxLQUFLLEVBQUUsR0FBRztZQUNWLEdBQUcsRUFBRSxDQUFDO1NBQ1AsQ0FBQztRQUNGLGtCQUFrQixDQUFDLGlDQUFpQyxDQUFDLGdCQUFnQixDQUFDLEdBQUc7WUFDdkUsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDO1FBQ0Ysa0JBQWtCLENBQUMsaUNBQWlDLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ3JFLGtCQUFrQixDQUFDLGlDQUFpQyxDQUFDLHVCQUF1QixDQUFDLEdBQUc7WUFDOUUsS0FBSyxFQUFFLFVBQVU7WUFDakIsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQztRQUVGLE1BQU0sV0FBVyxHQUErQixFQUFFLENBQUM7UUFDbkQsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQztRQUM5QyxXQUFXLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEdBQUcsWUFBWSxDQUFDO1FBQ3ZELFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLHFCQUFxQixDQUFDO1FBQzFFLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsR0FBRyxrQkFBa0IsQ0FBQztRQUVwRSxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbW9vIGZyb20gXCJtb29cIjtcblxuY29uc3QgTEVYRVJfU1RBVEVfTkFNRVMgPSB7XG4gIFNRTDogXCJzcWxcIixcbiAgSlNfQkxPQ0s6IFwianNCbG9ja1wiLFxuICBKU19URU1QTEFURV9TVFJJTkc6IFwianNUZW1wbGF0ZVN0cmluZ1wiLFxuICBJTk5FUl9TUUxfQkxPQ0s6IFwiaW5uZXJTcWxCbG9ja1wiXG59O1xuXG5jb25zdCBTUUxfTEVYRVJfVE9LRU5fTkFNRVMgPSB7XG4gIFNUQVJUX0NPTkZJRzogTEVYRVJfU1RBVEVfTkFNRVMuU1FMICsgXCJfc3RhcnRDb25maWdcIixcbiAgU1RBUlRfSlM6IExFWEVSX1NUQVRFX05BTUVTLlNRTCArIFwiX3N0YXJ0SnNcIixcbiAgU1RBUlRfSU5DUkVNRU5UQUw6IExFWEVSX1NUQVRFX05BTUVTLlNRTCArIFwiX3N0YXJ0SW5jcmVtZW50YWxcIixcbiAgU1RBUlRfUFJFX09QRVJBVElPTlM6IExFWEVSX1NUQVRFX05BTUVTLlNRTCArIFwiX3N0YXJ0UHJlT3BlcmF0aW9uc1wiLFxuICBTVEFSVF9QT1NUX09QRVJBVElPTlM6IExFWEVSX1NUQVRFX05BTUVTLlNRTCArIFwiX3N0YXJ0UG9zdE9wZXJhdGlvbnNcIixcbiAgU1RBUlRfSU5QVVQ6IExFWEVSX1NUQVRFX05BTUVTLlNRTCArIFwiX3N0YXJ0SW5wdXRcIixcbiAgU1RBVEVNRU5UX1NFUEVSQVRPUjogTEVYRVJfU1RBVEVfTkFNRVMuU1FMICsgXCJfc3RhdGVtZW50U2VwYXJhdG9yXCIsXG4gIFNJTkdMRV9MSU5FX0NPTU1FTlQ6IExFWEVSX1NUQVRFX05BTUVTLlNRTCArIFwiX3NpbmdsZUxpbmVDb21tZW50XCIsXG4gIE1VTFRJX0xJTkVfQ09NTUVOVDogTEVYRVJfU1RBVEVfTkFNRVMuU1FMICsgXCJfbXVsdGlMaW5lQ29tbWVudFwiLFxuICBTSU5HTEVfUVVPVEVfU1RSSU5HOiBMRVhFUl9TVEFURV9OQU1FUy5TUUwgKyBcIl9zaW5nbGVRdW90ZVN0cmluZ1wiLFxuICBET1VCTEVfUVVPVEVfU1RSSU5HOiBMRVhFUl9TVEFURV9OQU1FUy5TUUwgKyBcIl9kb3VibGVRdW90ZVN0cmluZ1wiLFxuICBTVEFSVF9KU19QTEFDRUhPTERFUjogTEVYRVJfU1RBVEVfTkFNRVMuU1FMICsgXCJfc3RhcnRKc1BsYWNlaG9sZGVyXCIsXG4gIEVTQ0FQRURfQkFDS1RJQ0s6IExFWEVSX1NUQVRFX05BTUVTLlNRTCArIFwiX2VzY2FwZWRCYWNrdGlja1wiLFxuICBCQUNLVElDSzogTEVYRVJfU1RBVEVfTkFNRVMuU1FMICsgXCJfYmFja3RpY2tcIixcbiAgQ0FQVFVSRV9FVkVSWVRISU5HX0VMU0U6IExFWEVSX1NUQVRFX05BTUVTLlNRTCArIFwiX2NhcHR1cmVFdmVyeXRoaW5nRWxzZVwiXG59O1xuXG5jb25zdCBKU19CTE9DS19MRVhFUl9UT0tFTl9OQU1FUyA9IHtcbiAgU0lOR0xFX0xJTkVfQ09NTUVOVDogTEVYRVJfU1RBVEVfTkFNRVMuSlNfQkxPQ0sgKyBcIl9zaW5nbGVMaW5lQ29tbWVudFwiLFxuICBNVUxUSV9MSU5FX0NPTU1FTlQ6IExFWEVSX1NUQVRFX05BTUVTLkpTX0JMT0NLICsgXCJfbXVsdGlMaW5lQ29tbWVudFwiLFxuICBTSU5HTEVfUVVPVEVfU1RSSU5HOiBMRVhFUl9TVEFURV9OQU1FUy5KU19CTE9DSyArIFwiX3NpbmdsZVF1b3RlU3RyaW5nXCIsXG4gIERPVUJMRV9RVU9URV9TVFJJTkc6IExFWEVSX1NUQVRFX05BTUVTLkpTX0JMT0NLICsgXCJfZG91YmxlUXVvdGVTdHJpbmdcIixcbiAgU1RBUlRfSlNfVEVNUExBVEVfU1RSSU5HOiBMRVhFUl9TVEFURV9OQU1FUy5KU19CTE9DSyArIFwiX3N0YXJ0SnNUZW1wbGF0ZVN0cmluZ1wiLFxuICBTVEFSVF9KU19CTE9DSzogTEVYRVJfU1RBVEVfTkFNRVMuSlNfQkxPQ0sgKyBcIl9zdGFydEpzQmxvY2tcIixcbiAgQ0xPU0VfQkxPQ0s6IExFWEVSX1NUQVRFX05BTUVTLkpTX0JMT0NLICsgXCJfY2xvc2VCbG9ja1wiLFxuICBDQVBUVVJFX0VWRVJZVEhJTkdfRUxTRTogTEVYRVJfU1RBVEVfTkFNRVMuSlNfQkxPQ0sgKyBcIl9jYXB0dXJlRXZlcnl0aGluZ0Vsc2VcIlxufTtcblxuY29uc3QgSlNfVEVNUExBVEVfU1RSSU5HX0xFWEVSX1RPS0VOX05BTUVTID0ge1xuICBFU0NBUEVEX0JBQ0tTTEFTSDogTEVYRVJfU1RBVEVfTkFNRVMuSlNfVEVNUExBVEVfU1RSSU5HICsgXCJfZXNjYXBlZEJhY2tzbGFzaFwiLFxuICBFU0NBUEVEX0JBQ0tUSUNLOiBMRVhFUl9TVEFURV9OQU1FUy5KU19URU1QTEFURV9TVFJJTkcgKyBcIl9lc2NhcGVkQmFja3RpY2tcIixcbiAgRVNDQVBFRF9ET0xMQVJfQlJBQ0U6IExFWEVSX1NUQVRFX05BTUVTLkpTX1RFTVBMQVRFX1NUUklORyArIFwiX2VzY2FwZWREb2xsYXJCcmFjZVwiLFxuICBTVEFSVF9KU19CTE9DSzogTEVYRVJfU1RBVEVfTkFNRVMuSlNfVEVNUExBVEVfU1RSSU5HICsgXCJfc3RhcnRKc0Jsb2NrXCIsXG4gIENMT1NFX1NUUklORzogTEVYRVJfU1RBVEVfTkFNRVMuSlNfVEVNUExBVEVfU1RSSU5HICsgXCJfY2xvc2VTdHJpbmdcIixcbiAgQ0FQVFVSRV9FVkVSWVRISU5HX0VMU0U6IExFWEVSX1NUQVRFX05BTUVTLkpTX1RFTVBMQVRFX1NUUklORyArIFwiX2NhcHR1cmVFdmVyeXRoaW5nRWxzZVwiXG59O1xuXG5jb25zdCBJTk5FUl9TUUxfQkxPQ0tfTEVYRVJfVE9LRU5fTkFNRVMgPSB7XG4gIFNUQVRFTUVOVF9TRVBFUkFUT1I6IExFWEVSX1NUQVRFX05BTUVTLklOTkVSX1NRTF9CTE9DSyArIFwiX3N0YXRlbWVudFNlcGFyYXRvclwiLFxuICBTSU5HTEVfTElORV9DT01NRU5UOiBMRVhFUl9TVEFURV9OQU1FUy5JTk5FUl9TUUxfQkxPQ0sgKyBcIl9zaW5nbGVMaW5lQ29tbWVudFwiLFxuICBNVUxUSV9MSU5FX0NPTU1FTlQ6IExFWEVSX1NUQVRFX05BTUVTLklOTkVSX1NRTF9CTE9DSyArIFwiX211bHRpTGluZUNvbW1lbnRcIixcbiAgU0lOR0xFX1FVT1RFX1NUUklORzogTEVYRVJfU1RBVEVfTkFNRVMuSU5ORVJfU1FMX0JMT0NLICsgXCJfc2luZ2xlUXVvdGVTdHJpbmdcIixcbiAgRE9VQkxFX1FVT1RFX1NUUklORzogTEVYRVJfU1RBVEVfTkFNRVMuSU5ORVJfU1FMX0JMT0NLICsgXCJfZG91YmxlUXVvdGVTdHJpbmdcIixcbiAgU1RBUlRfSlNfUExBQ0VIT0xERVI6IExFWEVSX1NUQVRFX05BTUVTLklOTkVSX1NRTF9CTE9DSyArIFwiX3N0YXJ0SnNQbGFjZWhvbGRlclwiLFxuICBDTE9TRV9CTE9DSzogTEVYRVJfU1RBVEVfTkFNRVMuSU5ORVJfU1FMX0JMT0NLICsgXCJfY2xvc2VCbG9ja1wiLFxuICBFU0NBUEVEX0JBQ0tUSUNLOiBMRVhFUl9TVEFURV9OQU1FUy5JTk5FUl9TUUxfQkxPQ0sgKyBcIl9lc2NhcGVkQmFja3RpY2tcIixcbiAgQkFDS1RJQ0s6IExFWEVSX1NUQVRFX05BTUVTLklOTkVSX1NRTF9CTE9DSyArIFwiX2JhY2t0aWNrXCIsXG4gIENBUFRVUkVfRVZFUllUSElOR19FTFNFOiBMRVhFUl9TVEFURV9OQU1FUy5JTk5FUl9TUUxfQkxPQ0sgKyBcIl9jYXB0dXJlRXZlcnl0aGluZ0Vsc2VcIlxufTtcblxuY29uc3QgbGV4ZXIgPSBtb28uc3RhdGVzKGJ1aWxkU3FseExleGVyKCkpO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTeW50YXhUcmVlTm9kZSB7XG4gIGNvbnRlbnRUeXBlOiBcInNxbFwiIHwgXCJqc1wiIHwgXCJqc1BsYWNlaG9sZGVyXCIgfCBcInNxbFN0YXRlbWVudFNlcGFyYXRvclwiIHwgXCJzcWxDb21tZW50XCI7XG4gIGNvbnRlbnRzOiBBcnJheTxzdHJpbmcgfCBJU3ludGF4VHJlZU5vZGU+O1xufVxuXG5mdW5jdGlvbiBhcHBlbmRUb05vZGUobm9kZTogSVN5bnRheFRyZWVOb2RlLCB0b2tlblZhbHVlOiBzdHJpbmcpIHtcbiAgaWYgKG5vZGUuY29udGVudHMubGVuZ3RoID4gMCAmJiB0eXBlb2Ygbm9kZS5jb250ZW50c1tub2RlLmNvbnRlbnRzLmxlbmd0aCAtIDFdID09PSBcInN0cmluZ1wiKSB7XG4gICAgbm9kZS5jb250ZW50c1tub2RlLmNvbnRlbnRzLmxlbmd0aCAtIDFdID0gbm9kZS5jb250ZW50c1tub2RlLmNvbnRlbnRzLmxlbmd0aCAtIDFdICsgdG9rZW5WYWx1ZTtcbiAgICByZXR1cm47XG4gIH1cbiAgbm9kZS5jb250ZW50cy5wdXNoKHRva2VuVmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0U3ludGF4VHJlZShjb2RlOiBzdHJpbmcpOiBJU3ludGF4VHJlZU5vZGUge1xuICBjb25zdCBwYXJlbnROb2RlOiBJU3ludGF4VHJlZU5vZGUgPSB7IGNvbnRlbnRUeXBlOiBcInNxbFwiLCBjb250ZW50czogW10gfTtcbiAgbGV0IGN1cnJlbnROb2RlID0gcGFyZW50Tm9kZTtcbiAgY29uc3Qgbm9kZVN0YWNrID0gW2N1cnJlbnROb2RlXTtcbiAgbGV4ZXIucmVzZXQoY29kZSk7XG4gIGZvciAoY29uc3QgdG9rZW4gb2YgbGV4ZXIpIHtcbiAgICBpZiAodG9rZW4udHlwZS5pbmNsdWRlcyhcIl9jbG9zZVwiKSkge1xuICAgICAgYXBwZW5kVG9Ob2RlKGN1cnJlbnROb2RlLCB0b2tlbi52YWx1ZSk7XG4gICAgICBub2RlU3RhY2sucG9wKCk7XG4gICAgICBjdXJyZW50Tm9kZSA9IG5vZGVTdGFja1tub2RlU3RhY2subGVuZ3RoIC0gMV07XG4gICAgfSBlbHNlIGlmICh0b2tlbi50eXBlLmluY2x1ZGVzKFwiX3N0YXJ0XCIpKSB7XG4gICAgICBjb25zdCBjb250ZW50VHlwZSA9XG4gICAgICAgIHRva2VuLnR5cGUuaW5jbHVkZXMoXCJfc3RhcnRKc1wiKSB8fCB0b2tlbi50eXBlLmluY2x1ZGVzKFwiX3N0YXJ0Q29uZmlnXCIpXG4gICAgICAgICAgPyB0b2tlbi50eXBlLmluY2x1ZGVzKFwiX3N0YXJ0SnNQbGFjZWhvbGRlclwiKVxuICAgICAgICAgICAgPyBcImpzUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgOiBcImpzXCJcbiAgICAgICAgICA6IFwic3FsXCI7XG4gICAgICBpZiAoY29udGVudFR5cGUgPT09IFwic3FsXCIgJiYgY3VycmVudE5vZGUuY29udGVudFR5cGUgIT09IFwic3FsXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiJ3NxbCcgc3ludGF4IHRyZWUgbm9kZXMgbWF5IG9ubHkgYmUgY2hpbGRyZW4gb2Ygb3RoZXIgJ3NxbCcgbm9kZXMuXCIpO1xuICAgICAgfVxuICAgICAgY29uc3QgbmV3Q3VycmVudE5vZGU6IElTeW50YXhUcmVlTm9kZSA9IHtcbiAgICAgICAgY29udGVudFR5cGUsXG4gICAgICAgIGNvbnRlbnRzOiBbXVxuICAgICAgfTtcbiAgICAgIGFwcGVuZFRvTm9kZShuZXdDdXJyZW50Tm9kZSwgdG9rZW4udmFsdWUpO1xuICAgICAgbm9kZVN0YWNrLnB1c2gobmV3Q3VycmVudE5vZGUpO1xuICAgICAgY3VycmVudE5vZGUuY29udGVudHMucHVzaChuZXdDdXJyZW50Tm9kZSk7XG4gICAgICBjdXJyZW50Tm9kZSA9IG5ld0N1cnJlbnROb2RlO1xuICAgIH0gZWxzZSBpZiAodG9rZW4udHlwZS5lbmRzV2l0aChcIl9zdGF0ZW1lbnRTZXBhcmF0b3JcIikpIHtcbiAgICAgIGN1cnJlbnROb2RlLmNvbnRlbnRzLnB1c2goe1xuICAgICAgICBjb250ZW50VHlwZTogXCJzcWxTdGF0ZW1lbnRTZXBhcmF0b3JcIixcbiAgICAgICAgY29udGVudHM6IFt0b2tlbi52YWx1ZV1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAodG9rZW4udHlwZS5zdGFydHNXaXRoKFwic3FsXCIpIHx8IHRva2VuLnR5cGUuc3RhcnRzV2l0aChcImlubmVyU3FsQmxvY2tcIikpICYmXG4gICAgICB0b2tlbi50eXBlLmVuZHNXaXRoKFwiQ29tbWVudFwiKVxuICAgICkge1xuICAgICAgY3VycmVudE5vZGUuY29udGVudHMucHVzaCh7XG4gICAgICAgIGNvbnRlbnRUeXBlOiBcInNxbENvbW1lbnRcIixcbiAgICAgICAgY29udGVudHM6IFt0b2tlbi52YWx1ZV1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcHBlbmRUb05vZGUoY3VycmVudE5vZGUsIHRva2VuLnZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBhcmVudE5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNxbHhQYXJzZVJlc3VsdHMge1xuICBjb25maWc6IHN0cmluZztcbiAganM6IHN0cmluZztcbiAgc3FsOiBzdHJpbmdbXTtcbiAgaW5jcmVtZW50YWw6IHN0cmluZztcbiAgcHJlT3BlcmF0aW9uczogc3RyaW5nW107XG4gIHBvc3RPcGVyYXRpb25zOiBzdHJpbmdbXTtcbiAgaW5wdXQ6IHsgW2xhYmVsOiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLy8gVE9ETzogRmlndXJlIG91dCBpZiBpdCdzIHBvc3NpYmxlIHRvIGJyaW5nIHBhcnNlU3FseCgpIGFuZCBjb25zdHJ1Y3RTeW50YXhUcmVlKCkgdG9nZXRoZXIuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTcWx4KGNvZGU6IHN0cmluZyk6IElTcWx4UGFyc2VSZXN1bHRzIHtcbiAgY29uc3QgdmFsdWVNYXBwaW5ncyA9IGdldFZhbHVlTWFwcGluZ3MoKTtcbiAgY29uc3QgcmVzdWx0czogSVNxbHhQYXJzZVJlc3VsdHMgPSB7XG4gICAgY29uZmlnOiBcIlwiLFxuICAgIGpzOiBcIlwiLFxuICAgIHNxbDogW1wiXCJdLFxuICAgIGluY3JlbWVudGFsOiBcIlwiLFxuICAgIHByZU9wZXJhdGlvbnM6IFtcIlwiXSxcbiAgICBwb3N0T3BlcmF0aW9uczogW1wiXCJdLFxuICAgIGlucHV0OiB7fVxuICB9O1xuICBsZXQgY3VycmVudElucHV0TGFiZWw7XG4gIGNvbnN0IHBhcnNlU3RhdGUgPSBuZXcgU3FseFBhcnNlU3RhdGUoKTtcbiAgbGV4ZXIucmVzZXQoY29kZSk7XG4gIGZvciAoY29uc3QgdG9rZW4gb2YgbGV4ZXIpIHtcbiAgICBpZiAodmFsdWVNYXBwaW5nc1t0b2tlbi50eXBlXSkge1xuICAgICAgdG9rZW4udmFsdWUgPSB2YWx1ZU1hcHBpbmdzW3Rva2VuLnR5cGVdKHRva2VuLnZhbHVlKTtcbiAgICB9XG4gICAgY29uc3QgcHJldmlvdXNTdGF0ZSA9IHBhcnNlU3RhdGUuY3VycmVudFN0YXRlO1xuICAgIGNvbnN0IG5ld1N0YXRlID0gcGFyc2VTdGF0ZS5jb21wdXRlU3RhdGUodG9rZW4pO1xuXG4gICAgaWYgKHRva2VuLnR5cGUgPT09IFNRTF9MRVhFUl9UT0tFTl9OQU1FUy5TVEFSVF9JTlBVVCkge1xuICAgICAgY3VycmVudElucHV0TGFiZWwgPSB0b2tlbi52YWx1ZTtcbiAgICAgIHRva2VuLnZhbHVlID0gXCJcIjtcbiAgICB9XG5cbiAgICBjb25zdCBpc1N0YXRlbWVudFNlcGFyYXRvciA9XG4gICAgICB0b2tlbi50eXBlID09PSBTUUxfTEVYRVJfVE9LRU5fTkFNRVMuU1RBVEVNRU5UX1NFUEVSQVRPUiB8fFxuICAgICAgdG9rZW4udHlwZSA9PT0gSU5ORVJfU1FMX0JMT0NLX0xFWEVSX1RPS0VOX05BTUVTLlNUQVRFTUVOVF9TRVBFUkFUT1I7XG5cbiAgICBzd2l0Y2ggKG5ld1N0YXRlKSB7XG4gICAgICBjYXNlIFwiY29uZmlnXCI6IHtcbiAgICAgICAgcmVzdWx0cy5jb25maWcgKz0gdG9rZW4udmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBcImpzXCI6IHtcbiAgICAgICAgcmVzdWx0cy5qcyArPSB0b2tlbi52YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFwic3FsXCI6IHtcbiAgICAgICAgaWYgKGlzU3RhdGVtZW50U2VwYXJhdG9yKSB7XG4gICAgICAgICAgcmVzdWx0cy5zcWwucHVzaChcIlwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRzLnNxbFtyZXN1bHRzLnNxbC5sZW5ndGggLSAxXSArPSB0b2tlbi52YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFwiaW5jcmVtZW50YWxcIjoge1xuICAgICAgICBpZiAoaXNTdGF0ZW1lbnRTZXBhcmF0b3IpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBcIkluY3JlbWVudGFsIGNvZGUgYmxvY2tzIG1heSBub3QgY29udGFpbiBTUUwgc3RhdGVtZW50IHNlcGFyYXRvcnMgKCctLS0nKS5cIlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0cy5pbmNyZW1lbnRhbCArPSB0b2tlbi52YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFwicHJlT3BlcmF0aW9uc1wiOiB7XG4gICAgICAgIGlmIChpc1N0YXRlbWVudFNlcGFyYXRvcikge1xuICAgICAgICAgIHJlc3VsdHMucHJlT3BlcmF0aW9ucy5wdXNoKFwiXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdHMucHJlT3BlcmF0aW9uc1tyZXN1bHRzLnByZU9wZXJhdGlvbnMubGVuZ3RoIC0gMV0gKz0gdG9rZW4udmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBcInBvc3RPcGVyYXRpb25zXCI6IHtcbiAgICAgICAgaWYgKGlzU3RhdGVtZW50U2VwYXJhdG9yKSB7XG4gICAgICAgICAgcmVzdWx0cy5wb3N0T3BlcmF0aW9ucy5wdXNoKFwiXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdHMucG9zdE9wZXJhdGlvbnNbcmVzdWx0cy5wb3N0T3BlcmF0aW9ucy5sZW5ndGggLSAxXSArPSB0b2tlbi52YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFwiaW5wdXRcIjoge1xuICAgICAgICBpZiAoaXNTdGF0ZW1lbnRTZXBhcmF0b3IpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBjb2RlIGJsb2NrcyBtYXkgbm90IGNvbnRhaW4gU1FMIHN0YXRlbWVudCBzZXBhcmF0b3JzICgnLS0tJykuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmVzdWx0cy5pbnB1dFtjdXJyZW50SW5wdXRMYWJlbF0pIHtcbiAgICAgICAgICByZXN1bHRzLmlucHV0W2N1cnJlbnRJbnB1dExhYmVsXSA9IFwiXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0cy5pbnB1dFtjdXJyZW50SW5wdXRMYWJlbF0gKz0gdG9rZW4udmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgcGFyc2Ugc3RhdGU6ICR7bmV3U3RhdGV9YCk7XG4gICAgfVxuXG4gICAgaWYgKHByZXZpb3VzU3RhdGUgPT09IFwianNcIiAmJiBuZXdTdGF0ZSAhPT0gXCJqc1wiKSB7XG4gICAgICAvLyBJZiB3ZSdyZSBjbG9zaW5nIG9mZiBhIEpTIGJsb2NrLCBjdXQgb2ZmIHRoZSBsYXN0IGNsb3NpbmcgYnJhY2UuXG4gICAgICAvLyBXZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSB3ZSBpbnRlbnRpb25hbGx5IGN1dCBvZmYgdGhlIHN0YXJ0aW5nIGJyYWNlIGR1cmluZyBsZXhpbmcuXG4gICAgICAvLyBXZSBjYW4ndCBrZWVwIHRoZW0gYmVjYXVzZSB0aGUgdXNlcidzIEpTIG11c3Qgbm90IGJlIHJ1biBpbnNpZGUgYSBzY29wZWQgYmxvY2suXG4gICAgICByZXN1bHRzLmpzID0gcmVzdWx0cy5qcy5zdWJzdHJpbmcoMCwgcmVzdWx0cy5qcy5sZW5ndGggLSAxKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmNvbnN0IHRva2VuVHlwZVN0YXRlTWFwcGluZyA9IG5ldyBNYXA8c3RyaW5nLCBrZXlvZiBJU3FseFBhcnNlUmVzdWx0cz4oKTtcbnRva2VuVHlwZVN0YXRlTWFwcGluZy5zZXQoU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNUQVJUX0NPTkZJRywgXCJjb25maWdcIik7XG50b2tlblR5cGVTdGF0ZU1hcHBpbmcuc2V0KFNRTF9MRVhFUl9UT0tFTl9OQU1FUy5TVEFSVF9KUywgXCJqc1wiKTtcbnRva2VuVHlwZVN0YXRlTWFwcGluZy5zZXQoU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNUQVJUX0lOQ1JFTUVOVEFMLCBcImluY3JlbWVudGFsXCIpO1xudG9rZW5UeXBlU3RhdGVNYXBwaW5nLnNldChTUUxfTEVYRVJfVE9LRU5fTkFNRVMuU1RBUlRfUFJFX09QRVJBVElPTlMsIFwicHJlT3BlcmF0aW9uc1wiKTtcbnRva2VuVHlwZVN0YXRlTWFwcGluZy5zZXQoU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNUQVJUX1BPU1RfT1BFUkFUSU9OUywgXCJwb3N0T3BlcmF0aW9uc1wiKTtcbnRva2VuVHlwZVN0YXRlTWFwcGluZy5zZXQoU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNUQVJUX0lOUFVULCBcImlucHV0XCIpO1xuXG5jbGFzcyBTcWx4UGFyc2VTdGF0ZSB7XG4gIHB1YmxpYyBjdXJyZW50U3RhdGU6IGtleW9mIElTcWx4UGFyc2VSZXN1bHRzID0gXCJzcWxcIjtcblxuICBwdWJsaWMgY29tcHV0ZVN0YXRlKHRva2VuOiBtb28uVG9rZW4pOiBrZXlvZiBJU3FseFBhcnNlUmVzdWx0cyB7XG4gICAgaWYgKCF0b2tlbi50eXBlLnN0YXJ0c1dpdGgoTEVYRVJfU1RBVEVfTkFNRVMuU1FMKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFN0YXRlO1xuICAgIH1cbiAgICB0aGlzLmN1cnJlbnRTdGF0ZSA9IFwic3FsXCI7XG4gICAgaWYgKHRva2VuVHlwZVN0YXRlTWFwcGluZy5oYXModG9rZW4udHlwZSkpIHtcbiAgICAgIHRoaXMuY3VycmVudFN0YXRlID0gdG9rZW5UeXBlU3RhdGVNYXBwaW5nLmdldCh0b2tlbi50eXBlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFN0YXRlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlTWFwcGluZ3MoKSB7XG4gIGNvbnN0IHZhbHVlTWFwcGluZ3M6IHtcbiAgICBbdG9rZW5UeXBlOiBzdHJpbmddOiAodG9rZW5WYWx1ZTogc3RyaW5nKSA9PiBzdHJpbmc7XG4gIH0gPSB7fTtcblxuICB2YWx1ZU1hcHBpbmdzW1NRTF9MRVhFUl9UT0tFTl9OQU1FUy5TVEFSVF9DT05GSUddID0gKCkgPT4gXCJ7XCI7XG4gIHZhbHVlTWFwcGluZ3NbU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNUQVJUX0pTXSA9ICgpID0+IFwiXCI7XG4gIHZhbHVlTWFwcGluZ3NbU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNUQVJUX0lOQ1JFTUVOVEFMXSA9ICgpID0+IFwiXCI7XG4gIHZhbHVlTWFwcGluZ3NbU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNUQVJUX1BSRV9PUEVSQVRJT05TXSA9ICgpID0+IFwiXCI7XG4gIHZhbHVlTWFwcGluZ3NbU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNUQVJUX1BPU1RfT1BFUkFUSU9OU10gPSAoKSA9PiBcIlwiO1xuICB2YWx1ZU1hcHBpbmdzW1NRTF9MRVhFUl9UT0tFTl9OQU1FUy5TVEFSVF9JTlBVVF0gPSAodG9rZW5WYWx1ZTogc3RyaW5nKSA9PlxuICAgIHRva2VuVmFsdWUuc3BsaXQoJ1wiJylbMV07XG4gIHZhbHVlTWFwcGluZ3NbU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNUQVRFTUVOVF9TRVBFUkFUT1JdID0gKCkgPT4gXCJcIjtcbiAgdmFsdWVNYXBwaW5nc1tTUUxfTEVYRVJfVE9LRU5fTkFNRVMuU0lOR0xFX0xJTkVfQ09NTUVOVF0gPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICB2YWx1ZS5yZXBsYWNlKC9gL2csIFwiXFxcXGBcIikucmVwbGFjZSgvXFwkey9nLCBcIlxcXFwke1wiKTtcbiAgdmFsdWVNYXBwaW5nc1tTUUxfTEVYRVJfVE9LRU5fTkFNRVMuTVVMVElfTElORV9DT01NRU5UXSA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgIHZhbHVlLnJlcGxhY2UoL2AvZywgXCJcXFxcYFwiKS5yZXBsYWNlKC9cXCR7L2csIFwiXFxcXCR7XCIpO1xuICB2YWx1ZU1hcHBpbmdzW1NRTF9MRVhFUl9UT0tFTl9OQU1FUy5CQUNLVElDS10gPSAoKSA9PiBcIlxcXFxgXCI7XG5cbiAgdmFsdWVNYXBwaW5nc1tJTk5FUl9TUUxfQkxPQ0tfTEVYRVJfVE9LRU5fTkFNRVMuU1RBVEVNRU5UX1NFUEVSQVRPUl0gPSAoKSA9PiBcIlwiO1xuICB2YWx1ZU1hcHBpbmdzW0lOTkVSX1NRTF9CTE9DS19MRVhFUl9UT0tFTl9OQU1FUy5DTE9TRV9CTE9DS10gPSAoKSA9PiBcIlwiO1xuICB2YWx1ZU1hcHBpbmdzW0lOTkVSX1NRTF9CTE9DS19MRVhFUl9UT0tFTl9OQU1FUy5CQUNLVElDS10gPSAoKSA9PiBcIlxcXFxgXCI7XG5cbiAgcmV0dXJuIHZhbHVlTWFwcGluZ3M7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkU3FseExleGVyKCk6IHsgW3g6IHN0cmluZ106IG1vby5SdWxlcyB9IHtcbiAgY29uc3Qgc3FsTGV4ZXI6IG1vby5SdWxlcyA9IHt9O1xuICBzcWxMZXhlcltTUUxfTEVYRVJfVE9LRU5fTkFNRVMuU1RBUlRfQ09ORklHXSA9IHtcbiAgICBtYXRjaDogXCJjb25maWcge1wiLFxuICAgIHB1c2g6IExFWEVSX1NUQVRFX05BTUVTLkpTX0JMT0NLXG4gIH07XG4gIHNxbExleGVyW1NRTF9MRVhFUl9UT0tFTl9OQU1FUy5TVEFSVF9KU10gPSB7XG4gICAgbWF0Y2g6IFwianMge1wiLFxuICAgIHB1c2g6IExFWEVSX1NUQVRFX05BTUVTLkpTX0JMT0NLXG4gIH07XG4gIHNxbExleGVyW1NRTF9MRVhFUl9UT0tFTl9OQU1FUy5TVEFSVF9JTkNSRU1FTlRBTF0gPSB7XG4gICAgbWF0Y2g6IFwiaW5jcmVtZW50YWxfd2hlcmUge1wiLFxuICAgIHB1c2g6IExFWEVSX1NUQVRFX05BTUVTLklOTkVSX1NRTF9CTE9DS1xuICB9O1xuICBzcWxMZXhlcltTUUxfTEVYRVJfVE9LRU5fTkFNRVMuU1RBUlRfUFJFX09QRVJBVElPTlNdID0ge1xuICAgIG1hdGNoOiBcInByZV9vcGVyYXRpb25zIHtcIixcbiAgICBwdXNoOiBMRVhFUl9TVEFURV9OQU1FUy5JTk5FUl9TUUxfQkxPQ0tcbiAgfTtcbiAgc3FsTGV4ZXJbU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNUQVJUX1BPU1RfT1BFUkFUSU9OU10gPSB7XG4gICAgbWF0Y2g6IFwicG9zdF9vcGVyYXRpb25zIHtcIixcbiAgICBwdXNoOiBMRVhFUl9TVEFURV9OQU1FUy5JTk5FUl9TUUxfQkxPQ0tcbiAgfTtcbiAgc3FsTGV4ZXJbU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNUQVJUX0lOUFVUXSA9IHtcbiAgICBtYXRjaDogL2lucHV0IFwiW2EtekEtWjAtOV8tXStcIiB7LyxcbiAgICBwdXNoOiBMRVhFUl9TVEFURV9OQU1FUy5JTk5FUl9TUUxfQkxPQ0tcbiAgfTtcbiAgc3FsTGV4ZXJbU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNUQVRFTUVOVF9TRVBFUkFUT1JdID0gL1teXFxTXFxyXFxuXSotLS1bXlxcU1xcclxcbl0qJC87XG4gIHNxbExleGVyW1NRTF9MRVhFUl9UT0tFTl9OQU1FUy5TSU5HTEVfTElORV9DT01NRU5UXSA9IC8tLS4qPyQvO1xuICBzcWxMZXhlcltTUUxfTEVYRVJfVE9LRU5fTkFNRVMuTVVMVElfTElORV9DT01NRU5UXSA9IC9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvLztcbiAgc3FsTGV4ZXJbU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNJTkdMRV9RVU9URV9TVFJJTkddID0gLycoPzpcXFxcWydcXFxcXXxbXlxcbidcXFxcXSkqJy87XG4gIHNxbExleGVyW1NRTF9MRVhFUl9UT0tFTl9OQU1FUy5ET1VCTEVfUVVPVEVfU1RSSU5HXSA9IC9cIig/OlxcXFxbXCJcXFxcXXxbXlxcblwiXFxcXF0pKlwiLztcbiAgc3FsTGV4ZXJbU1FMX0xFWEVSX1RPS0VOX05BTUVTLlNUQVJUX0pTX1BMQUNFSE9MREVSXSA9IHtcbiAgICBtYXRjaDogXCIke1wiLFxuICAgIHB1c2g6IExFWEVSX1NUQVRFX05BTUVTLkpTX0JMT0NLXG4gIH07XG4gIHNxbExleGVyW1NRTF9MRVhFUl9UT0tFTl9OQU1FUy5FU0NBUEVEX0JBQ0tUSUNLXSA9IHtcbiAgICBtYXRjaDogXCJcXFxcYFwiXG4gIH07XG4gIHNxbExleGVyW1NRTF9MRVhFUl9UT0tFTl9OQU1FUy5CQUNLVElDS10gPSBcImBcIjtcbiAgc3FsTGV4ZXJbU1FMX0xFWEVSX1RPS0VOX05BTUVTLkNBUFRVUkVfRVZFUllUSElOR19FTFNFXSA9IHtcbiAgICBtYXRjaDogL1tcXHNcXFNdKz8vLFxuICAgIGxpbmVCcmVha3M6IHRydWVcbiAgfTtcblxuICBjb25zdCBqc0Jsb2NrTGV4ZXI6IG1vby5SdWxlcyA9IHt9O1xuICBqc0Jsb2NrTGV4ZXJbSlNfQkxPQ0tfTEVYRVJfVE9LRU5fTkFNRVMuU0lOR0xFX0xJTkVfQ09NTUVOVF0gPSAvXFwvXFwvLio/JC87XG4gIGpzQmxvY2tMZXhlcltKU19CTE9DS19MRVhFUl9UT0tFTl9OQU1FUy5NVUxUSV9MSU5FX0NPTU1FTlRdID0gL1xcL1xcKltcXHNcXFNdKj9cXCpcXC8vO1xuICBqc0Jsb2NrTGV4ZXJbSlNfQkxPQ0tfTEVYRVJfVE9LRU5fTkFNRVMuU0lOR0xFX1FVT1RFX1NUUklOR10gPSAvJyg/OlxcXFxbJ1xcXFxdfFteXFxuJ1xcXFxdKSonLztcbiAganNCbG9ja0xleGVyW0pTX0JMT0NLX0xFWEVSX1RPS0VOX05BTUVTLkRPVUJMRV9RVU9URV9TVFJJTkddID0gL1wiKD86XFxcXFtcIlxcXFxdfFteXFxuXCJcXFxcXSkqXCIvO1xuICBqc0Jsb2NrTGV4ZXJbSlNfQkxPQ0tfTEVYRVJfVE9LRU5fTkFNRVMuU1RBUlRfSlNfVEVNUExBVEVfU1RSSU5HXSA9IHtcbiAgICBtYXRjaDogXCJgXCIsXG4gICAgcHVzaDogTEVYRVJfU1RBVEVfTkFNRVMuSlNfVEVNUExBVEVfU1RSSU5HXG4gIH07XG4gIGpzQmxvY2tMZXhlcltKU19CTE9DS19MRVhFUl9UT0tFTl9OQU1FUy5TVEFSVF9KU19CTE9DS10gPSB7XG4gICAgbWF0Y2g6IFwie1wiLFxuICAgIHB1c2g6IExFWEVSX1NUQVRFX05BTUVTLkpTX0JMT0NLXG4gIH07XG4gIGpzQmxvY2tMZXhlcltKU19CTE9DS19MRVhFUl9UT0tFTl9OQU1FUy5DTE9TRV9CTE9DS10gPSB7IG1hdGNoOiBcIn1cIiwgcG9wOiAxIH07XG4gIGpzQmxvY2tMZXhlcltKU19CTE9DS19MRVhFUl9UT0tFTl9OQU1FUy5DQVBUVVJFX0VWRVJZVEhJTkdfRUxTRV0gPSB7XG4gICAgbWF0Y2g6IC9bXFxzXFxTXSs/LyxcbiAgICBsaW5lQnJlYWtzOiB0cnVlXG4gIH07XG5cbiAgY29uc3QganNUZW1wbGF0ZVN0cmluZ0xleGVyOiBtb28uUnVsZXMgPSB7fTtcbiAganNUZW1wbGF0ZVN0cmluZ0xleGVyW0pTX1RFTVBMQVRFX1NUUklOR19MRVhFUl9UT0tFTl9OQU1FUy5FU0NBUEVEX0JBQ0tTTEFTSF0gPSAvXFxcXFxcXFwvO1xuICBqc1RlbXBsYXRlU3RyaW5nTGV4ZXJbSlNfVEVNUExBVEVfU1RSSU5HX0xFWEVSX1RPS0VOX05BTUVTLkVTQ0FQRURfQkFDS1RJQ0tdID0gL1xcXFxgLztcbiAganNUZW1wbGF0ZVN0cmluZ0xleGVyW0pTX1RFTVBMQVRFX1NUUklOR19MRVhFUl9UT0tFTl9OQU1FUy5FU0NBUEVEX0RPTExBUl9CUkFDRV0gPSAvXFxcXFxcJHtgLztcbiAganNUZW1wbGF0ZVN0cmluZ0xleGVyW0pTX1RFTVBMQVRFX1NUUklOR19MRVhFUl9UT0tFTl9OQU1FUy5TVEFSVF9KU19CTE9DS10gPSB7XG4gICAgbWF0Y2g6IFwiJHtcIixcbiAgICBwdXNoOiBMRVhFUl9TVEFURV9OQU1FUy5KU19CTE9DS1xuICB9O1xuICBqc1RlbXBsYXRlU3RyaW5nTGV4ZXJbSlNfVEVNUExBVEVfU1RSSU5HX0xFWEVSX1RPS0VOX05BTUVTLkNMT1NFX1NUUklOR10gPSB7IG1hdGNoOiBcImBcIiwgcG9wOiAxIH07XG4gIGpzVGVtcGxhdGVTdHJpbmdMZXhlcltKU19URU1QTEFURV9TVFJJTkdfTEVYRVJfVE9LRU5fTkFNRVMuQ0FQVFVSRV9FVkVSWVRISU5HX0VMU0VdID0ge1xuICAgIG1hdGNoOiAvW1xcc1xcU10rPy8sXG4gICAgbGluZUJyZWFrczogdHJ1ZVxuICB9O1xuXG4gIGNvbnN0IGlubmVyU3FsQmxvY2tMZXhlcjogbW9vLlJ1bGVzID0ge307XG4gIGlubmVyU3FsQmxvY2tMZXhlcltcbiAgICBJTk5FUl9TUUxfQkxPQ0tfTEVYRVJfVE9LRU5fTkFNRVMuU1RBVEVNRU5UX1NFUEVSQVRPUlxuICBdID0gL1teXFxTXFxyXFxuXSotLS1bXlxcU1xcclxcbl0qJC87XG4gIGlubmVyU3FsQmxvY2tMZXhlcltJTk5FUl9TUUxfQkxPQ0tfTEVYRVJfVE9LRU5fTkFNRVMuU0lOR0xFX0xJTkVfQ09NTUVOVF0gPSAvLS0uKj8kLztcbiAgaW5uZXJTcWxCbG9ja0xleGVyW0lOTkVSX1NRTF9CTE9DS19MRVhFUl9UT0tFTl9OQU1FUy5NVUxUSV9MSU5FX0NPTU1FTlRdID0gL1xcL1xcKltcXHNcXFNdKj9cXCpcXC8vO1xuICBpbm5lclNxbEJsb2NrTGV4ZXJbXG4gICAgSU5ORVJfU1FMX0JMT0NLX0xFWEVSX1RPS0VOX05BTUVTLlNJTkdMRV9RVU9URV9TVFJJTkdcbiAgXSA9IC8nKD86XFxcXFsnXFxcXF18W15cXG4nXFxcXF0pKicvO1xuICBpbm5lclNxbEJsb2NrTGV4ZXJbXG4gICAgSU5ORVJfU1FMX0JMT0NLX0xFWEVSX1RPS0VOX05BTUVTLkRPVUJMRV9RVU9URV9TVFJJTkdcbiAgXSA9IC9cIig/OlxcXFxbXCJcXFxcXXxbXlxcblwiXFxcXF0pKlwiLztcbiAgaW5uZXJTcWxCbG9ja0xleGVyW0lOTkVSX1NRTF9CTE9DS19MRVhFUl9UT0tFTl9OQU1FUy5TVEFSVF9KU19QTEFDRUhPTERFUl0gPSB7XG4gICAgbWF0Y2g6IFwiJHtcIixcbiAgICBwdXNoOiBMRVhFUl9TVEFURV9OQU1FUy5KU19CTE9DS1xuICB9O1xuICBpbm5lclNxbEJsb2NrTGV4ZXJbSU5ORVJfU1FMX0JMT0NLX0xFWEVSX1RPS0VOX05BTUVTLkNMT1NFX0JMT0NLXSA9IHtcbiAgICBtYXRjaDogXCJ9XCIsXG4gICAgcG9wOiAxXG4gIH07XG4gIGlubmVyU3FsQmxvY2tMZXhlcltJTk5FUl9TUUxfQkxPQ0tfTEVYRVJfVE9LRU5fTkFNRVMuRVNDQVBFRF9CQUNLVElDS10gPSB7XG4gICAgbWF0Y2g6IFwiXFxcXGBcIlxuICB9O1xuICBpbm5lclNxbEJsb2NrTGV4ZXJbSU5ORVJfU1FMX0JMT0NLX0xFWEVSX1RPS0VOX05BTUVTLkJBQ0tUSUNLXSA9IFwiYFwiO1xuICBpbm5lclNxbEJsb2NrTGV4ZXJbSU5ORVJfU1FMX0JMT0NLX0xFWEVSX1RPS0VOX05BTUVTLkNBUFRVUkVfRVZFUllUSElOR19FTFNFXSA9IHtcbiAgICBtYXRjaDogL1tcXHNcXFNdKz8vLFxuICAgIGxpbmVCcmVha3M6IHRydWVcbiAgfTtcblxuICBjb25zdCBsZXhlclN0YXRlczogeyBbeDogc3RyaW5nXTogbW9vLlJ1bGVzIH0gPSB7fTtcbiAgbGV4ZXJTdGF0ZXNbTEVYRVJfU1RBVEVfTkFNRVMuU1FMXSA9IHNxbExleGVyO1xuICBsZXhlclN0YXRlc1tMRVhFUl9TVEFURV9OQU1FUy5KU19CTE9DS10gPSBqc0Jsb2NrTGV4ZXI7XG4gIGxleGVyU3RhdGVzW0xFWEVSX1NUQVRFX05BTUVTLkpTX1RFTVBMQVRFX1NUUklOR10gPSBqc1RlbXBsYXRlU3RyaW5nTGV4ZXI7XG4gIGxleGVyU3RhdGVzW0xFWEVSX1NUQVRFX05BTUVTLklOTkVSX1NRTF9CTE9DS10gPSBpbm5lclNxbEJsb2NrTGV4ZXI7XG5cbiAgcmV0dXJuIGxleGVyU3RhdGVzO1xufVxuIl19 |
{ | ||
"version": "1.3.6", | ||
"version": "1.3.7", | ||
"homepage": "https://github.com/dataform-co/dataform", | ||
@@ -4,0 +4,0 @@ "license": "MIT", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
56436
366
1