@local-labs-jpollock/local-cli 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -490,4 +490,4 @@ async function bootstrap(options = {}) {
490
490
  actions,
491
491
  };
492
492
  }
493
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYm9vdHN0cmFwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7O0dBU0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJCSCw0Q0FvQkM7QUFLRCx3Q0FvQkM7QUFLRCxnQ0FnQkM7QUFLRCw4QkFZQztBQUtELG9DQUtDO0FBb0JELG9DQUdDO0FBS0QsNENBVUM7QUFLRCw0Q0FlQztBQU1ELHNDQXdCQztBQXlERCxvQ0FrREM7QUFLRCxrQ0F1QkM7QUFTRCxnREFvQkM7QUFLRCx3Q0F1Q0M7QUFhRCw4QkFnRkM7QUEzZkQsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3QixpREFBK0M7QUFDL0MsK0JBQWlDO0FBQ2pDLG1DQUFvRDtBQXlmM0MsOEZBemZBLHFCQUFhLE9BeWZBO0FBdmZ0QixNQUFNLFNBQVMsR0FBRyxJQUFBLGdCQUFTLEVBQUMsb0JBQUksQ0FBQyxDQUFDO0FBZ0JsQzs7R0FFRztBQUNILFNBQWdCLGdCQUFnQjtJQUM5QixNQUFNLEtBQUssR0FBRyxJQUFBLHFCQUFhLEdBQUUsQ0FBQztJQUU5QixJQUFJLENBQUM7UUFDSCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbEMsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM1QyxDQUFDO2FBQU0sSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3hDLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUMsQ0FBQzthQUFNLENBQUM7WUFDTiw4REFBOEQ7WUFDOUQsSUFBSSxDQUFDO2dCQUNILElBQUEsd0JBQVEsRUFBQyxhQUFhLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFD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LFlBQVksR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDO0lBQzFDLENBQUM7SUFFRCw0QkFBNEI7SUFDNUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxjQUFjLEVBQUUsQ0FBQztJQUV2QyxJQUFJLFlBQVksSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM1QixHQUFHLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUM3QyxNQUFNLFlBQVksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7U0FBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEIsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDekIsTUFBTSxVQUFVLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsMEJBQTBCO0lBQzFCLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sS0FBSyxHQUFHLE1BQU0sY0FBYyxFQUFFLENBQUM7SUFFckMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsT0FBTztZQUNMLE9BQU8sRUFBRSxLQUFLO1lBQ2QsS0FBSyxFQUFFLGdEQUFnRDtZQUN2RCxPQUFPO1NBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRCxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUU3Qix1QkFBdUI7SUFDdkIsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQztJQUU1QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsT0FBTztZQUNMLE9BQU8sRUFBRSxLQUFLO1lBQ2QsS0FBSyxFQUFFLHlDQUF5QztZQUNoRCxPQUFPO1NBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLElBQUk7UUFDYixjQUFjO1FBQ2QsT0FBTztLQUNSLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCb290c3RyYXAgU3lzdGVtXG4gKlxuICogQ29ubmVjdHMgdGhlIENMSSB0byBMb2NhbCdzIEdyYXBoUUwgc2VydmVyOlxuICogLSBEZXRlY3RzIExvY2FsIGluc3RhbGxhdGlvblxuICogLSBJbnN0YWxscyBhbmQgYWN0aXZhdGVzIGFkZG9uIGlmIG5lZWRlZFxuICogLSBTdGFydHMgTG9jYWwgaWYgbmVlZGVkXG4gKiAtIFdhaXRzIGZvciBHcmFwaFFMIHNlcnZlciB0byBiZSByZWFkeVxuICogLSBSZWFkcyBjb25uZWN0aW9uIGluZm9cbiAqL1xuXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgZXhlYywgZXhlY1N5bmMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IHsgZ2V0TG9jYWxQYXRocywgTG9jYWxQYXRocyB9IGZyb20gJy4vcGF0aHMnO1xuXG5jb25zdCBleGVjQXN5bmMgPSBwcm9taXNpZnkoZXhlYyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdGlvbkluZm8ge1xuICB1cmw6IHN0cmluZztcbiAgc3Vic2NyaXB0aW9uVXJsOiBzdHJpbmc7XG4gIHBvcnQ6IG51bWJlcjtcbiAgYXV0aFRva2VuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9vdHN0cmFwUmVzdWx0IHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgY29ubmVjdGlvbkluZm8/OiBDb25uZWN0aW9uSW5mbztcbiAgZXJyb3I/OiBzdHJpbmc7XG4gIGFjdGlvbnM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIExvY2FsIGlzIGluc3RhbGxlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMb2NhbEluc3RhbGxlZCgpOiBib29sZWFuIHtcbiAgY29uc3QgcGF0aHMgPSBnZXRMb2NhbFBhdGhzKCk7XG5cbiAgdHJ5IHtcbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAgIHJldHVybiBmcy5leGlzdHNTeW5jKHBhdGhzLmFwcEV4ZWN1dGFibGUpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgcmV0dXJuIGZzLmV4aXN0c1N5bmMocGF0aHMuYXBwRXhlY3V0YWJsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIExpbnV4IC0gY2hlY2sgaWYgJ2xvY2FsJyBpcyBpbiBQQVRIIG9yIGF0IGV4cGVjdGVkIGxvY2F0aW9uXG4gICAgICB0cnkge1xuICAgICAgICBleGVjU3luYygnd2hpY2ggbG9jYWwnLCB7IHN0ZGlvOiAnaWdub3JlJyB9KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZzLmV4aXN0c1N5bmMocGF0aHMuYXBwRXhlY3V0YWJsZSk7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayBpZiBMb2NhbCBpcyBjdXJyZW50bHkgcnVubmluZ1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNMb2NhbFJ1bm5pbmcoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHRyeSB7XG4gICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICdkYXJ3aW4nKSB7XG4gICAgICAvLyBVc2UgcGdyZXAgd2l0aCAtZiB0byBtYXRjaCBhbnkgcHJvY2VzcyBjb250YWluaW5nIFwiTG9jYWxcIlxuICAgICAgLy8gQWxzbyBjaGVjayBpZiBHcmFwaFFMIGNvbm5lY3Rpb24gaW5mbyBleGlzdHMgYW5kIGlzIHJlY2VudFxuICAgICAgY29uc3QgeyBzdGRvdXQgfSA9IGF3YWl0IGV4ZWNBc3luYyhgcGdyZXAgLWYgXCJMb2NhbC5hcHBcImApO1xuICAgICAgcmV0dXJuIHN0ZG91dC50cmltKCkubGVuZ3RoID4gMDtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicpIHtcbiAgICAgIGNvbnN0IHsgc3Rkb3V0IH0gPSBhd2FpdCBleGVjQXN5bmMoYHRhc2tsaXN0IC9GSSBcIklNQUdFTkFNRSBlcSBMb2NhbC5leGVcImApO1xuICAgICAgcmV0dXJuIHN0ZG91dC5pbmNsdWRlcygnTG9jYWwuZXhlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc3Rkb3V0IH0gPSBhd2FpdCBleGVjQXN5bmMoYHBncmVwIC1mIFwibG9jYWxcImApO1xuICAgICAgcmV0dXJuIHN0ZG91dC50cmltKCkubGVuZ3RoID4gMDtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIC8vIHBncmVwIHJldHVybnMgbm9uLXplcm8gaWYgbm8gcHJvY2Vzc2VzIGZvdW5kXG4gICAgLy8gQ2hlY2sgaWYgY29ubmVjdGlvbiBpbmZvIGV4aXN0cyBhcyBhIGZhbGxiYWNrXG4gICAgY29uc3QgY29ubmVjdGlvbkluZm8gPSByZWFkQ29ubmVjdGlvbkluZm8oKTtcbiAgICByZXR1cm4gY29ubmVjdGlvbkluZm8gIT09IG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBTdGFydCBMb2NhbCBhcHBsaWNhdGlvblxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRMb2NhbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcGF0aHMgPSBnZXRMb2NhbFBhdGhzKCk7XG5cbiAgdHJ5IHtcbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICAgIC8vIEp1c3QgYWN0aXZhdGUgTG9jYWwgLSBkb24ndCB0cnkgdG8gaGlkZSBpdCAocmVxdWlyZXMgYWNjZXNzaWJpbGl0eSBwZXJtaXNzaW9ucylcbiAgICAgIGF3YWl0IGV4ZWNBc3luYyhgb3BlbiAtYSBcIkxvY2FsXCJgKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicpIHtcbiAgICAgIC8vIC9NSU4gPSBzdGFydCBtaW5pbWl6ZWRcbiAgICAgIGF3YWl0IGV4ZWNBc3luYyhgc3RhcnQgL01JTiBcIlwiIFwiJHtwYXRocy5hcHBFeGVjdXRhYmxlfVwiYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IGV4ZWNBc3luYyhgJHtwYXRocy5hcHBFeGVjdXRhYmxlfSAmYCk7XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICAvLyBJZ25vcmUgZXJyb3JzIC0gTG9jYWwgbWlnaHQgYWxyZWFkeSBiZSBydW5uaW5nXG4gIH1cbn1cblxuLyoqXG4gKiBTdG9wIExvY2FsIGFwcGxpY2F0aW9uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdG9wTG9jYWwoKTogUHJvbWlzZTx2b2lkPiB7XG4gIHRyeSB7XG4gICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICdkYXJ3aW4nKSB7XG4gICAgICBhd2FpdCBleGVjQXN5bmMoYG9zYXNjcmlwdCAtZSAncXVpdCBhcHAgXCJMb2NhbFwiJ2ApO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAgYXdhaXQgZXhlY0FzeW5jKGB0YXNra2lsbCAvSU0gTG9jYWwuZXhlIC9GYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IGV4ZWNBc3luYyhgcGtpbGwgLWYgbG9jYWxgKTtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIC8vIElnbm9yZSBlcnJvcnMgLSBMb2NhbCBtaWdodCBub3QgYmUgcnVubmluZ1xuICB9XG59XG5cbi8qKlxuICogUmVzdGFydCBMb2NhbCBhcHBsaWNhdGlvblxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzdGFydExvY2FsKCk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBzdG9wTG9jYWwoKTtcbiAgLy8gV2FpdCBhIGJpdCBmb3IgdGhlIHByb2Nlc3MgdG8gZnVsbHkgc3RvcFxuICBhd2FpdCBkZWxheSgyMDAwKTtcbiAgYXdhaXQgc3RhcnRMb2NhbCgpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBZGRvbiBNYW5hZ2VtZW50XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQWRkb24gZGlyZWN0b3J5IG5hbWUgaW4gTG9jYWwncyBhZGRvbnMgZm9sZGVyXG4gKiBMb2NhbCB1c2VzIEBzY29wZS1uYW1lIGZvcm1hdCAocmVwbGFjZXMgLyB3aXRoIC0pXG4gKi9cbmNvbnN0IEFERE9OX0RJUl9OQU1FID0gJ0Bsb2NhbC1sYWJzLWxvY2FsLWFkZG9uLWNsaSc7XG5cbi8qKlxuICogQWRkb24ga2V5IGluIGVuYWJsZWQtYWRkb25zLmpzb24gKHBhY2thZ2UgbmFtZSlcbiAqL1xuY29uc3QgQURET05fRU5BQkxFRF9LRVkgPSAnQGxvY2FsLWxhYnMtanBvbGxvY2svbG9jYWwtYWRkb24tY2xpJztcblxuLyoqXG4gKiBHZXQgdGhlIGFkZG9uIGluc3RhbGxhdGlvbiBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZGRvblBhdGgoKTogc3RyaW5nIHtcbiAgY29uc3QgcGF0aHMgPSBnZXRMb2NhbFBhdGhzKCk7XG4gIHJldHVybiBwYXRoLmpvaW4ocGF0aHMuYWRkb25zRGlyLCBBRERPTl9ESVJfTkFNRSk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGFkZG9uIGlzIGluc3RhbGxlZCBpbiBMb2NhbCdzIGFkZG9ucyBkaXJlY3RvcnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQWRkb25JbnN0YWxsZWQoKTogYm9vbGVhbiB7XG4gIGNvbnN0IGFkZG9uUGF0aCA9IGdldEFkZG9uUGF0aCgpO1xuXG4gIC8vIENoZWNrIGZvciBkaXJlY3Rvcnkgb3Igc3ltbGlua1xuICB0cnkge1xuICAgIGNvbnN0IHN0YXQgPSBmcy5sc3RhdFN5bmMoYWRkb25QYXRoKTtcbiAgICByZXR1cm4gc3RhdC5pc0RpcmVjdG9yeSgpIHx8IHN0YXQuaXNTeW1ib2xpY0xpbmsoKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGFkZG9uIGlzIGFjdGl2YXRlZCBpbiBlbmFibGVkLWFkZG9ucy5qc29uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FkZG9uQWN0aXZhdGVkKCk6IGJvb2xlYW4ge1xuICBjb25zdCBwYXRocyA9IGdldExvY2FsUGF0aHMoKTtcblxuICB0cnkge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhwYXRocy5lbmFibGVkQWRkb25zRmlsZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKHBhdGhzLmVuYWJsZWRBZGRvbnNGaWxlLCAndXRmLTgnKTtcbiAgICBjb25zdCBlbmFibGVkQWRkb25zOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IEpTT04ucGFyc2UoY29udGVudCk7XG5cbiAgICByZXR1cm4gZW5hYmxlZEFkZG9uc1tBRERPTl9FTkFCTEVEX0tFWV0gPT09IHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIEFjdGl2YXRlIHRoZSBhZGRvbiBieSBtb2RpZnlpbmcgZW5hYmxlZC1hZGRvbnMuanNvblxuICogUmV0dXJucyB0cnVlIGlmIHJlc3RhcnQgaXMgbmVlZGVkIChhZGRvbiB3YXMganVzdCBhY3RpdmF0ZWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhY3RpdmF0ZUFkZG9uKCk6IGJvb2xlYW4ge1xuICBjb25zdCBwYXRocyA9IGdldExvY2FsUGF0aHMoKTtcblxuICB0cnkge1xuICAgIGxldCBlbmFibGVkQWRkb25zOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xuXG4gICAgaWYgKGZzLmV4aXN0c1N5bmMocGF0aHMuZW5hYmxlZEFkZG9uc0ZpbGUpKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKHBhdGhzLmVuYWJsZWRBZGRvbnNGaWxlLCAndXRmLTgnKTtcbiAgICAgIGVuYWJsZWRBZGRvbnMgPSBKU09OLnBhcnNlKGNvbnRlbnQpO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGFscmVhZHkgYWN0aXZhdGVkXG4gICAgaWYgKGVuYWJsZWRBZGRvbnNbQURET05fRU5BQkxFRF9LRVldID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7IC8vIEFscmVhZHkgYWN0aXZlLCBubyByZXN0YXJ0IG5lZWRlZFxuICAgIH1cblxuICAgIC8vIEFjdGl2YXRlIHRoZSBhZGRvblxuICAgIGVuYWJsZWRBZGRvbnNbQURET05fRU5BQkxFRF9LRVldID0gdHJ1ZTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGhzLmVuYWJsZWRBZGRvbnNGaWxlLCBKU09OLnN0cmluZ2lmeShlbmFibGVkQWRkb25zLCBudWxsLCAyKSk7XG5cbiAgICByZXR1cm4gdHJ1ZTsgLy8gUmVzdGFydCBuZWVkZWRcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQ29weSBhIGRpcmVjdG9yeSByZWN1cnNpdmVseVxuICovXG5mdW5jdGlvbiBjb3B5RGlyU3luYyhzcmM6IHN0cmluZywgZGVzdDogc3RyaW5nKTogdm9pZCB7XG4gIGZzLm1rZGlyU3luYyhkZXN0LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBjb25zdCBlbnRyaWVzID0gZnMucmVhZGRpclN5bmMoc3JjLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSk7XG5cbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgY29uc3Qgc3JjUGF0aCA9IHBhdGguam9pbihzcmMsIGVudHJ5Lm5hbWUpO1xuICAgIGNvbnN0IGRlc3RQYXRoID0gcGF0aC5qb2luKGRlc3QsIGVudHJ5Lm5hbWUpO1xuXG4gICAgaWYgKGVudHJ5LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIGNvcHlEaXJTeW5jKHNyY1BhdGgsIGRlc3RQYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZnMuY29weUZpbGVTeW5jKHNyY1BhdGgsIGRlc3RQYXRoKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBGaW5kIHRoZSBidW5kbGVkIGFkZG9uIHBhdGggKGluY2x1ZGVkIGluIG5wbSBwYWNrYWdlKVxuICogTG9jYXRlZCBhdCBhZGRvbi1kaXN0LyByZWxhdGl2ZSB0byB0aGUgQ0xJIHBhY2thZ2Ugcm9vdFxuICovXG5mdW5jdGlvbiBmaW5kQnVuZGxlZEFkZG9uUGF0aCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgLy8gRnJvbSBsaWIvYm9vdHN0cmFwLyAtPiBhZGRvbi1kaXN0L1xuICBjb25zdCBidW5kbGVkUGF0aCA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICcuLicsICdhZGRvbi1kaXN0Jyk7XG5cbiAgaWYgKGZzLmV4aXN0c1N5bmMocGF0aC5qb2luKGJ1bmRsZWRQYXRoLCAncGFja2FnZS5qc29uJykpKSB7XG4gICAgcmV0dXJuIGJ1bmRsZWRQYXRoO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogRmluZCB0aGUgbG9jYWwgZGV2ZWxvcG1lbnQgYWRkb24gcGF0aCAoZm9yIGRldiBtb2RlKVxuICogTG9va3MgZm9yIHRoZSBhZGRvbiByZWxhdGl2ZSB0byB0aGUgQ0xJIHBhY2thZ2UgaW4gbW9ub3JlcG9cbiAqL1xuZnVuY3Rpb24gZmluZERldkFkZG9uUGF0aCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgLy8gQ2hlY2sgaWYgd2UncmUgaW4gdGhlIG1vbm9yZXBvIHN0cnVjdHVyZVxuICAvLyBXb3JrcyBmcm9tIGJvdGggbGliL2Jvb3RzdHJhcCAoY29tcGlsZWQpIGFuZCBzcmMvYm9vdHN0cmFwICh0cy1ub2RlKVxuICBjb25zdCBjbGlEaXIgPSBfX2Rpcm5hbWU7XG4gIGNvbnN0IGFkZG9uUGF0aCA9IHBhdGgucmVzb2x2ZShjbGlEaXIsICcuLicsICcuLicsICcuLicsICdhZGRvbicpO1xuXG4gIGlmIChmcy5leGlzdHNTeW5jKHBhdGguam9pbihhZGRvblBhdGgsICdwYWNrYWdlLmpzb24nKSkpIHtcbiAgICByZXR1cm4gYWRkb25QYXRoO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogSW5zdGFsbCB0aGUgYWRkb24gZnJvbSBidW5kbGVkIHBhY2thZ2Ugb3IgY3JlYXRlIGRldiBzeW1saW5rXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnN0YWxsQWRkb24ob3B0aW9uczoge1xuICBvblN0YXR1cz86IChzdGF0dXM6IHN0cmluZykgPT4gdm9pZDtcbn0gPSB7fSk6IFByb21pc2U8eyBzdWNjZXNzOiBib29sZWFuOyBlcnJvcj86IHN0cmluZzsgbmVlZHNSZXN0YXJ0OiBib29sZWFuIH0+IHtcbiAgY29uc3QgbG9nID0gb3B0aW9ucy5vblN0YXR1cyB8fCAoKCkgPT4ge30pO1xuICBjb25zdCBwYXRocyA9IGdldExvY2FsUGF0aHMoKTtcbiAgY29uc3QgYWRkb25QYXRoID0gZ2V0QWRkb25QYXRoKCk7XG5cbiAgdHJ5IHtcbiAgICAvLyBFbnN1cmUgYWRkb25zIGRpcmVjdG9yeSBleGlzdHNcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMocGF0aHMuYWRkb25zRGlyKSkge1xuICAgICAgZnMubWtkaXJTeW5jKHBhdGhzLmFkZG9uc0RpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgLy8gVHJ5IGJ1bmRsZWQgYWRkb24gZmlyc3QgKHByb2R1Y3Rpb24gLSBpbmNsdWRlZCBpbiBucG0gcGFja2FnZSlcbiAgICBjb25zdCBidW5kbGVkQWRkb25QYXRoID0gZmluZEJ1bmRsZWRBZGRvblBhdGgoKTtcblxuICAgIGlmIChidW5kbGVkQWRkb25QYXRoKSB7XG4gICAgICBsb2coJ0luc3RhbGxpbmcgYnVuZGxlZCBhZGRvbi4uLicpO1xuXG4gICAgICAvLyBDb3B5IGJ1bmRsZWQgYWRkb24gdG8gTG9jYWwncyBhZGRvbnMgZGlyZWN0b3J5XG4gICAgICBjb3B5RGlyU3luYyhidW5kbGVkQWRkb25QYXRoLCBhZGRvblBhdGgpO1xuXG4gICAgICBsb2coJ0FkZG9uIGluc3RhbGxlZCBzdWNjZXNzZnVsbHkuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRyeSBkZXZlbG9wbWVudCBtb2RlIC0gY3JlYXRlIHN5bWxpbmsgdG8gbG9jYWwgYWRkb24gaW4gbW9ub3JlcG9cbiAgICAgIGNvbnN0IGRldkFkZG9uUGF0aCA9IGZpbmREZXZBZGRvblBhdGgoKTtcblxuICAgICAgaWYgKGRldkFkZG9uUGF0aCkge1xuICAgICAgICBsb2coJ1VzaW5nIGRldmVsb3BtZW50IGFkZG9uIChzeW1saW5rKS4uLicpO1xuXG4gICAgICAgIGZzLnN5bWxpbmtTeW5jKGRldkFkZG9uUGF0aCwgYWRkb25QYXRoKTtcbiAgICAgICAgbG9nKGBDcmVhdGVkIHN5bWxpbms6ICR7YWRkb25QYXRofSAtPiAke2RldkFkZG9uUGF0aH1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnQWRkb24gbm90IGZvdW5kLiBQbGVhc2UgcmVpbnN0YWxsIHRoZSBDTEkgcGFja2FnZTogbnBtIGluc3RhbGwgLWcgQGxvY2FsLWxhYnMvbG9jYWwtY2xpJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFjdGl2YXRlIHRoZSBhZGRvblxuICAgIGNvbnN0IG5lZWRzUmVzdGFydCA9IGFjdGl2YXRlQWRkb24oKTtcblxuICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIG5lZWRzUmVzdGFydCB9O1xuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgZXJyb3I6IGVycm9yLm1lc3NhZ2UgfHwgJ0ZhaWxlZCB0byBpbnN0YWxsIGFkZG9uJyxcbiAgICAgIG5lZWRzUmVzdGFydDogZmFsc2UsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIEVuc3VyZSBhZGRvbiBpcyBpbnN0YWxsZWQgYW5kIGFjdGl2YXRlZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlQWRkb24ob3B0aW9uczoge1xuICBvblN0YXR1cz86IChzdGF0dXM6IHN0cmluZykgPT4gdm9pZDtcbn0gPSB7fSk6IFByb21pc2U8eyBzdWNjZXNzOiBib29sZWFuOyBlcnJvcj86IHN0cmluZzsgbmVlZHNSZXN0YXJ0OiBib29sZWFuIH0+IHtcbiAgY29uc3QgbG9nID0gb3B0aW9ucy5vblN0YXR1cyB8fCAoKCkgPT4ge30pO1xuXG4gIC8vIENoZWNrIGlmIGFkZG9uIGlzIGluc3RhbGxlZFxuICBpZiAoIWlzQWRkb25JbnN0YWxsZWQoKSkge1xuICAgIGxvZygnQWRkb24gbm90IGluc3RhbGxlZC4gSW5zdGFsbGluZy4uLicpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluc3RhbGxBZGRvbihvcHRpb25zKTtcbiAgICBpZiAoIXJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBuZWVkc1Jlc3RhcnQ6IHRydWUgfTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIGFkZG9uIGlzIGFjdGl2YXRlZFxuICBpZiAoIWlzQWRkb25BY3RpdmF0ZWQoKSkge1xuICAgIGxvZygnQWN0aXZhdGluZyBhZGRvbi4uLicpO1xuICAgIGNvbnN0IG5lZWRzUmVzdGFydCA9IGFjdGl2YXRlQWRkb24oKTtcbiAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBuZWVkc1Jlc3RhcnQgfTtcbiAgfVxuXG4gIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIG5lZWRzUmVzdGFydDogZmFsc2UgfTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29ubmVjdGlvbiBJbmZvXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUmVhZCBHcmFwaFFMIGNvbm5lY3Rpb24gaW5mbyBmcm9tIGdyYXBocWwtY29ubmVjdGlvbi1pbmZvLmpzb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRDb25uZWN0aW9uSW5mbygpOiBDb25uZWN0aW9uSW5mbyB8IG51bGwge1xuICBjb25zdCBwYXRocyA9IGdldExvY2FsUGF0aHMoKTtcblxuICB0cnkge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhwYXRocy5ncmFwaHFsQ29ubmVjdGlvbkluZm9GaWxlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhwYXRocy5ncmFwaHFsQ29ubmVjdGlvbkluZm9GaWxlLCAndXRmLTgnKTtcbiAgICBjb25zdCBpbmZvID0gSlNPTi5wYXJzZShjb250ZW50KTtcblxuICAgIHJldHVybiB7XG4gICAgICB1cmw6IGluZm8udXJsIHx8IGBodHRwOi8vMTI3LjAuMC4xOiR7aW5mby5wb3J0fS9ncmFwaHFsYCxcbiAgICAgIHN1YnNjcmlwdGlvblVybDogaW5mby5zdWJzY3JpcHRpb25VcmwgfHwgYHdzOi8vMTI3LjAuMC4xOiR7aW5mby5wb3J0fS9ncmFwaHFsYCxcbiAgICAgIHBvcnQ6IGluZm8ucG9ydCxcbiAgICAgIGF1dGhUb2tlbjogaW5mby5hdXRoVG9rZW4gfHwgJycsXG4gICAgfTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBXYWl0IGZvciBHcmFwaFFMIHNlcnZlciB0byBiZSByZWFkeVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2FpdEZvckdyYXBoUUwoXG4gIHRpbWVvdXRNczogbnVtYmVyID0gMzAwMDAsXG4gIHBvbGxJbnRlcnZhbE1zOiBudW1iZXIgPSA1MDBcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG5cbiAgd2hpbGUgKERhdGUubm93KCkgLSBzdGFydCA8IHRpbWVvdXRNcykge1xuICAgIGNvbnN0IGNvbm5lY3Rpb25JbmZvID0gcmVhZENvbm5lY3Rpb25JbmZvKCk7XG5cbiAgICBpZiAoY29ubmVjdGlvbkluZm8pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFVzZSBBYm9ydENvbnRyb2xsZXIgZm9yIHBlci1yZXF1ZXN0IHRpbWVvdXQgKDIgc2Vjb25kcylcbiAgICAgICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgICAgY29uc3QgcmVxdWVzdFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoKSwgMjAwMCk7XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChjb25uZWN0aW9uSW5mby51cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2Nvbm5lY3Rpb25JbmZvLmF1dGhUb2tlbn1gLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBxdWVyeTogJ3sgX190eXBlbmFtZSB9JyB9KSxcbiAgICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICB9KTtcblxuICAgICAgICBjbGVhclRpbWVvdXQocmVxdWVzdFRpbWVvdXQpO1xuXG4gICAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gU2VydmVyIG5vdCByZWFkeSB5ZXQgLSBjb25uZWN0aW9uIHJlZnVzZWQsIHRpbWVvdXQsIGV0Yy5cbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCBkZWxheShwb2xsSW50ZXJ2YWxNcyk7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogRGVsYXkgaGVscGVyXG4gKi9cbmZ1bmN0aW9uIGRlbGF5KG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG59XG5cbi8qKlxuICogTWFpbiBib290c3RyYXAgZnVuY3Rpb25cbiAqIEVuc3VyZXMgYWRkb24gaXMgaW5zdGFsbGVkLCBMb2NhbCBpcyBydW5uaW5nLCBhbmQgR3JhcGhRTCBpcyBhY2Nlc3NpYmxlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBib290c3RyYXAob3B0aW9uczoge1xuICB2ZXJib3NlPzogYm9vbGVhbjtcbiAgc2tpcEFkZG9uSW5zdGFsbD86IGJvb2xlYW47XG4gIG9uU3RhdHVzPzogKHN0YXR1czogc3RyaW5nKSA9PiB2b2lkO1xufSA9IHt9KTogUHJvbWlzZTxCb290c3RyYXBSZXN1bHQ+IHtcbiAgY29uc3QgYWN0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgbG9nID0gKG1zZzogc3RyaW5nKSA9PiB7XG4gICAgYWN0aW9ucy5wdXNoKG1zZyk7XG4gICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgY29uc29sZS5sb2cobXNnKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMub25TdGF0dXMpIHtcbiAgICAgIG9wdGlvbnMub25TdGF0dXMobXNnKTtcbiAgICB9XG4gIH07XG5cbiAgLy8gQ2hlY2sgaWYgTG9jYWwgaXMgaW5zdGFsbGVkXG4gIGlmICghaXNMb2NhbEluc3RhbGxlZCgpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgZXJyb3I6ICdMb2NhbCBpcyBub3QgaW5zdGFsbGVkLiBEb3dubG9hZCBmcm9tIGh0dHBzOi8vbG9jYWx3cC5jb20nLFxuICAgICAgYWN0aW9ucyxcbiAgICB9O1xuICB9XG5cbiAgLy8gRW5zdXJlIGFkZG9uIGlzIGluc3RhbGxlZCBhbmQgYWN0aXZhdGVkICh1bmxlc3Mgc2tpcHBlZClcbiAgbGV0IG5lZWRzUmVzdGFydCA9IGZhbHNlO1xuICBpZiAoIW9wdGlvbnMuc2tpcEFkZG9uSW5zdGFsbCkge1xuICAgIGNvbnN0IGFkZG9uUmVzdWx0ID0gYXdhaXQgZW5zdXJlQWRkb24oeyBvblN0YXR1czogbG9nIH0pO1xuICAgIGlmICghYWRkb25SZXN1bHQuc3VjY2Vzcykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIGVycm9yOiBhZGRvblJlc3VsdC5lcnJvciB8fCAnRmFpbGVkIHRvIGluc3RhbGwgYWRkb24nLFxuICAgICAgICBhY3Rpb25zLFxuICAgICAgfTtcbiAgICB9XG4gICAgbmVlZHNSZXN0YXJ0ID0gYWRkb25SZXN1bHQubmVlZHNSZXN0YXJ0O1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgTG9jYWwgaXMgcnVubmluZ1xuICBjb25zdCBydW5uaW5nID0gYXdhaXQgaXNMb2NhbFJ1bm5pbmcoKTtcblxuICBpZiAobmVlZHNSZXN0YXJ0ICYmIHJ1bm5pbmcpIHtcbiAgICBsb2coJ1Jlc3RhcnRpbmcgTG9jYWwgdG8gYWN0aXZhdGUgYWRkb24uLi4nKTtcbiAgICBhd2FpdCByZXN0YXJ0TG9jYWwoKTtcbiAgfSBlbHNlIGlmICghcnVubmluZykge1xuICAgIGxvZygnU3RhcnRpbmcgTG9jYWwuLi4nKTtcbiAgICBhd2FpdCBzdGFydExvY2FsKCk7XG4gIH1cblxuICAvLyBXYWl0IGZvciBHcmFwaFFMIHNlcnZlclxuICBsb2coJ1dhaXRpbmcgZm9yIEdyYXBoUUwuLi4nKTtcbiAgY29uc3QgcmVhZHkgPSBhd2FpdCB3YWl0Rm9yR3JhcGhRTCgpO1xuXG4gIGlmICghcmVhZHkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICBlcnJvcjogJ1RpbWVkIG91dCB3YWl0aW5nIGZvciBMb2NhbC4gSXMgTG9jYWwgcnVubmluZz8nLFxuICAgICAgYWN0aW9ucyxcbiAgICB9O1xuICB9XG5cbiAgbG9nKCdHcmFwaFFMIHNlcnZlciByZWFkeS4nKTtcblxuICAvLyBSZWFkIGNvbm5lY3Rpb24gaW5mb1xuICBjb25zdCBjb25uZWN0aW9uSW5mbyA9IHJlYWRDb25uZWN0aW9uSW5mbygpO1xuXG4gIGlmICghY29ubmVjdGlvbkluZm8pIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICBlcnJvcjogJ0NvdWxkIG5vdCByZWFkIEdyYXBoUUwgY29ubmVjdGlvbiBpbmZvLicsXG4gICAgICBhY3Rpb25zLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgY29ubmVjdGlvbkluZm8sXG4gICAgYWN0aW9ucyxcbiAgfTtcbn1cblxuZXhwb3J0IHsgZ2V0TG9jYWxQYXRocywgTG9jYWxQYXRocyB9O1xuIl19
493
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYm9vdHN0cmFwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7O0dBU0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJCSCw0Q0FvQkM7QUFLRCx3Q0FvQkM7QUFLRCxnQ0FnQkM7QUFLRCw4QkFZQztBQUtELG9DQUtDO0FBb0JELG9DQUdDO0FBS0QsNENBVUM7QUFLRCw0Q0FlQztBQU1ELHNDQXdCQztBQXlERCxvQ0FvREM7QUFLRCxrQ0F5QkM7QUFTRCxnREFvQkM7QUFLRCx3Q0F1Q0M7QUFhRCw4QkFrRkM7QUFqZ0JELHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0IsaURBQStDO0FBQy9DLCtCQUFpQztBQUNqQyxtQ0FBb0Q7QUErZjNDLDhGQS9mQSxxQkFBYSxPQStmQTtBQTdmdEIsTUFBTSxTQUFTLEdBQUcsSUFBQSxnQkFBUyxFQUFDLG9CQUFJLENBQUMsQ0FBQztBQWdCbEM7O0dBRUc7QUFDSCxTQUFnQixnQkFBZ0I7SUFDOUIsTUFBTSxLQUFLLEdBQUcsSUFBQSxxQkFBYSxHQUFFLENBQUM7SUFFOUIsSUFBSSxDQUFDO1FBQ0gsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUMsQ0FBQzthQUFNLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN4QyxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVDLENBQUM7YUFBTSxDQUFDO1lBQ04sOERBQThEO1lBQzlELElBQUksQ0FBQztnQkFDSCxJQUFBLHdCQUFRLEVBQUMsYUFBYSxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JB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RCxZQUFZLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQztJQUMxQyxDQUFDO0lBRUQsNEJBQTRCO0lBQzVCLE1BQU0sT0FBTyxHQUFHLE1BQU0sY0FBYyxFQUFFLENBQUM7SUFFdkMsSUFBSSxZQUFZLElBQUksT0FBTyxFQUFFLENBQUM7UUFDNUIsR0FBRyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDN0MsTUFBTSxZQUFZLEVBQUUsQ0FBQztJQUN2QixDQUFDO1NBQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BCLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3pCLE1BQU0sVUFBVSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM5QixNQUFNLEtBQUssR0FBRyxNQUFNLGNBQWMsRUFBRSxDQUFDO0lBRXJDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE9BQU87WUFDTCxPQUFPLEVBQUUsS0FBSztZQUNkLEtBQUssRUFBRSxnREFBZ0Q7WUFDdkQsT0FBTztTQUNSLENBQUM7SUFDSixDQUFDO0lBRUQsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFFN0IsdUJBQXVCO0lBQ3ZCLE1BQU0sY0FBYyxHQUFHLGtCQUFrQixFQUFFLENBQUM7SUFFNUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLE9BQU87WUFDTCxPQUFPLEVBQUUsS0FBSztZQUNkLEtBQUssRUFBRSx5Q0FBeUM7WUFDaEQsT0FBTztTQUNSLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sRUFBRSxJQUFJO1FBQ2IsY0FBYztRQUNkLE9BQU87S0FDUixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQm9vdHN0cmFwIFN5c3RlbVxuICpcbiAqIENvbm5lY3RzIHRoZSBDTEkgdG8gTG9jYWwncyBHcmFwaFFMIHNlcnZlcjpcbiAqIC0gRGV0ZWN0cyBMb2NhbCBpbnN0YWxsYXRpb25cbiAqIC0gSW5zdGFsbHMgYW5kIGFjdGl2YXRlcyBhZGRvbiBpZiBuZWVkZWRcbiAqIC0gU3RhcnRzIExvY2FsIGlmIG5lZWRlZFxuICogLSBXYWl0cyBmb3IgR3JhcGhRTCBzZXJ2ZXIgdG8gYmUgcmVhZHlcbiAqIC0gUmVhZHMgY29ubmVjdGlvbiBpbmZvXG4gKi9cblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGV4ZWMsIGV4ZWNTeW5jIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcbmltcG9ydCB7IGdldExvY2FsUGF0aHMsIExvY2FsUGF0aHMgfSBmcm9tICcuL3BhdGhzJztcblxuY29uc3QgZXhlY0FzeW5jID0gcHJvbWlzaWZ5KGV4ZWMpO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3Rpb25JbmZvIHtcbiAgdXJsOiBzdHJpbmc7XG4gIHN1YnNjcmlwdGlvblVybDogc3RyaW5nO1xuICBwb3J0OiBudW1iZXI7XG4gIGF1dGhUb2tlbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb3RzdHJhcFJlc3VsdCB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIGNvbm5lY3Rpb25JbmZvPzogQ29ubmVjdGlvbkluZm87XG4gIGVycm9yPzogc3RyaW5nO1xuICBhY3Rpb25zOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBMb2NhbCBpcyBpbnN0YWxsZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTG9jYWxJbnN0YWxsZWQoKTogYm9vbGVhbiB7XG4gIGNvbnN0IHBhdGhzID0gZ2V0TG9jYWxQYXRocygpO1xuXG4gIHRyeSB7XG4gICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICdkYXJ3aW4nKSB7XG4gICAgICByZXR1cm4gZnMuZXhpc3RzU3luYyhwYXRocy5hcHBFeGVjdXRhYmxlKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicpIHtcbiAgICAgIHJldHVybiBmcy5leGlzdHNTeW5jKHBhdGhzLmFwcEV4ZWN1dGFibGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBMaW51eCAtIGNoZWNrIGlmICdsb2NhbCcgaXMgaW4gUEFUSCBvciBhdCBleHBlY3RlZCBsb2NhdGlvblxuICAgICAgdHJ5IHtcbiAgICAgICAgZXhlY1N5bmMoJ3doaWNoIGxvY2FsJywgeyBzdGRpbzogJ2lnbm9yZScgfSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmcy5leGlzdHNTeW5jKHBhdGhzLmFwcEV4ZWN1dGFibGUpO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgTG9jYWwgaXMgY3VycmVudGx5IHJ1bm5pbmdcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzTG9jYWxSdW5uaW5nKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICB0cnkge1xuICAgIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnZGFyd2luJykge1xuICAgICAgLy8gVXNlIHBncmVwIHdpdGggLWYgdG8gbWF0Y2ggYW55IHByb2Nlc3MgY29udGFpbmluZyBcIkxvY2FsXCJcbiAgICAgIC8vIEFsc28gY2hlY2sgaWYgR3JhcGhRTCBjb25uZWN0aW9uIGluZm8gZXhpc3RzIGFuZCBpcyByZWNlbnRcbiAgICAgIGNvbnN0IHsgc3Rkb3V0IH0gPSBhd2FpdCBleGVjQXN5bmMoYHBncmVwIC1mIFwiTG9jYWwuYXBwXCJgKTtcbiAgICAgIHJldHVybiBzdGRvdXQudHJpbSgpLmxlbmd0aCA+IDA7XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInKSB7XG4gICAgICBjb25zdCB7IHN0ZG91dCB9ID0gYXdhaXQgZXhlY0FzeW5jKGB0YXNrbGlzdCAvRkkgXCJJTUFHRU5BTUUgZXEgTG9jYWwuZXhlXCJgKTtcbiAgICAgIHJldHVybiBzdGRvdXQuaW5jbHVkZXMoJ0xvY2FsLmV4ZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB7IHN0ZG91dCB9ID0gYXdhaXQgZXhlY0FzeW5jKGBwZ3JlcCAtZiBcImxvY2FsXCJgKTtcbiAgICAgIHJldHVybiBzdGRvdXQudHJpbSgpLmxlbmd0aCA+IDA7XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICAvLyBwZ3JlcCByZXR1cm5zIG5vbi16ZXJvIGlmIG5vIHByb2Nlc3NlcyBmb3VuZFxuICAgIC8vIENoZWNrIGlmIGNvbm5lY3Rpb24gaW5mbyBleGlzdHMgYXMgYSBmYWxsYmFja1xuICAgIGNvbnN0IGNvbm5lY3Rpb25JbmZvID0gcmVhZENvbm5lY3Rpb25JbmZvKCk7XG4gICAgcmV0dXJuIGNvbm5lY3Rpb25JbmZvICE9PSBudWxsO1xuICB9XG59XG5cbi8qKlxuICogU3RhcnQgTG9jYWwgYXBwbGljYXRpb25cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0TG9jYWwoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHBhdGhzID0gZ2V0TG9jYWxQYXRocygpO1xuXG4gIHRyeSB7XG4gICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICdkYXJ3aW4nKSB7XG4gICAgICAvLyBKdXN0IGFjdGl2YXRlIExvY2FsIC0gZG9uJ3QgdHJ5IHRvIGhpZGUgaXQgKHJlcXVpcmVzIGFjY2Vzc2liaWxpdHkgcGVybWlzc2lvbnMpXG4gICAgICBhd2FpdCBleGVjQXN5bmMoYG9wZW4gLWEgXCJMb2NhbFwiYCk7XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInKSB7XG4gICAgICAvLyAvTUlOID0gc3RhcnQgbWluaW1pemVkXG4gICAgICBhd2FpdCBleGVjQXN5bmMoYHN0YXJ0IC9NSU4gXCJcIiBcIiR7cGF0aHMuYXBwRXhlY3V0YWJsZX1cImApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBleGVjQXN5bmMoYCR7cGF0aHMuYXBwRXhlY3V0YWJsZX0gJmApO1xuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgLy8gSWdub3JlIGVycm9ycyAtIExvY2FsIG1pZ2h0IGFscmVhZHkgYmUgcnVubmluZ1xuICB9XG59XG5cbi8qKlxuICogU3RvcCBMb2NhbCBhcHBsaWNhdGlvblxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RvcExvY2FsKCk6IFByb21pc2U8dm9pZD4ge1xuICB0cnkge1xuICAgIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnZGFyd2luJykge1xuICAgICAgYXdhaXQgZXhlY0FzeW5jKGBvc2FzY3JpcHQgLWUgJ3F1aXQgYXBwIFwiTG9jYWxcIidgKTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicpIHtcbiAgICAgIGF3YWl0IGV4ZWNBc3luYyhgdGFza2tpbGwgL0lNIExvY2FsLmV4ZSAvRmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBleGVjQXN5bmMoYHBraWxsIC1mIGxvY2FsYCk7XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICAvLyBJZ25vcmUgZXJyb3JzIC0gTG9jYWwgbWlnaHQgbm90IGJlIHJ1bm5pbmdcbiAgfVxufVxuXG4vKipcbiAqIFJlc3RhcnQgTG9jYWwgYXBwbGljYXRpb25cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc3RhcnRMb2NhbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgc3RvcExvY2FsKCk7XG4gIC8vIFdhaXQgYSBiaXQgZm9yIHRoZSBwcm9jZXNzIHRvIGZ1bGx5IHN0b3BcbiAgYXdhaXQgZGVsYXkoMjAwMCk7XG4gIGF3YWl0IHN0YXJ0TG9jYWwoKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQWRkb24gTWFuYWdlbWVudFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEFkZG9uIGRpcmVjdG9yeSBuYW1lIGluIExvY2FsJ3MgYWRkb25zIGZvbGRlclxuICogTG9jYWwgdXNlcyBAc2NvcGUtbmFtZSBmb3JtYXQgKHJlcGxhY2VzIC8gd2l0aCAtKVxuICovXG5jb25zdCBBRERPTl9ESVJfTkFNRSA9ICdAbG9jYWwtbGFicy1sb2NhbC1hZGRvbi1jbGknO1xuXG4vKipcbiAqIEFkZG9uIGtleSBpbiBlbmFibGVkLWFkZG9ucy5qc29uIChwYWNrYWdlIG5hbWUpXG4gKi9cbmNvbnN0IEFERE9OX0VOQUJMRURfS0VZID0gJ0Bsb2NhbC1sYWJzLWpwb2xsb2NrL2xvY2FsLWFkZG9uLWNsaSc7XG5cbi8qKlxuICogR2V0IHRoZSBhZGRvbiBpbnN0YWxsYXRpb24gcGF0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWRkb25QYXRoKCk6IHN0cmluZyB7XG4gIGNvbnN0IHBhdGhzID0gZ2V0TG9jYWxQYXRocygpO1xuICByZXR1cm4gcGF0aC5qb2luKHBhdGhzLmFkZG9uc0RpciwgQURET05fRElSX05BTUUpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBhZGRvbiBpcyBpbnN0YWxsZWQgaW4gTG9jYWwncyBhZGRvbnMgZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FkZG9uSW5zdGFsbGVkKCk6IGJvb2xlYW4ge1xuICBjb25zdCBhZGRvblBhdGggPSBnZXRBZGRvblBhdGgoKTtcblxuICAvLyBDaGVjayBmb3IgZGlyZWN0b3J5IG9yIHN5bWxpbmtcbiAgdHJ5IHtcbiAgICBjb25zdCBzdGF0ID0gZnMubHN0YXRTeW5jKGFkZG9uUGF0aCk7XG4gICAgcmV0dXJuIHN0YXQuaXNEaXJlY3RvcnkoKSB8fCBzdGF0LmlzU3ltYm9saWNMaW5rKCk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBhZGRvbiBpcyBhY3RpdmF0ZWQgaW4gZW5hYmxlZC1hZGRvbnMuanNvblxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBZGRvbkFjdGl2YXRlZCgpOiBib29sZWFuIHtcbiAgY29uc3QgcGF0aHMgPSBnZXRMb2NhbFBhdGhzKCk7XG5cbiAgdHJ5IHtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMocGF0aHMuZW5hYmxlZEFkZG9uc0ZpbGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhwYXRocy5lbmFibGVkQWRkb25zRmlsZSwgJ3V0Zi04Jyk7XG4gICAgY29uc3QgZW5hYmxlZEFkZG9uczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSBKU09OLnBhcnNlKGNvbnRlbnQpO1xuXG4gICAgcmV0dXJuIGVuYWJsZWRBZGRvbnNbQURET05fRU5BQkxFRF9LRVldID09PSB0cnVlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBBY3RpdmF0ZSB0aGUgYWRkb24gYnkgbW9kaWZ5aW5nIGVuYWJsZWQtYWRkb25zLmpzb25cbiAqIFJldHVybnMgdHJ1ZSBpZiByZXN0YXJ0IGlzIG5lZWRlZCAoYWRkb24gd2FzIGp1c3QgYWN0aXZhdGVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aXZhdGVBZGRvbigpOiBib29sZWFuIHtcbiAgY29uc3QgcGF0aHMgPSBnZXRMb2NhbFBhdGhzKCk7XG5cbiAgdHJ5IHtcbiAgICBsZXQgZW5hYmxlZEFkZG9uczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcblxuICAgIGlmIChmcy5leGlzdHNTeW5jKHBhdGhzLmVuYWJsZWRBZGRvbnNGaWxlKSkge1xuICAgICAgY29uc3QgY29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhwYXRocy5lbmFibGVkQWRkb25zRmlsZSwgJ3V0Zi04Jyk7XG4gICAgICBlbmFibGVkQWRkb25zID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBhbHJlYWR5IGFjdGl2YXRlZFxuICAgIGlmIChlbmFibGVkQWRkb25zW0FERE9OX0VOQUJMRURfS0VZXSA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlOyAvLyBBbHJlYWR5IGFjdGl2ZSwgbm8gcmVzdGFydCBuZWVkZWRcbiAgICB9XG5cbiAgICAvLyBBY3RpdmF0ZSB0aGUgYWRkb25cbiAgICBlbmFibGVkQWRkb25zW0FERE9OX0VOQUJMRURfS0VZXSA9IHRydWU7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRocy5lbmFibGVkQWRkb25zRmlsZSwgSlNPTi5zdHJpbmdpZnkoZW5hYmxlZEFkZG9ucywgbnVsbCwgMikpO1xuXG4gICAgcmV0dXJuIHRydWU7IC8vIFJlc3RhcnQgbmVlZGVkXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIENvcHkgYSBkaXJlY3RvcnkgcmVjdXJzaXZlbHlcbiAqL1xuZnVuY3Rpb24gY29weURpclN5bmMoc3JjOiBzdHJpbmcsIGRlc3Q6IHN0cmluZyk6IHZvaWQge1xuICBmcy5ta2RpclN5bmMoZGVzdCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgY29uc3QgZW50cmllcyA9IGZzLnJlYWRkaXJTeW5jKHNyYywgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGNvbnN0IHNyY1BhdGggPSBwYXRoLmpvaW4oc3JjLCBlbnRyeS5uYW1lKTtcbiAgICBjb25zdCBkZXN0UGF0aCA9IHBhdGguam9pbihkZXN0LCBlbnRyeS5uYW1lKTtcblxuICAgIGlmIChlbnRyeS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICBjb3B5RGlyU3luYyhzcmNQYXRoLCBkZXN0UGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZzLmNvcHlGaWxlU3luYyhzcmNQYXRoLCBkZXN0UGF0aCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRmluZCB0aGUgYnVuZGxlZCBhZGRvbiBwYXRoIChpbmNsdWRlZCBpbiBucG0gcGFja2FnZSlcbiAqIExvY2F0ZWQgYXQgYWRkb24tZGlzdC8gcmVsYXRpdmUgdG8gdGhlIENMSSBwYWNrYWdlIHJvb3RcbiAqL1xuZnVuY3Rpb24gZmluZEJ1bmRsZWRBZGRvblBhdGgoKTogc3RyaW5nIHwgbnVsbCB7XG4gIC8vIEZyb20gbGliL2Jvb3RzdHJhcC8gLT4gYWRkb24tZGlzdC9cbiAgY29uc3QgYnVuZGxlZFBhdGggPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnYWRkb24tZGlzdCcpO1xuXG4gIGlmIChmcy5leGlzdHNTeW5jKHBhdGguam9pbihidW5kbGVkUGF0aCwgJ3BhY2thZ2UuanNvbicpKSkge1xuICAgIHJldHVybiBidW5kbGVkUGF0aDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEZpbmQgdGhlIGxvY2FsIGRldmVsb3BtZW50IGFkZG9uIHBhdGggKGZvciBkZXYgbW9kZSlcbiAqIExvb2tzIGZvciB0aGUgYWRkb24gcmVsYXRpdmUgdG8gdGhlIENMSSBwYWNrYWdlIGluIG1vbm9yZXBvXG4gKi9cbmZ1bmN0aW9uIGZpbmREZXZBZGRvblBhdGgoKTogc3RyaW5nIHwgbnVsbCB7XG4gIC8vIENoZWNrIGlmIHdlJ3JlIGluIHRoZSBtb25vcmVwbyBzdHJ1Y3R1cmVcbiAgLy8gV29ya3MgZnJvbSBib3RoIGxpYi9ib290c3RyYXAgKGNvbXBpbGVkKSBhbmQgc3JjL2Jvb3RzdHJhcCAodHMtbm9kZSlcbiAgY29uc3QgY2xpRGlyID0gX19kaXJuYW1lO1xuICBjb25zdCBhZGRvblBhdGggPSBwYXRoLnJlc29sdmUoY2xpRGlyLCAnLi4nLCAnLi4nLCAnLi4nLCAnYWRkb24nKTtcblxuICBpZiAoZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4oYWRkb25QYXRoLCAncGFja2FnZS5qc29uJykpKSB7XG4gICAgcmV0dXJuIGFkZG9uUGF0aDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEluc3RhbGwgdGhlIGFkZG9uIGZyb20gYnVuZGxlZCBwYWNrYWdlIG9yIGNyZWF0ZSBkZXYgc3ltbGlua1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5zdGFsbEFkZG9uKFxuICBvcHRpb25zOiB7XG4gICAgb25TdGF0dXM/OiAoc3RhdHVzOiBzdHJpbmcpID0+IHZvaWQ7XG4gIH0gPSB7fVxuKTogUHJvbWlzZTx7IHN1Y2Nlc3M6IGJvb2xlYW47IGVycm9yPzogc3RyaW5nOyBuZWVkc1Jlc3RhcnQ6IGJvb2xlYW4gfT4ge1xuICBjb25zdCBsb2cgPSBvcHRpb25zLm9uU3RhdHVzIHx8ICgoKSA9PiB7fSk7XG4gIGNvbnN0IHBhdGhzID0gZ2V0TG9jYWxQYXRocygpO1xuICBjb25zdCBhZGRvblBhdGggPSBnZXRBZGRvblBhdGgoKTtcblxuICB0cnkge1xuICAgIC8vIEVuc3VyZSBhZGRvbnMgZGlyZWN0b3J5IGV4aXN0c1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhwYXRocy5hZGRvbnNEaXIpKSB7XG4gICAgICBmcy5ta2RpclN5bmMocGF0aHMuYWRkb25zRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICAvLyBUcnkgYnVuZGxlZCBhZGRvbiBmaXJzdCAocHJvZHVjdGlvbiAtIGluY2x1ZGVkIGluIG5wbSBwYWNrYWdlKVxuICAgIGNvbnN0IGJ1bmRsZWRBZGRvblBhdGggPSBmaW5kQnVuZGxlZEFkZG9uUGF0aCgpO1xuXG4gICAgaWYgKGJ1bmRsZWRBZGRvblBhdGgpIHtcbiAgICAgIGxvZygnSW5zdGFsbGluZyBidW5kbGVkIGFkZG9uLi4uJyk7XG5cbiAgICAgIC8vIENvcHkgYnVuZGxlZCBhZGRvbiB0byBMb2NhbCdzIGFkZG9ucyBkaXJlY3RvcnlcbiAgICAgIGNvcHlEaXJTeW5jKGJ1bmRsZWRBZGRvblBhdGgsIGFkZG9uUGF0aCk7XG5cbiAgICAgIGxvZygnQWRkb24gaW5zdGFsbGVkIHN1Y2Nlc3NmdWxseS4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVHJ5IGRldmVsb3BtZW50IG1vZGUgLSBjcmVhdGUgc3ltbGluayB0byBsb2NhbCBhZGRvbiBpbiBtb25vcmVwb1xuICAgICAgY29uc3QgZGV2QWRkb25QYXRoID0gZmluZERldkFkZG9uUGF0aCgpO1xuXG4gICAgICBpZiAoZGV2QWRkb25QYXRoKSB7XG4gICAgICAgIGxvZygnVXNpbmcgZGV2ZWxvcG1lbnQgYWRkb24gKHN5bWxpbmspLi4uJyk7XG5cbiAgICAgICAgZnMuc3ltbGlua1N5bmMoZGV2QWRkb25QYXRoLCBhZGRvblBhdGgpO1xuICAgICAgICBsb2coYENyZWF0ZWQgc3ltbGluazogJHthZGRvblBhdGh9IC0+ICR7ZGV2QWRkb25QYXRofWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdBZGRvbiBub3QgZm91bmQuIFBsZWFzZSByZWluc3RhbGwgdGhlIENMSSBwYWNrYWdlOiBucG0gaW5zdGFsbCAtZyBAbG9jYWwtbGFicy9sb2NhbC1jbGknXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWN0aXZhdGUgdGhlIGFkZG9uXG4gICAgY29uc3QgbmVlZHNSZXN0YXJ0ID0gYWN0aXZhdGVBZGRvbigpO1xuXG4gICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgbmVlZHNSZXN0YXJ0IH07XG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICBlcnJvcjogZXJyb3IubWVzc2FnZSB8fCAnRmFpbGVkIHRvIGluc3RhbGwgYWRkb24nLFxuICAgICAgbmVlZHNSZXN0YXJ0OiBmYWxzZSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogRW5zdXJlIGFkZG9uIGlzIGluc3RhbGxlZCBhbmQgYWN0aXZhdGVkXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmVBZGRvbihcbiAgb3B0aW9uczoge1xuICAgIG9uU3RhdHVzPzogKHN0YXR1czogc3RyaW5nKSA9PiB2b2lkO1xuICB9ID0ge31cbik6IFByb21pc2U8eyBzdWNjZXNzOiBib29sZWFuOyBlcnJvcj86IHN0cmluZzsgbmVlZHNSZXN0YXJ0OiBib29sZWFuIH0+IHtcbiAgY29uc3QgbG9nID0gb3B0aW9ucy5vblN0YXR1cyB8fCAoKCkgPT4ge30pO1xuXG4gIC8vIENoZWNrIGlmIGFkZG9uIGlzIGluc3RhbGxlZFxuICBpZiAoIWlzQWRkb25JbnN0YWxsZWQoKSkge1xuICAgIGxvZygnQWRkb24gbm90IGluc3RhbGxlZC4gSW5zdGFsbGluZy4uLicpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluc3RhbGxBZGRvbihvcHRpb25zKTtcbiAgICBpZiAoIXJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBuZWVkc1Jlc3RhcnQ6IHRydWUgfTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIGFkZG9uIGlzIGFjdGl2YXRlZFxuICBpZiAoIWlzQWRkb25BY3RpdmF0ZWQoKSkge1xuICAgIGxvZygnQWN0aXZhdGluZyBhZGRvbi4uLicpO1xuICAgIGNvbnN0IG5lZWRzUmVzdGFydCA9IGFjdGl2YXRlQWRkb24oKTtcbiAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBuZWVkc1Jlc3RhcnQgfTtcbiAgfVxuXG4gIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIG5lZWRzUmVzdGFydDogZmFsc2UgfTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29ubmVjdGlvbiBJbmZvXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUmVhZCBHcmFwaFFMIGNvbm5lY3Rpb24gaW5mbyBmcm9tIGdyYXBocWwtY29ubmVjdGlvbi1pbmZvLmpzb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRDb25uZWN0aW9uSW5mbygpOiBDb25uZWN0aW9uSW5mbyB8IG51bGwge1xuICBjb25zdCBwYXRocyA9IGdldExvY2FsUGF0aHMoKTtcblxuICB0cnkge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhwYXRocy5ncmFwaHFsQ29ubmVjdGlvbkluZm9GaWxlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhwYXRocy5ncmFwaHFsQ29ubmVjdGlvbkluZm9GaWxlLCAndXRmLTgnKTtcbiAgICBjb25zdCBpbmZvID0gSlNPTi5wYXJzZShjb250ZW50KTtcblxuICAgIHJldHVybiB7XG4gICAgICB1cmw6IGluZm8udXJsIHx8IGBodHRwOi8vMTI3LjAuMC4xOiR7aW5mby5wb3J0fS9ncmFwaHFsYCxcbiAgICAgIHN1YnNjcmlwdGlvblVybDogaW5mby5zdWJzY3JpcHRpb25VcmwgfHwgYHdzOi8vMTI3LjAuMC4xOiR7aW5mby5wb3J0fS9ncmFwaHFsYCxcbiAgICAgIHBvcnQ6IGluZm8ucG9ydCxcbiAgICAgIGF1dGhUb2tlbjogaW5mby5hdXRoVG9rZW4gfHwgJycsXG4gICAgfTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBXYWl0IGZvciBHcmFwaFFMIHNlcnZlciB0byBiZSByZWFkeVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2FpdEZvckdyYXBoUUwoXG4gIHRpbWVvdXRNczogbnVtYmVyID0gMzAwMDAsXG4gIHBvbGxJbnRlcnZhbE1zOiBudW1iZXIgPSA1MDBcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG5cbiAgd2hpbGUgKERhdGUubm93KCkgLSBzdGFydCA8IHRpbWVvdXRNcykge1xuICAgIGNvbnN0IGNvbm5lY3Rpb25JbmZvID0gcmVhZENvbm5lY3Rpb25JbmZvKCk7XG5cbiAgICBpZiAoY29ubmVjdGlvbkluZm8pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFVzZSBBYm9ydENvbnRyb2xsZXIgZm9yIHBlci1yZXF1ZXN0IHRpbWVvdXQgKDIgc2Vjb25kcylcbiAgICAgICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgICAgY29uc3QgcmVxdWVzdFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoKSwgMjAwMCk7XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChjb25uZWN0aW9uSW5mby51cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2Nvbm5lY3Rpb25JbmZvLmF1dGhUb2tlbn1gLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBxdWVyeTogJ3sgX190eXBlbmFtZSB9JyB9KSxcbiAgICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICB9KTtcblxuICAgICAgICBjbGVhclRpbWVvdXQocmVxdWVzdFRpbWVvdXQpO1xuXG4gICAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gU2VydmVyIG5vdCByZWFkeSB5ZXQgLSBjb25uZWN0aW9uIHJlZnVzZWQsIHRpbWVvdXQsIGV0Yy5cbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCBkZWxheShwb2xsSW50ZXJ2YWxNcyk7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogRGVsYXkgaGVscGVyXG4gKi9cbmZ1bmN0aW9uIGRlbGF5KG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG59XG5cbi8qKlxuICogTWFpbiBib290c3RyYXAgZnVuY3Rpb25cbiAqIEVuc3VyZXMgYWRkb24gaXMgaW5zdGFsbGVkLCBMb2NhbCBpcyBydW5uaW5nLCBhbmQgR3JhcGhRTCBpcyBhY2Nlc3NpYmxlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBib290c3RyYXAoXG4gIG9wdGlvbnM6IHtcbiAgICB2ZXJib3NlPzogYm9vbGVhbjtcbiAgICBza2lwQWRkb25JbnN0YWxsPzogYm9vbGVhbjtcbiAgICBvblN0YXR1cz86IChzdGF0dXM6IHN0cmluZykgPT4gdm9pZDtcbiAgfSA9IHt9XG4pOiBQcm9taXNlPEJvb3RzdHJhcFJlc3VsdD4ge1xuICBjb25zdCBhY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBsb2cgPSAobXNnOiBzdHJpbmcpID0+IHtcbiAgICBhY3Rpb25zLnB1c2gobXNnKTtcbiAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICBjb25zb2xlLmxvZyhtc2cpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5vblN0YXR1cykge1xuICAgICAgb3B0aW9ucy5vblN0YXR1cyhtc2cpO1xuICAgIH1cbiAgfTtcblxuICAvLyBDaGVjayBpZiBMb2NhbCBpcyBpbnN0YWxsZWRcbiAgaWYgKCFpc0xvY2FsSW5zdGFsbGVkKCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICBlcnJvcjogJ0xvY2FsIGlzIG5vdCBpbnN0YWxsZWQuIERvd25sb2FkIGZyb20gaHR0cHM6Ly9sb2NhbHdwLmNvbScsXG4gICAgICBhY3Rpb25zLFxuICAgIH07XG4gIH1cblxuICAvLyBFbnN1cmUgYWRkb24gaXMgaW5zdGFsbGVkIGFuZCBhY3RpdmF0ZWQgKHVubGVzcyBza2lwcGVkKVxuICBsZXQgbmVlZHNSZXN0YXJ0ID0gZmFsc2U7XG4gIGlmICghb3B0aW9ucy5za2lwQWRkb25JbnN0YWxsKSB7XG4gICAgY29uc3QgYWRkb25SZXN1bHQgPSBhd2FpdCBlbnN1cmVBZGRvbih7IG9uU3RhdHVzOiBsb2cgfSk7XG4gICAgaWYgKCFhZGRvblJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3I6IGFkZG9uUmVzdWx0LmVycm9yIHx8ICdGYWlsZWQgdG8gaW5zdGFsbCBhZGRvbicsXG4gICAgICAgIGFjdGlvbnMsXG4gICAgICB9O1xuICAgIH1cbiAgICBuZWVkc1Jlc3RhcnQgPSBhZGRvblJlc3VsdC5uZWVkc1Jlc3RhcnQ7XG4gIH1cblxuICAvLyBDaGVjayBpZiBMb2NhbCBpcyBydW5uaW5nXG4gIGNvbnN0IHJ1bm5pbmcgPSBhd2FpdCBpc0xvY2FsUnVubmluZygpO1xuXG4gIGlmIChuZWVkc1Jlc3RhcnQgJiYgcnVubmluZykge1xuICAgIGxvZygnUmVzdGFydGluZyBMb2NhbCB0byBhY3RpdmF0ZSBhZGRvbi4uLicpO1xuICAgIGF3YWl0IHJlc3RhcnRMb2NhbCgpO1xuICB9IGVsc2UgaWYgKCFydW5uaW5nKSB7XG4gICAgbG9nKCdTdGFydGluZyBMb2NhbC4uLicpO1xuICAgIGF3YWl0IHN0YXJ0TG9jYWwoKTtcbiAgfVxuXG4gIC8vIFdhaXQgZm9yIEdyYXBoUUwgc2VydmVyXG4gIGxvZygnV2FpdGluZyBmb3IgR3JhcGhRTC4uLicpO1xuICBjb25zdCByZWFkeSA9IGF3YWl0IHdhaXRGb3JHcmFwaFFMKCk7XG5cbiAgaWYgKCFyZWFkeSkge1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGVycm9yOiAnVGltZWQgb3V0IHdhaXRpbmcgZm9yIExvY2FsLiBJcyBMb2NhbCBydW5uaW5nPycsXG4gICAgICBhY3Rpb25zLFxuICAgIH07XG4gIH1cblxuICBsb2coJ0dyYXBoUUwgc2VydmVyIHJlYWR5LicpO1xuXG4gIC8vIFJlYWQgY29ubmVjdGlvbiBpbmZvXG4gIGNvbnN0IGNvbm5lY3Rpb25JbmZvID0gcmVhZENvbm5lY3Rpb25JbmZvKCk7XG5cbiAgaWYgKCFjb25uZWN0aW9uSW5mbykge1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGVycm9yOiAnQ291bGQgbm90IHJlYWQgR3JhcGhRTCBjb25uZWN0aW9uIGluZm8uJyxcbiAgICAgIGFjdGlvbnMsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3VjY2VzczogdHJ1ZSxcbiAgICBjb25uZWN0aW9uSW5mbyxcbiAgICBhY3Rpb25zLFxuICB9O1xufVxuXG5leHBvcnQgeyBnZXRMb2NhbFBhdGhzLCBMb2NhbFBhdGhzIH07XG4iXX0=
@@ -68,4 +68,4 @@ class GraphQLClient {
68
68
  }
