@genialis/resolwe
Advanced tools
Comparing version 3.1.1 to 3.1.2
@@ -224,2 +224,3 @@ /// <reference types="lodash" /> | ||
process_output_schema: any; | ||
process_slug: string; | ||
process_name: string; | ||
@@ -226,0 +227,0 @@ slug: string; |
@@ -54,2 +54,2 @@ "use strict"; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGkvdHlwZXMvcmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7QUFHSCwwQkFBNEI7QUF5QjVCLDZCQUF1QyxRQUEyQjtJQUM5RCxNQUFNLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRkQsa0RBRUM7QUFzQlksUUFBQSxnQkFBZ0IsR0FBb0IsT0FBTyxDQUFDO0FBQzVDLFFBQUEsZ0JBQWdCLEdBQW9CLE9BQU8sQ0FBQztBQUM1QyxRQUFBLGVBQWUsR0FBbUIsTUFBTSxDQUFDO0FBQ3pDLFFBQUEsaUJBQWlCLEdBQXFCLE1BQU0sQ0FBQztBQUM3QyxRQUFBLGNBQWMsR0FBa0IsS0FBSyxDQUFDO0FBQ3RDLFFBQUEsbUJBQW1CLEdBQXVCLFVBQVUsQ0FBQztBQUNyRCxRQUFBLGVBQWUsR0FBbUIsTUFBTSxDQUFDO0FBVXpDLFFBQUEsc0JBQXNCLEdBQXlCLFFBQVEsQ0FBQztBQUN4RCxRQUFBLHFCQUFxQixHQUF3QixPQUFPLENBQUM7QUFDckQsUUFBQSxvQkFBb0IsR0FBdUIsTUFBTSxDQUFDO0FBa0RsRCxRQUFBLHVCQUF1QixHQUEwQixLQUFLLENBQUM7QUFDdkQsUUFBQSwwQkFBMEIsR0FBNkIsS0FBSyxDQUFDO0FBQzdELFFBQUEsd0JBQXdCLEdBQTJCLEtBQUssQ0FBQztBQXlKekQsUUFBQSxxQkFBcUIsR0FBd0IsSUFBSSxDQUFDO0FBQ2xELFFBQUEscUJBQXFCLEdBQXdCLElBQUksQ0FBQztBQUNsRCxRQUFBLG1CQUFtQixHQUFzQixJQUFJLENBQUM7QUFDOUMsUUFBQSxzQkFBc0IsR0FBeUIsSUFBSSxDQUFDO0FBQ3BELFFBQUEsZ0JBQWdCLEdBQW1CLElBQUksQ0FBQztBQUN4QyxRQUFBLGlCQUFpQixHQUFvQixJQUFJLENBQUM7QUFDMUMsUUFBQSxpQkFBaUIsR0FBb0IsSUFBSSxDQUFDO0FBb0N2RCxnQkFBdUIsTUFBMEM7SUFDN0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsMEJBQTBCLENBQUMsRUFDekgsVUFBQyxRQUFRLElBQUssT0FBQSxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUEvQixDQUErQixDQUNoRCxDQUFDO0FBQ04sQ0FBQztBQUpELHdCQUlDO0FBaUxELHNCQUE2QixNQUEwQztJQUNuRSx3RUFBd0U7SUFDeEUsMkNBQTJDO0lBQzNDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQztRQUN2QyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztRQUNqQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUM3QixDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBUEQsb0NBT0M7QUFVRCxzQkFBNkIsTUFBMEM7SUFDbkUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBTEQsb0NBS0MiLCJmaWxlIjoiYXBpL3R5cGVzL3Jlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogVHlwZSBkZWZpbml0aW9uc1xuICpcbiAqIEhlcmUgaXMgZGVmaW5lZCBldmVyeXRoaW5nIHRoZSBBUEkgcmV0dXJucy5cbiAqL1xuXG5pbXBvcnQgKiBhcyBSeCBmcm9tICdyeCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCBEaWN0aW9uYXJ5ID0gXy5EaWN0aW9uYXJ5O1xuaW1wb3J0IE51bWVyaWNEaWN0aW9uYXJ5ID0gXy5OdW1lcmljRGljdGlvbmFyeTtcblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFF1ZXJ5XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnkge1xuICAgIGxpbWl0PzogbnVtYmVyO1xuICAgIG9mZnNldD86IG51bWJlcjtcbiAgICBvcmRlcmluZz86IHN0cmluZzsgLy8gJy1maWVsZDEsLWZpZWxkMixmaWVsZDMnXG4gICAgZmllbGRzPzogc3RyaW5nO1xuICAgIFtwcm9wZXJ0eU5hbWU6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeU9iamVjdCBleHRlbmRzIFF1ZXJ5IHtcbiAgICBoeWRyYXRlX2RhdGE/OiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5T2JqZWN0SHlkcmF0ZURhdGEgZXh0ZW5kcyBRdWVyeSB7XG4gICAgaHlkcmF0ZV9kYXRhOiAnMSc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Jlc3BvbnNlUGFnaW5hdGVkPFQ+KHJlc3BvbnNlOiBUIHwgeyByZXN1bHRzOiBUfSk6IHJlc3BvbnNlIGlzIHsgcmVzdWx0czogVCB9IHtcbiAgICByZXR1cm4gcmVzcG9uc2UuaGFzT3duUHJvcGVydHkoJ3Jlc3VsdHMnKTtcbn1cblxuLy8gTGltaXRPZmZzZXRQYWdpbmF0aW9uXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRlZFJlc3BvbnNlPFQ+IHtcbiAgICBjb3VudDogbnVtYmVyO1xuICAgIG5leHQ6IHN0cmluZztcbiAgICBwcmV2aW91czogc3RyaW5nO1xuICAgIHJlc3VsdHM6IFRbXTtcbn1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBlcm1pc3Npb25zXG5cbmV4cG9ydCB0eXBlIE93bmVyUGVybWlzc2lvbiA9ICdvd25lcic7XG5leHBvcnQgdHlwZSBTaGFyZVBlcm1pc3Npb24gPSAnc2hhcmUnO1xuZXhwb3J0IHR5cGUgRWRpdFBlcm1pc3Npb24gPSAnZWRpdCc7XG5leHBvcnQgdHlwZSBEZWxldGVQZXJtaXNzaW9uID0gJ2VkaXQnOyAvLyBub3QgYSB0eXBvIChBUEkgZG9lc24ndCBzdXBwb3J0IGRlbGV0ZSBwZXJtaXNzaW9uKVxuZXhwb3J0IHR5cGUgQWRkUGVybWlzc2lvbiA9ICdhZGQnO1xuZXhwb3J0IHR5cGUgRG93bmxvYWRQZXJtaXNzaW9uID0gJ2Rvd25sb2FkJztcbmV4cG9ydCB0eXBlIFZpZXdQZXJtaXNzaW9uID0gJ3ZpZXcnO1xuXG5leHBvcnQgY29uc3QgT1dORVJfUEVSTUlTU0lPTjogT3duZXJQZXJtaXNzaW9uID0gJ293bmVyJztcbmV4cG9ydCBjb25zdCBTSEFSRV9QRVJNSVNTSU9OOiBTaGFyZVBlcm1pc3Npb24gPSAnc2hhcmUnO1xuZXhwb3J0IGNvbnN0IEVESVRfUEVSTUlTU0lPTjogRWRpdFBlcm1pc3Npb24gPSAnZWRpdCc7XG5leHBvcnQgY29uc3QgREVMRVRFX1BFUk1JU1NJT046IERlbGV0ZVBlcm1pc3Npb24gPSAnZWRpdCc7XG5leHBvcnQgY29uc3QgQUREX1BFUk1JU1NJT046IEFkZFBlcm1pc3Npb24gPSAnYWRkJztcbmV4cG9ydCBjb25zdCBET1dOTE9BRF9QRVJNSVNTSU9OOiBEb3dubG9hZFBlcm1pc3Npb24gPSAnZG93bmxvYWQnO1xuZXhwb3J0IGNvbnN0IFZJRVdfUEVSTUlTU0lPTjogVmlld1Blcm1pc3Npb24gPSAndmlldyc7XG5cbmV4cG9ydCB0eXBlIFBlcm1pc3Npb24gPSBPd25lclBlcm1pc3Npb24gfCBTaGFyZVBlcm1pc3Npb24gfCBFZGl0UGVybWlzc2lvbiB8IERlbGV0ZVBlcm1pc3Npb24gfCBBZGRQZXJtaXNzaW9uIHxcbiAgICBEb3dubG9hZFBlcm1pc3Npb24gfCBWaWV3UGVybWlzc2lvbjtcblxuXG5leHBvcnQgdHlwZSBQdWJsaWNQZXJtaXNzaW9uVHlwZSA9ICdwdWJsaWMnO1xuZXhwb3J0IHR5cGUgR3JvdXBQZXJtaXNzaW9uVHlwZSA9ICdncm91cCc7XG5leHBvcnQgdHlwZSBVc2VyUGVybWlzc2lvblR5cGUgPSAndXNlcic7XG5cbmV4cG9ydCBjb25zdCBQVUJMSUNfUEVSTUlTU0lPTl9UWVBFOiBQdWJsaWNQZXJtaXNzaW9uVHlwZSA9ICdwdWJsaWMnO1xuZXhwb3J0IGNvbnN0IEdST1VQX1BFUk1JU1NJT05fVFlQRTogR3JvdXBQZXJtaXNzaW9uVHlwZSA9ICdncm91cCc7XG5leHBvcnQgY29uc3QgVVNFUl9QRVJNSVNTSU9OX1RZUEU6IFVzZXJQZXJtaXNzaW9uVHlwZSA9ICd1c2VyJztcblxuZXhwb3J0IHR5cGUgUGVybWlzc2lvblR5cGUgPSBQdWJsaWNQZXJtaXNzaW9uVHlwZSB8IEdyb3VwUGVybWlzc2lvblR5cGUgfCBVc2VyUGVybWlzc2lvblR5cGU7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlbVBlcm1pc3Npb25zT2Y8VD4ge1xuICAgIHR5cGU6IFBlcm1pc3Npb25UeXBlO1xuICAgIHBlcm1pc3Npb25zOiBUW107XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgbmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSXRlbVBlcm1pc3Npb25zID0gSXRlbVBlcm1pc3Npb25zT2Y8UGVybWlzc2lvbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0UGVybWlzc2lvbnNSZXF1ZXN0IHtcbiAgICBwdWJsaWM/OiB7XG4gICAgICAgIGFkZD86IFBlcm1pc3Npb25bXSxcbiAgICAgICAgcmVtb3ZlPzogUGVybWlzc2lvbltdXG4gICAgfTtcbiAgICBncm91cHM/OiB7XG4gICAgICAgIGFkZD86IE51bWVyaWNEaWN0aW9uYXJ5PFBlcm1pc3Npb25bXT4gfCBEaWN0aW9uYXJ5PFBlcm1pc3Npb25bXT5cbiAgICAgICAgcmVtb3ZlPzogTnVtZXJpY0RpY3Rpb25hcnk8UGVybWlzc2lvbltdPiB8IERpY3Rpb25hcnk8UGVybWlzc2lvbltdPlxuICAgIH07XG4gICAgdXNlcnM/OiB7XG4gICAgICAgIGFkZD86IE51bWVyaWNEaWN0aW9uYXJ5PFBlcm1pc3Npb25bXT4gfCBEaWN0aW9uYXJ5PFBlcm1pc3Npb25bXT5cbiAgICAgICAgcmVtb3ZlPzogTnVtZXJpY0RpY3Rpb25hcnk8UGVybWlzc2lvbltdPiB8IERpY3Rpb25hcnk8UGVybWlzc2lvbltdPlxuICAgIH07XG4gICAgc2hhcmVfY29udGVudD86ICcwJyB8ICcxJztcbn1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENvbnRyaWJ1dG9yXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJpYnV0b3Ige1xuICAgIGlkOiBudW1iZXI7XG4gICAgdXNlcm5hbWU6IHN0cmluZztcbiAgICBmaXJzdF9uYW1lOiBzdHJpbmc7XG4gICAgbGFzdF9uYW1lOiBzdHJpbmc7XG59XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQcm9jZXNzXG5cbmV4cG9ydCB0eXBlIFByb2Nlc3NQZXJtaXNzaW9ucyA9IFZpZXdQZXJtaXNzaW9uIHwgU2hhcmVQZXJtaXNzaW9uO1xuXG5leHBvcnQgdHlwZSBSYXdQcm9jZXNzUGVyc2lzdGVuY2UgPSAnUkFXJztcbmV4cG9ydCB0eXBlIENhY2hlZFByb2Nlc3NQZXJzaXN0ZW5jZSA9ICdDQUMnO1xuZXhwb3J0IHR5cGUgVGVtcFByb2Nlc3NQZXJzaXN0ZW5jZSA9ICdUTVAnO1xuXG5leHBvcnQgY29uc3QgUkFXX1BST0NFU1NfUEVSU0lTVEVOQ0U6IFJhd1Byb2Nlc3NQZXJzaXN0ZW5jZSA9ICdSQVcnO1xuZXhwb3J0IGNvbnN0IENBQ0hFRF9QUk9DRVNTX1BFUlNJU1RFTkNFOiBDYWNoZWRQcm9jZXNzUGVyc2lzdGVuY2UgPSAnQ0FDJztcbmV4cG9ydCBjb25zdCBURU1QX1BST0NFU1NfUEVSU0lTVEVOQ0U6IFRlbXBQcm9jZXNzUGVyc2lzdGVuY2UgPSAnVE1QJztcblxuZXhwb3J0IHR5cGUgUHJvY2Vzc1BlcnNpc3RlbmNlID0gUmF3UHJvY2Vzc1BlcnNpc3RlbmNlIHwgQ2FjaGVkUHJvY2Vzc1BlcnNpc3RlbmNlIHwgVGVtcFByb2Nlc3NQZXJzaXN0ZW5jZTtcblxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIHNsdWc6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgY3JlYXRlZDogc3RyaW5nO1xuICAgIG1vZGlmaWVkOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogbnVtYmVyO1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBjYXRlZ29yeTogc3RyaW5nO1xuICAgIHBlcnNpc3RlbmNlOiBQcm9jZXNzUGVyc2lzdGVuY2U7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICBpbnB1dF9zY2hlbWE6IGFueTtcbiAgICBvdXRwdXRfc2NoZW1hOiBhbnk7XG4gICAgcnVuOiBhbnk7XG4gICAgY29udHJpYnV0b3I6IENvbnRyaWJ1dG9yO1xuICAgIGN1cnJlbnRfdXNlcl9wZXJtaXNzaW9uczogSXRlbVBlcm1pc3Npb25zT2Y8UHJvY2Vzc1Blcm1pc3Npb25zPltdO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJlbGF0aW9uXG5cbi8vIFJlbGF0aW9uIGVudGl0eVxuZXhwb3J0IGludGVyZmFjZSBSZWxhdGlvbkVudGl0eSB7XG4gICAgZW50aXR5OiBudW1iZXI7XG4gICAgcG9zaXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWxhdGlvbiB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBzbHVnOiBzdHJpbmc7XG4gICAgY3JlYXRlZDogc3RyaW5nO1xuICAgIG1vZGlmaWVkOiBzdHJpbmc7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIGNvbGxlY3Rpb246IG51bWJlcjtcbiAgICBlbnRpdGllczogUmVsYXRpb25FbnRpdHlbXTtcbiAgICBwb3NpdGlvbnM6IHN0cmluZ1tdO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgY29udHJpYnV0b3I6IENvbnRyaWJ1dG9yO1xuXG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRGVzY3JpcHRvclNjaGVtYVxuXG4vLyBTY2hlbWFcbmV4cG9ydCBpbnRlcmZhY2UgQ2hvaWNlTWFwIHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRTY2hlbWEge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgY29sbGFwc2VkPzogYm9vbGVhbjtcbiAgICBoaWRkZW4/OiBib29sZWFuIHwgc3RyaW5nO1xuICAgIGRlZmF1bHQ/OiBhbnk7XG4gICAgY2hvaWNlcz86IENob2ljZU1hcFtdO1xuICAgIGFsbG93X2N1c3RvbV9jaG9pY2U/OiBib29sZWFuO1xuICAgIHZhbGlkYXRlX3JlZ2V4Pzogc3RyaW5nO1xuICAgIHNsdWc/OiB7XG4gICAgICAgIHNvdXJjZT86IHN0cmluZztcbiAgICAgICAgdW5pcXVlVmFsaWRhdG9yPzogKHNsdWc6IHN0cmluZykgPT4gUnguT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICB9O1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBncm91cD86IFNjaGVtYTtcbn1cblxuZXhwb3J0IHR5cGUgU2NoZW1hID0gRmllbGRTY2hlbWFbXTtcblxuXG4vLyBEZXNjcmlwdG9yU2NoZW1hXG5leHBvcnQgdHlwZSBEZXNjcmlwdG9yU2NoZW1hUGVybWlzc2lvbnMgPSBWaWV3UGVybWlzc2lvbiB8IEVkaXRQZXJtaXNzaW9uIHwgU2hhcmVQZXJtaXNzaW9uO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlc2NyaXB0b3JTY2hlbWFCYXNlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGNyZWF0ZWQ6IHN0cmluZztcbiAgICBtb2RpZmllZDogc3RyaW5nO1xuICAgIHNsdWc6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogbnVtYmVyO1xuICAgIHNjaGVtYTogU2NoZW1hO1xuICAgIGNvbnRyaWJ1dG9yOiBDb250cmlidXRvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXNjcmlwdG9yU2NoZW1hIGV4dGVuZHMgRGVzY3JpcHRvclNjaGVtYUJhc2Uge1xuICAgIGN1cnJlbnRfdXNlcl9wZXJtaXNzaW9uczogSXRlbVBlcm1pc3Npb25zT2Y8RGVzY3JpcHRvclNjaGVtYVBlcm1pc3Npb25zPltdO1xufVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2NhdHRlciBQbG90IEpzb25cblxuLy8gU2NhdHRlclBsb3RKc29uLlJvb3RPYmplY3QgaXMgYSB0eXBlIG9mIHByb2Nlc3Mgb3V0cHV0LiBQcm9jZXNzZXMgKGkuZS4gUm9zZTIpXG4vLyBzYXZlIGl0IHRvIGRhdGEub3V0cHV0LnNjYXR0ZXJfcGxvdC5cbmV4cG9ydCBuYW1lc3BhY2UgU2NhdHRlclBsb3RKc29uIHtcblxuICAgIGV4cG9ydCBpbnRlcmZhY2UgUm9vdE9iamVjdCB7IC8vIFRoaXMgaXMgdGhlIGFjdHVhbCB0eXBlIG9mIHRoZSBqc29uIG91dHB1dFxuICAgICAgICBwb2ludHM6IFBvaW50cztcbiAgICAgICAgbWV0YT86IE1ldGE7XG4gICAgICAgIGFubm90YXRpb25zPzogQW5ub3RhdGlvbltdO1xuICAgIH1cblxuICAgIGV4cG9ydCBpbnRlcmZhY2UgUG9pbnRzIHtcbiAgICAgICAgeF9heGlzOiBudW1iZXJbXTtcbiAgICAgICAgeV9heGlzOiBudW1iZXJbXTtcbiAgICAgICAgaXRlbXM/OiBhbnlbXTtcbiAgICB9XG5cbiAgICBleHBvcnQgaW50ZXJmYWNlIE1ldGEge1xuICAgICAgICB4X2xhYmVsPzogc3RyaW5nO1xuICAgICAgICB5X2xhYmVsPzogc3RyaW5nO1xuICAgICAgICB0ZXh0Pzogc3RyaW5nO1xuICAgICAgICBjaHJfcG9zPzogc3RyaW5nW107XG4gICAgfVxuXG4gICAgZXhwb3J0IHR5cGUgQW5ub3RhdGlvbiA9IEFubm90YXRpb25MaW5lR2VuZXJhbCB8IEFubm90YXRpb25MaW5lVmVydGljYWwgfCBBbm5vdGF0aW9uTGluZUhvcml6b250YWw7XG5cbiAgICBleHBvcnQgaW50ZXJmYWNlIEFubm90YXRpb25MaW5lR2VuZXJhbCB7XG4gICAgICAgIHR5cGU6ICdsaW5lJztcbiAgICAgICAgeDE6IG51bWJlcjtcbiAgICAgICAgeDI6IG51bWJlcjtcbiAgICAgICAgeTE6IG51bWJlcjtcbiAgICAgICAgeTI6IG51bWJlcjtcbiAgICB9XG4gICAgZXhwb3J0IGludGVyZmFjZSBBbm5vdGF0aW9uTGluZVZlcnRpY2FsIHtcbiAgICAgICAgdHlwZTogJ2xpbmVfdmVydGljYWwnO1xuICAgICAgICB4OiBudW1iZXI7XG4gICAgfVxuICAgIGV4cG9ydCBpbnRlcmZhY2UgQW5ub3RhdGlvbkxpbmVIb3Jpem9udGFsIHtcbiAgICAgICAgdHlwZTogJ2xpbmVfaG9yaXpvbnRhbCc7XG4gICAgICAgIHk6IG51bWJlcjtcbiAgICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRGF0YVxuXG5leHBvcnQgdHlwZSBEYXRhUGVybWlzc2lvbnMgPSBWaWV3UGVybWlzc2lvbiB8IEVkaXRQZXJtaXNzaW9uIHwgU2hhcmVQZXJtaXNzaW9uIHwgRG93bmxvYWRQZXJtaXNzaW9uO1xuXG5leHBvcnQgdHlwZSBVcGxvYWRpbmdEYXRhU3RhdHVzID0gJ1VQJztcbmV4cG9ydCB0eXBlIFJlc29sdmluZ0RhdGFTdGF0dXMgPSAnUkUnO1xuZXhwb3J0IHR5cGUgV2FpdGluZ0RhdGFTdGF0dXMgPSAnV1QnO1xuZXhwb3J0IHR5cGUgUHJvY2Vzc2luZ0RhdGFTdGF0dXMgPSAnUFInO1xuZXhwb3J0IHR5cGUgRG9uZURhdGFTdGF0dXMgPSAnT0snO1xuZXhwb3J0IHR5cGUgRXJyb3JEYXRhU3RhdHVzID0gJ0VSJztcbmV4cG9ydCB0eXBlIERpcnR5RGF0YVN0YXR1cyA9ICdEUic7XG5cbmV4cG9ydCBjb25zdCBVUExPQURJTkdfREFUQV9TVEFUVVM6IFVwbG9hZGluZ0RhdGFTdGF0dXMgPSAnVVAnO1xuZXhwb3J0IGNvbnN0IFJFU09MVklOR19EQVRBX1NUQVRVUzogUmVzb2x2aW5nRGF0YVN0YXR1cyA9ICdSRSc7XG5leHBvcnQgY29uc3QgV0FJVElOR19EQVRBX1NUQVRVUzogV2FpdGluZ0RhdGFTdGF0dXMgPSAnV1QnO1xuZXhwb3J0IGNvbnN0IFBST0NFU1NJTkdfREFUQV9TVEFUVVM6IFByb2Nlc3NpbmdEYXRhU3RhdHVzID0gJ1BSJztcbmV4cG9ydCBjb25zdCBET05FX0RBVEFfU1RBVFVTOiBEb25lRGF0YVN0YXR1cyA9ICdPSyc7XG5leHBvcnQgY29uc3QgRVJST1JfREFUQV9TVEFUVVM6IEVycm9yRGF0YVN0YXR1cyA9ICdFUic7XG5leHBvcnQgY29uc3QgRElSVFlfREFUQV9TVEFUVVM6IERpcnR5RGF0YVN0YXR1cyA9ICdEUic7XG5cbmV4cG9ydCB0eXBlIERhdGFTdGF0dXMgPSBVcGxvYWRpbmdEYXRhU3RhdHVzIHwgUmVzb2x2aW5nRGF0YVN0YXR1cyB8IFdhaXRpbmdEYXRhU3RhdHVzIHwgUHJvY2Vzc2luZ0RhdGFTdGF0dXMgfFxuICAgIERvbmVEYXRhU3RhdHVzIHwgRXJyb3JEYXRhU3RhdHVzIHwgRGlydHlEYXRhU3RhdHVzO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFCYXNlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGNyZWF0ZWQ6IHN0cmluZztcbiAgICBtb2RpZmllZDogc3RyaW5nO1xuICAgIHN0YXJ0ZWQ6IHN0cmluZztcbiAgICBmaW5pc2hlZDogc3RyaW5nO1xuICAgIGNoZWNrc3VtOiBzdHJpbmc7XG4gICAgc3RhdHVzOiBEYXRhU3RhdHVzO1xuICAgIHByb2Nlc3NfcHJvZ3Jlc3M6IG51bWJlcjtcbiAgICBwcm9jZXNzX3JjOiBudW1iZXI7XG4gICAgcHJvY2Vzc19pbmZvOiBzdHJpbmdbXTtcbiAgICBwcm9jZXNzX3dhcm5pbmc6IHN0cmluZ1tdO1xuICAgIHByb2Nlc3NfZXJyb3I6IHN0cmluZ1tdO1xuICAgIHByb2Nlc3NfdHlwZTogc3RyaW5nO1xuICAgIHByb2Nlc3NfaW5wdXRfc2NoZW1hOiBhbnk7XG4gICAgcHJvY2Vzc19vdXRwdXRfc2NoZW1hOiBhbnk7XG4gICAgcHJvY2Vzc19uYW1lOiBzdHJpbmc7XG4gICAgc2x1Zzogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpbnB1dDogYW55O1xuICAgIG91dHB1dDogYW55O1xuICAgIGRlc2NyaXB0b3Jfc2NoZW1hOiBEZXNjcmlwdG9yU2NoZW1hQmFzZTtcbiAgICBkZXNjcmlwdG9yOiBhbnk7XG4gICAgY29udHJpYnV0b3I6IENvbnRyaWJ1dG9yO1xuICAgIHByb2Nlc3M6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhIGV4dGVuZHMgRGF0YUJhc2Uge1xuICAgIGN1cnJlbnRfdXNlcl9wZXJtaXNzaW9uczogSXRlbVBlcm1pc3Npb25zT2Y8RGF0YVBlcm1pc3Npb25zPltdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRhKG9iamVjdDogQ29sbGVjdGlvbkJhc2UgfCBTYW1wbGVCYXNlIHwgRGF0YSk6IG9iamVjdCBpcyBEYXRhIHtcbiAgICByZXR1cm4gXy5hbGwoWydjaGVja3N1bScsICdzdGF0dXMnLCAncHJvY2VzcycsICdwcm9jZXNzX25hbWUnLCAncHJvY2Vzc190eXBlJywgJ2lucHV0JywgJ291dHB1dCcsICdjdXJyZW50X3VzZXJfcGVybWlzc2lvbnMnXSxcbiAgICAgICAgKHByb3BlcnR5KSA9PiBvYmplY3QuaGFzT3duUHJvcGVydHkocHJvcGVydHkpXG4gICAgKTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBkYXRhOmRpZmZlcmVudGlhbGV4cHJlc3Npb246XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YURpZmZlcmVudGlhbEV4cHJlc3Npb24gZXh0ZW5kcyBEYXRhIHtcbiAgICBvdXRwdXQ6IHtcbiAgICAgICAgZGVfZmlsZTogeyBmaWxlOiBzdHJpbmcsIHNpemU6IG51bWJlciB9O1xuICAgICAgICByYXc6IHsgZmlsZTogc3RyaW5nLCBzaXplOiBudW1iZXIgfTtcbiAgICAgICAgZGVfanNvbjogbnVtYmVyO1xuICAgICAgICBzb3VyY2U6IHN0cmluZztcbiAgICAgICAgc3BlY2llczogc3RyaW5nO1xuICAgIH07XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gZGF0YTpnZW5lc2V0OlxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHZW5lc2V0T3V0cHV0IHtcbiAgICBnZW5lc2V0OiB7IGZpbGU6IHN0cmluZywgc2l6ZTogbnVtYmVyIH07XG4gICAgZ2VuZXNldF9qc29uOiBudW1iZXI7IC8vID0+IERhdGFHZW5lc2V0U3RvcmFnZVxuICAgIHNvdXJjZTogc3RyaW5nO1xuICAgIHNwZWNpZXM6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR2VuZXNldCBleHRlbmRzIERhdGEge1xuICAgIG91dHB1dDogRGF0YUdlbmVzZXRPdXRwdXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdlbmVzZXRTdG9yYWdlIGV4dGVuZHMgU3RvcmFnZSB7XG4gICAganNvbjoge1xuICAgICAgICBnZW5lczogc3RyaW5nW107XG4gICAgfTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBkYXRhOmdlbmVzZXQ6dmVubjpcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR2VuZXNldFZlbm5PdXRwdXQgZXh0ZW5kcyBEYXRhR2VuZXNldE91dHB1dCB7XG4gICAgdmVubjogbnVtYmVyOyAvLyA9PiBEYXRhR2VuZXNldFZlbm5TdG9yYWdlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdlbmVzZXRWZW5uIGV4dGVuZHMgRGF0YUdlbmVzZXQge1xuICAgIG91dHB1dDogRGF0YUdlbmVzZXRWZW5uT3V0cHV0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHZW5lc2V0VmVublN0b3JhZ2UgZXh0ZW5kcyBTdG9yYWdlIHtcbiAgICBqc29uOiB7XG4gICAgICAgIHBhcmVudHM6IEFycmF5PHtcbiAgICAgICAgICAgIGlkOiBudW1iZXI7XG4gICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICBnZW5lczogc3RyaW5nW107IC8vIGdlbmVzZXRfanNvbiAuIGdlbmVzXG4gICAgICAgIH0+O1xuICAgIH07XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gZGF0YTpnb2VhOiBHZW5lIE9udG9sb2d5XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdPRW5yaWNobWVudEFuYWx5c2lzIGV4dGVuZHMgRGF0YSB7XG4gICAgb3V0cHV0OiB7XG4gICAgICAgIHRlcm1zOiBudW1iZXI7IC8vID0+IERhdGFHT0VucmljaG1lbnRBbmFseXNpc1N0b3JhZ2VcbiAgICAgICAgc291cmNlOiBzdHJpbmc7XG4gICAgICAgIHNwZWNpZXM6IHN0cmluZztcbiAgICB9O1xufVxuXG5leHBvcnQgdHlwZSBHT0VucmljaG1lbnRBc3BlY3QgPSBHT0VucmljaG1lbnROb2RlW107XG5leHBvcnQgaW50ZXJmYWNlIEdPRW5yaWNobWVudEpzb24ge1xuICAgIHRvdGFsX2dlbmVzOiBudW1iZXI7XG4gICAgZ2VuZV9hc3NvY2lhdGlvbnM6IHtcbiAgICAgICAgW2dvVGVybUlkOiBzdHJpbmddOiBzdHJpbmdbXTsgLy8gdGVybV9pZCA9PiBnZW5lX2lkc1xuICAgIH07XG4gICAgdHJlZToge1xuICAgICAgICBbYXNwZWN0U2x1Zzogc3RyaW5nXTogR09FbnJpY2htZW50QXNwZWN0LCAvLyBcIkJQXCIgfCBcIkNDXCIgfCBcIk1GXCJcbiAgICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdPRW5yaWNobWVudE5vZGUge1xuICAgIGdlbmVfaWRzOiBzdHJpbmdbXTtcbiAgICB0ZXJtX25hbWU6IHN0cmluZztcbiAgICB0ZXJtX2lkOiBzdHJpbmc7XG4gICAgcHZhbDogbnVtYmVyO1xuICAgIHNjb3JlOiBudW1iZXI7XG4gICAgbWF0Y2hlZDogbnVtYmVyOyAvLyBOdW1iZXIgb2YgZm91bmQgZWxlbWVudHMgaW4gYSBzaW5nbGUgbm9kZS5cbiAgICB0b3RhbDogbnVtYmVyOyAvLyBUb3RhbCBudW1iZXIgb2YgZWxlbWVudHMgKGluY2x1ZGluZyBjaGlsZHJlbiBub2RlcykgaW4gYSBzaW5nbGUgbm9kZS5cbiAgICBjaGlsZHJlbj86IEdPRW5yaWNobWVudE5vZGVbXTtcblxuICAgIC8vIEFkZGVkIGJ5IGZyb250ZW5kOlxuICAgIGRlcHRoPzogbnVtYmVyOyAvLyBOdW1lcmljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGxldmVsIG9mIGRlcHRoLiBVc2VkIGZvciBvZmZzZXR0aW5nIHRoZSB0ZXJtIGNvbHVtbi5cbiAgICBzb3VyY2U/OiBzdHJpbmc7XG4gICAgc3BlY2llcz86IHN0cmluZztcbiAgICBzY29yZV9wZXJjZW50YWdlPzogbnVtYmVyOyAvLyBQZXJjZW50YWdlIG9mIG1heCBzY29yZSB3aXRoaW4gR09FbnJpY2htZW50QXNwZWN0LlxuICAgIGdlbmVfYXNzb2NpYXRpb25zPzogc3RyaW5nW107IC8vIFBsdWNrZWQgZnJvbSBHT0VucmljaG1lbnRKc29uLmdlbmVfYXNzb2NpYXRpb25zLlxuICAgIGNvbGxhcHNlZD86IGJvb2xlYW47IC8vIEJvb2xlYW4gcmVwcmVzZW50YXRpb24gaWYgdGhlIHNlbGVjdGVkIGl0ZW0gaXMgaGlkZGVuLlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHT0VucmljaG1lbnRBbmFseXNpc1N0b3JhZ2UgZXh0ZW5kcyBTdG9yYWdlIHtcbiAgICBqc29uOiBHT0VucmljaG1lbnRKc29uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHT0VucmljaG1lbnRBbmFseXNpc0lucHV0IHtcbiAgICBwdmFsX3RocmVzaG9sZDogbnVtYmVyO1xuICAgIGdlbmVzOiBzdHJpbmdbXTtcbiAgICBzb3VyY2U6IHN0cmluZztcbiAgICBzcGVjaWVzOiBzdHJpbmc7XG4gICAgb250b2xvZ3k6IG51bWJlcjtcbiAgICBnYWY6IG51bWJlcjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBkYXRhOmdhZjogR0FGIGFubm90YXRpb25cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR2FmQW5ub3RhdGlvbiBleHRlbmRzIERhdGEge1xuICAgIG91dHB1dDoge1xuICAgICAgICBzb3VyY2U6IHN0cmluZztcbiAgICAgICAgc3BlY2llczogc3RyaW5nO1xuICAgICAgICBnYWY6IHsgZmlsZTogc3RyaW5nLCBzaXplOiBudW1iZXIgfTtcbiAgICAgICAgZ2FmX29iajogeyBmaWxlOiBzdHJpbmcsIHNpemU6IG51bWJlciB9O1xuICAgIH07XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gZGF0YTp2YXJpYW50dGFibGU6XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVZhcmlhbnRUYWJsZSBleHRlbmRzIERhdGEge1xuICAgIG91dHB1dDoge1xuICAgICAgICB2YXJpYW50X3RhYmxlOiBudW1iZXI7IC8vID0+IERhdGFWYXJpYW50VGFibGVTdG9yYWdlXG4gICAgfTtcbn1cblxuZXhwb3J0IHR5cGUgRGF0YVZhcmlhbnRUYWJsZUpzb25WYWx1ZUNvbHVtbiA9IHN0cmluZzsgLy8gRXhhbXBsZTogTVNINl9leG9uNV9GMS8yXG5leHBvcnQgdHlwZSBEYXRhVmFyaWFudFRhYmxlSnNvbkRlbGltaXRlZENvbHVtbiA9IHN0cmluZzsgLy8gRXhhbXBsZTogRFA0PTQ2LDQxLDExLDE2O1NCPTRcbmV4cG9ydCB0eXBlIERhdGFWYXJpYW50VGFibGVKc29uVXJsc0NvbHVtbiA9IFtzdHJpbmcsIHN0cmluZ11bXTsgLy8gRXhhbXBsZTogW1snR2VuZScsICdodHRwOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvZ2VuZS8/dGVybT1nZW5lJ11dXG5leHBvcnQgdHlwZSBEYXRhVmFyaWFudFRhYmxlSnNvbkNvbHVtbiA9IERhdGFWYXJpYW50VGFibGVKc29uVmFsdWVDb2x1bW4gfFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhVmFyaWFudFRhYmxlSnNvbkRlbGltaXRlZENvbHVtbiB8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFWYXJpYW50VGFibGVKc29uVXJsc0NvbHVtbjtcbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVZhcmlhbnRUYWJsZVJvdyB7XG4gICAgY29sdW1uczogRGF0YVZhcmlhbnRUYWJsZUpzb25Db2x1bW5bXTtcbiAgICBwb3M6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhVmFyaWFudFRhYmxlSnNvbiB7IC8vIGFwaS10eXBlY2hlY2s6YW1wbGljb25fdGFibGVfb3V0cHV0Lmpzb24uZ3pcbiAgICBjb2x1bW5fdHlwZXM6IEFycmF5PCd2YWx1ZScgfCAnZGVsaW1pdGVkJyB8ICd1cmxzJz47XG4gICAgaGVhZGVyczogc3RyaW5nW107XG4gICAgbGFiZWxzOiBzdHJpbmdbXTtcbiAgICBkYXRhOiBEYXRhVmFyaWFudFRhYmxlUm93W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVZhcmlhbnRUYWJsZVN0b3JhZ2UgZXh0ZW5kcyBTdG9yYWdlIHtcbiAgICBqc29uOiBEYXRhVmFyaWFudFRhYmxlSnNvbjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb2xsZWN0aW9uXG5cbmV4cG9ydCB0eXBlIENvbGxlY3Rpb25QZXJtaXNzaW9ucyA9IFZpZXdQZXJtaXNzaW9uIHwgRWRpdFBlcm1pc3Npb24gfCBTaGFyZVBlcm1pc3Npb24gfFxuICAgIERvd25sb2FkUGVybWlzc2lvbiB8IEFkZFBlcm1pc3Npb247XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGlvbkJhc2Uge1xuICAgIGlkOiBudW1iZXI7XG4gICAgY3JlYXRlZDogc3RyaW5nO1xuICAgIG1vZGlmaWVkOiBzdHJpbmc7XG4gICAgc2x1Zzogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIHNldHRpbmdzOiBhbnk7XG4gICAgZGVzY3JpcHRvcl9zY2hlbWE6IERlc2NyaXB0b3JTY2hlbWFCYXNlO1xuICAgIGRlc2NyaXB0b3I6IGFueTtcbiAgICBjb250cmlidXRvcjogQ29udHJpYnV0b3I7XG4gICAgY3VycmVudF91c2VyX3Blcm1pc3Npb25zOiBJdGVtUGVybWlzc2lvbnNPZjxDb2xsZWN0aW9uUGVybWlzc2lvbnM+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGlvbiBleHRlbmRzIENvbGxlY3Rpb25CYXNlIHtcbiAgICBkYXRhOiBudW1iZXJbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29sbGVjdGlvbihvYmplY3Q6IENvbGxlY3Rpb25CYXNlIHwgU2FtcGxlQmFzZSB8IERhdGEpOiBvYmplY3QgaXMgQ29sbGVjdGlvbiB8IENvbGxlY3Rpb25IeWRyYXRlRGF0YSB7XG4gICAgLy8gQ29sbGVjdGlvbkJhc2UgZG9lc24ndCBjb250YWluIGBkYXRhYCBwcm9wZXJ0eSBpbiBpdCdzIGludGVyZmFjZSwgYnV0XG4gICAgLy8gQ29sbGVjdGlvbiBhbmQgQ29sbGVjdGlvbkh5ZHJhdGVEYXRhIGRvLlxuICAgIHJldHVybiBvYmplY3QuaGFzT3duUHJvcGVydHkoJ2Rlc2NyaXB0aW9uJykgJiZcbiAgICAgICAgb2JqZWN0Lmhhc093blByb3BlcnR5KCdzZXR0aW5ncycpICYmXG4gICAgICAgIG9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnZGF0YScpICYmXG4gICAgICAgICFvYmplY3QuaGFzT3duUHJvcGVydHkoJ2Rlc2NyaXB0b3JfY29tcGxldGVkJyk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGlvbkh5ZHJhdGVEYXRhIGV4dGVuZHMgQ29sbGVjdGlvbkJhc2Uge1xuICAgIGRhdGE6IERhdGFCYXNlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2FtcGxlQmFzZSBleHRlbmRzIENvbGxlY3Rpb25CYXNlIHtcbiAgICBkZXNjcmlwdG9yX2NvbXBsZXRlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2FtcGxlQmFzZShvYmplY3Q6IENvbGxlY3Rpb25CYXNlIHwgU2FtcGxlQmFzZSB8IERhdGEpOiBvYmplY3QgaXMgU2FtcGxlQmFzZSB7XG4gICAgcmV0dXJuIG9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnZGVzY3JpcHRpb24nKSAmJlxuICAgICAgICBvYmplY3QuaGFzT3duUHJvcGVydHkoJ3NldHRpbmdzJykgJiZcbiAgICAgICAgb2JqZWN0Lmhhc093blByb3BlcnR5KCdkYXRhJykgJiZcbiAgICAgICAgb2JqZWN0Lmhhc093blByb3BlcnR5KCdkZXNjcmlwdG9yX2NvbXBsZXRlZCcpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNhbXBsZSBleHRlbmRzIENvbGxlY3Rpb24sIFNhbXBsZUJhc2Uge1xuICAgIGRlc2NyaXB0b3JfY29tcGxldGVkOiB0cnVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNhbXBsZUh5ZHJhdGVEYXRhIGV4dGVuZHMgQ29sbGVjdGlvbkh5ZHJhdGVEYXRhLCBTYW1wbGVCYXNlIHtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVzYW1wbGUgZXh0ZW5kcyBDb2xsZWN0aW9uLCBTYW1wbGVCYXNlIHtcbiAgICBkZXNjcmlwdG9yX2NvbXBsZXRlZDogZmFsc2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2FtcGxlSHlkcmF0ZURhdGEgZXh0ZW5kcyBDb2xsZWN0aW9uSHlkcmF0ZURhdGEsIFNhbXBsZUJhc2Uge1xuICAgIGRlc2NyaXB0b3JfY29tcGxldGVkOiBmYWxzZTtcbn1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFN0b3JhZ2VcblxuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIHNsdWc6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGF0YTogbnVtYmVyO1xuICAgIGpzb246IGFueTtcbiAgICBjb250cmlidXRvcjogQ29udHJpYnV0b3I7XG4gICAgY3JlYXRlZDogc3RyaW5nO1xuICAgIG1vZGlmaWVkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2FtcGxlQ2x1c3RlcmluZyB7IC8vIGFwaS10eXBlY2hlY2s6c2FtcGxlX2NsdXN0ZXJfZGF0YS5qc29uLmd6XG4gICAgc2FtcGxlX2lkczogXy5EaWN0aW9uYXJ5PHsgaWQ6IG51bWJlciB9PjtcbiAgICBvcmRlcjogbnVtYmVyW107XG4gICAgbGlua2FnZTogbnVtYmVyW11bXTsgLy8gW1tub2RlMSwgbm9kZTIsIGRpc3RhbmNlLCBudW1iZXIgb2Ygc2FtcGxlc11dXG4gICAgemVyb19zYW1wbGVfaWRzOiBudW1iZXJbXTsgLy8gc2FtcGxlIGlkcyB3aXRoIG5vIGV4cHJlc3Npb25zXG4gICAgemVyb19nZW5lX3N5bWJvbHM6IHN0cmluZ1tdOyAvLyBnZW5lIHN5bWJvbHMgd2l0aCBubyBleHByZXNzaW9uc1xuICAgIG1pc3NpbmdfZ2VuZV9zeW1ib2xzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZW5lQ2x1c3RlcmluZyB7IC8vIGFwaS10eXBlY2hlY2s6Z2VuZV9jbHVzdGVyX2RhdGEuanNvbi5nelxuICAgIGdlbmVfc3ltYm9sczogXy5EaWN0aW9uYXJ5PHsgZ2VuZTogc3RyaW5nIH0+O1xuICAgIG9yZGVyOiBudW1iZXJbXTtcbiAgICBsaW5rYWdlOiBudW1iZXJbXVtdOyAvLyBbW25vZGUxLCBub2RlMiwgZGlzdGFuY2UsIG51bWJlciBvZiBnZW5lc11dXG4gICAgemVyb19zYW1wbGVfaWRzOiBudW1iZXJbXTsgLy8gc2FtcGxlIGlkcyB3aXRoIG5vIGV4cHJlc3Npb25zXG4gICAgemVyb19nZW5lX3N5bWJvbHM6IHN0cmluZ1tdOyAvLyBnZW5lIHN5bWJvbHMgd2l0aCBubyBleHByZXNzaW9uc1xuICAgIG1pc3NpbmdfZ2VuZV9zeW1ib2xzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQQ0EgeyAvLyBhcGktdHlwZWNoZWNrOnBjYV9wbG90X25jYmkuanNvbi5nelxuICAgIGV4cGxhaW5lZF92YXJpYW5jZV9yYXRpb3M6IG51bWJlcltdO1xuICAgIGFsbF9leHBsYWluZWRfdmFyaWFuY2VfcmF0aW9zOiBudW1iZXJbXTtcbiAgICBhbGxfY29tcG9uZW50czogW3N0cmluZywgbnVtYmVyXVtdW107XG4gICAgY29tcG9uZW50czogW3N0cmluZywgbnVtYmVyXVtdW107XG4gICAgemVyb19nZW5lX3N5bWJvbHM6IHN0cmluZ1tdOyAvLyBnZW5lIGlkcyB3aXRoIG5vIGV4cHJlc3Npb25zXG4gICAgZmxvdDoge1xuICAgICAgICB4bGFiZWw6IHN0cmluZztcbiAgICAgICAgeWxhYmVsOiBzdHJpbmc7XG4gICAgICAgIGRhdGE6IG51bWJlcltdW107XG4gICAgICAgIHNhbXBsZV9pZHM6IHN0cmluZ1tdO1xuICAgIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUUNTdG9yYWdlIGV4dGVuZHMgU3RvcmFnZSB7XG4gICAganNvbjoge1xuICAgICAgICBzdGF0dXM6ICdQQVNTJyB8ICdGQUlMJyB8ICdXQVJOSU5HJyxcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIH07XG59XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBVc2VyXG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICB1c2VybmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgZmlyc3RfbmFtZTogc3RyaW5nO1xuICAgIGxhc3RfbmFtZTogc3RyaW5nO1xuICAgIGpvYl90aXRsZTogc3RyaW5nO1xuICAgIGNvbXBhbnk6IHN0cmluZztcbiAgICBkZXBhcnRtZW50OiBzdHJpbmc7XG4gICAgbG9jYXRpb246IHN0cmluZztcbiAgICBsYWI6IHN0cmluZztcbiAgICBwaG9uZV9udW1iZXI6IHN0cmluZztcbiAgICBsYXN0X2xvZ2luOiBzdHJpbmc7XG4gICAgZGF0ZV9qb2luZWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dpblJlc3BvbnNlIHtcbiAgICBrZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dvdXRSZXNwb25zZSB7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQWNjb3VudEluZm9ybWF0aW9uIHtcbiAgICB1c2VybmFtZTogc3RyaW5nO1xuICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBmaXJzdF9uYW1lOiBzdHJpbmc7XG4gICAgbGFzdF9uYW1lOiBzdHJpbmc7XG4gICAgam9iX3RpdGxlPzogc3RyaW5nO1xuICAgIGNvbXBhbnk/OiBzdHJpbmc7XG4gICAgZGVwYXJ0bWVudD86IHN0cmluZztcbiAgICBsb2NhdGlvbj86IHN0cmluZztcbiAgICBsYWI/OiBzdHJpbmc7XG4gICAgcGhvbmVfbnVtYmVyPzogc3RyaW5nO1xuICAgIG5ld3NsZXR0ZXI/OiBib29sZWFuO1xuICAgIGNvbW11bml0eT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY3RpdmF0ZUFjY291bnRSZXNwb25zZSB7XG4gICAgdXNlcm5hbWU6IHN0cmluZztcbn1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEZpbGVcblxuZXhwb3J0IGludGVyZmFjZSBEb3dubG9hZCB7XG4gICAgZGF0YTogc3RyaW5nO1xufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGkvdHlwZXMvcmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7QUFHSCwwQkFBNEI7QUF5QjVCLDZCQUF1QyxRQUEyQjtJQUM5RCxNQUFNLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRkQsa0RBRUM7QUFzQlksUUFBQSxnQkFBZ0IsR0FBb0IsT0FBTyxDQUFDO0FBQzVDLFFBQUEsZ0JBQWdCLEdBQW9CLE9BQU8sQ0FBQztBQUM1QyxRQUFBLGVBQWUsR0FBbUIsTUFBTSxDQUFDO0FBQ3pDLFFBQUEsaUJBQWlCLEdBQXFCLE1BQU0sQ0FBQztBQUM3QyxRQUFBLGNBQWMsR0FBa0IsS0FBSyxDQUFDO0FBQ3RDLFFBQUEsbUJBQW1CLEdBQXVCLFVBQVUsQ0FBQztBQUNyRCxRQUFBLGVBQWUsR0FBbUIsTUFBTSxDQUFDO0FBVXpDLFFBQUEsc0JBQXNCLEdBQXlCLFFBQVEsQ0FBQztBQUN4RCxRQUFBLHFCQUFxQixHQUF3QixPQUFPLENBQUM7QUFDckQsUUFBQSxvQkFBb0IsR0FBdUIsTUFBTSxDQUFDO0FBa0RsRCxRQUFBLHVCQUF1QixHQUEwQixLQUFLLENBQUM7QUFDdkQsUUFBQSwwQkFBMEIsR0FBNkIsS0FBSyxDQUFDO0FBQzdELFFBQUEsd0JBQXdCLEdBQTJCLEtBQUssQ0FBQztBQXlKekQsUUFBQSxxQkFBcUIsR0FBd0IsSUFBSSxDQUFDO0FBQ2xELFFBQUEscUJBQXFCLEdBQXdCLElBQUksQ0FBQztBQUNsRCxRQUFBLG1CQUFtQixHQUFzQixJQUFJLENBQUM7QUFDOUMsUUFBQSxzQkFBc0IsR0FBeUIsSUFBSSxDQUFDO0FBQ3BELFFBQUEsZ0JBQWdCLEdBQW1CLElBQUksQ0FBQztBQUN4QyxRQUFBLGlCQUFpQixHQUFvQixJQUFJLENBQUM7QUFDMUMsUUFBQSxpQkFBaUIsR0FBb0IsSUFBSSxDQUFDO0FBcUN2RCxnQkFBdUIsTUFBMEM7SUFDN0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsMEJBQTBCLENBQUMsRUFDekgsVUFBQyxRQUFRLElBQUssT0FBQSxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUEvQixDQUErQixDQUNoRCxDQUFDO0FBQ04sQ0FBQztBQUpELHdCQUlDO0FBaUxELHNCQUE2QixNQUEwQztJQUNuRSx3RUFBd0U7SUFDeEUsMkNBQTJDO0lBQzNDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQztRQUN2QyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztRQUNqQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUM3QixDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBUEQsb0NBT0M7QUFVRCxzQkFBNkIsTUFBMEM7SUFDbkUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBTEQsb0NBS0MiLCJmaWxlIjoiYXBpL3R5cGVzL3Jlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogVHlwZSBkZWZpbml0aW9uc1xuICpcbiAqIEhlcmUgaXMgZGVmaW5lZCBldmVyeXRoaW5nIHRoZSBBUEkgcmV0dXJucy5cbiAqL1xuXG5pbXBvcnQgKiBhcyBSeCBmcm9tICdyeCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCBEaWN0aW9uYXJ5ID0gXy5EaWN0aW9uYXJ5O1xuaW1wb3J0IE51bWVyaWNEaWN0aW9uYXJ5ID0gXy5OdW1lcmljRGljdGlvbmFyeTtcblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFF1ZXJ5XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnkge1xuICAgIGxpbWl0PzogbnVtYmVyO1xuICAgIG9mZnNldD86IG51bWJlcjtcbiAgICBvcmRlcmluZz86IHN0cmluZzsgLy8gJy1maWVsZDEsLWZpZWxkMixmaWVsZDMnXG4gICAgZmllbGRzPzogc3RyaW5nO1xuICAgIFtwcm9wZXJ0eU5hbWU6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeU9iamVjdCBleHRlbmRzIFF1ZXJ5IHtcbiAgICBoeWRyYXRlX2RhdGE/OiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5T2JqZWN0SHlkcmF0ZURhdGEgZXh0ZW5kcyBRdWVyeSB7XG4gICAgaHlkcmF0ZV9kYXRhOiAnMSc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Jlc3BvbnNlUGFnaW5hdGVkPFQ+KHJlc3BvbnNlOiBUIHwgeyByZXN1bHRzOiBUfSk6IHJlc3BvbnNlIGlzIHsgcmVzdWx0czogVCB9IHtcbiAgICByZXR1cm4gcmVzcG9uc2UuaGFzT3duUHJvcGVydHkoJ3Jlc3VsdHMnKTtcbn1cblxuLy8gTGltaXRPZmZzZXRQYWdpbmF0aW9uXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRlZFJlc3BvbnNlPFQ+IHtcbiAgICBjb3VudDogbnVtYmVyO1xuICAgIG5leHQ6IHN0cmluZztcbiAgICBwcmV2aW91czogc3RyaW5nO1xuICAgIHJlc3VsdHM6IFRbXTtcbn1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBlcm1pc3Npb25zXG5cbmV4cG9ydCB0eXBlIE93bmVyUGVybWlzc2lvbiA9ICdvd25lcic7XG5leHBvcnQgdHlwZSBTaGFyZVBlcm1pc3Npb24gPSAnc2hhcmUnO1xuZXhwb3J0IHR5cGUgRWRpdFBlcm1pc3Npb24gPSAnZWRpdCc7XG5leHBvcnQgdHlwZSBEZWxldGVQZXJtaXNzaW9uID0gJ2VkaXQnOyAvLyBub3QgYSB0eXBvIChBUEkgZG9lc24ndCBzdXBwb3J0IGRlbGV0ZSBwZXJtaXNzaW9uKVxuZXhwb3J0IHR5cGUgQWRkUGVybWlzc2lvbiA9ICdhZGQnO1xuZXhwb3J0IHR5cGUgRG93bmxvYWRQZXJtaXNzaW9uID0gJ2Rvd25sb2FkJztcbmV4cG9ydCB0eXBlIFZpZXdQZXJtaXNzaW9uID0gJ3ZpZXcnO1xuXG5leHBvcnQgY29uc3QgT1dORVJfUEVSTUlTU0lPTjogT3duZXJQZXJtaXNzaW9uID0gJ293bmVyJztcbmV4cG9ydCBjb25zdCBTSEFSRV9QRVJNSVNTSU9OOiBTaGFyZVBlcm1pc3Npb24gPSAnc2hhcmUnO1xuZXhwb3J0IGNvbnN0IEVESVRfUEVSTUlTU0lPTjogRWRpdFBlcm1pc3Npb24gPSAnZWRpdCc7XG5leHBvcnQgY29uc3QgREVMRVRFX1BFUk1JU1NJT046IERlbGV0ZVBlcm1pc3Npb24gPSAnZWRpdCc7XG5leHBvcnQgY29uc3QgQUREX1BFUk1JU1NJT046IEFkZFBlcm1pc3Npb24gPSAnYWRkJztcbmV4cG9ydCBjb25zdCBET1dOTE9BRF9QRVJNSVNTSU9OOiBEb3dubG9hZFBlcm1pc3Npb24gPSAnZG93bmxvYWQnO1xuZXhwb3J0IGNvbnN0IFZJRVdfUEVSTUlTU0lPTjogVmlld1Blcm1pc3Npb24gPSAndmlldyc7XG5cbmV4cG9ydCB0eXBlIFBlcm1pc3Npb24gPSBPd25lclBlcm1pc3Npb24gfCBTaGFyZVBlcm1pc3Npb24gfCBFZGl0UGVybWlzc2lvbiB8IERlbGV0ZVBlcm1pc3Npb24gfCBBZGRQZXJtaXNzaW9uIHxcbiAgICBEb3dubG9hZFBlcm1pc3Npb24gfCBWaWV3UGVybWlzc2lvbjtcblxuXG5leHBvcnQgdHlwZSBQdWJsaWNQZXJtaXNzaW9uVHlwZSA9ICdwdWJsaWMnO1xuZXhwb3J0IHR5cGUgR3JvdXBQZXJtaXNzaW9uVHlwZSA9ICdncm91cCc7XG5leHBvcnQgdHlwZSBVc2VyUGVybWlzc2lvblR5cGUgPSAndXNlcic7XG5cbmV4cG9ydCBjb25zdCBQVUJMSUNfUEVSTUlTU0lPTl9UWVBFOiBQdWJsaWNQZXJtaXNzaW9uVHlwZSA9ICdwdWJsaWMnO1xuZXhwb3J0IGNvbnN0IEdST1VQX1BFUk1JU1NJT05fVFlQRTogR3JvdXBQZXJtaXNzaW9uVHlwZSA9ICdncm91cCc7XG5leHBvcnQgY29uc3QgVVNFUl9QRVJNSVNTSU9OX1RZUEU6IFVzZXJQZXJtaXNzaW9uVHlwZSA9ICd1c2VyJztcblxuZXhwb3J0IHR5cGUgUGVybWlzc2lvblR5cGUgPSBQdWJsaWNQZXJtaXNzaW9uVHlwZSB8IEdyb3VwUGVybWlzc2lvblR5cGUgfCBVc2VyUGVybWlzc2lvblR5cGU7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlbVBlcm1pc3Npb25zT2Y8VD4ge1xuICAgIHR5cGU6IFBlcm1pc3Npb25UeXBlO1xuICAgIHBlcm1pc3Npb25zOiBUW107XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgbmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSXRlbVBlcm1pc3Npb25zID0gSXRlbVBlcm1pc3Npb25zT2Y8UGVybWlzc2lvbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0UGVybWlzc2lvbnNSZXF1ZXN0IHtcbiAgICBwdWJsaWM/OiB7XG4gICAgICAgIGFkZD86IFBlcm1pc3Npb25bXSxcbiAgICAgICAgcmVtb3ZlPzogUGVybWlzc2lvbltdXG4gICAgfTtcbiAgICBncm91cHM/OiB7XG4gICAgICAgIGFkZD86IE51bWVyaWNEaWN0aW9uYXJ5PFBlcm1pc3Npb25bXT4gfCBEaWN0aW9uYXJ5PFBlcm1pc3Npb25bXT5cbiAgICAgICAgcmVtb3ZlPzogTnVtZXJpY0RpY3Rpb25hcnk8UGVybWlzc2lvbltdPiB8IERpY3Rpb25hcnk8UGVybWlzc2lvbltdPlxuICAgIH07XG4gICAgdXNlcnM/OiB7XG4gICAgICAgIGFkZD86IE51bWVyaWNEaWN0aW9uYXJ5PFBlcm1pc3Npb25bXT4gfCBEaWN0aW9uYXJ5PFBlcm1pc3Npb25bXT5cbiAgICAgICAgcmVtb3ZlPzogTnVtZXJpY0RpY3Rpb25hcnk8UGVybWlzc2lvbltdPiB8IERpY3Rpb25hcnk8UGVybWlzc2lvbltdPlxuICAgIH07XG4gICAgc2hhcmVfY29udGVudD86ICcwJyB8ICcxJztcbn1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENvbnRyaWJ1dG9yXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJpYnV0b3Ige1xuICAgIGlkOiBudW1iZXI7XG4gICAgdXNlcm5hbWU6IHN0cmluZztcbiAgICBmaXJzdF9uYW1lOiBzdHJpbmc7XG4gICAgbGFzdF9uYW1lOiBzdHJpbmc7XG59XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQcm9jZXNzXG5cbmV4cG9ydCB0eXBlIFByb2Nlc3NQZXJtaXNzaW9ucyA9IFZpZXdQZXJtaXNzaW9uIHwgU2hhcmVQZXJtaXNzaW9uO1xuXG5leHBvcnQgdHlwZSBSYXdQcm9jZXNzUGVyc2lzdGVuY2UgPSAnUkFXJztcbmV4cG9ydCB0eXBlIENhY2hlZFByb2Nlc3NQZXJzaXN0ZW5jZSA9ICdDQUMnO1xuZXhwb3J0IHR5cGUgVGVtcFByb2Nlc3NQZXJzaXN0ZW5jZSA9ICdUTVAnO1xuXG5leHBvcnQgY29uc3QgUkFXX1BST0NFU1NfUEVSU0lTVEVOQ0U6IFJhd1Byb2Nlc3NQZXJzaXN0ZW5jZSA9ICdSQVcnO1xuZXhwb3J0IGNvbnN0IENBQ0hFRF9QUk9DRVNTX1BFUlNJU1RFTkNFOiBDYWNoZWRQcm9jZXNzUGVyc2lzdGVuY2UgPSAnQ0FDJztcbmV4cG9ydCBjb25zdCBURU1QX1BST0NFU1NfUEVSU0lTVEVOQ0U6IFRlbXBQcm9jZXNzUGVyc2lzdGVuY2UgPSAnVE1QJztcblxuZXhwb3J0IHR5cGUgUHJvY2Vzc1BlcnNpc3RlbmNlID0gUmF3UHJvY2Vzc1BlcnNpc3RlbmNlIHwgQ2FjaGVkUHJvY2Vzc1BlcnNpc3RlbmNlIHwgVGVtcFByb2Nlc3NQZXJzaXN0ZW5jZTtcblxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIHNsdWc6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgY3JlYXRlZDogc3RyaW5nO1xuICAgIG1vZGlmaWVkOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogbnVtYmVyO1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBjYXRlZ29yeTogc3RyaW5nO1xuICAgIHBlcnNpc3RlbmNlOiBQcm9jZXNzUGVyc2lzdGVuY2U7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICBpbnB1dF9zY2hlbWE6IGFueTtcbiAgICBvdXRwdXRfc2NoZW1hOiBhbnk7XG4gICAgcnVuOiBhbnk7XG4gICAgY29udHJpYnV0b3I6IENvbnRyaWJ1dG9yO1xuICAgIGN1cnJlbnRfdXNlcl9wZXJtaXNzaW9uczogSXRlbVBlcm1pc3Npb25zT2Y8UHJvY2Vzc1Blcm1pc3Npb25zPltdO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJlbGF0aW9uXG5cbi8vIFJlbGF0aW9uIGVudGl0eVxuZXhwb3J0IGludGVyZmFjZSBSZWxhdGlvbkVudGl0eSB7XG4gICAgZW50aXR5OiBudW1iZXI7XG4gICAgcG9zaXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWxhdGlvbiB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBzbHVnOiBzdHJpbmc7XG4gICAgY3JlYXRlZDogc3RyaW5nO1xuICAgIG1vZGlmaWVkOiBzdHJpbmc7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIGNvbGxlY3Rpb246IG51bWJlcjtcbiAgICBlbnRpdGllczogUmVsYXRpb25FbnRpdHlbXTtcbiAgICBwb3NpdGlvbnM6IHN0cmluZ1tdO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgY29udHJpYnV0b3I6IENvbnRyaWJ1dG9yO1xuXG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRGVzY3JpcHRvclNjaGVtYVxuXG4vLyBTY2hlbWFcbmV4cG9ydCBpbnRlcmZhY2UgQ2hvaWNlTWFwIHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRTY2hlbWEge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgY29sbGFwc2VkPzogYm9vbGVhbjtcbiAgICBoaWRkZW4/OiBib29sZWFuIHwgc3RyaW5nO1xuICAgIGRlZmF1bHQ/OiBhbnk7XG4gICAgY2hvaWNlcz86IENob2ljZU1hcFtdO1xuICAgIGFsbG93X2N1c3RvbV9jaG9pY2U/OiBib29sZWFuO1xuICAgIHZhbGlkYXRlX3JlZ2V4Pzogc3RyaW5nO1xuICAgIHNsdWc/OiB7XG4gICAgICAgIHNvdXJjZT86IHN0cmluZztcbiAgICAgICAgdW5pcXVlVmFsaWRhdG9yPzogKHNsdWc6IHN0cmluZykgPT4gUnguT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICB9O1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBncm91cD86IFNjaGVtYTtcbn1cblxuZXhwb3J0IHR5cGUgU2NoZW1hID0gRmllbGRTY2hlbWFbXTtcblxuXG4vLyBEZXNjcmlwdG9yU2NoZW1hXG5leHBvcnQgdHlwZSBEZXNjcmlwdG9yU2NoZW1hUGVybWlzc2lvbnMgPSBWaWV3UGVybWlzc2lvbiB8IEVkaXRQZXJtaXNzaW9uIHwgU2hhcmVQZXJtaXNzaW9uO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlc2NyaXB0b3JTY2hlbWFCYXNlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGNyZWF0ZWQ6IHN0cmluZztcbiAgICBtb2RpZmllZDogc3RyaW5nO1xuICAgIHNsdWc6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogbnVtYmVyO1xuICAgIHNjaGVtYTogU2NoZW1hO1xuICAgIGNvbnRyaWJ1dG9yOiBDb250cmlidXRvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXNjcmlwdG9yU2NoZW1hIGV4dGVuZHMgRGVzY3JpcHRvclNjaGVtYUJhc2Uge1xuICAgIGN1cnJlbnRfdXNlcl9wZXJtaXNzaW9uczogSXRlbVBlcm1pc3Npb25zT2Y8RGVzY3JpcHRvclNjaGVtYVBlcm1pc3Npb25zPltdO1xufVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2NhdHRlciBQbG90IEpzb25cblxuLy8gU2NhdHRlclBsb3RKc29uLlJvb3RPYmplY3QgaXMgYSB0eXBlIG9mIHByb2Nlc3Mgb3V0cHV0LiBQcm9jZXNzZXMgKGkuZS4gUm9zZTIpXG4vLyBzYXZlIGl0IHRvIGRhdGEub3V0cHV0LnNjYXR0ZXJfcGxvdC5cbmV4cG9ydCBuYW1lc3BhY2UgU2NhdHRlclBsb3RKc29uIHtcblxuICAgIGV4cG9ydCBpbnRlcmZhY2UgUm9vdE9iamVjdCB7IC8vIFRoaXMgaXMgdGhlIGFjdHVhbCB0eXBlIG9mIHRoZSBqc29uIG91dHB1dFxuICAgICAgICBwb2ludHM6IFBvaW50cztcbiAgICAgICAgbWV0YT86IE1ldGE7XG4gICAgICAgIGFubm90YXRpb25zPzogQW5ub3RhdGlvbltdO1xuICAgIH1cblxuICAgIGV4cG9ydCBpbnRlcmZhY2UgUG9pbnRzIHtcbiAgICAgICAgeF9heGlzOiBudW1iZXJbXTtcbiAgICAgICAgeV9heGlzOiBudW1iZXJbXTtcbiAgICAgICAgaXRlbXM/OiBhbnlbXTtcbiAgICB9XG5cbiAgICBleHBvcnQgaW50ZXJmYWNlIE1ldGEge1xuICAgICAgICB4X2xhYmVsPzogc3RyaW5nO1xuICAgICAgICB5X2xhYmVsPzogc3RyaW5nO1xuICAgICAgICB0ZXh0Pzogc3RyaW5nO1xuICAgICAgICBjaHJfcG9zPzogc3RyaW5nW107XG4gICAgfVxuXG4gICAgZXhwb3J0IHR5cGUgQW5ub3RhdGlvbiA9IEFubm90YXRpb25MaW5lR2VuZXJhbCB8IEFubm90YXRpb25MaW5lVmVydGljYWwgfCBBbm5vdGF0aW9uTGluZUhvcml6b250YWw7XG5cbiAgICBleHBvcnQgaW50ZXJmYWNlIEFubm90YXRpb25MaW5lR2VuZXJhbCB7XG4gICAgICAgIHR5cGU6ICdsaW5lJztcbiAgICAgICAgeDE6IG51bWJlcjtcbiAgICAgICAgeDI6IG51bWJlcjtcbiAgICAgICAgeTE6IG51bWJlcjtcbiAgICAgICAgeTI6IG51bWJlcjtcbiAgICB9XG4gICAgZXhwb3J0IGludGVyZmFjZSBBbm5vdGF0aW9uTGluZVZlcnRpY2FsIHtcbiAgICAgICAgdHlwZTogJ2xpbmVfdmVydGljYWwnO1xuICAgICAgICB4OiBudW1iZXI7XG4gICAgfVxuICAgIGV4cG9ydCBpbnRlcmZhY2UgQW5ub3RhdGlvbkxpbmVIb3Jpem9udGFsIHtcbiAgICAgICAgdHlwZTogJ2xpbmVfaG9yaXpvbnRhbCc7XG4gICAgICAgIHk6IG51bWJlcjtcbiAgICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRGF0YVxuXG5leHBvcnQgdHlwZSBEYXRhUGVybWlzc2lvbnMgPSBWaWV3UGVybWlzc2lvbiB8IEVkaXRQZXJtaXNzaW9uIHwgU2hhcmVQZXJtaXNzaW9uIHwgRG93bmxvYWRQZXJtaXNzaW9uO1xuXG5leHBvcnQgdHlwZSBVcGxvYWRpbmdEYXRhU3RhdHVzID0gJ1VQJztcbmV4cG9ydCB0eXBlIFJlc29sdmluZ0RhdGFTdGF0dXMgPSAnUkUnO1xuZXhwb3J0IHR5cGUgV2FpdGluZ0RhdGFTdGF0dXMgPSAnV1QnO1xuZXhwb3J0IHR5cGUgUHJvY2Vzc2luZ0RhdGFTdGF0dXMgPSAnUFInO1xuZXhwb3J0IHR5cGUgRG9uZURhdGFTdGF0dXMgPSAnT0snO1xuZXhwb3J0IHR5cGUgRXJyb3JEYXRhU3RhdHVzID0gJ0VSJztcbmV4cG9ydCB0eXBlIERpcnR5RGF0YVN0YXR1cyA9ICdEUic7XG5cbmV4cG9ydCBjb25zdCBVUExPQURJTkdfREFUQV9TVEFUVVM6IFVwbG9hZGluZ0RhdGFTdGF0dXMgPSAnVVAnO1xuZXhwb3J0IGNvbnN0IFJFU09MVklOR19EQVRBX1NUQVRVUzogUmVzb2x2aW5nRGF0YVN0YXR1cyA9ICdSRSc7XG5leHBvcnQgY29uc3QgV0FJVElOR19EQVRBX1NUQVRVUzogV2FpdGluZ0RhdGFTdGF0dXMgPSAnV1QnO1xuZXhwb3J0IGNvbnN0IFBST0NFU1NJTkdfREFUQV9TVEFUVVM6IFByb2Nlc3NpbmdEYXRhU3RhdHVzID0gJ1BSJztcbmV4cG9ydCBjb25zdCBET05FX0RBVEFfU1RBVFVTOiBEb25lRGF0YVN0YXR1cyA9ICdPSyc7XG5leHBvcnQgY29uc3QgRVJST1JfREFUQV9TVEFUVVM6IEVycm9yRGF0YVN0YXR1cyA9ICdFUic7XG5leHBvcnQgY29uc3QgRElSVFlfREFUQV9TVEFUVVM6IERpcnR5RGF0YVN0YXR1cyA9ICdEUic7XG5cbmV4cG9ydCB0eXBlIERhdGFTdGF0dXMgPSBVcGxvYWRpbmdEYXRhU3RhdHVzIHwgUmVzb2x2aW5nRGF0YVN0YXR1cyB8IFdhaXRpbmdEYXRhU3RhdHVzIHwgUHJvY2Vzc2luZ0RhdGFTdGF0dXMgfFxuICAgIERvbmVEYXRhU3RhdHVzIHwgRXJyb3JEYXRhU3RhdHVzIHwgRGlydHlEYXRhU3RhdHVzO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFCYXNlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGNyZWF0ZWQ6IHN0cmluZztcbiAgICBtb2RpZmllZDogc3RyaW5nO1xuICAgIHN0YXJ0ZWQ6IHN0cmluZztcbiAgICBmaW5pc2hlZDogc3RyaW5nO1xuICAgIGNoZWNrc3VtOiBzdHJpbmc7XG4gICAgc3RhdHVzOiBEYXRhU3RhdHVzO1xuICAgIHByb2Nlc3NfcHJvZ3Jlc3M6IG51bWJlcjtcbiAgICBwcm9jZXNzX3JjOiBudW1iZXI7XG4gICAgcHJvY2Vzc19pbmZvOiBzdHJpbmdbXTtcbiAgICBwcm9jZXNzX3dhcm5pbmc6IHN0cmluZ1tdO1xuICAgIHByb2Nlc3NfZXJyb3I6IHN0cmluZ1tdO1xuICAgIHByb2Nlc3NfdHlwZTogc3RyaW5nO1xuICAgIHByb2Nlc3NfaW5wdXRfc2NoZW1hOiBhbnk7XG4gICAgcHJvY2Vzc19vdXRwdXRfc2NoZW1hOiBhbnk7XG4gICAgcHJvY2Vzc19zbHVnOiBzdHJpbmc7XG4gICAgcHJvY2Vzc19uYW1lOiBzdHJpbmc7XG4gICAgc2x1Zzogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpbnB1dDogYW55O1xuICAgIG91dHB1dDogYW55O1xuICAgIGRlc2NyaXB0b3Jfc2NoZW1hOiBEZXNjcmlwdG9yU2NoZW1hQmFzZTtcbiAgICBkZXNjcmlwdG9yOiBhbnk7XG4gICAgY29udHJpYnV0b3I6IENvbnRyaWJ1dG9yO1xuICAgIHByb2Nlc3M6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhIGV4dGVuZHMgRGF0YUJhc2Uge1xuICAgIGN1cnJlbnRfdXNlcl9wZXJtaXNzaW9uczogSXRlbVBlcm1pc3Npb25zT2Y8RGF0YVBlcm1pc3Npb25zPltdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRhKG9iamVjdDogQ29sbGVjdGlvbkJhc2UgfCBTYW1wbGVCYXNlIHwgRGF0YSk6IG9iamVjdCBpcyBEYXRhIHtcbiAgICByZXR1cm4gXy5hbGwoWydjaGVja3N1bScsICdzdGF0dXMnLCAncHJvY2VzcycsICdwcm9jZXNzX25hbWUnLCAncHJvY2Vzc190eXBlJywgJ2lucHV0JywgJ291dHB1dCcsICdjdXJyZW50X3VzZXJfcGVybWlzc2lvbnMnXSxcbiAgICAgICAgKHByb3BlcnR5KSA9PiBvYmplY3QuaGFzT3duUHJvcGVydHkocHJvcGVydHkpXG4gICAgKTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBkYXRhOmRpZmZlcmVudGlhbGV4cHJlc3Npb246XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YURpZmZlcmVudGlhbEV4cHJlc3Npb24gZXh0ZW5kcyBEYXRhIHtcbiAgICBvdXRwdXQ6IHtcbiAgICAgICAgZGVfZmlsZTogeyBmaWxlOiBzdHJpbmcsIHNpemU6IG51bWJlciB9O1xuICAgICAgICByYXc6IHsgZmlsZTogc3RyaW5nLCBzaXplOiBudW1iZXIgfTtcbiAgICAgICAgZGVfanNvbjogbnVtYmVyO1xuICAgICAgICBzb3VyY2U6IHN0cmluZztcbiAgICAgICAgc3BlY2llczogc3RyaW5nO1xuICAgIH07XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gZGF0YTpnZW5lc2V0OlxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHZW5lc2V0T3V0cHV0IHtcbiAgICBnZW5lc2V0OiB7IGZpbGU6IHN0cmluZywgc2l6ZTogbnVtYmVyIH07XG4gICAgZ2VuZXNldF9qc29uOiBudW1iZXI7IC8vID0+IERhdGFHZW5lc2V0U3RvcmFnZVxuICAgIHNvdXJjZTogc3RyaW5nO1xuICAgIHNwZWNpZXM6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR2VuZXNldCBleHRlbmRzIERhdGEge1xuICAgIG91dHB1dDogRGF0YUdlbmVzZXRPdXRwdXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdlbmVzZXRTdG9yYWdlIGV4dGVuZHMgU3RvcmFnZSB7XG4gICAganNvbjoge1xuICAgICAgICBnZW5lczogc3RyaW5nW107XG4gICAgfTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBkYXRhOmdlbmVzZXQ6dmVubjpcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR2VuZXNldFZlbm5PdXRwdXQgZXh0ZW5kcyBEYXRhR2VuZXNldE91dHB1dCB7XG4gICAgdmVubjogbnVtYmVyOyAvLyA9PiBEYXRhR2VuZXNldFZlbm5TdG9yYWdlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdlbmVzZXRWZW5uIGV4dGVuZHMgRGF0YUdlbmVzZXQge1xuICAgIG91dHB1dDogRGF0YUdlbmVzZXRWZW5uT3V0cHV0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHZW5lc2V0VmVublN0b3JhZ2UgZXh0ZW5kcyBTdG9yYWdlIHtcbiAgICBqc29uOiB7XG4gICAgICAgIHBhcmVudHM6IEFycmF5PHtcbiAgICAgICAgICAgIGlkOiBudW1iZXI7XG4gICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICBnZW5lczogc3RyaW5nW107IC8vIGdlbmVzZXRfanNvbiAuIGdlbmVzXG4gICAgICAgIH0+O1xuICAgIH07XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gZGF0YTpnb2VhOiBHZW5lIE9udG9sb2d5XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdPRW5yaWNobWVudEFuYWx5c2lzIGV4dGVuZHMgRGF0YSB7XG4gICAgb3V0cHV0OiB7XG4gICAgICAgIHRlcm1zOiBudW1iZXI7IC8vID0+IERhdGFHT0VucmljaG1lbnRBbmFseXNpc1N0b3JhZ2VcbiAgICAgICAgc291cmNlOiBzdHJpbmc7XG4gICAgICAgIHNwZWNpZXM6IHN0cmluZztcbiAgICB9O1xufVxuXG5leHBvcnQgdHlwZSBHT0VucmljaG1lbnRBc3BlY3QgPSBHT0VucmljaG1lbnROb2RlW107XG5leHBvcnQgaW50ZXJmYWNlIEdPRW5yaWNobWVudEpzb24ge1xuICAgIHRvdGFsX2dlbmVzOiBudW1iZXI7XG4gICAgZ2VuZV9hc3NvY2lhdGlvbnM6IHtcbiAgICAgICAgW2dvVGVybUlkOiBzdHJpbmddOiBzdHJpbmdbXTsgLy8gdGVybV9pZCA9PiBnZW5lX2lkc1xuICAgIH07XG4gICAgdHJlZToge1xuICAgICAgICBbYXNwZWN0U2x1Zzogc3RyaW5nXTogR09FbnJpY2htZW50QXNwZWN0LCAvLyBcIkJQXCIgfCBcIkNDXCIgfCBcIk1GXCJcbiAgICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdPRW5yaWNobWVudE5vZGUge1xuICAgIGdlbmVfaWRzOiBzdHJpbmdbXTtcbiAgICB0ZXJtX25hbWU6IHN0cmluZztcbiAgICB0ZXJtX2lkOiBzdHJpbmc7XG4gICAgcHZhbDogbnVtYmVyO1xuICAgIHNjb3JlOiBudW1iZXI7XG4gICAgbWF0Y2hlZDogbnVtYmVyOyAvLyBOdW1iZXIgb2YgZm91bmQgZWxlbWVudHMgaW4gYSBzaW5nbGUgbm9kZS5cbiAgICB0b3RhbDogbnVtYmVyOyAvLyBUb3RhbCBudW1iZXIgb2YgZWxlbWVudHMgKGluY2x1ZGluZyBjaGlsZHJlbiBub2RlcykgaW4gYSBzaW5nbGUgbm9kZS5cbiAgICBjaGlsZHJlbj86IEdPRW5yaWNobWVudE5vZGVbXTtcblxuICAgIC8vIEFkZGVkIGJ5IGZyb250ZW5kOlxuICAgIGRlcHRoPzogbnVtYmVyOyAvLyBOdW1lcmljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGxldmVsIG9mIGRlcHRoLiBVc2VkIGZvciBvZmZzZXR0aW5nIHRoZSB0ZXJtIGNvbHVtbi5cbiAgICBzb3VyY2U/OiBzdHJpbmc7XG4gICAgc3BlY2llcz86IHN0cmluZztcbiAgICBzY29yZV9wZXJjZW50YWdlPzogbnVtYmVyOyAvLyBQZXJjZW50YWdlIG9mIG1heCBzY29yZSB3aXRoaW4gR09FbnJpY2htZW50QXNwZWN0LlxuICAgIGdlbmVfYXNzb2NpYXRpb25zPzogc3RyaW5nW107IC8vIFBsdWNrZWQgZnJvbSBHT0VucmljaG1lbnRKc29uLmdlbmVfYXNzb2NpYXRpb25zLlxuICAgIGNvbGxhcHNlZD86IGJvb2xlYW47IC8vIEJvb2xlYW4gcmVwcmVzZW50YXRpb24gaWYgdGhlIHNlbGVjdGVkIGl0ZW0gaXMgaGlkZGVuLlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHT0VucmljaG1lbnRBbmFseXNpc1N0b3JhZ2UgZXh0ZW5kcyBTdG9yYWdlIHtcbiAgICBqc29uOiBHT0VucmljaG1lbnRKc29uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHT0VucmljaG1lbnRBbmFseXNpc0lucHV0IHtcbiAgICBwdmFsX3RocmVzaG9sZDogbnVtYmVyO1xuICAgIGdlbmVzOiBzdHJpbmdbXTtcbiAgICBzb3VyY2U6IHN0cmluZztcbiAgICBzcGVjaWVzOiBzdHJpbmc7XG4gICAgb250b2xvZ3k6IG51bWJlcjtcbiAgICBnYWY6IG51bWJlcjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBkYXRhOmdhZjogR0FGIGFubm90YXRpb25cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR2FmQW5ub3RhdGlvbiBleHRlbmRzIERhdGEge1xuICAgIG91dHB1dDoge1xuICAgICAgICBzb3VyY2U6IHN0cmluZztcbiAgICAgICAgc3BlY2llczogc3RyaW5nO1xuICAgICAgICBnYWY6IHsgZmlsZTogc3RyaW5nLCBzaXplOiBudW1iZXIgfTtcbiAgICAgICAgZ2FmX29iajogeyBmaWxlOiBzdHJpbmcsIHNpemU6IG51bWJlciB9O1xuICAgIH07XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gZGF0YTp2YXJpYW50dGFibGU6XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVZhcmlhbnRUYWJsZSBleHRlbmRzIERhdGEge1xuICAgIG91dHB1dDoge1xuICAgICAgICB2YXJpYW50X3RhYmxlOiBudW1iZXI7IC8vID0+IERhdGFWYXJpYW50VGFibGVTdG9yYWdlXG4gICAgfTtcbn1cblxuZXhwb3J0IHR5cGUgRGF0YVZhcmlhbnRUYWJsZUpzb25WYWx1ZUNvbHVtbiA9IHN0cmluZzsgLy8gRXhhbXBsZTogTVNINl9leG9uNV9GMS8yXG5leHBvcnQgdHlwZSBEYXRhVmFyaWFudFRhYmxlSnNvbkRlbGltaXRlZENvbHVtbiA9IHN0cmluZzsgLy8gRXhhbXBsZTogRFA0PTQ2LDQxLDExLDE2O1NCPTRcbmV4cG9ydCB0eXBlIERhdGFWYXJpYW50VGFibGVKc29uVXJsc0NvbHVtbiA9IFtzdHJpbmcsIHN0cmluZ11bXTsgLy8gRXhhbXBsZTogW1snR2VuZScsICdodHRwOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvZ2VuZS8/dGVybT1nZW5lJ11dXG5leHBvcnQgdHlwZSBEYXRhVmFyaWFudFRhYmxlSnNvbkNvbHVtbiA9IERhdGFWYXJpYW50VGFibGVKc29uVmFsdWVDb2x1bW4gfFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhVmFyaWFudFRhYmxlSnNvbkRlbGltaXRlZENvbHVtbiB8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFWYXJpYW50VGFibGVKc29uVXJsc0NvbHVtbjtcbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVZhcmlhbnRUYWJsZVJvdyB7XG4gICAgY29sdW1uczogRGF0YVZhcmlhbnRUYWJsZUpzb25Db2x1bW5bXTtcbiAgICBwb3M6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhVmFyaWFudFRhYmxlSnNvbiB7IC8vIGFwaS10eXBlY2hlY2s6YW1wbGljb25fdGFibGVfb3V0cHV0Lmpzb24uZ3pcbiAgICBjb2x1bW5fdHlwZXM6IEFycmF5PCd2YWx1ZScgfCAnZGVsaW1pdGVkJyB8ICd1cmxzJz47XG4gICAgaGVhZGVyczogc3RyaW5nW107XG4gICAgbGFiZWxzOiBzdHJpbmdbXTtcbiAgICBkYXRhOiBEYXRhVmFyaWFudFRhYmxlUm93W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVZhcmlhbnRUYWJsZVN0b3JhZ2UgZXh0ZW5kcyBTdG9yYWdlIHtcbiAgICBqc29uOiBEYXRhVmFyaWFudFRhYmxlSnNvbjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb2xsZWN0aW9uXG5cbmV4cG9ydCB0eXBlIENvbGxlY3Rpb25QZXJtaXNzaW9ucyA9IFZpZXdQZXJtaXNzaW9uIHwgRWRpdFBlcm1pc3Npb24gfCBTaGFyZVBlcm1pc3Npb24gfFxuICAgIERvd25sb2FkUGVybWlzc2lvbiB8IEFkZFBlcm1pc3Npb247XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGlvbkJhc2Uge1xuICAgIGlkOiBudW1iZXI7XG4gICAgY3JlYXRlZDogc3RyaW5nO1xuICAgIG1vZGlmaWVkOiBzdHJpbmc7XG4gICAgc2x1Zzogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIHNldHRpbmdzOiBhbnk7XG4gICAgZGVzY3JpcHRvcl9zY2hlbWE6IERlc2NyaXB0b3JTY2hlbWFCYXNlO1xuICAgIGRlc2NyaXB0b3I6IGFueTtcbiAgICBjb250cmlidXRvcjogQ29udHJpYnV0b3I7XG4gICAgY3VycmVudF91c2VyX3Blcm1pc3Npb25zOiBJdGVtUGVybWlzc2lvbnNPZjxDb2xsZWN0aW9uUGVybWlzc2lvbnM+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGlvbiBleHRlbmRzIENvbGxlY3Rpb25CYXNlIHtcbiAgICBkYXRhOiBudW1iZXJbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29sbGVjdGlvbihvYmplY3Q6IENvbGxlY3Rpb25CYXNlIHwgU2FtcGxlQmFzZSB8IERhdGEpOiBvYmplY3QgaXMgQ29sbGVjdGlvbiB8IENvbGxlY3Rpb25IeWRyYXRlRGF0YSB7XG4gICAgLy8gQ29sbGVjdGlvbkJhc2UgZG9lc24ndCBjb250YWluIGBkYXRhYCBwcm9wZXJ0eSBpbiBpdCdzIGludGVyZmFjZSwgYnV0XG4gICAgLy8gQ29sbGVjdGlvbiBhbmQgQ29sbGVjdGlvbkh5ZHJhdGVEYXRhIGRvLlxuICAgIHJldHVybiBvYmplY3QuaGFzT3duUHJvcGVydHkoJ2Rlc2NyaXB0aW9uJykgJiZcbiAgICAgICAgb2JqZWN0Lmhhc093blByb3BlcnR5KCdzZXR0aW5ncycpICYmXG4gICAgICAgIG9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnZGF0YScpICYmXG4gICAgICAgICFvYmplY3QuaGFzT3duUHJvcGVydHkoJ2Rlc2NyaXB0b3JfY29tcGxldGVkJyk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGlvbkh5ZHJhdGVEYXRhIGV4dGVuZHMgQ29sbGVjdGlvbkJhc2Uge1xuICAgIGRhdGE6IERhdGFCYXNlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2FtcGxlQmFzZSBleHRlbmRzIENvbGxlY3Rpb25CYXNlIHtcbiAgICBkZXNjcmlwdG9yX2NvbXBsZXRlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2FtcGxlQmFzZShvYmplY3Q6IENvbGxlY3Rpb25CYXNlIHwgU2FtcGxlQmFzZSB8IERhdGEpOiBvYmplY3QgaXMgU2FtcGxlQmFzZSB7XG4gICAgcmV0dXJuIG9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnZGVzY3JpcHRpb24nKSAmJlxuICAgICAgICBvYmplY3QuaGFzT3duUHJvcGVydHkoJ3NldHRpbmdzJykgJiZcbiAgICAgICAgb2JqZWN0Lmhhc093blByb3BlcnR5KCdkYXRhJykgJiZcbiAgICAgICAgb2JqZWN0Lmhhc093blByb3BlcnR5KCdkZXNjcmlwdG9yX2NvbXBsZXRlZCcpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNhbXBsZSBleHRlbmRzIENvbGxlY3Rpb24sIFNhbXBsZUJhc2Uge1xuICAgIGRlc2NyaXB0b3JfY29tcGxldGVkOiB0cnVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNhbXBsZUh5ZHJhdGVEYXRhIGV4dGVuZHMgQ29sbGVjdGlvbkh5ZHJhdGVEYXRhLCBTYW1wbGVCYXNlIHtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVzYW1wbGUgZXh0ZW5kcyBDb2xsZWN0aW9uLCBTYW1wbGVCYXNlIHtcbiAgICBkZXNjcmlwdG9yX2NvbXBsZXRlZDogZmFsc2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2FtcGxlSHlkcmF0ZURhdGEgZXh0ZW5kcyBDb2xsZWN0aW9uSHlkcmF0ZURhdGEsIFNhbXBsZUJhc2Uge1xuICAgIGRlc2NyaXB0b3JfY29tcGxldGVkOiBmYWxzZTtcbn1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFN0b3JhZ2VcblxuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIHNsdWc6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGF0YTogbnVtYmVyO1xuICAgIGpzb246IGFueTtcbiAgICBjb250cmlidXRvcjogQ29udHJpYnV0b3I7XG4gICAgY3JlYXRlZDogc3RyaW5nO1xuICAgIG1vZGlmaWVkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2FtcGxlQ2x1c3RlcmluZyB7IC8vIGFwaS10eXBlY2hlY2s6c2FtcGxlX2NsdXN0ZXJfZGF0YS5qc29uLmd6XG4gICAgc2FtcGxlX2lkczogXy5EaWN0aW9uYXJ5PHsgaWQ6IG51bWJlciB9PjtcbiAgICBvcmRlcjogbnVtYmVyW107XG4gICAgbGlua2FnZTogbnVtYmVyW11bXTsgLy8gW1tub2RlMSwgbm9kZTIsIGRpc3RhbmNlLCBudW1iZXIgb2Ygc2FtcGxlc11dXG4gICAgemVyb19zYW1wbGVfaWRzOiBudW1iZXJbXTsgLy8gc2FtcGxlIGlkcyB3aXRoIG5vIGV4cHJlc3Npb25zXG4gICAgemVyb19nZW5lX3N5bWJvbHM6IHN0cmluZ1tdOyAvLyBnZW5lIHN5bWJvbHMgd2l0aCBubyBleHByZXNzaW9uc1xuICAgIG1pc3NpbmdfZ2VuZV9zeW1ib2xzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZW5lQ2x1c3RlcmluZyB7IC8vIGFwaS10eXBlY2hlY2s6Z2VuZV9jbHVzdGVyX2RhdGEuanNvbi5nelxuICAgIGdlbmVfc3ltYm9sczogXy5EaWN0aW9uYXJ5PHsgZ2VuZTogc3RyaW5nIH0+O1xuICAgIG9yZGVyOiBudW1iZXJbXTtcbiAgICBsaW5rYWdlOiBudW1iZXJbXVtdOyAvLyBbW25vZGUxLCBub2RlMiwgZGlzdGFuY2UsIG51bWJlciBvZiBnZW5lc11dXG4gICAgemVyb19zYW1wbGVfaWRzOiBudW1iZXJbXTsgLy8gc2FtcGxlIGlkcyB3aXRoIG5vIGV4cHJlc3Npb25zXG4gICAgemVyb19nZW5lX3N5bWJvbHM6IHN0cmluZ1tdOyAvLyBnZW5lIHN5bWJvbHMgd2l0aCBubyBleHByZXNzaW9uc1xuICAgIG1pc3NpbmdfZ2VuZV9zeW1ib2xzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQQ0EgeyAvLyBhcGktdHlwZWNoZWNrOnBjYV9wbG90X25jYmkuanNvbi5nelxuICAgIGV4cGxhaW5lZF92YXJpYW5jZV9yYXRpb3M6IG51bWJlcltdO1xuICAgIGFsbF9leHBsYWluZWRfdmFyaWFuY2VfcmF0aW9zOiBudW1iZXJbXTtcbiAgICBhbGxfY29tcG9uZW50czogW3N0cmluZywgbnVtYmVyXVtdW107XG4gICAgY29tcG9uZW50czogW3N0cmluZywgbnVtYmVyXVtdW107XG4gICAgemVyb19nZW5lX3N5bWJvbHM6IHN0cmluZ1tdOyAvLyBnZW5lIGlkcyB3aXRoIG5vIGV4cHJlc3Npb25zXG4gICAgZmxvdDoge1xuICAgICAgICB4bGFiZWw6IHN0cmluZztcbiAgICAgICAgeWxhYmVsOiBzdHJpbmc7XG4gICAgICAgIGRhdGE6IG51bWJlcltdW107XG4gICAgICAgIHNhbXBsZV9pZHM6IHN0cmluZ1tdO1xuICAgIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUUNTdG9yYWdlIGV4dGVuZHMgU3RvcmFnZSB7XG4gICAganNvbjoge1xuICAgICAgICBzdGF0dXM6ICdQQVNTJyB8ICdGQUlMJyB8ICdXQVJOSU5HJyxcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIH07XG59XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBVc2VyXG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICB1c2VybmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgZmlyc3RfbmFtZTogc3RyaW5nO1xuICAgIGxhc3RfbmFtZTogc3RyaW5nO1xuICAgIGpvYl90aXRsZTogc3RyaW5nO1xuICAgIGNvbXBhbnk6IHN0cmluZztcbiAgICBkZXBhcnRtZW50OiBzdHJpbmc7XG4gICAgbG9jYXRpb246IHN0cmluZztcbiAgICBsYWI6IHN0cmluZztcbiAgICBwaG9uZV9udW1iZXI6IHN0cmluZztcbiAgICBsYXN0X2xvZ2luOiBzdHJpbmc7XG4gICAgZGF0ZV9qb2luZWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dpblJlc3BvbnNlIHtcbiAgICBrZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dvdXRSZXNwb25zZSB7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQWNjb3VudEluZm9ybWF0aW9uIHtcbiAgICB1c2VybmFtZTogc3RyaW5nO1xuICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBmaXJzdF9uYW1lOiBzdHJpbmc7XG4gICAgbGFzdF9uYW1lOiBzdHJpbmc7XG4gICAgam9iX3RpdGxlPzogc3RyaW5nO1xuICAgIGNvbXBhbnk/OiBzdHJpbmc7XG4gICAgZGVwYXJ0bWVudD86IHN0cmluZztcbiAgICBsb2NhdGlvbj86IHN0cmluZztcbiAgICBsYWI/OiBzdHJpbmc7XG4gICAgcGhvbmVfbnVtYmVyPzogc3RyaW5nO1xuICAgIG5ld3NsZXR0ZXI/OiBib29sZWFuO1xuICAgIGNvbW11bml0eT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY3RpdmF0ZUFjY291bnRSZXNwb25zZSB7XG4gICAgdXNlcm5hbWU6IHN0cmluZztcbn1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEZpbGVcblxuZXhwb3J0IGludGVyZmFjZSBEb3dubG9hZCB7XG4gICAgZGF0YTogc3RyaW5nO1xufVxuIl19 |
@@ -271,3 +271,2 @@ "use strict"; | ||
if (!store) { | ||
throw new error_1.GenError("Ignored missing store: " + storeMetadata.propertyName + " " + _this.globalStateId); | ||
} | ||
@@ -433,2 +432,2 @@ if (!store) | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlL2NvbXBvbmVudHMvc3RhdGVmdWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMEJBQTRCO0FBQzVCLGlDQUFtQztBQUVuQywrQkFBc0Y7QUFHdEYseUNBQXlDO0FBRXpDO0lBQ0ksMkJBQW1CLFlBQW9CLEVBQVMsTUFBZTtRQUE1QyxpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVM7SUFDL0QsQ0FBQztJQUVNLHNEQUEwQixHQUFqQztRQUNJLE1BQU0sQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ25ELENBQUM7SUFDTCx3QkFBQztBQUFELENBUEEsQUFPQyxJQUFBO0FBUFksOENBQWlCO0FBaUI5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVERztBQU9IO0lBQW9ELHlDQUFhO0lBb0I3RCxZQUFZO0lBQ1osK0JBQVksTUFBc0IsRUFBRSxZQUEwQjtRQUE5RCxZQUNJLGtCQUFNLE1BQU0sQ0FBQyxTQUloQjtRQW5CRCw4QkFBOEI7UUFDdEIsYUFBTyxHQUEwQixJQUFJLENBQUM7UUFDOUMsd0NBQXdDO1FBQ2hDLGVBQVMsR0FBNEIsRUFBRSxDQUFDO1FBS2hELDRDQUE0QztRQUNwQyxtQ0FBNkIsR0FBa0MsRUFBRSxDQUFDO1FBQzFFLG1DQUFtQztRQUMzQiwrQkFBeUIsR0FBbUIsRUFBRSxDQUFDO1FBTW5ELEtBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLEtBQUksQ0FBQyxtQkFBbUIsR0FBRyxZQUFZLENBQUMsa0JBQWtCLENBQUM7O0lBQy9ELENBQUM7OEJBMUJpQixxQkFBcUI7SUE0QmhDLCtDQUFlLEdBQXRCO1FBQUEsaUJBa0NDO1FBakNHLGlCQUFNLGVBQWUsV0FBRSxDQUFDO1FBRXhCLG1FQUFtRTtRQUNuRSxFQUFFLENBQUMsQ0FBQyxDQUFD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MUIsTUFBTSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDaEMsQ0FBQztRQUVELEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9CLE1BQU0sSUFBSSxnQkFBUSxDQUFDLDhCQUE4QixHQUFHLElBQUksR0FBRywyQkFBMkIsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDNUcsQ0FBQztRQUNELE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUUsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQWpCRCxzQkFpQkM7QUFFRDs7Ozs7R0FLRztBQUNILHFCQUE0QixJQUFhO0lBQ3JDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFGRCxrQ0FFQyIsImZpbGUiOiJjb3JlL2NvbXBvbmVudHMvc3RhdGVmdWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyBhbmd1bGFyIGZyb20gJ2FuZ3VsYXInO1xuXG5pbXBvcnQge0NvbXBvbmVudEJhc2UsIGNvbXBvbmVudCwgQ29tcG9uZW50Q29uZmlndXJhdGlvbiwgU3Vic2NyaXB0aW9ufSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHtTaGFyZWRTdG9yZSwgU2hhcmVkU3RvcmVNYW5hZ2VyfSBmcm9tICcuLi9zaGFyZWRfc3RvcmUvaW5kZXgnO1xuaW1wb3J0IHtTdGF0ZU1hbmFnZXJ9IGZyb20gJy4vbWFuYWdlcic7XG5pbXBvcnQge0dlbkVycm9yfSBmcm9tICcuLi9lcnJvcnMvZXJyb3InO1xuXG5leHBvcnQgY2xhc3MgU3RhdGVJdGVtTWV0YWRhdGEge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBwcm9wZXJ0eU5hbWU6IHN0cmluZywgcHVibGljIHNoYXJlZDogYm9vbGVhbikge1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTaGFyZWRTdG9yZU5hbWVQcm9wZXJ0eSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ19zaGFyZWRTdG9yZU5hbWVfJyArIHRoaXMucHJvcGVydHlOYW1lO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZU1ldGFkYXRhIHtcbiAgICBbaW5kZXg6IHN0cmluZ106IFN0YXRlSXRlbU1ldGFkYXRhO1xufVxuXG5pbnRlcmZhY2UgU2hhcmVkU3RvcmVTdWJzY3JpYmVSZXF1ZXN0IHtcbiAgICAoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBBIGNvbXBvbmVudCB3aGljaCBjb250YWlucyBzdGF0ZSB0aGF0IG1heSBiZSBzYXZlZCBhbmQgcmVsb2FkZWQgbGF0ZXIuIFN1Y2hcbiAqIHN0YXRlZnVsIGNvbXBvbmVudHMgYXJlIGF1dG9tYXRpY2FsbHkgb3JnYW5pemVkIGludG8gYSBoaWVyYXJjaHksIHNvIHRoYXRcbiAqIHBhcmVudHMgYWxzbyBzdG9yZSBzdGF0ZSBmb3IgYWxsIHRoZWlyIGNoaWxkcmVuLiBDYWxsaW5nIGBzYXZlU3RhdGVgIG9uIHRoZVxuICogdG9wLWxldmVsIGNvbXBvbmVudCB3aWxsIHRoZXJlZm9yZSBzYXZlIHRoZSBzdGF0ZSBvZiB0aGUgY29tcGxldGUgYXBwbGljYXRpb24uXG4gKlxuICogQ29tcG9uZW50IHN0YXRlIGlzIGRlZmluZWQgYnkgdXNpbmcgcHJvcGVydHkgZGVjb3JhdG9ycyBhcyBmb2xsb3dzOlxuICogYGBgXG4gKiBleHBvcnQgY2xhc3MgUHJvY2Vzc0dyb3VwcyBleHRlbmRzIFZpZXdDb21wb25lbnQge1xuICogICAgIEBzdGF0ZSgpIHB1YmxpYyBzZWxlY3RlZEdyb3VwOiBudW1iZXI7XG4gKlxuICogICAgIC8vIC4uLlxuICogfVxuICogYGBgXG4gKlxuICogSXQgbWF5IGJlIHRoZW4gcmVmZXJlbmNlZCBhbmQgd2F0Y2hlZCBmcm9tIHRoZSBjb250cm9sbGVyIG9yIHRlbXBsYXRlcyBhbmRcbiAqIHdpbGwgYXV0b21hdGljYWxseSBiZSBzYXZlZCB3aGVuIGNhbGxpbmcgW1tTdGF0ZWZ1bENvbXBvbmVudEJhc2Uuc2F2ZVN0YXRlXV1cbiAqIGFuZCByZWxvYWRlZCB3aGVuIGNhbGxpbmcgW1tTdGF0ZWZ1bENvbXBvbmVudEJhc2UubG9hZFN0YXRlXV0uXG4gKlxuICogQSByZWxhdGVkIGRlY29yYXRvciBtYXkgYmUgdXNlZCB0byBkZWNsYXJlIHN0YXRlLCB3aGljaCBpcyBzaGFyZWQgYmV0d2VlblxuICogbXVsdGlwbGUgY29tcG9uZW50czpcbiAqIGBgYFxuICogZXhwb3J0IGNsYXNzIFdpZGdldFJvc2UyIGV4dGVuZHMgV2lkZ2V0QmFzZSB7XG4gKiAgICAgQHNoYXJlZFN0YXRlKCkgcHVibGljIHNlbGVjdGVkVmFsdWU6IFNoYXJlZFN0b3JlPHR5cGVzLkRhdGE+O1xuICpcbiAqICAgICAvLyAuLi5cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFNlZSBbW1NoYXJlZFN0b3JlTWFuYWdlcl1dIGFuZCBbW1NoYXJlZFN0b3JlXV0gZm9yIG1vcmUgZG9jdW1lbnRhdGlvbiBvblxuICogZGVmaW5pbmcgc2hhcmVkIHN0YXRlIHVzaW5nIHNoYXJlZCBzdG9yZXMuXG4gKlxuICogRm9yIGV4YW1wbGUsIGlmIGEgc3RhdGVmdWwgY29tcG9uZW50IGRlZmluZXMgYSBzaGFyZWQgc3RhdGUgcHJvcGVydHkgY2FsbGVkXG4gKiBgc2VsZWN0ZWRWYWx1ZWAgKGFzIHNob3duIGFib3ZlKSBhbmQgeW91IHdhbnQgdG8gbGluayBpdCB3aXRoIHRoZSBzaGFyZWQgc3RvcmVcbiAqIG5hbWVkIGByb3NlMi1zZWxlY3RlZC1kYXRhLWl0ZW1gLCB5b3UgY2FuIGRvIHRoZSBmb2xsb3dpbmcgaW4geW91ciB0ZW1wbGF0ZTpcbiAqIGBgYGh0bWxcbiAqIDxnZW4td2lkZ2V0LXJvc2UyIHN0b3JlLXNlbGVjdGVkLXZhbHVlPVwicm9zZTItc2VsZWN0ZWQtZGF0YS1pdGVtXCI+PC9nZW4td2lkZ2V0LXJvc2UyPlxuICogYGBgXG4gKlxuICogTm90ZSB0aGF0IHRoZSB0ZW1wbGF0ZSBhdHRyaWJ1dGUgbmFtZSBpcyBwcmVmaXhlZCB3aXRoIGBzdG9yZWAgZXZlbiB3aGVuIHRoZVxuICogcHJvcGVydHkgaXMgY2FsbGVkIGp1c3QgYHNlbGVjdGVkVmFsdWVgLiBUaGlzIGlzIGRvbmUgYmVjYXVzZSB3aGF0IHlvdSBwYXNzXG4gKiBpbiB0aGUgdGVtcGxhdGUgaXMganVzdCBhIG5hbWUgb2YgdGhlIHN0b3JlLCB3aGljaCBtdXN0IGJlIHJlc29sdmVkIHVzaW5nIHRoZVxuICogc2hhcmVkIHN0b3JlIG1hbmFnZXIuXG4gKlxuICogSW5zaWRlIHRoZSBjb21wb25lbnRzIHlvdSBjYW4gdGhlbiBkaXNwYXRjaCBhbmQgc3Vic2NyaWJlIHRvIHRoZSB1bmRlcmx5aW5nXG4gKiBzdG9yZTpcbiAqIGBgYFxuICogLy8gUHVibGlzaCBzb21ldGhpbmcgYnkgZGlzcGF0Y2hpbmcgYW4gYWN0aW9uIHRvIHRoZSBzaGFyZWQgc3RvcmUuXG4gKiB0aGlzLnNlbGVjdGVkVmFsdWUuZGlzcGF0Y2goe3R5cGU6IEFjdGlvbnMuU0VULCB2YWx1ZTogNDJ9KTtcbiAqXG4gKiAvLyBTdWJzY3JpYmUgdG8gdXBkYXRlcyBvZiB0aGUgc2hhcmVkIHN0b3JlLlxuICogdGhpcy5zdWJzY3JpYmVTaGFyZWRTdGF0ZSgnc2VsZWN0ZWRWYWx1ZScsIChkYXRhKSA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coXCJTaGFyZWQgc3RhdGUgJ3NlbGVjdGVkVmFsdWUnIGlzIG5vd1wiLCBkYXRhKTtcbiAqIH0pO1xuICogYGBgXG4gKi9cbkBjb21wb25lbnQoe1xuICAgIGFic3RyYWN0OiB0cnVlLFxuICAgIGJpbmRpbmdzOiB7XG4gICAgICAgIHN0YXRlSWQ6ICdAc3RhdGVJZCcsXG4gICAgfSxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU3RhdGVmdWxDb21wb25lbnRCYXNlIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7XG4gICAgLy8vIE1ldGFkYXRhIGFib3V0IHRoZSBzdGF0ZSBkZWZpbmVkIG9uIHRoZSBjb21wb25lbnQuXG4gICAgcHVibGljIF9fc3RhdGVNZXRhZGF0YTogU3RhdGVNZXRhZGF0YTtcbiAgICAvLy8gVGhpcyBjb21wb25lbnQncyBsb2NhbCBzdGF0ZSBpZGVudGlmaWVyLlxuICAgIHB1YmxpYyBzdGF0ZUlkOiBzdHJpbmc7XG4gICAgLy8vIFRoaXMgY29tcG9uZW50J3MgZ2xvYmFsIHN0YXRlIGlkZW50aWZpZXIuXG4gICAgcHVibGljIGdsb2JhbFN0YXRlSWQ6IHN0cmluZztcbiAgICAvLy8gUGFyZW50IHN0YXRlZnVsIGNvbXBvbmVudC5cbiAgICBwcml2YXRlIF9wYXJlbnQ6IFN0YXRlZnVsQ29tcG9uZW50QmFzZSA9IG51bGw7XG4gICAgLy8vIEEgbGlzdCBvZiBjaGlsZCBzdGF0ZWZ1bCBjb21wb25lbnRzLlxuICAgIHByaXZhdGUgX2NoaWxkcmVuOiBTdGF0ZWZ1bENvbXBvbmVudEJhc2VbXSA9IFtdO1xuICAgIC8vLyBTdGF0ZSBtYW5hZ2VyLlxuICAgIHByaXZhdGUgX3N0YXRlTWFuYWdlcjogU3RhdGVNYW5hZ2VyO1xuICAgIC8vLyBTaGFyZWQgc3RvcmUgbWFuYWdlci5cbiAgICBwcml2YXRlIF9zaGFyZWRTdG9yZU1hbmFnZXI6IFNoYXJlZFN0b3JlTWFuYWdlcjtcbiAgICAvLy8gU3Vic2NyaXB0aW9uIHJlcXVlc3RzIGZvciBzaGFyZWQgc3RvcmVzLlxuICAgIHByaXZhdGUgX3NoYXJlZFN0b3JlU3Vic2NyaWJlUmVxdWVzdHM6IFNoYXJlZFN0b3JlU3Vic2NyaWJlUmVxdWVzdFtdID0gW107XG4gICAgLy8vIFN1YnNjcmlwdGlvbnMgdG8gc2hhcmVkIHN0b3Jlcy5cbiAgICBwcml2YXRlIF9zaGFyZWRTdG9yZVN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgICAvLyBAbmdJbmplY3RcbiAgICBjb25zdHJ1Y3Rvcigkc2NvcGU6IGFuZ3VsYXIuSVNjb3BlLCBzdGF0ZU1hbmFnZXI6IFN0YXRlTWFuYWdlcikge1xuICAgICAgICBzdXBlcigkc2NvcGUpO1xuXG4gICAgICAgIHRoaXMuX3N0YXRlTWFuYWdlciA9IHN0YXRlTWFuYWdlcjtcbiAgICAgICAgdGhpcy5fc2hhcmVkU3RvcmVNYW5hZ2VyID0gc3RhdGVNYW5hZ2VyLnNoYXJlZFN0b3JlTWFuYWdlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Db21wb25lbnRJbml0KCkge1xuICAgICAgICBzdXBlci5vbkNvbXBvbmVudEluaXQoKTtcblxuICAgICAgICAvLyBXaGVuIHN0YXRlIGlkZW50aWZpZXIgaXMgbm90IGRlZmluZWQsIGRlZmF1bHQgdG8gZGlyZWN0aXZlIG5hbWUuXG4gICAgICAgIGlmIChfLmlzRW1wdHkodGhpcy5zdGF0ZUlkKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUlkID0gdGhpcy5nZXRDb25maWcoKS5kaXJlY3RpdmU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZXRlcm1pbmUgb3VyIHBhcmVudCBhbmQgcmVnaXN0ZXIgb3Vyc2VsdmVzIHdpdGggaXQuXG4gICAgICAgIHRoaXMuX3BhcmVudCA9IHRoaXMuX2ZpbmRQYXJlbnRDb21wb25lbnQoKTtcbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5fcGFyZW50Ll9yZWdpc3RlckNoaWxkKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5nbG9iYWxTdGF0ZUlkID0gdGhpcy5fcGFyZW50Lmdsb2JhbFN0YXRlSWQgKyAnLScgKyB0aGlzLnN0YXRlSWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZU1hbmFnZXIuYWRkVG9wTGV2ZWxDb21wb25lbnQodGhpcyk7XG4gICAgICAgICAgICB0aGlzLmdsb2JhbFN0YXRlSWQgPSB0aGlzLnN0YXRlSWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhbnkgcGVuZGluZyBzdGF0ZSBmb3IgdXMuXG4gICAgICAgIHRoaXMuX3N0YXRlTWFuYWdlci5sb2FkUGVuZGluZ0NvbXBvbmVudFN0YXRlKHRoaXMpO1xuXG4gICAgICAgIC8vIEF1dG9tYXRpY2FsbHkgbG9hZCBhbnkgY29uZmlndXJlZCBzaGFyZWQgc3RhdGUuXG4gICAgICAgIGNvbnN0IHN0YXRlTWV0YWRhdGEgPSB0aGlzLl9fc3RhdGVNZXRhZGF0YTtcbiAgICAgICAgXy5mb3JPd24oc3RhdGVNZXRhZGF0YSwgKG1ldGFkYXRhKSA9PiB7XG4gICAgICAgICAgICBpZiAobWV0YWRhdGEuc2hhcmVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2hhcmVkU3RvcmVOYW1lID0gdGhpc1ttZXRhZGF0YS5nZXRTaGFyZWRTdG9yZU5hbWVQcm9wZXJ0eSgpXTtcbiAgICAgICAgICAgICAgICBpZiAoIV8uaXNFbXB0eShzaGFyZWRTdG9yZU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlID0gdGhpcy5fc2hhcmVkU3RvcmVNYW5hZ2VyLmdldFN0b3JlKHNoYXJlZFN0b3JlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXNbbWV0YWRhdGEucHJvcGVydHlOYW1lXSA9IHN0b3JlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX3NldHVwU2hhcmVkU3RvcmUobWV0YWRhdGEucHJvcGVydHlOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB1cCB0aGUgc2hhcmVkIHN0b3JlLiBUaGlzIG1ldGhvZCBtYXkgYmUgb3ZlcnJpZGVuIGJ5IHN1YmNsYXNzZXMgd2hlbiBzb21ldGhpbmdcbiAgICAgKiBkaWZmZXJlbnQgc2hvdWxkIGJlIGRvbmUgaGVyZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RvcmV9IFNoYXJlZCBzdGF0ZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfc2V0dXBTaGFyZWRTdG9yZShzdG9yZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIC8vIFN1YnNjcmliZSB0byBzaGFyZWQgc3RvcmUsIHNvIHRoYXQgdGhpcyBjb21wb25lbnQncyBzY29wZSBnZXRzIHVwZGF0ZWQgd2hlbiB0aGVcbiAgICAgICAgLy8gdmFsdWUgaW4gdGhlIHN0b3JlIGlzIHVwZGF0ZWQuXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlU2hhcmVkU3RhdGUoc3RvcmUsIF8ubm9vcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgc3RhdGUgbWFuYWdlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHN0YXRlTWFuYWdlcigpOiBTdGF0ZU1hbmFnZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RhdGVNYW5hZ2VyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHNoYXJlZCBzdG9yZSBtYW5hZ2VyLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXQgc2hhcmVkU3RvcmVNYW5hZ2VyKCk6IFNoYXJlZFN0b3JlTWFuYWdlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaGFyZWRTdG9yZU1hbmFnZXI7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ29tcG9uZW50RGVzdHJveWVkKCk6IHZvaWQge1xuICAgICAgICAvLyBTYXZlIGN1cnJlbnQgY29tcG9uZW50IHN0YXRlLCBzbyBpdCB3aWxsIGJlIGF2YWlsYWJsZSB3aGVuIHRoaXMgY29tcG9uZW50XG4gICAgICAgIC8vIGlzIGluc3RhbnRpYXRlZCBhZ2Fpbi5cbiAgICAgICAgdGhpcy5fc3RhdGVNYW5hZ2VyLnNhdmVQZW5kaW5nQ29tcG9uZW50U3RhdGUodGhpcyk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5fcGFyZW50Ll91bnJlZ2lzdGVyQ2hpbGQodGhpcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZU1hbmFnZXIucmVtb3ZlVG9wTGV2ZWxDb21wb25lbnQodGhpcyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlci5vbkNvbXBvbmVudERlc3Ryb3llZCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGFmdGVyIHRoZSBjb21wb25lbnQncyBzdGF0ZSBoYXMgYmVlbiBsb2FkZWQuXG4gICAgICovXG4gICAgcHVibGljIG9uQ29tcG9uZW50U3RhdGVBZnRlckxvYWQoKTogdm9pZCB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgYnkgZGVmYXVsdC5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBiZWVuIHNhdmVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBvbkNvbXBvbmVudFN0YXRlUHJlU2F2ZSgpOiB2b2lkIHtcbiAgICAgICAgLy8gRG8gbm90aGluZyBieSBkZWZhdWx0LlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc2NvdmVycyB0aGUgcGFyZW50IHN0YXRlZnVsIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9maW5kUGFyZW50Q29tcG9uZW50KCk6IFN0YXRlZnVsQ29tcG9uZW50QmFzZSB7XG4gICAgICAgIGxldCBzY29wZSA9IHRoaXMuJHNjb3BlLiRwYXJlbnQ7XG4gICAgICAgIHdoaWxlIChzY29wZSkge1xuICAgICAgICAgICAgaWYgKHNjb3BlWydjdHJsJ10gaW5zdGFuY2VvZiBTdGF0ZWZ1bENvbXBvbmVudEJhc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NvcGVbJ2N0cmwnXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2NvcGUgPSBzY29wZS4kcGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXJzIGEgbmV3IGNoaWxkIG9mIHRoaXMgc3RhdGVmdWwgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtTdGF0ZWZ1bENvbXBvbmVudEJhc2V9IGNoaWxkIENoaWxkIGNvbXBvbmVudCBpbnN0YW5jZVxuICAgICAqL1xuICAgIHByaXZhdGUgX3JlZ2lzdGVyQ2hpbGQoY2hpbGQ6IFN0YXRlZnVsQ29tcG9uZW50QmFzZSkge1xuICAgICAgICAvLyBFbnN1cmUgdGhlIGNoaWxkJ3MgbG9jYWwgc3RhdGUgaWQgaXMgdW5pcXVlLlxuICAgICAgICBpZiAoXy5hbnkodGhpcy5fY2hpbGRyZW4sIChjKSA9PiBjLnN0YXRlSWQgPT09IGNoaWxkLnN0YXRlSWQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgR2VuRXJyb3IoXCJEdXBsaWNhdGUgc3RhdGVmdWwgY29tcG9uZW50IHN0YXRlIGlkZW50aWZpZXIgJ1wiICsgY2hpbGQuc3RhdGVJZCArIFwiJy5cIik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbnJlZ2lzdGVycyBhbiBleGlzdGluZyBjaGlsZCBvZiB0aGlzIHN0YXRlZnVsIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7U3RhdGVmdWxDb21wb25lbnRCYXNlfSBjaGlsZCBDaGlsZCBjb21wb25lbnQgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBwcml2YXRlIF91bnJlZ2lzdGVyQ2hpbGQoY2hpbGQ6IFN0YXRlZnVsQ29tcG9uZW50QmFzZSkge1xuICAgICAgICB0aGlzLl9jaGlsZHJlbiA9IF8ud2l0aG91dCh0aGlzLl9jaGlsZHJlbiwgY2hpbGQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHBhcmVudCBzdGF0ZWZ1bCBjb21wb25lbnQuXG4gICAgICovXG4gICAgcHVibGljIHBhcmVudENvbXBvbmVudCgpOiBTdGF0ZWZ1bENvbXBvbmVudEJhc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBsaXN0IG9mIGNoaWxkIHN0YXRlZnVsIGNvbXBvbmVudHMuXG4gICAgICovXG4gICAgcHVibGljIGNoaWxkQ29tcG9uZW50cygpOiBTdGF0ZWZ1bENvbXBvbmVudEJhc2VbXSB7XG4gICAgICAgIHJldHVybiBfLmNsb25lKHRoaXMuX2NoaWxkcmVuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyBhIGNoaWxkIGNvbXBvbmVudCBieSBpdHMgc3RhdGUgaWRlbnRpZmllci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZUlkIENoaWxkJ3Mgc3RhdGUgaWRlbnRpZmllclxuICAgICAqIEByZXR1cm4ge1N0YXRlZnVsQ29tcG9uZW50QmFzZX0gQ2hpbGQgY29tcG9uZW50IGluc3RhbmNlXG4gICAgICovXG4gICAgcHVibGljIGdldENoaWxkQ29tcG9uZW50PFQgZXh0ZW5kcyBTdGF0ZWZ1bENvbXBvbmVudEJhc2U+KHN0YXRlSWQ6IHN0cmluZyk6IFQge1xuICAgICAgICByZXR1cm4gPFQ+IF8uZmluZCh0aGlzLl9jaGlsZHJlbiwgKGNoaWxkKSA9PiBjaGlsZC5zdGF0ZUlkID09PSBzdGF0ZUlkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmVzIHRvIHNoYXJlZCBzdGF0ZS4gVGhpcyBpcyB0aGUgc2FtZSBhcyBhIG5vcm1hbCBzdWJzY3JpYmUsIGJ1dCBpblxuICAgICAqIGFkZGl0aW9uIGl0IGFsc28gcHJvcGVybHkgaGFuZGxlcyB1bmRlcmx5aW5nIGRhdGEgc3RvcmUgY2hhbmdlcyB3aGVuXG4gICAgICogY29tcG9uZW50IHN0YXRlIGlzIHJlbG9hZGVkLlxuICAgICAqXG4gICAgICogVGhlIHZhbHVlIG9ic2VydmVkIGZyb20gdGhlIHNoYXJlZCBzdG9yZSBNVVNUIE5PVCBiZSBtdXRhdGVkIGluIGFueSB3YXkgYXNcbiAgICAgKiBkb2luZyBzbyBtYXkgY2F1c2UgdW5kZWZpbmVkIGJlaGF2aW9yLiBJZiB5b3UgbmVlZCB0byBtdXRhdGUgdGhlIG9ic2VydmVkXG4gICAgICogdmFsdWUsIHVzZSBbW3N1YnNjcmliZVNoYXJlZFN0YXRlTXV0YWJsZV1dIGluc3RlYWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHNoYXJlZCBzdGF0ZVxuICAgICAqIEBwYXJhbSBjYWxsYmFjayBDYWxsYmFjayB0byBiZSBpbnZva2VkIG9uIHN1YnNjcmlwdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBzdWJzY3JpYmVTaGFyZWRTdGF0ZShuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdG9yZU1ldGFkYXRhID0gdGhpcy5fZ2V0U3RhdGVNZXRhZGF0YShuYW1lKTtcbiAgICAgICAgaWYgKCFzdG9yZU1ldGFkYXRhIHx8ICFzdG9yZU1ldGFkYXRhLnNoYXJlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEdlbkVycm9yKFwiU2hhcmVkIHN0YXRlICdcIiArIG5hbWUgKyBcIicgbm90IGZvdW5kLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN1YnNjcmliZXIgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdG9yZTogU2hhcmVkU3RvcmU8YW55LCBhbnk+ID0gdGhpc1tzdG9yZU1ldGFkYXRhLnByb3BlcnR5TmFtZV07XG4gICAgICAgICAgICBpZiAoIXN0b3JlKSB7XG4gICAgICAgICAgICAgICAgLy8gQGlmbmRlZiBHRU5KU19QUk9EVUNUSU9OXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBHZW5FcnJvcihgSWdub3JlZCBtaXNzaW5nIHN0b3JlOiAke3N0b3JlTWV0YWRhdGEucHJvcGVydHlOYW1lfSAke3RoaXMuZ2xvYmFsU3RhdGVJZH1gKTtcbiAgICAgICAgICAgICAgICAvLyBAZW5kaWZcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc3RvcmUpIHJldHVybjtcbiAgICAgICAgICAgIHRoaXMuX3NoYXJlZFN0b3JlU3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuc3Vic2NyaWJlKGNhbGxiYWNrLCBzdG9yZS5vYnNlcnZhYmxlKCkpKTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl9zaGFyZWRTdG9yZVN1YnNjcmliZVJlcXVlc3RzLnB1c2goc3Vic2NyaWJlcik7XG4gICAgICAgIHN1YnNjcmliZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHZlcnNpb24gb2YgW1tzdWJzY3JpYmVTaGFyZWRTdGF0ZV1dLCB3aGljaCBlbnN1cmVzIHRoYXQgdGhlIG9ic2VydmVkIHNoYXJlZFxuICAgICAqIHN0b3JlIHZhbHVlIGlzIGNvcGllZCBhbmQgY2FuIHRodXMgYmUgc2FmZWx5IG11dGF0ZWQgYWZ0ZXJ3YXJkcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2Ygc2hhcmVkIHN0YXRlXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIENhbGxiYWNrIHRvIGJlIGludm9rZWQgb24gc3Vic2NyaXB0aW9uXG4gICAgICovXG4gICAgcHVibGljIHN1YnNjcmliZVNoYXJlZFN0YXRlTXV0YWJsZTxUPihuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAodmFsdWU6IFQpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVTaGFyZWRTdGF0ZShuYW1lLCAodmFsdWUpID0+IGNhbGxiYWNrKGFuZ3VsYXIuY29weSh2YWx1ZSkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG1ldGFkYXRhIGZvciBzcGVjaWZpYyBjb21wb25lbnQgc3RhdGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHNoYXJlZCBzdGF0ZSAobm90IHByb3BlcnR5IG5hbWUpXG4gICAgICogQHJldHVybiB7U3RhdGVJdGVtTWV0YWRhdGF9IFN0YXRlIG1ldGFkYXRhXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0U3RhdGVNZXRhZGF0YShuYW1lOiBzdHJpbmcpOiBTdGF0ZUl0ZW1NZXRhZGF0YSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9fc3RhdGVNZXRhZGF0YVtuYW1lXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTYXZlcyB0aGlzIGNvbXBvbmVudCdzIGN1cnJlbnQgc3RhdGUgYW5kIHJldHVybnMgaXQuXG4gICAgICovXG4gICAgcHVibGljIHNhdmVTdGF0ZShzYXZlQ2hpbGRyZW46IGJvb2xlYW4gPSB0cnVlKTogYW55IHtcbiAgICAgICAgdGhpcy5vbkNvbXBvbmVudFN0YXRlUHJlU2F2ZSgpO1xuXG4gICAgICAgIGxldCByZXN1bHQgPSB7fTtcbiAgICAgICAgbGV0IHN0YXRlID0gcmVzdWx0W3RoaXMuZ2xvYmFsU3RhdGVJZF0gPSB7fTtcbiAgICAgICAgXy5mb3JPd24odGhpcy5fX3N0YXRlTWV0YWRhdGEsIChtZXRhZGF0YSwga2V5KSA9PiB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzW21ldGFkYXRhLnByb3BlcnR5TmFtZV07XG5cbiAgICAgICAgICAgIGlmIChtZXRhZGF0YS5zaGFyZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBJbiBjYXNlIG9mIHNoYXJlZCBzdGF0ZSwgc2F2ZSB0aGUgaWRlbnRpZmllciBvZiB0aGUgc2hhcmVkIHN0b3JlLlxuICAgICAgICAgICAgICAgIHZhbHVlID0gKDxTaGFyZWRTdG9yZTxhbnksIGFueT4+IHZhbHVlKS5zdG9yZUlkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdGF0ZVtrZXldID0gdmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNhdmUgY2hpbGQgc3RhdGUuXG4gICAgICAgIGlmIChzYXZlQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5fY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBfLmV4dGVuZChyZXN1bHQsIGNoaWxkLnNhdmVTdGF0ZSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTG9hZHMgdGhpcyBjb21wb25lbnQncyBjdXJyZW50IHN0YXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHthbnl9IGdsb2JhbFN0YXRlIEdsb2JhbCBzdGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBsb2FkU3RhdGUoZ2xvYmFsU3RhdGU6IGFueSwgbG9hZENoaWxkcmVuOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IGdsb2JhbFN0YXRlW3RoaXMuZ2xvYmFsU3RhdGVJZF07XG4gICAgICAgIGxldCBzaGFyZWRTdGF0ZUNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgXy5mb3JPd24odGhpcy5fX3N0YXRlTWV0YWRhdGEsIChtZXRhZGF0YSwga2V5KSA9PiB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBzdGF0ZVtrZXldO1xuICAgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodmFsdWUpKSByZXR1cm47XG5cbiAgICAgICAgICAgIGlmIChtZXRhZGF0YS5zaGFyZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIHNoYXJlZCBzdG9yZSBmcm9tIHRoZSBzaGFyZWQgc3RvcmUgbWFuYWdlci5cbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ1ZhbHVlOiBTaGFyZWRTdG9yZTxhbnksIGFueT4gPSB0aGlzW21ldGFkYXRhLnByb3BlcnR5TmFtZV07XG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nVmFsdWUuc3RvcmVJZCAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1ttZXRhZGF0YS5wcm9wZXJ0eU5hbWVdID0gdGhpcy5fc2hhcmVkU3RvcmVNYW5hZ2VyLmdldFN0b3JlPGFueT4odmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBzaGFyZWRTdGF0ZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpc1ttZXRhZGF0YS5wcm9wZXJ0eU5hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIExvYWQgY2hpbGQgc3RhdGUuXG4gICAgICAgIGlmIChsb2FkQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5fY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBjaGlsZC5sb2FkU3RhdGUoZ2xvYmFsU3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNoYXJlZFN0YXRlQ2hhbmdlZCkge1xuICAgICAgICAgICAgLy8gQ2FuY2VsIGFueSBwcmV2aW91cyBzdWJzY3JpcHRpb25zIHRvIHNoYXJlZCBzdG9yZXMuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHN1YnNjcmlwdGlvbiBvZiB0aGlzLl9zaGFyZWRTdG9yZVN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVzdWJzY3JpYmUsIHVzaW5nIHRoZSBuZXcgc3RvcmVzLlxuICAgICAgICAgICAgZm9yIChjb25zdCByZXF1ZXN0IG9mIHRoaXMuX3NoYXJlZFN0b3JlU3Vic2NyaWJlUmVxdWVzdHMpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uQ29tcG9uZW50U3RhdGVBZnRlckxvYWQoKTtcblxuICAgICAgICAvLyBQcm9wYWdhdGUgc3RhdGUgdXBkYXRlcyB0byB0aGUgdmlldy5cbiAgICAgICAgdGhpcy4kc2NvcGUuJGFwcGx5QXN5bmMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNvbmZpZ3VyZUNvbXBvbmVudChjb25maWc6IENvbXBvbmVudENvbmZpZ3VyYXRpb24pOiBDb21wb25lbnRDb25maWd1cmF0aW9uIHtcbiAgICAgICAgY29uc3Qgc3RhdGVNZXRhZGF0YSA9IHRoaXMucHJvdG90eXBlLl9fc3RhdGVNZXRhZGF0YTtcbiAgICAgICAgaWYgKCFjb25maWcuYmluZGluZ3MpIGNvbmZpZy5iaW5kaW5ncyA9IHt9O1xuXG4gICAgICAgIF8uZm9yT3duKHN0YXRlTWV0YWRhdGEsIChtZXRhZGF0YSwga2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAobWV0YWRhdGEuc2hhcmVkKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLmJpbmRpbmdzW21ldGFkYXRhLmdldFNoYXJlZFN0b3JlTmFtZVByb3BlcnR5KCldID0gJ0BzdG9yZScgKyBfLmNhcGl0YWxpemUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjb25maWc7XG4gICAgfVxufVxuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgYmVpbmcgcGFydCBvZiB0aGUgY29tcG9uZW50J3Mgc3RhdGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgT3B0aW9uYWwgc3RhdGUgbmFtZVxuICogQHBhcmFtIHtib29sZWFufSBzaGFyZWQgRG9lcyB0aGlzIHN0YXRlIHJlZmVyZW5jZSBhIHNoYXJlZCBzdG9yZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhdGUobmFtZT86IHN0cmluZywgc2hhcmVkOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICByZXR1cm4gKHRhcmdldDogU3RhdGVmdWxDb21wb25lbnRCYXNlLCBwcm9wZXJ0eUtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICghbmFtZSkgbmFtZSA9IHByb3BlcnR5S2V5O1xuXG4gICAgICAgIGlmIChuYW1lWzBdID09PSAnXycpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5FcnJvcihcIlN0YXRlIGlkZW50aWZpZXJzIHN0YXJ0aW5nIHdpdGggYW4gdW5kZXJzY29yZSBhcmUgcmVzZXJ2ZWQuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0YXJnZXQuX19zdGF0ZU1ldGFkYXRhKSB7XG4gICAgICAgICAgICB0YXJnZXQuX19zdGF0ZU1ldGFkYXRhID0ge307XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGFyZ2V0Ll9fc3RhdGVNZXRhZGF0YVtuYW1lXSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEdlbkVycm9yKFwiRHVwbGljYXRlIHN0YXRlIGlkZW50aWZpZXIgJ1wiICsgbmFtZSArIFwiJyBvbiBzdGF0ZWZ1bCBjb21wb25lbnQgJ1wiICsgdGFyZ2V0ICsgXCInLlwiKTtcbiAgICAgICAgfVxuICAgICAgICB0YXJnZXQuX19zdGF0ZU1ldGFkYXRhW25hbWVdID0gbmV3IFN0YXRlSXRlbU1ldGFkYXRhKHByb3BlcnR5S2V5LCBzaGFyZWQpO1xuICAgIH07XG59XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBiZWluZyBwYXJ0IG9mIHRoZSBjb21wb25lbnQncyBzdGF0ZSwgd2hpY2ggcmVmZXJlbmNlc1xuICogYSBzaGFyZWQgc3RvcmUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgT3B0aW9uYWwgc3RhdGUgbmFtZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hhcmVkU3RhdGUobmFtZT86IHN0cmluZykge1xuICAgIHJldHVybiBzdGF0ZShuYW1lLCB0cnVlKTtcbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlL2NvbXBvbmVudHMvc3RhdGVmdWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMEJBQTRCO0FBQzVCLGlDQUFtQztBQUVuQywrQkFBc0Y7QUFHdEYseUNBQXlDO0FBRXpDO0lBQ0ksMkJBQW1CLFlBQW9CLEVBQVMsTUFBZTtRQUE1QyxpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVM7SUFDL0QsQ0FBQztJQUVNLHNEQUEwQixHQUFqQztRQUNJLE1BQU0sQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ25ELENBQUM7SUFDTCx3QkFBQztBQUFELENBUEEsQUFPQyxJQUFBO0FBUFksOENBQWlCO0FBaUI5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVERztBQU9IO0lBQW9ELHlDQUFhO0lBb0I3RCxZQUFZO0lBQ1osK0JBQVksTUFBc0IsRUFBRSxZQUEwQjtRQUE5RCxZQUNJLGtCQUFNLE1BQU0sQ0FBQyxTQUloQjtRQW5CRCw4QkFBOEI7UUFDdEIsYUFBTyxHQUEwQixJQUFJLENBQUM7UUFDOUMsd0NBQXdDO1FBQ2hDLGVBQVMsR0FBNEIsRUFBRSxDQUFDO1FBS2hELDRDQUE0QztRQUNwQyxtQ0FBNkIsR0FBa0MsRUFBRSxDQUFDO1FBQzFFLG1DQUFtQztRQUMzQiwrQkFBeUIsR0FBbUIsRUFBRSxDQUFDO1FBTW5ELEtBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLEtBQUksQ0FBQyxtQkFBbUIsR0FBRyxZQUFZLENBQUMsa0JBQWtCLENBQUM7O0lBQy9ELENBQUM7OEJBMUJpQixxQkFBcUI7SUE0QmhDLCtDQUFlLEdBQXRCO1FBQUEsaUJBa0NDO1FBakNHLGlCQUFNLGVBQWUsV0FBRSxDQUFDO1FBRXhCLG1FQUFtRTtRQUNuRSxFQUFFLENBQUMsQ0FBQyxDQUFD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QUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9CLE1BQU0sSUFBSSxnQkFBUSxDQUFDLDhCQUE4QixHQUFHLElBQUksR0FBRywyQkFBMkIsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDNUcsQ0FBQztRQUNELE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUUsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQWpCRCxzQkFpQkM7QUFFRDs7Ozs7R0FLRztBQUNILHFCQUE0QixJQUFhO0lBQ3JDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFGRCxrQ0FFQyIsImZpbGUiOiJjb3JlL2NvbXBvbmVudHMvc3RhdGVmdWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyBhbmd1bGFyIGZyb20gJ2FuZ3VsYXInO1xuXG5pbXBvcnQge0NvbXBvbmVudEJhc2UsIGNvbXBvbmVudCwgQ29tcG9uZW50Q29uZmlndXJhdGlvbiwgU3Vic2NyaXB0aW9ufSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHtTaGFyZWRTdG9yZSwgU2hhcmVkU3RvcmVNYW5hZ2VyfSBmcm9tICcuLi9zaGFyZWRfc3RvcmUvaW5kZXgnO1xuaW1wb3J0IHtTdGF0ZU1hbmFnZXJ9IGZyb20gJy4vbWFuYWdlcic7XG5pbXBvcnQge0dlbkVycm9yfSBmcm9tICcuLi9lcnJvcnMvZXJyb3InO1xuXG5leHBvcnQgY2xhc3MgU3RhdGVJdGVtTWV0YWRhdGEge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBwcm9wZXJ0eU5hbWU6IHN0cmluZywgcHVibGljIHNoYXJlZDogYm9vbGVhbikge1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTaGFyZWRTdG9yZU5hbWVQcm9wZXJ0eSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ19zaGFyZWRTdG9yZU5hbWVfJyArIHRoaXMucHJvcGVydHlOYW1lO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZU1ldGFkYXRhIHtcbiAgICBbaW5kZXg6IHN0cmluZ106IFN0YXRlSXRlbU1ldGFkYXRhO1xufVxuXG5pbnRlcmZhY2UgU2hhcmVkU3RvcmVTdWJzY3JpYmVSZXF1ZXN0IHtcbiAgICAoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBBIGNvbXBvbmVudCB3aGljaCBjb250YWlucyBzdGF0ZSB0aGF0IG1heSBiZSBzYXZlZCBhbmQgcmVsb2FkZWQgbGF0ZXIuIFN1Y2hcbiAqIHN0YXRlZnVsIGNvbXBvbmVudHMgYXJlIGF1dG9tYXRpY2FsbHkgb3JnYW5pemVkIGludG8gYSBoaWVyYXJjaHksIHNvIHRoYXRcbiAqIHBhcmVudHMgYWxzbyBzdG9yZSBzdGF0ZSBmb3IgYWxsIHRoZWlyIGNoaWxkcmVuLiBDYWxsaW5nIGBzYXZlU3RhdGVgIG9uIHRoZVxuICogdG9wLWxldmVsIGNvbXBvbmVudCB3aWxsIHRoZXJlZm9yZSBzYXZlIHRoZSBzdGF0ZSBvZiB0aGUgY29tcGxldGUgYXBwbGljYXRpb24uXG4gKlxuICogQ29tcG9uZW50IHN0YXRlIGlzIGRlZmluZWQgYnkgdXNpbmcgcHJvcGVydHkgZGVjb3JhdG9ycyBhcyBmb2xsb3dzOlxuICogYGBgXG4gKiBleHBvcnQgY2xhc3MgUHJvY2Vzc0dyb3VwcyBleHRlbmRzIFZpZXdDb21wb25lbnQge1xuICogICAgIEBzdGF0ZSgpIHB1YmxpYyBzZWxlY3RlZEdyb3VwOiBudW1iZXI7XG4gKlxuICogICAgIC8vIC4uLlxuICogfVxuICogYGBgXG4gKlxuICogSXQgbWF5IGJlIHRoZW4gcmVmZXJlbmNlZCBhbmQgd2F0Y2hlZCBmcm9tIHRoZSBjb250cm9sbGVyIG9yIHRlbXBsYXRlcyBhbmRcbiAqIHdpbGwgYXV0b21hdGljYWxseSBiZSBzYXZlZCB3aGVuIGNhbGxpbmcgW1tTdGF0ZWZ1bENvbXBvbmVudEJhc2Uuc2F2ZVN0YXRlXV1cbiAqIGFuZCByZWxvYWRlZCB3aGVuIGNhbGxpbmcgW1tTdGF0ZWZ1bENvbXBvbmVudEJhc2UubG9hZFN0YXRlXV0uXG4gKlxuICogQSByZWxhdGVkIGRlY29yYXRvciBtYXkgYmUgdXNlZCB0byBkZWNsYXJlIHN0YXRlLCB3aGljaCBpcyBzaGFyZWQgYmV0d2VlblxuICogbXVsdGlwbGUgY29tcG9uZW50czpcbiAqIGBgYFxuICogZXhwb3J0IGNsYXNzIFdpZGdldFJvc2UyIGV4dGVuZHMgV2lkZ2V0QmFzZSB7XG4gKiAgICAgQHNoYXJlZFN0YXRlKCkgcHVibGljIHNlbGVjdGVkVmFsdWU6IFNoYXJlZFN0b3JlPHR5cGVzLkRhdGE+O1xuICpcbiAqICAgICAvLyAuLi5cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFNlZSBbW1NoYXJlZFN0b3JlTWFuYWdlcl1dIGFuZCBbW1NoYXJlZFN0b3JlXV0gZm9yIG1vcmUgZG9jdW1lbnRhdGlvbiBvblxuICogZGVmaW5pbmcgc2hhcmVkIHN0YXRlIHVzaW5nIHNoYXJlZCBzdG9yZXMuXG4gKlxuICogRm9yIGV4YW1wbGUsIGlmIGEgc3RhdGVmdWwgY29tcG9uZW50IGRlZmluZXMgYSBzaGFyZWQgc3RhdGUgcHJvcGVydHkgY2FsbGVkXG4gKiBgc2VsZWN0ZWRWYWx1ZWAgKGFzIHNob3duIGFib3ZlKSBhbmQgeW91IHdhbnQgdG8gbGluayBpdCB3aXRoIHRoZSBzaGFyZWQgc3RvcmVcbiAqIG5hbWVkIGByb3NlMi1zZWxlY3RlZC1kYXRhLWl0ZW1gLCB5b3UgY2FuIGRvIHRoZSBmb2xsb3dpbmcgaW4geW91ciB0ZW1wbGF0ZTpcbiAqIGBgYGh0bWxcbiAqIDxnZW4td2lkZ2V0LXJvc2UyIHN0b3JlLXNlbGVjdGVkLXZhbHVlPVwicm9zZTItc2VsZWN0ZWQtZGF0YS1pdGVtXCI+PC9nZW4td2lkZ2V0LXJvc2UyPlxuICogYGBgXG4gKlxuICogTm90ZSB0aGF0IHRoZSB0ZW1wbGF0ZSBhdHRyaWJ1dGUgbmFtZSBpcyBwcmVmaXhlZCB3aXRoIGBzdG9yZWAgZXZlbiB3aGVuIHRoZVxuICogcHJvcGVydHkgaXMgY2FsbGVkIGp1c3QgYHNlbGVjdGVkVmFsdWVgLiBUaGlzIGlzIGRvbmUgYmVjYXVzZSB3aGF0IHlvdSBwYXNzXG4gKiBpbiB0aGUgdGVtcGxhdGUgaXMganVzdCBhIG5hbWUgb2YgdGhlIHN0b3JlLCB3aGljaCBtdXN0IGJlIHJlc29sdmVkIHVzaW5nIHRoZVxuICogc2hhcmVkIHN0b3JlIG1hbmFnZXIuXG4gKlxuICogSW5zaWRlIHRoZSBjb21wb25lbnRzIHlvdSBjYW4gdGhlbiBkaXNwYXRjaCBhbmQgc3Vic2NyaWJlIHRvIHRoZSB1bmRlcmx5aW5nXG4gKiBzdG9yZTpcbiAqIGBgYFxuICogLy8gUHVibGlzaCBzb21ldGhpbmcgYnkgZGlzcGF0Y2hpbmcgYW4gYWN0aW9uIHRvIHRoZSBzaGFyZWQgc3RvcmUuXG4gKiB0aGlzLnNlbGVjdGVkVmFsdWUuZGlzcGF0Y2goe3R5cGU6IEFjdGlvbnMuU0VULCB2YWx1ZTogNDJ9KTtcbiAqXG4gKiAvLyBTdWJzY3JpYmUgdG8gdXBkYXRlcyBvZiB0aGUgc2hhcmVkIHN0b3JlLlxuICogdGhpcy5zdWJzY3JpYmVTaGFyZWRTdGF0ZSgnc2VsZWN0ZWRWYWx1ZScsIChkYXRhKSA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coXCJTaGFyZWQgc3RhdGUgJ3NlbGVjdGVkVmFsdWUnIGlzIG5vd1wiLCBkYXRhKTtcbiAqIH0pO1xuICogYGBgXG4gKi9cbkBjb21wb25lbnQoe1xuICAgIGFic3RyYWN0OiB0cnVlLFxuICAgIGJpbmRpbmdzOiB7XG4gICAgICAgIHN0YXRlSWQ6ICdAc3RhdGVJZCcsXG4gICAgfSxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU3RhdGVmdWxDb21wb25lbnRCYXNlIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7XG4gICAgLy8vIE1ldGFkYXRhIGFib3V0IHRoZSBzdGF0ZSBkZWZpbmVkIG9uIHRoZSBjb21wb25lbnQuXG4gICAgcHVibGljIF9fc3RhdGVNZXRhZGF0YTogU3RhdGVNZXRhZGF0YTtcbiAgICAvLy8gVGhpcyBjb21wb25lbnQncyBsb2NhbCBzdGF0ZSBpZGVudGlmaWVyLlxuICAgIHB1YmxpYyBzdGF0ZUlkOiBzdHJpbmc7XG4gICAgLy8vIFRoaXMgY29tcG9uZW50J3MgZ2xvYmFsIHN0YXRlIGlkZW50aWZpZXIuXG4gICAgcHVibGljIGdsb2JhbFN0YXRlSWQ6IHN0cmluZztcbiAgICAvLy8gUGFyZW50IHN0YXRlZnVsIGNvbXBvbmVudC5cbiAgICBwcml2YXRlIF9wYXJlbnQ6IFN0YXRlZnVsQ29tcG9uZW50QmFzZSA9IG51bGw7XG4gICAgLy8vIEEgbGlzdCBvZiBjaGlsZCBzdGF0ZWZ1bCBjb21wb25lbnRzLlxuICAgIHByaXZhdGUgX2NoaWxkcmVuOiBTdGF0ZWZ1bENvbXBvbmVudEJhc2VbXSA9IFtdO1xuICAgIC8vLyBTdGF0ZSBtYW5hZ2VyLlxuICAgIHByaXZhdGUgX3N0YXRlTWFuYWdlcjogU3RhdGVNYW5hZ2VyO1xuICAgIC8vLyBTaGFyZWQgc3RvcmUgbWFuYWdlci5cbiAgICBwcml2YXRlIF9zaGFyZWRTdG9yZU1hbmFnZXI6IFNoYXJlZFN0b3JlTWFuYWdlcjtcbiAgICAvLy8gU3Vic2NyaXB0aW9uIHJlcXVlc3RzIGZvciBzaGFyZWQgc3RvcmVzLlxuICAgIHByaXZhdGUgX3NoYXJlZFN0b3JlU3Vic2NyaWJlUmVxdWVzdHM6IFNoYXJlZFN0b3JlU3Vic2NyaWJlUmVxdWVzdFtdID0gW107XG4gICAgLy8vIFN1YnNjcmlwdGlvbnMgdG8gc2hhcmVkIHN0b3Jlcy5cbiAgICBwcml2YXRlIF9zaGFyZWRTdG9yZVN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgICAvLyBAbmdJbmplY3RcbiAgICBjb25zdHJ1Y3Rvcigkc2NvcGU6IGFuZ3VsYXIuSVNjb3BlLCBzdGF0ZU1hbmFnZXI6IFN0YXRlTWFuYWdlcikge1xuICAgICAgICBzdXBlcigkc2NvcGUpO1xuXG4gICAgICAgIHRoaXMuX3N0YXRlTWFuYWdlciA9IHN0YXRlTWFuYWdlcjtcbiAgICAgICAgdGhpcy5fc2hhcmVkU3RvcmVNYW5hZ2VyID0gc3RhdGVNYW5hZ2VyLnNoYXJlZFN0b3JlTWFuYWdlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Db21wb25lbnRJbml0KCkge1xuICAgICAgICBzdXBlci5vbkNvbXBvbmVudEluaXQoKTtcblxuICAgICAgICAvLyBXaGVuIHN0YXRlIGlkZW50aWZpZXIgaXMgbm90IGRlZmluZWQsIGRlZmF1bHQgdG8gZGlyZWN0aXZlIG5hbWUuXG4gICAgICAgIGlmIChfLmlzRW1wdHkodGhpcy5zdGF0ZUlkKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUlkID0gdGhpcy5nZXRDb25maWcoKS5kaXJlY3RpdmU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZXRlcm1pbmUgb3VyIHBhcmVudCBhbmQgcmVnaXN0ZXIgb3Vyc2VsdmVzIHdpdGggaXQuXG4gICAgICAgIHRoaXMuX3BhcmVudCA9IHRoaXMuX2ZpbmRQYXJlbnRDb21wb25lbnQoKTtcbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5fcGFyZW50Ll9yZWdpc3RlckNoaWxkKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5nbG9iYWxTdGF0ZUlkID0gdGhpcy5fcGFyZW50Lmdsb2JhbFN0YXRlSWQgKyAnLScgKyB0aGlzLnN0YXRlSWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZU1hbmFnZXIuYWRkVG9wTGV2ZWxDb21wb25lbnQodGhpcyk7XG4gICAgICAgICAgICB0aGlzLmdsb2JhbFN0YXRlSWQgPSB0aGlzLnN0YXRlSWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhbnkgcGVuZGluZyBzdGF0ZSBmb3IgdXMuXG4gICAgICAgIHRoaXMuX3N0YXRlTWFuYWdlci5sb2FkUGVuZGluZ0NvbXBvbmVudFN0YXRlKHRoaXMpO1xuXG4gICAgICAgIC8vIEF1dG9tYXRpY2FsbHkgbG9hZCBhbnkgY29uZmlndXJlZCBzaGFyZWQgc3RhdGUuXG4gICAgICAgIGNvbnN0IHN0YXRlTWV0YWRhdGEgPSB0aGlzLl9fc3RhdGVNZXRhZGF0YTtcbiAgICAgICAgXy5mb3JPd24oc3RhdGVNZXRhZGF0YSwgKG1ldGFkYXRhKSA9PiB7XG4gICAgICAgICAgICBpZiAobWV0YWRhdGEuc2hhcmVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2hhcmVkU3RvcmVOYW1lID0gdGhpc1ttZXRhZGF0YS5nZXRTaGFyZWRTdG9yZU5hbWVQcm9wZXJ0eSgpXTtcbiAgICAgICAgICAgICAgICBpZiAoIV8uaXNFbXB0eShzaGFyZWRTdG9yZU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlID0gdGhpcy5fc2hhcmVkU3RvcmVNYW5hZ2VyLmdldFN0b3JlKHNoYXJlZFN0b3JlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXNbbWV0YWRhdGEucHJvcGVydHlOYW1lXSA9IHN0b3JlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX3NldHVwU2hhcmVkU3RvcmUobWV0YWRhdGEucHJvcGVydHlOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB1cCB0aGUgc2hhcmVkIHN0b3JlLiBUaGlzIG1ldGhvZCBtYXkgYmUgb3ZlcnJpZGVuIGJ5IHN1YmNsYXNzZXMgd2hlbiBzb21ldGhpbmdcbiAgICAgKiBkaWZmZXJlbnQgc2hvdWxkIGJlIGRvbmUgaGVyZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RvcmV9IFNoYXJlZCBzdGF0ZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfc2V0dXBTaGFyZWRTdG9yZShzdG9yZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIC8vIFN1YnNjcmliZSB0byBzaGFyZWQgc3RvcmUsIHNvIHRoYXQgdGhpcyBjb21wb25lbnQncyBzY29wZSBnZXRzIHVwZGF0ZWQgd2hlbiB0aGVcbiAgICAgICAgLy8gdmFsdWUgaW4gdGhlIHN0b3JlIGlzIHVwZGF0ZWQuXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlU2hhcmVkU3RhdGUoc3RvcmUsIF8ubm9vcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgc3RhdGUgbWFuYWdlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHN0YXRlTWFuYWdlcigpOiBTdGF0ZU1hbmFnZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RhdGVNYW5hZ2VyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHNoYXJlZCBzdG9yZSBtYW5hZ2VyLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXQgc2hhcmVkU3RvcmVNYW5hZ2VyKCk6IFNoYXJlZFN0b3JlTWFuYWdlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaGFyZWRTdG9yZU1hbmFnZXI7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ29tcG9uZW50RGVzdHJveWVkKCk6IHZvaWQge1xuICAgICAgICAvLyBTYXZlIGN1cnJlbnQgY29tcG9uZW50IHN0YXRlLCBzbyBpdCB3aWxsIGJlIGF2YWlsYWJsZSB3aGVuIHRoaXMgY29tcG9uZW50XG4gICAgICAgIC8vIGlzIGluc3RhbnRpYXRlZCBhZ2Fpbi5cbiAgICAgICAgdGhpcy5fc3RhdGVNYW5hZ2VyLnNhdmVQZW5kaW5nQ29tcG9uZW50U3RhdGUodGhpcyk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5fcGFyZW50Ll91bnJlZ2lzdGVyQ2hpbGQodGhpcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZU1hbmFnZXIucmVtb3ZlVG9wTGV2ZWxDb21wb25lbnQodGhpcyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlci5vbkNvbXBvbmVudERlc3Ryb3llZCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGFmdGVyIHRoZSBjb21wb25lbnQncyBzdGF0ZSBoYXMgYmVlbiBsb2FkZWQuXG4gICAgICovXG4gICAgcHVibGljIG9uQ29tcG9uZW50U3RhdGVBZnRlckxvYWQoKTogdm9pZCB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgYnkgZGVmYXVsdC5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBiZWVuIHNhdmVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBvbkNvbXBvbmVudFN0YXRlUHJlU2F2ZSgpOiB2b2lkIHtcbiAgICAgICAgLy8gRG8gbm90aGluZyBieSBkZWZhdWx0LlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc2NvdmVycyB0aGUgcGFyZW50IHN0YXRlZnVsIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9maW5kUGFyZW50Q29tcG9uZW50KCk6IFN0YXRlZnVsQ29tcG9uZW50QmFzZSB7XG4gICAgICAgIGxldCBzY29wZSA9IHRoaXMuJHNjb3BlLiRwYXJlbnQ7XG4gICAgICAgIHdoaWxlIChzY29wZSkge1xuICAgICAgICAgICAgaWYgKHNjb3BlWydjdHJsJ10gaW5zdGFuY2VvZiBTdGF0ZWZ1bENvbXBvbmVudEJhc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NvcGVbJ2N0cmwnXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2NvcGUgPSBzY29wZS4kcGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXJzIGEgbmV3IGNoaWxkIG9mIHRoaXMgc3RhdGVmdWwgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtTdGF0ZWZ1bENvbXBvbmVudEJhc2V9IGNoaWxkIENoaWxkIGNvbXBvbmVudCBpbnN0YW5jZVxuICAgICAqL1xuICAgIHByaXZhdGUgX3JlZ2lzdGVyQ2hpbGQoY2hpbGQ6IFN0YXRlZnVsQ29tcG9uZW50QmFzZSkge1xuICAgICAgICAvLyBFbnN1cmUgdGhlIGNoaWxkJ3MgbG9jYWwgc3RhdGUgaWQgaXMgdW5pcXVlLlxuICAgICAgICBpZiAoXy5hbnkodGhpcy5fY2hpbGRyZW4sIChjKSA9PiBjLnN0YXRlSWQgPT09IGNoaWxkLnN0YXRlSWQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgR2VuRXJyb3IoXCJEdXBsaWNhdGUgc3RhdGVmdWwgY29tcG9uZW50IHN0YXRlIGlkZW50aWZpZXIgJ1wiICsgY2hpbGQuc3RhdGVJZCArIFwiJy5cIik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbnJlZ2lzdGVycyBhbiBleGlzdGluZyBjaGlsZCBvZiB0aGlzIHN0YXRlZnVsIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7U3RhdGVmdWxDb21wb25lbnRCYXNlfSBjaGlsZCBDaGlsZCBjb21wb25lbnQgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBwcml2YXRlIF91bnJlZ2lzdGVyQ2hpbGQoY2hpbGQ6IFN0YXRlZnVsQ29tcG9uZW50QmFzZSkge1xuICAgICAgICB0aGlzLl9jaGlsZHJlbiA9IF8ud2l0aG91dCh0aGlzLl9jaGlsZHJlbiwgY2hpbGQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHBhcmVudCBzdGF0ZWZ1bCBjb21wb25lbnQuXG4gICAgICovXG4gICAgcHVibGljIHBhcmVudENvbXBvbmVudCgpOiBTdGF0ZWZ1bENvbXBvbmVudEJhc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBsaXN0IG9mIGNoaWxkIHN0YXRlZnVsIGNvbXBvbmVudHMuXG4gICAgICovXG4gICAgcHVibGljIGNoaWxkQ29tcG9uZW50cygpOiBTdGF0ZWZ1bENvbXBvbmVudEJhc2VbXSB7XG4gICAgICAgIHJldHVybiBfLmNsb25lKHRoaXMuX2NoaWxkcmVuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyBhIGNoaWxkIGNvbXBvbmVudCBieSBpdHMgc3RhdGUgaWRlbnRpZmllci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZUlkIENoaWxkJ3Mgc3RhdGUgaWRlbnRpZmllclxuICAgICAqIEByZXR1cm4ge1N0YXRlZnVsQ29tcG9uZW50QmFzZX0gQ2hpbGQgY29tcG9uZW50IGluc3RhbmNlXG4gICAgICovXG4gICAgcHVibGljIGdldENoaWxkQ29tcG9uZW50PFQgZXh0ZW5kcyBTdGF0ZWZ1bENvbXBvbmVudEJhc2U+KHN0YXRlSWQ6IHN0cmluZyk6IFQge1xuICAgICAgICByZXR1cm4gPFQ+IF8uZmluZCh0aGlzLl9jaGlsZHJlbiwgKGNoaWxkKSA9PiBjaGlsZC5zdGF0ZUlkID09PSBzdGF0ZUlkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmVzIHRvIHNoYXJlZCBzdGF0ZS4gVGhpcyBpcyB0aGUgc2FtZSBhcyBhIG5vcm1hbCBzdWJzY3JpYmUsIGJ1dCBpblxuICAgICAqIGFkZGl0aW9uIGl0IGFsc28gcHJvcGVybHkgaGFuZGxlcyB1bmRlcmx5aW5nIGRhdGEgc3RvcmUgY2hhbmdlcyB3aGVuXG4gICAgICogY29tcG9uZW50IHN0YXRlIGlzIHJlbG9hZGVkLlxuICAgICAqXG4gICAgICogVGhlIHZhbHVlIG9ic2VydmVkIGZyb20gdGhlIHNoYXJlZCBzdG9yZSBNVVNUIE5PVCBiZSBtdXRhdGVkIGluIGFueSB3YXkgYXNcbiAgICAgKiBkb2luZyBzbyBtYXkgY2F1c2UgdW5kZWZpbmVkIGJlaGF2aW9yLiBJZiB5b3UgbmVlZCB0byBtdXRhdGUgdGhlIG9ic2VydmVkXG4gICAgICogdmFsdWUsIHVzZSBbW3N1YnNjcmliZVNoYXJlZFN0YXRlTXV0YWJsZV1dIGluc3RlYWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHNoYXJlZCBzdGF0ZVxuICAgICAqIEBwYXJhbSBjYWxsYmFjayBDYWxsYmFjayB0byBiZSBpbnZva2VkIG9uIHN1YnNjcmlwdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBzdWJzY3JpYmVTaGFyZWRTdGF0ZShuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdG9yZU1ldGFkYXRhID0gdGhpcy5fZ2V0U3RhdGVNZXRhZGF0YShuYW1lKTtcbiAgICAgICAgaWYgKCFzdG9yZU1ldGFkYXRhIHx8ICFzdG9yZU1ldGFkYXRhLnNoYXJlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEdlbkVycm9yKFwiU2hhcmVkIHN0YXRlICdcIiArIG5hbWUgKyBcIicgbm90IGZvdW5kLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN1YnNjcmliZXIgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdG9yZTogU2hhcmVkU3RvcmU8YW55LCBhbnk+ID0gdGhpc1tzdG9yZU1ldGFkYXRhLnByb3BlcnR5TmFtZV07XG4gICAgICAgICAgICBpZiAoIXN0b3JlKSB7XG4gICAgICAgICAgICAgICAgLy8gQGlmbmRlZiBHRU5KU19QUk9EVUNUSU9OXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBHZW5FcnJvcihgSWdub3JlZCBtaXNzaW5nIHN0b3JlOiAke3N0b3JlTWV0YWRhdGEucHJvcGVydHlOYW1lfSAke3RoaXMuZ2xvYmFsU3RhdGVJZH1gKTtcbiAgICAgICAgICAgICAgICAvLyBAZW5kaWZcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc3RvcmUpIHJldHVybjtcbiAgICAgICAgICAgIHRoaXMuX3NoYXJlZFN0b3JlU3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuc3Vic2NyaWJlKGNhbGxiYWNrLCBzdG9yZS5vYnNlcnZhYmxlKCkpKTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl9zaGFyZWRTdG9yZVN1YnNjcmliZVJlcXVlc3RzLnB1c2goc3Vic2NyaWJlcik7XG4gICAgICAgIHN1YnNjcmliZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHZlcnNpb24gb2YgW1tzdWJzY3JpYmVTaGFyZWRTdGF0ZV1dLCB3aGljaCBlbnN1cmVzIHRoYXQgdGhlIG9ic2VydmVkIHNoYXJlZFxuICAgICAqIHN0b3JlIHZhbHVlIGlzIGNvcGllZCBhbmQgY2FuIHRodXMgYmUgc2FmZWx5IG11dGF0ZWQgYWZ0ZXJ3YXJkcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2Ygc2hhcmVkIHN0YXRlXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIENhbGxiYWNrIHRvIGJlIGludm9rZWQgb24gc3Vic2NyaXB0aW9uXG4gICAgICovXG4gICAgcHVibGljIHN1YnNjcmliZVNoYXJlZFN0YXRlTXV0YWJsZTxUPihuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAodmFsdWU6IFQpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVTaGFyZWRTdGF0ZShuYW1lLCAodmFsdWUpID0+IGNhbGxiYWNrKGFuZ3VsYXIuY29weSh2YWx1ZSkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG1ldGFkYXRhIGZvciBzcGVjaWZpYyBjb21wb25lbnQgc3RhdGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHNoYXJlZCBzdGF0ZSAobm90IHByb3BlcnR5IG5hbWUpXG4gICAgICogQHJldHVybiB7U3RhdGVJdGVtTWV0YWRhdGF9IFN0YXRlIG1ldGFkYXRhXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0U3RhdGVNZXRhZGF0YShuYW1lOiBzdHJpbmcpOiBTdGF0ZUl0ZW1NZXRhZGF0YSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9fc3RhdGVNZXRhZGF0YVtuYW1lXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTYXZlcyB0aGlzIGNvbXBvbmVudCdzIGN1cnJlbnQgc3RhdGUgYW5kIHJldHVybnMgaXQuXG4gICAgICovXG4gICAgcHVibGljIHNhdmVTdGF0ZShzYXZlQ2hpbGRyZW46IGJvb2xlYW4gPSB0cnVlKTogYW55IHtcbiAgICAgICAgdGhpcy5vbkNvbXBvbmVudFN0YXRlUHJlU2F2ZSgpO1xuXG4gICAgICAgIGxldCByZXN1bHQgPSB7fTtcbiAgICAgICAgbGV0IHN0YXRlID0gcmVzdWx0W3RoaXMuZ2xvYmFsU3RhdGVJZF0gPSB7fTtcbiAgICAgICAgXy5mb3JPd24odGhpcy5fX3N0YXRlTWV0YWRhdGEsIChtZXRhZGF0YSwga2V5KSA9PiB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzW21ldGFkYXRhLnByb3BlcnR5TmFtZV07XG5cbiAgICAgICAgICAgIGlmIChtZXRhZGF0YS5zaGFyZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBJbiBjYXNlIG9mIHNoYXJlZCBzdGF0ZSwgc2F2ZSB0aGUgaWRlbnRpZmllciBvZiB0aGUgc2hhcmVkIHN0b3JlLlxuICAgICAgICAgICAgICAgIHZhbHVlID0gKDxTaGFyZWRTdG9yZTxhbnksIGFueT4+IHZhbHVlKS5zdG9yZUlkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdGF0ZVtrZXldID0gdmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNhdmUgY2hpbGQgc3RhdGUuXG4gICAgICAgIGlmIChzYXZlQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5fY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBfLmV4dGVuZChyZXN1bHQsIGNoaWxkLnNhdmVTdGF0ZSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTG9hZHMgdGhpcyBjb21wb25lbnQncyBjdXJyZW50IHN0YXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHthbnl9IGdsb2JhbFN0YXRlIEdsb2JhbCBzdGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBsb2FkU3RhdGUoZ2xvYmFsU3RhdGU6IGFueSwgbG9hZENoaWxkcmVuOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IGdsb2JhbFN0YXRlW3RoaXMuZ2xvYmFsU3RhdGVJZF07XG4gICAgICAgIGxldCBzaGFyZWRTdGF0ZUNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgXy5mb3JPd24odGhpcy5fX3N0YXRlTWV0YWRhdGEsIChtZXRhZGF0YSwga2V5KSA9PiB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBzdGF0ZVtrZXldO1xuICAgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodmFsdWUpKSByZXR1cm47XG5cbiAgICAgICAgICAgIGlmIChtZXRhZGF0YS5zaGFyZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIHNoYXJlZCBzdG9yZSBmcm9tIHRoZSBzaGFyZWQgc3RvcmUgbWFuYWdlci5cbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ1ZhbHVlOiBTaGFyZWRTdG9yZTxhbnksIGFueT4gPSB0aGlzW21ldGFkYXRhLnByb3BlcnR5TmFtZV07XG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nVmFsdWUuc3RvcmVJZCAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1ttZXRhZGF0YS5wcm9wZXJ0eU5hbWVdID0gdGhpcy5fc2hhcmVkU3RvcmVNYW5hZ2VyLmdldFN0b3JlPGFueT4odmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBzaGFyZWRTdGF0ZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpc1ttZXRhZGF0YS5wcm9wZXJ0eU5hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIExvYWQgY2hpbGQgc3RhdGUuXG4gICAgICAgIGlmIChsb2FkQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5fY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBjaGlsZC5sb2FkU3RhdGUoZ2xvYmFsU3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNoYXJlZFN0YXRlQ2hhbmdlZCkge1xuICAgICAgICAgICAgLy8gQ2FuY2VsIGFueSBwcmV2aW91cyBzdWJzY3JpcHRpb25zIHRvIHNoYXJlZCBzdG9yZXMuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHN1YnNjcmlwdGlvbiBvZiB0aGlzLl9zaGFyZWRTdG9yZVN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVzdWJzY3JpYmUsIHVzaW5nIHRoZSBuZXcgc3RvcmVzLlxuICAgICAgICAgICAgZm9yIChjb25zdCByZXF1ZXN0IG9mIHRoaXMuX3NoYXJlZFN0b3JlU3Vic2NyaWJlUmVxdWVzdHMpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uQ29tcG9uZW50U3RhdGVBZnRlckxvYWQoKTtcblxuICAgICAgICAvLyBQcm9wYWdhdGUgc3RhdGUgdXBkYXRlcyB0byB0aGUgdmlldy5cbiAgICAgICAgdGhpcy4kc2NvcGUuJGFwcGx5QXN5bmMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNvbmZpZ3VyZUNvbXBvbmVudChjb25maWc6IENvbXBvbmVudENvbmZpZ3VyYXRpb24pOiBDb21wb25lbnRDb25maWd1cmF0aW9uIHtcbiAgICAgICAgY29uc3Qgc3RhdGVNZXRhZGF0YSA9IHRoaXMucHJvdG90eXBlLl9fc3RhdGVNZXRhZGF0YTtcbiAgICAgICAgaWYgKCFjb25maWcuYmluZGluZ3MpIGNvbmZpZy5iaW5kaW5ncyA9IHt9O1xuXG4gICAgICAgIF8uZm9yT3duKHN0YXRlTWV0YWRhdGEsIChtZXRhZGF0YSwga2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAobWV0YWRhdGEuc2hhcmVkKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLmJpbmRpbmdzW21ldGFkYXRhLmdldFNoYXJlZFN0b3JlTmFtZVByb3BlcnR5KCldID0gJ0BzdG9yZScgKyBfLmNhcGl0YWxpemUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjb25maWc7XG4gICAgfVxufVxuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgYmVpbmcgcGFydCBvZiB0aGUgY29tcG9uZW50J3Mgc3RhdGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgT3B0aW9uYWwgc3RhdGUgbmFtZVxuICogQHBhcmFtIHtib29sZWFufSBzaGFyZWQgRG9lcyB0aGlzIHN0YXRlIHJlZmVyZW5jZSBhIHNoYXJlZCBzdG9yZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhdGUobmFtZT86IHN0cmluZywgc2hhcmVkOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICByZXR1cm4gKHRhcmdldDogU3RhdGVmdWxDb21wb25lbnRCYXNlLCBwcm9wZXJ0eUtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICghbmFtZSkgbmFtZSA9IHByb3BlcnR5S2V5O1xuXG4gICAgICAgIGlmIChuYW1lWzBdID09PSAnXycpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5FcnJvcihcIlN0YXRlIGlkZW50aWZpZXJzIHN0YXJ0aW5nIHdpdGggYW4gdW5kZXJzY29yZSBhcmUgcmVzZXJ2ZWQuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0YXJnZXQuX19zdGF0ZU1ldGFkYXRhKSB7XG4gICAgICAgICAgICB0YXJnZXQuX19zdGF0ZU1ldGFkYXRhID0ge307XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGFyZ2V0Ll9fc3RhdGVNZXRhZGF0YVtuYW1lXSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEdlbkVycm9yKFwiRHVwbGljYXRlIHN0YXRlIGlkZW50aWZpZXIgJ1wiICsgbmFtZSArIFwiJyBvbiBzdGF0ZWZ1bCBjb21wb25lbnQgJ1wiICsgdGFyZ2V0ICsgXCInLlwiKTtcbiAgICAgICAgfVxuICAgICAgICB0YXJnZXQuX19zdGF0ZU1ldGFkYXRhW25hbWVdID0gbmV3IFN0YXRlSXRlbU1ldGFkYXRhKHByb3BlcnR5S2V5LCBzaGFyZWQpO1xuICAgIH07XG59XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBiZWluZyBwYXJ0IG9mIHRoZSBjb21wb25lbnQncyBzdGF0ZSwgd2hpY2ggcmVmZXJlbmNlc1xuICogYSBzaGFyZWQgc3RvcmUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgT3B0aW9uYWwgc3RhdGUgbmFtZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hhcmVkU3RhdGUobmFtZT86IHN0cmluZykge1xuICAgIHJldHVybiBzdGF0ZShuYW1lLCB0cnVlKTtcbn1cbiJdfQ== |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var _ = require("lodash"); | ||
/** | ||
@@ -13,6 +12,2 @@ * Makes an object deeply immutable by using Object.freeze. The passed object | ||
function makeImmutable(object) { | ||
if (_.isObject(object)) { | ||
_.each(object, function (property) { return makeImmutable(property); }); | ||
return Object.freeze(object); | ||
} | ||
return object; | ||
@@ -22,2 +17,2 @@ } | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlL3V0aWxzL2ltbXV0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUE0QjtBQUU1Qjs7Ozs7OztHQU9HO0FBQ0gsdUJBQWlDLE1BQVM7SUFDdEMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBQyxRQUFRLElBQUssT0FBQSxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQXZCLENBQXVCLENBQUMsQ0FBQztRQUN0RCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBUEQsc0NBT0MiLCJmaWxlIjoiY29yZS91dGlscy9pbW11dGFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbi8qKlxuICogTWFrZXMgYW4gb2JqZWN0IGRlZXBseSBpbW11dGFibGUgYnkgdXNpbmcgT2JqZWN0LmZyZWV6ZS4gVGhlIHBhc3NlZCBvYmplY3RcbiAqIHdpbGwgYmUgY2hhbmdlZCBzbyB0aGF0IGl0IHdpbGwgbm93IGJlIGltbXV0YWJsZSBhbmQgdGhlIHNhbWUgb2JqZWN0IHdpbGxcbiAqIGJlIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB7VH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbWFrZSBpbW11dGFibGVcbiAqIEByZXR1cm4ge1R9IFRoZSBzYW1lIG9iamVjdCB0aGF0IHdhcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VJbW11dGFibGU8VD4ob2JqZWN0OiBUKTogVCB7XG4gICAgLy8gQGlmbmRlZiBHRU5KU19QUk9EVUNUSU9OXG4gICAgaWYgKF8uaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICBfLmVhY2gob2JqZWN0LCAocHJvcGVydHkpID0+IG1ha2VJbW11dGFibGUocHJvcGVydHkpKTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5mcmVlemUob2JqZWN0KTtcbiAgICB9XG4gICAgLy8gQGVuZGlmXG5cbiAgICByZXR1cm4gb2JqZWN0O1xufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlL3V0aWxzL2ltbXV0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBOzs7Ozs7O0dBT0c7QUFDSCx1QkFBaUMsTUFBUztJQUV0QyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFIRCxzQ0FHQyIsImZpbGUiOiJjb3JlL3V0aWxzL2ltbXV0YWJsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcblxuLyoqXG4gKiBNYWtlcyBhbiBvYmplY3QgZGVlcGx5IGltbXV0YWJsZSBieSB1c2luZyBPYmplY3QuZnJlZXplLiBUaGUgcGFzc2VkIG9iamVjdFxuICogd2lsbCBiZSBjaGFuZ2VkIHNvIHRoYXQgaXQgd2lsbCBub3cgYmUgaW1tdXRhYmxlIGFuZCB0aGUgc2FtZSBvYmplY3Qgd2lsbFxuICogYmUgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHtUfSBvYmplY3QgVGhlIG9iamVjdCB0byBtYWtlIGltbXV0YWJsZVxuICogQHJldHVybiB7VH0gVGhlIHNhbWUgb2JqZWN0IHRoYXQgd2FzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZUltbXV0YWJsZTxUPihvYmplY3Q6IFQpOiBUIHtcbiAgICAvLyBAaWZuZGVmIEdFTkpTX1BST0RVQ1RJT05cbiAgICBpZiAoXy5pc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgIF8uZWFjaChvYmplY3QsIChwcm9wZXJ0eSkgPT4gbWFrZUltbXV0YWJsZShwcm9wZXJ0eSkpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmZyZWV6ZShvYmplY3QpO1xuICAgIH1cbiAgICAvLyBAZW5kaWZcblxuICAgIHJldHVybiBvYmplY3Q7XG59XG4iXX0= |
@@ -147,5 +147,2 @@ "use strict"; | ||
mockApi = _api_; | ||
if (_.contains(tests.toString(), 'debugger') || _.contains(tests.toString(), ' fit(')) { | ||
provideRealDOM(); | ||
} | ||
})); | ||
@@ -182,2 +179,2 @@ afterEach(function () { | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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RUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO29CQUNuQiw2RkFBNkY7b0JBQzdGLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzNDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDckIsQ0FBQztnQkFFRCxNQUFNLENBQUMsU0FBUyxDQUFDO1lBQ3JCLENBQUM7WUFFRCxNQUFNLEVBQUU7Z0JBQ0osTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLENBQUM7WUFFRCxHQUFHLEVBQUU7Z0JBQ0QsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUNuQixDQUFDO1lBRUQsS0FBSyxFQUFFO2dCQUNILE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDbEIsQ0FBQztZQUVELGNBQWMsRUFBRSxjQUFjO1NBQ2pDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQS9HRCw4Q0ErR0MiLCJmaWxlIjoidGVzdHMvY29tcG9uZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgYW5ndWxhciBmcm9tICdhbmd1bGFyJztcbmltcG9ydCAnYW5ndWxhci1tb2Nrcyc7XG5cbmltcG9ydCB7UmVzb2x3ZUFwaX0gZnJvbSAnLi4vYXBpL2luZGV4JztcbmltcG9ydCB7TW9ja0Jhc2UsIE1vY2tBcGl9IGZyb20gJy4uL2FwaS9tb2NrJztcbmltcG9ydCB7bmdFcXVhbE1hdGNoZXJ9IGZyb20gJy4vbWF0Y2hlcnMnO1xuaW1wb3J0IHtTaGFyZWRTdG9yZUZhY3RvcnksIFNoYXJlZFN0b3JlUHJvdmlkZXJ9IGZyb20gJy4uL2NvcmUvc2hhcmVkX3N0b3JlL2luZGV4JztcbmltcG9ydCB7R2VuRXJyb3J9IGZyb20gJy4uL2NvcmUvZXJyb3JzL2Vycm9yJztcbmltcG9ydCB7Y29tcG9zZX0gZnJvbSAnLi4vY29yZS91dGlscy9sYW5nJztcbmltcG9ydCB7TW9ja0FwaVNlcnZpY2V9IGZyb20gJy4vbW9jayc7XG5pbXBvcnQgJy4vbWF0Y2hlcnMnO1xuXG4vLyBTZXJ2aWNlIG1vZHVsZXMgdGhhdCBzaG91bGQgYmUgbG9hZGVkLlxuaW1wb3J0ICcuLi9jb3JlL3NoYXJlZF9zdG9yZS9pbmRleCc7XG5pbXBvcnQgJy4uL2NvcmUvY29tcG9uZW50cy9tYW5hZ2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREZXNjcmlwdG9yPFQ+IHtcbiAgICBlbGVtZW50OiBhbmd1bGFyLklBdWdtZW50ZWRKUXVlcnk7XG4gICAgY3RybDogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRTdG9yZURlc2NyaXB0b3Ige1xuICAgIHN0b3JlSWQ6IHN0cmluZztcbiAgICBpbml0aWFsU3RhdGU/OiBhbnk7XG4gICAgZmFjdG9yeT86IFNoYXJlZFN0b3JlRmFjdG9yeTxhbnksIGFueT47XG59XG5cbi8qKlxuICogSGVscGVyIGZvciBjcmVhdGluZyBzaW1wbGUgc2hhcmVkIHN0b3JlcyBpbiB0ZXN0cy4gQWxzbyBzZWVcbiAqIFtbU2hhcmVkU3RvcmVQcm92aWRlci5jcmVhdGVdXS5cbiAqXG4gKiBAcGFyYW0gc3RvcmVJZCBJZGVudGlmaWVyIG9mIHRoZSBzaGFyZWQgc3RvcmUgKG11c3QgYmUgZ2xvYmFsbHkgdW5pcXVlKVxuICogQHBhcmFtIGluaXRpYWxTdGF0ZSBPcHRpb25hbCBpbml0aWFsIHN0YXRlIG9mIHRoZSBzaGFyZWQgc3RvcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNoYXJlZFN0b3JlKHN0b3JlSWQ6IHN0cmluZywgaW5pdGlhbFN0YXRlOiBhbnkgPSBudWxsKTogU2hhcmVkU3RvcmVEZXNjcmlwdG9yIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBzdG9yZUlkLFxuICAgICAgICBpbml0aWFsU3RhdGUsXG4gICAgfTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZm9yIHVzaW5nIHNoYXJlZCBzdG9yZXMgaW4gdGVzdHMuXG4gKlxuICogQHBhcmFtIHN0b3JlSWQgSWRlbnRpZmllciBvZiB0aGUgc2hhcmVkIHN0b3JlIChtdXN0IGJlIGdsb2JhbGx5IHVuaXF1ZSlcbiAqIEBwYXJhbSBmYWN0b3J5IFNoYXJlZCBzdG9yZSBjbGFzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU2hhcmVkU3RvcmUoc3RvcmVJZDogc3RyaW5nLCBmYWN0b3J5OiBTaGFyZWRTdG9yZUZhY3Rvcnk8YW55LCBhbnk+KTogU2hhcmVkU3RvcmVEZXNjcmlwdG9yIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBzdG9yZUlkLFxuICAgICAgICBmYWN0b3J5LFxuICAgIH07XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHdoZW4gdW5pdCB0ZXN0aW5nIGNvbXBvbmVudHMgd2hpY2ggY29tcGlsZXMgYSBjb21wb25lbnQuXG4gKlxuICogQHBhcmFtICRjb21waWxlIENvbXBpbGUgc2VydmljZVxuICogQHBhcmFtICRzY29wZSBTY29wZSBzZXJ2aWNlXG4gKiBAcGFyYW0gdGVtcGxhdGUgdGVtcGxhdGUgaW4gdGhlIGZvcm0gb2YgYSBkaXJlY3RpdmUsIGUuZy4gYCc8Z2VuLXNvbWUtY29tcG9uZW50PjxnZW4tc29tZS1jb21wb25lbnQ+J2BcbiAqIEByZXR1cm5zIHtDb21wb25lbnREZXNjcmlwdG9yfSBFbGVtZW50IGFuZCBpdHMgY29udHJvbGxlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tcG9uZW50PFQ+KCRjb21waWxlOiBhbmd1bGFyLklDb21waWxlU2VydmljZSwgJHNjb3BlOiBhbmd1bGFyLklTY29wZSwgdGVtcGxhdGU6IHN0cmluZyk6IENvbXBvbmVudERlc2NyaXB0b3I8VD4ge1xuXG4gICAgLy8gVE9ETzogaW5zdGVhZCBvZiBoYXZpbmcgZ2V0Q29tcG9uZW50PFQ+LCB3ZSBjb3VsZCBoYXZlIGdldENvbXBvbmVudDxUIGV4dGVuZHMgQ29tcG9uZW50QmFzZT4gYW5kIHRoZW4geW91IHdvdWxkIGRvXG4gICAgLy8gVC5hc1ZpZXcgdGh1cyByZWR1Y2luZyB0aGUgbmVlZCBmb3IgdGVtcGxhdGUgYXJndW1lbnQsIGJ1dCBsb29rcyBsaWtlIHR5cGVzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCB0aGF0ICh5ZXQpXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy81Njc3XG5cbiAgICBjb25zdCBlbGVtZW50ID0gJGNvbXBpbGUodGVtcGxhdGUpKCRzY29wZSk7XG4gICAgJHNjb3BlLiRkaWdlc3QoKTtcblxuICAgIGxldCBjdHJsOiBUO1xuICAgIHRyeSB7XG4gICAgICAgIGN0cmwgPSAkc2NvcGVbJyQkY2hpbGRUYWlsJ10uY3RybDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBHZW5FcnJvcihcIlVuYWJsZSB0byBmZXRjaCBjb21wb25lbnQgY29udHJvbGxlci4gRGlkIHlvdSBsb2FkIHlvdXIgbW9kdWxlIGluIHRlc3RzP1wiKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBlbGVtZW50OiBlbGVtZW50LFxuICAgICAgICBjdHJsOiBjdHJsLFxuICAgIH07XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGV4cG9zZWQgdG8gdGVzdCBjYXNlIGZ1bmN0aW9ucywgd2hpY2ggYXJlIGNyZWF0ZWQgdXNpbmcgW1tkZXNjcmliZUNvbXBvbmVudF1dLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFRlc3RlciB7XG4gICAgLy8vIEFuZ3VsYXIgbW9kdWxlLCB3aGljaCBtYXkgYmUgdXNlZCB0byByZWdpc3RlciB0ZXN0IGNvbXBvbmVudHMgaW4uXG4gICAgbW9kdWxlOiBhbmd1bGFyLklNb2R1bGU7XG5cbiAgICAvKipcbiAgICAgKiBTZWUgW1tnZXRDb21wb25lbnRdXS5cbiAgICAgKi9cbiAgICBjcmVhdGVDb21wb25lbnQ8VD4odGVtcGxhdGU6IHN0cmluZyk6IENvbXBvbmVudERlc2NyaXB0b3I8VD47XG5cbiAgICAvKipcbiAgICAgKiBSdW5zIGFuIEFuZ3VsYXIgZGlnZXN0IGN5Y2xlLlxuICAgICAqL1xuICAgIGRpZ2VzdCgpOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbW9jayB2ZXJzaW9uIG9mIHRoZSBBUEksIHdoaWNoIG1heSBiZSB1c2VkIHRvIHNpbXVsYXRlIHRoZSBiYWNrZW5kXG4gICAgICogd2hlbiB0ZXN0aW5nIGNvbXBvbmVudHMuIFRoZSBtb2NrIEFQSSBpcyBhdXRvbWF0aWNhbGx5IGluamVjdGVkIGludG8gY29tcG9uZW50c1xuICAgICAqIGFuZCByZXBsYWNlcyB0aGUgdXN1YWwgQVBJLlxuICAgICAqL1xuICAgIGFwaSgpOiBSZXNvbHdlQXBpICYgTW9ja0Jhc2UgJiBNb2NrQXBpU2VydmljZTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHNjb3BlLlxuICAgICAqL1xuICAgIHNjb3BlKCk6IGFuZ3VsYXIuSVNjb3BlO1xuXG4gICAgLyoqXG4gICAgICogRW5zdXJlcyB0aGF0IHRoZSB0ZXN0ZWQgY29tcG9uZW50cyBhcmUgaW5zZXJ0ZWQgaW50byBhbiBhY3R1YWwgRE9NLCBzbyB0aGluZ3NcbiAgICAgKiBsaWtlIGhlaWdodCBjYWxjdWxhdGlvbnMgd29yayBhcyBleHBlY3RlZC4gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBiZWZvcmVcbiAgICAgKiBhbnkgW1tjcmVhdGVDb21wb25lbnRdXSBjYWxscy5cbiAgICAgKi9cbiAgICBwcm92aWRlUmVhbERPTSgpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vY2tBcGlGYWN0b3J5IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKTogUmVzb2x3ZUFwaSAmIE1vY2tCYXNlO1xufVxuXG4vKipcbiAqIEEgaGVscGVyIGZ1bmN0aW9uIHRvIGVhc2UgdGVzdGluZyBvZiBjb21wb25lbnRzLiBJdCB3aWxsIHRha2UgY2FyZSBvZiBtb2NraW5nIHRoZVxuICogdXN1YWwgbW9kdWxlcyBuZWVkZWQgZm9yIHRlc3RpbmcgY29tcG9uZW50cyBhbmQgcHJlcGFyaW5nIGEgbW9kdWxlIHRoYXQgeW91IGNhbiB1c2VcbiAqIHRvIHJlZ2lzdGVyIHRlc3QgY29tcG9uZW50cy5cbiAqXG4gKiBUaGUgdGVzdCBjYXNlIGlzIHBhc3NlZCBhbiBpbnN0YW5jZSBvZiBbW0NvbXBvbmVudFRlc3Rlcl1dLCB3aGljaCBjb250YWlucyBzb21lXG4gKiB1c2VmdWwgcHJvcGVydGllcyBhbmQgbWV0aG9kcyBmb3IgdGVzdGluZyBjb21wb25lbnRzLlxuICpcbiAqIFRoZSBmb2xsb3dpbmcgbW9kdWxlcyBhcmUgYXV0b21hdGljYWxseSBsb2FkZWQ6XG4gKiAqIGByZXNvbHdlLnNlcnZpY2VzLnNoYXJlZF9zdG9yZWBcbiAqXG4gKiBJZiB5b3UgbmVlZCB0byBsb2FkIGFueSBhZGRpdGlvbmFsIG1vZHVsZXMsIHNwZWNpZnkgdGhlbSBpbiB0aGUgYG1vZHVsZXNgXG4gKiBhcmd1bWVudC5cbiAqXG4gKiBAcGFyYW0gZGVzY3JpcHRpb24gVGVzdCBjYXNlIGRlc2NyaXB0aW9uXG4gKiBAcGFyYW0gbW9kdWxlcyBMaXN0IG9mIG1vZHVsZXMgdG8gbG9hZCBmb3IgdGhpcyB0ZXN0XG4gKiBAcGFyYW0gdGVzdHMgVGVzdCBjYXNlIGJvZHlcbiAqIEBwYXJhbSBhcGlDbGFzcyBPcHRpb25hbCBtb2NrIEFQSSBjbGFzcyB0aGF0IHNob3VsZCBiZSB1c2VkXG4gKiBAcGFyYW0gYmFzZU1vZHVsZXMgT3B0aW9uYWwgbGlzdCBvZiBtb2R1bGVzIHRvIGxvYWQgYmVmb3JlIGV2ZXJ5dGhpbmcgZm9yIHRoaXMgdGVzdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVzY3JpYmVDb21wb25lbnQoZGVzY3JpcHRpb246IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVzOiBhbnlbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0czogKHRlc3RlcjogQ29tcG9uZW50VGVzdGVyKSA9PiB2b2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwaUNsYXNzOiBNb2NrQXBpRmFjdG9yeSA9IE1vY2tBcGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZU1vZHVsZXM6IHN0cmluZ1tdID0gW10pOiB2b2lkIHtcbiAgICBkZXNjcmliZShkZXNjcmlwdGlvbiwgKCkgPT4ge1xuICAgICAgICBsZXQgJGNvbXBpbGU6IGFuZ3VsYXIuSUNvbXBpbGVTZXJ2aWNlO1xuICAgICAgICBsZXQgJHNjb3BlOiBhbmd1bGFyLklTY29wZTtcbiAgICAgICAgbGV0IG1vY2tBcGk6IFJlc29sd2VBcGkgJiBNb2NrQmFzZSAmIE1vY2tBcGlTZXJ2aWNlO1xuXG4gICAgICAgIGNvbnN0IG1vZHVsZU5hbWUgPSAncmVzb2x3ZS50ZXN0cy4nICsgZGVzY3JpcHRpb24ucmVwbGFjZSgvIC9nLCAnLicpO1xuICAgICAgICBjb25zdCBtb2R1bGU6IGFuZ3VsYXIuSU1vZHVsZSA9IGFuZ3VsYXIubW9kdWxlKG1vZHVsZU5hbWUsIFtdKTtcblxuICAgICAgICAvLyBMb2FkIGJhc2UgbW9kdWxlcy5cbiAgICAgICAgYmVmb3JlRWFjaChhbmd1bGFyLm1vY2subW9kdWxlKCdyZXNvbHdlLnNlcnZpY2VzLnNoYXJlZF9zdG9yZScpKTtcbiAgICAgICAgYmVmb3JlRWFjaChhbmd1bGFyLm1vY2subW9kdWxlKCdyZXNvbHdlLnNlcnZpY2VzLnN0YXRlX21hbmFnZXInKSk7XG4gICAgICAgIGJhc2VNb2R1bGVzLmZvckVhY2goKGJhc2VNb2R1bGUpID0+IGJlZm9yZUVhY2goYW5ndWxhci5tb2NrLm1vZHVsZShiYXNlTW9kdWxlKSkpO1xuXG4gICAgICAgIGJlZm9yZUVhY2goYW5ndWxhci5tb2NrLm1vZHVsZSgoJHByb3ZpZGU6IGFuZ3VsYXIuYXV0by5JUHJvdmlkZVNlcnZpY2UpID0+IHtcbiAgICAgICAgICAgIC8vIEV4cGxpY2l0bHkgc2V0IHJvb3QgZWxlbWVudCBiZWNhdXNlIHRlc3RzIGRvIG5vdCBnbyB0aHJvdWdoIHVzdWFsXG4gICAgICAgICAgICAvLyBBbmd1bGFyIGJvb3RzdHJhcHBpbmcuXG4gICAgICAgICAgICAkcHJvdmlkZS52YWx1ZSgnJHJvb3RFbGVtZW50JywgYW5ndWxhci5lbGVtZW50KGRvY3VtZW50LmJvZHkpKTtcblxuICAgICAgICAgICAgLy8gUmVwbGFjZSB1c3VhbCBBUEkgc2VydmljZSB3aXRoIG1vY2sgQVBJLlxuICAgICAgICAgICAgJHByb3ZpZGUuc2VydmljZSgnYXBpJywgY29tcG9zZShbYXBpQ2xhc3MsIE1vY2tBcGlTZXJ2aWNlXSkpO1xuICAgICAgICB9KSk7XG4gICAgICAgIGJlZm9yZUVhY2goYW5ndWxhci5tb2NrLm1vZHVsZShtb2R1bGVOYW1lKSk7XG5cbiAgICAgICAgLy8gUmVnaXN0ZXIgYW55IHNoYXJlZCBzdG9yZXMuXG4gICAgICAgIGNvbnN0IFtzaGFyZWRTdG9yZXMsIGFkZGl0aW9uYWxNb2R1bGVzXSA9IF8ucGFydGl0aW9uKG1vZHVsZXMsIChtKSA9PiAhIW0uc3RvcmVJZCk7XG5cbiAgICAgICAgbW9kdWxlLmNvbmZpZygoc2hhcmVkU3RvcmVNYW5hZ2VyUHJvdmlkZXI6IFNoYXJlZFN0b3JlUHJvdmlkZXIpID0+IHtcbiAgICAgICAgICAgIF8uZWFjaChzaGFyZWRTdG9yZXMsIChkZXNjcmlwdG9yOiBTaGFyZWRTdG9yZURlc2NyaXB0b3IpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci5mYWN0b3J5KSB7XG4gICAgICAgICAgICAgICAgICAgIHNoYXJlZFN0b3JlTWFuYWdlclByb3ZpZGVyLnJlZ2lzdGVyKGRlc2NyaXB0b3Iuc3RvcmVJZCwgZGVzY3JpcHRvci5mYWN0b3J5KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzaGFyZWRTdG9yZU1hbmFnZXJQcm92aWRlci5jcmVhdGUoZGVzY3JpcHRvci5zdG9yZUlkLCBkZXNjcmlwdG9yLmluaXRpYWxTdGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIF8uZWFjaChhZGRpdGlvbmFsTW9kdWxlcywgKGFkZGl0aW9uYWxNb2R1bGUpID0+IHtcbiAgICAgICAgICAgIGJlZm9yZUVhY2goYW5ndWxhci5tb2NrLm1vZHVsZShhZGRpdGlvbmFsTW9kdWxlKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEEgY29udGFpbmVyIGluIERPTSB3aGVyZSB3ZSBjYW4gdGVtcG9yYXJpbHkgYXBwZW5kIGNvbXBvbmVudCBlbGVtZW50cy5cbiAgICAgICAgbGV0IGNvbnRhaW5lckVsZW1lbnQ6IGFuZ3VsYXIuSUF1Z21lbnRlZEpRdWVyeSA9IG51bGw7XG5cbiAgICAgICAgZnVuY3Rpb24gcHJvdmlkZVJlYWxET00oKTogdm9pZCB7XG4gICAgICAgICAgICByZW1vdmVSZWFsRE9NKCk7XG4gICAgICAgICAgICBjb25zdCBib2R5ID0gYW5ndWxhci5lbGVtZW50KGRvY3VtZW50LmJvZHkpO1xuICAgICAgICAgICAgY29udGFpbmVyRWxlbWVudCA9IGFuZ3VsYXIuZWxlbWVudCgnPGRpdiBpZD1cInRlc3QtY29udGFpbmVyLWVsZW1lbnRcIj48L2Rpdj4nKTtcbiAgICAgICAgICAgIGJvZHkuYXBwZW5kKGNvbnRhaW5lckVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcmVtb3ZlUmVhbERPTSgpOiB2b2lkIHtcbiAgICAgICAgICAgIGlmIChjb250YWluZXJFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyRWxlbWVudC5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICBjb250YWluZXJFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgICAgICAgamFzbWluZS5hZGRNYXRjaGVycyhuZ0VxdWFsTWF0Y2hlcik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGJlZm9yZUVhY2goYW5ndWxhci5tb2NrLmluamVjdCgoXyRjb21waWxlXywgXyRyb290U2NvcGVfLCBfYXBpXykgPT4ge1xuICAgICAgICAgICAgJGNvbXBpbGUgPSBfJGNvbXBpbGVfO1xuICAgICAgICAgICAgJHNjb3BlID0gXyRyb290U2NvcGVfLiRuZXcoKTtcbiAgICAgICAgICAgIG1vY2tBcGkgPSBfYXBpXztcblxuICAgICAgICAgICAgLy8gQGlmbmRlZiBHRU5KU19QUk9EVUNUSU9OXG4gICAgICAgICAgICAgICAgaWYgKF8uY29udGFpbnModGVzdHMudG9TdHJpbmcoKSwgJ2RlYnVnZ2VyJykgfHwgXy5jb250YWlucyh0ZXN0cy50b1N0cmluZygpLCAnIGZpdCgnKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlUmVhbERPTSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEBlbmRpZlxuICAgICAgICB9KSk7XG5cbiAgICAgICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgICAgICAgICRzY29wZS4kZGVzdHJveSgpO1xuICAgICAgICAgICAgcmVtb3ZlUmVhbERPTSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0ZXN0cyh7XG4gICAgICAgICAgICBtb2R1bGU6IG1vZHVsZSxcblxuICAgICAgICAgICAgY3JlYXRlQ29tcG9uZW50OiBmdW5jdGlvbjxUPih0ZW1wbGF0ZTogc3RyaW5nKTogQ29tcG9uZW50RGVzY3JpcHRvcjxUPiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gZ2V0Q29tcG9uZW50PFQ+KCRjb21waWxlLCAkc2NvcGUsIHRlbXBsYXRlKTtcblxuICAgICAgICAgICAgICAgIGlmIChjb250YWluZXJFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEFwcGVuZCBjb21wb25lbnQgZWxlbWVudCB0byBhY3R1YWwgRE9NLiBPdGhlcndpc2UsIGNvbXB1dGF0aW9ucyBsaWtlIGhlaWdodCB3aWxsIG5vdCB3b3JrLlxuICAgICAgICAgICAgICAgICAgICBjb250YWluZXJFbGVtZW50LmFwcGVuZChjb21wb25lbnQuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICRzY29wZS4kZGlnZXN0KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRpZ2VzdDogZnVuY3Rpb24oKTogdm9pZCB7XG4gICAgICAgICAgICAgICAgJHNjb3BlLiRkaWdlc3QoKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGFwaTogZnVuY3Rpb24oKTogUmVzb2x3ZUFwaSAmIE1vY2tCYXNlICYgTW9ja0FwaVNlcnZpY2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb2NrQXBpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2NvcGU6IGZ1bmN0aW9uKCk6IGFuZ3VsYXIuSVNjb3BlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJHNjb3BlO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcHJvdmlkZVJlYWxET006IHByb3ZpZGVSZWFsRE9NLFxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFDO1lBRUQsTUFBTSxFQUFFO2dCQUNKLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyQixDQUFDO1lBRUQsR0FBRyxFQUFFO2dCQUNELE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDbkIsQ0FBQztZQUVELEtBQUssRUFBRTtnQkFDSCxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ2xCLENBQUM7WUFFRCxjQUFjLEVBQUUsY0FBYztTQUNqQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUE1R0QsOENBNEdDIiwiZmlsZSI6InRlc3RzL2NvbXBvbmVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCAqIGFzIGFuZ3VsYXIgZnJvbSAnYW5ndWxhcic7XG5pbXBvcnQgJ2FuZ3VsYXItbW9ja3MnO1xuXG5pbXBvcnQge1Jlc29sd2VBcGl9IGZyb20gJy4uL2FwaS9pbmRleCc7XG5pbXBvcnQge01vY2tCYXNlLCBNb2NrQXBpfSBmcm9tICcuLi9hcGkvbW9jayc7XG5pbXBvcnQge25nRXF1YWxNYXRjaGVyfSBmcm9tICcuL21hdGNoZXJzJztcbmltcG9ydCB7U2hhcmVkU3RvcmVGYWN0b3J5LCBTaGFyZWRTdG9yZVByb3ZpZGVyfSBmcm9tICcuLi9jb3JlL3NoYXJlZF9zdG9yZS9pbmRleCc7XG5pbXBvcnQge0dlbkVycm9yfSBmcm9tICcuLi9jb3JlL2Vycm9ycy9lcnJvcic7XG5pbXBvcnQge2NvbXBvc2V9IGZyb20gJy4uL2NvcmUvdXRpbHMvbGFuZyc7XG5pbXBvcnQge01vY2tBcGlTZXJ2aWNlfSBmcm9tICcuL21vY2snO1xuaW1wb3J0ICcuL21hdGNoZXJzJztcblxuLy8gU2VydmljZSBtb2R1bGVzIHRoYXQgc2hvdWxkIGJlIGxvYWRlZC5cbmltcG9ydCAnLi4vY29yZS9zaGFyZWRfc3RvcmUvaW5kZXgnO1xuaW1wb3J0ICcuLi9jb3JlL2NvbXBvbmVudHMvbWFuYWdlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RGVzY3JpcHRvcjxUPiB7XG4gICAgZWxlbWVudDogYW5ndWxhci5JQXVnbWVudGVkSlF1ZXJ5O1xuICAgIGN0cmw6IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkU3RvcmVEZXNjcmlwdG9yIHtcbiAgICBzdG9yZUlkOiBzdHJpbmc7XG4gICAgaW5pdGlhbFN0YXRlPzogYW55O1xuICAgIGZhY3Rvcnk/OiBTaGFyZWRTdG9yZUZhY3Rvcnk8YW55LCBhbnk+O1xufVxuXG4vKipcbiAqIEhlbHBlciBmb3IgY3JlYXRpbmcgc2ltcGxlIHNoYXJlZCBzdG9yZXMgaW4gdGVzdHMuIEFsc28gc2VlXG4gKiBbW1NoYXJlZFN0b3JlUHJvdmlkZXIuY3JlYXRlXV0uXG4gKlxuICogQHBhcmFtIHN0b3JlSWQgSWRlbnRpZmllciBvZiB0aGUgc2hhcmVkIHN0b3JlIChtdXN0IGJlIGdsb2JhbGx5IHVuaXF1ZSlcbiAqIEBwYXJhbSBpbml0aWFsU3RhdGUgT3B0aW9uYWwgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgc2hhcmVkIHN0b3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTaGFyZWRTdG9yZShzdG9yZUlkOiBzdHJpbmcsIGluaXRpYWxTdGF0ZTogYW55ID0gbnVsbCk6IFNoYXJlZFN0b3JlRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3RvcmVJZCxcbiAgICAgICAgaW5pdGlhbFN0YXRlLFxuICAgIH07XG59XG5cbi8qKlxuICogSGVscGVyIGZvciB1c2luZyBzaGFyZWQgc3RvcmVzIGluIHRlc3RzLlxuICpcbiAqIEBwYXJhbSBzdG9yZUlkIElkZW50aWZpZXIgb2YgdGhlIHNoYXJlZCBzdG9yZSAobXVzdCBiZSBnbG9iYWxseSB1bmlxdWUpXG4gKiBAcGFyYW0gZmFjdG9yeSBTaGFyZWQgc3RvcmUgY2xhc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVNoYXJlZFN0b3JlKHN0b3JlSWQ6IHN0cmluZywgZmFjdG9yeTogU2hhcmVkU3RvcmVGYWN0b3J5PGFueSwgYW55Pik6IFNoYXJlZFN0b3JlRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3RvcmVJZCxcbiAgICAgICAgZmFjdG9yeSxcbiAgICB9O1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB3aGVuIHVuaXQgdGVzdGluZyBjb21wb25lbnRzIHdoaWNoIGNvbXBpbGVzIGEgY29tcG9uZW50LlxuICpcbiAqIEBwYXJhbSAkY29tcGlsZSBDb21waWxlIHNlcnZpY2VcbiAqIEBwYXJhbSAkc2NvcGUgU2NvcGUgc2VydmljZVxuICogQHBhcmFtIHRlbXBsYXRlIHRlbXBsYXRlIGluIHRoZSBmb3JtIG9mIGEgZGlyZWN0aXZlLCBlLmcuIGAnPGdlbi1zb21lLWNvbXBvbmVudD48Z2VuLXNvbWUtY29tcG9uZW50PidgXG4gKiBAcmV0dXJucyB7Q29tcG9uZW50RGVzY3JpcHRvcn0gRWxlbWVudCBhbmQgaXRzIGNvbnRyb2xsZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbXBvbmVudDxUPigkY29tcGlsZTogYW5ndWxhci5JQ29tcGlsZVNlcnZpY2UsICRzY29wZTogYW5ndWxhci5JU2NvcGUsIHRlbXBsYXRlOiBzdHJpbmcpOiBDb21wb25lbnREZXNjcmlwdG9yPFQ+IHtcblxuICAgIC8vIFRPRE86IGluc3RlYWQgb2YgaGF2aW5nIGdldENvbXBvbmVudDxUPiwgd2UgY291bGQgaGF2ZSBnZXRDb21wb25lbnQ8VCBleHRlbmRzIENvbXBvbmVudEJhc2U+IGFuZCB0aGVuIHlvdSB3b3VsZCBkb1xuICAgIC8vIFQuYXNWaWV3IHRodXMgcmVkdWNpbmcgdGhlIG5lZWQgZm9yIHRlbXBsYXRlIGFyZ3VtZW50LCBidXQgbG9va3MgbGlrZSB0eXBlc2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgdGhhdCAoeWV0KVxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvNTY3N1xuXG4gICAgY29uc3QgZWxlbWVudCA9ICRjb21waWxlKHRlbXBsYXRlKSgkc2NvcGUpO1xuICAgICRzY29wZS4kZGlnZXN0KCk7XG5cbiAgICBsZXQgY3RybDogVDtcbiAgICB0cnkge1xuICAgICAgICBjdHJsID0gJHNjb3BlWyckJGNoaWxkVGFpbCddLmN0cmw7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgR2VuRXJyb3IoXCJVbmFibGUgdG8gZmV0Y2ggY29tcG9uZW50IGNvbnRyb2xsZXIuIERpZCB5b3UgbG9hZCB5b3VyIG1vZHVsZSBpbiB0ZXN0cz9cIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZWxlbWVudDogZWxlbWVudCxcbiAgICAgICAgY3RybDogY3RybCxcbiAgICB9O1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBleHBvc2VkIHRvIHRlc3QgY2FzZSBmdW5jdGlvbnMsIHdoaWNoIGFyZSBjcmVhdGVkIHVzaW5nIFtbZGVzY3JpYmVDb21wb25lbnRdXS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRUZXN0ZXIge1xuICAgIC8vLyBBbmd1bGFyIG1vZHVsZSwgd2hpY2ggbWF5IGJlIHVzZWQgdG8gcmVnaXN0ZXIgdGVzdCBjb21wb25lbnRzIGluLlxuICAgIG1vZHVsZTogYW5ndWxhci5JTW9kdWxlO1xuXG4gICAgLyoqXG4gICAgICogU2VlIFtbZ2V0Q29tcG9uZW50XV0uXG4gICAgICovXG4gICAgY3JlYXRlQ29tcG9uZW50PFQ+KHRlbXBsYXRlOiBzdHJpbmcpOiBDb21wb25lbnREZXNjcmlwdG9yPFQ+O1xuXG4gICAgLyoqXG4gICAgICogUnVucyBhbiBBbmd1bGFyIGRpZ2VzdCBjeWNsZS5cbiAgICAgKi9cbiAgICBkaWdlc3QoKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIG1vY2sgdmVyc2lvbiBvZiB0aGUgQVBJLCB3aGljaCBtYXkgYmUgdXNlZCB0byBzaW11bGF0ZSB0aGUgYmFja2VuZFxuICAgICAqIHdoZW4gdGVzdGluZyBjb21wb25lbnRzLiBUaGUgbW9jayBBUEkgaXMgYXV0b21hdGljYWxseSBpbmplY3RlZCBpbnRvIGNvbXBvbmVudHNcbiAgICAgKiBhbmQgcmVwbGFjZXMgdGhlIHVzdWFsIEFQSS5cbiAgICAgKi9cbiAgICBhcGkoKTogUmVzb2x3ZUFwaSAmIE1vY2tCYXNlICYgTW9ja0FwaVNlcnZpY2U7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzY29wZS5cbiAgICAgKi9cbiAgICBzY29wZSgpOiBhbmd1bGFyLklTY29wZTtcblxuICAgIC8qKlxuICAgICAqIEVuc3VyZXMgdGhhdCB0aGUgdGVzdGVkIGNvbXBvbmVudHMgYXJlIGluc2VydGVkIGludG8gYW4gYWN0dWFsIERPTSwgc28gdGhpbmdzXG4gICAgICogbGlrZSBoZWlnaHQgY2FsY3VsYXRpb25zIHdvcmsgYXMgZXhwZWN0ZWQuIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgYmVmb3JlXG4gICAgICogYW55IFtbY3JlYXRlQ29tcG9uZW50XV0gY2FsbHMuXG4gICAgICovXG4gICAgcHJvdmlkZVJlYWxET00oKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb2NrQXBpRmFjdG9yeSB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IFJlc29sd2VBcGkgJiBNb2NrQmFzZTtcbn1cblxuLyoqXG4gKiBBIGhlbHBlciBmdW5jdGlvbiB0byBlYXNlIHRlc3Rpbmcgb2YgY29tcG9uZW50cy4gSXQgd2lsbCB0YWtlIGNhcmUgb2YgbW9ja2luZyB0aGVcbiAqIHVzdWFsIG1vZHVsZXMgbmVlZGVkIGZvciB0ZXN0aW5nIGNvbXBvbmVudHMgYW5kIHByZXBhcmluZyBhIG1vZHVsZSB0aGF0IHlvdSBjYW4gdXNlXG4gKiB0byByZWdpc3RlciB0ZXN0IGNvbXBvbmVudHMuXG4gKlxuICogVGhlIHRlc3QgY2FzZSBpcyBwYXNzZWQgYW4gaW5zdGFuY2Ugb2YgW1tDb21wb25lbnRUZXN0ZXJdXSwgd2hpY2ggY29udGFpbnMgc29tZVxuICogdXNlZnVsIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgZm9yIHRlc3RpbmcgY29tcG9uZW50cy5cbiAqXG4gKiBUaGUgZm9sbG93aW5nIG1vZHVsZXMgYXJlIGF1dG9tYXRpY2FsbHkgbG9hZGVkOlxuICogKiBgcmVzb2x3ZS5zZXJ2aWNlcy5zaGFyZWRfc3RvcmVgXG4gKlxuICogSWYgeW91IG5lZWQgdG8gbG9hZCBhbnkgYWRkaXRpb25hbCBtb2R1bGVzLCBzcGVjaWZ5IHRoZW0gaW4gdGhlIGBtb2R1bGVzYFxuICogYXJndW1lbnQuXG4gKlxuICogQHBhcmFtIGRlc2NyaXB0aW9uIFRlc3QgY2FzZSBkZXNjcmlwdGlvblxuICogQHBhcmFtIG1vZHVsZXMgTGlzdCBvZiBtb2R1bGVzIHRvIGxvYWQgZm9yIHRoaXMgdGVzdFxuICogQHBhcmFtIHRlc3RzIFRlc3QgY2FzZSBib2R5XG4gKiBAcGFyYW0gYXBpQ2xhc3MgT3B0aW9uYWwgbW9jayBBUEkgY2xhc3MgdGhhdCBzaG91bGQgYmUgdXNlZFxuICogQHBhcmFtIGJhc2VNb2R1bGVzIE9wdGlvbmFsIGxpc3Qgb2YgbW9kdWxlcyB0byBsb2FkIGJlZm9yZSBldmVyeXRoaW5nIGZvciB0aGlzIHRlc3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaWJlQ29tcG9uZW50KGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlczogYW55W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHM6ICh0ZXN0ZXI6IENvbXBvbmVudFRlc3RlcikgPT4gdm9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlDbGFzczogTW9ja0FwaUZhY3RvcnkgPSBNb2NrQXBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VNb2R1bGVzOiBzdHJpbmdbXSA9IFtdKTogdm9pZCB7XG4gICAgZGVzY3JpYmUoZGVzY3JpcHRpb24sICgpID0+IHtcbiAgICAgICAgbGV0ICRjb21waWxlOiBhbmd1bGFyLklDb21waWxlU2VydmljZTtcbiAgICAgICAgbGV0ICRzY29wZTogYW5ndWxhci5JU2NvcGU7XG4gICAgICAgIGxldCBtb2NrQXBpOiBSZXNvbHdlQXBpICYgTW9ja0Jhc2UgJiBNb2NrQXBpU2VydmljZTtcblxuICAgICAgICBjb25zdCBtb2R1bGVOYW1lID0gJ3Jlc29sd2UudGVzdHMuJyArIGRlc2NyaXB0aW9uLnJlcGxhY2UoLyAvZywgJy4nKTtcbiAgICAgICAgY29uc3QgbW9kdWxlOiBhbmd1bGFyLklNb2R1bGUgPSBhbmd1bGFyLm1vZHVsZShtb2R1bGVOYW1lLCBbXSk7XG5cbiAgICAgICAgLy8gTG9hZCBiYXNlIG1vZHVsZXMuXG4gICAgICAgIGJlZm9yZUVhY2goYW5ndWxhci5tb2NrLm1vZHVsZSgncmVzb2x3ZS5zZXJ2aWNlcy5zaGFyZWRfc3RvcmUnKSk7XG4gICAgICAgIGJlZm9yZUVhY2goYW5ndWxhci5tb2NrLm1vZHVsZSgncmVzb2x3ZS5zZXJ2aWNlcy5zdGF0ZV9tYW5hZ2VyJykpO1xuICAgICAgICBiYXNlTW9kdWxlcy5mb3JFYWNoKChiYXNlTW9kdWxlKSA9PiBiZWZvcmVFYWNoKGFuZ3VsYXIubW9jay5tb2R1bGUoYmFzZU1vZHVsZSkpKTtcblxuICAgICAgICBiZWZvcmVFYWNoKGFuZ3VsYXIubW9jay5tb2R1bGUoKCRwcm92aWRlOiBhbmd1bGFyLmF1dG8uSVByb3ZpZGVTZXJ2aWNlKSA9PiB7XG4gICAgICAgICAgICAvLyBFeHBsaWNpdGx5IHNldCByb290IGVsZW1lbnQgYmVjYXVzZSB0ZXN0cyBkbyBub3QgZ28gdGhyb3VnaCB1c3VhbFxuICAgICAgICAgICAgLy8gQW5ndWxhciBib290c3RyYXBwaW5nLlxuICAgICAgICAgICAgJHByb3ZpZGUudmFsdWUoJyRyb290RWxlbWVudCcsIGFuZ3VsYXIuZWxlbWVudChkb2N1bWVudC5ib2R5KSk7XG5cbiAgICAgICAgICAgIC8vIFJlcGxhY2UgdXN1YWwgQVBJIHNlcnZpY2Ugd2l0aCBtb2NrIEFQSS5cbiAgICAgICAgICAgICRwcm92aWRlLnNlcnZpY2UoJ2FwaScsIGNvbXBvc2UoW2FwaUNsYXNzLCBNb2NrQXBpU2VydmljZV0pKTtcbiAgICAgICAgfSkpO1xuICAgICAgICBiZWZvcmVFYWNoKGFuZ3VsYXIubW9jay5tb2R1bGUobW9kdWxlTmFtZSkpO1xuXG4gICAgICAgIC8vIFJlZ2lzdGVyIGFueSBzaGFyZWQgc3RvcmVzLlxuICAgICAgICBjb25zdCBbc2hhcmVkU3RvcmVzLCBhZGRpdGlvbmFsTW9kdWxlc10gPSBfLnBhcnRpdGlvbihtb2R1bGVzLCAobSkgPT4gISFtLnN0b3JlSWQpO1xuXG4gICAgICAgIG1vZHVsZS5jb25maWcoKHNoYXJlZFN0b3JlTWFuYWdlclByb3ZpZGVyOiBTaGFyZWRTdG9yZVByb3ZpZGVyKSA9PiB7XG4gICAgICAgICAgICBfLmVhY2goc2hhcmVkU3RvcmVzLCAoZGVzY3JpcHRvcjogU2hhcmVkU3RvcmVEZXNjcmlwdG9yKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IuZmFjdG9yeSkge1xuICAgICAgICAgICAgICAgICAgICBzaGFyZWRTdG9yZU1hbmFnZXJQcm92aWRlci5yZWdpc3RlcihkZXNjcmlwdG9yLnN0b3JlSWQsIGRlc2NyaXB0b3IuZmFjdG9yeSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2hhcmVkU3RvcmVNYW5hZ2VyUHJvdmlkZXIuY3JlYXRlKGRlc2NyaXB0b3Iuc3RvcmVJZCwgZGVzY3JpcHRvci5pbml0aWFsU3RhdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBfLmVhY2goYWRkaXRpb25hbE1vZHVsZXMsIChhZGRpdGlvbmFsTW9kdWxlKSA9PiB7XG4gICAgICAgICAgICBiZWZvcmVFYWNoKGFuZ3VsYXIubW9jay5tb2R1bGUoYWRkaXRpb25hbE1vZHVsZSkpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBBIGNvbnRhaW5lciBpbiBET00gd2hlcmUgd2UgY2FuIHRlbXBvcmFyaWx5IGFwcGVuZCBjb21wb25lbnQgZWxlbWVudHMuXG4gICAgICAgIGxldCBjb250YWluZXJFbGVtZW50OiBhbmd1bGFyLklBdWdtZW50ZWRKUXVlcnkgPSBudWxsO1xuXG4gICAgICAgIGZ1bmN0aW9uIHByb3ZpZGVSZWFsRE9NKCk6IHZvaWQge1xuICAgICAgICAgICAgcmVtb3ZlUmVhbERPTSgpO1xuICAgICAgICAgICAgY29uc3QgYm9keSA9IGFuZ3VsYXIuZWxlbWVudChkb2N1bWVudC5ib2R5KTtcbiAgICAgICAgICAgIGNvbnRhaW5lckVsZW1lbnQgPSBhbmd1bGFyLmVsZW1lbnQoJzxkaXYgaWQ9XCJ0ZXN0LWNvbnRhaW5lci1lbGVtZW50XCI+PC9kaXY+Jyk7XG4gICAgICAgICAgICBib2R5LmFwcGVuZChjb250YWluZXJFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlbW92ZVJlYWxET00oKTogdm9pZCB7XG4gICAgICAgICAgICBpZiAoY29udGFpbmVyRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lckVsZW1lbnQucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyRWxlbWVudCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgICAgICAgIGphc21pbmUuYWRkTWF0Y2hlcnMobmdFcXVhbE1hdGNoZXIpO1xuICAgICAgICB9KTtcblxuICAgICAgICBiZWZvcmVFYWNoKGFuZ3VsYXIubW9jay5pbmplY3QoKF8kY29tcGlsZV8sIF8kcm9vdFNjb3BlXywgX2FwaV8pID0+IHtcbiAgICAgICAgICAgICRjb21waWxlID0gXyRjb21waWxlXztcbiAgICAgICAgICAgICRzY29wZSA9IF8kcm9vdFNjb3BlXy4kbmV3KCk7XG4gICAgICAgICAgICBtb2NrQXBpID0gX2FwaV87XG5cbiAgICAgICAgICAgIC8vIEBpZm5kZWYgR0VOSlNfUFJPRFVDVElPTlxuICAgICAgICAgICAgICAgIGlmIChfLmNvbnRhaW5zKHRlc3RzLnRvU3RyaW5nKCksICdkZWJ1Z2dlcicpIHx8IF8uY29udGFpbnModGVzdHMudG9TdHJpbmcoKSwgJyBmaXQoJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZVJlYWxET00oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBAZW5kaWZcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICAgICAgICAkc2NvcGUuJGRlc3Ryb3koKTtcbiAgICAgICAgICAgIHJlbW92ZVJlYWxET00oKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGVzdHMoe1xuICAgICAgICAgICAgbW9kdWxlOiBtb2R1bGUsXG5cbiAgICAgICAgICAgIGNyZWF0ZUNvbXBvbmVudDogZnVuY3Rpb248VD4odGVtcGxhdGU6IHN0cmluZyk6IENvbXBvbmVudERlc2NyaXB0b3I8VD4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGdldENvbXBvbmVudDxUPigkY29tcGlsZSwgJHNjb3BlLCB0ZW1wbGF0ZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBBcHBlbmQgY29tcG9uZW50IGVsZW1lbnQgdG8gYWN0dWFsIERPTS4gT3RoZXJ3aXNlLCBjb21wdXRhdGlvbnMgbGlrZSBoZWlnaHQgd2lsbCBub3Qgd29yay5cbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyRWxlbWVudC5hcHBlbmQoY29tcG9uZW50LmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJGRpZ2VzdCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnQ7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkaWdlc3Q6IGZ1bmN0aW9uKCk6IHZvaWQge1xuICAgICAgICAgICAgICAgICRzY29wZS4kZGlnZXN0KCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBhcGk6IGZ1bmN0aW9uKCk6IFJlc29sd2VBcGkgJiBNb2NrQmFzZSAmIE1vY2tBcGlTZXJ2aWNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9ja0FwaTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNjb3BlOiBmdW5jdGlvbigpOiBhbmd1bGFyLklTY29wZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICRzY29wZTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHByb3ZpZGVSZWFsRE9NOiBwcm92aWRlUmVhbERPTSxcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG4iXX0= |
{ | ||
"name": "@genialis/resolwe", | ||
"author": "Genialis Inc.", | ||
"version": "3.1.1", | ||
"version": "3.1.2", | ||
"description": "Resolwe frontend libraries", | ||
"license" : "Apache-2.0", | ||
"license": "Apache-2.0", | ||
"repository": { | ||
@@ -8,0 +8,0 @@ "type": "git", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
876933
97
10993