@cloudbase/oauth 2.22.6 → 2.22.8
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.
package/dist/cjs/auth/apis.js
CHANGED
|
@@ -295,7 +295,7 @@ var Auth = (function () {
|
|
|
295
295
|
};
|
|
296
296
|
Auth.prototype.getVerification = function (params, options) {
|
|
297
297
|
return __awaiter(this, void 0, void 0, function () {
|
|
298
|
-
var withCredentials, hasLogin;
|
|
298
|
+
var withCredentials, hasLogin, body;
|
|
299
299
|
return __generator(this, function (_a) {
|
|
300
300
|
switch (_a.label) {
|
|
301
301
|
case 0:
|
|
@@ -310,12 +310,17 @@ var Auth = (function () {
|
|
|
310
310
|
withCredentials = true;
|
|
311
311
|
}
|
|
312
312
|
_a.label = 3;
|
|
313
|
-
case 3:
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
313
|
+
case 3:
|
|
314
|
+
body = JSON.parse(JSON.stringify(params));
|
|
315
|
+
if (body.phone_number && !/^\+\d{1,3}\s+\d+/.test(body.phone_number)) {
|
|
316
|
+
body.phone_number = "+86 ".concat(body.phone_number);
|
|
317
|
+
}
|
|
318
|
+
return [2, this.config.request(consts_1.ApiUrls.VERIFICATION_URL, {
|
|
319
|
+
method: 'POST',
|
|
320
|
+
body: body,
|
|
321
|
+
withCaptcha: (options === null || options === void 0 ? void 0 : options.withCaptcha) || false,
|
|
322
|
+
withCredentials: withCredentials,
|
|
323
|
+
})];
|
|
319
324
|
}
|
|
320
325
|
});
|
|
321
326
|
});
|
|
@@ -1075,4 +1080,4 @@ var Auth = (function () {
|
|
|
1075
1080
|
return Auth;
|
|
1076
1081
|
}());
|
|
1077
1082
|
exports.Auth = Auth;
|
|
1078
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL2FwaXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRVosbUNBQXdEO0FBOER4RCw2REFBMkU7QUFFM0UsOENBQTREO0FBQzVELGtDQUFvQztBQUNwQyw2RUFBd0Q7QUFJeEQsU0FBUyxlQUFlLENBQUMsU0FBUyxFQUFFLE9BQTRCOztJQUM5RCxJQUFNLFFBQVEsR0FBRztRQUNmLElBQUk7WUFHRixJQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtZQUV6QyxPQUFPLEtBQUssQ0FBQTtTQUNiO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFNO1NBQ1A7SUFDSCxDQUFDLENBQUE7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLENBQUEsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsSUFBSSwwQ0FBRSxVQUFVLEtBQUksVUFBVSxDQUFDLENBQUMsV0FBVyxFQUFFO1lBQ3pELE9BQU07U0FDUDtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxTQUFTLEVBQUU7WUFDekMsT0FBTyxRQUFRLEVBQUUsQ0FBQTtTQUNsQjtLQUNGO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxJQUFJLFNBQVMsRUFBRTtZQUNiLE9BQU8sUUFBUSxFQUFFLENBQUE7U0FDbEI7S0FDRjtBQUNILENBQUM7QUE0QkQ7SUFrQkUsY0FBWSxJQUFpQjtRQUNyQixJQUFBLE9BQU8sR0FBSyxJQUFJLFFBQVQsQ0FBUztRQUN0QixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUE7UUFDekMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQixJQUFNLFdBQVcsR0FBRztn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QUFDO0FBQUQsQ0FBQyxBQTM4QkQsSUEyOEJDO0FBMzhCWSxvQkFBSSIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xuXG5pbXBvcnQgeyBBcGlVcmxzLCBBcGlVcmxzVjIsIEVycm9yVHlwZSB9IGZyb20gJy4vY29uc3RzJ1xuaW1wb3J0IHtcbiAgR2V0VmVyaWZpY2F0aW9uUmVxdWVzdCxcbiAgR2V0VmVyaWZpY2F0aW9uUmVzcG9uc2UsXG4gIFVzZXJQcm9maWxlLFxuICBVc2VySW5mbyxcbiAgU2lnbkluUmVxdWVzdCxcbiAgU2lnblVwUmVxdWVzdCxcbiAgVmVyaWZ5UmVxdWVzdCxcbiAgVmVyaWZ5UmVzcG9uc2UsXG4gIEdlblByb3ZpZGVyUmVkaXJlY3RVcmlSZXF1ZXN0LFxuICBHZW5Qcm92aWRlclJlZGlyZWN0VXJpUmVzcG9uc2UsXG4gIEdyYW50UHJvdmlkZXJUb2tlblJlcXVlc3QsXG4gIEdyYW50UHJvdmlkZXJUb2tlblJlc3BvbnNlLFxuICBQYXRjaFByb3ZpZGVyVG9rZW5SZXF1ZXN0LFxuICBQYXRjaFByb3ZpZGVyVG9rZW5SZXNwb25zZSxcbiAgU2lnbkluV2l0aFByb3ZpZGVyUmVxdWVzdCxcbiAgU2lnbkluQ3VzdG9tUmVxdWVzdCxcbiAgQmluZFdpdGhQcm92aWRlclJlcXVlc3QsXG4gIFRyYW5zQnlQcm92aWRlclJlcXVlc3QsXG4gIEdyYW50VG9rZW5SZXF1ZXN0LFxuICBVbmJpbmRQcm92aWRlclJlcXVlc3QsXG4gIENoZWNrUGFzc3dvcmRSZXF1ZXN0LFxuICBTZXRQYXNzd29yZFJlcXVlc3QsXG4gIENoYW5nZUJvdW5kUHJvdmlkZXJSZXF1ZXN0LFxuICBDaGFuZ2VCb3VuZFByb3ZpZGVyUmVzcG9uc2UsXG4gIFVwZGF0ZVBhc3N3b3JkUmVxdWVzdCxcbiAgU3Vkb1Jlc3BvbnNlLFxuICBTdWRvUmVxdWVzdCxcbiAgR2V0Q3VzdG9tU2lnblRpY2tldEZuLFxuICBRdWVyeVVzZXJQcm9maWxlUmVxdWVzdCxcbiAgUXVlcnlVc2VyUHJvZmlsZVJlc3BvbnNlLFxuICBSZXNldFBhc3N3b3JkUmVxdWVzdCxcbiAgRGV2aWNlQXV0aG9yaXplUmVxdWVzdCxcbiAgRGV2aWNlQXV0aG9yaXplUmVzcG9uc2UsXG4gIENoZWNrVXNlcm5hbWVSZXF1ZXN0LFxuICBDaGVja0lmVXNlckV4aXN0UmVxdWVzdCxcbiAgQ2hlY2tJZlVzZXJFeGlzdFJlc3BvbnNlLFxuICBXaXRoU3Vkb1JlcXVlc3QsXG4gIFB1YmxpY0tleSxcbiAgRW5jcnlwdFBhcmFtcyxcbiAgUHJvdmlkZXJTdWJUeXBlLFxuICBHZXRNaW5pUHJvZ3JhbVFyQ29kZVJlcXVlc3QsXG4gIEdldE1pbmlQcm9ncmFtUXJDb2RlU3RhdHVzUmVxdWVzdCxcbiAgR2V0TWluaVByb2dyYW1RckNvZGVSZXNwb25zZSxcbiAgR2V0TWluaVByb2dyYW1RckNvZGVTdGF0dXNSZXNwb25zZSxcbiAgTW9kaWZ5VXNlckJhc2ljSW5mb1JlcXVlc3QsXG4gIEVkaXRDb250YWN0UmVxdWVzdCxcbiAgQXV0aG9yaXplSW5mb1JlcXVlc3QsXG4gIEF1dGhvcml6ZUluZm9SZXNwb25zZSxcbiAgQXV0aG9yaXplRGV2aWNlUmVxdWVzdCxcbiAgQXV0aG9yaXplUmVxdWVzdCxcbiAgQXV0aG9yaXplUmVzcG9uc2UsXG4gIEdldFVzZXJCZWhhdmlvckxvZyxcbiAgR2V0VXNlckJlaGF2aW9yTG9nUmVzLFxuICBSZXZva2VEZXZpY2VSZXF1ZXN0LFxuICBTaWdub3V0UmVwb25zZSxcbiAgUHJvdmlkZXJzUmVzcG9uc2UsXG4gIFNpZ25vdXRSZXF1ZXN0LFxuICBNb2RpZnlQYXNzd29yZFdpdGhvdXRMb2dpblJlcXVlc3QsXG59IGZyb20gJy4vbW9kZWxzJ1xuaW1wb3J0IHsgU2ltcGxlU3RvcmFnZSwgUmVxdWVzdEZ1bmN0aW9uIH0gZnJvbSAnLi4vb2F1dGgyY2xpZW50L2ludGVyZmFjZSdcbmltcG9ydCB7IE9BdXRoMkNsaWVudCwgZGVmYXVsdFN0b3JhZ2UgfSBmcm9tICcuLi9vYXV0aDJjbGllbnQvb2F1dGgyY2xpZW50J1xuaW1wb3J0IHsgQ3JlZGVudGlhbHMgfSBmcm9tICcuLi9vYXV0aDJjbGllbnQvbW9kZWxzJ1xuaW1wb3J0IHsgQ2FwdGNoYSwgQ2FwdGNoYU9wdGlvbnMgfSBmcm9tICcuLi9jYXB0Y2hhL2NhcHRjaGEnXG5pbXBvcnQgeyBkZWVwQ2xvbmUgfSBmcm9tICcuLi91dGlscydcbmltcG9ydCBNeVVSTFNlYXJjaFBhcmFtcyBmcm9tICcuLi91dGlscy91cmxTZWFyY2hQYXJhbXMnXG5pbXBvcnQgeyBTREtBZGFwdGVySW50ZXJmYWNlIH0gZnJvbSAnQGNsb3VkYmFzZS9hZGFwdGVyLWludGVyZmFjZSdcbmltcG9ydCB7IElDbG91ZGJhc2VDb25maWcgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzJ1xuXG5mdW5jdGlvbiBnZXRFbmNyeXB0VXRpbHMoaXNFbmNyeXB0LCBhZGFwdGVyOiBTREtBZGFwdGVySW50ZXJmYWNlKSB7XG4gIGNvbnN0IGdldFV0aWxzID0gKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy9lbmNyeXB0JylcbiAgICAgIC8qIGVzbGludC1lbmFibGUgKi9cbiAgICAgIHJldHVybiB1dGlsc1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cblxuICB0cnkge1xuICAgIGlmICgoYWRhcHRlcj8ucm9vdD8uZ2xvYmFsVGhpcyB8fCBnbG9iYWxUaGlzKS5JU19NUF9CVUlMRCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFwcm9jZXNzLmVudi5JU19NUF9CVUlMRCAmJiBpc0VuY3J5cHQpIHtcbiAgICAgIHJldHVybiBnZXRVdGlscygpXG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChpc0VuY3J5cHQpIHtcbiAgICAgIHJldHVybiBnZXRVdGlscygpXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aE9wdGlvbnMge1xuICBhcGlPcmlnaW46IHN0cmluZ1xuICBhcGlQYXRoPzogc3RyaW5nXG4gIGNsaWVudElkOiBzdHJpbmdcbiAgLyoqXG4gICAqIGJhc2ljIGF1dGhcbiAgICovXG4gIGNsaWVudFNlY3JldD86IHN0cmluZ1xuICBjcmVkZW50aWFsc0NsaWVudD86IE9BdXRoMkNsaWVudFxuICByZXF1ZXN0PzogUmVxdWVzdEZ1bmN0aW9uXG4gIGJhc2VSZXF1ZXN0PzogUmVxdWVzdEZ1bmN0aW9uXG4gIHN0b3JhZ2U/OiBTaW1wbGVTdG9yYWdlXG4gIGFub255bW91c1NpZ25JbkZ1bmM/OiAoQ3JlZGVudGlhbHMpID0+IFByb21pc2U8Q3JlZGVudGlhbHMgfCB2b2lkPlxuICBjYXB0Y2hhT3B0aW9ucz86IFBhcnRpYWw8Q2FwdGNoYU9wdGlvbnM+XG4gIGVudj86IHN0cmluZ1xuICB3eENsb3VkPzogYW55XG4gIGFkYXB0ZXI/OiBTREtBZGFwdGVySW50ZXJmYWNlXG4gIG9uQ3JlZGVudGlhbHNFcnJvcj86IChkYXRhOiB7IG1zZzogc3RyaW5nOyBldmVudFR5cGU/OiAnY3JlZGVudGlhbHNfZXJyb3InIH0pID0+IHZvaWRcbiAgaGVhZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1cbiAgaTE4bj86IElDbG91ZGJhc2VDb25maWdbJ2kxOG4nXVxuICB1c2VXeENsb3VkPzogYm9vbGVhblxufVxuXG4vKipcbiAqIEF1dGhcbiAqL1xuZXhwb3J0IGNsYXNzIEF1dGgge1xuICBwcml2YXRlIHN0YXRpYyBwYXJzZVBhcmFtc1RvU2VhcmNoKHBhcmFtczogYW55KTogc3RyaW5nIHtcbiAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKCFwYXJhbXNba2V5XSkge1xuICAgICAgICBkZWxldGUgcGFyYW1zW2tleV1cbiAgICAgIH1cbiAgICB9KVxuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IG5ldyBNeVVSTFNlYXJjaFBhcmFtcyhwYXJhbXMgYXMgYW55KVxuICAgIHJldHVybiBzZWFyY2hQYXJhbXMudG9TdHJpbmcoKVxuICB9XG5cbiAgcHJpdmF0ZSBjb25maWc6IEF1dGhPcHRpb25zXG4gIHByaXZhdGUgZ2V0Q3VzdG9tU2lnblRpY2tldEZuPzogR2V0Q3VzdG9tU2lnblRpY2tldEZuXG5cbiAgLyoqXG4gICAqIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7QXV0aE9wdGlvbnN9IG9wdHNcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdHM6IEF1dGhPcHRpb25zKSB7XG4gICAgbGV0IHsgcmVxdWVzdCB9ID0gb3B0c1xuICAgIGxldCBvQXV0aDJDbGllbnQgPSBvcHRzLmNyZWRlbnRpYWxzQ2xpZW50XG4gICAgaWYgKCFvQXV0aDJDbGllbnQpIHtcbiAgICAgIGNvbnN0IGluaXRPcHRpb25zID0ge1xuICAgICAgICBhcGlPcmlnaW46IG9wdHMuYXBpT3JpZ2luLFxuICAgICAgICBhcGlQYXRoOiBvcHRzLmFwaVBhdGgsXG4gICAgICAgIGNsaWVudElkOiBvcHRzLmNsaWVudElkLFxuICAgICAgICBzdG9yYWdlOiBvcHRzLnN0b3JhZ2UsXG4gICAgICAgIGVudjogb3B0cy5lbnYsXG4gICAgICAgIGJhc2VSZXF1ZXN0OiBvcHRzLmJhc2VSZXF1ZXN0IC8qIHx8IG9wdHMucmVxdWVzdCAqLywgLy8gb3B0cy5yZXF1ZXN0IOW6n+W8g+S4jeeUqOadpeihqOekuiBvYXV0aCBycXVlc3RcbiAgICAgICAgYW5vbnltb3VzU2lnbkluRnVuYzogb3B0cy5hbm9ueW1vdXNTaWduSW5GdW5jLFxuICAgICAgICB3eENsb3VkOiBvcHRzLnd4Q2xvdWQsXG4gICAgICAgIG9uQ3JlZGVudGlhbHNFcnJvcjogb3B0cy5vbkNyZWRlbnRpYWxzRXJyb3IsXG4gICAgICAgIGhlYWRlcnM6IG9wdHMuaGVhZGVycyB8fCB7fSxcbiAgICAgICAgaTE4bjogb3B0cy5pMThuLFxuICAgICAgfVxuICAgICAgb0F1dGgyQ2xpZW50ID0gbmV3IE9BdXRoMkNsaWVudChpbml0T3B0aW9ucylcbiAgICB9XG4gICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICBjb25zdCBiYXNlUmVxdWVzdCA9IG9BdXRoMkNsaWVudC5yZXF1ZXN0LmJpbmQob0F1dGgyQ2xpZW50KVxuICAgICAgY29uc3QgY2FwdGNoYSA9IG5ldyBDYXB0Y2hhKHtcbiAgICAgICAgY2xpZW50SWQ6IG9wdHMuY2xpZW50SWQsXG4gICAgICAgIHJlcXVlc3Q6IGJhc2VSZXF1ZXN0LFxuICAgICAgICBzdG9yYWdlOiBvcHRzLnN0b3JhZ2UsXG4gICAgICAgIGFkYXB0ZXI6IG9wdHMuYWRhcHRlcixcbiAgICAgICAgLi4ub3B0cy5jYXB0Y2hhT3B0aW9ucyxcbiAgICAgIH0pXG4gICAgICByZXF1ZXN0ID0gY2FwdGNoYS5yZXF1ZXN0LmJpbmQoY2FwdGNoYSlcbiAgICB9XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICBlbnY6IG9wdHMuZW52LFxuICAgICAgYXBpT3JpZ2luOiBvcHRzLmFwaU9yaWdpbixcbiAgICAgIGFwaVBhdGg6IG9wdHMuYXBpUGF0aCxcbiAgICAgIGNsaWVudElkOiBvcHRzLmNsaWVudElkLFxuICAgICAgcmVxdWVzdCxcbiAgICAgIGNyZWRlbnRpYWxzQ2xpZW50OiBvQXV0aDJDbGllbnQsXG4gICAgICBzdG9yYWdlOiBvcHRzLnN0b3JhZ2UgfHwgZGVmYXVsdFN0b3JhZ2UsXG4gICAgICBhZGFwdGVyOiBvcHRzLmFkYXB0ZXIsXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOagueaNrueJiOacrOagh+ivhu+8jOWkhOeQhuW+heivt+axgueahHVybOWSjHBhcmFtc1xuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEBwYXJhbSBrZXlcbiAgICogQHJldHVybnNcbiAgICovXG4gIHB1YmxpYyBnZXRQYXJhbXNCeVZlcnNpb24ocGFyYW1zOiBhbnksIGtleTogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyYW1zVGVtcCA9IGRlZXBDbG9uZShwYXJhbXMpXG4gICAgY29uc3QgdXJsID0geyB2MjogQXBpVXJsc1YyIH1bcGFyYW1zVGVtcD8udmVyc2lvbl0/LltrZXldIHx8IEFwaVVybHNba2V5XVxuXG4gICAgaWYgKHBhcmFtc1RlbXApIHtcbiAgICAgIGRlbGV0ZSBwYXJhbXNUZW1wLnZlcnNpb25cbiAgICB9XG5cbiAgICByZXR1cm4geyBwYXJhbXM6IHBhcmFtc1RlbXAsIHVybCB9XG4gIH1cblxuICAvKipcbiAgICogU2lnbiBpbi5cbiAgICogQHBhcmFtIHtTaWduSW5SZXF1ZXN0fSBwYXJhbXMgQSBTaWduSW5SZXF1ZXN0IE9iamVjdC5cbiAgICogQHJldHVybiB7UHJvbWlzZTxDcmVkZW50aWFscz59IEEgUHJvbWlzZTxDcmVkZW50aWFscz4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNpZ25JbihwYXJhbXM6IFNpZ25JblJlcXVlc3QpOiBQcm9taXNlPENyZWRlbnRpYWxzPiB7XG4gICAgY29uc3QgdmVyc2lvbiA9IHBhcmFtcy52ZXJzaW9uIHx8ICd2MSdcbiAgICBjb25zdCByZXMgPSB0aGlzLmdldFBhcmFtc0J5VmVyc2lvbihwYXJhbXMsICdBVVRIX1NJR05fSU5fVVJMJylcbiAgICBpZiAocmVzLnBhcmFtcy5xdWVyeSkge1xuICAgICAgZGVsZXRlIHJlcy5wYXJhbXMucXVlcnlcbiAgICB9XG5cbiAgICBjb25zdCBib2R5ID0gYXdhaXQgdGhpcy5nZXRFbmNyeXB0UGFyYW1zKHJlcy5wYXJhbXMpXG4gICAgY29uc3QgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5jb25maWcucmVxdWVzdDxDcmVkZW50aWFscz4ocmVzLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5LFxuICAgIH0pXG4gICAgYXdhaXQgdGhpcy5jb25maWcuY3JlZGVudGlhbHNDbGllbnQuc2V0Q3JlZGVudGlhbHMoe1xuICAgICAgLi4uY3JlZGVudGlhbHMsXG4gICAgICB2ZXJzaW9uLFxuICAgIH0pXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjcmVkZW50aWFscylcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduIGluIEFub255bW91c2x5XG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q3JlZGVudGlhbHM+fSBBIFByb21pc2U8Q3JlZGVudGlhbHM+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzaWduSW5Bbm9ueW1vdXNseShcbiAgICBkYXRhOiB7XG4gICAgICBwcm92aWRlcl90b2tlbj86IHN0cmluZ1xuICAgIH0gPSB7fSxcbiAgICB1c2VXeENsb3VkID0gZmFsc2UsXG4gICk6IFByb21pc2U8Q3JlZGVudGlhbHM+IHtcbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmNvbmZpZy5yZXF1ZXN0PENyZWRlbnRpYWxzPihBcGlVcmxzLkFVVEhfU0lHTl9JTl9BTk9OWU1PVVNMWV9VUkwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZGF0YSxcbiAgICAgIHVzZVd4Q2xvdWQsXG4gICAgfSlcbiAgICBhd2FpdCB0aGlzLmNvbmZpZy5jcmVkZW50aWFsc0NsaWVudC5zZXRDcmVkZW50aWFscyhjcmVkZW50aWFscylcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNyZWRlbnRpYWxzKVxuICB9XG5cbiAgLyoqXG4gICAqIFNpZ24gdXAuXG4gICAqIEBwYXJhbSB7U2lnblVwUmVxdWVzdH0gcGFyYW1zIEEgU2lnblVwUmVxdWVzdCBPYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q3JlZGVudGlhbHM+fSBBIFByb21pc2U8Q3JlZGVudGlhbHM+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzaWduVXAocGFyYW1zOiBTaWduVXBSZXF1ZXN0KTogUHJvbWlzZTxDcmVkZW50aWFscz4ge1xuICAgIGNvbnN0IGRhdGE6IENyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5jb25maWcucmVxdWVzdDxDcmVkZW50aWFscz4oQXBpVXJscy5BVVRIX1NJR05fVVBfVVJMLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICB9KVxuICAgIGF3YWl0IHRoaXMuY29uZmlnLmNyZWRlbnRpYWxzQ2xpZW50LnNldENyZWRlbnRpYWxzKGRhdGEpXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShkYXRhKVxuICB9XG5cbiAgLyoqXG4gICAqIFNpZ24gb3V0LlxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEEgUHJvbWlzZTxTaWdub3V0UmVxdWVzdD4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNpZ25PdXQocGFyYW1zPzogU2lnbm91dFJlcXVlc3QpOiBQcm9taXNlPFNpZ25vdXRSZXBvbnNlPiB7XG4gICAgbGV0IHJlc3A6IFNpZ25vdXRSZXBvbnNlID0ge31cbiAgICBpZiAocGFyYW1zKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXNwID0gYXdhaXQgdGhpcy5jb25maWcucmVxdWVzdDxTaWdub3V0UmVwb25zZT4oQXBpVXJscy5BVVRIX1NJR05PVVRfVVJMLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoZXJyLmVycm9yICE9PSBFcnJvclR5cGUuVU5BVVRIRU5USUNBVEVEKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ3NpZ25fb3V0X2Vycm9yJywgZXJyKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLmNvbmZpZy5jcmVkZW50aWFsc0NsaWVudC5zZXRDcmVkZW50aWFscygpXG4gICAgICByZXR1cm4gcmVzcFxuICAgIH1cbiAgICBjb25zdCBhY2Nlc3NUb2tlbjogc3RyaW5nID0gYXdhaXQgdGhpcy5jb25maWcuY3JlZGVudGlhbHNDbGllbnQuZ2V0QWNjZXNzVG9rZW4oKVxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNvbmZpZy5yZXF1ZXN0KEFwaVVybHMuQVVUSF9SRVZPS0VfVVJMLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgfSxcbiAgICB9KVxuICAgIGF3YWl0IHRoaXMuY29uZmlnLmNyZWRlbnRpYWxzQ2xpZW50LnNldENyZWRlbnRpYWxzKClcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGRhdGEpXG4gIH1cblxuICAvKipcbiAgICogUmV2b2tlIEFsbCBEZXZpY2VzXG4gICAqIEByZXR1cm4ge09iamVjdH0gQSBQcm9taXNlPHZvaWQ+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyByZXZva2VBbGxEZXZpY2VzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuY29uZmlnLnJlcXVlc3Q8dm9pZD4oQXBpVXJscy5BVVRIX1JFVk9LRV9BTExfVVJMLCB7XG4gICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUmV2b2tlIERldmljZVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEEgUHJvbWlzZTx2b2lkPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmV2b2tlRGV2aWNlKHBhcmFtczogUmV2b2tlRGV2aWNlUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuY29uZmlnLnJlcXVlc3Q8dm9pZD4oQXBpVXJscy5BVVRIT1JJWkVEX0RFVklDRVNfREVMRVRFX1VSTCArIHBhcmFtcy5kZXZpY2VfaWQsIHtcbiAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHZlcmlmaWNhdGlvbi5cbiAgICogQHBhcmFtIHtHZXRWZXJpZmljYXRpb25SZXF1ZXN0fSBwYXJhbXMgQSBHZXRWZXJpZmljYXRpb25SZXF1ZXN0IE9iamVjdC5cbiAgICogQHJldHVybiB7UHJvbWlzZTxHZXRWZXJpZmljYXRpb25SZXNwb25zZT59IEEgUHJvbWlzZTxHZXRWZXJpZmljYXRpb25SZXNwb25zZT4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFZlcmlmaWNhdGlvbihcbiAgICBwYXJhbXM6IEdldFZlcmlmaWNhdGlvblJlcXVlc3QsXG4gICAgb3B0aW9ucz86IHsgd2l0aENhcHRjaGE6IGJvb2xlYW4gfSxcbiAgKTogUHJvbWlzZTxHZXRWZXJpZmljYXRpb25SZXNwb25zZT4ge1xuICAgIGxldCB3aXRoQ3JlZGVudGlhbHMgPSBmYWxzZVxuICAgIC8vIOWPkemAgeefreS/oeaXtu+8jOWmguaenOaXtue7meW9k+WJjeeUqOaIt+WPke+8jOWImemcgOimgeW4puS4iumJtOadg+S/oeaBr1xuICAgIGlmIChwYXJhbXMudGFyZ2V0ID09PSAnQ1VSX1VTRVInKSB7XG4gICAgICB3aXRoQ3JlZGVudGlhbHMgPSB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGhhc0xvZ2luID0gYXdhaXQgdGhpcy5oYXNMb2dpblN0YXRlKClcbiAgICAgIGlmIChoYXNMb2dpbikge1xuICAgICAgICB3aXRoQ3JlZGVudGlhbHMgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PEdldFZlcmlmaWNhdGlvblJlc3BvbnNlPihBcGlVcmxzLlZFUklGSUNBVElPTl9VUkwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgICAgd2l0aENhcHRjaGE6IG9wdGlvbnM/LndpdGhDYXB0Y2hhIHx8IGZhbHNlLFxuICAgICAgd2l0aENyZWRlbnRpYWxzLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogIFZlcmlmeSB0aGUgY29kZVxuICAgKiBAcGFyYW0ge1ZlcmlmeVJlcXVlc3R9IHBhcmFtcyBBIFZlcmlmeVJlcXVlc3QgT2JqZWN0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFZlcmlmeVJlc3BvbnNlPn0gQSBQcm9taXNlPFZlcmlmeVJlc3BvbnNlPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdmVyaWZ5KHBhcmFtczogVmVyaWZ5UmVxdWVzdCk6IFByb21pc2U8VmVyaWZ5UmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXMgPSB0aGlzLmdldFBhcmFtc0J5VmVyc2lvbihwYXJhbXMsICdWRVJJRllfVVJMJylcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jb25maWcucmVxdWVzdDxWZXJpZnlSZXNwb25zZT4ocmVzLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiByZXMucGFyYW1zLFxuICAgIH0pXG5cbiAgICBpZiAocGFyYW1zPy52ZXJzaW9uID09PSAndjInKSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbmZpZy5jcmVkZW50aWFsc0NsaWVudC5zZXRDcmVkZW50aWFscyh7XG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIHZlcnNpb246ICd2MicsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBkYXRhXG4gIH1cblxuICAvKipcbiAgICogR2VuIHByb3ZpZGVyIHJlZGlyZWN0IHVyaS5cbiAgICogQHBhcmFtIHtHZW5Qcm92aWRlclJlZGlyZWN0VXJpUmVxdWVzdH0gcGFyYW1zIEEgR2VuUHJvdmlkZXJSZWRpcmVjdFVyaVJlcXVlc3Qgb2JqZWN0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPEdlblByb3ZpZGVyUmVkaXJlY3RVcmlSZXNwb25zZT59IEEgUHJvbWlzZTxHZW5Qcm92aWRlclJlZGlyZWN0VXJpUmVzcG9uc2U+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZW5Qcm92aWRlclJlZGlyZWN0VXJpKHBhcmFtczogR2VuUHJvdmlkZXJSZWRpcmVjdFVyaVJlcXVlc3QpOiBQcm9taXNlPEdlblByb3ZpZGVyUmVkaXJlY3RVcmlSZXNwb25zZT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICBjb25zdCB7IHByb3ZpZGVyX3JlZGlyZWN0X3VyaTogcmVkaXJlY3RfdXJpLCBvdGhlcl9wYXJhbXM6IG90aGVyUGFyYW1zID0ge30sIC4uLnJlc3RQYXJhbXMgfSA9IHBhcmFtc1xuICAgIGlmIChyZWRpcmVjdF91cmkgJiYgIXJlc3RQYXJhbXMucmVkaXJlY3RfdXJpKSB7XG4gICAgICByZXN0UGFyYW1zLnJlZGlyZWN0X3VyaSA9IHJlZGlyZWN0X3VyaVxuICAgIH1cblxuICAgIGxldCB1cmwgPSBgJHtBcGlVcmxzLlBST1ZJREVSX1VSSV9VUkx9PyR7QXV0aC5wYXJzZVBhcmFtc1RvU2VhcmNoKHJlc3RQYXJhbXMpfWBcbiAgICBPYmplY3Qua2V5cyhvdGhlclBhcmFtcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IG90aGVyUGFyYW1zW2tleV1cbiAgICAgIGlmIChrZXkgPT09ICdzaWduX291dF91cmknICYmICEodmFsdWU/Lmxlbmd0aCA+IDApKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdXJsICs9IGAmb3RoZXJfcGFyYW1zWyR7a2V5fV09JHtlbmNvZGVVUklDb21wb25lbnQodmFsdWUpfWBcbiAgICB9KVxuXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8R2VuUHJvdmlkZXJSZWRpcmVjdFVyaVJlc3BvbnNlPih1cmwsIHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBwcm92aWRlciB0b2tlbi5cbiAgICogQHBhcmFtIHtHcmFudFByb3ZpZGVyVG9rZW5SZXF1ZXN0fSBwYXJhbXMgQSBHcmFudFByb3ZpZGVyVG9rZW5SZXF1ZXN0IG9iamVjdC5cbiAgICogQHJldHVybiB7UHJvbWlzZTxHcmFudFByb3ZpZGVyVG9rZW5SZXNwb25zZT59IEEgUHJvbWlzZTxHcmFudFByb3ZpZGVyVG9rZW5SZXNwb25zZT4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdyYW50UHJvdmlkZXJUb2tlbihcbiAgICBwYXJhbXM6IEdyYW50UHJvdmlkZXJUb2tlblJlcXVlc3QsXG4gICAgdXNlV3hDbG91ZCA9IGZhbHNlLFxuICApOiBQcm9taXNlPEdyYW50UHJvdmlkZXJUb2tlblJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8R3JhbnRQcm92aWRlclRva2VuUmVzcG9uc2U+KEFwaVVybHMuUFJPVklERVJfVE9LRU5fVVJMLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICAgIHVzZVd4Q2xvdWQsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBwcm92aWRlciB0b2tlbi5cbiAgICogQHBhcmFtIHtQYXRjaFByb3ZpZGVyVG9rZW5SZXF1ZXN0fSBwYXJhbXMgQSBQYXRjaFByb3ZpZGVyVG9rZW5SZXF1ZXN0IG9iamVjdC5cbiAgICogQHJldHVybiB7UHJvbWlzZTxQYXRjaFByb3ZpZGVyVG9rZW5SZXNwb25zZT59IEEgUHJvbWlzZTxQYXRjaFByb3ZpZGVyVG9rZW5SZXNwb25zZT4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHBhdGNoUHJvdmlkZXJUb2tlbihwYXJhbXM6IFBhdGNoUHJvdmlkZXJUb2tlblJlcXVlc3QpOiBQcm9taXNlPFBhdGNoUHJvdmlkZXJUb2tlblJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8UGF0Y2hQcm92aWRlclRva2VuUmVzcG9uc2U+KEFwaVVybHMuUFJPVklERVJfVE9LRU5fVVJMLCB7XG4gICAgICBtZXRob2Q6ICdQQVRDSCcsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduaW4gd2l0aCBwcm92aWRlciByZXF1ZXN0LlxuICAgKiBAcGFyYW0ge1NpZ25JbldpdGhQcm92aWRlclJlcXVlc3R9IHBhcmFtcyBBIFNpZ25JbldpdGhQcm92aWRlclJlcXVlc3Qgb2JqZWN0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPENyZWRlbnRpYWxzPn0gQSBQcm9taXNlPENyZWRlbnRpYWxzPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2lnbkluV2l0aFByb3ZpZGVyKHBhcmFtczogU2lnbkluV2l0aFByb3ZpZGVyUmVxdWVzdCwgdXNlV3hDbG91ZCA9IGZhbHNlKTogUHJvbWlzZTxDcmVkZW50aWFscz4ge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZ2V0UGFyYW1zQnlWZXJzaW9uKHBhcmFtcywgJ0FVVEhfU0lHTl9JTl9XSVRIX1BST1ZJREVSX1VSTCcpXG5cbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmNvbmZpZy5yZXF1ZXN0PENyZWRlbnRpYWxzPihyZXMudXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHJlcy5wYXJhbXMsXG4gICAgICB1c2VXeENsb3VkLFxuICAgIH0pXG5cbiAgICBhd2FpdCB0aGlzLmNvbmZpZy5jcmVkZW50aWFsc0NsaWVudC5zZXRDcmVkZW50aWFscyh7XG4gICAgICAuLi5jcmVkZW50aWFscyxcbiAgICAgIHZlcnNpb246IHBhcmFtcz8udmVyc2lvbiB8fCAndjEnLFxuICAgIH0pXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjcmVkZW50aWFscylcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduaW4gd2l0aCBjdXN0b20uXG4gICAqIEBwYXJhbSB7U2lnbkluQ3VzdG9tUmVxdWVzdH0gcGFyYW1zIEEgU2lnbkluQ3VzdG9tUmVxdWVzdCBvYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q3JlZGVudGlhbHM+fSBBIFByb21pc2U8Q3JlZGVudGlhbHM+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzaWduSW5DdXN0b20ocGFyYW1zOiBTaWduSW5DdXN0b21SZXF1ZXN0KTogUHJvbWlzZTxDcmVkZW50aWFscz4ge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMuY29uZmlnLnJlcXVlc3Q8Q3JlZGVudGlhbHM+KEFwaVVybHMuQVVUSF9TSUdOX0lOX0NVU1RPTSwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgfSlcblxuICAgIGF3YWl0IHRoaXMuY29uZmlnLmNyZWRlbnRpYWxzQ2xpZW50LnNldENyZWRlbnRpYWxzKGNyZWRlbnRpYWxzKVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY3JlZGVudGlhbHMpXG4gIH1cblxuICAvKipcbiAgICogc2lnbiBpbiB3aXRoIHdlY2hhdCBpZGVuZGlmeVxuICAgKiDpnIDopoHnu5PlkIggaHR0cCBvdmVyY2FsbEZ1bmN0aW9uIOS9v+eUqFxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNpZ25JbldpdGhXZWNoYXQocGFyYW1zOiBhbnkgPSB7fSk6IFByb21pc2U8Q3JlZGVudGlhbHM+IHtcbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmNvbmZpZy5yZXF1ZXN0PENyZWRlbnRpYWxzPihBcGlVcmxzLkFVVEhfU0lHTl9JTl9XSVRIX1dFQ0hBVF9VUkwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgIH0pXG4gICAgYXdhaXQgdGhpcy5jb25maWcuY3JlZGVudGlhbHNDbGllbnQuc2V0Q3JlZGVudGlhbHMoY3JlZGVudGlhbHMpXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjcmVkZW50aWFscylcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kIHdpdGggcHJvdmlkZXJcbiAgICogQHBhcmFtIHtCaW5kV2l0aFByb3ZpZGVyUmVxdWVzdH0gcGFyYW1zIEEgQmluZFdpdGhQcm92aWRlclJlcXVlc3Qgb2JqZWN0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIFByb21pc2U8YW55PiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgYmluZFdpdGhQcm92aWRlcihwYXJhbXM6IEJpbmRXaXRoUHJvdmlkZXJSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8YW55PihBcGlVcmxzLlBST1ZJREVSX0JJTkRfVVJMLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdXNlciBwcm9maWxlLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFVzZXJQcm9maWxlPn0gQSBQcm9taXNlPFVzZXJQcm9maWxlPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0VXNlclByb2ZpbGUocGFyYW1zOiB7IHZlcnNpb24/OiBzdHJpbmcgfSk6IFByb21pc2U8VXNlclByb2ZpbGU+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VySW5mbyhwYXJhbXMpXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB1c2VyIGluZm8uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8VXNlckluZm8+fSBBIFByb21pc2U8VXNlclByb2ZpbGU+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRVc2VySW5mbyhwYXJhbXM6IHsgdmVyc2lvbj86IHN0cmluZzsgcXVlcnk/OiBzdHJpbmcgfSA9IHt9KTogUHJvbWlzZTxVc2VySW5mbz4ge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZ2V0UGFyYW1zQnlWZXJzaW9uKHBhcmFtcywgJ1VTRVJfTUVfVVJMJylcblxuICAgIGlmIChyZXMucGFyYW1zPy5xdWVyeSkge1xuICAgICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gbmV3IE15VVJMU2VhcmNoUGFyYW1zKHJlcy5wYXJhbXMucXVlcnkgYXMgYW55KVxuICAgICAgcmVzLnVybCArPSBgPyR7c2VhcmNoUGFyYW1zLnRvU3RyaW5nKCl9YFxuICAgIH1cblxuICAgIGNvbnN0IHVzZXJJbmZvID0gYXdhaXQgdGhpcy5jb25maWcucmVxdWVzdDxVc2VySW5mbz4ocmVzLnVybCwge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9KVxuXG4gICAgaWYgKHVzZXJJbmZvLnN1Yikge1xuICAgICAgdXNlckluZm8udWlkID0gdXNlckluZm8uc3ViXG4gICAgfVxuXG4gICAgcmV0dXJuIHVzZXJJbmZvXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB1c2VyIGluZm8gYnkgd2VkYSBwbHVnaW4uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8YW55Pn0gQSBQcm9taXNlPGFueT4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFdlZGFVc2VySW5mbygpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHVzZXJJbmZvID0gYXdhaXQgdGhpcy5jb25maWcucmVxdWVzdDxhbnk+KEFwaVVybHMuV0VEQV9VU0VSX1VSTCwge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9KVxuICAgIHJldHVybiB1c2VySW5mb1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBtZVxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGVsZXRlTWUocGFyYW1zOiBXaXRoU3Vkb1JlcXVlc3QpOiBQcm9taXNlPFVzZXJQcm9maWxlPiB7XG4gICAgY29uc3QgcmVzID0gdGhpcy5nZXRQYXJhbXNCeVZlcnNpb24ocGFyYW1zLCAnVVNFUl9NRV9VUkwnKVxuICAgIGNvbnN0IHVybCA9IGAke3Jlcy51cmx9PyR7QXV0aC5wYXJzZVBhcmFtc1RvU2VhcmNoKHJlcy5wYXJhbXMpfWBcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxVc2VyUHJvZmlsZT4odXJsLCB7XG4gICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogaGFzTG9naW5TdGF0ZSBjaGVjayBpZiBoYXMgbG9naW4gc3RhdGVcbiAgICogQHJldHVybiB7UHJvbWlzZTxib29sZWFuPn0gQSBQcm9taXNlPGJvb2xlYW4+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNMb2dpblN0YXRlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbmZpZy5jcmVkZW50aWFsc0NsaWVudC5nZXRBY2Nlc3NUb2tlbigpXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFzTG9naW5TdGF0ZVN5bmMoKTogQ3JlZGVudGlhbHMgfCBudWxsIHtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IHRoaXMuY29uZmlnLmNyZWRlbnRpYWxzQ2xpZW50LmdldENyZWRlbnRpYWxzU3luYygpXG4gICAgcmV0dXJuIGNyZWRlbnRpYWxzXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TG9naW5TdGF0ZSgpOiBQcm9taXNlPENyZWRlbnRpYWxzIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jcmVkZW50aWFsc0NsaWVudC5nZXRDcmVkZW50aWFsc0FzeW5jKClcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFucyBieSBwcm92aWRlci5cbiAgICogQHBhcmFtIHtUcmFuc0J5UHJvdmlkZXJSZXF1ZXN0fSBwYXJhbXMgQSBUcmFuc0J5UHJvdmlkZXJSZXF1ZXN0IG9iamVjdC5cbiAgICogQHJldHVybiB7UHJvbWlzZTxDcmVkZW50aWFscz59IEEgUHJvbWlzZTxDcmVkZW50aWFscz4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHRyYW5zQnlQcm92aWRlcihwYXJhbXM6IFRyYW5zQnlQcm92aWRlclJlcXVlc3QpOiBQcm9taXNlPENyZWRlbnRpYWxzPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8Q3JlZGVudGlhbHM+KEFwaVVybHMuVVNFUl9UUkFOU19CWV9QUk9WSURFUl9VUkwsIHtcbiAgICAgIG1ldGhvZDogJ1BBVENIJyxcbiAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHRva2VuLlxuICAgKiBAcGFyYW0ge0dyYW50VG9rZW5SZXF1ZXN0fSBwYXJhbXMgQSBHcmFudFRva2VuUmVxdWVzdCBvYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q3JlZGVudGlhbHM+fSBBIFByb21pc2U8Q3JlZGVudGlhbHM+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBncmFudFRva2VuKHBhcmFtczogR3JhbnRUb2tlblJlcXVlc3QpOiBQcm9taXNlPENyZWRlbnRpYWxzPiB7XG4gICAgY29uc3QgcmVzID0gdGhpcy5nZXRQYXJhbXNCeVZlcnNpb24ocGFyYW1zLCAnQVVUSF9UT0tFTl9VUkwnKVxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PENyZWRlbnRpYWxzPihyZXMudXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHJlcy5wYXJhbXMsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHByb3ZpZGUgbGlzdC5cbiAgICogQHJldHVybiB7UHJvbWlzZTxQcm92aWRlcnNSZXNwb25zZT59IEEgUHJvbWlzZTxQcm92aWRlcnNSZXNwb25zZT4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFByb3ZpZGVycygpOiBQcm9taXNlPFByb3ZpZGVyc1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8UHJvdmlkZXJzUmVzcG9uc2U+KEFwaVVybHMuUFJPVklERVJfTElTVCwge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIHVuYmluZCBwcm92aWRlci5cbiAgICogQHBhcmFtIHtVbmJpbmRQcm92aWRlclJlcXVlc3R9IHBhcmFtc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdW5iaW5kUHJvdmlkZXIocGFyYW1zOiBVbmJpbmRQcm92aWRlclJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxhbnk+KGAke0FwaVVybHMuUFJPVklERVJfVU5CSU5EX1VSTH0vJHtwYXJhbXMucHJvdmlkZXJfaWR9YCwge1xuICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIGNoZWNrIFBhc3N3b3JkLlxuICAgKiBAcGFyYW0ge0NoZWNrUGFzc3dvcmRSZXF1ZXN0fSBwYXJhbXNcbiAgICogQHJldHVybiB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNoZWNrUGFzc3dvcmQocGFyYW1zOiBDaGVja1Bhc3N3b3JkUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PGFueT4oYCR7QXBpVXJscy5DSEVDS19QV0RfVVJMfWAsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogRWRpdCBDb250YWN0IOS/ruaUuSDmiYvmnLrlj7cg5oiWIOmCrueusVxuICAgKiBAcGFyYW0ge0VkaXRDb250YWN0UmVxdWVzdH0gcGFyYW1zXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZWRpdENvbnRhY3QocGFyYW1zOiBFZGl0Q29udGFjdFJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDx2b2lkPihgJHtBcGlVcmxzLkJJTkRfQ09OVEFDVF9VUkx9YCwge1xuICAgICAgbWV0aG9kOiAnUEFUQ0gnLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogU2V0IFBhc3N3b3JkLlxuICAgKiBAcGFyYW0ge1NldFBhc3N3b3JkclJlcXVlc3R9IHBhcmFtc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2V0UGFzc3dvcmQocGFyYW1zOiBTZXRQYXNzd29yZFJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxhbnk+KGAke0FwaVVybHMuQVVUSF9TRVRfUEFTU1dPUkR9YCwge1xuICAgICAgbWV0aG9kOiAnUEFUQ0gnLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogdXBkYXRlUGFzc3dvcmRCeU9sZCDkvb/nlKjml6flr4bnoIHkv67mlLnlr4bnoIHvvIzlpoLmnpzlt7Lnu4/nu5HlrprmiYvmnLrlj7fvvIzor7flhYjvvJpzdWRv77yM5YaN5L+u5pS55a+G56CBXG4gICAqIEBwYXJhbSB7U2V0UGFzc3dvcmRyUmVxdWVzdH0gcGFyYW1zXG4gICAqIEByZXR1cm4ge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVQYXNzd29yZEJ5T2xkKHBhcmFtczogVXBkYXRlUGFzc3dvcmRSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc3Vkb1Rva2VuID0gYXdhaXQgdGhpcy5zdWRvKHsgcGFzc3dvcmQ6IHBhcmFtcy5vbGRfcGFzc3dvcmQgfSlcbiAgICByZXR1cm4gdGhpcy5zZXRQYXNzd29yZCh7XG4gICAgICBzdWRvX3Rva2VuOiBzdWRvVG9rZW4uc3Vkb190b2tlbixcbiAgICAgIG5ld19wYXNzd29yZDogcGFyYW1zLm5ld19wYXNzd29yZCxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIHN1ZG9cbiAgICogQHBhcmFtIHtzdWRvfSBwYXJhbXNcbiAgICogQHJldHVybiB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgcHVibGljIGFzeW5jIHN1ZG8ocGFyYW1zOiBTdWRvUmVxdWVzdCk6IFByb21pc2U8U3Vkb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8U3Vkb1Jlc3BvbnNlPihgJHtBcGlVcmxzLlNVRE9fVVJMfWAsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IHVzZXIgdmVyaWZpY2F0aW9uLlxuICAgKiBAcGFyYW0ge0dldFZlcmlmaWNhdGlvblJlcXVlc3R9IHBhcmFtcyBBIEdldFZlcmlmaWNhdGlvblJlcXVlc3QgT2JqZWN0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPEdldFZlcmlmaWNhdGlvblJlc3BvbnNlPn0gQSBQcm9taXNlPEdldFZlcmlmaWNhdGlvblJlc3BvbnNlPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2VuZFZlcmlmaWNhdGlvbkNvZGVUb0N1cnJlbnRVc2VyKHBhcmFtczogR2V0VmVyaWZpY2F0aW9uUmVxdWVzdCk6IFByb21pc2U8R2V0VmVyaWZpY2F0aW9uUmVzcG9uc2U+IHtcbiAgICBwYXJhbXMudGFyZ2V0ID0gJ0NVUl9VU0VSJ1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PEdldFZlcmlmaWNhdGlvblJlc3BvbnNlPihBcGlVcmxzLlZFUklGSUNBVElPTl9VUkwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgd2l0aENhcHRjaGE6IHRydWUsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBjaGFuZ2UgQm91bmQgcHJvdmlkZXIuXG4gICAqIEBwYXJhbSB7Q2hhbmdlQm91bmRQcm92aWRlclJlcXVlc3R9IHBhcmFtcyBBIEdldFZlcmlmaWNhdGlvblJlcXVlc3QgT2JqZWN0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPENoYW5nZUJvdW5kUHJvdmlkZXJSZXNwb25zZT59IEEgUHJvbWlzZTxHZXRWZXJpZmljYXRpb25SZXNwb25zZT4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNoYW5nZUJvdW5kUHJvdmlkZXIocGFyYW1zOiBDaGFuZ2VCb3VuZFByb3ZpZGVyUmVxdWVzdCk6IFByb21pc2U8Q2hhbmdlQm91bmRQcm92aWRlclJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8Q2hhbmdlQm91bmRQcm92aWRlclJlc3BvbnNlPihgJHtBcGlVcmxzLlBST1ZJREVSX0xJU1R9LyR7cGFyYW1zLnByb3ZpZGVyX2lkfS90cmFuc2AsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keToge1xuICAgICAgICBwcm92aWRlcl90cmFuc190b2tlbjogcGFyYW1zLnRyYW5zX3Rva2VuLFxuICAgICAgfSxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFBhdGNoIHRoZSB1c2VyIHByb2ZpbGUuXG4gICAqIEBwYXJhbSB7VXNlclByb2ZpbGV9IHBhcmFtcyBBIFVzZXJQcm9maWxlIE9iamVjdC5cbiAgICogQHJldHVybiB7UHJvbWlzZTxVc2VyUHJvZmlsZT59IEEgUHJvbWlzZTxVc2VyUHJvZmlsZT4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNldFVzZXJQcm9maWxlKHBhcmFtczogVXNlclByb2ZpbGUpOiBQcm9taXNlPFVzZXJQcm9maWxlPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8VXNlclByb2ZpbGU+KEFwaVVybHMuVVNFUl9QUklGSUxFX1VSTCwge1xuICAgICAgbWV0aG9kOiAnUEFUQ0gnLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHVzZXIgYmFzaWMgaW5mb1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgcHVibGljIGFzeW5jIHVwZGF0ZVVzZXJCYXNpY0luZm8ocGFyYW1zOiBNb2RpZnlVc2VyQmFzaWNJbmZvUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0KEFwaVVybHMuVVNFUl9CQVNJQ19FRElUX1VSTCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXRjaCB0aGUgdXNlciBwcm9maWxlLlxuICAgKiBAcGFyYW0ge1F1ZXJ5VXNlclByb2ZpbGVSZXF9IGFwcGVuZGVkX3BhcmFtcyBBIFF1ZXJ5VXNlclByb2ZpbGVSZXEgT2JqZWN0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFVzZXJQcm9maWxlPn0gQSBQcm9taXNlPFVzZXJQcm9maWxlPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcXVlcnlVc2VyUHJvZmlsZShwYXJhbXM6IFF1ZXJ5VXNlclByb2ZpbGVSZXF1ZXN0KTogUHJvbWlzZTxRdWVyeVVzZXJQcm9maWxlUmVzcG9uc2U+IHtcbiAgICAvLyBsZXQgdXJsID0gbmV3IFVSTChBcGlVcmxzLlVTRVJfUVVFUllfVVJMKTtcbiAgICBjb25zdCBzZWFyY2hQYXJhbXMgPSBuZXcgTXlVUkxTZWFyY2hQYXJhbXMocGFyYW1zIGFzIGFueSlcbiAgICAvLyB1cmwuc2VhcmNoID0gc2VhcmNoUGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8UXVlcnlVc2VyUHJvZmlsZVJlc3BvbnNlPihgJHtBcGlVcmxzLlVTRVJfUVVFUllfVVJMfT8ke3NlYXJjaFBhcmFtcy50b1N0cmluZygpfWAsIHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBzZXRDdXN0b21TaWduRnVuYyBzZXQgdGhlIGdldCB0aWNrZXQgZnVuY3Rpb25cbiAgICogQHBhcmFtIGdldFRpY2tGblxuICAgKi9cbiAgcHVibGljIHNldEN1c3RvbVNpZ25GdW5jKGdldFRpY2tGbjogR2V0Q3VzdG9tU2lnblRpY2tldEZuKSB7XG4gICAgdGhpcy5nZXRDdXN0b21TaWduVGlja2V0Rm4gPSBnZXRUaWNrRm5cbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduSW5XaXRoQ3VzdG9tVGlja2V0IGN1c3RvbSBzaWduSW5cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqL1xuICAvLyBwdWJsaWMgYXN5bmMgc2lnbkluV2l0aEN1c3RvbVRpY2tldChwYXJhbXM/OiB7IHZlcnNpb24/OiBzdHJpbmcgfSk6IFByb21pc2U8Q3JlZGVudGlhbHM+IHtcbiAgLy8gICBjb25zdCBjdXN0b21TaWduVGlja2V0Rm4gPSB0aGlzLmdldEN1c3RvbVNpZ25UaWNrZXRGblxuICAvLyAgIGlmICghY3VzdG9tU2lnblRpY2tldEZuKSB7XG4gIC8vICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoe1xuICAvLyAgICAgfSlcbiAgLy8gICB9XG4gIC8vICAgY29uc3QgY3VzdG9tVGlja2V0ID0gYXdhaXQgY3VzdG9tU2lnblRpY2tldEZuKClcbiAgLy8gICByZXR1cm4gdGhpcy5zaWduSW5XaXRoUHJvdmlkZXIoe1xuICAvLyAgICAgLi4ucGFyYW1zLFxuICAvLyAgICAgcHJvdmlkZXJfaWQ6ICdjdXN0b20nLFxuICAvLyAgICAgcHJvdmlkZXJfdG9rZW46IGN1c3RvbVRpY2tldCxcbiAgLy8gICB9KVxuICAvLyB9XG4gIHB1YmxpYyBhc3luYyBzaWduSW5XaXRoQ3VzdG9tVGlja2V0KCk6IFByb21pc2U8Q3JlZGVudGlhbHM+IHtcbiAgICBjb25zdCBjdXN0b21TaWduVGlja2V0Rm4gPSB0aGlzLmdldEN1c3RvbVNpZ25UaWNrZXRGblxuICAgIGlmICghY3VzdG9tU2lnblRpY2tldEZuKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoe1xuICAgICAgICBlcnJvcjogJ2ZhaWxlZF9wcmVjb25kaXRpb24nLFxuICAgICAgICBlcnJvcl9kZXNjcmlwdGlvbjogJ3BsZWFzZSB1c2Ugc2V0Q3VzdG9tU2lnbkZ1bmMgdG8gc2V0IGN1c3RvbSBzaWduIGZ1bmN0aW9uJyxcbiAgICAgIH0pXG4gICAgfVxuICAgIGNvbnN0IGN1c3RvbVRpY2tldCA9IGF3YWl0IGN1c3RvbVNpZ25UaWNrZXRGbigpXG4gICAgcmV0dXJuIHRoaXMuc2lnbkluQ3VzdG9tKHtcbiAgICAgIHByb3ZpZGVyX2lkOiAnY3VzdG9tJyxcbiAgICAgIHRpY2tldDogY3VzdG9tVGlja2V0LFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgcGFzc3dvcmRcbiAgICogQHBhcmFtIHtSZXNldFBhc3N3b3JkUmVxdWVzdH0gcGFyYW1zXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKiBAbWVtYmVyb2YgQXV0aFxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJlc2V0UGFzc3dvcmQocGFyYW1zOiBSZXNldFBhc3N3b3JkUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0KEFwaVVybHMuQVVUSF9SRVNFVF9QQVNTV09SRCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgICAvLyB3aXRoQ3JlZGVudGlhbHM6IHRydWVcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEF1dGhvcml6ZSBvYXV0aCBBdXRob3JpemVcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIHB1YmxpYyBhc3luYyBhdXRob3JpemUocGFyYW1zOiBBdXRob3JpemVSZXF1ZXN0KTogUHJvbWlzZTxBdXRob3JpemVSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PEF1dGhvcml6ZVJlc3BvbnNlPihBcGlVcmxzLkFVVEhPUklaRV9VUkwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogYXV0aG9yaXplIGRldmljZVxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgYXV0aG9yaXplRGV2aWNlKHBhcmFtczogQXV0aG9yaXplRGV2aWNlUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PHZvaWQ+KEFwaVVybHMuQVVUSE9SSVpFX0RFVklDRV9VUkwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogZGV2aWNlIGF1dGhvcml6YXRpb25cbiAgICogQHBhcmFtIHtEZXZpY2VBdXRob3JpemVSZXF1ZXN0fSBwYXJhbXNcbiAgICogQHJldHVybnMge1Byb21pc2U8RGV2aWNlQXV0aG9yaXplUmVzcG9uc2U+fVxuICAgKiBAbWVtYmVyb2YgQXV0aFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRldmljZUF1dGhvcml6ZShwYXJhbXM6IERldmljZUF1dGhvcml6ZVJlcXVlc3QpOiBQcm9taXNlPERldmljZUF1dGhvcml6ZVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3QoQXBpVXJscy5BVVRIX0dFVF9ERVZJQ0VfQ09ERSwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBPQXV0aCBnZXQgYXV0aG9yaXplIGluZm9cbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIHB1YmxpYyBhc3luYyBhdXRob3JpemVJbmZvKHBhcmFtczogQXV0aG9yaXplSW5mb1JlcXVlc3QpOiBQcm9taXNlPEF1dGhvcml6ZUluZm9SZXNwb25zZT4ge1xuICAgIGNvbnN0IHVybCA9IGAke0FwaVVybHMuQVVUSE9SSVpFX0lORk9fVVJMfT8ke0F1dGgucGFyc2VQYXJhbXNUb1NlYXJjaChwYXJhbXMpfWBcbiAgICBsZXQgd2l0aEJhc2ljQXV0aCA9IHRydWVcbiAgICBsZXQgd2l0aENyZWRlbnRpYWxzID0gZmFsc2VcbiAgICBjb25zdCBoYXNMb2dpbiA9IGF3YWl0IHRoaXMuaGFzTG9naW5TdGF0ZSgpXG4gICAgaWYgKGhhc0xvZ2luKSB7XG4gICAgICB3aXRoQ3JlZGVudGlhbHMgPSB0cnVlXG4gICAgICB3aXRoQmFzaWNBdXRoID0gZmFsc2VcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8QXV0aG9yaXplSW5mb1Jlc3BvbnNlPih1cmwsIHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB3aXRoQmFzaWNBdXRoLFxuICAgICAgd2l0aENyZWRlbnRpYWxzLFxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hlY2tVc2VybmFtZShwYXJhbXM6IENoZWNrVXNlcm5hbWVSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3QoQXBpVXJscy5DSEVDS19VU0VSTkFNRSwge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9KVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoZWNrSWZVc2VyRXhpc3QocGFyYW1zOiBDaGVja0lmVXNlckV4aXN0UmVxdWVzdCk6IFByb21pc2U8Q2hlY2tJZlVzZXJFeGlzdFJlc3BvbnNlPiB7XG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gbmV3IE15VVJMU2VhcmNoUGFyYW1zKHBhcmFtcyBhcyBhbnkpXG5cbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxDaGVja0lmVXNlckV4aXN0UmVzcG9uc2U+KGAke0FwaVVybHMuQ0hFQ0tfSUZfVVNFUl9FWElTVH0/JHtzZWFyY2hQYXJhbXMudG9TdHJpbmcoKX1gLCB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9naW5TY29wZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jcmVkZW50aWFsc0NsaWVudC5nZXRTY29wZSgpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9naW5Hcm91cHMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jcmVkZW50aWFsc0NsaWVudC5nZXRHcm91cHMoKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlZnJlc2hUb2tlbkZvcmNlKHBhcmFtczogeyB2ZXJzaW9uPzogc3RyaW5nIH0pIHtcbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmNvbmZpZy5jcmVkZW50aWFsc0NsaWVudC5nZXRDcmVkZW50aWFscygpXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY29uZmlnLmNyZWRlbnRpYWxzQ2xpZW50LnJlZnJlc2hUb2tlbih7XG4gICAgICAuLi5jcmVkZW50aWFscyxcbiAgICAgIHZlcnNpb246IHBhcmFtcz8udmVyc2lvbiB8fCAndjEnLFxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q3JlZGVudGlhbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmNyZWRlbnRpYWxzQ2xpZW50LmdldENyZWRlbnRpYWxzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgcHVibGljIGtleSBmb3IgcmVxdWVzdCBwYXJhbXMgZW5jcnlwdGlvblxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFB1YmxpY0tleSgpOiBQcm9taXNlPFB1YmxpY0tleT4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PFB1YmxpY0tleT4oQXBpVXJsc1YyLkFVVEhfUFVCTElDX0tFWSwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiB7fSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIGVuY3J5cHQgcmVxdWVzdCBwYXJhbXNcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEVuY3J5cHRQYXJhbXMocGFyYW1zOiBSZWNvcmQ8YW55LCBhbnk+KTogUHJvbWlzZTxFbmNyeXB0UGFyYW1zPiB7XG4gICAgY29uc3QgeyBpc0VuY3J5cHQgfSA9IHBhcmFtc1xuICAgIGRlbGV0ZSBwYXJhbXMuaXNFbmNyeXB0XG5cbiAgICBjb25zdCBwYXlsb2FkID0gZGVlcENsb25lKHBhcmFtcylcblxuICAgIGNvbnN0IGVuY3J5cHRVdGlscyA9IGdldEVuY3J5cHRVdGlscyhpc0VuY3J5cHQsIHRoaXMuY29uZmlnLmFkYXB0ZXIpXG5cbiAgICBpZiAoIWVuY3J5cHRVdGlscykge1xuICAgICAgcmV0dXJuIHBhcmFtc1xuICAgIH1cblxuICAgIGxldCBwdWJsaWNLZXkgPSAnJ1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICBsZXQgcHVibGljX2tleV90aHVtYnByaW50ID0gJydcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdldFB1YmxpY0tleSgpXG4gICAgICBwdWJsaWNLZXkgPSByZXMucHVibGljX2tleVxuICAgICAgcHVibGljX2tleV90aHVtYnByaW50ID0gcmVzLnB1YmxpY19rZXlfdGh1bWJwcmludFxuXG4gICAgICBpZiAoIXB1YmxpY0tleSB8fCAhcHVibGljX2tleV90aHVtYnByaW50KSB7XG4gICAgICAgIHRocm93IHJlc1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBlcnJvclxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcGFyYW1zOiBlbmNyeXB0VXRpbHMuZ2V0RW5jcnlwdEluZm8oeyBwdWJsaWNLZXksIHBheWxvYWQgfSksXG4gICAgICBwdWJsaWNfa2V5X3RodW1icHJpbnQsXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGdldCBwcm92aWRlciBzdWIgdHlwZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFByb3ZpZGVyU3ViVHlwZSgpOiBQcm9taXNlPFByb3ZpZGVyU3ViVHlwZT4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PFByb3ZpZGVyU3ViVHlwZT4oQXBpVXJscy5HRVRfUFJPVklERVJfVFlQRSwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHByb3ZpZGVyX2lkOiAnd2VkYScsXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogZ2V0IHByb3ZpZGVyIHN1YiB0eXBlXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdmVyaWZ5Q2FwdGNoYURhdGEoeyB0b2tlbiwga2V5IH06IHsgdG9rZW46IHN0cmluZzsga2V5OiBzdHJpbmcgfSkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PHsgY2FwdGNoYV90b2tlbjogc3RyaW5nOyBleHBpcmVzX2luOiBudW1iZXIgfT4oQXBpVXJscy5WRVJJRllfQ0FQVENIQV9EQVRBX1VSTCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiB7IHRva2VuLCBrZXkgfSxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogZmFsc2UsXG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVDYXB0Y2hhRGF0YSh7IHN0YXRlLCByZWRpcmVjdF91cmkgPSB1bmRlZmluZWQgfSkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PHsgdG9rZW46IHN0cmluZzsgZGF0YTogc3RyaW5nIH0+KEFwaVVybHMuQ0FQVENIQV9EQVRBX1VSTCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiB7IHN0YXRlLCByZWRpcmVjdF91cmkgfSxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogZmFsc2UsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBtaW5pLXByb2dyYW0gc2NhbiBjb2RlXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0TWluaVByb2dyYW1Db2RlKHBhcmFtczogR2V0TWluaVByb2dyYW1RckNvZGVSZXF1ZXN0KTogUHJvbWlzZTxHZXRNaW5pUHJvZ3JhbVFyQ29kZVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8R2V0TWluaVByb2dyYW1RckNvZGVSZXNwb25zZT4oQXBpVXJscy5HRVRfTUlOSVBST0dSQU1fUVJDT0RFLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIG1pbmktcHJvZ3JhbSBzY2FuIGNvZGUgc3RhdHVzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0TWluaVByb2dyYW1RckNvZGVTdGF0dXMocGFyYW1zOiBHZXRNaW5pUHJvZ3JhbVFyQ29kZVN0YXR1c1JlcXVlc3QsKTogUHJvbWlzZTxHZXRNaW5pUHJvZ3JhbVFyQ29kZVN0YXR1c1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8R2V0TWluaVByb2dyYW1RckNvZGVTdGF0dXNSZXNwb25zZT4oQXBpVXJscy5HRVRfTUlOSVBST0dSQU1fUVJDT0RFX1NUQVRVUywge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgdXNlciBiZWhhdmlvciBsb2dcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFVzZXJCZWhhdmlvckxvZyhwYXJhbXM6IEdldFVzZXJCZWhhdmlvckxvZyk6IFByb21pc2U8R2V0VXNlckJlaGF2aW9yTG9nUmVzPiB7XG4gICAgY29uc3QgYWN0aW9uID0geyBMT0dJTjogJ3F1ZXJ5W2FjdGlvbl09VVNFUl9MT0dJTicsIE1PRElGWTogJ25lX3F1ZXJ5W2FjdGlvbl09VVNFUl9MT0dJTicgfVxuICAgIGNvbnN0IHVybCA9IGAke0FwaVVybHMuR0VUX1VTRVJfQkVIQVZJT1JfTE9HfT8ke2FjdGlvbltwYXJhbXMudHlwZV19JmxpbWl0PSR7cGFyYW1zLmxpbWl0fSR7XG4gICAgICBwYXJhbXMucGFnZV90b2tlbiA/IGAmcGFnZV90b2tlbj0ke3BhcmFtcy5wYWdlX3Rva2VufWAgOiAnJ1xuICAgIH1gXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3QodXJsLCB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICog6L+Z5Liq5pa55rOV5piv55So5oi36Ieq5bex5L+u5pS56Ieq5bex55qE5a+G56CB77yM5LiN5ZCM5LqOL2F1dGgvdjEvdXNlci9wYXNzd29yZOaOpeWPo++8jOivpeaOpeWPo+aYr+euoeeQhuWRmOS/ruaUueS4quS6uueahFxuICAgKiBAcGFyYW0ge01vZGlmeVVzZXJCYXNpY0luZm9SZXF1ZXN0fSBwYXJhbXMgQSBNb2RpZnlVc2VyQmFzaWNJbmZvUmVxdWVzdCBPYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgUHJvbWlzZTx2b2lkPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbW9kaWZ5UGFzc3dvcmQocGFyYW1zOiBNb2RpZnlVc2VyQmFzaWNJbmZvUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCBwdWJsaWNLZXkgPSAnJ1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICBsZXQgcHVibGljX2tleV90aHVtYnByaW50ID0gJydcblxuICAgIGNvbnN0IGVuY3J5cHRVdGlscyA9IGdldEVuY3J5cHRVdGlscyh0cnVlLCB0aGlzLmNvbmZpZy5hZGFwdGVyKVxuXG4gICAgaWYgKCFlbmNyeXB0VXRpbHMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZG8gbm90IHN1cHBvcnQgZW5jcnlwdCwgYSBlbmNyeXB0IHV0aWwgcmVxdWlyZWQuJylcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5nZXRQdWJsaWNLZXkoKVxuICAgICAgcHVibGljS2V5ID0gcmVzLnB1YmxpY19rZXlcbiAgICAgIHB1YmxpY19rZXlfdGh1bWJwcmludCA9IHJlcy5wdWJsaWNfa2V5X3RodW1icHJpbnRcblxuICAgICAgaWYgKCFwdWJsaWNLZXkgfHwgIXB1YmxpY19rZXlfdGh1bWJwcmludCkge1xuICAgICAgICB0aHJvdyByZXNcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgY29uc3QgZW5jcnlwdF9wYXNzd29yZCA9IHBhcmFtcy5wYXNzd29yZCA/IGVuY3J5cHRVdGlscy5nZXRFbmNyeXB0SW5mbyh7IHB1YmxpY0tleSwgcGF5bG9hZDogcGFyYW1zLnBhc3N3b3JkIH0pIDogJydcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgY29uc3QgZW5jcnlwdF9uZXdfcGFzc3dvcmQgPSBlbmNyeXB0VXRpbHMuZ2V0RW5jcnlwdEluZm8oeyBwdWJsaWNLZXksIHBheWxvYWQ6IHBhcmFtcy5uZXdfcGFzc3dvcmQgfSlcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdChBcGlVcmxzLlVTRVJfQkFTSUNfRURJVF9VUkwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgYm9keToge1xuICAgICAgICB1c2VyX2lkOiBwYXJhbXMudXNlcl9pZCxcbiAgICAgICAgZW5jcnlwdF9wYXNzd29yZCxcbiAgICAgICAgZW5jcnlwdF9uZXdfcGFzc3dvcmQsXG4gICAgICAgIHB1YmxpY19rZXlfdGh1bWJwcmludCxcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiDph43nva7lr4bnoIHvvIzor6XmjqXlj6Pml6DpnIDnmbvlvZXlsLHlj6/ku6Xph43nva7lr4bnoIFcbiAgICogQHBhcmFtIHtNb2RpZnlQYXNzd29yZFdpdGhvdXRMb2dpblJlcXVlc3R9IHBhcmFtcyBBIE1vZGlmeVBhc3N3b3JkV2l0aG91dExvZ2luUmVxdWVzdCBPYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgUHJvbWlzZTx2b2lkPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbW9kaWZ5UGFzc3dvcmRXaXRob3V0TG9naW4ocGFyYW1zOiBNb2RpZnlQYXNzd29yZFdpdGhvdXRMb2dpblJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgcHVibGljS2V5ID0gJydcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgbGV0IHB1YmxpY19rZXlfdGh1bWJwcmludCA9ICcnXG5cbiAgICBjb25zdCBlbmNyeXB0VXRpbHMgPSBnZXRFbmNyeXB0VXRpbHModHJ1ZSwgdGhpcy5jb25maWcuYWRhcHRlcilcblxuICAgIGlmICghZW5jcnlwdFV0aWxzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RvIG5vdCBzdXBwb3J0IGVuY3J5cHQsIGEgZW5jcnlwdCB1dGlsIHJlcXVpcmVkLicpXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ2V0UHVibGljS2V5KClcbiAgICAgIHB1YmxpY0tleSA9IHJlcy5wdWJsaWNfa2V5XG4gICAgICBwdWJsaWNfa2V5X3RodW1icHJpbnQgPSByZXMucHVibGljX2tleV90aHVtYnByaW50XG5cbiAgICAgIGlmICghcHVibGljS2V5IHx8ICFwdWJsaWNfa2V5X3RodW1icHJpbnQpIHtcbiAgICAgICAgdGhyb3cgcmVzXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgIGNvbnN0IGVuY3J5cHRfcGFzc3dvcmQgPSBwYXJhbXMucGFzc3dvcmQgPyBlbmNyeXB0VXRpbHMuZ2V0RW5jcnlwdEluZm8oeyBwdWJsaWNLZXksIHBheWxvYWQ6IHBhcmFtcy5wYXNzd29yZCB9KSA6ICcnXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgIGNvbnN0IGVuY3J5cHRfbmV3X3Bhc3N3b3JkID0gZW5jcnlwdFV0aWxzLmdldEVuY3J5cHRJbmZvKHsgcHVibGljS2V5LCBwYXlsb2FkOiBwYXJhbXMubmV3X3Bhc3N3b3JkIH0pXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3QoQXBpVXJsc1YyLkFVVEhfUkVTRVRfUEFTU1dPUkQsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keToge1xuICAgICAgICB1c2VybmFtZTogcGFyYW1zLnVzZXJuYW1lLFxuICAgICAgICBwYXNzd29yZDogZW5jcnlwdF9wYXNzd29yZCxcbiAgICAgICAgbmV3X3Bhc3N3b3JkOiBlbmNyeXB0X25ld19wYXNzd29yZCxcbiAgICAgICAgcHVibGljX2tleV90aHVtYnByaW50LFxuICAgICAgfSxcbiAgICB9KVxuICB9XG59XG4iXX0=
|
|
1083
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL2FwaXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRVosbUNBQXdEO0FBOER4RCw2REFBMkU7QUFFM0UsOENBQTREO0FBQzVELGtDQUFvQztBQUNwQyw2RUFBd0Q7QUFJeEQsU0FBUyxlQUFlLENBQUMsU0FBUyxFQUFFLE9BQTRCOztJQUM5RCxJQUFNLFFBQVEsR0FBRztRQUNmLElBQUk7WUFHRixJQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtZQUV6QyxPQUFPLEtBQUssQ0FBQTtTQUNiO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFNO1NBQ1A7SUFDSCxDQUFDLENBQUE7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLENBQUEsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsSUFBSSwwQ0FBRSxVQUFVLEtBQUksVUFBVSxDQUFDLENBQUMsV0FBVyxFQUFFO1lBQ3pELE9BQU07U0FDUDtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxTQUFTLEVBQUU7WUFDekMsT0FBTyxRQUFRLEVBQUUsQ0FBQTtTQUNsQjtLQUNGO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxJQUFJLFNBQVMsRUFBRTtZQUNiLE9BQU8sUUFBUSxFQUFFLENBQUE7U0FDbEI7S0FDRjtBQUNILENBQUM7QUE0QkQ7SUFrQkUsY0FBWSxJQUFpQjtRQUNyQixJQUFBLE9BQU8sR0FBSyxJQUFJLFFBQVQsQ0FBUztRQUN0QixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUE7UUFDekMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQixJQUFNLFdBQVcsR0FBRztn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QUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxrQkFBUyxDQUFDLG1CQUFtQixFQUFFO2dDQUN4RCxNQUFNLEVBQUUsTUFBTTtnQ0FDZCxJQUFJLEVBQUU7b0NBQ0osUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO29DQUN6QixRQUFRLEVBQUUsZ0JBQWdCO29DQUMxQixZQUFZLEVBQUUsb0JBQW9CO29DQUNsQyxxQkFBcUIsdUJBQUE7aUNBQ3RCOzZCQUNGLENBQUMsRUFBQTs7OztLQUNIO0lBQ0gsV0FBQztBQUFELENBQUMsQUFsOUJELElBazlCQztBQWw5Qlksb0JBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCdcblxuaW1wb3J0IHsgQXBpVXJscywgQXBpVXJsc1YyLCBFcnJvclR5cGUgfSBmcm9tICcuL2NvbnN0cydcbmltcG9ydCB7XG4gIEdldFZlcmlmaWNhdGlvblJlcXVlc3QsXG4gIEdldFZlcmlmaWNhdGlvblJlc3BvbnNlLFxuICBVc2VyUHJvZmlsZSxcbiAgVXNlckluZm8sXG4gIFNpZ25JblJlcXVlc3QsXG4gIFNpZ25VcFJlcXVlc3QsXG4gIFZlcmlmeVJlcXVlc3QsXG4gIFZlcmlmeVJlc3BvbnNlLFxuICBHZW5Qcm92aWRlclJlZGlyZWN0VXJpUmVxdWVzdCxcbiAgR2VuUHJvdmlkZXJSZWRpcmVjdFVyaVJlc3BvbnNlLFxuICBHcmFudFByb3ZpZGVyVG9rZW5SZXF1ZXN0LFxuICBHcmFudFByb3ZpZGVyVG9rZW5SZXNwb25zZSxcbiAgUGF0Y2hQcm92aWRlclRva2VuUmVxdWVzdCxcbiAgUGF0Y2hQcm92aWRlclRva2VuUmVzcG9uc2UsXG4gIFNpZ25JbldpdGhQcm92aWRlclJlcXVlc3QsXG4gIFNpZ25JbkN1c3RvbVJlcXVlc3QsXG4gIEJpbmRXaXRoUHJvdmlkZXJSZXF1ZXN0LFxuICBUcmFuc0J5UHJvdmlkZXJSZXF1ZXN0LFxuICBHcmFudFRva2VuUmVxdWVzdCxcbiAgVW5iaW5kUHJvdmlkZXJSZXF1ZXN0LFxuICBDaGVja1Bhc3N3b3JkUmVxdWVzdCxcbiAgU2V0UGFzc3dvcmRSZXF1ZXN0LFxuICBDaGFuZ2VCb3VuZFByb3ZpZGVyUmVxdWVzdCxcbiAgQ2hhbmdlQm91bmRQcm92aWRlclJlc3BvbnNlLFxuICBVcGRhdGVQYXNzd29yZFJlcXVlc3QsXG4gIFN1ZG9SZXNwb25zZSxcbiAgU3Vkb1JlcXVlc3QsXG4gIEdldEN1c3RvbVNpZ25UaWNrZXRGbixcbiAgUXVlcnlVc2VyUHJvZmlsZVJlcXVlc3QsXG4gIFF1ZXJ5VXNlclByb2ZpbGVSZXNwb25zZSxcbiAgUmVzZXRQYXNzd29yZFJlcXVlc3QsXG4gIERldmljZUF1dGhvcml6ZVJlcXVlc3QsXG4gIERldmljZUF1dGhvcml6ZVJlc3BvbnNlLFxuICBDaGVja1VzZXJuYW1lUmVxdWVzdCxcbiAgQ2hlY2tJZlVzZXJFeGlzdFJlcXVlc3QsXG4gIENoZWNrSWZVc2VyRXhpc3RSZXNwb25zZSxcbiAgV2l0aFN1ZG9SZXF1ZXN0LFxuICBQdWJsaWNLZXksXG4gIEVuY3J5cHRQYXJhbXMsXG4gIFByb3ZpZGVyU3ViVHlwZSxcbiAgR2V0TWluaVByb2dyYW1RckNvZGVSZXF1ZXN0LFxuICBHZXRNaW5pUHJvZ3JhbVFyQ29kZVN0YXR1c1JlcXVlc3QsXG4gIEdldE1pbmlQcm9ncmFtUXJDb2RlUmVzcG9uc2UsXG4gIEdldE1pbmlQcm9ncmFtUXJDb2RlU3RhdHVzUmVzcG9uc2UsXG4gIE1vZGlmeVVzZXJCYXNpY0luZm9SZXF1ZXN0LFxuICBFZGl0Q29udGFjdFJlcXVlc3QsXG4gIEF1dGhvcml6ZUluZm9SZXF1ZXN0LFxuICBBdXRob3JpemVJbmZvUmVzcG9uc2UsXG4gIEF1dGhvcml6ZURldmljZVJlcXVlc3QsXG4gIEF1dGhvcml6ZVJlcXVlc3QsXG4gIEF1dGhvcml6ZVJlc3BvbnNlLFxuICBHZXRVc2VyQmVoYXZpb3JMb2csXG4gIEdldFVzZXJCZWhhdmlvckxvZ1JlcyxcbiAgUmV2b2tlRGV2aWNlUmVxdWVzdCxcbiAgU2lnbm91dFJlcG9uc2UsXG4gIFByb3ZpZGVyc1Jlc3BvbnNlLFxuICBTaWdub3V0UmVxdWVzdCxcbiAgTW9kaWZ5UGFzc3dvcmRXaXRob3V0TG9naW5SZXF1ZXN0LFxufSBmcm9tICcuL21vZGVscydcbmltcG9ydCB7IFNpbXBsZVN0b3JhZ2UsIFJlcXVlc3RGdW5jdGlvbiB9IGZyb20gJy4uL29hdXRoMmNsaWVudC9pbnRlcmZhY2UnXG5pbXBvcnQgeyBPQXV0aDJDbGllbnQsIGRlZmF1bHRTdG9yYWdlIH0gZnJvbSAnLi4vb2F1dGgyY2xpZW50L29hdXRoMmNsaWVudCdcbmltcG9ydCB7IENyZWRlbnRpYWxzIH0gZnJvbSAnLi4vb2F1dGgyY2xpZW50L21vZGVscydcbmltcG9ydCB7IENhcHRjaGEsIENhcHRjaGFPcHRpb25zIH0gZnJvbSAnLi4vY2FwdGNoYS9jYXB0Y2hhJ1xuaW1wb3J0IHsgZGVlcENsb25lIH0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQgTXlVUkxTZWFyY2hQYXJhbXMgZnJvbSAnLi4vdXRpbHMvdXJsU2VhcmNoUGFyYW1zJ1xuaW1wb3J0IHsgU0RLQWRhcHRlckludGVyZmFjZSB9IGZyb20gJ0BjbG91ZGJhc2UvYWRhcHRlci1pbnRlcmZhY2UnXG5pbXBvcnQgeyBJQ2xvdWRiYXNlQ29uZmlnIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcydcblxuZnVuY3Rpb24gZ2V0RW5jcnlwdFV0aWxzKGlzRW5jcnlwdCwgYWRhcHRlcjogU0RLQWRhcHRlckludGVyZmFjZSkge1xuICBjb25zdCBnZXRVdGlscyA9ICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMvZW5jcnlwdCcpXG4gICAgICAvKiBlc2xpbnQtZW5hYmxlICovXG4gICAgICByZXR1cm4gdXRpbHNcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICB9XG5cbiAgdHJ5IHtcbiAgICBpZiAoKGFkYXB0ZXI/LnJvb3Q/Lmdsb2JhbFRoaXMgfHwgZ2xvYmFsVGhpcykuSVNfTVBfQlVJTEQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghcHJvY2Vzcy5lbnYuSVNfTVBfQlVJTEQgJiYgaXNFbmNyeXB0KSB7XG4gICAgICByZXR1cm4gZ2V0VXRpbHMoKVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoaXNFbmNyeXB0KSB7XG4gICAgICByZXR1cm4gZ2V0VXRpbHMoKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhPcHRpb25zIHtcbiAgYXBpT3JpZ2luOiBzdHJpbmdcbiAgYXBpUGF0aD86IHN0cmluZ1xuICBjbGllbnRJZDogc3RyaW5nXG4gIC8qKlxuICAgKiBiYXNpYyBhdXRoXG4gICAqL1xuICBjbGllbnRTZWNyZXQ/OiBzdHJpbmdcbiAgY3JlZGVudGlhbHNDbGllbnQ/OiBPQXV0aDJDbGllbnRcbiAgcmVxdWVzdD86IFJlcXVlc3RGdW5jdGlvblxuICBiYXNlUmVxdWVzdD86IFJlcXVlc3RGdW5jdGlvblxuICBzdG9yYWdlPzogU2ltcGxlU3RvcmFnZVxuICBhbm9ueW1vdXNTaWduSW5GdW5jPzogKENyZWRlbnRpYWxzKSA9PiBQcm9taXNlPENyZWRlbnRpYWxzIHwgdm9pZD5cbiAgY2FwdGNoYU9wdGlvbnM/OiBQYXJ0aWFsPENhcHRjaGFPcHRpb25zPlxuICBlbnY/OiBzdHJpbmdcbiAgd3hDbG91ZD86IGFueVxuICBhZGFwdGVyPzogU0RLQWRhcHRlckludGVyZmFjZVxuICBvbkNyZWRlbnRpYWxzRXJyb3I/OiAoZGF0YTogeyBtc2c6IHN0cmluZzsgZXZlbnRUeXBlPzogJ2NyZWRlbnRpYWxzX2Vycm9yJyB9KSA9PiB2b2lkXG4gIGhlYWRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9XG4gIGkxOG4/OiBJQ2xvdWRiYXNlQ29uZmlnWydpMThuJ11cbiAgdXNlV3hDbG91ZD86IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBBdXRoXG4gKi9cbmV4cG9ydCBjbGFzcyBBdXRoIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VQYXJhbXNUb1NlYXJjaChwYXJhbXM6IGFueSk6IHN0cmluZyB7XG4gICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmICghcGFyYW1zW2tleV0pIHtcbiAgICAgICAgZGVsZXRlIHBhcmFtc1trZXldXG4gICAgICB9XG4gICAgfSlcbiAgICBjb25zdCBzZWFyY2hQYXJhbXMgPSBuZXcgTXlVUkxTZWFyY2hQYXJhbXMocGFyYW1zIGFzIGFueSlcbiAgICByZXR1cm4gc2VhcmNoUGFyYW1zLnRvU3RyaW5nKClcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlnOiBBdXRoT3B0aW9uc1xuICBwcml2YXRlIGdldEN1c3RvbVNpZ25UaWNrZXRGbj86IEdldEN1c3RvbVNpZ25UaWNrZXRGblxuXG4gIC8qKlxuICAgKiBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge0F1dGhPcHRpb25zfSBvcHRzXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRzOiBBdXRoT3B0aW9ucykge1xuICAgIGxldCB7IHJlcXVlc3QgfSA9IG9wdHNcbiAgICBsZXQgb0F1dGgyQ2xpZW50ID0gb3B0cy5jcmVkZW50aWFsc0NsaWVudFxuICAgIGlmICghb0F1dGgyQ2xpZW50KSB7XG4gICAgICBjb25zdCBpbml0T3B0aW9ucyA9IHtcbiAgICAgICAgYXBpT3JpZ2luOiBvcHRzLmFwaU9yaWdpbixcbiAgICAgICAgYXBpUGF0aDogb3B0cy5hcGlQYXRoLFxuICAgICAgICBjbGllbnRJZDogb3B0cy5jbGllbnRJZCxcbiAgICAgICAgc3RvcmFnZTogb3B0cy5zdG9yYWdlLFxuICAgICAgICBlbnY6IG9wdHMuZW52LFxuICAgICAgICBiYXNlUmVxdWVzdDogb3B0cy5iYXNlUmVxdWVzdCAvKiB8fCBvcHRzLnJlcXVlc3QgKi8sIC8vIG9wdHMucmVxdWVzdCDlup/lvIPkuI3nlKjmnaXooajnpLogb2F1dGggcnF1ZXN0XG4gICAgICAgIGFub255bW91c1NpZ25JbkZ1bmM6IG9wdHMuYW5vbnltb3VzU2lnbkluRnVuYyxcbiAgICAgICAgd3hDbG91ZDogb3B0cy53eENsb3VkLFxuICAgICAgICBvbkNyZWRlbnRpYWxzRXJyb3I6IG9wdHMub25DcmVkZW50aWFsc0Vycm9yLFxuICAgICAgICBoZWFkZXJzOiBvcHRzLmhlYWRlcnMgfHwge30sXG4gICAgICAgIGkxOG46IG9wdHMuaTE4bixcbiAgICAgIH1cbiAgICAgIG9BdXRoMkNsaWVudCA9IG5ldyBPQXV0aDJDbGllbnQoaW5pdE9wdGlvbnMpXG4gICAgfVxuICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgY29uc3QgYmFzZVJlcXVlc3QgPSBvQXV0aDJDbGllbnQucmVxdWVzdC5iaW5kKG9BdXRoMkNsaWVudClcbiAgICAgIGNvbnN0IGNhcHRjaGEgPSBuZXcgQ2FwdGNoYSh7XG4gICAgICAgIGNsaWVudElkOiBvcHRzLmNsaWVudElkLFxuICAgICAgICByZXF1ZXN0OiBiYXNlUmVxdWVzdCxcbiAgICAgICAgc3RvcmFnZTogb3B0cy5zdG9yYWdlLFxuICAgICAgICBhZGFwdGVyOiBvcHRzLmFkYXB0ZXIsXG4gICAgICAgIC4uLm9wdHMuY2FwdGNoYU9wdGlvbnMsXG4gICAgICB9KVxuICAgICAgcmVxdWVzdCA9IGNhcHRjaGEucmVxdWVzdC5iaW5kKGNhcHRjaGEpXG4gICAgfVxuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgZW52OiBvcHRzLmVudixcbiAgICAgIGFwaU9yaWdpbjogb3B0cy5hcGlPcmlnaW4sXG4gICAgICBhcGlQYXRoOiBvcHRzLmFwaVBhdGgsXG4gICAgICBjbGllbnRJZDogb3B0cy5jbGllbnRJZCxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBjcmVkZW50aWFsc0NsaWVudDogb0F1dGgyQ2xpZW50LFxuICAgICAgc3RvcmFnZTogb3B0cy5zdG9yYWdlIHx8IGRlZmF1bHRTdG9yYWdlLFxuICAgICAgYWRhcHRlcjogb3B0cy5hZGFwdGVyLFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDmoLnmja7niYjmnKzmoIfor4bvvIzlpITnkIblvoXor7fmsYLnmoR1cmzlkoxwYXJhbXNcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiBAcGFyYW0ga2V5XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwdWJsaWMgZ2V0UGFyYW1zQnlWZXJzaW9uKHBhcmFtczogYW55LCBrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHBhcmFtc1RlbXAgPSBkZWVwQ2xvbmUocGFyYW1zKVxuICAgIGNvbnN0IHVybCA9IHsgdjI6IEFwaVVybHNWMiB9W3BhcmFtc1RlbXA/LnZlcnNpb25dPy5ba2V5XSB8fCBBcGlVcmxzW2tleV1cblxuICAgIGlmIChwYXJhbXNUZW1wKSB7XG4gICAgICBkZWxldGUgcGFyYW1zVGVtcC52ZXJzaW9uXG4gICAgfVxuXG4gICAgcmV0dXJuIHsgcGFyYW1zOiBwYXJhbXNUZW1wLCB1cmwgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNpZ24gaW4uXG4gICAqIEBwYXJhbSB7U2lnbkluUmVxdWVzdH0gcGFyYW1zIEEgU2lnbkluUmVxdWVzdCBPYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q3JlZGVudGlhbHM+fSBBIFByb21pc2U8Q3JlZGVudGlhbHM+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzaWduSW4ocGFyYW1zOiBTaWduSW5SZXF1ZXN0KTogUHJvbWlzZTxDcmVkZW50aWFscz4ge1xuICAgIGNvbnN0IHZlcnNpb24gPSBwYXJhbXMudmVyc2lvbiB8fCAndjEnXG4gICAgY29uc3QgcmVzID0gdGhpcy5nZXRQYXJhbXNCeVZlcnNpb24ocGFyYW1zLCAnQVVUSF9TSUdOX0lOX1VSTCcpXG4gICAgaWYgKHJlcy5wYXJhbXMucXVlcnkpIHtcbiAgICAgIGRlbGV0ZSByZXMucGFyYW1zLnF1ZXJ5XG4gICAgfVxuXG4gICAgY29uc3QgYm9keSA9IGF3YWl0IHRoaXMuZ2V0RW5jcnlwdFBhcmFtcyhyZXMucGFyYW1zKVxuICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMuY29uZmlnLnJlcXVlc3Q8Q3JlZGVudGlhbHM+KHJlcy51cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keSxcbiAgICB9KVxuICAgIGF3YWl0IHRoaXMuY29uZmlnLmNyZWRlbnRpYWxzQ2xpZW50LnNldENyZWRlbnRpYWxzKHtcbiAgICAgIC4uLmNyZWRlbnRpYWxzLFxuICAgICAgdmVyc2lvbixcbiAgICB9KVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY3JlZGVudGlhbHMpXG4gIH1cblxuICAvKipcbiAgICogU2lnbiBpbiBBbm9ueW1vdXNseVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPENyZWRlbnRpYWxzPn0gQSBQcm9taXNlPENyZWRlbnRpYWxzPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2lnbkluQW5vbnltb3VzbHkoXG4gICAgZGF0YToge1xuICAgICAgcHJvdmlkZXJfdG9rZW4/OiBzdHJpbmdcbiAgICB9ID0ge30sXG4gICAgdXNlV3hDbG91ZCA9IGZhbHNlLFxuICApOiBQcm9taXNlPENyZWRlbnRpYWxzPiB7XG4gICAgY29uc3QgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5jb25maWcucmVxdWVzdDxDcmVkZW50aWFscz4oQXBpVXJscy5BVVRIX1NJR05fSU5fQU5PTllNT1VTTFlfVVJMLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGRhdGEsXG4gICAgICB1c2VXeENsb3VkLFxuICAgIH0pXG4gICAgYXdhaXQgdGhpcy5jb25maWcuY3JlZGVudGlhbHNDbGllbnQuc2V0Q3JlZGVudGlhbHMoY3JlZGVudGlhbHMpXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjcmVkZW50aWFscylcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduIHVwLlxuICAgKiBAcGFyYW0ge1NpZ25VcFJlcXVlc3R9IHBhcmFtcyBBIFNpZ25VcFJlcXVlc3QgT2JqZWN0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPENyZWRlbnRpYWxzPn0gQSBQcm9taXNlPENyZWRlbnRpYWxzPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2lnblVwKHBhcmFtczogU2lnblVwUmVxdWVzdCk6IFByb21pc2U8Q3JlZGVudGlhbHM+IHtcbiAgICBjb25zdCBkYXRhOiBDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMuY29uZmlnLnJlcXVlc3Q8Q3JlZGVudGlhbHM+KEFwaVVybHMuQVVUSF9TSUdOX1VQX1VSTCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgfSlcbiAgICBhd2FpdCB0aGlzLmNvbmZpZy5jcmVkZW50aWFsc0NsaWVudC5zZXRDcmVkZW50aWFscyhkYXRhKVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZGF0YSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduIG91dC5cbiAgICogQHJldHVybiB7T2JqZWN0fSBBIFByb21pc2U8U2lnbm91dFJlcXVlc3Q+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzaWduT3V0KHBhcmFtcz86IFNpZ25vdXRSZXF1ZXN0KTogUHJvbWlzZTxTaWdub3V0UmVwb25zZT4ge1xuICAgIGxldCByZXNwOiBTaWdub3V0UmVwb25zZSA9IHt9XG4gICAgaWYgKHBhcmFtcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzcCA9IGF3YWl0IHRoaXMuY29uZmlnLnJlcXVlc3Q8U2lnbm91dFJlcG9uc2U+KEFwaVVybHMuQVVUSF9TSUdOT1VUX1VSTCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgICBib2R5OiBwYXJhbXMsXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKGVyci5lcnJvciAhPT0gRXJyb3JUeXBlLlVOQVVUSEVOVElDQVRFRCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdzaWduX291dF9lcnJvcicsIGVycilcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5jb25maWcuY3JlZGVudGlhbHNDbGllbnQuc2V0Q3JlZGVudGlhbHMoKVxuICAgICAgcmV0dXJuIHJlc3BcbiAgICB9XG4gICAgY29uc3QgYWNjZXNzVG9rZW46IHN0cmluZyA9IGF3YWl0IHRoaXMuY29uZmlnLmNyZWRlbnRpYWxzQ2xpZW50LmdldEFjY2Vzc1Rva2VuKClcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jb25maWcucmVxdWVzdChBcGlVcmxzLkFVVEhfUkVWT0tFX1VSTCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHRva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIH0sXG4gICAgfSlcbiAgICBhd2FpdCB0aGlzLmNvbmZpZy5jcmVkZW50aWFsc0NsaWVudC5zZXRDcmVkZW50aWFscygpXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShkYXRhKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldm9rZSBBbGwgRGV2aWNlc1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IEEgUHJvbWlzZTx2b2lkPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmV2b2tlQWxsRGV2aWNlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmNvbmZpZy5yZXF1ZXN0PHZvaWQ+KEFwaVVybHMuQVVUSF9SRVZPS0VfQUxMX1VSTCwge1xuICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJldm9rZSBEZXZpY2VcbiAgICogQHJldHVybiB7T2JqZWN0fSBBIFByb21pc2U8dm9pZD4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJldm9rZURldmljZShwYXJhbXM6IFJldm9rZURldmljZVJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmNvbmZpZy5yZXF1ZXN0PHZvaWQ+KEFwaVVybHMuQVVUSE9SSVpFRF9ERVZJQ0VTX0RFTEVURV9VUkwgKyBwYXJhbXMuZGV2aWNlX2lkLCB7XG4gICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB2ZXJpZmljYXRpb24uXG4gICAqIEBwYXJhbSB7R2V0VmVyaWZpY2F0aW9uUmVxdWVzdH0gcGFyYW1zIEEgR2V0VmVyaWZpY2F0aW9uUmVxdWVzdCBPYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8R2V0VmVyaWZpY2F0aW9uUmVzcG9uc2U+fSBBIFByb21pc2U8R2V0VmVyaWZpY2F0aW9uUmVzcG9uc2U+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRWZXJpZmljYXRpb24oXG4gICAgcGFyYW1zOiBHZXRWZXJpZmljYXRpb25SZXF1ZXN0LFxuICAgIG9wdGlvbnM/OiB7IHdpdGhDYXB0Y2hhOiBib29sZWFuIH0sXG4gICk6IFByb21pc2U8R2V0VmVyaWZpY2F0aW9uUmVzcG9uc2U+IHtcbiAgICBsZXQgd2l0aENyZWRlbnRpYWxzID0gZmFsc2VcbiAgICAvLyDlj5HpgIHnn63kv6Hml7bvvIzlpoLmnpzml7bnu5nlvZPliY3nlKjmiLflj5HvvIzliJnpnIDopoHluKbkuIrpibTmnYPkv6Hmga9cbiAgICBpZiAocGFyYW1zLnRhcmdldCA9PT0gJ0NVUl9VU0VSJykge1xuICAgICAgd2l0aENyZWRlbnRpYWxzID0gdHJ1ZVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBoYXNMb2dpbiA9IGF3YWl0IHRoaXMuaGFzTG9naW5TdGF0ZSgpXG4gICAgICBpZiAoaGFzTG9naW4pIHtcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGJvZHkgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHBhcmFtcykpXG5cbiAgICBpZiAoYm9keS5waG9uZV9udW1iZXIgJiYgIS9eXFwrXFxkezEsM31cXHMrXFxkKy8udGVzdChib2R5LnBob25lX251bWJlcikpIHtcbiAgICAgIGJvZHkucGhvbmVfbnVtYmVyID0gYCs4NiAke2JvZHkucGhvbmVfbnVtYmVyfWBcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxHZXRWZXJpZmljYXRpb25SZXNwb25zZT4oQXBpVXJscy5WRVJJRklDQVRJT05fVVJMLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHksXG4gICAgICB3aXRoQ2FwdGNoYTogb3B0aW9ucz8ud2l0aENhcHRjaGEgfHwgZmFsc2UsXG4gICAgICB3aXRoQ3JlZGVudGlhbHMsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiAgVmVyaWZ5IHRoZSBjb2RlXG4gICAqIEBwYXJhbSB7VmVyaWZ5UmVxdWVzdH0gcGFyYW1zIEEgVmVyaWZ5UmVxdWVzdCBPYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8VmVyaWZ5UmVzcG9uc2U+fSBBIFByb21pc2U8VmVyaWZ5UmVzcG9uc2U+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyB2ZXJpZnkocGFyYW1zOiBWZXJpZnlSZXF1ZXN0KTogUHJvbWlzZTxWZXJpZnlSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZ2V0UGFyYW1zQnlWZXJzaW9uKHBhcmFtcywgJ1ZFUklGWV9VUkwnKVxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNvbmZpZy5yZXF1ZXN0PFZlcmlmeVJlc3BvbnNlPihyZXMudXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHJlcy5wYXJhbXMsXG4gICAgfSlcblxuICAgIGlmIChwYXJhbXM/LnZlcnNpb24gPT09ICd2MicpIHtcbiAgICAgIGF3YWl0IHRoaXMuY29uZmlnLmNyZWRlbnRpYWxzQ2xpZW50LnNldENyZWRlbnRpYWxzKHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgdmVyc2lvbjogJ3YyJyxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW4gcHJvdmlkZXIgcmVkaXJlY3QgdXJpLlxuICAgKiBAcGFyYW0ge0dlblByb3ZpZGVyUmVkaXJlY3RVcmlSZXF1ZXN0fSBwYXJhbXMgQSBHZW5Qcm92aWRlclJlZGlyZWN0VXJpUmVxdWVzdCBvYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8R2VuUHJvdmlkZXJSZWRpcmVjdFVyaVJlc3BvbnNlPn0gQSBQcm9taXNlPEdlblByb3ZpZGVyUmVkaXJlY3RVcmlSZXNwb25zZT4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdlblByb3ZpZGVyUmVkaXJlY3RVcmkocGFyYW1zOiBHZW5Qcm92aWRlclJlZGlyZWN0VXJpUmVxdWVzdCk6IFByb21pc2U8R2VuUHJvdmlkZXJSZWRpcmVjdFVyaVJlc3BvbnNlPiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgIGNvbnN0IHsgcHJvdmlkZXJfcmVkaXJlY3RfdXJpOiByZWRpcmVjdF91cmksIG90aGVyX3BhcmFtczogb3RoZXJQYXJhbXMgPSB7fSwgLi4ucmVzdFBhcmFtcyB9ID0gcGFyYW1zXG4gICAgaWYgKHJlZGlyZWN0X3VyaSAmJiAhcmVzdFBhcmFtcy5yZWRpcmVjdF91cmkpIHtcbiAgICAgIHJlc3RQYXJhbXMucmVkaXJlY3RfdXJpID0gcmVkaXJlY3RfdXJpXG4gICAgfVxuXG4gICAgbGV0IHVybCA9IGAke0FwaVVybHMuUFJPVklERVJfVVJJX1VSTH0/JHtBdXRoLnBhcnNlUGFyYW1zVG9TZWFyY2gocmVzdFBhcmFtcyl9YFxuICAgIE9iamVjdC5rZXlzKG90aGVyUGFyYW1zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb3RoZXJQYXJhbXNba2V5XVxuICAgICAgaWYgKGtleSA9PT0gJ3NpZ25fb3V0X3VyaScgJiYgISh2YWx1ZT8ubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICB1cmwgKz0gYCZvdGhlcl9wYXJhbXNbJHtrZXl9XT0ke2VuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSl9YFxuICAgIH0pXG5cbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxHZW5Qcm92aWRlclJlZGlyZWN0VXJpUmVzcG9uc2U+KHVybCwge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHByb3ZpZGVyIHRva2VuLlxuICAgKiBAcGFyYW0ge0dyYW50UHJvdmlkZXJUb2tlblJlcXVlc3R9IHBhcmFtcyBBIEdyYW50UHJvdmlkZXJUb2tlblJlcXVlc3Qgb2JqZWN0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPEdyYW50UHJvdmlkZXJUb2tlblJlc3BvbnNlPn0gQSBQcm9taXNlPEdyYW50UHJvdmlkZXJUb2tlblJlc3BvbnNlPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ3JhbnRQcm92aWRlclRva2VuKFxuICAgIHBhcmFtczogR3JhbnRQcm92aWRlclRva2VuUmVxdWVzdCxcbiAgICB1c2VXeENsb3VkID0gZmFsc2UsXG4gICk6IFByb21pc2U8R3JhbnRQcm92aWRlclRva2VuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxHcmFudFByb3ZpZGVyVG9rZW5SZXNwb25zZT4oQXBpVXJscy5QUk9WSURFUl9UT0tFTl9VUkwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgICAgdXNlV3hDbG91ZCxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHByb3ZpZGVyIHRva2VuLlxuICAgKiBAcGFyYW0ge1BhdGNoUHJvdmlkZXJUb2tlblJlcXVlc3R9IHBhcmFtcyBBIFBhdGNoUHJvdmlkZXJUb2tlblJlcXVlc3Qgb2JqZWN0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFBhdGNoUHJvdmlkZXJUb2tlblJlc3BvbnNlPn0gQSBQcm9taXNlPFBhdGNoUHJvdmlkZXJUb2tlblJlc3BvbnNlPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcGF0Y2hQcm92aWRlclRva2VuKHBhcmFtczogUGF0Y2hQcm92aWRlclRva2VuUmVxdWVzdCk6IFByb21pc2U8UGF0Y2hQcm92aWRlclRva2VuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxQYXRjaFByb3ZpZGVyVG9rZW5SZXNwb25zZT4oQXBpVXJscy5QUk9WSURFUl9UT0tFTl9VUkwsIHtcbiAgICAgIG1ldGhvZDogJ1BBVENIJyxcbiAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFNpZ25pbiB3aXRoIHByb3ZpZGVyIHJlcXVlc3QuXG4gICAqIEBwYXJhbSB7U2lnbkluV2l0aFByb3ZpZGVyUmVxdWVzdH0gcGFyYW1zIEEgU2lnbkluV2l0aFByb3ZpZGVyUmVxdWVzdCBvYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q3JlZGVudGlhbHM+fSBBIFByb21pc2U8Q3JlZGVudGlhbHM+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzaWduSW5XaXRoUHJvdmlkZXIocGFyYW1zOiBTaWduSW5XaXRoUHJvdmlkZXJSZXF1ZXN0LCB1c2VXeENsb3VkID0gZmFsc2UpOiBQcm9taXNlPENyZWRlbnRpYWxzPiB7XG4gICAgY29uc3QgcmVzID0gdGhpcy5nZXRQYXJhbXNCeVZlcnNpb24ocGFyYW1zLCAnQVVUSF9TSUdOX0lOX1dJVEhfUFJPVklERVJfVVJMJylcblxuICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMuY29uZmlnLnJlcXVlc3Q8Q3JlZGVudGlhbHM+KHJlcy51cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogcmVzLnBhcmFtcyxcbiAgICAgIHVzZVd4Q2xvdWQsXG4gICAgfSlcblxuICAgIGF3YWl0IHRoaXMuY29uZmlnLmNyZWRlbnRpYWxzQ2xpZW50LnNldENyZWRlbnRpYWxzKHtcbiAgICAgIC4uLmNyZWRlbnRpYWxzLFxuICAgICAgdmVyc2lvbjogcGFyYW1zPy52ZXJzaW9uIHx8ICd2MScsXG4gICAgfSlcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNyZWRlbnRpYWxzKVxuICB9XG5cbiAgLyoqXG4gICAqIFNpZ25pbiB3aXRoIGN1c3RvbS5cbiAgICogQHBhcmFtIHtTaWduSW5DdXN0b21SZXF1ZXN0fSBwYXJhbXMgQSBTaWduSW5DdXN0b21SZXF1ZXN0IG9iamVjdC5cbiAgICogQHJldHVybiB7UHJvbWlzZTxDcmVkZW50aWFscz59IEEgUHJvbWlzZTxDcmVkZW50aWFscz4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNpZ25JbkN1c3RvbShwYXJhbXM6IFNpZ25JbkN1c3RvbVJlcXVlc3QpOiBQcm9taXNlPENyZWRlbnRpYWxzPiB7XG4gICAgY29uc3QgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5jb25maWcucmVxdWVzdDxDcmVkZW50aWFscz4oQXBpVXJscy5BVVRIX1NJR05fSU5fQ1VTVE9NLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICB9KVxuXG4gICAgYXdhaXQgdGhpcy5jb25maWcuY3JlZGVudGlhbHNDbGllbnQuc2V0Q3JlZGVudGlhbHMoY3JlZGVudGlhbHMpXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjcmVkZW50aWFscylcbiAgfVxuXG4gIC8qKlxuICAgKiBzaWduIGluIHdpdGggd2VjaGF0IGlkZW5kaWZ5XG4gICAqIOmcgOimgee7k+WQiCBodHRwIG92ZXJjYWxsRnVuY3Rpb24g5L2/55SoXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2lnbkluV2l0aFdlY2hhdChwYXJhbXM6IGFueSA9IHt9KTogUHJvbWlzZTxDcmVkZW50aWFscz4ge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMuY29uZmlnLnJlcXVlc3Q8Q3JlZGVudGlhbHM+KEFwaVVybHMuQVVUSF9TSUdOX0lOX1dJVEhfV0VDSEFUX1VSTCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgfSlcbiAgICBhd2FpdCB0aGlzLmNvbmZpZy5jcmVkZW50aWFsc0NsaWVudC5zZXRDcmVkZW50aWFscyhjcmVkZW50aWFscylcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNyZWRlbnRpYWxzKVxuICB9XG5cbiAgLyoqXG4gICAqIEJpbmQgd2l0aCBwcm92aWRlclxuICAgKiBAcGFyYW0ge0JpbmRXaXRoUHJvdmlkZXJSZXF1ZXN0fSBwYXJhbXMgQSBCaW5kV2l0aFByb3ZpZGVyUmVxdWVzdCBvYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgUHJvbWlzZTxhbnk+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBiaW5kV2l0aFByb3ZpZGVyKHBhcmFtczogQmluZFdpdGhQcm92aWRlclJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxhbnk+KEFwaVVybHMuUFJPVklERVJfQklORF9VUkwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB1c2VyIHByb2ZpbGUuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8VXNlclByb2ZpbGU+fSBBIFByb21pc2U8VXNlclByb2ZpbGU+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRVc2VyUHJvZmlsZShwYXJhbXM6IHsgdmVyc2lvbj86IHN0cmluZyB9KTogUHJvbWlzZTxVc2VyUHJvZmlsZT4ge1xuICAgIHJldHVybiB0aGlzLmdldFVzZXJJbmZvKHBhcmFtcylcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHVzZXIgaW5mby5cbiAgICogQHJldHVybiB7UHJvbWlzZTxVc2VySW5mbz59IEEgUHJvbWlzZTxVc2VyUHJvZmlsZT4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFVzZXJJbmZvKHBhcmFtczogeyB2ZXJzaW9uPzogc3RyaW5nOyBxdWVyeT86IHN0cmluZyB9ID0ge30pOiBQcm9taXNlPFVzZXJJbmZvPiB7XG4gICAgY29uc3QgcmVzID0gdGhpcy5nZXRQYXJhbXNCeVZlcnNpb24ocGFyYW1zLCAnVVNFUl9NRV9VUkwnKVxuXG4gICAgaWYgKHJlcy5wYXJhbXM/LnF1ZXJ5KSB7XG4gICAgICBjb25zdCBzZWFyY2hQYXJhbXMgPSBuZXcgTXlVUkxTZWFyY2hQYXJhbXMocmVzLnBhcmFtcy5xdWVyeSBhcyBhbnkpXG4gICAgICByZXMudXJsICs9IGA/JHtzZWFyY2hQYXJhbXMudG9TdHJpbmcoKX1gXG4gICAgfVxuXG4gICAgY29uc3QgdXNlckluZm8gPSBhd2FpdCB0aGlzLmNvbmZpZy5yZXF1ZXN0PFVzZXJJbmZvPihyZXMudXJsLCB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgIH0pXG5cbiAgICBpZiAodXNlckluZm8uc3ViKSB7XG4gICAgICB1c2VySW5mby51aWQgPSB1c2VySW5mby5zdWJcbiAgICB9XG5cbiAgICByZXR1cm4gdXNlckluZm9cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHVzZXIgaW5mbyBieSB3ZWRhIHBsdWdpbi5cbiAgICogQHJldHVybiB7UHJvbWlzZTxhbnk+fSBBIFByb21pc2U8YW55PiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0V2VkYVVzZXJJbmZvKCk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgdXNlckluZm8gPSBhd2FpdCB0aGlzLmNvbmZpZy5yZXF1ZXN0PGFueT4oQXBpVXJscy5XRURBX1VTRVJfVVJMLCB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgIH0pXG4gICAgcmV0dXJuIHVzZXJJbmZvXG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIG1lXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIHB1YmxpYyBhc3luYyBkZWxldGVNZShwYXJhbXM6IFdpdGhTdWRvUmVxdWVzdCk6IFByb21pc2U8VXNlclByb2ZpbGU+IHtcbiAgICBjb25zdCByZXMgPSB0aGlzLmdldFBhcmFtc0J5VmVyc2lvbihwYXJhbXMsICdVU0VSX01FX1VSTCcpXG4gICAgY29uc3QgdXJsID0gYCR7cmVzLnVybH0/JHtBdXRoLnBhcnNlUGFyYW1zVG9TZWFyY2gocmVzLnBhcmFtcyl9YFxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PFVzZXJQcm9maWxlPih1cmwsIHtcbiAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBoYXNMb2dpblN0YXRlIGNoZWNrIGlmIGhhcyBsb2dpbiBzdGF0ZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPGJvb2xlYW4+fSBBIFByb21pc2U8Ym9vbGVhbj4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc0xvZ2luU3RhdGUoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuY29uZmlnLmNyZWRlbnRpYWxzQ2xpZW50LmdldEFjY2Vzc1Rva2VuKClcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXNMb2dpblN0YXRlU3luYygpOiBDcmVkZW50aWFscyB8IG51bGwge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gdGhpcy5jb25maWcuY3JlZGVudGlhbHNDbGllbnQuZ2V0Q3JlZGVudGlhbHNTeW5jKClcbiAgICByZXR1cm4gY3JlZGVudGlhbHNcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRMb2dpblN0YXRlKCk6IFByb21pc2U8Q3JlZGVudGlhbHMgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmNyZWRlbnRpYWxzQ2xpZW50LmdldENyZWRlbnRpYWxzQXN5bmMoKVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zIGJ5IHByb3ZpZGVyLlxuICAgKiBAcGFyYW0ge1RyYW5zQnlQcm92aWRlclJlcXVlc3R9IHBhcmFtcyBBIFRyYW5zQnlQcm92aWRlclJlcXVlc3Qgb2JqZWN0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPENyZWRlbnRpYWxzPn0gQSBQcm9taXNlPENyZWRlbnRpYWxzPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdHJhbnNCeVByb3ZpZGVyKHBhcmFtczogVHJhbnNCeVByb3ZpZGVyUmVxdWVzdCk6IFByb21pc2U8Q3JlZGVudGlhbHM+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxDcmVkZW50aWFscz4oQXBpVXJscy5VU0VSX1RSQU5TX0JZX1BST1ZJREVSX1VSTCwge1xuICAgICAgbWV0aG9kOiAnUEFUQ0gnLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgdG9rZW4uXG4gICAqIEBwYXJhbSB7R3JhbnRUb2tlblJlcXVlc3R9IHBhcmFtcyBBIEdyYW50VG9rZW5SZXF1ZXN0IG9iamVjdC5cbiAgICogQHJldHVybiB7UHJvbWlzZTxDcmVkZW50aWFscz59IEEgUHJvbWlzZTxDcmVkZW50aWFscz4gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdyYW50VG9rZW4ocGFyYW1zOiBHcmFudFRva2VuUmVxdWVzdCk6IFByb21pc2U8Q3JlZGVudGlhbHM+IHtcbiAgICBjb25zdCByZXMgPSB0aGlzLmdldFBhcmFtc0J5VmVyc2lvbihwYXJhbXMsICdBVVRIX1RPS0VOX1VSTCcpXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8Q3JlZGVudGlhbHM+KHJlcy51cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogcmVzLnBhcmFtcyxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcHJvdmlkZSBsaXN0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFByb3ZpZGVyc1Jlc3BvbnNlPn0gQSBQcm9taXNlPFByb3ZpZGVyc1Jlc3BvbnNlPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0UHJvdmlkZXJzKCk6IFByb21pc2U8UHJvdmlkZXJzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxQcm92aWRlcnNSZXNwb25zZT4oQXBpVXJscy5QUk9WSURFUl9MSVNULCB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogdW5iaW5kIHByb3ZpZGVyLlxuICAgKiBAcGFyYW0ge1VuYmluZFByb3ZpZGVyUmVxdWVzdH0gcGFyYW1zXG4gICAqIEByZXR1cm4ge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIHB1YmxpYyBhc3luYyB1bmJpbmRQcm92aWRlcihwYXJhbXM6IFVuYmluZFByb3ZpZGVyUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PGFueT4oYCR7QXBpVXJscy5QUk9WSURFUl9VTkJJTkRfVVJMfS8ke3BhcmFtcy5wcm92aWRlcl9pZH1gLCB7XG4gICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogY2hlY2sgUGFzc3dvcmQuXG4gICAqIEBwYXJhbSB7Q2hlY2tQYXNzd29yZFJlcXVlc3R9IHBhcmFtc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2hlY2tQYXNzd29yZChwYXJhbXM6IENoZWNrUGFzc3dvcmRSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8YW55PihgJHtBcGlVcmxzLkNIRUNLX1BXRF9VUkx9YCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBFZGl0IENvbnRhY3Qg5L+u5pS5IOaJi+acuuWPtyDmiJYg6YKu566xXG4gICAqIEBwYXJhbSB7RWRpdENvbnRhY3RSZXF1ZXN0fSBwYXJhbXNcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIHB1YmxpYyBhc3luYyBlZGl0Q29udGFjdChwYXJhbXM6IEVkaXRDb250YWN0UmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PHZvaWQ+KGAke0FwaVVybHMuQklORF9DT05UQUNUX1VSTH1gLCB7XG4gICAgICBtZXRob2Q6ICdQQVRDSCcsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgUGFzc3dvcmQuXG4gICAqIEBwYXJhbSB7U2V0UGFzc3dvcmRyUmVxdWVzdH0gcGFyYW1zXG4gICAqIEByZXR1cm4ge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZXRQYXNzd29yZChwYXJhbXM6IFNldFBhc3N3b3JkUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PGFueT4oYCR7QXBpVXJscy5BVVRIX1NFVF9QQVNTV09SRH1gLCB7XG4gICAgICBtZXRob2Q6ICdQQVRDSCcsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiB1cGRhdGVQYXNzd29yZEJ5T2xkIOS9v+eUqOaXp+WvhueggeS/ruaUueWvhuegge+8jOWmguaenOW3sue7j+e7keWumuaJi+acuuWPt++8jOivt+WFiO+8mnN1ZG/vvIzlho3kv67mlLnlr4bnoIFcbiAgICogQHBhcmFtIHtTZXRQYXNzd29yZHJSZXF1ZXN0fSBwYXJhbXNcbiAgICogQHJldHVybiB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgcHVibGljIGFzeW5jIHVwZGF0ZVBhc3N3b3JkQnlPbGQocGFyYW1zOiBVcGRhdGVQYXNzd29yZFJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzdWRvVG9rZW4gPSBhd2FpdCB0aGlzLnN1ZG8oeyBwYXNzd29yZDogcGFyYW1zLm9sZF9wYXNzd29yZCB9KVxuICAgIHJldHVybiB0aGlzLnNldFBhc3N3b3JkKHtcbiAgICAgIHN1ZG9fdG9rZW46IHN1ZG9Ub2tlbi5zdWRvX3Rva2VuLFxuICAgICAgbmV3X3Bhc3N3b3JkOiBwYXJhbXMubmV3X3Bhc3N3b3JkLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogc3Vkb1xuICAgKiBAcGFyYW0ge3N1ZG99IHBhcmFtc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc3VkbyhwYXJhbXM6IFN1ZG9SZXF1ZXN0KTogUHJvbWlzZTxTdWRvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxTdWRvUmVzcG9uc2U+KGAke0FwaVVybHMuU1VET19VUkx9YCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgdXNlciB2ZXJpZmljYXRpb24uXG4gICAqIEBwYXJhbSB7R2V0VmVyaWZpY2F0aW9uUmVxdWVzdH0gcGFyYW1zIEEgR2V0VmVyaWZpY2F0aW9uUmVxdWVzdCBPYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8R2V0VmVyaWZpY2F0aW9uUmVzcG9uc2U+fSBBIFByb21pc2U8R2V0VmVyaWZpY2F0aW9uUmVzcG9uc2U+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZW5kVmVyaWZpY2F0aW9uQ29kZVRvQ3VycmVudFVzZXIocGFyYW1zOiBHZXRWZXJpZmljYXRpb25SZXF1ZXN0KTogUHJvbWlzZTxHZXRWZXJpZmljYXRpb25SZXNwb25zZT4ge1xuICAgIHBhcmFtcy50YXJnZXQgPSAnQ1VSX1VTRVInXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8R2V0VmVyaWZpY2F0aW9uUmVzcG9uc2U+KEFwaVVybHMuVkVSSUZJQ0FUSU9OX1VSTCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICB3aXRoQ2FwdGNoYTogdHJ1ZSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIGNoYW5nZSBCb3VuZCBwcm92aWRlci5cbiAgICogQHBhcmFtIHtDaGFuZ2VCb3VuZFByb3ZpZGVyUmVxdWVzdH0gcGFyYW1zIEEgR2V0VmVyaWZpY2F0aW9uUmVxdWVzdCBPYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q2hhbmdlQm91bmRQcm92aWRlclJlc3BvbnNlPn0gQSBQcm9taXNlPEdldFZlcmlmaWNhdGlvblJlc3BvbnNlPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2hhbmdlQm91bmRQcm92aWRlcihwYXJhbXM6IENoYW5nZUJvdW5kUHJvdmlkZXJSZXF1ZXN0KTogUHJvbWlzZTxDaGFuZ2VCb3VuZFByb3ZpZGVyUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxDaGFuZ2VCb3VuZFByb3ZpZGVyUmVzcG9uc2U+KGAke0FwaVVybHMuUFJPVklERVJfTElTVH0vJHtwYXJhbXMucHJvdmlkZXJfaWR9L3RyYW5zYCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHByb3ZpZGVyX3RyYW5zX3Rva2VuOiBwYXJhbXMudHJhbnNfdG9rZW4sXG4gICAgICB9LFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUGF0Y2ggdGhlIHVzZXIgcHJvZmlsZS5cbiAgICogQHBhcmFtIHtVc2VyUHJvZmlsZX0gcGFyYW1zIEEgVXNlclByb2ZpbGUgT2JqZWN0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFVzZXJQcm9maWxlPn0gQSBQcm9taXNlPFVzZXJQcm9maWxlPiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2V0VXNlclByb2ZpbGUocGFyYW1zOiBVc2VyUHJvZmlsZSk6IFByb21pc2U8VXNlclByb2ZpbGU+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxVc2VyUHJvZmlsZT4oQXBpVXJscy5VU0VSX1BSSUZJTEVfVVJMLCB7XG4gICAgICBtZXRob2Q6ICdQQVRDSCcsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdXNlciBiYXNpYyBpbmZvXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdXBkYXRlVXNlckJhc2ljSW5mbyhwYXJhbXM6IE1vZGlmeVVzZXJCYXNpY0luZm9SZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3QoQXBpVXJscy5VU0VSX0JBU0lDX0VESVRfVVJMLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFBhdGNoIHRoZSB1c2VyIHByb2ZpbGUuXG4gICAqIEBwYXJhbSB7UXVlcnlVc2VyUHJvZmlsZVJlcX0gYXBwZW5kZWRfcGFyYW1zIEEgUXVlcnlVc2VyUHJvZmlsZVJlcSBPYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8VXNlclByb2ZpbGU+fSBBIFByb21pc2U8VXNlclByb2ZpbGU+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBxdWVyeVVzZXJQcm9maWxlKHBhcmFtczogUXVlcnlVc2VyUHJvZmlsZVJlcXVlc3QpOiBQcm9taXNlPFF1ZXJ5VXNlclByb2ZpbGVSZXNwb25zZT4ge1xuICAgIC8vIGxldCB1cmwgPSBuZXcgVVJMKEFwaVVybHMuVVNFUl9RVUVSWV9VUkwpO1xuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IG5ldyBNeVVSTFNlYXJjaFBhcmFtcyhwYXJhbXMgYXMgYW55KVxuICAgIC8vIHVybC5zZWFyY2ggPSBzZWFyY2hQYXJhbXMudG9TdHJpbmcoKTtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxRdWVyeVVzZXJQcm9maWxlUmVzcG9uc2U+KGAke0FwaVVybHMuVVNFUl9RVUVSWV9VUkx9PyR7c2VhcmNoUGFyYW1zLnRvU3RyaW5nKCl9YCwge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIHNldEN1c3RvbVNpZ25GdW5jIHNldCB0aGUgZ2V0IHRpY2tldCBmdW5jdGlvblxuICAgKiBAcGFyYW0gZ2V0VGlja0ZuXG4gICAqL1xuICBwdWJsaWMgc2V0Q3VzdG9tU2lnbkZ1bmMoZ2V0VGlja0ZuOiBHZXRDdXN0b21TaWduVGlja2V0Rm4pIHtcbiAgICB0aGlzLmdldEN1c3RvbVNpZ25UaWNrZXRGbiA9IGdldFRpY2tGblxuICB9XG5cbiAgLyoqXG4gICAqIFNpZ25JbldpdGhDdXN0b21UaWNrZXQgY3VzdG9tIHNpZ25JblxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIC8vIHB1YmxpYyBhc3luYyBzaWduSW5XaXRoQ3VzdG9tVGlja2V0KHBhcmFtcz86IHsgdmVyc2lvbj86IHN0cmluZyB9KTogUHJvbWlzZTxDcmVkZW50aWFscz4ge1xuICAvLyAgIGNvbnN0IGN1c3RvbVNpZ25UaWNrZXRGbiA9IHRoaXMuZ2V0Q3VzdG9tU2lnblRpY2tldEZuXG4gIC8vICAgaWYgKCFjdXN0b21TaWduVGlja2V0Rm4pIHtcbiAgLy8gICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh7XG4gIC8vICAgICB9KVxuICAvLyAgIH1cbiAgLy8gICBjb25zdCBjdXN0b21UaWNrZXQgPSBhd2FpdCBjdXN0b21TaWduVGlja2V0Rm4oKVxuICAvLyAgIHJldHVybiB0aGlzLnNpZ25JbldpdGhQcm92aWRlcih7XG4gIC8vICAgICAuLi5wYXJhbXMsXG4gIC8vICAgICBwcm92aWRlcl9pZDogJ2N1c3RvbScsXG4gIC8vICAgICBwcm92aWRlcl90b2tlbjogY3VzdG9tVGlja2V0LFxuICAvLyAgIH0pXG4gIC8vIH1cbiAgcHVibGljIGFzeW5jIHNpZ25JbldpdGhDdXN0b21UaWNrZXQoKTogUHJvbWlzZTxDcmVkZW50aWFscz4ge1xuICAgIGNvbnN0IGN1c3RvbVNpZ25UaWNrZXRGbiA9IHRoaXMuZ2V0Q3VzdG9tU2lnblRpY2tldEZuXG4gICAgaWYgKCFjdXN0b21TaWduVGlja2V0Rm4pIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh7XG4gICAgICAgIGVycm9yOiAnZmFpbGVkX3ByZWNvbmRpdGlvbicsXG4gICAgICAgIGVycm9yX2Rlc2NyaXB0aW9uOiAncGxlYXNlIHVzZSBzZXRDdXN0b21TaWduRnVuYyB0byBzZXQgY3VzdG9tIHNpZ24gZnVuY3Rpb24nLFxuICAgICAgfSlcbiAgICB9XG4gICAgY29uc3QgY3VzdG9tVGlja2V0ID0gYXdhaXQgY3VzdG9tU2lnblRpY2tldEZuKClcbiAgICByZXR1cm4gdGhpcy5zaWduSW5DdXN0b20oe1xuICAgICAgcHJvdmlkZXJfaWQ6ICdjdXN0b20nLFxuICAgICAgdGlja2V0OiBjdXN0b21UaWNrZXQsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCBwYXNzd29yZFxuICAgKiBAcGFyYW0ge1Jlc2V0UGFzc3dvcmRSZXF1ZXN0fSBwYXJhbXNcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqIEBtZW1iZXJvZiBBdXRoXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVzZXRQYXNzd29yZChwYXJhbXM6IFJlc2V0UGFzc3dvcmRSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3QoQXBpVXJscy5BVVRIX1JFU0VUX1BBU1NXT1JELCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICAgIC8vIHdpdGhDcmVkZW50aWFsczogdHJ1ZVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQXV0aG9yaXplIG9hdXRoIEF1dGhvcml6ZVxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKi9cbiAgcHVibGljIGFzeW5jIGF1dGhvcml6ZShwYXJhbXM6IEF1dGhvcml6ZVJlcXVlc3QpOiBQcm9taXNlPEF1dGhvcml6ZVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8QXV0aG9yaXplUmVzcG9uc2U+KEFwaVVybHMuQVVUSE9SSVpFX1VSTCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBhdXRob3JpemUgZGV2aWNlXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIHB1YmxpYyBhc3luYyBhdXRob3JpemVEZXZpY2UocGFyYW1zOiBBdXRob3JpemVEZXZpY2VSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8dm9pZD4oQXBpVXJscy5BVVRIT1JJWkVfREVWSUNFX1VSTCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBkZXZpY2UgYXV0aG9yaXphdGlvblxuICAgKiBAcGFyYW0ge0RldmljZUF1dGhvcml6ZVJlcXVlc3R9IHBhcmFtc1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxEZXZpY2VBdXRob3JpemVSZXNwb25zZT59XG4gICAqIEBtZW1iZXJvZiBBdXRoXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGV2aWNlQXV0aG9yaXplKHBhcmFtczogRGV2aWNlQXV0aG9yaXplUmVxdWVzdCk6IFByb21pc2U8RGV2aWNlQXV0aG9yaXplUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdChBcGlVcmxzLkFVVEhfR0VUX0RFVklDRV9DT0RFLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIE9BdXRoIGdldCBhdXRob3JpemUgaW5mb1xuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKi9cbiAgcHVibGljIGFzeW5jIGF1dGhvcml6ZUluZm8ocGFyYW1zOiBBdXRob3JpemVJbmZvUmVxdWVzdCk6IFByb21pc2U8QXV0aG9yaXplSW5mb1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgdXJsID0gYCR7QXBpVXJscy5BVVRIT1JJWkVfSU5GT19VUkx9PyR7QXV0aC5wYXJzZVBhcmFtc1RvU2VhcmNoKHBhcmFtcyl9YFxuICAgIGxldCB3aXRoQmFzaWNBdXRoID0gdHJ1ZVxuICAgIGxldCB3aXRoQ3JlZGVudGlhbHMgPSBmYWxzZVxuICAgIGNvbnN0IGhhc0xvZ2luID0gYXdhaXQgdGhpcy5oYXNMb2dpblN0YXRlKClcbiAgICBpZiAoaGFzTG9naW4pIHtcbiAgICAgIHdpdGhDcmVkZW50aWFscyA9IHRydWVcbiAgICAgIHdpdGhCYXNpY0F1dGggPSBmYWxzZVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxBdXRob3JpemVJbmZvUmVzcG9uc2U+KHVybCwge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIHdpdGhCYXNpY0F1dGgsXG4gICAgICB3aXRoQ3JlZGVudGlhbHMsXG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGVja1VzZXJuYW1lKHBhcmFtczogQ2hlY2tVc2VybmFtZVJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdChBcGlVcmxzLkNIRUNLX1VTRVJOQU1FLCB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hlY2tJZlVzZXJFeGlzdChwYXJhbXM6IENoZWNrSWZVc2VyRXhpc3RSZXF1ZXN0KTogUHJvbWlzZTxDaGVja0lmVXNlckV4aXN0UmVzcG9uc2U+IHtcbiAgICBjb25zdCBzZWFyY2hQYXJhbXMgPSBuZXcgTXlVUkxTZWFyY2hQYXJhbXMocGFyYW1zIGFzIGFueSlcblxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0PENoZWNrSWZVc2VyRXhpc3RSZXNwb25zZT4oYCR7QXBpVXJscy5DSEVDS19JRl9VU0VSX0VYSVNUfT8ke3NlYXJjaFBhcmFtcy50b1N0cmluZygpfWAsIHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2dpblNjb3BlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmNyZWRlbnRpYWxzQ2xpZW50LmdldFNjb3BlKClcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2dpbkdyb3VwcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmNyZWRlbnRpYWxzQ2xpZW50LmdldEdyb3VwcygpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVmcmVzaFRva2VuRm9yY2UocGFyYW1zOiB7IHZlcnNpb24/OiBzdHJpbmcgfSkge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMuY29uZmlnLmNyZWRlbnRpYWxzQ2xpZW50LmdldENyZWRlbnRpYWxzKClcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jb25maWcuY3JlZGVudGlhbHNDbGllbnQucmVmcmVzaFRva2VuKHtcbiAgICAgIC4uLmNyZWRlbnRpYWxzLFxuICAgICAgdmVyc2lvbjogcGFyYW1zPy52ZXJzaW9uIHx8ICd2MScsXG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDcmVkZW50aWFscygpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuY3JlZGVudGlhbHNDbGllbnQuZ2V0Q3JlZGVudGlhbHMoKVxuICB9XG5cbiAgLyoqXG4gICAqIGdldCBwdWJsaWMga2V5IGZvciByZXF1ZXN0IHBhcmFtcyBlbmNyeXB0aW9uXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0UHVibGljS2V5KCk6IFByb21pc2U8UHVibGljS2V5PiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8UHVibGljS2V5PihBcGlVcmxzVjIuQVVUSF9QVUJMSUNfS0VZLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHt9LFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogZW5jcnlwdCByZXF1ZXN0IHBhcmFtc1xuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0RW5jcnlwdFBhcmFtcyhwYXJhbXM6IFJlY29yZDxhbnksIGFueT4pOiBQcm9taXNlPEVuY3J5cHRQYXJhbXM+IHtcbiAgICBjb25zdCB7IGlzRW5jcnlwdCB9ID0gcGFyYW1zXG4gICAgZGVsZXRlIHBhcmFtcy5pc0VuY3J5cHRcblxuICAgIGNvbnN0IHBheWxvYWQgPSBkZWVwQ2xvbmUocGFyYW1zKVxuXG4gICAgY29uc3QgZW5jcnlwdFV0aWxzID0gZ2V0RW5jcnlwdFV0aWxzKGlzRW5jcnlwdCwgdGhpcy5jb25maWcuYWRhcHRlcilcblxuICAgIGlmICghZW5jcnlwdFV0aWxzKSB7XG4gICAgICByZXR1cm4gcGFyYW1zXG4gICAgfVxuXG4gICAgbGV0IHB1YmxpY0tleSA9ICcnXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgIGxldCBwdWJsaWNfa2V5X3RodW1icHJpbnQgPSAnJ1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ2V0UHVibGljS2V5KClcbiAgICAgIHB1YmxpY0tleSA9IHJlcy5wdWJsaWNfa2V5XG4gICAgICBwdWJsaWNfa2V5X3RodW1icHJpbnQgPSByZXMucHVibGljX2tleV90aHVtYnByaW50XG5cbiAgICAgIGlmICghcHVibGljS2V5IHx8ICFwdWJsaWNfa2V5X3RodW1icHJpbnQpIHtcbiAgICAgICAgdGhyb3cgcmVzXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwYXJhbXM6IGVuY3J5cHRVdGlscy5nZXRFbmNyeXB0SW5mbyh7IHB1YmxpY0tleSwgcGF5bG9hZCB9KSxcbiAgICAgIHB1YmxpY19rZXlfdGh1bWJwcmludCxcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogZ2V0IHByb3ZpZGVyIHN1YiB0eXBlXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0UHJvdmlkZXJTdWJUeXBlKCk6IFByb21pc2U8UHJvdmlkZXJTdWJUeXBlPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8UHJvdmlkZXJTdWJUeXBlPihBcGlVcmxzLkdFVF9QUk9WSURFUl9UWVBFLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgcHJvdmlkZXJfaWQ6ICd3ZWRhJyxcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgcHJvdmlkZXIgc3ViIHR5cGVcbiAgICogQHJldHVybnNcbiAgICovXG4gIHB1YmxpYyBhc3luYyB2ZXJpZnlDYXB0Y2hhRGF0YSh7IHRva2VuLCBrZXkgfTogeyB0b2tlbjogc3RyaW5nOyBrZXk6IHN0cmluZyB9KSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8eyBjYXB0Y2hhX3Rva2VuOiBzdHJpbmc7IGV4cGlyZXNfaW46IG51bWJlciB9PihBcGlVcmxzLlZFUklGWV9DQVBUQ0hBX0RBVEFfVVJMLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHsgdG9rZW4sIGtleSB9LFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiBmYWxzZSxcbiAgICB9KVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZUNhcHRjaGFEYXRhKHsgc3RhdGUsIHJlZGlyZWN0X3VyaSA9IHVuZGVmaW5lZCB9KSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVlc3Q8eyB0b2tlbjogc3RyaW5nOyBkYXRhOiBzdHJpbmcgfT4oQXBpVXJscy5DQVBUQ0hBX0RBVEFfVVJMLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHsgc3RhdGUsIHJlZGlyZWN0X3VyaSB9LFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiBmYWxzZSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIG1pbmktcHJvZ3JhbSBzY2FuIGNvZGVcbiAgICogQHJldHVybnNcbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRNaW5pUHJvZ3JhbUNvZGUocGFyYW1zOiBHZXRNaW5pUHJvZ3JhbVFyQ29kZVJlcXVlc3QpOiBQcm9taXNlPEdldE1pbmlQcm9ncmFtUXJDb2RlUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxHZXRNaW5pUHJvZ3JhbVFyQ29kZVJlc3BvbnNlPihBcGlVcmxzLkdFVF9NSU5JUFJPR1JBTV9RUkNPREUsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogbWluaS1wcm9ncmFtIHNjYW4gY29kZSBzdGF0dXNcbiAgICogQHJldHVybnNcbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRNaW5pUHJvZ3JhbVFyQ29kZVN0YXR1cyhwYXJhbXM6IEdldE1pbmlQcm9ncmFtUXJDb2RlU3RhdHVzUmVxdWVzdCwpOiBQcm9taXNlPEdldE1pbmlQcm9ncmFtUXJDb2RlU3RhdHVzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdDxHZXRNaW5pUHJvZ3JhbVFyQ29kZVN0YXR1c1Jlc3BvbnNlPihBcGlVcmxzLkdFVF9NSU5JUFJPR1JBTV9RUkNPREVfU1RBVFVTLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIGdldCB1c2VyIGJlaGF2aW9yIGxvZ1xuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0VXNlckJlaGF2aW9yTG9nKHBhcmFtczogR2V0VXNlckJlaGF2aW9yTG9nKTogUHJvbWlzZTxHZXRVc2VyQmVoYXZpb3JMb2dSZXM+IHtcbiAgICBjb25zdCBhY3Rpb24gPSB7IExPR0lOOiAncXVlcnlbYWN0aW9uXT1VU0VSX0xPR0lOJywgTU9ESUZZOiAnbmVfcXVlcnlbYWN0aW9uXT1VU0VSX0xPR0lOJyB9XG4gICAgY29uc3QgdXJsID0gYCR7QXBpVXJscy5HRVRfVVNFUl9CRUhBVklPUl9MT0d9PyR7YWN0aW9uW3BhcmFtcy50eXBlXX0mbGltaXQ9JHtwYXJhbXMubGltaXR9JHtcbiAgICAgIHBhcmFtcy5wYWdlX3Rva2VuID8gYCZwYWdlX3Rva2VuPSR7cGFyYW1zLnBhZ2VfdG9rZW59YCA6ICcnXG4gICAgfWBcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdCh1cmwsIHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiDov5nkuKrmlrnms5XmmK/nlKjmiLfoh6rlt7Hkv67mlLnoh6rlt7HnmoTlr4bnoIHvvIzkuI3lkIzkuo4vYXV0aC92MS91c2VyL3Bhc3N3b3Jk5o6l5Y+j77yM6K+l5o6l5Y+j5piv566h55CG5ZGY5L+u5pS55Liq5Lq655qEXG4gICAqIEBwYXJhbSB7TW9kaWZ5VXNlckJhc2ljSW5mb1JlcXVlc3R9IHBhcmFtcyBBIE1vZGlmeVVzZXJCYXNpY0luZm9SZXF1ZXN0IE9iamVjdC5cbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBQcm9taXNlPHZvaWQ+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBtb2RpZnlQYXNzd29yZChwYXJhbXM6IE1vZGlmeVVzZXJCYXNpY0luZm9SZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IHB1YmxpY0tleSA9ICcnXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgIGxldCBwdWJsaWNfa2V5X3RodW1icHJpbnQgPSAnJ1xuXG4gICAgY29uc3QgZW5jcnlwdFV0aWxzID0gZ2V0RW5jcnlwdFV0aWxzKHRydWUsIHRoaXMuY29uZmlnLmFkYXB0ZXIpXG5cbiAgICBpZiAoIWVuY3J5cHRVdGlscykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdkbyBub3Qgc3VwcG9ydCBlbmNyeXB0LCBhIGVuY3J5cHQgdXRpbCByZXF1aXJlZC4nKVxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdldFB1YmxpY0tleSgpXG4gICAgICBwdWJsaWNLZXkgPSByZXMucHVibGljX2tleVxuICAgICAgcHVibGljX2tleV90aHVtYnByaW50ID0gcmVzLnB1YmxpY19rZXlfdGh1bWJwcmludFxuXG4gICAgICBpZiAoIXB1YmxpY0tleSB8fCAhcHVibGljX2tleV90aHVtYnByaW50KSB7XG4gICAgICAgIHRocm93IHJlc1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBlcnJvclxuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICBjb25zdCBlbmNyeXB0X3Bhc3N3b3JkID0gcGFyYW1zLnBhc3N3b3JkID8gZW5jcnlwdFV0aWxzLmdldEVuY3J5cHRJbmZvKHsgcHVibGljS2V5LCBwYXlsb2FkOiBwYXJhbXMucGFzc3dvcmQgfSkgOiAnJ1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICBjb25zdCBlbmNyeXB0X25ld19wYXNzd29yZCA9IGVuY3J5cHRVdGlscy5nZXRFbmNyeXB0SW5mbyh7IHB1YmxpY0tleSwgcGF5bG9hZDogcGFyYW1zLm5ld19wYXNzd29yZCB9KVxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0KEFwaVVybHMuVVNFUl9CQVNJQ19FRElUX1VSTCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHVzZXJfaWQ6IHBhcmFtcy51c2VyX2lkLFxuICAgICAgICBlbmNyeXB0X3Bhc3N3b3JkLFxuICAgICAgICBlbmNyeXB0X25ld19wYXNzd29yZCxcbiAgICAgICAgcHVibGljX2tleV90aHVtYnByaW50LFxuICAgICAgfSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIOmHjee9ruWvhuegge+8jOivpeaOpeWPo+aXoOmcgOeZu+W9leWwseWPr+S7pemHjee9ruWvhueggVxuICAgKiBAcGFyYW0ge01vZGlmeVBhc3N3b3JkV2l0aG91dExvZ2luUmVxdWVzdH0gcGFyYW1zIEEgTW9kaWZ5UGFzc3dvcmRXaXRob3V0TG9naW5SZXF1ZXN0IE9iamVjdC5cbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBQcm9taXNlPHZvaWQ+IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBtb2RpZnlQYXNzd29yZFdpdGhvdXRMb2dpbihwYXJhbXM6IE1vZGlmeVBhc3N3b3JkV2l0aG91dExvZ2luUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCBwdWJsaWNLZXkgPSAnJ1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICBsZXQgcHVibGljX2tleV90aHVtYnByaW50ID0gJydcblxuICAgIGNvbnN0IGVuY3J5cHRVdGlscyA9IGdldEVuY3J5cHRVdGlscyh0cnVlLCB0aGlzLmNvbmZpZy5hZGFwdGVyKVxuXG4gICAgaWYgKCFlbmNyeXB0VXRpbHMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZG8gbm90IHN1cHBvcnQgZW5jcnlwdCwgYSBlbmNyeXB0IHV0aWwgcmVxdWlyZWQuJylcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5nZXRQdWJsaWNLZXkoKVxuICAgICAgcHVibGljS2V5ID0gcmVzLnB1YmxpY19rZXlcbiAgICAgIHB1YmxpY19rZXlfdGh1bWJwcmludCA9IHJlcy5wdWJsaWNfa2V5X3RodW1icHJpbnRcblxuICAgICAgaWYgKCFwdWJsaWNLZXkgfHwgIXB1YmxpY19rZXlfdGh1bWJwcmludCkge1xuICAgICAgICB0aHJvdyByZXNcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgY29uc3QgZW5jcnlwdF9wYXNzd29yZCA9IHBhcmFtcy5wYXNzd29yZCA/IGVuY3J5cHRVdGlscy5nZXRFbmNyeXB0SW5mbyh7IHB1YmxpY0tleSwgcGF5bG9hZDogcGFyYW1zLnBhc3N3b3JkIH0pIDogJydcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgY29uc3QgZW5jcnlwdF9uZXdfcGFzc3dvcmQgPSBlbmNyeXB0VXRpbHMuZ2V0RW5jcnlwdEluZm8oeyBwdWJsaWNLZXksIHBheWxvYWQ6IHBhcmFtcy5uZXdfcGFzc3dvcmQgfSlcbiAgICByZXR1cm4gdGhpcy5jb25maWcucmVxdWVzdChBcGlVcmxzVjIuQVVUSF9SRVNFVF9QQVNTV09SRCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHVzZXJuYW1lOiBwYXJhbXMudXNlcm5hbWUsXG4gICAgICAgIHBhc3N3b3JkOiBlbmNyeXB0X3Bhc3N3b3JkLFxuICAgICAgICBuZXdfcGFzc3dvcmQ6IGVuY3J5cHRfbmV3X3Bhc3N3b3JkLFxuICAgICAgICBwdWJsaWNfa2V5X3RodW1icHJpbnQsXG4gICAgICB9LFxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
|
package/dist/cjs/auth/models.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F1dGgvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbnRlcmZhY2UgQmFzZVJlcXVlc3Qge1xuICBjbGllbnRfaWQ/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgR2V0Q3VzdG9tU2lnblRpY2tldEZuID0gKCkgPT4gUHJvbWlzZTxzdHJpbmc+XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbkluUmVxdWVzdCBleHRlbmRzIEJhc2VSZXF1ZXN0LCBFbmNyeXB0UGFyYW1zIHtcbiAgdXNlcm5hbWU/OiBzdHJpbmdcbiAgcGFzc3dvcmQ/OiBzdHJpbmdcbiAgdmVyaWZpY2F0aW9uX3Rva2VuPzogc3RyaW5nXG4gIHZlcnNpb24/OiBzdHJpbmdcbiAgcXVlcnk/OiB7IHdpdGhfZGVwYXJ0bWVudD86IGJvb2xlYW47IHdpdGhfcm9sZT86IGJvb2xlYW4gfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25JbldpdGhQcm92aWRlclJlcXVlc3QgZXh0ZW5kcyBCYXNlUmVxdWVzdCB7XG4gIHByb3ZpZGVyX3Rva2VuOiBzdHJpbmdcbiAgdmVyc2lvbj86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25VcFJlcXVlc3QgZXh0ZW5kcyBCYXNlUmVxdWVzdCB7XG4gIHBob25lX251bWJlcj86IHN0cmluZ1xuICBlbWFpbD86IHN0cmluZ1xuXG4gIHZlcmlmaWNhdGlvbl9jb2RlPzogc3RyaW5nXG4gIHZlcmlmaWNhdGlvbl90b2tlbj86IHN0cmluZ1xuICBwcm92aWRlcl90b2tlbj86IHN0cmluZ1xuXG4gIHBhc3N3b3JkPzogc3RyaW5nXG4gIG5hbWU/OiBzdHJpbmdcbiAgZ2VuZGVyPzogc3RyaW5nXG4gIHBpY3R1cmU/OiBzdHJpbmdcbiAgbG9jYWxlPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0VmVyaWZpY2F0aW9uUmVxdWVzdCBleHRlbmRzIEJhc2VSZXF1ZXN0IHtcbiAgcGhvbmVfbnVtYmVyPzogc3RyaW5nXG4gIGVtYWlsPzogc3RyaW5nXG4gIHRhcmdldD86IHN0cmluZyB8ICdBTlknXG4gIHVzYWdlPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0VmVyaWZpY2F0aW9uUmVzcG9uc2Uge1xuICB2ZXJpZmljYXRpb25faWQ/OiBzdHJpbmdcbiAgaXNfdXNlcj86IGJvb2xlYW4gfCBmYWxzZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZlcmlmeVJlc3BvbnNlIHtcbiAgdmVyaWZpY2F0aW9uX3Rva2VuPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZ5UmVxdWVzdCBleHRlbmRzIEJhc2VSZXF1ZXN0IHtcbiAgdmVyaWZpY2F0aW9uX2NvZGU6IHN0cmluZ1xuICB2ZXJpZmljYXRpb25faWQ/OiBzdHJpbmdcbiAgdmVyaWZpY2F0aW9uX3Rva2VuPzogc3RyaW5nXG4gIHZlcnNpb24/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm92aWRlckJpbmRSZXF1ZXN0IHtcbiAgcHJvdmlkZXJfdG9rZW46IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdyYW50UHJvdmlkZXJUb2tlblJlcXVlc3QgZXh0ZW5kcyBCYXNlUmVxdWVzdCB7XG4gIHByb3ZpZGVyX2lkOiBzdHJpbmdcbiAgcHJvdmlkZXJfcmVkaXJlY3RfdXJpPzogc3RyaW5nXG4gIHByb3ZpZGVyX2NvZGU/OiBzdHJpbmdcbiAgcHJvdmlkZXJfYWNjZXNzX3Rva2VuPzogc3RyaW5nXG4gIHByb3ZpZGVyX2lkX3Rva2VuPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JhbnRQcm92aWRlclRva2VuUmVzcG9uc2Uge1xuICBwcm92aWRlcl90b2tlbjogc3RyaW5nXG4gIGV4cGlyZXNfaW46IG51bWJlclxuICBjb2RlPzogc3RyaW5nXG4gIGVycm9yX2NvZGU/OiBzdHJpbmdcbiAgcHJvdmlkZXJfcHJvZmlsZT86IFByb3ZpZGVyUHJvZmlsZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhdGNoUHJvdmlkZXJUb2tlblJlcXVlc3QgZXh0ZW5kcyBCYXNlUmVxdWVzdCB7XG4gIHByb3ZpZGVyX2lkPzogc3RyaW5nXG4gIHByb3ZpZGVyX3Rva2VuOiBzdHJpbmdcbiAgcHJvdmlkZXJfcGFyYW1zOiB7XG4gICAgZW5jcnlwdGVkRGF0YT86IHN0cmluZ1xuICAgIGl2Pzogc3RyaW5nXG4gICAgY29kZT86IHN0cmluZ1xuICAgIHByb3ZpZGVyX2NvZGVfdHlwZT86IHN0cmluZ1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF0Y2hQcm92aWRlclRva2VuUmVzcG9uc2Uge1xuICBwcm92aWRlcl90b2tlbjogc3RyaW5nXG4gIGV4cGlyZXNfaW46IG51bWJlclxuICBwcm92aWRlcl9wcm9maWxlOiBQcm92aWRlclByb2ZpbGVcbn1cblxuLy8gZXhwb3J0IGludGVyZmFjZSBHZW5Qcm92aWRlclJlZGlyZWN0VXJpUmVxdWVzdCB7XG4vLyAgIHByb3ZpZGVyX2lkOiBzdHJpbmc7XG4vLyAgIHByb3ZpZGVyX3JlZGlyZWN0X3VyaTogc3RyaW5nO1xuLy8gICBzdGF0ZTogc3RyaW5nO1xuLy8gICBvdGhlcl9wYXJhbXM/OiB7XG4vLyAgICAgc2lnbl9vdXRfdXJpPzogc3RyaW5nO1xuLy8gICB9O1xuLy8gfVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlblByb3ZpZGVyUmVkaXJlY3RVcmlSZXNwb25zZSB7XG4gIHVyaTogc3RyaW5nXG4gIHNpZ25vdXRfdXJpPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmluZFdpdGhQcm92aWRlclJlcXVlc3QgZXh0ZW5kcyBCYXNlUmVxdWVzdCB7XG4gIHByb3ZpZGVyX3Rva2VuOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCaW5kV2l0aFByb3ZpZGVyUmVxdWVzdCB7XG4gIHByb3ZpZGVyX3Rva2VuOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyUHJvZmlsZVByb3ZpZGVyIHtcbiAgaWQ/OiBzdHJpbmdcbiAgcHJvdmlkZXJfdXNlcl9pZD86IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclByb2ZpbGUge1xuICBuYW1lPzogc3RyaW5nXG4gIHBpY3R1cmU/OiBzdHJpbmdcbiAgdXNlcm5hbWU/OiBzdHJpbmdcbiAgZW1haWw/OiBzdHJpbmdcbiAgZW1haWxfdmVyaWZpZWQ/OiBib29sZWFuXG4gIHBob25lX251bWJlcj86IHN0cmluZ1xuICBwcm92aWRlcnM/OiBbVXNlclByb2ZpbGVQcm92aWRlcl1cbiAgZ2VuZGVyPzogc3RyaW5nXG4gIGJpcnRoZGF0ZT86IHN0cmluZ1xuICB6b25laW5mbz86IHN0cmluZ1xuICBsb2NhbGU/OiBzdHJpbmdcbiAgY3JlYXRlZF9mcm9tPzogc3RyaW5nXG4gIHN1Yj86IHN0cmluZ1xuICB1aWQ/OiBzdHJpbmdcbiAgYWRkcmVzcz86IHtcbiAgICBmb3JtYXR0ZWQ/OiBzdHJpbmdcbiAgICBzdHJlZXRfYWRkcmVzcz86IHN0cmluZ1xuICAgIGxvY2FsaXR5Pzogc3RyaW5nXG4gICAgcmVnaW9uPzogc3RyaW5nXG4gICAgcG9zdGFsX2NvZGU/OiBzdHJpbmdcbiAgICBjb3VudHJ5Pzogc3RyaW5nXG4gIH1cbiAgbmlja05hbWU/OiBzdHJpbmcgLy8gVE9ETzpcbiAgcHJvdmluY2U/OiBzdHJpbmcgLy8gVE9ETzpcbiAgY291bnRyeT86IHN0cmluZyAvLyBUT0RPOlxuICBjaXR5Pzogc3RyaW5nIC8vIFRPRE86XG59XG5cbmV4cG9ydCB0eXBlIFVzZXJJbmZvID0gVXNlclByb2ZpbGVcblxuZXhwb3J0IGludGVyZmFjZSBQcm92aWRlclByb2ZpbGUge1xuICBwcm92aWRlcl9pZDogc3RyaW5nXG4gIHBob25lX251bWJlcj86IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nXG4gIHBpY3R1cmU/OiBzdHJpbmdcbiAgZW1haWw/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc0J5UHJvdmlkZXJSZXF1ZXN0IHtcbiAgcHJvdmlkZXJfdG9rZW46IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdyYW50VG9rZW5SZXF1ZXN0IGV4dGVuZHMgQmFzZVJlcXVlc3Qge1xuICBjbGllbnRfc2VjcmV0Pzogc3RyaW5nXG4gIGNvZGU/OiBzdHJpbmdcbiAgZ3JhbnRfdHlwZT86IHN0cmluZ1xuICByZWRpcmVjdF91cmk/OiBzdHJpbmdcbiAgbm9uY2U/OiBzdHJpbmdcbiAgcmVmcmVzaF90b2tlbj86IHN0cmluZ1xuICBzY29wZT86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVuYmluZFByb3ZpZGVyUmVxdWVzdCBleHRlbmRzIEJhc2VSZXF1ZXN0IHtcbiAgcHJvdmlkZXJfaWQ6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJpbmRQaG9uZVJlcXVlc3QgZXh0ZW5kcyBCYXNlUmVxdWVzdCB7XG4gIHBob25lX251bWJlcjogc3RyaW5nXG4gIHN1ZG9fdG9rZW46IHN0cmluZ1xuICB2ZXJpZmljYXRpb25fdG9rZW46IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldFBhc3N3b3JkUmVxdWVzdCBleHRlbmRzIEJhc2VSZXF1ZXN0IHtcbiAgbmV3X3Bhc3N3b3JkOiBzdHJpbmdcbiAgc3Vkb190b2tlbjogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlQmluZGVkUHJvdmlkZXJSZXF1ZXN0IGV4dGVuZHMgQmFzZVJlcXVlc3Qge1xuICB0cmFuc190b2tlbjogc3RyaW5nXG4gIHByb3ZpZGVyX2lkOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVVzZXJQcm9maWxlUmVxIGV4dGVuZHMgQmFzZVJlcXVlc3Qge1xuICBhcHBlbmRlZF9wYXJhbXM6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25JbldpdGhQcm92aWRlclJlcXVlc3Qge1xuICBwcm92aWRlcl90b2tlbjogc3RyaW5nXG4gIHByb3ZpZGVyX2lkPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbkluQ3VzdG9tUmVxdWVzdCB7XG4gIHByb3ZpZGVyX2lkPzogc3RyaW5nXG4gIHRpY2tldDogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnblVwUmVxdWVzdCB7XG4gIHBob25lX251bWJlcj86IHN0cmluZ1xuICBlbWFpbD86IHN0cmluZ1xuXG4gIHZlcmlmaWNhdGlvbl9jb2RlPzogc3RyaW5nXG4gIHZlcmlmaWNhdGlvbl90b2tlbj86IHN0cmluZ1xuICBwcm92aWRlcl90b2tlbj86IHN0cmluZ1xuXG4gIHVzZXJuYW1lPzogc3RyaW5nXG4gIHBhc3N3b3JkPzogc3RyaW5nXG4gIG5hbWU/OiBzdHJpbmdcbiAgZ2VuZGVyPzogc3RyaW5nXG4gIHBpY3R1cmU/OiBzdHJpbmdcbiAgbG9jYWxlPzogc3RyaW5nXG5cbiAgYW5vbnltb3VzX3Rva2VuPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0VmVyaWZpY2F0aW9uUmVxdWVzdCB7XG4gIHBob25lX251bWJlcj86IHN0cmluZ1xuICBlbWFpbD86IHN0cmluZ1xuICAvLyDlj6/pgIkgQU5Z77yMVVNFUu+8jE5PVF9VU0VSLCBDVVJfVVNFUjtcbiAgdGFyZ2V0Pzogc3RyaW5nIHwgJ0FOWSdcbiAgdXNhZ2U/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRWZXJpZmljYXRpb25SZXNwb25zZSB7XG4gIHZlcmlmaWNhdGlvbl9pZD86IHN0cmluZ1xuICBpc191c2VyPzogYm9vbGVhbiB8IGZhbHNlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZ5UmVzcG9uc2Uge1xuICB2ZXJpZmljYXRpb25fdG9rZW4/OiBzdHJpbmdcbiAgZXhwaXJlc19pbjogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZ5UmVxdWVzdCB7XG4gIHZlcmlmaWNhdGlvbl9jb2RlOiBzdHJpbmdcbiAgdmVyaWZpY2F0aW9uX2lkPzogc3RyaW5nXG4gIHZlcmlmaWNhdGlvbl90b2tlbj86IHN0cmluZ1xuICB2ZXJzaW9uPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZXJCaW5kUmVxdWVzdCB7XG4gIHByb3ZpZGVyX3Rva2VuOiBzdHJpbmdcbiAgZXhwaXJlc19pbjogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JhbnRQcm92aWRlclRva2VuUmVxdWVzdCB7XG4gIHByb3ZpZGVyX2lkOiBzdHJpbmdcbiAgcHJvdmlkZXJfcmVkaXJlY3RfdXJpPzogc3RyaW5nXG4gIHByb3ZpZGVyX2NvZGU/OiBzdHJpbmdcbiAgcHJvdmlkZXJfYWNjZXNzX3Rva2VuPzogc3RyaW5nXG4gIHByb3ZpZGVyX2lkX3Rva2VuPzogc3RyaW5nXG4gIHByb3ZpZGVyX3BhcmFtcz86IHtcbiAgICBwcm92aWRlcl9jb2RlX3R5cGU/OiBzdHJpbmdcbiAgICBhcHBpZD86IHN0cmluZ1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF0Y2hQcm92aWRlclRva2VuUmVxdWVzdCB7XG4gIHByb3ZpZGVyX3Rva2VuOiBzdHJpbmdcbiAgcHJvdmlkZXJfaWQ/OiBzdHJpbmdcbiAgcHJvdmlkZXJfcGFyYW1zOiB7XG4gICAgZW5jcnlwdGVkRGF0YT86IHN0cmluZ1xuICAgIGl2Pzogc3RyaW5nXG4gICAgY29kZT86IHN0cmluZ1xuICAgIHByb3ZpZGVyX2NvZGVfdHlwZT86IHN0cmluZ1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF0Y2hQcm92aWRlclRva2VuUmVzcG9uc2Uge1xuICBwcm92aWRlcl90b2tlbjogc3RyaW5nXG4gIGV4cGlyZXNfaW46IG51bWJlclxuICBwcm92aWRlcl9wcm9maWxlOiBQcm92aWRlclByb2ZpbGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZW5Qcm92aWRlclJlZGlyZWN0VXJpUmVxdWVzdCB7XG4gIHByb3ZpZGVyX2lkOiBzdHJpbmdcbiAgcmVkaXJlY3RfdXJpOiBzdHJpbmdcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBwcm92aWRlcl9yZWRpcmVjdF91cmk/OiBzdHJpbmdcbiAgc3RhdGU6IHN0cmluZ1xuICBzY29wZT86IHN0cmluZ1xuICByZXNwb25zZV90eXBlPzogc3RyaW5nXG4gIG90aGVyX3BhcmFtcz86IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmdcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlblByb3ZpZGVyUmVkaXJlY3RVcmlSZXNwb25zZSB7XG4gIHVyaTogc3RyaW5nXG4gIHNpZ25vdXRfdXJpPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmluZFdpdGhQcm92aWRlclJlcXVlc3Qge1xuICBwcm92aWRlcl90b2tlbjogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmluZFdpdGhQcm92aWRlclJlcXVlc3Qge1xuICBwcm92aWRlcl90b2tlbjogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclByb2ZpbGVQcm92aWRlciB7XG4gIGlkPzogc3RyaW5nXG4gIHByb3ZpZGVyX3VzZXJfaWQ/OiBzdHJpbmdcbiAgbmFtZT86IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgUHJvZmlsZUdyb3VwIHtcbiAgaWQ6IHN0cmluZ1xuICBleHBpcmVzX2F0Pzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclByb2ZpbGUge1xuICBzdWI/OiBzdHJpbmdcbiAgbmFtZT86IHN0cmluZ1xuICBwaWN0dXJlPzogc3RyaW5nXG4gIHVzZXJuYW1lPzogc3RyaW5nXG4gIGVtYWlsPzogc3RyaW5nXG4gIGVtYWlsX3ZlcmlmaWVkPzogYm9vbGVhblxuICBwaG9uZV9udW1iZXI/OiBzdHJpbmdcbiAgZ3JvdXBzPzogW1Byb2ZpbGVHcm91cF1cbiAgcHJvdmlkZXJzPzogW1VzZXJQcm9maWxlUHJvdmlkZXJdXG4gIGdlbmRlcj86IHN0cmluZ1xuICBiaXJ0aGRhdGU/OiBzdHJpbmdcbiAgem9uZWluZm8/OiBzdHJpbmdcbiAgbG9jYWxlPzogc3RyaW5nXG4gIGNyZWF0ZWRfZnJvbT86IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgVXNlclByb3ZpZGVyIHtcbiAgaWQ6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgcHJvdmlkZXJfdXNlcl9uYW1lPzogc3RyaW5nXG4gIGJpbmQ6IGJvb2xlYW5cbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZXJzUmVzcG9uc2Uge1xuICB0b3RhbDogbnVtYmVyXG4gIGRhdGE6IFtVc2VyUHJvdmlkZXJdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZXJQcm9maWxlIHtcbiAgcHJvdmlkZXJfaWQ6IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nXG4gIHBpY3R1cmU/OiBzdHJpbmdcbiAgcGhvbmVfbnVtYmVyPzogc3RyaW5nXG4gIGVtYWlsPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNCeVByb3ZpZGVyUmVxdWVzdCB7XG4gIHByb3ZpZGVyX3Rva2VuOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcmFudFRva2VuUmVxdWVzdCB7XG4gIGNsaWVudF9zZWNyZXQ/OiBzdHJpbmdcbiAgY29kZT86IHN0cmluZ1xuICBncmFudF90eXBlPzogc3RyaW5nXG4gIHJlZGlyZWN0X3VyaT86IHN0cmluZ1xuICBub25jZT86IHN0cmluZ1xuICByZWZyZXNoX3Rva2VuPzogc3RyaW5nXG4gIHVzZXJuYW1lPzogc3RyaW5nXG4gIHBhc3N3b3JkPzogc3RyaW5nXG4gIHNjb3BlPzogc3RyaW5nXG4gIGNvZGVfdmVyaWZpZXI/OiBzdHJpbmdcbiAgZGV2aWNlX2NvZGU/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVbmJpbmRQcm92aWRlclJlcXVlc3Qge1xuICBwcm92aWRlcl9pZDogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tQYXNzd29yZFJlcXVlc3QgZXh0ZW5kcyBCYXNlUmVxdWVzdCB7XG4gIHBhc3N3b3JkOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFZGl0Q29udGFjdFJlcXVlc3Qge1xuICBwaG9uZV9udW1iZXI/OiBzdHJpbmdcbiAgZW1haWw/OiBzdHJpbmdcbiAgc3Vkb190b2tlbjogc3RyaW5nXG4gIHZlcmlmaWNhdGlvbl90b2tlbjogc3RyaW5nXG4gIC8vIOWGsueqgeino+WGs+aWueahiFxuICAvLyDlj6/pgInvvJpERUZBVUxU77yMIOm7mOiupOino+WGs+aWueahiO+8muaPkOekuueUqOaIt+ivpeaJi+acuuWPt+W3suiiq+WFtuS7luS6uue7keWumlxuICAvLyAgICAgIERFTEVURV9BQ0NPVU5UX1RSQU5TRkVS77yM5qCH6K6w5Y6f5p2l55qE6LSm5Y+35Li65bey5rOo6ZSA77yM5bm25bCG5omL5py65o2i57uR57uZ6Ieq5bexXG4gIC8vICAgICBUUkFOU0ZFUiDku4XmjaLnu5HmiYvmnLrlj7fvvIzkuI3ms6jplIDljp/mnInotKblj7fjgILvvIjljp/mnInotKblj7fml6Dms5XnmbvlvZXmg4XlhrXkuIvvvIzliJnoh6rliqjmoIforrDkuLrms6jplIDvvIlcbiAgY29uZmxpY3RfcmVzb2x1dGlvbj86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJpbmRQaG9uZVJlcXVlc3Qge1xuICBwaG9uZV9udW1iZXI6IHN0cmluZ1xuICBzdWRvX3Rva2VuOiBzdHJpbmdcbiAgdmVyaWZpY2F0aW9uX3Rva2VuOiBzdHJpbmdcbiAgY29uZmxpY3RfcmVzb2x1dGlvbjogc3RyaW5nXG4gIC8vIDEuIERFRkFVTFQgMCwg6buY6K6k5o+Q56S655So5oi35omL5py65Y+35bey6KKr57uR5a6aXG4gIC8vIDIuIERFTEVURV9BQ0NPVU5UX1RSQU5TRkVSIDEsIOagh+iusOWOn+i0puWPt+W3suiiq+azqOmUgO+8jOW5tuWwhuaJi+acuuaNoue7kee7meiHquW3sVxuICAvLyAzLiBUUkFOU0ZFUiAyLCDku4XmjaLnu5HmiYvmnLrlj7fvvIzkuI3ms6jplIDljp/mnInotKblj7fvvIjmjaLnu5HlkI7ljp/otKblj7fml6Dms5XnmbvlvZXml7bvvIzliJnoh6rliqjms6jplIDljp/otKblj7fvvIlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCaW5kRW1haWxSZXF1ZXN0IHtcbiAgZW1haWw6IHN0cmluZ1xuICBzdWRvX3Rva2VuOiBzdHJpbmdcbiAgdmVyaWZpY2F0aW9uX3Rva2VuOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXRQYXNzd29yZFJlcXVlc3Qge1xuICBuZXdfcGFzc3dvcmQ6IHN0cmluZ1xuICBzdWRvX3Rva2VuOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXRQYXNzd29yZFJlcXVlc3Qge1xuICBuZXdfcGFzc3dvcmQ6IHN0cmluZ1xuICBzdWRvX3Rva2VuOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVQYXNzd29yZFJlcXVlc3Qge1xuICBvbGRfcGFzc3dvcmQ6IHN0cmluZ1xuICBuZXdfcGFzc3dvcmQ6IHN0cmluZ1xufVxuXG4vLyBwYXNzd29yZCDlkowgdmVyaWZpY2F0aW9uX3Rva2VuIOiAjOmAieS4gO+8jOWmguaenOe7keWumuS6huaJi+acuuWPt++8jOWImeW/hemhu+S9v+eUqHZlcmlmaWNhdGlvbl90b2tlbiDov5vooYxzdWRvXG5leHBvcnQgaW50ZXJmYWNlIFN1ZG9SZXF1ZXN0IHtcbiAgcGFzc3dvcmQ/OiBzdHJpbmdcbiAgdmVyaWZpY2F0aW9uX3Rva2VuPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Vkb1Jlc3BvbnNlIHtcbiAgc3Vkb190b2tlbj86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhTdWRvUmVxdWVzdCB7XG4gIHN1ZG9fdG9rZW46IHN0cmluZ1xuICB2ZXJzaW9uPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlQm91bmRQcm92aWRlclJlcXVlc3Qge1xuICB0cmFuc190b2tlbjogc3RyaW5nXG4gIHByb3ZpZGVyX2lkOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VCb3VuZFByb3ZpZGVyUmVzcG9uc2Uge1xuICBjbGllbnRfaWQ6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5VXNlclByb2ZpbGVSZXF1ZXN0IHtcbiAgaWQ/OiBbc3RyaW5nXVxuICB1c2VybmFtZT86IHN0cmluZ1xuICBlbWFpbD86IHN0cmluZ1xuICBwaG9uZV9udW1iZXI/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVVzZXJQcm9maWxlUmVzcG9uc2Uge1xuICB0b3RhbDogbnVtYmVyXG4gIGRhdGE/OiBbU2ltcGxlVXNlclByb2ZpbGVdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzZXRQYXNzd29yZFJlcXVlc3QgZXh0ZW5kcyBCYXNlUmVxdWVzdCB7XG4gIGVtYWlsOiBzdHJpbmdcbiAgcGhvbmVfbnVtYmVyOiBzdHJpbmdcbiAgbmV3X3Bhc3N3b3JkOiBzdHJpbmdcbiAgdmVyaWZpY2F0aW9uX3Rva2VuOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXZpY2VBdXRob3JpemVSZXF1ZXN0IGV4dGVuZHMgQmFzZVJlcXVlc3Qge1xuICBzY29wZT86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhvcml6ZVJlcXVlc3QgZXh0ZW5kcyBCYXNlUmVxdWVzdCB7XG4gIHJlc3BvbnNlX3R5cGU/OiBzdHJpbmdcbiAgcmVkaXJlY3RfdXJpPzogc3RyaW5nXG4gIHN0YXRlPzogc3RyaW5nXG4gIHNjb3BlPzogc3RyaW5nXG4gIGNvZGVfY2hhbGxlbmdlPzogc3RyaW5nXG4gIGNvZGVfY2hhbGxlbmdlX21ldGhvZD86IHN0cmluZ1xuICBzaWduX291dF91cmk/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRob3JpemVSZXNwb25zZSB7XG4gIGNvZGU/OiBzdHJpbmdcbiAgYWNjZXNzX3Rva2VuPzogc3RyaW5nXG4gIGlkX3Rva2VuPzogc3RyaW5nXG4gIHRva2VuX3R5cGU/OiBzdHJpbmdcbiAgc2NvcGU/OiBzdHJpbmdcbiAgc3RhdGU/OiBzdHJpbmdcbiAgZXhwaXJlc19pbj86IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhvcml6ZUluZm9SZXF1ZXN0IGV4dGVuZHMgQmFzZVJlcXVlc3Qge1xuICByZXNwb25zZV90eXBlPzogc3RyaW5nXG4gIHJlZGlyZWN0X3VyaT86IHN0cmluZ1xuICBzdGF0ZT86IHN0cmluZ1xuICBzY29wZT86IHN0cmluZ1xuICBzaWduX291dF91cmk/OiBzdHJpbmdcbiAgbG9jYWxlPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGUge1xuICBpZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICBwaWN0dXJlPzogc3RyaW5nXG4gIHVybD86IHN0cmluZ1xuICBjaGlsZHJlbj86IFNjb3BlW11cbn1cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yaXplSW5mb1Jlc3BvbnNlIHtcbiAgY2xpZW50OiB7XG4gICAgaWQ6IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gICAgcGljdHVyZT86IHN0cmluZ1xuICAgIHVybD86IHN0cmluZ1xuICB9XG4gIHNjb3Blcz86IFNjb3BlW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXZva2VEZXZpY2VSZXF1ZXN0IHtcbiAgZGV2aWNlX2lkOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWdub3V0UmVxdWVzdCB7XG4gIHJlZGlyZWN0X3VyaT86IHN0cmluZ1xuICBzdGF0ZT86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25vdXRSZXBvbnNlIHtcbiAgcmVkaXJlY3RfdXJpPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yaXplRGV2aWNlUmVxdWVzdCBleHRlbmRzIEJhc2VSZXF1ZXN0IHtcbiAgdXNlcl9jb2RlOiBzdHJpbmdcbiAgc2NvcGU/OiBzdHJpbmdcbiAgc3RhdGU/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXZpY2VBdXRob3JpemVSZXNwb25zZSB7XG4gIGRldmljZV9jb2RlOiBzdHJpbmdcbiAgdXNlcl9jb2RlPzogc3RyaW5nXG4gIGV4cGlyZXNfaW46IG51bWJlclxuICBpbnRlcnZhbDogbnVtYmVyXG4gIHZlcmlmaWNhdGlvbl91cmk/OiBzdHJpbmdcbiAgdmVyaWZpY2F0aW9uX3VyaV9jb21wbGV0ZT86IHN0cmluZ1xufVxuXG4vLyDnroDljJbniYjnlKjmiLfkv6Hmga9cbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxlVXNlclByb2ZpbGUge1xuICBzdWI6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgcGljdHVyZT86IHN0cmluZ1xuICBnZW5kZXI/OiBzdHJpbmdcbiAgbG9jYWxlPzogc3RyaW5nXG4gIGVtYWlsPzogc3RyaW5nXG4gIHBob25lX251bWJlcj86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrVXNlcm5hbWVSZXF1ZXN0IHtcbiAgdXNlcm5hbWU6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrSWZVc2VyRXhpc3RSZXF1ZXN0IHtcbiAgdXNlcm5hbWU6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrSWZVc2VyRXhpc3RSZXNwb25zZSB7XG4gIGV4aXN0OiBib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljS2V5IHtcbiAgcHVibGljX2tleTogc3RyaW5nIC8vIOWKoOWvhueahOWFrOmSpVxuICBwdWJsaWNfa2V5X3RodW1icHJpbnQ6IHN0cmluZyAvLyDliqDlr4bnmoTlhazpkqXmjIfnurlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbmNyeXB0UGFyYW1zIHtcbiAgaXNFbmNyeXB0PzogYm9vbGVhbiAvLyDmmK/lkKbpnIDopoHliqDlr4ZcbiAgcHVibGljX2tleV90aHVtYnByaW50Pzogc3RyaW5nIC8vIOWKoOWvhueahOWFrOmSpeaMh+e6uVxuICBwYXJhbXM/OiBzdHJpbmcgLy8g5Yqg5a+G55qE5pWw5o2uXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZXJTdWJUeXBlIHtcbiAgaWQ6IHN0cmluZ1xuICBwcm92aWRlcl9zdWJfdHlwZTogJ05PX0FVVEhfTE9HSU4nIHwgJycgLy8gTk9fQVVUSF9MT0dJTi3lhY3lr4bnmbvlvZVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRNaW5pUHJvZ3JhbVFyQ29kZVJlcXVlc3Qge1xuICBlbnZJZDogc3RyaW5nXG4gIHd4QXBwSWQ6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldE1pbmlQcm9ncmFtUXJDb2RlUmVzcG9uc2Uge1xuICBxcl9jb2RlOiBzdHJpbmdcbiAgcXJfY29kZV9pZDogc3RyaW5nXG4gIGV4cGlyZXNfaW46IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldE1pbmlQcm9ncmFtUXJDb2RlU3RhdHVzUmVxdWVzdCB7XG4gIHFyQ29kZUlkOiBzdHJpbmdcbiAgZW52SWQ6IHN0cmluZ1xuICB3eEFwcElkOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRNaW5pUHJvZ3JhbVFyQ29kZVN0YXR1c1Jlc3BvbnNlIHtcbiAgc3RhdHVzOiBzdHJpbmdcbiAgcHJvdmlkZXJfdG9rZW46IHN0cmluZ1xuICBleHBpcmVzX2luOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb2RpZnlVc2VyQmFzaWNJbmZvUmVxdWVzdCB7XG4gIHVzZXJfaWQ/OiBzdHJpbmdcbiAgbmlja25hbWU/OiBzdHJpbmdcbiAgdXNlcm5hbWU/OiBzdHJpbmdcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgYXZhdGFyX3VybD86IHN0cmluZ1xuICBnZW5kZXI/OiAnTUFMRScgfCAnRkVNQUxFJ1xuICBwYXNzd29yZD86IHN0cmluZyAvLyDml6flr4bnoIFcbiAgbmV3X3Bhc3N3b3JkPzogc3RyaW5nIC8vIOaWsOWvhueggVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldFVzZXJCZWhhdmlvckxvZyB7XG4gIHR5cGU6ICdMT0dJTicgfCAnTU9ESUZZJyAvLyBMT0dJTi3nmbvlvZXml6Xlv5fvvIxNT0RJRlkt5L+u5pS555m75b2V5pa55byP5pel5b+XXG4gIGxpbWl0OiBudW1iZXIgLy8g5q+P6aG15p+l6K+i5pWw6YePXG4gIHBhZ2VfdG9rZW4/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRVc2VyQmVoYXZpb3JMb2dSZXMge1xuICBpZDogc3RyaW5nXG4gIGlwOiBzdHJpbmdcbiAgdXNlcl9hZ2VudDogc3RyaW5nXG4gIGNsaWVudF9pZDogc3RyaW5nXG4gIGRldmljZV9pZDogc3RyaW5nXG4gIGNyZWF0ZWRfYXQ6IHN0cmluZ1xuICBtZXRhOiB7IGZyb206IHN0cmluZyB9XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBNb2RpZnlQYXNzd29yZFdpdGhvdXRMb2dpblJlcXVlc3Qge1xuICB1c2VybmFtZT86IHN0cmluZ1xuICBwYXNzd29yZD86IHN0cmluZyAvLyDml6flr4bnoIFcbiAgbmV3X3Bhc3N3b3JkPzogc3RyaW5nIC8vIOaWsOWvhueggVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvRGVmYXVsdExvZ2luUGFnZSB7XG4gIGNvbmZpZ192ZXJzaW9uPzogJ2VudicgfCBzdHJpbmc7IC8vIOeZu+W9lemFjee9ru+8jOm7mOiupGVudu+8iOaJmOeuoeeZu+W9lemhte+8iVxuICByZWRpcmVjdF91cmk/OiBzdHJpbmc7IC8vIOeZu+W9leWQjuWbnuiwg+WcsOWdgO+8jOm7mOiupOW9k+WJjeWcsOWdgFxuICBhcHBfaWQ/OiBzdHJpbmc7IC8vIOW6lOeUqGlk77yM5omY566h55m75b2V6aG15LiN6ZyA6KaB5LygXG4gIHF1ZXJ5PzogUmVjb3JkPHN0cmluZywgYW55PiAvLyDot7PovaznmbvlvZXpk77mjqXmkLrluKbnmoToh6rlrprkuYnlj4LmlbDvvIzkvJrmi7zmjqXlnKjpk77mjqXlkI7pnaJcbn1cbiJdfQ==
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F1dGgvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbnRlcmZhY2UgQmFzZVJlcXVlc3Qge1xuICBjbGllbnRfaWQ/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgR2V0Q3VzdG9tU2lnblRpY2tldEZuID0gKCkgPT4gUHJvbWlzZTxzdHJpbmc+XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbkluUmVxdWVzdCBleHRlbmRzIEJhc2VSZXF1ZXN0LCBFbmNyeXB0UGFyYW1zIHtcbiAgdXNlcm5hbWU/OiBzdHJpbmdcbiAgcGFzc3dvcmQ/OiBzdHJpbmdcbiAgdmVyaWZpY2F0aW9uX3Rva2VuPzogc3RyaW5nXG4gIHZlcnNpb24/OiBzdHJpbmdcbiAgcXVlcnk/OiB7IHdpdGhfZGVwYXJ0bWVudD86IGJvb2xlYW47IHdpdGhfcm9sZT86IGJvb2xlYW4gfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25JbldpdGhQcm92aWRlclJlcXVlc3QgZXh0ZW5kcyBCYXNlUmVxdWVzdCB7XG4gIHByb3ZpZGVyX3Rva2VuOiBzdHJpbmdcbiAgdmVyc2lvbj86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25VcFJlcXVlc3QgZXh0ZW5kcyBCYXNlUmVxdWVzdCB7XG4gIHBob25lX251bWJlcj86IHN0cmluZ1xuICBlbWFpbD86IHN0cmluZ1xuXG4gIHZlcmlmaWNhdGlvbl9jb2RlPzogc3RyaW5nXG4gIHZlcmlmaWNhdGlvbl90b2tlbj86IHN0cmluZ1xuICBwcm92aWRlcl90b2tlbj86IHN0cmluZ1xuXG4gIHBhc3N3b3JkPzogc3RyaW5nXG4gIG5hbWU/OiBzdHJpbmdcbiAgZ2VuZGVyPzogc3RyaW5nXG4gIHBpY3R1cmU/OiBzdHJpbmdcbiAgbG9jYWxlPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0VmVyaWZpY2F0aW9uUmVxdWVzdCBleHRlbmRzIEJhc2VSZXF1ZXN0IHtcbiAgcGhvbmVfbnVtYmVyPzogc3RyaW5nXG4gIGVtYWlsPzogc3RyaW5nXG4gIHRhcmdldD86IHN0cmluZyB8ICdBTlknXG4gIHVzYWdlPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0VmVyaWZpY2F0aW9uUmVzcG9uc2Uge1xuICB2ZXJpZmljYXRpb25faWQ/OiBzdHJpbmdcbiAgaXNfdXNlcj86IGJvb2xlYW4gfCBmYWxzZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZlcmlmeVJlc3BvbnNlIHtcbiAgdmVyaWZpY2F0aW9uX3Rva2VuPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZ5UmVxdWVzdCBleHRlbmRzIEJhc2VSZXF1ZXN0IHtcbiAgdmVyaWZpY2F0aW9uX2NvZGU6IHN0cmluZ1xuICB2ZXJpZmljYXRpb25faWQ/OiBzdHJpbmdcbiAgdmVyaWZpY2F0aW9uX3Rva2VuPzogc3RyaW5nXG4gIHZlcnNpb24/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm92aWRlckJpbmRSZXF1ZXN0IHtcbiAgcHJvdmlkZXJfdG9rZW46IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdyYW50UHJvdmlkZXJUb2tlblJlcXVlc3QgZXh0ZW5kcyBCYXNlUmVxdWVzdCB7XG4gIHByb3ZpZGVyX2lkOiBzdHJpbmdcbiAgcHJvdmlkZXJfcmVkaXJlY3RfdXJpPzogc3RyaW5nXG4gIHByb3ZpZGVyX2NvZGU/OiBzdHJpbmdcbiAgcHJvdmlkZXJfYWNjZXNzX3Rva2VuPzogc3RyaW5nXG4gIHByb3ZpZGVyX2lkX3Rva2VuPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JhbnRQcm92aWRlclRva2VuUmVzcG9uc2Uge1xuICBwcm92aWRlcl90b2tlbjogc3RyaW5nXG4gIGV4cGlyZXNfaW46IG51bWJlclxuICBjb2RlPzogc3RyaW5nXG4gIGVycm9yX2NvZGU/OiBzdHJpbmdcbiAgcHJvdmlkZXJfcHJvZmlsZT86IFByb3ZpZGVyUHJvZmlsZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhdGNoUHJvdmlkZXJUb2tlblJlcXVlc3QgZXh0ZW5kcyBCYXNlUmVxdWVzdCB7XG4gIHByb3ZpZGVyX2lkPzogc3RyaW5nXG4gIHByb3ZpZGVyX3Rva2VuOiBzdHJpbmdcbiAgcHJvdmlkZXJfcGFyYW1zOiB7XG4gICAgZW5jcnlwdGVkRGF0YT86IHN0cmluZ1xuICAgIGl2Pzogc3RyaW5nXG4gICAgY29kZT86IHN0cmluZ1xuICAgIHByb3ZpZGVyX2NvZGVfdHlwZT86IHN0cmluZ1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF0Y2hQcm92aWRlclRva2VuUmVzcG9uc2Uge1xuICBwcm92aWRlcl90b2tlbjogc3RyaW5nXG4gIGV4cGlyZXNfaW46IG51bWJlclxuICBwcm92aWRlcl9wcm9maWxlOiBQcm92aWRlclByb2ZpbGVcbn1cblxuLy8gZXhwb3J0IGludGVyZmFjZSBHZW5Qcm92aWRlclJlZGlyZWN0VXJpUmVxdWVzdCB7XG4vLyAgIHByb3ZpZGVyX2lkOiBzdHJpbmc7XG4vLyAgIHByb3ZpZGVyX3JlZGlyZWN0X3VyaTogc3RyaW5nO1xuLy8gICBzdGF0ZTogc3RyaW5nO1xuLy8gICBvdGhlcl9wYXJhbXM/OiB7XG4vLyAgICAgc2lnbl9vdXRfdXJpPzogc3RyaW5nO1xuLy8gICB9O1xuLy8gfVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlblByb3ZpZGVyUmVkaXJlY3RVcmlSZXNwb25zZSB7XG4gIHVyaTogc3RyaW5nXG4gIHNpZ25vdXRfdXJpPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmluZFdpdGhQcm92aWRlclJlcXVlc3QgZXh0ZW5kcyBCYXNlUmVxdWVzdCB7XG4gIHByb3ZpZGVyX3Rva2VuOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCaW5kV2l0aFByb3ZpZGVyUmVxdWVzdCB7XG4gIHByb3ZpZGVyX3Rva2VuOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyUHJvZmlsZVByb3ZpZGVyIHtcbiAgaWQ/OiBzdHJpbmdcbiAgcHJvdmlkZXJfdXNlcl9pZD86IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclByb2ZpbGUge1xuICBuYW1lPzogc3RyaW5nXG4gIHBpY3R1cmU/OiBzdHJpbmdcbiAgdXNlcm5hbWU/OiBzdHJpbmdcbiAgZW1haWw/OiBzdHJpbmdcbiAgZW1haWxfdmVyaWZpZWQ/OiBib29sZWFuXG4gIHBob25lX251bWJlcj86IHN0cmluZ1xuICBwcm92aWRlcnM/OiBbVXNlclByb2ZpbGVQcm92aWRlcl1cbiAgZ2VuZGVyPzogc3RyaW5nXG4gIGJpcnRoZGF0ZT86IHN0cmluZ1xuICB6b25laW5mbz86IHN0cmluZ1xuICBsb2NhbGU/OiBzdHJpbmdcbiAgY3JlYXRlZF9mcm9tPzogc3RyaW5nXG4gIHN1Yj86IHN0cmluZ1xuICB1aWQ/OiBzdHJpbmdcbiAgYWRkcmVzcz86IHtcbiAgICBmb3JtYXR0ZWQ/OiBzdHJpbmdcbiAgICBzdHJlZXRfYWRkcmVzcz86IHN0cmluZ1xuICAgIGxvY2FsaXR5Pzogc3RyaW5nXG4gICAgcmVnaW9uPzogc3RyaW5nXG4gICAgcG9zdGFsX2NvZGU/OiBzdHJpbmdcbiAgICBjb3VudHJ5Pzogc3RyaW5nXG4gIH1cbiAgbmlja05hbWU/OiBzdHJpbmcgLy8gVE9ETzpcbiAgcHJvdmluY2U/OiBzdHJpbmcgLy8gVE9ETzpcbiAgY291bnRyeT86IHN0cmluZyAvLyBUT0RPOlxuICBjaXR5Pzogc3RyaW5nIC8vIFRPRE86XG59XG5cbmV4cG9ydCB0eXBlIFVzZXJJbmZvID0gVXNlclByb2ZpbGVcblxuZXhwb3J0IGludGVyZmFjZSBQcm92aWRlclByb2ZpbGUge1xuICBwcm92aWRlcl9pZDogc3RyaW5nXG4gIHBob25lX251bWJlcj86IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nXG4gIHBpY3R1cmU/OiBzdHJpbmdcbiAgZW1haWw/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc0J5UHJvdmlkZXJSZXF1ZXN0IHtcbiAgcHJvdmlkZXJfdG9rZW46IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdyYW50VG9rZW5SZXF1ZXN0IGV4dGVuZHMgQmFzZVJlcXVlc3Qge1xuICBjbGllbnRfc2VjcmV0Pzogc3RyaW5nXG4gIGNvZGU/OiBzdHJpbmdcbiAgZ3JhbnRfdHlwZT86IHN0cmluZ1xuICByZWRpcmVjdF91cmk/OiBzdHJpbmdcbiAgbm9uY2U/OiBzdHJpbmdcbiAgcmVmcmVzaF90b2tlbj86IHN0cmluZ1xuICBzY29wZT86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVuYmluZFByb3ZpZGVyUmVxdWVzdCBleHRlbmRzIEJhc2VSZXF1ZXN0IHtcbiAgcHJvdmlkZXJfaWQ6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJpbmRQaG9uZVJlcXVlc3QgZXh0ZW5kcyBCYXNlUmVxdWVzdCB7XG4gIHBob25lX251bWJlcjogc3RyaW5nXG4gIHN1ZG9fdG9rZW46IHN0cmluZ1xuICB2ZXJpZmljYXRpb25fdG9rZW46IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldFBhc3N3b3JkUmVxdWVzdCBleHRlbmRzIEJhc2VSZXF1ZXN0IHtcbiAgbmV3X3Bhc3N3b3JkOiBzdHJpbmdcbiAgc3Vkb190b2tlbjogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlQmluZGVkUHJvdmlkZXJSZXF1ZXN0IGV4dGVuZHMgQmFzZVJlcXVlc3Qge1xuICB0cmFuc190b2tlbjogc3RyaW5nXG4gIHByb3ZpZGVyX2lkOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVVzZXJQcm9maWxlUmVxIGV4dGVuZHMgQmFzZVJlcXVlc3Qge1xuICBhcHBlbmRlZF9wYXJhbXM6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25JbldpdGhQcm92aWRlclJlcXVlc3Qge1xuICBwcm92aWRlcl90b2tlbjogc3RyaW5nXG4gIHByb3ZpZGVyX2lkPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbkluQ3VzdG9tUmVxdWVzdCB7XG4gIHByb3ZpZGVyX2lkPzogc3RyaW5nXG4gIHRpY2tldDogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnblVwUmVxdWVzdCB7XG4gIHBob25lX251bWJlcj86IHN0cmluZ1xuICBlbWFpbD86IHN0cmluZ1xuXG4gIHZlcmlmaWNhdGlvbl9jb2RlPzogc3RyaW5nXG4gIHZlcmlmaWNhdGlvbl90b2tlbj86IHN0cmluZ1xuICBwcm92aWRlcl90b2tlbj86IHN0cmluZ1xuXG4gIHVzZXJuYW1lPzogc3RyaW5nXG4gIHBhc3N3b3JkPzogc3RyaW5nXG4gIG5hbWU/OiBzdHJpbmdcbiAgZ2VuZGVyPzogc3RyaW5nXG4gIHBpY3R1cmU/OiBzdHJpbmdcbiAgbG9jYWxlPzogc3RyaW5nXG5cbiAgYW5vbnltb3VzX3Rva2VuPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0VmVyaWZpY2F0aW9uUmVxdWVzdCB7XG4gIHBob25lX251bWJlcj86IHN0cmluZ1xuICBlbWFpbD86IHN0cmluZ1xuICAvLyDlj6/pgIkgQU5Z77yMVVNFUu+8jE5PVF9VU0VSLCBDVVJfVVNFUjtcbiAgdGFyZ2V0Pzogc3RyaW5nIHwgJ0FOWSdcbiAgdXNhZ2U/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRWZXJpZmljYXRpb25SZXNwb25zZSB7XG4gIHZlcmlmaWNhdGlvbl9pZD86IHN0cmluZ1xuICBpc191c2VyPzogYm9vbGVhbiB8IGZhbHNlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZ5UmVzcG9uc2Uge1xuICB2ZXJpZmljYXRpb25fdG9rZW4/OiBzdHJpbmdcbiAgZXhwaXJlc19pbjogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZ5UmVxdWVzdCB7XG4gIHZlcmlmaWNhdGlvbl9jb2RlOiBzdHJpbmdcbiAgdmVyaWZpY2F0aW9uX2lkPzogc3RyaW5nXG4gIHZlcmlmaWNhdGlvbl90b2tlbj86IHN0cmluZ1xuICB2ZXJzaW9uPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZXJCaW5kUmVxdWVzdCB7XG4gIHByb3ZpZGVyX3Rva2VuOiBzdHJpbmdcbiAgZXhwaXJlc19pbjogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JhbnRQcm92aWRlclRva2VuUmVxdWVzdCB7XG4gIHByb3ZpZGVyX2lkOiBzdHJpbmdcbiAgcHJvdmlkZXJfcmVkaXJlY3RfdXJpPzogc3RyaW5nXG4gIHByb3ZpZGVyX2NvZGU/OiBzdHJpbmdcbiAgcHJvdmlkZXJfYWNjZXNzX3Rva2VuPzogc3RyaW5nXG4gIHByb3ZpZGVyX2lkX3Rva2VuPzogc3RyaW5nXG4gIHByb3ZpZGVyX3BhcmFtcz86IHtcbiAgICBwcm92aWRlcl9jb2RlX3R5cGU/OiBzdHJpbmdcbiAgICBhcHBpZD86IHN0cmluZ1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF0Y2hQcm92aWRlclRva2VuUmVxdWVzdCB7XG4gIHByb3ZpZGVyX3Rva2VuOiBzdHJpbmdcbiAgcHJvdmlkZXJfaWQ/OiBzdHJpbmdcbiAgcHJvdmlkZXJfcGFyYW1zOiB7XG4gICAgZW5jcnlwdGVkRGF0YT86IHN0cmluZ1xuICAgIGl2Pzogc3RyaW5nXG4gICAgY29kZT86IHN0cmluZ1xuICAgIHByb3ZpZGVyX2NvZGVfdHlwZT86IHN0cmluZ1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF0Y2hQcm92aWRlclRva2VuUmVzcG9uc2Uge1xuICBwcm92aWRlcl90b2tlbjogc3RyaW5nXG4gIGV4cGlyZXNfaW46IG51bWJlclxuICBwcm92aWRlcl9wcm9maWxlOiBQcm92aWRlclByb2ZpbGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZW5Qcm92aWRlclJlZGlyZWN0VXJpUmVxdWVzdCB7XG4gIHByb3ZpZGVyX2lkOiBzdHJpbmdcbiAgcmVkaXJlY3RfdXJpOiBzdHJpbmdcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBwcm92aWRlcl9yZWRpcmVjdF91cmk/OiBzdHJpbmdcbiAgc3RhdGU6IHN0cmluZ1xuICBzY29wZT86IHN0cmluZ1xuICByZXNwb25zZV90eXBlPzogc3RyaW5nXG4gIG90aGVyX3BhcmFtcz86IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmdcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlblByb3ZpZGVyUmVkaXJlY3RVcmlSZXNwb25zZSB7XG4gIHVyaTogc3RyaW5nXG4gIHNpZ25vdXRfdXJpPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmluZFdpdGhQcm92aWRlclJlcXVlc3Qge1xuICBwcm92aWRlcl90b2tlbjogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmluZFdpdGhQcm92aWRlclJlcXVlc3Qge1xuICBwcm92aWRlcl90b2tlbjogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclByb2ZpbGVQcm92aWRlciB7XG4gIGlkPzogc3RyaW5nXG4gIHByb3ZpZGVyX3VzZXJfaWQ/OiBzdHJpbmdcbiAgbmFtZT86IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgUHJvZmlsZUdyb3VwIHtcbiAgaWQ6IHN0cmluZ1xuICBleHBpcmVzX2F0Pzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclByb2ZpbGUge1xuICBzdWI/OiBzdHJpbmdcbiAgbmFtZT86IHN0cmluZ1xuICBwaWN0dXJlPzogc3RyaW5nXG4gIHVzZXJuYW1lPzogc3RyaW5nXG4gIGVtYWlsPzogc3RyaW5nXG4gIGVtYWlsX3ZlcmlmaWVkPzogYm9vbGVhblxuICBwaG9uZV9udW1iZXI/OiBzdHJpbmdcbiAgZ3JvdXBzPzogW1Byb2ZpbGVHcm91cF1cbiAgcHJvdmlkZXJzPzogW1VzZXJQcm9maWxlUHJvdmlkZXJdXG4gIGdlbmRlcj86IHN0cmluZ1xuICBiaXJ0aGRhdGU/OiBzdHJpbmdcbiAgem9uZWluZm8/OiBzdHJpbmdcbiAgbG9jYWxlPzogc3RyaW5nXG4gIGNyZWF0ZWRfZnJvbT86IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgVXNlclByb3ZpZGVyIHtcbiAgaWQ6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgcHJvdmlkZXJfdXNlcl9uYW1lPzogc3RyaW5nXG4gIGJpbmQ6IGJvb2xlYW5cbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZXJzUmVzcG9uc2Uge1xuICB0b3RhbDogbnVtYmVyXG4gIGRhdGE6IFtVc2VyUHJvdmlkZXJdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZXJQcm9maWxlIHtcbiAgcHJvdmlkZXJfaWQ6IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nXG4gIHBpY3R1cmU/OiBzdHJpbmdcbiAgcGhvbmVfbnVtYmVyPzogc3RyaW5nXG4gIGVtYWlsPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNCeVByb3ZpZGVyUmVxdWVzdCB7XG4gIHByb3ZpZGVyX3Rva2VuOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcmFudFRva2VuUmVxdWVzdCB7XG4gIGNsaWVudF9zZWNyZXQ/OiBzdHJpbmdcbiAgY29kZT86IHN0cmluZ1xuICBncmFudF90eXBlPzogc3RyaW5nXG4gIHJlZGlyZWN0X3VyaT86IHN0cmluZ1xuICBub25jZT86IHN0cmluZ1xuICByZWZyZXNoX3Rva2VuPzogc3RyaW5nXG4gIHVzZXJuYW1lPzogc3RyaW5nXG4gIHBhc3N3b3JkPzogc3RyaW5nXG4gIHNjb3BlPzogc3RyaW5nXG4gIGNvZGVfdmVyaWZpZXI/OiBzdHJpbmdcbiAgZGV2aWNlX2NvZGU/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVbmJpbmRQcm92aWRlclJlcXVlc3Qge1xuICBwcm92aWRlcl9pZDogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tQYXNzd29yZFJlcXVlc3QgZXh0ZW5kcyBCYXNlUmVxdWVzdCB7XG4gIHBhc3N3b3JkOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFZGl0Q29udGFjdFJlcXVlc3Qge1xuICBwaG9uZV9udW1iZXI/OiBzdHJpbmdcbiAgZW1haWw/OiBzdHJpbmdcbiAgc3Vkb190b2tlbjogc3RyaW5nXG4gIHZlcmlmaWNhdGlvbl90b2tlbjogc3RyaW5nXG4gIC8vIOWGsueqgeino+WGs+aWueahiFxuICAvLyDlj6/pgInvvJpERUZBVUxU77yMIOm7mOiupOino+WGs+aWueahiO+8muaPkOekuueUqOaIt+ivpeaJi+acuuWPt+W3suiiq+WFtuS7luS6uue7keWumlxuICAvLyAgICAgIERFTEVURV9BQ0NPVU5UX1RSQU5TRkVS77yM5qCH6K6w5Y6f5p2l55qE6LSm5Y+35Li65bey5rOo6ZSA77yM5bm25bCG5omL5py65o2i57uR57uZ6Ieq5bexXG4gIC8vICAgICBUUkFOU0ZFUiDku4XmjaLnu5HmiYvmnLrlj7fvvIzkuI3ms6jplIDljp/mnInotKblj7fjgILvvIjljp/mnInotKblj7fml6Dms5XnmbvlvZXmg4XlhrXkuIvvvIzliJnoh6rliqjmoIforrDkuLrms6jplIDvvIlcbiAgY29uZmxpY3RfcmVzb2x1dGlvbj86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJpbmRQaG9uZVJlcXVlc3Qge1xuICBwaG9uZV9udW1iZXI6IHN0cmluZ1xuICBzdWRvX3Rva2VuOiBzdHJpbmdcbiAgdmVyaWZpY2F0aW9uX3Rva2VuOiBzdHJpbmdcbiAgY29uZmxpY3RfcmVzb2x1dGlvbjogc3RyaW5nXG4gIC8vIDEuIERFRkFVTFQgMCwg6buY6K6k5o+Q56S655So5oi35omL5py65Y+35bey6KKr57uR5a6aXG4gIC8vIDIuIERFTEVURV9BQ0NPVU5UX1RSQU5TRkVSIDEsIOagh+iusOWOn+i0puWPt+W3suiiq+azqOmUgO+8jOW5tuWwhuaJi+acuuaNoue7kee7meiHquW3sVxuICAvLyAzLiBUUkFOU0ZFUiAyLCDku4XmjaLnu5HmiYvmnLrlj7fvvIzkuI3ms6jplIDljp/mnInotKblj7fvvIjmjaLnu5HlkI7ljp/otKblj7fml6Dms5XnmbvlvZXml7bvvIzliJnoh6rliqjms6jplIDljp/otKblj7fvvIlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCaW5kRW1haWxSZXF1ZXN0IHtcbiAgZW1haWw6IHN0cmluZ1xuICBzdWRvX3Rva2VuOiBzdHJpbmdcbiAgdmVyaWZpY2F0aW9uX3Rva2VuOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXRQYXNzd29yZFJlcXVlc3Qge1xuICBuZXdfcGFzc3dvcmQ6IHN0cmluZ1xuICBzdWRvX3Rva2VuOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXRQYXNzd29yZFJlcXVlc3Qge1xuICBuZXdfcGFzc3dvcmQ6IHN0cmluZ1xuICBzdWRvX3Rva2VuOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVQYXNzd29yZFJlcXVlc3Qge1xuICBvbGRfcGFzc3dvcmQ6IHN0cmluZ1xuICBuZXdfcGFzc3dvcmQ6IHN0cmluZ1xufVxuXG4vLyBwYXNzd29yZCDlkowgdmVyaWZpY2F0aW9uX3Rva2VuIOiAjOmAieS4gO+8jOWmguaenOe7keWumuS6huaJi+acuuWPt++8jOWImeW/hemhu+S9v+eUqHZlcmlmaWNhdGlvbl90b2tlbiDov5vooYxzdWRvXG5leHBvcnQgaW50ZXJmYWNlIFN1ZG9SZXF1ZXN0IHtcbiAgcGFzc3dvcmQ/OiBzdHJpbmdcbiAgdmVyaWZpY2F0aW9uX3Rva2VuPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Vkb1Jlc3BvbnNlIHtcbiAgc3Vkb190b2tlbj86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhTdWRvUmVxdWVzdCB7XG4gIHN1ZG9fdG9rZW46IHN0cmluZ1xuICB2ZXJzaW9uPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlQm91bmRQcm92aWRlclJlcXVlc3Qge1xuICB0cmFuc190b2tlbjogc3RyaW5nXG4gIHByb3ZpZGVyX2lkOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VCb3VuZFByb3ZpZGVyUmVzcG9uc2Uge1xuICBjbGllbnRfaWQ6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5VXNlclByb2ZpbGVSZXF1ZXN0IHtcbiAgaWQ/OiBbc3RyaW5nXVxuICB1c2VybmFtZT86IHN0cmluZ1xuICBlbWFpbD86IHN0cmluZ1xuICBwaG9uZV9udW1iZXI/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVVzZXJQcm9maWxlUmVzcG9uc2Uge1xuICB0b3RhbDogbnVtYmVyXG4gIGRhdGE/OiBbU2ltcGxlVXNlclByb2ZpbGVdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzZXRQYXNzd29yZFJlcXVlc3QgZXh0ZW5kcyBCYXNlUmVxdWVzdCB7XG4gIGVtYWlsPzogc3RyaW5nXG4gIHBob25lX251bWJlcj86IHN0cmluZ1xuICBuZXdfcGFzc3dvcmQ6IHN0cmluZ1xuICB2ZXJpZmljYXRpb25fdG9rZW46IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERldmljZUF1dGhvcml6ZVJlcXVlc3QgZXh0ZW5kcyBCYXNlUmVxdWVzdCB7XG4gIHNjb3BlPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yaXplUmVxdWVzdCBleHRlbmRzIEJhc2VSZXF1ZXN0IHtcbiAgcmVzcG9uc2VfdHlwZT86IHN0cmluZ1xuICByZWRpcmVjdF91cmk/OiBzdHJpbmdcbiAgc3RhdGU/OiBzdHJpbmdcbiAgc2NvcGU/OiBzdHJpbmdcbiAgY29kZV9jaGFsbGVuZ2U/OiBzdHJpbmdcbiAgY29kZV9jaGFsbGVuZ2VfbWV0aG9kPzogc3RyaW5nXG4gIHNpZ25fb3V0X3VyaT86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhvcml6ZVJlc3BvbnNlIHtcbiAgY29kZT86IHN0cmluZ1xuICBhY2Nlc3NfdG9rZW4/OiBzdHJpbmdcbiAgaWRfdG9rZW4/OiBzdHJpbmdcbiAgdG9rZW5fdHlwZT86IHN0cmluZ1xuICBzY29wZT86IHN0cmluZ1xuICBzdGF0ZT86IHN0cmluZ1xuICBleHBpcmVzX2luPzogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yaXplSW5mb1JlcXVlc3QgZXh0ZW5kcyBCYXNlUmVxdWVzdCB7XG4gIHJlc3BvbnNlX3R5cGU/OiBzdHJpbmdcbiAgcmVkaXJlY3RfdXJpPzogc3RyaW5nXG4gIHN0YXRlPzogc3RyaW5nXG4gIHNjb3BlPzogc3RyaW5nXG4gIHNpZ25fb3V0X3VyaT86IHN0cmluZ1xuICBsb2NhbGU/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY29wZSB7XG4gIGlkOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIHBpY3R1cmU/OiBzdHJpbmdcbiAgdXJsPzogc3RyaW5nXG4gIGNoaWxkcmVuPzogU2NvcGVbXVxufVxuZXhwb3J0IGludGVyZmFjZSBBdXRob3JpemVJbmZvUmVzcG9uc2Uge1xuICBjbGllbnQ6IHtcbiAgICBpZDogc3RyaW5nXG4gICAgbmFtZTogc3RyaW5nXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgICBwaWN0dXJlPzogc3RyaW5nXG4gICAgdXJsPzogc3RyaW5nXG4gIH1cbiAgc2NvcGVzPzogU2NvcGVbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJldm9rZURldmljZVJlcXVlc3Qge1xuICBkZXZpY2VfaWQ6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25vdXRSZXF1ZXN0IHtcbiAgcmVkaXJlY3RfdXJpPzogc3RyaW5nXG4gIHN0YXRlPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbm91dFJlcG9uc2Uge1xuICByZWRpcmVjdF91cmk/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRob3JpemVEZXZpY2VSZXF1ZXN0IGV4dGVuZHMgQmFzZVJlcXVlc3Qge1xuICB1c2VyX2NvZGU6IHN0cmluZ1xuICBzY29wZT86IHN0cmluZ1xuICBzdGF0ZT86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERldmljZUF1dGhvcml6ZVJlc3BvbnNlIHtcbiAgZGV2aWNlX2NvZGU6IHN0cmluZ1xuICB1c2VyX2NvZGU/OiBzdHJpbmdcbiAgZXhwaXJlc19pbjogbnVtYmVyXG4gIGludGVydmFsOiBudW1iZXJcbiAgdmVyaWZpY2F0aW9uX3VyaT86IHN0cmluZ1xuICB2ZXJpZmljYXRpb25fdXJpX2NvbXBsZXRlPzogc3RyaW5nXG59XG5cbi8vIOeugOWMlueJiOeUqOaIt+S/oeaBr1xuZXhwb3J0IGludGVyZmFjZSBTaW1wbGVVc2VyUHJvZmlsZSB7XG4gIHN1Yjogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBwaWN0dXJlPzogc3RyaW5nXG4gIGdlbmRlcj86IHN0cmluZ1xuICBsb2NhbGU/OiBzdHJpbmdcbiAgZW1haWw/OiBzdHJpbmdcbiAgcGhvbmVfbnVtYmVyPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tVc2VybmFtZVJlcXVlc3Qge1xuICB1c2VybmFtZTogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tJZlVzZXJFeGlzdFJlcXVlc3Qge1xuICB1c2VybmFtZTogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tJZlVzZXJFeGlzdFJlc3BvbnNlIHtcbiAgZXhpc3Q6IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaWNLZXkge1xuICBwdWJsaWNfa2V5OiBzdHJpbmcgLy8g5Yqg5a+G55qE5YWs6ZKlXG4gIHB1YmxpY19rZXlfdGh1bWJwcmludDogc3RyaW5nIC8vIOWKoOWvhueahOWFrOmSpeaMh+e6uVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVuY3J5cHRQYXJhbXMge1xuICBpc0VuY3J5cHQ/OiBib29sZWFuIC8vIOaYr+WQpumcgOimgeWKoOWvhlxuICBwdWJsaWNfa2V5X3RodW1icHJpbnQ/OiBzdHJpbmcgLy8g5Yqg5a+G55qE5YWs6ZKl5oyH57q5XG4gIHBhcmFtcz86IHN0cmluZyAvLyDliqDlr4bnmoTmlbDmja5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm92aWRlclN1YlR5cGUge1xuICBpZDogc3RyaW5nXG4gIHByb3ZpZGVyX3N1Yl90eXBlOiAnTk9fQVVUSF9MT0dJTicgfCAnJyAvLyBOT19BVVRIX0xPR0lOLeWFjeWvhueZu+W9lVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldE1pbmlQcm9ncmFtUXJDb2RlUmVxdWVzdCB7XG4gIGVudklkOiBzdHJpbmdcbiAgd3hBcHBJZDogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0TWluaVByb2dyYW1RckNvZGVSZXNwb25zZSB7XG4gIHFyX2NvZGU6IHN0cmluZ1xuICBxcl9jb2RlX2lkOiBzdHJpbmdcbiAgZXhwaXJlc19pbjogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0TWluaVByb2dyYW1RckNvZGVTdGF0dXNSZXF1ZXN0IHtcbiAgcXJDb2RlSWQ6IHN0cmluZ1xuICBlbnZJZDogc3RyaW5nXG4gIHd4QXBwSWQ6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldE1pbmlQcm9ncmFtUXJDb2RlU3RhdHVzUmVzcG9uc2Uge1xuICBzdGF0dXM6IHN0cmluZ1xuICBwcm92aWRlcl90b2tlbjogc3RyaW5nXG4gIGV4cGlyZXNfaW46IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGlmeVVzZXJCYXNpY0luZm9SZXF1ZXN0IHtcbiAgdXNlcl9pZD86IHN0cmluZ1xuICBuaWNrbmFtZT86IHN0cmluZ1xuICB1c2VybmFtZT86IHN0cmluZ1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICBhdmF0YXJfdXJsPzogc3RyaW5nXG4gIGdlbmRlcj86ICdNQUxFJyB8ICdGRU1BTEUnXG4gIHBhc3N3b3JkPzogc3RyaW5nIC8vIOaXp+WvhueggVxuICBuZXdfcGFzc3dvcmQ/OiBzdHJpbmcgLy8g5paw5a+G56CBXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0VXNlckJlaGF2aW9yTG9nIHtcbiAgdHlwZTogJ0xPR0lOJyB8ICdNT0RJRlknIC8vIExPR0lOLeeZu+W9leaXpeW/l++8jE1PRElGWS3kv67mlLnnmbvlvZXmlrnlvI/ml6Xlv5dcbiAgbGltaXQ6IG51bWJlciAvLyDmr4/pobXmn6Xor6LmlbDph49cbiAgcGFnZV90b2tlbj86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldFVzZXJCZWhhdmlvckxvZ1JlcyB7XG4gIGlkOiBzdHJpbmdcbiAgaXA6IHN0cmluZ1xuICB1c2VyX2FnZW50OiBzdHJpbmdcbiAgY2xpZW50X2lkOiBzdHJpbmdcbiAgZGV2aWNlX2lkOiBzdHJpbmdcbiAgY3JlYXRlZF9hdDogc3RyaW5nXG4gIG1ldGE6IHsgZnJvbTogc3RyaW5nIH1cbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGlmeVBhc3N3b3JkV2l0aG91dExvZ2luUmVxdWVzdCB7XG4gIHVzZXJuYW1lPzogc3RyaW5nXG4gIHBhc3N3b3JkPzogc3RyaW5nIC8vIOaXp+WvhueggVxuICBuZXdfcGFzc3dvcmQ/OiBzdHJpbmcgLy8g5paw5a+G56CBXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9EZWZhdWx0TG9naW5QYWdlIHtcbiAgY29uZmlnX3ZlcnNpb24/OiAnZW52JyB8IHN0cmluZzsgLy8g55m75b2V6YWN572u77yM6buY6K6kZW5277yI5omY566h55m75b2V6aG177yJXG4gIHJlZGlyZWN0X3VyaT86IHN0cmluZzsgLy8g55m75b2V5ZCO5Zue6LCD5Zyw5Z2A77yM6buY6K6k5b2T5YmN5Zyw5Z2AXG4gIGFwcF9pZD86IHN0cmluZzsgLy8g5bqU55SoaWTvvIzmiZjnrqHnmbvlvZXpobXkuI3pnIDopoHkvKBcbiAgcXVlcnk/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IC8vIOi3s+i9rOeZu+W9lemTvuaOpeaQuuW4pueahOiHquWumuS5ieWPguaVsO+8jOS8muaLvOaOpeWcqOmTvuaOpeWQjumdolxufVxuIl19
|
package/dist/esm/auth/apis.js
CHANGED
|
@@ -172,9 +172,13 @@ export class Auth {
|
|
|
172
172
|
withCredentials = true;
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
|
+
const body = JSON.parse(JSON.stringify(params));
|
|
176
|
+
if (body.phone_number && !/^\+\d{1,3}\s+\d+/.test(body.phone_number)) {
|
|
177
|
+
body.phone_number = `+86 ${body.phone_number}`;
|
|
178
|
+
}
|
|
175
179
|
return this.config.request(ApiUrls.VERIFICATION_URL, {
|
|
176
180
|
method: 'POST',
|
|
177
|
-
body
|
|
181
|
+
body,
|
|
178
182
|
withCaptcha: options?.withCaptcha || false,
|
|
179
183
|
withCredentials,
|
|
180
184
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("tcboauth",[],t):"object"==typeof exports?exports.tcboauth=t():e.tcboauth=t()}("undefined"!=typeof window?window:this,()=>(()=>{"use strict";var e={3:(e,t,r)=>{r.r(t),r.d(t,{getEncryptInfo:()=>i});const n=void 0;var o=r(912),i=function(){var{publicKey:e="",payload:t={}}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e)return"";try{var r=(0,o.I)(t),i=new n;i.setPublicKey(e);var a=i.encryptLong("object"==typeof r?JSON.stringify(r):r);return a}catch(e){console.error("encrypt error:",e)}return""}},912:(e,t,r)=>{r.d(t,{I:()=>n,y:()=>o});var n=e=>{var t=t=>{for(var r in e)e.hasOwnProperty(r)&&(t[r]=n(e[r]));return t},r=null==e?"NullOrUndefined":Object.prototype.toString.call(e).slice(8,-1);if(["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"].includes(r))return e.slice();switch(r){case"Object":return t(Object.create(Object.getPrototypeOf(e)));case"Array":return t([]);case"Date":return new Date(e.valueOf());case"RegExp":return new RegExp(e.source,(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.sticky?"y":"")+(e.unicode?"u":""));default:return e}},o=e=>{var t=e.match(/^(?:http(s)?:\/\/[^\/]+)?(\/[^\?#]*)/);return t&&t[2]||""}}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={exports:{}};return e[n](i,i.exports,r),i.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{r.r(n),r.d(n,{AUTH_API_PREFIX:()=>c,Auth:()=>pe,CloudbaseOAuth:()=>ge,authModels:()=>e});var e={};r.r(e);var t,o,i,a,s,c="/auth";function u(){return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,e=>{var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}!function(e){e.AUTH_SIGN_UP_URL="/v1/signup",e.AUTH_TOKEN_URL="/v1/token",e.AUTH_REVOKE_URL="/v1/revoke",e.WEDA_USER_URL="/v1/plugin/weda/userinfo",e.AUTH_RESET_PASSWORD="/v1/reset",e.AUTH_GET_DEVICE_CODE="/v1/device/code",e.CHECK_USERNAME="/v1/checkUsername",e.CHECK_IF_USER_EXIST="/v1/checkIfUserExist",e.GET_PROVIDER_TYPE="/v1/mgr/provider/providerSubType",e.AUTH_SIGN_IN_URL="/v1/signin",e.AUTH_SIGN_IN_ANONYMOUSLY_URL="/v1/signin/anonymously",e.AUTH_SIGN_IN_WITH_PROVIDER_URL="/v1/signin/with/provider",e.AUTH_SIGN_IN_WITH_WECHAT_URL="/v1/signin/wechat/noauth",e.AUTH_SIGN_IN_CUSTOM="/v1/signin/custom",e.PROVIDER_TOKEN_URL="/v1/provider/token",e.PROVIDER_URI_URL="/v1/provider/uri",e.USER_ME_URL="/v1/user/me",e.AUTH_SIGNOUT_URL="/v1/user/signout",e.USER_QUERY_URL="/v1/user/query",e.USER_PRIFILE_URL="/v1/user/profile",e.USER_BASIC_EDIT_URL="/v1/user/basic/edit",e.USER_TRANS_BY_PROVIDER_URL="/v1/user/trans/by/provider",e.PROVIDER_LIST="/v1/user/provider",e.PROVIDER_BIND_URL="/v1/user/provider/bind",e.PROVIDER_UNBIND_URL="/v1/user/provider",e.CHECK_PWD_URL="/v1/user/sudo",e.SUDO_URL="/v1/user/sudo",e.BIND_CONTACT_URL="/v1/user/contact",e.AUTH_SET_PASSWORD="/v1/user/password",e.AUTHORIZE_DEVICE_URL="/v1/user/device/authorize",e.AUTHORIZE_URL="/v1/user/authorize",e.AUTHORIZE_INFO_URL="/v1/user/authorize/info",e.AUTHORIZED_DEVICES_DELETE_URL="/v1/user/authorized/devices/",e.AUTH_REVOKE_ALL_URL="/v1/user/revoke/all",e.GET_USER_BEHAVIOR_LOG="/v1/user/security/history",e.VERIFICATION_URL="/v1/verification",e.VERIFY_URL="/v1/verification/verify",e.CAPTCHA_DATA_URL="/v1/captcha/data",e.VERIFY_CAPTCHA_DATA_URL="/v1/captcha/data/verify",e.GET_CAPTCHA_URL="/v1/captcha/init",e.GET_MINIPROGRAM_QRCODE="/v1/qrcode/generate",e.GET_MINIPROGRAM_QRCODE_STATUS="/v1/qrcode/get/status"}(t||(t={})),function(e){e.AUTH_SIGN_IN_URL="/v2/signin/username",e.AUTH_TOKEN_URL="/v2/token",e.USER_ME_URL="/v2/user/me",e.VERIFY_URL="/v2/signin/verificationcode",e.AUTH_SIGN_IN_WITH_PROVIDER_URL="/v2/signin/with/provider",e.AUTH_PUBLIC_KEY="/v2/signin/publichkey",e.AUTH_RESET_PASSWORD="/v2/signin/password/update"}(o||(o={})),function(e){e.REGISTER="REGISTER",e.SIGN_IN="SIGN_IN",e.PASSWORD_RESET="PASSWORD_RESET",e.EMAIL_ADDRESS_CHANGE="EMAIL_ADDRESS_CHANGE",e.PHONE_NUMBER_CHANGE="PHONE_NUMBER_CHANGE"}(i||(i={})),function(e){e.UNREACHABLE="unreachable",e.LOCAL="local",e.CANCELLED="cancelled",e.UNKNOWN="unknown",e.UNAUTHENTICATED="unauthenticated",e.RESOURCE_EXHAUSTED="resource_exhausted",e.FAILED_PRECONDITION="failed_precondition",e.INVALID_ARGUMENT="invalid_argument",e.DEADLINE_EXCEEDED="deadline_exceeded",e.NOT_FOUND="not_found",e.ALREADY_EXISTS="already_exists",e.PERMISSION_DENIED="permission_denied",e.ABORTED="aborted",e.OUT_OF_RANGE="out_of_range",e.UNIMPLEMENTED="unimplemented",e.INTERNAL="internal",e.UNAVAILABLE="unavailable",e.DATA_LOSS="data_loss",e.INVALID_PASSWORD="invalid_password",e.PASSWORD_NOT_SET="password_not_set",e.INVALID_STATUS="invalid_status",e.USER_PENDING="user_pending",e.USER_BLOCKED="user_blocked",e.INVALID_VERIFICATION_CODE="invalid_verification_code",e.TWO_FACTOR_REQUIRED="two_factor_required",e.INVALID_TWO_FACTOR="invalid_two_factor",e.INVALID_TWO_FACTOR_RECOVERY="invalid_two_factor_recovery",e.UNDER_REVIEW="under_review",e.INVALID_REQUEST="invalid_request",e.UNAUTHORIZED_CLIENT="unauthorized_client",e.ACCESS_DENIED="access_denied",e.UNSUPPORTED_RESPONSE_TYPE="unsupported_response_type",e.INVALID_SCOPE="invalid_scope",e.INVALID_GRANT="invalid_grant",e.SERVER_ERROR="server_error",e.TEMPORARILY_UNAVAILABLE="temporarily_unavailable",e.INTERACTION_REQUIRED="interaction_required",e.LOGIN_REQUIRED="login_required",e.ACCOUNT_SELECTION_REQUIRED="account_selection_required",e.CONSENT_REQUIRED="consent_required",e.INVALID_REQUEST_URI="invalid_request_uri",e.INVALID_REQUEST_OBJECT="invalid_request_object",e.REQUEST_NOT_SUPPORTED="request_not_supported",e.REQUEST_URI_NOT_SUPPORTED="request_uri_not_supported",e.REGISTRATION_NOT_SUPPORTED="registration_not_supported",e.CAPTCHA_REQUIRED="captcha_required",e.CAPTCHA_INVALID="captcha_invalid"}(a||(a={})),function(e){e.CLIENT_ID="client_id",e.CLIENT_SECRET="client_secret",e.RESPONSE_TYPE="response_type",e.SCOPE="scope",e.STATE="state",e.REDIRECT_URI="redirect_uri",e.ERROR="error",e.ERROR_DESCRIPTION="error_description",e.ERROR_URI="error_uri",e.GRANT_TYPE="grant_type",e.CODE="code",e.ACCESS_TOKEN="access_token",e.TOKEN_TYPE="token_type",e.EXPIRES_IN="expires_in",e.USERNAME="username",e.PASSWORD="password",e.REFRESH_TOKEN="refresh_token"}(s||(s={}));var l=r(912);function d(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function h(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){d(i,n,o,a,s,"next",e)}function s(e){d(i,n,o,a,s,"throw",e)}a(void 0)}))}}var f=new Map;class p{constructor(e){this.clientId=(null==e?void 0:e.clientId)||"",f=f||new Map}run(e,t){var r=this;return h((function*(){e="".concat(r.clientId,"_").concat(e);var n=f.get(e);return n||(n=new Promise((n,o)=>{h((function*(){try{yield r.runIdlePromise();var i=t();n(yield i)}catch(e){o(e)}finally{f.delete(e)}}))()}),f.set(e,n)),n}))()}runIdlePromise(){return Promise.resolve()}}var v="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function y(){if("undefined"==typeof globalThis)return!1;var{wx:e}=globalThis;if(void 0===e)return!1;if(void 0===globalThis.Page)return!1;if(!e.getSystemInfoSync)return!1;if(!e.getStorageSync)return!1;if(!e.setStorageSync)return!1;if(!e.connectSocket)return!1;if(!e.request)return!1;try{if(!e.getSystemInfoSync())return!1;if("qq"===e.getSystemInfoSync().AppPlatform)return!1}catch(e){return!1}return!0}var _=!1;function g(){_=_||void 0!==typeof window&&"miniprogram"===window.__wxjs_environment}try{y()||(_=_||!!navigator.userAgent.match(/miniprogram/i)||"miniprogram"===window.__wxjs_environment,window&&window.WeixinJSBridge&&window.WeixinJSBridge.invoke?g():"undefined"!=typeof document&&document.addEventListener("WeixinJSBridgeReady",g,!1))}catch(B){}function m(){return _}var E="@cloudbase/js-sdk";function I(){return E}var R="https:";var b,C="INVALID_PARAMS",T="INVALID_OPERATION",O="OPERATION_FAIL";!function(e){e.local="local",e.none="none",e.session="session"}(b||(b={}));var S=function(){};function w(e,t){console.warn("[".concat(I(),"][").concat(e,"]:").concat(t))}var A,P=(A=function(e,t){return(A=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}A(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),U=function(){return(U=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},N=function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},L=function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}};!function(e){function t(t){var r=e.call(this)||this,n=t.timeout,o=t.timeoutMsg,i=t.restrictedMethods;return r.timeout=n||0,r.timeoutMsg=o||"请求超时",r.restrictedMethods=i||["get","post","upload","download"],r}P(t,e),t.prototype.get=function(e){return this.request(U(U({},e),{method:"get"}),this.restrictedMethods.includes("get"))},t.prototype.post=function(e){return this.request(U(U({},e),{method:"post"}),this.restrictedMethods.includes("post"))},t.prototype.put=function(e){return this.request(U(U({},e),{method:"put"}))},t.prototype.upload=function(e){var t=e.data,r=e.file,n=e.name,o=e.method,i=e.headers,a=void 0===i?{}:i,s={post:"post",put:"put"}[null==o?void 0:o.toLowerCase()]||"put",c=new FormData;return"post"===s?(Object.keys(t).forEach((function(e){c.append(e,t[e])})),c.append("key",n),c.append("file",r),this.request(U(U({},e),{data:c,method:s}),this.restrictedMethods.includes("upload"))):this.request(U(U({},e),{method:"put",headers:a,body:r}),this.restrictedMethods.includes("upload"))},t.prototype.download=function(e){return N(this,void 0,void 0,(function(){var t,r,n,o;return L(this,(function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),[4,this.get(U(U({},e),{headers:{},responseType:"blob"}))];case 1:return t=i.sent().data,r=window.URL.createObjectURL(new Blob([t])),n=decodeURIComponent(new URL(e.url).pathname.split("/").pop()||""),(o=document.createElement("a")).href=r,o.setAttribute("download",n),o.style.display="none",document.body.appendChild(o),o.click(),window.URL.revokeObjectURL(r),document.body.removeChild(o),[3,3];case 2:return i.sent(),[3,3];case 3:return[2,new Promise((function(t){t({statusCode:200,tempFilePath:e.url})}))]}}))}))},t.prototype.fetch=function(e){var t;return N(this,void 0,void 0,(function(){var r,n,o,i,a,s,c,u,l,d,h,f,p,v=this;return L(this,(function(y){switch(y.label){case 0:return r=new AbortController,n=e.url,o=e.enableAbort,i=void 0!==o&&o,a=e.stream,s=void 0!==a&&a,c=e.signal,u=e.timeout,l=e.shouldThrowOnError,d=void 0===l||l,h=null!=u?u:this.timeout,c&&(c.aborted&&r.abort(),c.addEventListener("abort",(function(){return r.abort()}))),f=null,i&&h&&(f=setTimeout((function(){console.warn(v.timeoutMsg),r.abort(new Error(v.timeoutMsg))}),h)),[4,fetch(n,U(U({},e),{signal:r.signal})).then((function(e){return N(v,void 0,void 0,(function(){var t,r,n;return L(this,(function(o){switch(o.label){case 0:return clearTimeout(f),d?e.ok?(t=e,[3,3]):[3,1]:[3,4];case 1:return n=(r=Promise).reject,[4,e.json()];case 2:t=n.apply(r,[o.sent()]),o.label=3;case 3:return[2,t];case 4:return[2,e]}}))}))})).catch((function(e){if(clearTimeout(f),d)return Promise.reject(e)}))];case 1:return p=y.sent(),[2,{data:s?p.body:(null===(t=p.headers.get("content-type"))||void 0===t?void 0:t.includes("application/json"))?p.json():p.text(),statusCode:p.status,header:p.headers}]}}))}))},t.prototype.request=function(e,t){var r=this;void 0===t&&(t=!1);var n=String(e.method).toLowerCase()||"get";return new Promise((function(o){var i,a,s,c=e.url,u=e.headers,l=void 0===u?{}:u,d=e.data,h=e.responseType,f=e.withCredentials,p=e.body,v=e.onUploadProgress,y=function(e,t,r){void 0===r&&(r={});var n=/\?/.test(t),o="";return Object.keys(r).forEach((function(e){""===o?!n&&(t+="?"):o+="&",o+="".concat(e,"=").concat(encodeURIComponent(r[e]))})),/^http(s)?:\/\//.test(t+=o)?t:"".concat(e).concat(t)}(R,c,"get"===n?d:{}),_=new XMLHttpRequest;_.open(n,y),h&&(_.responseType=h),Object.keys(l).forEach((function(e){_.setRequestHeader(e,l[e])})),v&&_.upload.addEventListener("progress",v),_.onreadystatechange=function(){var e={};if(4===_.readyState){var t=_.getAllResponseHeaders().trim().split(/[\r\n]+/),r={};t.forEach((function(e){var t=e.split(": "),n=t.shift().toLowerCase(),o=t.join(": ");r[n]=o})),e.header=r,e.statusCode=_.status;try{e.data="blob"===h?_.response:JSON.parse(_.responseText)}catch(t){e.data="blob"===h?_.response:_.responseText}clearTimeout(i),o(e)}},t&&r.timeout&&(i=setTimeout((function(){console.warn(r.timeoutMsg),_.abort()}),r.timeout)),s=d,a="[object FormData]"===Object.prototype.toString.call(s)?d:"application/x-www-form-urlencoded"===l["content-type"]?function(e){void 0===e&&(e={});var t=[];return Object.keys(e).forEach((function(r){t.push("".concat(r,"=").concat(encodeURIComponent(e[r])))})),t.join("&")}(d):p||(d?JSON.stringify(d):void 0),f&&(_.withCredentials=!0),_.send(a)}))}}((function(){}));var D;!function(e){e.WEB="web",e.WX_MP="wx_mp"}(D||(D={}));var k=function(){var e=function(t,r){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(t,r)};return function(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),x=function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},j=function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}},q=function(e){function t(t){var r=e.call(this)||this;return r.root=t,t.tcbCacheObject||(t.tcbCacheObject={}),r}return k(t,e),t.prototype.setItem=function(e,t){this.root.tcbCacheObject[e]=t},t.prototype.getItem=function(e){return this.root.tcbCacheObject[e]},t.prototype.removeItem=function(e){delete this.root.tcbCacheObject[e]},t.prototype.clear=function(){delete this.root.tcbCacheObject},t}(S);!function(){function e(e){this.keys={};var t=e.persistence,r=e.platformInfo,n=void 0===r?{}:r,o=e.keys,i=void 0===o?{}:o;this.platformInfo=n,this.storage||(this.persistenceTag=this.platformInfo.adapter.primaryStorage||t,this.storage=function(e,t){switch(e){case"local":return t.localStorage?t.localStorage:(w(C,"localStorage is not supported on current platform"),new q(t.root));case"none":return new q(t.root);default:return t.localStorage?t.localStorage:(w(C,"localStorage is not supported on current platform"),new q(t.root))}}(this.persistenceTag,this.platformInfo.adapter),this.keys=i)}Object.defineProperty(e.prototype,"mode",{get:function(){return this.storage.mode||"sync"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"persistence",{get:function(){return this.persistenceTag},enumerable:!1,configurable:!0}),e.prototype.setStore=function(e,t,r){if("async"!==this.mode){if(this.storage)try{var n={version:r||"localCachev1",content:t};this.storage.setItem(e,JSON.stringify(n))}catch(e){throw new Error(JSON.stringify({code:O,msg:"[".concat(I(),"][").concat(O,"]setStore failed"),info:e}))}}else w(T,"current platform's storage is asynchronous, please use setStoreAsync insteed")},e.prototype.setStoreAsync=function(e,t,r){return x(this,void 0,void 0,(function(){var n;return j(this,(function(o){switch(o.label){case 0:if(!this.storage)return[2];o.label=1;case 1:return o.trys.push([1,3,,4]),n={version:r||"localCachev1",content:t},[4,this.storage.setItem(e,JSON.stringify(n))];case 2:return o.sent(),[3,4];case 3:return o.sent(),[2];case 4:return[2]}}))}))},e.prototype.getStore=function(e,t){var r;if("async"!==this.mode){try{if("undefined"!=typeof process&&(null===(r=process.env)||void 0===r?void 0:r.tcb_token))return process.env.tcb_token;if(!this.storage)return""}catch(e){return""}t=t||"localCachev1";var n=this.storage.getItem(e);return n&&n.indexOf(t)>=0?JSON.parse(n).content:""}w(T,"current platform's storage is asynchronous, please use getStoreAsync insteed")},e.prototype.getStoreAsync=function(e,t){var r;return x(this,void 0,void 0,(function(){var n;return j(this,(function(o){switch(o.label){case 0:try{if("undefined"!=typeof process&&(null===(r=process.env)||void 0===r?void 0:r.tcb_token))return[2,process.env.tcb_token];if(!this.storage)return[2,""]}catch(e){return[2,""]}return t=t||"localCachev1",[4,this.storage.getItem(e)];case 1:return(n=o.sent())&&n.indexOf(t)>=0?[2,JSON.parse(n).content]:[2,""]}}))}))},e.prototype.removeStore=function(e){"async"!==this.mode?this.storage.removeItem(e):w(T,"current platform's storage is asynchronous, please use removeStoreAsync insteed")},e.prototype.removeStoreAsync=function(e){return x(this,void 0,void 0,(function(){return j(this,(function(t){switch(t.label){case 0:return[4,this.storage.removeItem(e)];case 1:return t.sent(),[2]}}))}))}}();var H=function(){var e=function(t,r){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(t,r)};return function(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),G=function(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))};var V=function(e,t){this.data=t||null,this.name=e},M=function(e){function t(t,r){var n=e.call(this,"error",{error:t,data:r})||this;return n.error=t,n}return H(t,e),t}(V),W=function(){function e(){this.listeners={}}return e.prototype.on=function(e,t){return function(e,t,r){r[e]=r[e]||[],r[e].push(t)}(e,t,this.listeners),this},e.prototype.off=function(e,t){return function(e,t,r){if(null==r?void 0:r[e]){var n=r[e].indexOf(t);-1!==n&&r[e].splice(n,1)}}(e,t,this.listeners),this},e.prototype.fire=function(e,t){if(e instanceof M)return console.error(e.error),this;var r="string"==typeof e?new V(e,t||{}):e,n=r.name;if(this.listens(n)){r.target=this;for(var o=0,i=this.listeners[n]?G([],this.listeners[n],!0):[];o<i.length;o++){i[o].call(this,r)}}return this},e.prototype.listens=function(e){return this.listeners[e]&&this.listeners[e].length>0},e}();new W;var F=new W;"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.indexOf("Firefox");!function(){function e(){var e=this;this.listeners=[],this.signal={aborted:!1,addEventListener:function(t,r){"abort"===t&&e.listeners.push(r)}}}e.prototype.abort=function(){this.signal.aborted||(this.signal.aborted=!0,this.listeners.forEach((function(e){return e()})))}}();function B(e){this.message=e}B.prototype=new Error,B.prototype.name="InvalidCharacterError";"undefined"!=typeof window&&window.atob&&window.atob.bind(window);function K(e){this.message=e}K.prototype=new Error,K.prototype.name="InvalidTokenError";function Y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Q(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Y(Object(r),!0).forEach((function(t){J(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Y(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function J(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function z(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function X(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){z(i,n,o,a,s,"next",e)}function s(e){z(i,n,o,a,s,"throw",e)}a(void 0)}))}}var Z=function(){var e=X((function*(e,t){var r=null,n=null;try{var o=Object.assign({},t);o.method||(o.method="GET"),o.body&&"string"!=typeof o.body&&(o.body=JSON.stringify(o.body));var i=yield fetch(e,o),s=yield i.json();null!=s&&s.error?(n=s).error_uri=new URL(e).pathname:r=s}catch(t){n={error:a.UNREACHABLE,error_description:t.message,error_uri:new URL(e).pathname}}if(n)throw n;return r}));return function(t,r){return e.apply(this,arguments)}}();var $=new class{constructor(e){this._env=(null==e?void 0:e.env)||""}getItem(e){var t=this;return X((function*(){return window.localStorage.getItem("".concat(e).concat(t._env))}))()}removeItem(e){var t=this;return X((function*(){window.localStorage.removeItem("".concat(e).concat(t._env))}))()}setItem(e,t){var r=this;return X((function*(){window.localStorage.setItem("".concat(e).concat(r._env),t)}))()}getItemSync(e){return window.localStorage.getItem("".concat(e).concat(this._env))}removeItemSync(e){window.localStorage.removeItem("".concat(e).concat(this._env))}setItemSync(e,t){window.localStorage.setItem("".concat(e).concat(this._env),t)}};function ee(e){var t=!0;return null!=e&&e.expires_at&&null!=e&&e.access_token&&(t=e.expires_at<new Date),t}class te{constructor(e){this.credentials=null,this.accessKeyCredentials=null,this.singlePromise=null,this.tokenSectionName=e.tokenSectionName,this.storage=e.storage,this.clientId=e.clientId,this.singlePromise=new p({clientId:this.clientId}),this.credentials=e.credentials||null}getStorageCredentialsSync(){var e=null,t=this.storage.getItemSync(this.tokenSectionName);if(null!=t)try{var r;null!==(r=e=JSON.parse(t))&&void 0!==r&&r.expires_at&&(e.expires_at=new Date(e.expires_at))}catch(t){this.storage.removeItem(this.tokenSectionName),e=null}return e}setCredentials(e){var t=this;return X((function*(){if(null!=e&&e.expires_in){if(null!=e&&e.expires_at||(e.expires_at=new Date(Date.now()+1e3*(e.expires_in-30))),t.storage){var r=JSON.stringify(e);yield t.storage.setItem(t.tokenSectionName,r)}t.credentials=e}else t.storage&&(yield t.storage.removeItem(t.tokenSectionName)),t.credentials=null}))()}setAccessKeyCredentials(e){this.accessKeyCredentials=e}getCredentials(){var e=this;return X((function*(){return e.singlePromise.run("getCredentials",X((function*(){if(ee(e.credentials)){var{credentials:t,isAccessKeyCredentials:r}=yield e.getStorageCredentials();if(r)return t;e.credentials=t}return e.credentials})))}))()}getStorageCredentials(){var e=this;return X((function*(){return e.singlePromise.run("_getStorageCredentials",X((function*(){var t=null,r=!1,n=yield e.storage.getItem(e.tokenSectionName);if(n)try{var o;null!==(o=t=JSON.parse(n))&&void 0!==o&&o.expires_at&&(t.expires_at=new Date(t.expires_at))}catch(r){yield e.storage.removeItem(e.tokenSectionName),t=null}else t=e.accessKeyCredentials||null,r=!0;return{credentials:t,isAccessKeyCredentials:r}})))}))()}}class re{constructor(e){this.singlePromise=null,e.clientSecret||(e.clientSecret=""),!e.clientId&&e.env&&(e.clientId=e.env),this.apiOrigin=e.apiOrigin,this.apiPath=e.apiPath||c,this.clientId=e.clientId,this.i18n=e.i18n,this.singlePromise=new p({clientId:this.clientId}),this.retry=this.formatRetry(e.retry,re.defaultRetry),e.baseRequest?this.baseRequest=e.baseRequest:this.baseRequest=Z,this.tokenInURL=e.tokenInURL,this.headers=e.headers,this.storage=e.storage||$,this.localCredentials=new te({tokenSectionName:"credentials_".concat(e.clientId),storage:this.storage,clientId:e.clientId}),this.clientSecret=e.clientSecret,e.clientId&&(this.basicAuth="Basic ".concat(function(e){for(var t,r,n,o,i="",a=0,s=(e=String(e)).length%3;a<e.length;){if((r=e.charCodeAt(a++))>255||(n=e.charCodeAt(a++))>255||(o=e.charCodeAt(a++))>255)throw new TypeError("Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.");i+=v.charAt((t=r<<16|n<<8|o)>>18&63)+v.charAt(t>>12&63)+v.charAt(t>>6&63)+v.charAt(63&t)}return s?i.slice(0,s-3)+"===".substring(s):i}("".concat(e.clientId,":").concat(this.clientSecret)))),this.wxCloud=e.wxCloud;try{y()&&(this.useWxCloud=e.useWxCloud,void 0===this.wxCloud&&e.env&&(wx.cloud.init({env:e.env}),this.wxCloud=wx.cloud))}catch(e){}this.refreshTokenFunc=e.refreshTokenFunc||this.defaultRefreshTokenFunc,this.anonymousSignInFunc=e.anonymousSignInFunc,this.onCredentialsError=e.onCredentialsError,F.on("lang_change",e=>{var t;this.i18n=(null===(t=e.data)||void 0===t?void 0:t.i18n)||this.i18n})}setCredentials(e){return this.localCredentials.setCredentials(e)}setAccessKeyCredentials(e){return this.localCredentials.setAccessKeyCredentials(e)}getAccessToken(){var e=this;return X((function*(){var t=yield e.getCredentials();if(null!=t&&t.access_token)return Promise.resolve(t.access_token);var r={error:a.UNAUTHENTICATED};return Promise.reject(r)}))()}request(e,t){var r=this;return X((function*(){var n,o,i,s;t||(t={});var c=r.formatRetry(t.retry,r.retry);if(t.headers=Q(Q({},t.headers),{},{[null===(n=r.i18n)||void 0===n?void 0:n.LANG_HEADER_KEY]:null===(o=r.i18n)||void 0===o?void 0:o.lang}),r.headers&&(t.headers=Q(Q({},r.headers),t.headers)),t.headers["x-request-id"]||(t.headers["x-request-id"]=u()),!t.headers["x-device-id"]){var l=yield r.getDeviceId();t.headers["x-device-id"]=l}if(null!==(i=t)&&void 0!==i&&i.withBasicAuth&&r.basicAuth&&(t.headers.Authorization=r.basicAuth),null!==(s=t)&&void 0!==s&&s.withCredentials){var d=yield r.getCredentials();d&&(r.tokenInURL?(e.indexOf("?")<0&&(e+="?"),e+="access_token=".concat(d.access_token)):t.headers.Authorization="".concat(d.token_type," ").concat(d.access_token))}else r.clientId&&e.indexOf("client_id")<0&&(e+=e.indexOf("?")<0?"?":"&",e+="client_id=".concat(r.clientId));e.startsWith("/")&&(e="".concat(r.apiOrigin).concat(r.apiPath).concat(e));for(var h=null,f=c+1,p=0;p<f;p++){try{h=t.useWxCloud||r.useWxCloud?yield r.wxCloudCallFunction(e,t):yield r.baseRequest(e,t);break}catch(e){if(t.withCredentials&&e&&e.error===a.UNAUTHENTICATED)return yield r.setCredentials(null),Promise.reject(e);if(p===c||!e||"unreachable"!==e.error)return Promise.reject(e)}yield r.sleep(re.retryInterval)}return h}))()}wxCloudCallFunction(e,t){var r=this;return X((function*(){var n=null,o=null;try{var i,s="";try{s=yield wx.getRendererUserAgent()}catch(e){}var{result:c}=yield r.wxCloud.callFunction({name:"httpOverCallFunction",data:{url:e,method:t.method,headers:Q({origin:"https://servicewechat.com","User-Agent":s},t.headers),body:t.body}});null!=c&&null!==(i=c.body)&&void 0!==i&&i.error_code?(o=null==c?void 0:c.body).error_uri=(0,l.y)(e):n=null==c?void 0:c.body}catch(t){o={error:a.UNREACHABLE,error_description:t.message,error_uri:(0,l.y)(e)}}if(o)throw o;return n}))()}getCredentials(){var e=this;return X((function*(){var t=yield e.localCredentials.getCredentials();if(!t){var r,n="credentials not found";return null===(r=e.onCredentialsError)||void 0===r||r.call(e,{msg:n}),e.unAuthenticatedError(n)}if(ee(t))if(t.refresh_token)try{t=yield e.refreshToken(t)}catch(r){var o;if("anonymous"!==t.scope)return null===(o=e.onCredentialsError)||void 0===o||o.call(e,{msg:r.error_description}),Promise.reject(r);t=yield e.anonymousLogin(t)}else{if("anonymous"!==t.scope){var i,a="no refresh token found in credentials";return null===(i=e.onCredentialsError)||void 0===i||i.call(e,{msg:a}),e.unAuthenticatedError(a)}t=yield e.anonymousLogin(t)}return t}))()}getCredentialsSync(){return this.localCredentials.getStorageCredentialsSync()}getCredentialsAsync(){return this.getCredentials()}getScope(){var e=this;return X((function*(){var t=yield e.localCredentials.getCredentials();if(!t){var r,n="credentials not found";return null===(r=e.onCredentialsError)||void 0===r||r.call(e,{msg:n}),e.unAuthenticatedError(n)}return t.scope}))()}getGroups(){var e=this;return X((function*(){var t=yield e.localCredentials.getCredentials();if(!t){var r,n="credentials not found";return null===(r=e.onCredentialsError)||void 0===r||r.call(e,{msg:n}),e.unAuthenticatedError(n)}return t.groups}))()}refreshToken(e){var t=this;return X((function*(){return t.singlePromise.run("_refreshToken",X((function*(){if(!e||!e.refresh_token){var r,n="no refresh token found in credentials";return null===(r=t.onCredentialsError)||void 0===r||r.call(t,{msg:n}),t.unAuthenticatedError(n)}try{var o=yield t.refreshTokenFunc(e.refresh_token,e);return yield t.localCredentials.setCredentials(o),o}catch(e){var i;if(e.error===a.INVALID_GRANT){var s;yield t.localCredentials.setCredentials(null);var c=e.error_description;return null===(s=t.onCredentialsError)||void 0===s||s.call(t,{msg:c}),t.unAuthenticatedError(c)}return null===(i=t.onCredentialsError)||void 0===i||i.call(t,{msg:e.error_description}),Promise.reject(e)}})))}))()}anonymousLogin(e){var t=this;return X((function*(){return t.singlePromise.run("_anonymousLogin",X((function*(){if(t.anonymousSignInFunc){var r=yield t.anonymousSignInFunc(e);e=r||(yield t.localCredentials.getCredentials())}else e=yield t.anonymousSignIn(e);return e})))}))()}checkRetry(e){var t=null;if(("number"!=typeof e||e<re.minRetry||e>re.maxRetry)&&(t={error:a.UNREACHABLE,error_description:"wrong options param: retry"}),t)throw t;return e}formatRetry(e,t){return void 0===e?t:this.checkRetry(e)}sleep(e){return X((function*(){return new Promise(t=>{setTimeout(()=>{t()},e)})}))()}anonymousSignIn(e){var r=this;return X((function*(){return r.singlePromise.run("_anonymous",X((function*(){if(!e||"anonymous"!==e.scope)return r.unAuthenticatedError("no anonymous in credentials");try{var n=yield r.request(t.AUTH_SIGN_IN_ANONYMOUSLY_URL,{method:"POST",withBasicAuth:!0,body:{}});return yield r.localCredentials.setCredentials(n),n}catch(e){return e.error===a.INVALID_GRANT?(yield r.localCredentials.setCredentials(null),r.unAuthenticatedError(e.error_description)):Promise.reject(e)}})))}))()}defaultRefreshTokenFunc(e,r){var n=this;return X((function*(){if(void 0===e||""===e){var i,a="refresh token not found";return null===(i=n.onCredentialsError)||void 0===i||i.call(n,{msg:a}),n.unAuthenticatedError(a)}var s=t.AUTH_TOKEN_URL;return"v2"===(null==r?void 0:r.version)&&(s=o.AUTH_TOKEN_URL),Q(Q({},yield n.request(s,{method:"POST",body:{client_id:n.clientId,client_secret:n.clientSecret,grant_type:"refresh_token",refresh_token:e}})),{},{version:(null==r?void 0:r.version)||"v1"})}))()}getDeviceId(){var e=this;return X((function*(){if(e.deviceID)return e.deviceID;var t=yield e.storage.getItem("device_id");return"string"==typeof t&&t.length>=16&&t.length<=48||(t=u(),yield e.storage.setItem("device_id",t)),e.deviceID=t,t}))()}unAuthenticatedError(e){var t={error:a.UNAUTHENTICATED,error_description:e};return Promise.reject(t)}}re.defaultRetry=2,re.minRetry=0,re.maxRetry=5,re.retryInterval=1e3;const ne=class{constructor(e){if(this.params={},"string"==typeof e)this.parse(e);else if(e&&"object"==typeof e)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&this.append(t,e[t])}parse(e){e.split("&").forEach(e=>{var[t,r]=e.split("=").map(decodeURIComponent);this.append(t,r)})}append(e,t){this.params[e]?this.params[e]=this.params[e].concat([t]):this.params[e]=[t]}get(e){return this.params[e]?this.params[e][0]:null}getAll(e){return this.params[e]||[]}delete(e){delete this.params[e]}has(e){return Object.prototype.hasOwnProperty.call(this.params,e)}set(e,t){this.params[e]=[t]}toString(){var e=this,t=[],r=function(r){Object.prototype.hasOwnProperty.call(e.params,r)&&e.params[r].forEach(e=>{t.push("".concat(encodeURIComponent(r),"=").concat(encodeURIComponent(e)))})};for(var n in this.params)r(n);return t.join("&")}};function oe(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function ie(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){oe(i,n,o,a,s,"next",e)}function s(e){oe(i,n,o,a,s,"throw",e)}a(void 0)}))}}class ae{constructor(e){e.openURIWithCallback||(e.openURIWithCallback=this.getDefaultOpenURIWithCallback()),e.storage||(e.storage=$),this.config=e,this.tokenSectionName="captcha_".concat(e.clientId)}isMatch(){var e,t;return(null===(e=this.config)||void 0===e||null===(e=e.adapter)||void 0===e||null===(t=e.isMatch)||void 0===t?void 0:t.call(e))||y()}request(e,t){var r=this;return ie((function*(){t||(t={}),t.method||(t.method="GET");var n,o="".concat(t.method,":").concat(e),i=e;t.withCaptcha&&(i=yield r.appendCaptchaTokenToURL(e,o,!1));try{n=yield r.config.request(i,t)}catch(n){return n.error===a.CAPTCHA_REQUIRED||n.error===a.CAPTCHA_INVALID?(e=yield r.appendCaptchaTokenToURL(e,o,n.error===a.CAPTCHA_INVALID),r.config.request(e,t)):Promise.reject(n)}return n}))()}getDefaultOpenURIWithCallback(){if(!this.isMatch()&&!m()&&(window.location.search.indexOf("__captcha")>0&&(document.body.style.display="none"),null===document.getElementById("captcha_panel_wrap"))){var e=document.createElement("div");e.style.cssText="background-color: rgba(0, 0, 0, 0.7);position: fixed;left: 0px;right: 0px;top: 0px;bottom: 0px;padding: 9vw 0 0 0;display: none;z-index:100;",e.setAttribute("id","captcha_panel_wrap"),setTimeout(()=>{document.body.appendChild(e)},0)}return this.defaultOpenURIWithCallback}defaultOpenURIWithCallback(e,t){return ie((function*(){var{width:r="355px",height:n="355px"}=t||{};if(e.match(/^(data:.*)$/))return Promise.reject({error:a.UNIMPLEMENTED,error_description:"need to impl captcha data"});var o=document.getElementById("captcha_panel_wrap"),i=document.createElement("iframe");return o.innerHTML="",i.setAttribute("src",e),i.setAttribute("id","review-panel-iframe"),i.style.cssText="min-width:".concat(r,";display:block;height:").concat(n,";margin:0 auto;background-color: rgb(255, 255, 255);border: none;"),o.appendChild(i),o.style.display="block",new Promise((e,t)=>{i.onload=function(){try{var r=window.location,n=i.contentWindow.location;if(n.host+n.pathname===r.host+r.pathname){o.style.display="none";var a=new ne(n.search),s=a.get("captcha_token");return s?e({captcha_token:s,expires_in:Number(a.get("expires_in"))}):t({error:a.get("error"),error_description:a.get("error_description")})}o.style.display="block"}catch(e){o.style.display="block"}}})}))()}getCaptchaToken(e,r){var n=this;return ie((function*(){if(!e){var o=yield n.findCaptchaToken();if(o)return o}var i;if(n.isMatch()||m()){var a=yield n.config.request(t.CAPTCHA_DATA_URL,{method:"POST",body:{state:r,redirect_uri:""},withCredentials:!1});i={url:"".concat(a.data,"?state=").concat(encodeURIComponent(r),"&token=").concat(encodeURIComponent(a.token))}}else{var s="".concat(window.location.origin+window.location.pathname,"?__captcha=on");if((i=yield n.config.request(t.GET_CAPTCHA_URL,{method:"POST",body:{client_id:n.config.clientId,redirect_uri:s,state:r},withCredentials:!1})).captcha_token){var c={captcha_token:i.captcha_token,expires_in:i.expires_in};return n.saveCaptchaToken(c),i.captcha_token}}var u=yield n.config.openURIWithCallback(i.url);return n.saveCaptchaToken(u),u.captcha_token}))()}appendCaptchaTokenToURL(e,t,r){var n=this;return ie((function*(){var o=yield n.getCaptchaToken(r,t);return e.indexOf("?")>0?e+="&captcha_token=".concat(o):e+="?captcha_token=".concat(o),e}))()}saveCaptchaToken(e){var t=this;return ie((function*(){e.expires_at=new Date(Date.now()+1e3*(e.expires_in-10));var r=JSON.stringify(e);yield t.config.storage.setItem(t.tokenSectionName,r)}))()}findCaptchaToken(){var e=this;return ie((function*(){var t=yield e.config.storage.getItem(e.tokenSectionName);if(null!=t)try{var r=JSON.parse(t);return null!=r&&r.expires_at&&(r.expires_at=new Date(r.expires_at)),r.expires_at<new Date?null:r.captcha_token}catch(t){return yield e.config.storage.removeItem(e.tokenSectionName),null}return null}))()}}var se=["provider_redirect_uri","other_params"];function ce(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function ue(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){ce(i,n,o,a,s,"next",e)}function s(e){ce(i,n,o,a,s,"throw",e)}a(void 0)}))}}function le(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function de(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?le(Object(r),!0).forEach((function(t){he(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):le(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function he(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function fe(e,t){try{var n;if(((null==t||null===(n=t.root)||void 0===n?void 0:n.globalThis)||globalThis).IS_MP_BUILD)return;0}catch(t){if(e)return(()=>{try{return r(3)}catch(e){return}})()}}class pe{static parseParamsToSearch(e){return Object.keys(e).forEach(t=>{e[t]||delete e[t]}),new ne(e).toString()}constructor(e){var{request:t}=e,r=e.credentialsClient;if(!r){var n={apiOrigin:e.apiOrigin,apiPath:e.apiPath,clientId:e.clientId,storage:e.storage,env:e.env,baseRequest:e.baseRequest,anonymousSignInFunc:e.anonymousSignInFunc,wxCloud:e.wxCloud,onCredentialsError:e.onCredentialsError,headers:e.headers||{},i18n:e.i18n};r=new re(n)}if(!t){var o=r.request.bind(r),i=new ae(de({clientId:e.clientId,request:o,storage:e.storage,adapter:e.adapter},e.captchaOptions));t=i.request.bind(i)}this.config={env:e.env,apiOrigin:e.apiOrigin,apiPath:e.apiPath,clientId:e.clientId,request:t,credentialsClient:r,storage:e.storage||$,adapter:e.adapter}}getParamsByVersion(e,r){var n,i=(0,l.I)(e),a=(null===(n={v2:o}[null==i?void 0:i.version])||void 0===n?void 0:n[r])||t[r];return i&&delete i.version,{params:i,url:a}}signIn(e){var t=this;return ue((function*(){var r=e.version||"v1",n=t.getParamsByVersion(e,"AUTH_SIGN_IN_URL");n.params.query&&delete n.params.query;var o=yield t.getEncryptParams(n.params),i=yield t.config.request(n.url,{method:"POST",body:o});return yield t.config.credentialsClient.setCredentials(de(de({},i),{},{version:r})),Promise.resolve(i)}))()}signInAnonymously(){var e=arguments,r=this;return ue((function*(){var n=e.length>0&&void 0!==e[0]?e[0]:{},o=e.length>1&&void 0!==e[1]&&e[1],i=yield r.config.request(t.AUTH_SIGN_IN_ANONYMOUSLY_URL,{method:"POST",body:n,useWxCloud:o});return yield r.config.credentialsClient.setCredentials(i),Promise.resolve(i)}))()}signUp(e){var r=this;return ue((function*(){var n=yield r.config.request(t.AUTH_SIGN_UP_URL,{method:"POST",body:e});return yield r.config.credentialsClient.setCredentials(n),Promise.resolve(n)}))()}signOut(e){var r=this;return ue((function*(){var n={};if(e){try{n=yield r.config.request(t.AUTH_SIGNOUT_URL,{method:"POST",withCredentials:!0,body:e})}catch(e){e.error!==a.UNAUTHENTICATED&&console.log("sign_out_error",e)}return yield r.config.credentialsClient.setCredentials(),n}var o=yield r.config.credentialsClient.getAccessToken(),i=yield r.config.request(t.AUTH_REVOKE_URL,{method:"POST",body:{token:o}});return yield r.config.credentialsClient.setCredentials(),Promise.resolve(i)}))()}revokeAllDevices(){var e=this;return ue((function*(){yield e.config.request(t.AUTH_REVOKE_ALL_URL,{method:"DELETE",withCredentials:!0})}))()}revokeDevice(e){var r=this;return ue((function*(){yield r.config.request(t.AUTHORIZED_DEVICES_DELETE_URL+e.device_id,{method:"DELETE",withCredentials:!0})}))()}getVerification(e,r){var n=this;return ue((function*(){var o=!1;"CUR_USER"===e.target?o=!0:(yield n.hasLoginState())&&(o=!0);return n.config.request(t.VERIFICATION_URL,{method:"POST",body:e,withCaptcha:(null==r?void 0:r.withCaptcha)||!1,withCredentials:o})}))()}verify(e){var t=this;return ue((function*(){var r=t.getParamsByVersion(e,"VERIFY_URL"),n=yield t.config.request(r.url,{method:"POST",body:r.params});return"v2"===(null==e?void 0:e.version)&&(yield t.config.credentialsClient.setCredentials(de(de({},n),{},{version:"v2"}))),n}))()}genProviderRedirectUri(e){var r=this;return ue((function*(){var{provider_redirect_uri:n,other_params:o={}}=e,i=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.includes(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.includes(r)||{}.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,se);n&&!i.redirect_uri&&(i.redirect_uri=n);var a="".concat(t.PROVIDER_URI_URL,"?").concat(pe.parseParamsToSearch(i));return Object.keys(o).forEach(e=>{var t=o[e];("sign_out_uri"!==e||(null==t?void 0:t.length)>0)&&(a+="&other_params[".concat(e,"]=").concat(encodeURIComponent(t)))}),r.config.request(a,{method:"GET"})}))()}grantProviderToken(e){var r=arguments,n=this;return ue((function*(){var o=r.length>1&&void 0!==r[1]&&r[1];return n.config.request(t.PROVIDER_TOKEN_URL,{method:"POST",body:e,useWxCloud:o})}))()}patchProviderToken(e){var r=this;return ue((function*(){return r.config.request(t.PROVIDER_TOKEN_URL,{method:"PATCH",body:e})}))()}signInWithProvider(e){var t=arguments,r=this;return ue((function*(){var n=t.length>1&&void 0!==t[1]&&t[1],o=r.getParamsByVersion(e,"AUTH_SIGN_IN_WITH_PROVIDER_URL"),i=yield r.config.request(o.url,{method:"POST",body:o.params,useWxCloud:n});return yield r.config.credentialsClient.setCredentials(de(de({},i),{},{version:(null==e?void 0:e.version)||"v1"})),Promise.resolve(i)}))()}signInCustom(e){var r=this;return ue((function*(){var n=yield r.config.request(t.AUTH_SIGN_IN_CUSTOM,{method:"POST",body:e});return yield r.config.credentialsClient.setCredentials(n),Promise.resolve(n)}))()}signInWithWechat(){var e=arguments,r=this;return ue((function*(){var n=e.length>0&&void 0!==e[0]?e[0]:{},o=yield r.config.request(t.AUTH_SIGN_IN_WITH_WECHAT_URL,{method:"POST",body:n});return yield r.config.credentialsClient.setCredentials(o),Promise.resolve(o)}))()}bindWithProvider(e){var r=this;return ue((function*(){return r.config.request(t.PROVIDER_BIND_URL,{method:"POST",body:e,withCredentials:!0})}))()}getUserProfile(e){var t=this;return ue((function*(){return t.getUserInfo(e)}))()}getUserInfo(){var e=arguments,t=this;return ue((function*(){var r,n=e.length>0&&void 0!==e[0]?e[0]:{},o=t.getParamsByVersion(n,"USER_ME_URL");if(null!==(r=o.params)&&void 0!==r&&r.query){var i=new ne(o.params.query);o.url+="?".concat(i.toString())}var a=yield t.config.request(o.url,{method:"GET",withCredentials:!0});return a.sub&&(a.uid=a.sub),a}))()}getWedaUserInfo(){var e=this;return ue((function*(){return yield e.config.request(t.WEDA_USER_URL,{method:"GET",withCredentials:!0})}))()}deleteMe(e){var t=this;return ue((function*(){var r=t.getParamsByVersion(e,"USER_ME_URL"),n="".concat(r.url,"?").concat(pe.parseParamsToSearch(r.params));return t.config.request(n,{method:"DELETE",withCredentials:!0})}))()}hasLoginState(){var e=this;return ue((function*(){try{return yield e.config.credentialsClient.getAccessToken(),!0}catch(e){return!1}}))()}hasLoginStateSync(){return this.config.credentialsClient.getCredentialsSync()}getLoginState(){var e=this;return ue((function*(){return e.config.credentialsClient.getCredentialsAsync()}))()}transByProvider(e){var r=this;return ue((function*(){return r.config.request(t.USER_TRANS_BY_PROVIDER_URL,{method:"PATCH",body:e,withCredentials:!0})}))()}grantToken(e){var t=this;return ue((function*(){var r=t.getParamsByVersion(e,"AUTH_TOKEN_URL");return t.config.request(r.url,{method:"POST",body:r.params})}))()}getProviders(){var e=this;return ue((function*(){return e.config.request(t.PROVIDER_LIST,{method:"GET",withCredentials:!0})}))()}unbindProvider(e){var r=this;return ue((function*(){return r.config.request("".concat(t.PROVIDER_UNBIND_URL,"/").concat(e.provider_id),{method:"DELETE",withCredentials:!0})}))()}checkPassword(e){var r=this;return ue((function*(){return r.config.request("".concat(t.CHECK_PWD_URL),{method:"POST",withCredentials:!0,body:e})}))()}editContact(e){var r=this;return ue((function*(){return r.config.request("".concat(t.BIND_CONTACT_URL),{method:"PATCH",withCredentials:!0,body:e})}))()}setPassword(e){var r=this;return ue((function*(){return r.config.request("".concat(t.AUTH_SET_PASSWORD),{method:"PATCH",withCredentials:!0,body:e})}))()}updatePasswordByOld(e){var t=this;return ue((function*(){var r=yield t.sudo({password:e.old_password});return t.setPassword({sudo_token:r.sudo_token,new_password:e.new_password})}))()}sudo(e){var r=this;return ue((function*(){return r.config.request("".concat(t.SUDO_URL),{method:"POST",withCredentials:!0,body:e})}))()}sendVerificationCodeToCurrentUser(e){var r=this;return ue((function*(){return e.target="CUR_USER",r.config.request(t.VERIFICATION_URL,{method:"POST",body:e,withCredentials:!0,withCaptcha:!0})}))()}changeBoundProvider(e){var r=this;return ue((function*(){return r.config.request("".concat(t.PROVIDER_LIST,"/").concat(e.provider_id,"/trans"),{method:"POST",body:{provider_trans_token:e.trans_token},withCredentials:!0})}))()}setUserProfile(e){var r=this;return ue((function*(){return r.config.request(t.USER_PRIFILE_URL,{method:"PATCH",body:e,withCredentials:!0})}))()}updateUserBasicInfo(e){var r=this;return ue((function*(){return r.config.request(t.USER_BASIC_EDIT_URL,{method:"POST",withCredentials:!0,body:e})}))()}queryUserProfile(e){var r=this;return ue((function*(){var n=new ne(e);return r.config.request("".concat(t.USER_QUERY_URL,"?").concat(n.toString()),{method:"GET",withCredentials:!0})}))()}setCustomSignFunc(e){this.getCustomSignTicketFn=e}signInWithCustomTicket(){var e=this;return ue((function*(){var t=e.getCustomSignTicketFn;if(!t)return Promise.reject({error:"failed_precondition",error_description:"please use setCustomSignFunc to set custom sign function"});var r=yield t();return e.signInCustom({provider_id:"custom",ticket:r})}))()}resetPassword(e){var r=this;return ue((function*(){return r.config.request(t.AUTH_RESET_PASSWORD,{method:"POST",body:e})}))()}authorize(e){var r=this;return ue((function*(){return r.config.request(t.AUTHORIZE_URL,{method:"POST",withCredentials:!0,body:e})}))()}authorizeDevice(e){var r=this;return ue((function*(){return r.config.request(t.AUTHORIZE_DEVICE_URL,{method:"POST",withCredentials:!0,body:e})}))()}deviceAuthorize(e){var r=this;return ue((function*(){return r.config.request(t.AUTH_GET_DEVICE_CODE,{method:"POST",body:e,withCredentials:!0})}))()}authorizeInfo(e){var r=this;return ue((function*(){var n="".concat(t.AUTHORIZE_INFO_URL,"?").concat(pe.parseParamsToSearch(e)),o=!0,i=!1;return(yield r.hasLoginState())&&(i=!0,o=!1),r.config.request(n,{method:"GET",withBasicAuth:o,withCredentials:i})}))()}checkUsername(e){var r=this;return ue((function*(){return r.config.request(t.CHECK_USERNAME,{method:"GET",body:e,withCredentials:!0})}))()}checkIfUserExist(e){var r=this;return ue((function*(){var n=new ne(e);return r.config.request("".concat(t.CHECK_IF_USER_EXIST,"?").concat(n.toString()),{method:"GET"})}))()}loginScope(){var e=this;return ue((function*(){return e.config.credentialsClient.getScope()}))()}loginGroups(){var e=this;return ue((function*(){return e.config.credentialsClient.getGroups()}))()}refreshTokenForce(e){var t=this;return ue((function*(){var r=yield t.config.credentialsClient.getCredentials();return yield t.config.credentialsClient.refreshToken(de(de({},r),{},{version:(null==e?void 0:e.version)||"v1"}))}))()}getCredentials(){var e=this;return ue((function*(){return e.config.credentialsClient.getCredentials()}))()}getPublicKey(){var e=this;return ue((function*(){return e.config.request(o.AUTH_PUBLIC_KEY,{method:"POST",body:{}})}))()}getEncryptParams(e){var t=this;return ue((function*(){var{isEncrypt:r}=e;delete e.isEncrypt;var n=(0,l.I)(e),o=fe(r,t.config.adapter);if(!o)return e;var i="",a="";try{var s=yield t.getPublicKey();if(i=s.public_key,a=s.public_key_thumbprint,!i||!a)throw s}catch(e){throw e}return{params:o.getEncryptInfo({publicKey:i,payload:n}),public_key_thumbprint:a}}))()}getProviderSubType(){var e=this;return ue((function*(){return e.config.request(t.GET_PROVIDER_TYPE,{method:"POST",body:{provider_id:"weda"}})}))()}verifyCaptchaData(e){var r=this;return ue((function*(){var{token:n,key:o}=e;return r.config.request(t.VERIFY_CAPTCHA_DATA_URL,{method:"POST",body:{token:n,key:o},withCredentials:!1})}))()}createCaptchaData(e){var r=this;return ue((function*(){var{state:n,redirect_uri:o}=e;return r.config.request(t.CAPTCHA_DATA_URL,{method:"POST",body:{state:n,redirect_uri:o},withCredentials:!1})}))()}getMiniProgramCode(e){var r=this;return ue((function*(){return r.config.request(t.GET_MINIPROGRAM_QRCODE,{method:"POST",body:e})}))()}getMiniProgramQrCodeStatus(e){var r=this;return ue((function*(){return r.config.request(t.GET_MINIPROGRAM_QRCODE_STATUS,{method:"POST",body:e})}))()}getUserBehaviorLog(e){var r=this;return ue((function*(){var n="".concat(t.GET_USER_BEHAVIOR_LOG,"?").concat({LOGIN:"query[action]=USER_LOGIN",MODIFY:"ne_query[action]=USER_LOGIN"}[e.type],"&limit=").concat(e.limit).concat(e.page_token?"&page_token=".concat(e.page_token):"");return r.config.request(n,{method:"GET",withCredentials:!0})}))()}modifyPassword(e){var r=this;return ue((function*(){var n="",o="",i=fe(!0,r.config.adapter);if(!i)throw new Error("do not support encrypt, a encrypt util required.");try{var a=yield r.getPublicKey();if(n=a.public_key,o=a.public_key_thumbprint,!n||!o)throw a}catch(e){throw e}var s=e.password?i.getEncryptInfo({publicKey:n,payload:e.password}):"",c=i.getEncryptInfo({publicKey:n,payload:e.new_password});return r.config.request(t.USER_BASIC_EDIT_URL,{method:"POST",withCredentials:!0,body:{user_id:e.user_id,encrypt_password:s,encrypt_new_password:c,public_key_thumbprint:o}})}))()}modifyPasswordWithoutLogin(e){var t=this;return ue((function*(){var r="",n="",i=fe(!0,t.config.adapter);if(!i)throw new Error("do not support encrypt, a encrypt util required.");try{var a=yield t.getPublicKey();if(r=a.public_key,n=a.public_key_thumbprint,!r||!n)throw a}catch(e){throw e}var s=e.password?i.getEncryptInfo({publicKey:r,payload:e.password}):"",c=i.getEncryptInfo({publicKey:r,payload:e.new_password});return t.config.request(o.AUTH_RESET_PASSWORD,{method:"POST",body:{username:e.username,password:s,new_password:c,public_key_thumbprint:n}})}))()}}function ve(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ye(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ve(Object(r),!0).forEach((function(t){_e(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ve(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function _e(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class ge{constructor(e){var{apiOrigin:t,apiPath:r=c,clientId:n,env:o,storage:i,request:a,baseRequest:s,anonymousSignInFunc:u,wxCloud:l,adapter:d,onCredentialsError:h,headers:f,i18n:p,useWxCloud:v}=e;this.oauth2client=new re({apiOrigin:t,apiPath:r,clientId:n,env:o,storage:i,baseRequest:s||a,anonymousSignInFunc:u,wxCloud:l,onCredentialsError:h,headers:f||{},i18n:p,useWxCloud:v}),this.authApi=new pe(ye(ye({credentialsClient:this.oauth2client},e),{},{request:a?this.oauth2client.request.bind(this.oauth2client):void 0,adapter:d}))}}})(),n})());
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("tcboauth",[],t):"object"==typeof exports?exports.tcboauth=t():e.tcboauth=t()}("undefined"!=typeof window?window:this,()=>(()=>{"use strict";var e={3:(e,t,r)=>{r.r(t),r.d(t,{getEncryptInfo:()=>i});const n=void 0;var o=r(912),i=function(){var{publicKey:e="",payload:t={}}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e)return"";try{var r=(0,o.I)(t),i=new n;i.setPublicKey(e);var a=i.encryptLong("object"==typeof r?JSON.stringify(r):r);return a}catch(e){console.error("encrypt error:",e)}return""}},912:(e,t,r)=>{r.d(t,{I:()=>n,y:()=>o});var n=e=>{var t=t=>{for(var r in e)e.hasOwnProperty(r)&&(t[r]=n(e[r]));return t},r=null==e?"NullOrUndefined":Object.prototype.toString.call(e).slice(8,-1);if(["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"].includes(r))return e.slice();switch(r){case"Object":return t(Object.create(Object.getPrototypeOf(e)));case"Array":return t([]);case"Date":return new Date(e.valueOf());case"RegExp":return new RegExp(e.source,(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.sticky?"y":"")+(e.unicode?"u":""));default:return e}},o=e=>{var t=e.match(/^(?:http(s)?:\/\/[^\/]+)?(\/[^\?#]*)/);return t&&t[2]||""}}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={exports:{}};return e[n](i,i.exports,r),i.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{r.r(n),r.d(n,{AUTH_API_PREFIX:()=>c,Auth:()=>pe,CloudbaseOAuth:()=>ge,authModels:()=>e});var e={};r.r(e);var t,o,i,a,s,c="/auth";function u(){return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,e=>{var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}!function(e){e.AUTH_SIGN_UP_URL="/v1/signup",e.AUTH_TOKEN_URL="/v1/token",e.AUTH_REVOKE_URL="/v1/revoke",e.WEDA_USER_URL="/v1/plugin/weda/userinfo",e.AUTH_RESET_PASSWORD="/v1/reset",e.AUTH_GET_DEVICE_CODE="/v1/device/code",e.CHECK_USERNAME="/v1/checkUsername",e.CHECK_IF_USER_EXIST="/v1/checkIfUserExist",e.GET_PROVIDER_TYPE="/v1/mgr/provider/providerSubType",e.AUTH_SIGN_IN_URL="/v1/signin",e.AUTH_SIGN_IN_ANONYMOUSLY_URL="/v1/signin/anonymously",e.AUTH_SIGN_IN_WITH_PROVIDER_URL="/v1/signin/with/provider",e.AUTH_SIGN_IN_WITH_WECHAT_URL="/v1/signin/wechat/noauth",e.AUTH_SIGN_IN_CUSTOM="/v1/signin/custom",e.PROVIDER_TOKEN_URL="/v1/provider/token",e.PROVIDER_URI_URL="/v1/provider/uri",e.USER_ME_URL="/v1/user/me",e.AUTH_SIGNOUT_URL="/v1/user/signout",e.USER_QUERY_URL="/v1/user/query",e.USER_PRIFILE_URL="/v1/user/profile",e.USER_BASIC_EDIT_URL="/v1/user/basic/edit",e.USER_TRANS_BY_PROVIDER_URL="/v1/user/trans/by/provider",e.PROVIDER_LIST="/v1/user/provider",e.PROVIDER_BIND_URL="/v1/user/provider/bind",e.PROVIDER_UNBIND_URL="/v1/user/provider",e.CHECK_PWD_URL="/v1/user/sudo",e.SUDO_URL="/v1/user/sudo",e.BIND_CONTACT_URL="/v1/user/contact",e.AUTH_SET_PASSWORD="/v1/user/password",e.AUTHORIZE_DEVICE_URL="/v1/user/device/authorize",e.AUTHORIZE_URL="/v1/user/authorize",e.AUTHORIZE_INFO_URL="/v1/user/authorize/info",e.AUTHORIZED_DEVICES_DELETE_URL="/v1/user/authorized/devices/",e.AUTH_REVOKE_ALL_URL="/v1/user/revoke/all",e.GET_USER_BEHAVIOR_LOG="/v1/user/security/history",e.VERIFICATION_URL="/v1/verification",e.VERIFY_URL="/v1/verification/verify",e.CAPTCHA_DATA_URL="/v1/captcha/data",e.VERIFY_CAPTCHA_DATA_URL="/v1/captcha/data/verify",e.GET_CAPTCHA_URL="/v1/captcha/init",e.GET_MINIPROGRAM_QRCODE="/v1/qrcode/generate",e.GET_MINIPROGRAM_QRCODE_STATUS="/v1/qrcode/get/status"}(t||(t={})),function(e){e.AUTH_SIGN_IN_URL="/v2/signin/username",e.AUTH_TOKEN_URL="/v2/token",e.USER_ME_URL="/v2/user/me",e.VERIFY_URL="/v2/signin/verificationcode",e.AUTH_SIGN_IN_WITH_PROVIDER_URL="/v2/signin/with/provider",e.AUTH_PUBLIC_KEY="/v2/signin/publichkey",e.AUTH_RESET_PASSWORD="/v2/signin/password/update"}(o||(o={})),function(e){e.REGISTER="REGISTER",e.SIGN_IN="SIGN_IN",e.PASSWORD_RESET="PASSWORD_RESET",e.EMAIL_ADDRESS_CHANGE="EMAIL_ADDRESS_CHANGE",e.PHONE_NUMBER_CHANGE="PHONE_NUMBER_CHANGE"}(i||(i={})),function(e){e.UNREACHABLE="unreachable",e.LOCAL="local",e.CANCELLED="cancelled",e.UNKNOWN="unknown",e.UNAUTHENTICATED="unauthenticated",e.RESOURCE_EXHAUSTED="resource_exhausted",e.FAILED_PRECONDITION="failed_precondition",e.INVALID_ARGUMENT="invalid_argument",e.DEADLINE_EXCEEDED="deadline_exceeded",e.NOT_FOUND="not_found",e.ALREADY_EXISTS="already_exists",e.PERMISSION_DENIED="permission_denied",e.ABORTED="aborted",e.OUT_OF_RANGE="out_of_range",e.UNIMPLEMENTED="unimplemented",e.INTERNAL="internal",e.UNAVAILABLE="unavailable",e.DATA_LOSS="data_loss",e.INVALID_PASSWORD="invalid_password",e.PASSWORD_NOT_SET="password_not_set",e.INVALID_STATUS="invalid_status",e.USER_PENDING="user_pending",e.USER_BLOCKED="user_blocked",e.INVALID_VERIFICATION_CODE="invalid_verification_code",e.TWO_FACTOR_REQUIRED="two_factor_required",e.INVALID_TWO_FACTOR="invalid_two_factor",e.INVALID_TWO_FACTOR_RECOVERY="invalid_two_factor_recovery",e.UNDER_REVIEW="under_review",e.INVALID_REQUEST="invalid_request",e.UNAUTHORIZED_CLIENT="unauthorized_client",e.ACCESS_DENIED="access_denied",e.UNSUPPORTED_RESPONSE_TYPE="unsupported_response_type",e.INVALID_SCOPE="invalid_scope",e.INVALID_GRANT="invalid_grant",e.SERVER_ERROR="server_error",e.TEMPORARILY_UNAVAILABLE="temporarily_unavailable",e.INTERACTION_REQUIRED="interaction_required",e.LOGIN_REQUIRED="login_required",e.ACCOUNT_SELECTION_REQUIRED="account_selection_required",e.CONSENT_REQUIRED="consent_required",e.INVALID_REQUEST_URI="invalid_request_uri",e.INVALID_REQUEST_OBJECT="invalid_request_object",e.REQUEST_NOT_SUPPORTED="request_not_supported",e.REQUEST_URI_NOT_SUPPORTED="request_uri_not_supported",e.REGISTRATION_NOT_SUPPORTED="registration_not_supported",e.CAPTCHA_REQUIRED="captcha_required",e.CAPTCHA_INVALID="captcha_invalid"}(a||(a={})),function(e){e.CLIENT_ID="client_id",e.CLIENT_SECRET="client_secret",e.RESPONSE_TYPE="response_type",e.SCOPE="scope",e.STATE="state",e.REDIRECT_URI="redirect_uri",e.ERROR="error",e.ERROR_DESCRIPTION="error_description",e.ERROR_URI="error_uri",e.GRANT_TYPE="grant_type",e.CODE="code",e.ACCESS_TOKEN="access_token",e.TOKEN_TYPE="token_type",e.EXPIRES_IN="expires_in",e.USERNAME="username",e.PASSWORD="password",e.REFRESH_TOKEN="refresh_token"}(s||(s={}));var l=r(912);function d(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function h(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){d(i,n,o,a,s,"next",e)}function s(e){d(i,n,o,a,s,"throw",e)}a(void 0)}))}}var f=new Map;class p{constructor(e){this.clientId=(null==e?void 0:e.clientId)||"",f=f||new Map}run(e,t){var r=this;return h((function*(){e="".concat(r.clientId,"_").concat(e);var n=f.get(e);return n||(n=new Promise((n,o)=>{h((function*(){try{yield r.runIdlePromise();var i=t();n(yield i)}catch(e){o(e)}finally{f.delete(e)}}))()}),f.set(e,n)),n}))()}runIdlePromise(){return Promise.resolve()}}var v="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function y(){if("undefined"==typeof globalThis)return!1;var{wx:e}=globalThis;if(void 0===e)return!1;if(void 0===globalThis.Page)return!1;if(!e.getSystemInfoSync)return!1;if(!e.getStorageSync)return!1;if(!e.setStorageSync)return!1;if(!e.connectSocket)return!1;if(!e.request)return!1;try{if(!e.getSystemInfoSync())return!1;if("qq"===e.getSystemInfoSync().AppPlatform)return!1}catch(e){return!1}return!0}var _=!1;function g(){_=_||void 0!==typeof window&&"miniprogram"===window.__wxjs_environment}try{y()||(_=_||!!navigator.userAgent.match(/miniprogram/i)||"miniprogram"===window.__wxjs_environment,window&&window.WeixinJSBridge&&window.WeixinJSBridge.invoke?g():"undefined"!=typeof document&&document.addEventListener("WeixinJSBridgeReady",g,!1))}catch(B){}function m(){return _}var E="@cloudbase/js-sdk";function I(){return E}var b="https:";var R,C="INVALID_PARAMS",T="INVALID_OPERATION",O="OPERATION_FAIL";!function(e){e.local="local",e.none="none",e.session="session"}(R||(R={}));var S=function(){};function w(e,t){console.warn("[".concat(I(),"][").concat(e,"]:").concat(t))}var A,P=(A=function(e,t){return(A=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}A(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),U=function(){return(U=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},N=function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},L=function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}};!function(e){function t(t){var r=e.call(this)||this,n=t.timeout,o=t.timeoutMsg,i=t.restrictedMethods;return r.timeout=n||0,r.timeoutMsg=o||"请求超时",r.restrictedMethods=i||["get","post","upload","download"],r}P(t,e),t.prototype.get=function(e){return this.request(U(U({},e),{method:"get"}),this.restrictedMethods.includes("get"))},t.prototype.post=function(e){return this.request(U(U({},e),{method:"post"}),this.restrictedMethods.includes("post"))},t.prototype.put=function(e){return this.request(U(U({},e),{method:"put"}))},t.prototype.upload=function(e){var t=e.data,r=e.file,n=e.name,o=e.method,i=e.headers,a=void 0===i?{}:i,s={post:"post",put:"put"}[null==o?void 0:o.toLowerCase()]||"put",c=new FormData;return"post"===s?(Object.keys(t).forEach((function(e){c.append(e,t[e])})),c.append("key",n),c.append("file",r),this.request(U(U({},e),{data:c,method:s}),this.restrictedMethods.includes("upload"))):this.request(U(U({},e),{method:"put",headers:a,body:r}),this.restrictedMethods.includes("upload"))},t.prototype.download=function(e){return N(this,void 0,void 0,(function(){var t,r,n,o;return L(this,(function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),[4,this.get(U(U({},e),{headers:{},responseType:"blob"}))];case 1:return t=i.sent().data,r=window.URL.createObjectURL(new Blob([t])),n=decodeURIComponent(new URL(e.url).pathname.split("/").pop()||""),(o=document.createElement("a")).href=r,o.setAttribute("download",n),o.style.display="none",document.body.appendChild(o),o.click(),window.URL.revokeObjectURL(r),document.body.removeChild(o),[3,3];case 2:return i.sent(),[3,3];case 3:return[2,new Promise((function(t){t({statusCode:200,tempFilePath:e.url})}))]}}))}))},t.prototype.fetch=function(e){var t;return N(this,void 0,void 0,(function(){var r,n,o,i,a,s,c,u,l,d,h,f,p,v=this;return L(this,(function(y){switch(y.label){case 0:return r=new AbortController,n=e.url,o=e.enableAbort,i=void 0!==o&&o,a=e.stream,s=void 0!==a&&a,c=e.signal,u=e.timeout,l=e.shouldThrowOnError,d=void 0===l||l,h=null!=u?u:this.timeout,c&&(c.aborted&&r.abort(),c.addEventListener("abort",(function(){return r.abort()}))),f=null,i&&h&&(f=setTimeout((function(){console.warn(v.timeoutMsg),r.abort(new Error(v.timeoutMsg))}),h)),[4,fetch(n,U(U({},e),{signal:r.signal})).then((function(e){return N(v,void 0,void 0,(function(){var t,r,n;return L(this,(function(o){switch(o.label){case 0:return clearTimeout(f),d?e.ok?(t=e,[3,3]):[3,1]:[3,4];case 1:return n=(r=Promise).reject,[4,e.json()];case 2:t=n.apply(r,[o.sent()]),o.label=3;case 3:return[2,t];case 4:return[2,e]}}))}))})).catch((function(e){if(clearTimeout(f),d)return Promise.reject(e)}))];case 1:return p=y.sent(),[2,{data:s?p.body:(null===(t=p.headers.get("content-type"))||void 0===t?void 0:t.includes("application/json"))?p.json():p.text(),statusCode:p.status,header:p.headers}]}}))}))},t.prototype.request=function(e,t){var r=this;void 0===t&&(t=!1);var n=String(e.method).toLowerCase()||"get";return new Promise((function(o){var i,a,s,c=e.url,u=e.headers,l=void 0===u?{}:u,d=e.data,h=e.responseType,f=e.withCredentials,p=e.body,v=e.onUploadProgress,y=function(e,t,r){void 0===r&&(r={});var n=/\?/.test(t),o="";return Object.keys(r).forEach((function(e){""===o?!n&&(t+="?"):o+="&",o+="".concat(e,"=").concat(encodeURIComponent(r[e]))})),/^http(s)?:\/\//.test(t+=o)?t:"".concat(e).concat(t)}(b,c,"get"===n?d:{}),_=new XMLHttpRequest;_.open(n,y),h&&(_.responseType=h),Object.keys(l).forEach((function(e){_.setRequestHeader(e,l[e])})),v&&_.upload.addEventListener("progress",v),_.onreadystatechange=function(){var e={};if(4===_.readyState){var t=_.getAllResponseHeaders().trim().split(/[\r\n]+/),r={};t.forEach((function(e){var t=e.split(": "),n=t.shift().toLowerCase(),o=t.join(": ");r[n]=o})),e.header=r,e.statusCode=_.status;try{e.data="blob"===h?_.response:JSON.parse(_.responseText)}catch(t){e.data="blob"===h?_.response:_.responseText}clearTimeout(i),o(e)}},t&&r.timeout&&(i=setTimeout((function(){console.warn(r.timeoutMsg),_.abort()}),r.timeout)),s=d,a="[object FormData]"===Object.prototype.toString.call(s)?d:"application/x-www-form-urlencoded"===l["content-type"]?function(e){void 0===e&&(e={});var t=[];return Object.keys(e).forEach((function(r){t.push("".concat(r,"=").concat(encodeURIComponent(e[r])))})),t.join("&")}(d):p||(d?JSON.stringify(d):void 0),f&&(_.withCredentials=!0),_.send(a)}))}}((function(){}));var D;!function(e){e.WEB="web",e.WX_MP="wx_mp"}(D||(D={}));var k=function(){var e=function(t,r){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(t,r)};return function(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),x=function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},j=function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}},q=function(e){function t(t){var r=e.call(this)||this;return r.root=t,t.tcbCacheObject||(t.tcbCacheObject={}),r}return k(t,e),t.prototype.setItem=function(e,t){this.root.tcbCacheObject[e]=t},t.prototype.getItem=function(e){return this.root.tcbCacheObject[e]},t.prototype.removeItem=function(e){delete this.root.tcbCacheObject[e]},t.prototype.clear=function(){delete this.root.tcbCacheObject},t}(S);!function(){function e(e){this.keys={};var t=e.persistence,r=e.platformInfo,n=void 0===r?{}:r,o=e.keys,i=void 0===o?{}:o;this.platformInfo=n,this.storage||(this.persistenceTag=this.platformInfo.adapter.primaryStorage||t,this.storage=function(e,t){switch(e){case"local":return t.localStorage?t.localStorage:(w(C,"localStorage is not supported on current platform"),new q(t.root));case"none":return new q(t.root);default:return t.localStorage?t.localStorage:(w(C,"localStorage is not supported on current platform"),new q(t.root))}}(this.persistenceTag,this.platformInfo.adapter),this.keys=i)}Object.defineProperty(e.prototype,"mode",{get:function(){return this.storage.mode||"sync"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"persistence",{get:function(){return this.persistenceTag},enumerable:!1,configurable:!0}),e.prototype.setStore=function(e,t,r){if("async"!==this.mode){if(this.storage)try{var n={version:r||"localCachev1",content:t};this.storage.setItem(e,JSON.stringify(n))}catch(e){throw new Error(JSON.stringify({code:O,msg:"[".concat(I(),"][").concat(O,"]setStore failed"),info:e}))}}else w(T,"current platform's storage is asynchronous, please use setStoreAsync insteed")},e.prototype.setStoreAsync=function(e,t,r){return x(this,void 0,void 0,(function(){var n;return j(this,(function(o){switch(o.label){case 0:if(!this.storage)return[2];o.label=1;case 1:return o.trys.push([1,3,,4]),n={version:r||"localCachev1",content:t},[4,this.storage.setItem(e,JSON.stringify(n))];case 2:return o.sent(),[3,4];case 3:return o.sent(),[2];case 4:return[2]}}))}))},e.prototype.getStore=function(e,t){var r;if("async"!==this.mode){try{if("undefined"!=typeof process&&(null===(r=process.env)||void 0===r?void 0:r.tcb_token))return process.env.tcb_token;if(!this.storage)return""}catch(e){return""}t=t||"localCachev1";var n=this.storage.getItem(e);return n&&n.indexOf(t)>=0?JSON.parse(n).content:""}w(T,"current platform's storage is asynchronous, please use getStoreAsync insteed")},e.prototype.getStoreAsync=function(e,t){var r;return x(this,void 0,void 0,(function(){var n;return j(this,(function(o){switch(o.label){case 0:try{if("undefined"!=typeof process&&(null===(r=process.env)||void 0===r?void 0:r.tcb_token))return[2,process.env.tcb_token];if(!this.storage)return[2,""]}catch(e){return[2,""]}return t=t||"localCachev1",[4,this.storage.getItem(e)];case 1:return(n=o.sent())&&n.indexOf(t)>=0?[2,JSON.parse(n).content]:[2,""]}}))}))},e.prototype.removeStore=function(e){"async"!==this.mode?this.storage.removeItem(e):w(T,"current platform's storage is asynchronous, please use removeStoreAsync insteed")},e.prototype.removeStoreAsync=function(e){return x(this,void 0,void 0,(function(){return j(this,(function(t){switch(t.label){case 0:return[4,this.storage.removeItem(e)];case 1:return t.sent(),[2]}}))}))}}();var H=function(){var e=function(t,r){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(t,r)};return function(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),G=function(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))};var V=function(e,t){this.data=t||null,this.name=e},M=function(e){function t(t,r){var n=e.call(this,"error",{error:t,data:r})||this;return n.error=t,n}return H(t,e),t}(V),W=function(){function e(){this.listeners={}}return e.prototype.on=function(e,t){return function(e,t,r){r[e]=r[e]||[],r[e].push(t)}(e,t,this.listeners),this},e.prototype.off=function(e,t){return function(e,t,r){if(null==r?void 0:r[e]){var n=r[e].indexOf(t);-1!==n&&r[e].splice(n,1)}}(e,t,this.listeners),this},e.prototype.fire=function(e,t){if(e instanceof M)return console.error(e.error),this;var r="string"==typeof e?new V(e,t||{}):e,n=r.name;if(this.listens(n)){r.target=this;for(var o=0,i=this.listeners[n]?G([],this.listeners[n],!0):[];o<i.length;o++){i[o].call(this,r)}}return this},e.prototype.listens=function(e){return this.listeners[e]&&this.listeners[e].length>0},e}();new W;var F=new W;"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.indexOf("Firefox");!function(){function e(){var e=this;this.listeners=[],this.signal={aborted:!1,addEventListener:function(t,r){"abort"===t&&e.listeners.push(r)}}}e.prototype.abort=function(){this.signal.aborted||(this.signal.aborted=!0,this.listeners.forEach((function(e){return e()})))}}();function B(e){this.message=e}B.prototype=new Error,B.prototype.name="InvalidCharacterError";"undefined"!=typeof window&&window.atob&&window.atob.bind(window);function K(e){this.message=e}K.prototype=new Error,K.prototype.name="InvalidTokenError";function Y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function J(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Y(Object(r),!0).forEach((function(t){Q(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Y(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function Q(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function z(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function X(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){z(i,n,o,a,s,"next",e)}function s(e){z(i,n,o,a,s,"throw",e)}a(void 0)}))}}var Z=function(){var e=X((function*(e,t){var r=null,n=null;try{var o=Object.assign({},t);o.method||(o.method="GET"),o.body&&"string"!=typeof o.body&&(o.body=JSON.stringify(o.body));var i=yield fetch(e,o),s=yield i.json();null!=s&&s.error?(n=s).error_uri=new URL(e).pathname:r=s}catch(t){n={error:a.UNREACHABLE,error_description:t.message,error_uri:new URL(e).pathname}}if(n)throw n;return r}));return function(t,r){return e.apply(this,arguments)}}();var $=new class{constructor(e){this._env=(null==e?void 0:e.env)||""}getItem(e){var t=this;return X((function*(){return window.localStorage.getItem("".concat(e).concat(t._env))}))()}removeItem(e){var t=this;return X((function*(){window.localStorage.removeItem("".concat(e).concat(t._env))}))()}setItem(e,t){var r=this;return X((function*(){window.localStorage.setItem("".concat(e).concat(r._env),t)}))()}getItemSync(e){return window.localStorage.getItem("".concat(e).concat(this._env))}removeItemSync(e){window.localStorage.removeItem("".concat(e).concat(this._env))}setItemSync(e,t){window.localStorage.setItem("".concat(e).concat(this._env),t)}};function ee(e){var t=!0;return null!=e&&e.expires_at&&null!=e&&e.access_token&&(t=e.expires_at<new Date),t}class te{constructor(e){this.credentials=null,this.accessKeyCredentials=null,this.singlePromise=null,this.tokenSectionName=e.tokenSectionName,this.storage=e.storage,this.clientId=e.clientId,this.singlePromise=new p({clientId:this.clientId}),this.credentials=e.credentials||null}getStorageCredentialsSync(){var e=null,t=this.storage.getItemSync(this.tokenSectionName);if(null!=t)try{var r;null!==(r=e=JSON.parse(t))&&void 0!==r&&r.expires_at&&(e.expires_at=new Date(e.expires_at))}catch(t){this.storage.removeItem(this.tokenSectionName),e=null}return e}setCredentials(e){var t=this;return X((function*(){if(null!=e&&e.expires_in){if(null!=e&&e.expires_at||(e.expires_at=new Date(Date.now()+1e3*(e.expires_in-30))),t.storage){var r=JSON.stringify(e);yield t.storage.setItem(t.tokenSectionName,r)}t.credentials=e}else t.storage&&(yield t.storage.removeItem(t.tokenSectionName)),t.credentials=null}))()}setAccessKeyCredentials(e){this.accessKeyCredentials=e}getCredentials(){var e=this;return X((function*(){return e.singlePromise.run("getCredentials",X((function*(){if(ee(e.credentials)){var{credentials:t,isAccessKeyCredentials:r}=yield e.getStorageCredentials();if(r)return t;e.credentials=t}return e.credentials})))}))()}getStorageCredentials(){var e=this;return X((function*(){return e.singlePromise.run("_getStorageCredentials",X((function*(){var t=null,r=!1,n=yield e.storage.getItem(e.tokenSectionName);if(n)try{var o;null!==(o=t=JSON.parse(n))&&void 0!==o&&o.expires_at&&(t.expires_at=new Date(t.expires_at))}catch(r){yield e.storage.removeItem(e.tokenSectionName),t=null}else t=e.accessKeyCredentials||null,r=!0;return{credentials:t,isAccessKeyCredentials:r}})))}))()}}class re{constructor(e){this.singlePromise=null,e.clientSecret||(e.clientSecret=""),!e.clientId&&e.env&&(e.clientId=e.env),this.apiOrigin=e.apiOrigin,this.apiPath=e.apiPath||c,this.clientId=e.clientId,this.i18n=e.i18n,this.singlePromise=new p({clientId:this.clientId}),this.retry=this.formatRetry(e.retry,re.defaultRetry),e.baseRequest?this.baseRequest=e.baseRequest:this.baseRequest=Z,this.tokenInURL=e.tokenInURL,this.headers=e.headers,this.storage=e.storage||$,this.localCredentials=new te({tokenSectionName:"credentials_".concat(e.clientId),storage:this.storage,clientId:e.clientId}),this.clientSecret=e.clientSecret,e.clientId&&(this.basicAuth="Basic ".concat(function(e){for(var t,r,n,o,i="",a=0,s=(e=String(e)).length%3;a<e.length;){if((r=e.charCodeAt(a++))>255||(n=e.charCodeAt(a++))>255||(o=e.charCodeAt(a++))>255)throw new TypeError("Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.");i+=v.charAt((t=r<<16|n<<8|o)>>18&63)+v.charAt(t>>12&63)+v.charAt(t>>6&63)+v.charAt(63&t)}return s?i.slice(0,s-3)+"===".substring(s):i}("".concat(e.clientId,":").concat(this.clientSecret)))),this.wxCloud=e.wxCloud;try{y()&&(this.useWxCloud=e.useWxCloud,void 0===this.wxCloud&&e.env&&(wx.cloud.init({env:e.env}),this.wxCloud=wx.cloud))}catch(e){}this.refreshTokenFunc=e.refreshTokenFunc||this.defaultRefreshTokenFunc,this.anonymousSignInFunc=e.anonymousSignInFunc,this.onCredentialsError=e.onCredentialsError,F.on("lang_change",e=>{var t;this.i18n=(null===(t=e.data)||void 0===t?void 0:t.i18n)||this.i18n})}setCredentials(e){return this.localCredentials.setCredentials(e)}setAccessKeyCredentials(e){return this.localCredentials.setAccessKeyCredentials(e)}getAccessToken(){var e=this;return X((function*(){var t=yield e.getCredentials();if(null!=t&&t.access_token)return Promise.resolve(t.access_token);var r={error:a.UNAUTHENTICATED};return Promise.reject(r)}))()}request(e,t){var r=this;return X((function*(){var n,o,i,s;t||(t={});var c=r.formatRetry(t.retry,r.retry);if(t.headers=J(J({},t.headers),{},{[null===(n=r.i18n)||void 0===n?void 0:n.LANG_HEADER_KEY]:null===(o=r.i18n)||void 0===o?void 0:o.lang}),r.headers&&(t.headers=J(J({},r.headers),t.headers)),t.headers["x-request-id"]||(t.headers["x-request-id"]=u()),!t.headers["x-device-id"]){var l=yield r.getDeviceId();t.headers["x-device-id"]=l}if(null!==(i=t)&&void 0!==i&&i.withBasicAuth&&r.basicAuth&&(t.headers.Authorization=r.basicAuth),null!==(s=t)&&void 0!==s&&s.withCredentials){var d=yield r.getCredentials();d&&(r.tokenInURL?(e.indexOf("?")<0&&(e+="?"),e+="access_token=".concat(d.access_token)):t.headers.Authorization="".concat(d.token_type," ").concat(d.access_token))}else r.clientId&&e.indexOf("client_id")<0&&(e+=e.indexOf("?")<0?"?":"&",e+="client_id=".concat(r.clientId));e.startsWith("/")&&(e="".concat(r.apiOrigin).concat(r.apiPath).concat(e));for(var h=null,f=c+1,p=0;p<f;p++){try{h=t.useWxCloud||r.useWxCloud?yield r.wxCloudCallFunction(e,t):yield r.baseRequest(e,t);break}catch(e){if(t.withCredentials&&e&&e.error===a.UNAUTHENTICATED)return yield r.setCredentials(null),Promise.reject(e);if(p===c||!e||"unreachable"!==e.error)return Promise.reject(e)}yield r.sleep(re.retryInterval)}return h}))()}wxCloudCallFunction(e,t){var r=this;return X((function*(){var n=null,o=null;try{var i,s="";try{s=yield wx.getRendererUserAgent()}catch(e){}var{result:c}=yield r.wxCloud.callFunction({name:"httpOverCallFunction",data:{url:e,method:t.method,headers:J({origin:"https://servicewechat.com","User-Agent":s},t.headers),body:t.body}});null!=c&&null!==(i=c.body)&&void 0!==i&&i.error_code?(o=null==c?void 0:c.body).error_uri=(0,l.y)(e):n=null==c?void 0:c.body}catch(t){o={error:a.UNREACHABLE,error_description:t.message,error_uri:(0,l.y)(e)}}if(o)throw o;return n}))()}getCredentials(){var e=this;return X((function*(){var t=yield e.localCredentials.getCredentials();if(!t){var r,n="credentials not found";return null===(r=e.onCredentialsError)||void 0===r||r.call(e,{msg:n}),e.unAuthenticatedError(n)}if(ee(t))if(t.refresh_token)try{t=yield e.refreshToken(t)}catch(r){var o;if("anonymous"!==t.scope)return null===(o=e.onCredentialsError)||void 0===o||o.call(e,{msg:r.error_description}),Promise.reject(r);t=yield e.anonymousLogin(t)}else{if("anonymous"!==t.scope){var i,a="no refresh token found in credentials";return null===(i=e.onCredentialsError)||void 0===i||i.call(e,{msg:a}),e.unAuthenticatedError(a)}t=yield e.anonymousLogin(t)}return t}))()}getCredentialsSync(){return this.localCredentials.getStorageCredentialsSync()}getCredentialsAsync(){return this.getCredentials()}getScope(){var e=this;return X((function*(){var t=yield e.localCredentials.getCredentials();if(!t){var r,n="credentials not found";return null===(r=e.onCredentialsError)||void 0===r||r.call(e,{msg:n}),e.unAuthenticatedError(n)}return t.scope}))()}getGroups(){var e=this;return X((function*(){var t=yield e.localCredentials.getCredentials();if(!t){var r,n="credentials not found";return null===(r=e.onCredentialsError)||void 0===r||r.call(e,{msg:n}),e.unAuthenticatedError(n)}return t.groups}))()}refreshToken(e){var t=this;return X((function*(){return t.singlePromise.run("_refreshToken",X((function*(){if(!e||!e.refresh_token){var r,n="no refresh token found in credentials";return null===(r=t.onCredentialsError)||void 0===r||r.call(t,{msg:n}),t.unAuthenticatedError(n)}try{var o=yield t.refreshTokenFunc(e.refresh_token,e);return yield t.localCredentials.setCredentials(o),o}catch(e){var i;if(e.error===a.INVALID_GRANT){var s;yield t.localCredentials.setCredentials(null);var c=e.error_description;return null===(s=t.onCredentialsError)||void 0===s||s.call(t,{msg:c}),t.unAuthenticatedError(c)}return null===(i=t.onCredentialsError)||void 0===i||i.call(t,{msg:e.error_description}),Promise.reject(e)}})))}))()}anonymousLogin(e){var t=this;return X((function*(){return t.singlePromise.run("_anonymousLogin",X((function*(){if(t.anonymousSignInFunc){var r=yield t.anonymousSignInFunc(e);e=r||(yield t.localCredentials.getCredentials())}else e=yield t.anonymousSignIn(e);return e})))}))()}checkRetry(e){var t=null;if(("number"!=typeof e||e<re.minRetry||e>re.maxRetry)&&(t={error:a.UNREACHABLE,error_description:"wrong options param: retry"}),t)throw t;return e}formatRetry(e,t){return void 0===e?t:this.checkRetry(e)}sleep(e){return X((function*(){return new Promise(t=>{setTimeout(()=>{t()},e)})}))()}anonymousSignIn(e){var r=this;return X((function*(){return r.singlePromise.run("_anonymous",X((function*(){if(!e||"anonymous"!==e.scope)return r.unAuthenticatedError("no anonymous in credentials");try{var n=yield r.request(t.AUTH_SIGN_IN_ANONYMOUSLY_URL,{method:"POST",withBasicAuth:!0,body:{}});return yield r.localCredentials.setCredentials(n),n}catch(e){return e.error===a.INVALID_GRANT?(yield r.localCredentials.setCredentials(null),r.unAuthenticatedError(e.error_description)):Promise.reject(e)}})))}))()}defaultRefreshTokenFunc(e,r){var n=this;return X((function*(){if(void 0===e||""===e){var i,a="refresh token not found";return null===(i=n.onCredentialsError)||void 0===i||i.call(n,{msg:a}),n.unAuthenticatedError(a)}var s=t.AUTH_TOKEN_URL;return"v2"===(null==r?void 0:r.version)&&(s=o.AUTH_TOKEN_URL),J(J({},yield n.request(s,{method:"POST",body:{client_id:n.clientId,client_secret:n.clientSecret,grant_type:"refresh_token",refresh_token:e}})),{},{version:(null==r?void 0:r.version)||"v1"})}))()}getDeviceId(){var e=this;return X((function*(){if(e.deviceID)return e.deviceID;var t=yield e.storage.getItem("device_id");return"string"==typeof t&&t.length>=16&&t.length<=48||(t=u(),yield e.storage.setItem("device_id",t)),e.deviceID=t,t}))()}unAuthenticatedError(e){var t={error:a.UNAUTHENTICATED,error_description:e};return Promise.reject(t)}}re.defaultRetry=2,re.minRetry=0,re.maxRetry=5,re.retryInterval=1e3;const ne=class{constructor(e){if(this.params={},"string"==typeof e)this.parse(e);else if(e&&"object"==typeof e)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&this.append(t,e[t])}parse(e){e.split("&").forEach(e=>{var[t,r]=e.split("=").map(decodeURIComponent);this.append(t,r)})}append(e,t){this.params[e]?this.params[e]=this.params[e].concat([t]):this.params[e]=[t]}get(e){return this.params[e]?this.params[e][0]:null}getAll(e){return this.params[e]||[]}delete(e){delete this.params[e]}has(e){return Object.prototype.hasOwnProperty.call(this.params,e)}set(e,t){this.params[e]=[t]}toString(){var e=this,t=[],r=function(r){Object.prototype.hasOwnProperty.call(e.params,r)&&e.params[r].forEach(e=>{t.push("".concat(encodeURIComponent(r),"=").concat(encodeURIComponent(e)))})};for(var n in this.params)r(n);return t.join("&")}};function oe(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function ie(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){oe(i,n,o,a,s,"next",e)}function s(e){oe(i,n,o,a,s,"throw",e)}a(void 0)}))}}class ae{constructor(e){e.openURIWithCallback||(e.openURIWithCallback=this.getDefaultOpenURIWithCallback()),e.storage||(e.storage=$),this.config=e,this.tokenSectionName="captcha_".concat(e.clientId)}isMatch(){var e,t;return(null===(e=this.config)||void 0===e||null===(e=e.adapter)||void 0===e||null===(t=e.isMatch)||void 0===t?void 0:t.call(e))||y()}request(e,t){var r=this;return ie((function*(){t||(t={}),t.method||(t.method="GET");var n,o="".concat(t.method,":").concat(e),i=e;t.withCaptcha&&(i=yield r.appendCaptchaTokenToURL(e,o,!1));try{n=yield r.config.request(i,t)}catch(n){return n.error===a.CAPTCHA_REQUIRED||n.error===a.CAPTCHA_INVALID?(e=yield r.appendCaptchaTokenToURL(e,o,n.error===a.CAPTCHA_INVALID),r.config.request(e,t)):Promise.reject(n)}return n}))()}getDefaultOpenURIWithCallback(){if(!this.isMatch()&&!m()&&(window.location.search.indexOf("__captcha")>0&&(document.body.style.display="none"),null===document.getElementById("captcha_panel_wrap"))){var e=document.createElement("div");e.style.cssText="background-color: rgba(0, 0, 0, 0.7);position: fixed;left: 0px;right: 0px;top: 0px;bottom: 0px;padding: 9vw 0 0 0;display: none;z-index:100;",e.setAttribute("id","captcha_panel_wrap"),setTimeout(()=>{document.body.appendChild(e)},0)}return this.defaultOpenURIWithCallback}defaultOpenURIWithCallback(e,t){return ie((function*(){var{width:r="355px",height:n="355px"}=t||{};if(e.match(/^(data:.*)$/))return Promise.reject({error:a.UNIMPLEMENTED,error_description:"need to impl captcha data"});var o=document.getElementById("captcha_panel_wrap"),i=document.createElement("iframe");return o.innerHTML="",i.setAttribute("src",e),i.setAttribute("id","review-panel-iframe"),i.style.cssText="min-width:".concat(r,";display:block;height:").concat(n,";margin:0 auto;background-color: rgb(255, 255, 255);border: none;"),o.appendChild(i),o.style.display="block",new Promise((e,t)=>{i.onload=function(){try{var r=window.location,n=i.contentWindow.location;if(n.host+n.pathname===r.host+r.pathname){o.style.display="none";var a=new ne(n.search),s=a.get("captcha_token");return s?e({captcha_token:s,expires_in:Number(a.get("expires_in"))}):t({error:a.get("error"),error_description:a.get("error_description")})}o.style.display="block"}catch(e){o.style.display="block"}}})}))()}getCaptchaToken(e,r){var n=this;return ie((function*(){if(!e){var o=yield n.findCaptchaToken();if(o)return o}var i;if(n.isMatch()||m()){var a=yield n.config.request(t.CAPTCHA_DATA_URL,{method:"POST",body:{state:r,redirect_uri:""},withCredentials:!1});i={url:"".concat(a.data,"?state=").concat(encodeURIComponent(r),"&token=").concat(encodeURIComponent(a.token))}}else{var s="".concat(window.location.origin+window.location.pathname,"?__captcha=on");if((i=yield n.config.request(t.GET_CAPTCHA_URL,{method:"POST",body:{client_id:n.config.clientId,redirect_uri:s,state:r},withCredentials:!1})).captcha_token){var c={captcha_token:i.captcha_token,expires_in:i.expires_in};return n.saveCaptchaToken(c),i.captcha_token}}var u=yield n.config.openURIWithCallback(i.url);return n.saveCaptchaToken(u),u.captcha_token}))()}appendCaptchaTokenToURL(e,t,r){var n=this;return ie((function*(){var o=yield n.getCaptchaToken(r,t);return e.indexOf("?")>0?e+="&captcha_token=".concat(o):e+="?captcha_token=".concat(o),e}))()}saveCaptchaToken(e){var t=this;return ie((function*(){e.expires_at=new Date(Date.now()+1e3*(e.expires_in-10));var r=JSON.stringify(e);yield t.config.storage.setItem(t.tokenSectionName,r)}))()}findCaptchaToken(){var e=this;return ie((function*(){var t=yield e.config.storage.getItem(e.tokenSectionName);if(null!=t)try{var r=JSON.parse(t);return null!=r&&r.expires_at&&(r.expires_at=new Date(r.expires_at)),r.expires_at<new Date?null:r.captcha_token}catch(t){return yield e.config.storage.removeItem(e.tokenSectionName),null}return null}))()}}var se=["provider_redirect_uri","other_params"];function ce(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function ue(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){ce(i,n,o,a,s,"next",e)}function s(e){ce(i,n,o,a,s,"throw",e)}a(void 0)}))}}function le(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function de(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?le(Object(r),!0).forEach((function(t){he(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):le(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function he(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function fe(e,t){try{var n;if(((null==t||null===(n=t.root)||void 0===n?void 0:n.globalThis)||globalThis).IS_MP_BUILD)return;0}catch(t){if(e)return(()=>{try{return r(3)}catch(e){return}})()}}class pe{static parseParamsToSearch(e){return Object.keys(e).forEach(t=>{e[t]||delete e[t]}),new ne(e).toString()}constructor(e){var{request:t}=e,r=e.credentialsClient;if(!r){var n={apiOrigin:e.apiOrigin,apiPath:e.apiPath,clientId:e.clientId,storage:e.storage,env:e.env,baseRequest:e.baseRequest,anonymousSignInFunc:e.anonymousSignInFunc,wxCloud:e.wxCloud,onCredentialsError:e.onCredentialsError,headers:e.headers||{},i18n:e.i18n};r=new re(n)}if(!t){var o=r.request.bind(r),i=new ae(de({clientId:e.clientId,request:o,storage:e.storage,adapter:e.adapter},e.captchaOptions));t=i.request.bind(i)}this.config={env:e.env,apiOrigin:e.apiOrigin,apiPath:e.apiPath,clientId:e.clientId,request:t,credentialsClient:r,storage:e.storage||$,adapter:e.adapter}}getParamsByVersion(e,r){var n,i=(0,l.I)(e),a=(null===(n={v2:o}[null==i?void 0:i.version])||void 0===n?void 0:n[r])||t[r];return i&&delete i.version,{params:i,url:a}}signIn(e){var t=this;return ue((function*(){var r=e.version||"v1",n=t.getParamsByVersion(e,"AUTH_SIGN_IN_URL");n.params.query&&delete n.params.query;var o=yield t.getEncryptParams(n.params),i=yield t.config.request(n.url,{method:"POST",body:o});return yield t.config.credentialsClient.setCredentials(de(de({},i),{},{version:r})),Promise.resolve(i)}))()}signInAnonymously(){var e=arguments,r=this;return ue((function*(){var n=e.length>0&&void 0!==e[0]?e[0]:{},o=e.length>1&&void 0!==e[1]&&e[1],i=yield r.config.request(t.AUTH_SIGN_IN_ANONYMOUSLY_URL,{method:"POST",body:n,useWxCloud:o});return yield r.config.credentialsClient.setCredentials(i),Promise.resolve(i)}))()}signUp(e){var r=this;return ue((function*(){var n=yield r.config.request(t.AUTH_SIGN_UP_URL,{method:"POST",body:e});return yield r.config.credentialsClient.setCredentials(n),Promise.resolve(n)}))()}signOut(e){var r=this;return ue((function*(){var n={};if(e){try{n=yield r.config.request(t.AUTH_SIGNOUT_URL,{method:"POST",withCredentials:!0,body:e})}catch(e){e.error!==a.UNAUTHENTICATED&&console.log("sign_out_error",e)}return yield r.config.credentialsClient.setCredentials(),n}var o=yield r.config.credentialsClient.getAccessToken(),i=yield r.config.request(t.AUTH_REVOKE_URL,{method:"POST",body:{token:o}});return yield r.config.credentialsClient.setCredentials(),Promise.resolve(i)}))()}revokeAllDevices(){var e=this;return ue((function*(){yield e.config.request(t.AUTH_REVOKE_ALL_URL,{method:"DELETE",withCredentials:!0})}))()}revokeDevice(e){var r=this;return ue((function*(){yield r.config.request(t.AUTHORIZED_DEVICES_DELETE_URL+e.device_id,{method:"DELETE",withCredentials:!0})}))()}getVerification(e,r){var n=this;return ue((function*(){var o=!1;"CUR_USER"===e.target?o=!0:(yield n.hasLoginState())&&(o=!0);var i=JSON.parse(JSON.stringify(e));return i.phone_number&&!/^\+\d{1,3}\s+\d+/.test(i.phone_number)&&(i.phone_number="+86 ".concat(i.phone_number)),n.config.request(t.VERIFICATION_URL,{method:"POST",body:i,withCaptcha:(null==r?void 0:r.withCaptcha)||!1,withCredentials:o})}))()}verify(e){var t=this;return ue((function*(){var r=t.getParamsByVersion(e,"VERIFY_URL"),n=yield t.config.request(r.url,{method:"POST",body:r.params});return"v2"===(null==e?void 0:e.version)&&(yield t.config.credentialsClient.setCredentials(de(de({},n),{},{version:"v2"}))),n}))()}genProviderRedirectUri(e){var r=this;return ue((function*(){var{provider_redirect_uri:n,other_params:o={}}=e,i=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.includes(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.includes(r)||{}.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,se);n&&!i.redirect_uri&&(i.redirect_uri=n);var a="".concat(t.PROVIDER_URI_URL,"?").concat(pe.parseParamsToSearch(i));return Object.keys(o).forEach(e=>{var t=o[e];("sign_out_uri"!==e||(null==t?void 0:t.length)>0)&&(a+="&other_params[".concat(e,"]=").concat(encodeURIComponent(t)))}),r.config.request(a,{method:"GET"})}))()}grantProviderToken(e){var r=arguments,n=this;return ue((function*(){var o=r.length>1&&void 0!==r[1]&&r[1];return n.config.request(t.PROVIDER_TOKEN_URL,{method:"POST",body:e,useWxCloud:o})}))()}patchProviderToken(e){var r=this;return ue((function*(){return r.config.request(t.PROVIDER_TOKEN_URL,{method:"PATCH",body:e})}))()}signInWithProvider(e){var t=arguments,r=this;return ue((function*(){var n=t.length>1&&void 0!==t[1]&&t[1],o=r.getParamsByVersion(e,"AUTH_SIGN_IN_WITH_PROVIDER_URL"),i=yield r.config.request(o.url,{method:"POST",body:o.params,useWxCloud:n});return yield r.config.credentialsClient.setCredentials(de(de({},i),{},{version:(null==e?void 0:e.version)||"v1"})),Promise.resolve(i)}))()}signInCustom(e){var r=this;return ue((function*(){var n=yield r.config.request(t.AUTH_SIGN_IN_CUSTOM,{method:"POST",body:e});return yield r.config.credentialsClient.setCredentials(n),Promise.resolve(n)}))()}signInWithWechat(){var e=arguments,r=this;return ue((function*(){var n=e.length>0&&void 0!==e[0]?e[0]:{},o=yield r.config.request(t.AUTH_SIGN_IN_WITH_WECHAT_URL,{method:"POST",body:n});return yield r.config.credentialsClient.setCredentials(o),Promise.resolve(o)}))()}bindWithProvider(e){var r=this;return ue((function*(){return r.config.request(t.PROVIDER_BIND_URL,{method:"POST",body:e,withCredentials:!0})}))()}getUserProfile(e){var t=this;return ue((function*(){return t.getUserInfo(e)}))()}getUserInfo(){var e=arguments,t=this;return ue((function*(){var r,n=e.length>0&&void 0!==e[0]?e[0]:{},o=t.getParamsByVersion(n,"USER_ME_URL");if(null!==(r=o.params)&&void 0!==r&&r.query){var i=new ne(o.params.query);o.url+="?".concat(i.toString())}var a=yield t.config.request(o.url,{method:"GET",withCredentials:!0});return a.sub&&(a.uid=a.sub),a}))()}getWedaUserInfo(){var e=this;return ue((function*(){return yield e.config.request(t.WEDA_USER_URL,{method:"GET",withCredentials:!0})}))()}deleteMe(e){var t=this;return ue((function*(){var r=t.getParamsByVersion(e,"USER_ME_URL"),n="".concat(r.url,"?").concat(pe.parseParamsToSearch(r.params));return t.config.request(n,{method:"DELETE",withCredentials:!0})}))()}hasLoginState(){var e=this;return ue((function*(){try{return yield e.config.credentialsClient.getAccessToken(),!0}catch(e){return!1}}))()}hasLoginStateSync(){return this.config.credentialsClient.getCredentialsSync()}getLoginState(){var e=this;return ue((function*(){return e.config.credentialsClient.getCredentialsAsync()}))()}transByProvider(e){var r=this;return ue((function*(){return r.config.request(t.USER_TRANS_BY_PROVIDER_URL,{method:"PATCH",body:e,withCredentials:!0})}))()}grantToken(e){var t=this;return ue((function*(){var r=t.getParamsByVersion(e,"AUTH_TOKEN_URL");return t.config.request(r.url,{method:"POST",body:r.params})}))()}getProviders(){var e=this;return ue((function*(){return e.config.request(t.PROVIDER_LIST,{method:"GET",withCredentials:!0})}))()}unbindProvider(e){var r=this;return ue((function*(){return r.config.request("".concat(t.PROVIDER_UNBIND_URL,"/").concat(e.provider_id),{method:"DELETE",withCredentials:!0})}))()}checkPassword(e){var r=this;return ue((function*(){return r.config.request("".concat(t.CHECK_PWD_URL),{method:"POST",withCredentials:!0,body:e})}))()}editContact(e){var r=this;return ue((function*(){return r.config.request("".concat(t.BIND_CONTACT_URL),{method:"PATCH",withCredentials:!0,body:e})}))()}setPassword(e){var r=this;return ue((function*(){return r.config.request("".concat(t.AUTH_SET_PASSWORD),{method:"PATCH",withCredentials:!0,body:e})}))()}updatePasswordByOld(e){var t=this;return ue((function*(){var r=yield t.sudo({password:e.old_password});return t.setPassword({sudo_token:r.sudo_token,new_password:e.new_password})}))()}sudo(e){var r=this;return ue((function*(){return r.config.request("".concat(t.SUDO_URL),{method:"POST",withCredentials:!0,body:e})}))()}sendVerificationCodeToCurrentUser(e){var r=this;return ue((function*(){return e.target="CUR_USER",r.config.request(t.VERIFICATION_URL,{method:"POST",body:e,withCredentials:!0,withCaptcha:!0})}))()}changeBoundProvider(e){var r=this;return ue((function*(){return r.config.request("".concat(t.PROVIDER_LIST,"/").concat(e.provider_id,"/trans"),{method:"POST",body:{provider_trans_token:e.trans_token},withCredentials:!0})}))()}setUserProfile(e){var r=this;return ue((function*(){return r.config.request(t.USER_PRIFILE_URL,{method:"PATCH",body:e,withCredentials:!0})}))()}updateUserBasicInfo(e){var r=this;return ue((function*(){return r.config.request(t.USER_BASIC_EDIT_URL,{method:"POST",withCredentials:!0,body:e})}))()}queryUserProfile(e){var r=this;return ue((function*(){var n=new ne(e);return r.config.request("".concat(t.USER_QUERY_URL,"?").concat(n.toString()),{method:"GET",withCredentials:!0})}))()}setCustomSignFunc(e){this.getCustomSignTicketFn=e}signInWithCustomTicket(){var e=this;return ue((function*(){var t=e.getCustomSignTicketFn;if(!t)return Promise.reject({error:"failed_precondition",error_description:"please use setCustomSignFunc to set custom sign function"});var r=yield t();return e.signInCustom({provider_id:"custom",ticket:r})}))()}resetPassword(e){var r=this;return ue((function*(){return r.config.request(t.AUTH_RESET_PASSWORD,{method:"POST",body:e})}))()}authorize(e){var r=this;return ue((function*(){return r.config.request(t.AUTHORIZE_URL,{method:"POST",withCredentials:!0,body:e})}))()}authorizeDevice(e){var r=this;return ue((function*(){return r.config.request(t.AUTHORIZE_DEVICE_URL,{method:"POST",withCredentials:!0,body:e})}))()}deviceAuthorize(e){var r=this;return ue((function*(){return r.config.request(t.AUTH_GET_DEVICE_CODE,{method:"POST",body:e,withCredentials:!0})}))()}authorizeInfo(e){var r=this;return ue((function*(){var n="".concat(t.AUTHORIZE_INFO_URL,"?").concat(pe.parseParamsToSearch(e)),o=!0,i=!1;return(yield r.hasLoginState())&&(i=!0,o=!1),r.config.request(n,{method:"GET",withBasicAuth:o,withCredentials:i})}))()}checkUsername(e){var r=this;return ue((function*(){return r.config.request(t.CHECK_USERNAME,{method:"GET",body:e,withCredentials:!0})}))()}checkIfUserExist(e){var r=this;return ue((function*(){var n=new ne(e);return r.config.request("".concat(t.CHECK_IF_USER_EXIST,"?").concat(n.toString()),{method:"GET"})}))()}loginScope(){var e=this;return ue((function*(){return e.config.credentialsClient.getScope()}))()}loginGroups(){var e=this;return ue((function*(){return e.config.credentialsClient.getGroups()}))()}refreshTokenForce(e){var t=this;return ue((function*(){var r=yield t.config.credentialsClient.getCredentials();return yield t.config.credentialsClient.refreshToken(de(de({},r),{},{version:(null==e?void 0:e.version)||"v1"}))}))()}getCredentials(){var e=this;return ue((function*(){return e.config.credentialsClient.getCredentials()}))()}getPublicKey(){var e=this;return ue((function*(){return e.config.request(o.AUTH_PUBLIC_KEY,{method:"POST",body:{}})}))()}getEncryptParams(e){var t=this;return ue((function*(){var{isEncrypt:r}=e;delete e.isEncrypt;var n=(0,l.I)(e),o=fe(r,t.config.adapter);if(!o)return e;var i="",a="";try{var s=yield t.getPublicKey();if(i=s.public_key,a=s.public_key_thumbprint,!i||!a)throw s}catch(e){throw e}return{params:o.getEncryptInfo({publicKey:i,payload:n}),public_key_thumbprint:a}}))()}getProviderSubType(){var e=this;return ue((function*(){return e.config.request(t.GET_PROVIDER_TYPE,{method:"POST",body:{provider_id:"weda"}})}))()}verifyCaptchaData(e){var r=this;return ue((function*(){var{token:n,key:o}=e;return r.config.request(t.VERIFY_CAPTCHA_DATA_URL,{method:"POST",body:{token:n,key:o},withCredentials:!1})}))()}createCaptchaData(e){var r=this;return ue((function*(){var{state:n,redirect_uri:o}=e;return r.config.request(t.CAPTCHA_DATA_URL,{method:"POST",body:{state:n,redirect_uri:o},withCredentials:!1})}))()}getMiniProgramCode(e){var r=this;return ue((function*(){return r.config.request(t.GET_MINIPROGRAM_QRCODE,{method:"POST",body:e})}))()}getMiniProgramQrCodeStatus(e){var r=this;return ue((function*(){return r.config.request(t.GET_MINIPROGRAM_QRCODE_STATUS,{method:"POST",body:e})}))()}getUserBehaviorLog(e){var r=this;return ue((function*(){var n="".concat(t.GET_USER_BEHAVIOR_LOG,"?").concat({LOGIN:"query[action]=USER_LOGIN",MODIFY:"ne_query[action]=USER_LOGIN"}[e.type],"&limit=").concat(e.limit).concat(e.page_token?"&page_token=".concat(e.page_token):"");return r.config.request(n,{method:"GET",withCredentials:!0})}))()}modifyPassword(e){var r=this;return ue((function*(){var n="",o="",i=fe(!0,r.config.adapter);if(!i)throw new Error("do not support encrypt, a encrypt util required.");try{var a=yield r.getPublicKey();if(n=a.public_key,o=a.public_key_thumbprint,!n||!o)throw a}catch(e){throw e}var s=e.password?i.getEncryptInfo({publicKey:n,payload:e.password}):"",c=i.getEncryptInfo({publicKey:n,payload:e.new_password});return r.config.request(t.USER_BASIC_EDIT_URL,{method:"POST",withCredentials:!0,body:{user_id:e.user_id,encrypt_password:s,encrypt_new_password:c,public_key_thumbprint:o}})}))()}modifyPasswordWithoutLogin(e){var t=this;return ue((function*(){var r="",n="",i=fe(!0,t.config.adapter);if(!i)throw new Error("do not support encrypt, a encrypt util required.");try{var a=yield t.getPublicKey();if(r=a.public_key,n=a.public_key_thumbprint,!r||!n)throw a}catch(e){throw e}var s=e.password?i.getEncryptInfo({publicKey:r,payload:e.password}):"",c=i.getEncryptInfo({publicKey:r,payload:e.new_password});return t.config.request(o.AUTH_RESET_PASSWORD,{method:"POST",body:{username:e.username,password:s,new_password:c,public_key_thumbprint:n}})}))()}}function ve(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ye(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ve(Object(r),!0).forEach((function(t){_e(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ve(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function _e(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class ge{constructor(e){var{apiOrigin:t,apiPath:r=c,clientId:n,env:o,storage:i,request:a,baseRequest:s,anonymousSignInFunc:u,wxCloud:l,adapter:d,onCredentialsError:h,headers:f,i18n:p,useWxCloud:v}=e;this.oauth2client=new re({apiOrigin:t,apiPath:r,clientId:n,env:o,storage:i,baseRequest:s||a,anonymousSignInFunc:u,wxCloud:l,onCredentialsError:h,headers:f||{},i18n:p,useWxCloud:v}),this.authApi=new pe(ye(ye({credentialsClient:this.oauth2client},e),{},{request:a?this.oauth2client.request.bind(this.oauth2client):void 0,adapter:d}))}}})(),n})());
|
|
@@ -377,8 +377,8 @@ export interface QueryUserProfileResponse {
|
|
|
377
377
|
data?: [SimpleUserProfile];
|
|
378
378
|
}
|
|
379
379
|
export interface ResetPasswordRequest extends BaseRequest {
|
|
380
|
-
email
|
|
381
|
-
phone_number
|
|
380
|
+
email?: string;
|
|
381
|
+
phone_number?: string;
|
|
382
382
|
new_password: string;
|
|
383
383
|
verification_token: string;
|
|
384
384
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudbase/oauth",
|
|
3
|
-
"version": "2.22.
|
|
3
|
+
"version": "2.22.8",
|
|
4
4
|
"description": "cloudbase javascript sdk auth componets",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -19,16 +19,16 @@
|
|
|
19
19
|
"precommit": "npm run lint"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@cloudbase/utilities": "2.22.
|
|
22
|
+
"@cloudbase/utilities": "2.22.8"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@babel/preset-env": "^7.25.3",
|
|
26
|
-
"@cloudbase/types": "2.22.
|
|
26
|
+
"@cloudbase/types": "2.22.8",
|
|
27
27
|
"@types/node": "^22.5.4",
|
|
28
28
|
"terser-webpack-plugin": "^3.0.2",
|
|
29
29
|
"ts-loader": "^9.5.1",
|
|
30
30
|
"webpack-bundle-analyzer": "^4.9.1"
|
|
31
31
|
},
|
|
32
32
|
"license": "Apache-2.0",
|
|
33
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "c493bc858ad79db172c4b4021e452cdad002743b"
|
|
34
34
|
}
|
package/src/auth/apis.ts
CHANGED
|
@@ -331,9 +331,16 @@ export class Auth {
|
|
|
331
331
|
withCredentials = true
|
|
332
332
|
}
|
|
333
333
|
}
|
|
334
|
+
|
|
335
|
+
const body = JSON.parse(JSON.stringify(params))
|
|
336
|
+
|
|
337
|
+
if (body.phone_number && !/^\+\d{1,3}\s+\d+/.test(body.phone_number)) {
|
|
338
|
+
body.phone_number = `+86 ${body.phone_number}`
|
|
339
|
+
}
|
|
340
|
+
|
|
334
341
|
return this.config.request<GetVerificationResponse>(ApiUrls.VERIFICATION_URL, {
|
|
335
342
|
method: 'POST',
|
|
336
|
-
body
|
|
343
|
+
body,
|
|
337
344
|
withCaptcha: options?.withCaptcha || false,
|
|
338
345
|
withCredentials,
|
|
339
346
|
})
|
package/src/auth/models.ts
CHANGED
|
@@ -465,8 +465,8 @@ export interface QueryUserProfileResponse {
|
|
|
465
465
|
}
|
|
466
466
|
|
|
467
467
|
export interface ResetPasswordRequest extends BaseRequest {
|
|
468
|
-
email
|
|
469
|
-
phone_number
|
|
468
|
+
email?: string
|
|
469
|
+
phone_number?: string
|
|
470
470
|
new_password: string
|
|
471
471
|
verification_token: string
|
|
472
472
|
}
|