69
69
  }
70
70
  exports.GraphQLClient = GraphQLClient;
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhRTENsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvR3JhcGhRTENsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7O0FBZUgsTUFBYSxrQkFBbUIsU0FBUSxLQUFLO0lBQzNDLFlBQ0UsT0FBZSxFQUNSLE1BQXVCO1FBRTlCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUZSLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBRzlCLElBQUksQ0FBQyxJQUFJLEdBQUcsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBUkQsZ0RBUUM7QUFFRCxNQUFhLGFBQWE7SUFLeEIsWUFBWSxjQUE4QixFQUFFLFVBQWdDLEVBQUU7UUFDNUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxLQUFLLENBQ1QsS0FBYSxFQUNiLFlBQXFDLEVBQUU7UUFFdkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUN6QyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVyRSxJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsTUFBTTtnQkFDZCxPQUFPLEVBQUU7b0JBQ1AsY0FBYyxFQUFFLGtCQUFrQjtvQkFDbEMsYUFBYSxFQUFFLFVBQVUsSUFBSSxDQUFDLFNBQVMsRUFBRTtpQkFDMUM7Z0JBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7Z0JBQzFDLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTthQUMxQixDQUFDLENBQUM7WUFFSCxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDakIsTUFBTSxJQUFJLGtCQUFrQixDQUFDLFFBQVEsUUFBUSxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUNsRixDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBdUIsQ0FBQztZQUU3RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzlDLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEUsQ0FBQztZQUVELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFFRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDckIsQ0FBQztRQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7WUFDcEIsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXhCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxJQUFJLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDcEQsQ0FBQztZQUVELElBQUksS0FBSyxZQUFZLGtCQUFrQixFQUFFLENBQUM7Z0JBQ3hDLE1BQU0sS0FBSyxDQUFDO1lBQ2QsQ0FBQztZQUVELE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQ1YsUUFBZ0IsRUFDaEIsWUFBcUMsRUFBRTtRQUV2QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUksUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQXpFRCxzQ0F5RUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdyYXBoUUwgQ2xpZW50XG4gKlxuICogU2ltcGxlIEdyYXBoUUwgY2xpZW50IGZvciBjb21tdW5pY2F0aW5nIHdpdGggTG9jYWwncyBHcmFwaFFMIHNlcnZlci5cbiAqL1xuXG5pbXBvcnQgeyBDb25uZWN0aW9uSW5mbyB9IGZyb20gJy4uL2Jvb3RzdHJhcCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JhcGhRTEVycm9yIHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBsb2NhdGlvbnM/OiBBcnJheTx7IGxpbmU6IG51bWJlcjsgY29sdW1uOiBudW1iZXIgfT47XG4gIHBhdGg/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcmFwaFFMUmVzcG9uc2U8VCA9IHVua25vd24+IHtcbiAgZGF0YT86IFQ7XG4gIGVycm9ycz86IEdyYXBoUUxFcnJvcltdO1xufVxuXG5leHBvcnQgY2xhc3MgR3JhcGhRTENsaWVudEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgcHVibGljIGVycm9ycz86IEdyYXBoUUxFcnJvcltdXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdHcmFwaFFMQ2xpZW50RXJyb3InO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHcmFwaFFMQ2xpZW50IHtcbiAgcHJpdmF0ZSB1cmw6IHN0cmluZztcbiAgcHJpdmF0ZSBhdXRoVG9rZW46IHN0cmluZztcbiAgcHJpdmF0ZSB0aW1lb3V0OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoY29ubmVjdGlvbkluZm86IENvbm5lY3Rpb25JbmZvLCBvcHRpb25zOiB7IHRpbWVvdXQ/OiBudW1iZXIgfSA9IHt9KSB7XG4gICAgdGhpcy51cmwgPSBjb25uZWN0aW9uSW5mby51cmw7XG4gICAgdGhpcy5hdXRoVG9rZW4gPSBjb25uZWN0aW9uSW5mby5hdXRoVG9rZW47XG4gICAgdGhpcy50aW1lb3V0ID0gb3B0aW9ucy50aW1lb3V0IHx8IDMwMDAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgYSBHcmFwaFFMIHF1ZXJ5IG9yIG11dGF0aW9uXG4gICAqL1xuICBhc3luYyBxdWVyeTxUID0gdW5rbm93bj4oXG4gICAgcXVlcnk6IHN0cmluZyxcbiAgICB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge31cbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoKSwgdGhpcy50aW1lb3V0KTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHRoaXMudXJsLCB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5hdXRoVG9rZW59YCxcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBxdWVyeSwgdmFyaWFibGVzIH0pLFxuICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSk7XG5cbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBHcmFwaFFMQ2xpZW50RXJyb3IoYEhUVFAgJHtyZXNwb25zZS5zdGF0dXN9OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IChhd2FpdCByZXNwb25zZS5qc29uKCkpIGFzIEdyYXBoUUxSZXNwb25zZTxUPjtcblxuICAgICAgaWYgKHJlc3VsdC5lcnJvcnMgJiYgcmVzdWx0LmVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBHcmFwaFFMQ2xpZW50RXJyb3IocmVzdWx0LmVycm9yc1swXS5tZXNzYWdlLCByZXN1bHQuZXJyb3JzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFyZXN1bHQuZGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgR3JhcGhRTENsaWVudEVycm9yKCdObyBkYXRhIGluIHJlc3BvbnNlJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQuZGF0YTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcblxuICAgICAgaWYgKGVycm9yLm5hbWUgPT09ICdBYm9ydEVycm9yJykge1xuICAgICAgICB0aHJvdyBuZXcgR3JhcGhRTENsaWVudEVycm9yKCdSZXF1ZXN0IHRpbWVkIG91dCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBHcmFwaFFMQ2xpZW50RXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBHcmFwaFFMQ2xpZW50RXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgYSBtdXRhdGlvbiAoYWxpYXMgZm9yIHF1ZXJ5LCBmb3IgY2xhcml0eSlcbiAgICovXG4gIGFzeW5jIG11dGF0ZTxUID0gdW5rbm93bj4oXG4gICAgbXV0YXRpb246IHN0cmluZyxcbiAgICB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge31cbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnk8VD4obXV0YXRpb24sIHZhcmlhYmxlcyk7XG4gIH1cbn1cbiJdfQ==
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhRTENsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvR3JhcGhRTENsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7O0FBZUgsTUFBYSxrQkFBbUIsU0FBUSxLQUFLO0lBQzNDLFlBQ0UsT0FBZSxFQUNSLE1BQXVCO1FBRTlCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUZSLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBRzlCLElBQUksQ0FBQyxJQUFJLEdBQUcsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBUkQsZ0RBUUM7QUFFRCxNQUFhLGFBQWE7SUFLeEIsWUFBWSxjQUE4QixFQUFFLFVBQWdDLEVBQUU7UUFDNUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxLQUFLLENBQWMsS0FBYSxFQUFFLFlBQXFDLEVBQUU7UUFDN0UsTUFBTSxVQUFVLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUN6QyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVyRSxJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsTUFBTTtnQkFDZCxPQUFPLEVBQUU7b0JBQ1AsY0FBYyxFQUFFLGtCQUFrQjtvQkFDbEMsYUFBYSxFQUFFLFVBQVUsSUFBSSxDQUFDLFNBQVMsRUFBRTtpQkFDMUM7Z0JBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7Z0JBQzFDLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTthQUMxQixDQUFDLENBQUM7WUFFSCxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDakIsTUFBTSxJQUFJLGtCQUFrQixDQUFDLFFBQVEsUUFBUSxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUNsRixDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBdUIsQ0FBQztZQUU3RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzlDLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEUsQ0FBQztZQUVELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFFRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDckIsQ0FBQztRQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7WUFDcEIsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXhCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxJQUFJLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDcEQsQ0FBQztZQUVELElBQUksS0FBSyxZQUFZLGtCQUFrQixFQUFFLENBQUM7Z0JBQ3hDLE1BQU0sS0FBSyxDQUFDO1lBQ2QsQ0FBQztZQUVELE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQWMsUUFBZ0IsRUFBRSxZQUFxQyxFQUFFO1FBQ2pGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBSSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDNUMsQ0FBQztDQUNGO0FBbkVELHNDQW1FQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR3JhcGhRTCBDbGllbnRcbiAqXG4gKiBTaW1wbGUgR3JhcGhRTCBjbGllbnQgZm9yIGNvbW11bmljYXRpbmcgd2l0aCBMb2NhbCdzIEdyYXBoUUwgc2VydmVyLlxuICovXG5cbmltcG9ydCB7IENvbm5lY3Rpb25JbmZvIH0gZnJvbSAnLi4vYm9vdHN0cmFwJztcblxuZXhwb3J0IGludGVyZmFjZSBHcmFwaFFMRXJyb3Ige1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGxvY2F0aW9ucz86IEFycmF5PHsgbGluZTogbnVtYmVyOyBjb2x1bW46IG51bWJlciB9PjtcbiAgcGF0aD86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoUUxSZXNwb25zZTxUID0gdW5rbm93bj4ge1xuICBkYXRhPzogVDtcbiAgZXJyb3JzPzogR3JhcGhRTEVycm9yW107XG59XG5cbmV4cG9ydCBjbGFzcyBHcmFwaFFMQ2xpZW50RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBwdWJsaWMgZXJyb3JzPzogR3JhcGhRTEVycm9yW11cbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ0dyYXBoUUxDbGllbnRFcnJvcic7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdyYXBoUUxDbGllbnQge1xuICBwcml2YXRlIHVybDogc3RyaW5nO1xuICBwcml2YXRlIGF1dGhUb2tlbjogc3RyaW5nO1xuICBwcml2YXRlIHRpbWVvdXQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihjb25uZWN0aW9uSW5mbzogQ29ubmVjdGlvbkluZm8sIG9wdGlvbnM6IHsgdGltZW91dD86IG51bWJlciB9ID0ge30pIHtcbiAgICB0aGlzLnVybCA9IGNvbm5lY3Rpb25JbmZvLnVybDtcbiAgICB0aGlzLmF1dGhUb2tlbiA9IGNvbm5lY3Rpb25JbmZvLmF1dGhUb2tlbjtcbiAgICB0aGlzLnRpbWVvdXQgPSBvcHRpb25zLnRpbWVvdXQgfHwgMzAwMDA7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBhIEdyYXBoUUwgcXVlcnkgb3IgbXV0YXRpb25cbiAgICovXG4gIGFzeW5jIHF1ZXJ5PFQgPSB1bmtub3duPihxdWVyeTogc3RyaW5nLCB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge30pOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4gY29udHJvbGxlci5hYm9ydCgpLCB0aGlzLnRpbWVvdXQpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godGhpcy51cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLmF1dGhUb2tlbn1gLFxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHF1ZXJ5LCB2YXJpYWJsZXMgfSksXG4gICAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgICB9KTtcblxuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG5cbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IEdyYXBoUUxDbGllbnRFcnJvcihgSFRUUCAke3Jlc3BvbnNlLnN0YXR1c306ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdWx0ID0gKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkgYXMgR3JhcGhRTFJlc3BvbnNlPFQ+O1xuXG4gICAgICBpZiAocmVzdWx0LmVycm9ycyAmJiByZXN1bHQuZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEdyYXBoUUxDbGllbnRFcnJvcihyZXN1bHQuZXJyb3JzWzBdLm1lc3NhZ2UsIHJlc3VsdC5lcnJvcnMpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXJlc3VsdC5kYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBHcmFwaFFMQ2xpZW50RXJyb3IoJ05vIGRhdGEgaW4gcmVzcG9uc2UnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuXG4gICAgICBpZiAoZXJyb3IubmFtZSA9PT0gJ0Fib3J0RXJyb3InKSB7XG4gICAgICAgIHRocm93IG5ldyBHcmFwaFFMQ2xpZW50RXJyb3IoJ1JlcXVlc3QgdGltZWQgb3V0Jyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEdyYXBoUUxDbGllbnRFcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxDbGllbnRFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBhIG11dGF0aW9uIChhbGlhcyBmb3IgcXVlcnksIGZvciBjbGFyaXR5KVxuICAgKi9cbiAgYXN5bmMgbXV0YXRlPFQgPSB1bmtub3duPihtdXRhdGlvbjogc3RyaW5nLCB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge30pOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeTxUPihtdXRhdGlvbiwgdmFyaWFibGVzKTtcbiAgfVxufVxuIl19