@cloudbase/oauth 2.5.49-beta.3 → 2.5.49-beta.6
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 +16 -6
- package/dist/cjs/auth/consts.d.ts +32 -3
- package/dist/cjs/auth/consts.js +32 -3
- package/dist/cjs/index.d.ts +4 -8
- package/dist/cjs/index.js +3 -17
- package/dist/cjs/oauth2client/consts.d.ts +1 -48
- package/dist/cjs/oauth2client/consts.js +4 -51
- package/dist/cjs/oauth2client/oauth2client.js +5 -7
- package/dist/cjs/utils/cloudbase-adapter-wx_mp.d.ts +1 -0
- package/dist/cjs/utils/cloudbase-adapter-wx_mp.js +40 -0
- package/dist/cjs/utils/encrypt.d.ts +1 -1
- package/dist/cjs/utils/encrypt.js +3 -3
- package/dist/cjs/utils/encryptlong/index.d.ts +537 -129
- package/dist/cjs/utils/encryptlong/index.js +2695 -2692
- package/dist/esm/auth/apis.js +430 -797
- package/dist/esm/auth/consts.d.ts +32 -3
- package/dist/esm/auth/consts.js +31 -3
- package/dist/esm/auth/models.js +0 -1
- package/dist/esm/captcha/captcha.js +155 -258
- package/dist/esm/index.d.ts +4 -8
- package/dist/esm/index.js +17 -31
- package/dist/esm/oauth2client/consts.d.ts +1 -48
- package/dist/esm/oauth2client/consts.js +1 -50
- package/dist/esm/oauth2client/interface.js +2 -7
- package/dist/esm/oauth2client/models.js +0 -1
- package/dist/esm/oauth2client/oauth2client.js +362 -638
- package/dist/esm/utils/base64.js +22 -23
- package/dist/esm/utils/cloudbase-adapter-wx_mp.d.ts +1 -0
- package/dist/esm/utils/cloudbase-adapter-wx_mp.js +35 -0
- package/dist/esm/utils/encrypt.d.ts +1 -1
- package/dist/esm/utils/encrypt.js +5 -7
- package/dist/esm/utils/encryptlong/index.d.ts +537 -129
- package/dist/esm/utils/encryptlong/index.js +2622 -2648
- package/dist/esm/utils/function/single-promise.js +26 -89
- package/dist/esm/utils/index.js +7 -8
- package/dist/esm/utils/mp.js +2 -3
- package/dist/esm/utils/uuid.js +3 -4
- package/dist/miniprogram/index.js +1 -0
- package/package.json +11 -2
- package/src/auth/apis.ts +20 -5
- package/src/auth/consts.ts +31 -2
- package/src/index.ts +4 -22
- package/src/oauth2client/consts.ts +1 -51
- package/src/oauth2client/oauth2client.ts +2 -2
- package/src/utils/cloudbase-adapter-wx_mp.ts +42 -0
- package/src/utils/encrypt.ts +5 -5
- package/src/utils/encryptlong/index.js +3111 -3109
- package/tsconfig.esm.json +8 -19
- package/tsconfig.json +5 -16
- package/webpack/web.prod.js +100 -0
- package/webpack/webpack.miniprogram.js +23 -0
- package/src/index.d.ts +0 -1
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.Syntax = exports.ErrorType = void 0;
|
|
4
|
+
var consts_1 = require("../auth/consts");
|
|
5
|
+
Object.defineProperty(exports, "ErrorType", { enumerable: true, get: function () { return consts_1.ErrorType; } });
|
|
4
6
|
var Syntax;
|
|
5
7
|
(function (Syntax) {
|
|
6
8
|
Syntax["CLIENT_ID"] = "client_id";
|
|
@@ -21,53 +23,4 @@ var Syntax;
|
|
|
21
23
|
Syntax["PASSWORD"] = "password";
|
|
22
24
|
Syntax["REFRESH_TOKEN"] = "refresh_token";
|
|
23
25
|
})(Syntax = exports.Syntax || (exports.Syntax = {}));
|
|
24
|
-
|
|
25
|
-
(function (ErrorType) {
|
|
26
|
-
ErrorType["UNREACHABLE"] = "unreachable";
|
|
27
|
-
ErrorType["LOCAL"] = "local";
|
|
28
|
-
ErrorType["CANCELLED"] = "cancelled";
|
|
29
|
-
ErrorType["UNKNOWN"] = "unknown";
|
|
30
|
-
ErrorType["INVALID_ARGUMENT"] = "invalid_argument";
|
|
31
|
-
ErrorType["DEADLINE_EXCEEDED"] = "deadline_exceeded";
|
|
32
|
-
ErrorType["NOT_FOUND"] = "not_found";
|
|
33
|
-
ErrorType["ALREADY_EXISTS"] = "already_exists";
|
|
34
|
-
ErrorType["PERMISSION_DENIED"] = "permission_denied";
|
|
35
|
-
ErrorType["UNAUTHENTICATED"] = "unauthenticated";
|
|
36
|
-
ErrorType["RESOURCE_EXHAUSTED"] = "resource_exhausted";
|
|
37
|
-
ErrorType["FAILED_PRECONDITION"] = "failed_precondition";
|
|
38
|
-
ErrorType["ABORTED"] = "aborted";
|
|
39
|
-
ErrorType["OUT_OF_RANGE"] = "out_of_range";
|
|
40
|
-
ErrorType["UNIMPLEMENTED"] = "unimplemented";
|
|
41
|
-
ErrorType["INTERNAL"] = "internal";
|
|
42
|
-
ErrorType["UNAVAILABLE"] = "unavailable";
|
|
43
|
-
ErrorType["DATA_LOSS"] = "data_loss";
|
|
44
|
-
ErrorType["CAPTCHA_REQUIRED"] = "captcha_required";
|
|
45
|
-
ErrorType["CAPTCHA_INVALID"] = "captcha_invalid";
|
|
46
|
-
ErrorType["INVALID_PASSWORD"] = "invalid_password";
|
|
47
|
-
ErrorType["INVALID_STATUS"] = "invalid_status";
|
|
48
|
-
ErrorType["USER_PENDING"] = "user_pending";
|
|
49
|
-
ErrorType["USER_BLOCKED"] = "user_blocked";
|
|
50
|
-
ErrorType["INVALID_VERIFICATION_CODE"] = "invalid_verification_code";
|
|
51
|
-
ErrorType["TWO_FACTOR_REQUIRED"] = "two_factor_required";
|
|
52
|
-
ErrorType["INVALID_TWO_FACTOR"] = "invalid_two_factor";
|
|
53
|
-
ErrorType["INVALID_TWO_FACTOR_RECOVERY"] = "invalid_two_factor_recovery";
|
|
54
|
-
ErrorType["UNDER_REVIEW"] = "under_review";
|
|
55
|
-
ErrorType["INVALID_REQUEST"] = "invalid_request";
|
|
56
|
-
ErrorType["UNAUTHORIZED_CLIENT"] = "unauthorized_client";
|
|
57
|
-
ErrorType["ACCESS_DENIED"] = "access_denied";
|
|
58
|
-
ErrorType["UNSUPPORTED_RESPONSE_TYPE"] = "unsupported_response_type";
|
|
59
|
-
ErrorType["INVALID_SCOPE"] = "invalid_scope";
|
|
60
|
-
ErrorType["INVALID_GRANT"] = "invalid_grant";
|
|
61
|
-
ErrorType["SERVER_ERROR"] = "server_error";
|
|
62
|
-
ErrorType["TEMPORARILY_UNAVAILABLE"] = "temporarily_unavailable";
|
|
63
|
-
ErrorType["INTERACTION_REQUIRED"] = "interaction_required";
|
|
64
|
-
ErrorType["LOGIN_REQUIRED"] = "login_required";
|
|
65
|
-
ErrorType["ACCOUNT_SELECTION_REQUIRED"] = "account_selection_required";
|
|
66
|
-
ErrorType["CONSENT_REQUIRED"] = "consent_required";
|
|
67
|
-
ErrorType["INVALID_REQUEST_URI"] = "invalid_request_uri";
|
|
68
|
-
ErrorType["INVALID_REQUEST_OBJECT"] = "invalid_request_object";
|
|
69
|
-
ErrorType["REQUEST_NOT_SUPPORTED"] = "request_not_supported";
|
|
70
|
-
ErrorType["REQUEST_URI_NOT_SUPPORTED"] = "request_uri_not_supported";
|
|
71
|
-
ErrorType["REGISTRATION_NOT_SUPPORTED"] = "registration_not_supported";
|
|
72
|
-
})(ErrorType = exports.ErrorType || (exports.ErrorType = {}));
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29hdXRoMmNsaWVudC9jb25zdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBWSxNQWtCWDtBQWxCRCxXQUFZLE1BQU07SUFDaEIsaUNBQXVCLENBQUE7SUFDdkIseUNBQStCLENBQUE7SUFDL0IseUNBQStCLENBQUE7SUFDL0IseUJBQWUsQ0FBQTtJQUNmLHlCQUFlLENBQUE7SUFDZix1Q0FBNkIsQ0FBQTtJQUM3Qix5QkFBZSxDQUFBO0lBQ2YsaURBQXVDLENBQUE7SUFDdkMsaUNBQXVCLENBQUE7SUFDdkIsbUNBQXlCLENBQUE7SUFDekIsdUJBQWEsQ0FBQTtJQUNiLHVDQUE2QixDQUFBO0lBQzdCLG1DQUF5QixDQUFBO0lBQ3pCLG1DQUF5QixDQUFBO0lBQ3pCLCtCQUFxQixDQUFBO0lBQ3JCLCtCQUFxQixDQUFBO0lBQ3JCLHlDQUErQixDQUFBO0FBQ2pDLENBQUMsRUFsQlcsTUFBTSxHQUFOLGNBQU0sS0FBTixjQUFNLFFBa0JqQjtBQUVELElBQVksU0FnRFg7QUFoREQsV0FBWSxTQUFTO0lBQ25CLHdDQUEyQixDQUFBO0lBQzNCLDRCQUFlLENBQUE7SUFDZixvQ0FBdUIsQ0FBQTtJQUN2QixnQ0FBbUIsQ0FBQTtJQUNuQixrREFBcUMsQ0FBQTtJQUNyQyxvREFBdUMsQ0FBQTtJQUN2QyxvQ0FBdUIsQ0FBQTtJQUN2Qiw4Q0FBaUMsQ0FBQTtJQUNqQyxvREFBdUMsQ0FBQTtJQUN2QyxnREFBbUMsQ0FBQTtJQUNuQyxzREFBeUMsQ0FBQTtJQUN6Qyx3REFBMkMsQ0FBQTtJQUMzQyxnQ0FBbUIsQ0FBQTtJQUNuQiwwQ0FBNkIsQ0FBQTtJQUM3Qiw0Q0FBK0IsQ0FBQTtJQUMvQixrQ0FBcUIsQ0FBQTtJQUNyQix3Q0FBMkIsQ0FBQTtJQUMzQixvQ0FBdUIsQ0FBQTtJQUV2QixrREFBOEMsQ0FBQTtJQUM5QyxnREFBNEMsQ0FBQTtJQUM1QyxrREFBcUMsQ0FBQTtJQUNyQyw4Q0FBaUMsQ0FBQTtJQUNqQywwQ0FBNkIsQ0FBQTtJQUM3QiwwQ0FBNkIsQ0FBQTtJQUM3QixvRUFBdUQsQ0FBQTtJQUN2RCx3REFBMkMsQ0FBQTtJQUMzQyxzREFBeUMsQ0FBQTtJQUN6Qyx3RUFBMkQsQ0FBQTtJQUMzRCwwQ0FBNkIsQ0FBQTtJQUM3QixnREFBbUMsQ0FBQTtJQUNuQyx3REFBMkMsQ0FBQTtJQUMzQyw0Q0FBK0IsQ0FBQTtJQUMvQixvRUFBdUQsQ0FBQTtJQUN2RCw0Q0FBK0IsQ0FBQTtJQUMvQiw0Q0FBK0IsQ0FBQTtJQUMvQiwwQ0FBNkIsQ0FBQTtJQUM3QixnRUFBbUQsQ0FBQTtJQUNuRCwwREFBNkMsQ0FBQTtJQUM3Qyw4Q0FBaUMsQ0FBQTtJQUNqQyxzRUFBeUQsQ0FBQTtJQUN6RCxrREFBcUMsQ0FBQTtJQUNyQyx3REFBMkMsQ0FBQTtJQUMzQyw4REFBaUQsQ0FBQTtJQUNqRCw0REFBK0MsQ0FBQTtJQUMvQyxvRUFBdUQsQ0FBQTtJQUN2RCxzRUFBeUQsQ0FBQTtBQUMzRCxDQUFDLEVBaERXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBZ0RwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVycm9yVHlwZSBhcyBfRXJyb3JUeXBlIH0gZnJvbSAnLi4vYXV0aC9jb25zdHMnXG5leHBvcnQgZW51bSBTeW50YXgge1xuICBDTElFTlRfSUQgPSAnY2xpZW50X2lkJyxcbiAgQ0xJRU5UX1NFQ1JFVCA9ICdjbGllbnRfc2VjcmV0JyxcbiAgUkVTUE9OU0VfVFlQRSA9ICdyZXNwb25zZV90eXBlJyxcbiAgU0NPUEUgPSAnc2NvcGUnLFxuICBTVEFURSA9ICdzdGF0ZScsXG4gIFJFRElSRUNUX1VSSSA9ICdyZWRpcmVjdF91cmknLFxuICBFUlJPUiA9ICdlcnJvcicsXG4gIEVSUk9SX0RFU0NSSVBUSU9OID0gJ2Vycm9yX2Rlc2NyaXB0aW9uJyxcbiAgRVJST1JfVVJJID0gJ2Vycm9yX3VyaScsXG4gIEdSQU5UX1RZUEUgPSAnZ3JhbnRfdHlwZScsXG4gIENPREUgPSAnY29kZScsXG4gIEFDQ0VTU19UT0tFTiA9ICdhY2Nlc3NfdG9rZW4nLFxuICBUT0tFTl9UWVBFID0gJ3Rva2VuX3R5cGUnLFxuICBFWFBJUkVTX0lOID0gJ2V4cGlyZXNfaW4nLFxuICBVU0VSTkFNRSA9ICd1c2VybmFtZScsXG4gIFBBU1NXT1JEID0gJ3Bhc3N3b3JkJyxcbiAgUkVGUkVTSF9UT0tFTiA9ICdyZWZyZXNoX3Rva2VuJyxcbn1cblxuZXhwb3J0IGVudW0gRXJyb3JUeXBlIHtcbiAgVU5SRUFDSEFCTEUgPSAndW5yZWFjaGFibGUnLFxuICBMT0NBTCA9ICdsb2NhbCcsXG4gIENBTkNFTExFRCA9ICdjYW5jZWxsZWQnLFxuICBVTktOT1dOID0gJ3Vua25vd24nLFxuICBJTlZBTElEX0FSR1VNRU5UID0gJ2ludmFsaWRfYXJndW1lbnQnLFxuICBERUFETElORV9FWENFRURFRCA9ICdkZWFkbGluZV9leGNlZWRlZCcsXG4gIE5PVF9GT1VORCA9ICdub3RfZm91bmQnLFxuICBBTFJFQURZX0VYSVNUUyA9ICdhbHJlYWR5X2V4aXN0cycsXG4gIFBFUk1JU1NJT05fREVOSUVEID0gJ3Blcm1pc3Npb25fZGVuaWVkJyxcbiAgVU5BVVRIRU5USUNBVEVEID0gJ3VuYXV0aGVudGljYXRlZCcsXG4gIFJFU09VUkNFX0VYSEFVU1RFRCA9ICdyZXNvdXJjZV9leGhhdXN0ZWQnLFxuICBGQUlMRURfUFJFQ09ORElUSU9OID0gJ2ZhaWxlZF9wcmVjb25kaXRpb24nLFxuICBBQk9SVEVEID0gJ2Fib3J0ZWQnLFxuICBPVVRfT0ZfUkFOR0UgPSAnb3V0X29mX3JhbmdlJyxcbiAgVU5JTVBMRU1FTlRFRCA9ICd1bmltcGxlbWVudGVkJyxcbiAgSU5URVJOQUwgPSAnaW50ZXJuYWwnLFxuICBVTkFWQUlMQUJMRSA9ICd1bmF2YWlsYWJsZScsXG4gIERBVEFfTE9TUyA9ICdkYXRhX2xvc3MnLFxuICAvLyBDb21tb25FcnJvclxuICBDQVBUQ0hBX1JFUVVJUkVEID0gX0Vycm9yVHlwZS5DQVBUQ0hBX1JFUVVJUkVELFxuICBDQVBUQ0hBX0lOVkFMSUQgPSBfRXJyb3JUeXBlLkNBUFRDSEFfSU5WQUxJRCxcbiAgSU5WQUxJRF9QQVNTV09SRCA9ICdpbnZhbGlkX3Bhc3N3b3JkJyxcbiAgSU5WQUxJRF9TVEFUVVMgPSAnaW52YWxpZF9zdGF0dXMnLFxuICBVU0VSX1BFTkRJTkcgPSAndXNlcl9wZW5kaW5nJyxcbiAgVVNFUl9CTE9DS0VEID0gJ3VzZXJfYmxvY2tlZCcsXG4gIElOVkFMSURfVkVSSUZJQ0FUSU9OX0NPREUgPSAnaW52YWxpZF92ZXJpZmljYXRpb25fY29kZScsXG4gIFRXT19GQUNUT1JfUkVRVUlSRUQgPSAndHdvX2ZhY3Rvcl9yZXF1aXJlZCcsXG4gIElOVkFMSURfVFdPX0ZBQ1RPUiA9ICdpbnZhbGlkX3R3b19mYWN0b3InLFxuICBJTlZBTElEX1RXT19GQUNUT1JfUkVDT1ZFUlkgPSAnaW52YWxpZF90d29fZmFjdG9yX3JlY292ZXJ5JyxcbiAgVU5ERVJfUkVWSUVXID0gJ3VuZGVyX3JldmlldycsXG4gIElOVkFMSURfUkVRVUVTVCA9ICdpbnZhbGlkX3JlcXVlc3QnLFxuICBVTkFVVEhPUklaRURfQ0xJRU5UID0gJ3VuYXV0aG9yaXplZF9jbGllbnQnLFxuICBBQ0NFU1NfREVOSUVEID0gJ2FjY2Vzc19kZW5pZWQnLFxuICBVTlNVUFBPUlRFRF9SRVNQT05TRV9UWVBFID0gJ3Vuc3VwcG9ydGVkX3Jlc3BvbnNlX3R5cGUnLFxuICBJTlZBTElEX1NDT1BFID0gJ2ludmFsaWRfc2NvcGUnLFxuICBJTlZBTElEX0dSQU5UID0gJ2ludmFsaWRfZ3JhbnQnLFxuICBTRVJWRVJfRVJST1IgPSAnc2VydmVyX2Vycm9yJyxcbiAgVEVNUE9SQVJJTFlfVU5BVkFJTEFCTEUgPSAndGVtcG9yYXJpbHlfdW5hdmFpbGFibGUnLFxuICBJTlRFUkFDVElPTl9SRVFVSVJFRCA9ICdpbnRlcmFjdGlvbl9yZXF1aXJlZCcsXG4gIExPR0lOX1JFUVVJUkVEID0gJ2xvZ2luX3JlcXVpcmVkJyxcbiAgQUNDT1VOVF9TRUxFQ1RJT05fUkVRVUlSRUQgPSAnYWNjb3VudF9zZWxlY3Rpb25fcmVxdWlyZWQnLFxuICBDT05TRU5UX1JFUVVJUkVEID0gJ2NvbnNlbnRfcmVxdWlyZWQnLFxuICBJTlZBTElEX1JFUVVFU1RfVVJJID0gJ2ludmFsaWRfcmVxdWVzdF91cmknLFxuICBJTlZBTElEX1JFUVVFU1RfT0JKRUNUID0gJ2ludmFsaWRfcmVxdWVzdF9vYmplY3QnLFxuICBSRVFVRVNUX05PVF9TVVBQT1JURUQgPSAncmVxdWVzdF9ub3Rfc3VwcG9ydGVkJyxcbiAgUkVRVUVTVF9VUklfTk9UX1NVUFBPUlRFRCA9ICdyZXF1ZXN0X3VyaV9ub3Rfc3VwcG9ydGVkJyxcbiAgUkVHSVNUUkFUSU9OX05PVF9TVVBQT1JURUQgPSAncmVnaXN0cmF0aW9uX25vdF9zdXBwb3J0ZWQnLFxufVxuIl19
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29hdXRoMmNsaWVudC9jb25zdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQTBDO0FBQWpDLG1HQUFBLFNBQVMsT0FBQTtBQUNsQixJQUFZLE1Ba0JYO0FBbEJELFdBQVksTUFBTTtJQUNoQixpQ0FBdUIsQ0FBQTtJQUN2Qix5Q0FBK0IsQ0FBQTtJQUMvQix5Q0FBK0IsQ0FBQTtJQUMvQix5QkFBZSxDQUFBO0lBQ2YseUJBQWUsQ0FBQTtJQUNmLHVDQUE2QixDQUFBO0lBQzdCLHlCQUFlLENBQUE7SUFDZixpREFBdUMsQ0FBQTtJQUN2QyxpQ0FBdUIsQ0FBQTtJQUN2QixtQ0FBeUIsQ0FBQTtJQUN6Qix1QkFBYSxDQUFBO0lBQ2IsdUNBQTZCLENBQUE7SUFDN0IsbUNBQXlCLENBQUE7SUFDekIsbUNBQXlCLENBQUE7SUFDekIsK0JBQXFCLENBQUE7SUFDckIsK0JBQXFCLENBQUE7SUFDckIseUNBQStCLENBQUE7QUFDakMsQ0FBQyxFQWxCVyxNQUFNLEdBQU4sY0FBTSxLQUFOLGNBQU0sUUFrQmpCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgRXJyb3JUeXBlIH0gZnJvbSAnLi4vYXV0aC9jb25zdHMnXG5leHBvcnQgZW51bSBTeW50YXgge1xuICBDTElFTlRfSUQgPSAnY2xpZW50X2lkJyxcbiAgQ0xJRU5UX1NFQ1JFVCA9ICdjbGllbnRfc2VjcmV0JyxcbiAgUkVTUE9OU0VfVFlQRSA9ICdyZXNwb25zZV90eXBlJyxcbiAgU0NPUEUgPSAnc2NvcGUnLFxuICBTVEFURSA9ICdzdGF0ZScsXG4gIFJFRElSRUNUX1VSSSA9ICdyZWRpcmVjdF91cmknLFxuICBFUlJPUiA9ICdlcnJvcicsXG4gIEVSUk9SX0RFU0NSSVBUSU9OID0gJ2Vycm9yX2Rlc2NyaXB0aW9uJyxcbiAgRVJST1JfVVJJID0gJ2Vycm9yX3VyaScsXG4gIEdSQU5UX1RZUEUgPSAnZ3JhbnRfdHlwZScsXG4gIENPREUgPSAnY29kZScsXG4gIEFDQ0VTU19UT0tFTiA9ICdhY2Nlc3NfdG9rZW4nLFxuICBUT0tFTl9UWVBFID0gJ3Rva2VuX3R5cGUnLFxuICBFWFBJUkVTX0lOID0gJ2V4cGlyZXNfaW4nLFxuICBVU0VSTkFNRSA9ICd1c2VybmFtZScsXG4gIFBBU1NXT1JEID0gJ3Bhc3N3b3JkJyxcbiAgUkVGUkVTSF9UT0tFTiA9ICdyZWZyZXNoX3Rva2VuJyxcbn1cbiJdfQ==
|
|
@@ -46,18 +46,15 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
46
46
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
50
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
51
|
-
};
|
|
52
49
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
50
|
exports.OAuth2Client = exports.defaultStorage = exports.generateRequestId = exports.toResponseError = exports.defaultRequest = void 0;
|
|
54
51
|
var consts_1 = require("./consts");
|
|
55
52
|
var consts_2 = require("../auth/consts");
|
|
56
|
-
var cloudbase_adapter_wx_mp_1 = __importDefault(require("cloudbase-adapter-wx_mp"));
|
|
57
53
|
var uuid_1 = require("../utils/uuid");
|
|
58
54
|
var index_1 = require("../utils/index");
|
|
59
55
|
var single_promise_1 = require("../utils/function/single-promise");
|
|
60
56
|
var base64_1 = require("../utils/base64");
|
|
57
|
+
var cloudbase_adapter_wx_mp_1 = require("../utils/cloudbase-adapter-wx_mp");
|
|
61
58
|
var RequestIdHeaderName = 'x-request-id';
|
|
62
59
|
var DeviceIdHeaderName = 'x-device-id';
|
|
63
60
|
var DeviceIdSectionName = 'device_id';
|
|
@@ -302,7 +299,7 @@ var LocalCredentials = (function () {
|
|
|
302
299
|
};
|
|
303
300
|
return LocalCredentials;
|
|
304
301
|
}());
|
|
305
|
-
var OAuth2Client =
|
|
302
|
+
var OAuth2Client = (function () {
|
|
306
303
|
function OAuth2Client(options) {
|
|
307
304
|
this.singlePromise = new single_promise_1.SinglePromise();
|
|
308
305
|
this.apiOrigin = options.apiOrigin;
|
|
@@ -327,7 +324,7 @@ var OAuth2Client = exports.OAuth2Client = (function () {
|
|
|
327
324
|
}
|
|
328
325
|
this.wxCloud = options.wxCloud;
|
|
329
326
|
try {
|
|
330
|
-
if (cloudbase_adapter_wx_mp_1.
|
|
327
|
+
if ((0, cloudbase_adapter_wx_mp_1.isMatch)() && this.wxCloud === undefined && options.env) {
|
|
331
328
|
wx.cloud.init({ env: options.env });
|
|
332
329
|
this.wxCloud = wx.cloud;
|
|
333
330
|
}
|
|
@@ -758,4 +755,5 @@ var OAuth2Client = exports.OAuth2Client = (function () {
|
|
|
758
755
|
OAuth2Client.retryInterval = 1000;
|
|
759
756
|
return OAuth2Client;
|
|
760
757
|
}());
|
|
761
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgyY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29hdXRoMmNsaWVudC9vYXV0aDJjbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBb0M7QUFDcEMseUNBQW1EO0FBQ25ELG9GQUFvRDtBQWFwRCxzQ0FBc0M7QUFDdEMsd0NBQTRDO0FBRTVDLG1FQUFnRTtBQUNoRSwwQ0FBd0M7QUFFeEMsSUFBTSxtQkFBbUIsR0FBRyxjQUFjLENBQUE7QUFDMUMsSUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQUE7QUFDeEMsSUFBTSxtQkFBbUIsR0FBRyxXQUFXLENBQUE7QUFXaEMsSUFBTSxjQUFjLEdBQW9CLFVBQW1CLEdBQVcsRUFBRSxPQUF3Qjs7Ozs7O29CQUNqRyxNQUFNLEdBQWEsSUFBSSxDQUFBO29CQUN2QixhQUFhLEdBQXlCLElBQUksQ0FBQTs7OztvQkFHdEMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFBO29CQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTt3QkFDdkIsV0FBVyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUE7cUJBQzNCO29CQUNELElBQUksV0FBVyxDQUFDLElBQUksSUFBSSxPQUFPLFdBQVcsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO3dCQUM1RCxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO3FCQUNwRDtvQkFDZ0MsV0FBTSxLQUFLLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxFQUFBOztvQkFBeEQsY0FBYyxHQUFhLFNBQTZCO29CQUN6QyxXQUFNLGNBQWMsQ0FBQyxJQUFJLEVBQUUsRUFBQTs7b0JBQTFDLFlBQVksR0FBRyxTQUEy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QUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUExWWMseUJBQVksR0FBRyxDQUFDLEFBQUosQ0FBSTtJQUNoQixxQkFBUSxHQUFHLENBQUMsQUFBSixDQUFJO0lBQ1oscUJBQVEsR0FBRyxDQUFDLEFBQUosQ0FBSTtJQUNaLDBCQUFhLEdBQUcsSUFBSSxBQUFQLENBQU87SUF3WXJDLG1CQUFDO0NBQUEsQUE1WUQsSUE0WUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFcnJvclR5cGUgfSBmcm9tICcuL2NvbnN0cydcbmltcG9ydCB7IEFwaVVybHMsIEFwaVVybHNWMiB9IGZyb20gJy4uL2F1dGgvY29uc3RzJ1xuaW1wb3J0IGFkYXB0ZXJGb3JXeE1wIGZyb20gJ2Nsb3VkYmFzZS1hZGFwdGVyLXd4X21wJ1xuXG5pbXBvcnQgeyBBdXRoQ2xpZW50LCBTaW1wbGVTdG9yYWdlIH0gZnJvbSAnLi9pbnRlcmZhY2UnXG5cbmltcG9ydCB7XG4gIENyZWRlbnRpYWxzLFxuICBSZXNwb25zZUVycm9yLFxuICBSZXF1ZXN0T3B0aW9ucyxcbiAgUmVxdWVzdEZ1bmN0aW9uLFxuICBPQXV0aDJDbGllbnRPcHRpb25zLFxuICBBdXRoQ2xpZW50UmVxdWVzdE9wdGlvbnMsXG59IGZyb20gJy4vbW9kZWxzJ1xuXG5pbXBvcnQgeyB1dWlkdjQgfSBmcm9tICcuLi91dGlscy91dWlkJ1xuaW1wb3J0IHsgZ2V0UGF0aE5hbWUgfSBmcm9tICcuLi91dGlscy9pbmRleCdcblxuaW1wb3J0IHsgU2luZ2xlUHJvbWlzZSB9IGZyb20gJy4uL3V0aWxzL2Z1bmN0aW9uL3NpbmdsZS1wcm9taXNlJ1xuaW1wb3J0IHsgd2VCdG9hIH0gZnJvbSAnLi4vdXRpbHMvYmFzZTY0J1xuXG5jb25zdCBSZXF1ZXN0SWRIZWFkZXJOYW1lID0gJ3gtcmVxdWVzdC1pZCdcbmNvbnN0IERldmljZUlkSGVhZGVyTmFtZSA9ICd4LWRldmljZS1pZCdcbmNvbnN0IERldmljZUlkU2VjdGlvbk5hbWUgPSAnZGV2aWNlX2lkJ1xuXG5kZWNsYXJlIGNvbnN0IHd4OiBhbnlcblxuZXhwb3J0IGludGVyZmFjZSBUb1Jlc3BvbnNlRXJyb3JPcHRpb25zIHtcbiAgZXJyb3I/OiBFcnJvclR5cGVcbiAgZXJyb3JfZGVzY3JpcHRpb24/OiBzdHJpbmcgfCBudWxsXG4gIGVycm9yX3VyaT86IHN0cmluZyB8IG51bGxcbiAgZGV0YWlscz86IGFueSB8IG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRSZXF1ZXN0OiBSZXF1ZXN0RnVuY3Rpb24gPSBhc3luYyBmdW5jdGlvbiA8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VD4ge1xuICBsZXQgcmVzdWx0OiBUIHwgbnVsbCA9IG51bGxcbiAgbGV0IHJlc3BvbnNlRXJyb3I6IFJlc3BvbnNlRXJyb3IgfCBudWxsID0gbnVsbFxuICB0cnkge1xuICAgIC8vIE9iamVjdHMgbXVzdCBiZSBjb3BpZWQgdG8gcHJldmVudCBtb2RpZmljYXRpb24gb2YgZGF0YSBzdWNoIGFzIGJvZHkuXG4gICAgY29uc3QgY29weU9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKVxuICAgIGlmICghY29weU9wdGlvbnMubWV0aG9kKSB7XG4gICAgICBjb3B5T3B0aW9ucy5tZXRob2QgPSAnR0VUJ1xuICAgIH1cbiAgICBpZiAoY29weU9wdGlvbnMuYm9keSAmJiB0eXBlb2YgY29weU9wdGlvbnMuYm9keSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGNvcHlPcHRpb25zLmJvZHkgPSBKU09OLnN0cmluZ2lmeShjb3B5T3B0aW9ucy5ib2R5KVxuICAgIH1cbiAgICBjb25zdCByZXNwb25zZVJlc3VsdDogUmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIGNvcHlPcHRpb25zKVxuICAgIGNvbnN0IGpzb25SZXNwb25zZSA9IGF3YWl0IHJlc3BvbnNlUmVzdWx0Lmpzb24oKVxuICAgIGlmIChqc29uUmVzcG9uc2U/LmVycm9yKSB7XG4gICAgICByZXNwb25zZUVycm9yID0ganNvblJlc3BvbnNlIGFzIFJlc3BvbnNlRXJyb3JcbiAgICAgIHJlc3BvbnNlRXJyb3IuZXJyb3JfdXJpID0gbmV3IFVSTCh1cmwpLnBhdGhuYW1lXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IGpzb25SZXNwb25zZSBhcyBUXG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlc3BvbnNlRXJyb3IgPSB7XG4gICAgICBlcnJvcjogRXJyb3JUeXBlLlVOUkVBQ0hBQkxFLFxuICAgICAgZXJyb3JfZGVzY3JpcHRpb246IGVycm9yLm1lc3NhZ2UsXG4gICAgICBlcnJvcl91cmk6IG5ldyBVUkwodXJsKS5wYXRobmFtZSxcbiAgICB9XG4gIH1cbiAgaWYgKHJlc3BvbnNlRXJyb3IpIHtcbiAgICB0aHJvdyByZXNwb25zZUVycm9yXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCB0b1Jlc3BvbnNlRXJyb3IgPSAoZXJyb3I6IFJlc3BvbnNlRXJyb3IgfCBFcnJvciwgb3B0aW9ucz86IFRvUmVzcG9uc2VFcnJvck9wdGlvbnMpOiBSZXNwb25zZUVycm9yID0+IHtcbiAgbGV0IHJlc3BvbnNlRXJyb3I6IFJlc3BvbnNlRXJyb3JcbiAgY29uc3QgZm9ybWF0T3B0aW9uczogVG9SZXNwb25zZUVycm9yT3B0aW9ucyA9IG9wdGlvbnMgfHwge31cbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICByZXNwb25zZUVycm9yID0ge1xuICAgICAgZXJyb3I6IGZvcm1hdE9wdGlvbnMuZXJyb3IgfHwgRXJyb3JUeXBlLkxPQ0FMLFxuICAgICAgZXJyb3JfZGVzY3JpcHRpb246IGZvcm1hdE9wdGlvbnMuZXJyb3JfZGVzY3JpcHRpb24gfHwgZXJyb3IubWVzc2FnZSxcbiAgICAgIGVycm9yX3VyaTogZm9ybWF0T3B0aW9ucy5lcnJvcl91cmksXG4gICAgICBkZXRhaWxzOiBmb3JtYXRPcHRpb25zLmRldGFpbHMgfHwgZXJyb3Iuc3RhY2ssXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGZvcm1hdEVycm9yOiBUb1Jlc3BvbnNlRXJyb3JPcHRpb25zID0gZXJyb3IgfHwge31cbiAgICByZXNwb25zZUVycm9yID0ge1xuICAgICAgZXJyb3I6IGZvcm1hdE9wdGlvbnMuZXJyb3IgfHwgZm9ybWF0RXJyb3IuZXJyb3IgfHwgRXJyb3JUeXBlLkxPQ0FMLFxuICAgICAgZXJyb3JfZGVzY3JpcHRpb246IGZvcm1hdE9wdGlvbnMuZXJyb3JfZGVzY3JpcHRpb24gfHwgZm9ybWF0RXJyb3IuZXJyb3JfZGVzY3JpcHRpb24sXG4gICAgICBlcnJvcl91cmk6IGZvcm1hdE9wdGlvbnMuZXJyb3JfdXJpIHx8IGZvcm1hdEVycm9yLmVycm9yX3VyaSxcbiAgICAgIGRldGFpbHM6IGZvcm1hdE9wdGlvbnMuZGV0YWlscyB8fCBmb3JtYXRFcnJvci5kZXRhaWxzLFxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzcG9uc2VFcnJvclxufVxuXG4vKipcbiAqIEdlbmVyYXRlIHJlcXVlc3QgaWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVJlcXVlc3RJZCgpOiBzdHJpbmcge1xuICByZXR1cm4gdXVpZHY0KClcbn1cblxuLyoqXG4gKiBEZWZhdWx0IFN0b3JhZ2UuXG4gKi9cbmNsYXNzIERlZmF1bHRTdG9yYWdlIGltcGxlbWVudHMgU2ltcGxlU3RvcmFnZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Vudjogc3RyaW5nXG5cbiAgY29uc3RydWN0b3Iob3B0cz86IHsgZW52OiBzdHJpbmcgfSkge1xuICAgIHRoaXMuX2VudiA9IG9wdHM/LmVudiB8fCAnJ1xuICB9XG4gIC8qKlxuICAgKiBHZXQgaXRlbS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgKi9cbiAgYXN5bmMgZ2V0SXRlbShrZXk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oYCR7a2V5fSR7dGhpcy5fZW52fWApXG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGl0ZW0uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICovXG4gIGFzeW5jIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oYCR7a2V5fSR7dGhpcy5fZW52fWApXG4gIH1cblxuICAvKipcbiAgICogU2V0IGl0ZW0uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gICAqL1xuICBhc3luYyBzZXRJdGVtKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKGAke2tleX0ke3RoaXMuX2Vudn1gLCB2YWx1ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgaXRlbSBzeW5jLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gICAqL1xuICBnZXRJdGVtU3luYyhrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oYCR7a2V5fSR7dGhpcy5fZW52fWApXG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGl0ZW0gc3luYy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgKi9cbiAgcmVtb3ZlSXRlbVN5bmMoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oYCR7a2V5fSR7dGhpcy5fZW52fWApXG4gIH1cblxuICAvKipcbiAgICogU2V0IGl0ZW0gc3luYy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAgICovXG4gIHNldEl0ZW1TeW5jKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKGAke2tleX0ke3RoaXMuX2Vudn1gLCB2YWx1ZSlcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdFN0b3JhZ2UgPSBuZXcgRGVmYXVsdFN0b3JhZ2UoKVxuXG5pbnRlcmZhY2UgTG9jYWxDcmVkZW50aWFsc09wdGlvbnMge1xuICB0b2tlblNlY3Rpb25OYW1lOiBzdHJpbmdcbiAgc3RvcmFnZTogU2ltcGxlU3RvcmFnZVxufVxuXG4vKipcbiAqIENoZWNrIGlmIGNyZWRlbnRpYWxzIGlzIGV4cGlyZWQuXG4gKiBAcGFyYW0ge0NyZWRlbnRpYWxzfSBjcmVkZW50aWFsc1xuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNDcmVkZW50aWFsc0V4cGlyZWQoY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzKTogYm9vbGVhbiB7XG4gIGxldCBpc0V4cGlyZWQgPSB0cnVlXG4gIGlmIChjcmVkZW50aWFscz8uZXhwaXJlc19hdCAmJiBjcmVkZW50aWFscz8uYWNjZXNzX3Rva2VuKSB7XG4gICAgaXNFeHBpcmVkID0gY3JlZGVudGlhbHMuZXhwaXJlc19hdCA8IG5ldyBEYXRlKClcbiAgfVxuICByZXR1cm4gaXNFeHBpcmVkXG59XG5cbi8qKlxuICogTG9jYWwgY3JlZGVudGlhbHMuXG4gKiBMb2NhbCBjcmVkZW50aWFscywgd2l0aCBtZW1vcnkgY2FjaGUgYW5kIHN0b3JhZ2UgY2FjaGUuXG4gKiBJZiB0aGUgbWVtb3J5IGNhY2hlIGV4cGlyZXMsIHRoZSBzdG9yYWdlIGNhY2hlIGlzIGF1dG9tYXRpY2FsbHkgbG9hZGVkLlxuICovXG5jbGFzcyBMb2NhbENyZWRlbnRpYWxzIHtcbiAgcHJpdmF0ZSB0b2tlblNlY3Rpb25OYW1lOiBzdHJpbmdcblxuICBwcml2YXRlIHN0b3JhZ2U6IFNpbXBsZVN0b3JhZ2VcblxuICBwcml2YXRlIGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyB8IG51bGwgPSBudWxsXG5cbiAgcHJpdmF0ZSBzaW5nbGVQcm9taXNlOiBTaW5nbGVQcm9taXNlID0gbmV3IFNpbmdsZVByb21pc2UoKVxuXG4gIC8qKlxuICAgKiBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge0xvY2FsQ3JlZGVudGlhbHNPcHRpb25zfSBvcHRpb25zXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBMb2NhbENyZWRlbnRpYWxzT3B0aW9ucykge1xuICAgIHRoaXMudG9rZW5TZWN0aW9uTmFtZSA9IG9wdGlvbnMudG9rZW5TZWN0aW9uTmFtZVxuICAgIHRoaXMuc3RvcmFnZSA9IG9wdGlvbnMuc3RvcmFnZVxuICB9XG5cbiAgcHVibGljIGdldFN0b3JhZ2VDcmVkZW50aWFsc1N5bmMoKTogQ3JlZGVudGlhbHMgfCBudWxsIHtcbiAgICBsZXQgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gbnVsbFxuICAgIGNvbnN0IHRva2VuU3RyOiBzdHJpbmcgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbVN5bmModGhpcy50b2tlblNlY3Rpb25OYW1lKVxuICAgIGlmICh0b2tlblN0ciAhPT0gdW5kZWZpbmVkICYmIHRva2VuU3RyICE9PSBudWxsKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjcmVkZW50aWFscyA9IEpTT04ucGFyc2UodG9rZW5TdHIpXG4gICAgICAgIGlmIChjcmVkZW50aWFscz8uZXhwaXJlc19hdCkge1xuICAgICAgICAgIGNyZWRlbnRpYWxzLmV4cGlyZXNfYXQgPSBuZXcgRGF0ZShjcmVkZW50aWFscy5leHBpcmVzX2F0KVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLnRva2VuU2VjdGlvbk5hbWUpXG4gICAgICAgIGNyZWRlbnRpYWxzID0gbnVsbFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY3JlZGVudGlhbHNcbiAgfVxuXG4gIC8qKlxuICAgKiBzZXRDcmVkZW50aWFscyBQcm92aWRlcyBhbiBhbHRlcm5hdGl2ZSBmZXRjaCBhcGkgcmVxdWVzdCBpbXBsZW1lbnRhdGlvbiB3aXRoIGF1dGggY3JlZGVudGlhbHNcbiAgICogQHBhcmFtIHtDcmVkZW50aWFsc30gY3JlZGVudGlhbHNcbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZXRDcmVkZW50aWFscyhjcmVkZW50aWFscz86IENyZWRlbnRpYWxzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKGNyZWRlbnRpYWxzPy5leHBpcmVzX2luKSB7XG4gICAgICBjcmVkZW50aWFscy5leHBpcmVzX2F0ID0gbmV3IERhdGUoRGF0ZS5ub3coKSArIChjcmVkZW50aWFscy5leHBpcmVzX2luIC0gMzApICogMTAwMClcbiAgICAgIGlmICh0aGlzLnN0b3JhZ2UpIHtcbiAgICAgICAgY29uc3QgdG9rZW5TdHI6IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGNyZWRlbnRpYWxzKVxuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnRva2VuU2VjdGlvbk5hbWUsIHRva2VuU3RyKVxuICAgICAgfVxuICAgICAgdGhpcy5jcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnN0b3JhZ2UpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy50b2tlblNlY3Rpb25OYW1lKVxuICAgICAgfVxuICAgICAgdGhpcy5jcmVkZW50aWFscyA9IG51bGxcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNyZWRlbnRpYWxzLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPENyZWRlbnRpYWxzIHwgbnVsbD59XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0Q3JlZGVudGlhbHMoKTogUHJvbWlzZTxDcmVkZW50aWFscyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5zaW5nbGVQcm9taXNlLnJ1bignZ2V0Q3JlZGVudGlhbHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoaXNDcmVkZW50aWFsc0V4cGlyZWQodGhpcy5jcmVkZW50aWFscykpIHtcbiAgICAgICAgdGhpcy5jcmVkZW50aWFscyA9IGF3YWl0IHRoaXMuZ2V0U3RvcmFnZUNyZWRlbnRpYWxzKClcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmNyZWRlbnRpYWxzXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgc3RvcmFnZSBjcmVkZW50aWFscy5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZ2V0U3RvcmFnZUNyZWRlbnRpYWxzKCk6IFByb21pc2U8Q3JlZGVudGlhbHMgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuc2luZ2xlUHJvbWlzZS5ydW4oJ19nZXRTdG9yYWdlQ3JlZGVudGlhbHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gbnVsbFxuICAgICAgY29uc3QgdG9rZW5TdHI6IHN0cmluZyA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXRJdGVtKHRoaXMudG9rZW5TZWN0aW9uTmFtZSlcbiAgICAgIGlmICh0b2tlblN0ciAhPT0gdW5kZWZpbmVkICYmIHRva2VuU3RyICE9PSBudWxsKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY3JlZGVudGlhbHMgPSBKU09OLnBhcnNlKHRva2VuU3RyKVxuICAgICAgICAgIGlmIChjcmVkZW50aWFscz8uZXhwaXJlc19hdCkge1xuICAgICAgICAgICAgY3JlZGVudGlhbHMuZXhwaXJlc19hdCA9IG5ldyBEYXRlKGNyZWRlbnRpYWxzLmV4cGlyZXNfYXQpXG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMudG9rZW5TZWN0aW9uTmFtZSlcbiAgICAgICAgICBjcmVkZW50aWFscyA9IG51bGxcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNyZWRlbnRpYWxzXG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIE9BdXRoMkNsaWVudFxuICovXG5leHBvcnQgY2xhc3MgT0F1dGgyQ2xpZW50IGltcGxlbWVudHMgQXV0aENsaWVudCB7XG4gIHByaXZhdGUgc3RhdGljIGRlZmF1bHRSZXRyeSA9IDJcbiAgcHJpdmF0ZSBzdGF0aWMgbWluUmV0cnkgPSAwXG4gIHByaXZhdGUgc3RhdGljIG1heFJldHJ5ID0gNVxuICBwcml2YXRlIHN0YXRpYyByZXRyeUludGVydmFsID0gMTAwMFxuXG4gIHByaXZhdGUgYXBpT3JpZ2luOiBzdHJpbmdcbiAgcHJpdmF0ZSBjbGllbnRJZDogc3RyaW5nXG4gIHByaXZhdGUgcmV0cnk6IG51bWJlclxuICBwcml2YXRlIGNsaWVudFNlY3JldD86IHN0cmluZ1xuICBwcml2YXRlIGJhc2VSZXF1ZXN0OiA8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxUPlxuICBwcml2YXRlIGxvY2FsQ3JlZGVudGlhbHM6IExvY2FsQ3JlZGVudGlhbHNcbiAgcHJpdmF0ZSBzdG9yYWdlOiBTaW1wbGVTdG9yYWdlXG4gIHByaXZhdGUgZGV2aWNlSUQ/OiBzdHJpbmdcbiAgcHJpdmF0ZSB0b2tlbkluVVJMPzogYm9vbGVhblxuICBwcml2YXRlIHJlZnJlc2hUb2tlbkZ1bmM6IChyZWZyZXNoVG9rZW4/OiBzdHJpbmcsIGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHMpID0+IFByb21pc2U8Q3JlZGVudGlhbHM+XG4gIHByaXZhdGUgaGVhZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1cbiAgcHJpdmF0ZSBzaW5nbGVQcm9taXNlOiBTaW5nbGVQcm9taXNlID0gbmV3IFNpbmdsZVByb21pc2UoKVxuICBwcml2YXRlIGFub255bW91c1NpZ25JbkZ1bmM6IChDcmVkZW50aWFscykgPT4gUHJvbWlzZTxDcmVkZW50aWFscyB8IHZvaWQ+XG4gIHByaXZhdGUgd3hDbG91ZDogYW55XG4gIHByaXZhdGUgYmFzaWNBdXRoOiBzdHJpbmdcblxuICAvKipcbiAgICogY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtPQXV0aDJDbGllbnRPcHRpb25zfSBvcHRpb25zXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBPQXV0aDJDbGllbnRPcHRpb25zKSB7XG4gICAgdGhpcy5hcGlPcmlnaW4gPSBvcHRpb25zLmFwaU9yaWdpblxuICAgIHRoaXMuY2xpZW50SWQgPSBvcHRpb25zLmNsaWVudElkXG4gICAgdGhpcy5yZXRyeSA9IHRoaXMuZm9ybWF0UmV0cnkob3B0aW9ucy5yZXRyeSwgT0F1dGgyQ2xpZW50LmRlZmF1bHRSZXRyeSlcbiAgICBpZiAob3B0aW9ucy5iYXNlUmVxdWVzdCkge1xuICAgICAgdGhpcy5iYXNlUmVxdWVzdCA9IG9wdGlvbnMuYmFzZVJlcXVlc3RcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5iYXNlUmVxdWVzdCA9IGRlZmF1bHRSZXF1ZXN0XG4gICAgfVxuICAgIHRoaXMudG9rZW5JblVSTCA9IG9wdGlvbnMudG9rZW5JblVSTFxuICAgIHRoaXMuaGVhZGVycyA9IG9wdGlvbnMuaGVhZGVyc1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLnN0b3JhZ2UgPSBvcHRpb25zLnN0b3JhZ2UgfHwgbmV3IERlZmF1bHRTdG9yYWdlKHsgZW52OiBvcHRpb25zLmVudiB9KVxuICAgIHRoaXMubG9jYWxDcmVkZW50aWFscyA9IG5ldyBMb2NhbENyZWRlbnRpYWxzKHtcbiAgICAgIHRva2VuU2VjdGlvbk5hbWU6IGBjcmVkZW50aWFsc18ke29wdGlvbnMuY2xpZW50SWR9YCxcbiAgICAgIHN0b3JhZ2U6IHRoaXMuc3RvcmFnZSxcbiAgICB9KVxuICAgIHRoaXMuY2xpZW50U2VjcmV0ID0gb3B0aW9ucy5jbGllbnRTZWNyZXRcbiAgICBpZiAob3B0aW9ucy5jbGllbnRJZCAhPT0gJycpIHtcbiAgICAgIHRoaXMuYmFzaWNBdXRoID0gYEJhc2ljICR7d2VCdG9hKGAke29wdGlvbnMuY2xpZW50SWR9OiR7b3B0aW9ucy5jbGllbnRTZWNyZXR9YCl9YFxuICAgIH1cbiAgICB0aGlzLnd4Q2xvdWQgPSBvcHRpb25zLnd4Q2xvdWRcbiAgICB0cnkge1xuICAgICAgaWYgKGFkYXB0ZXJGb3JXeE1wLmlzTWF0Y2goKSAmJiB0aGlzLnd4Q2xvdWQgPT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLmVudikge1xuICAgICAgICB3eC5jbG91ZC5pbml0KHsgZW52OiBvcHRpb25zLmVudiB9KVxuICAgICAgICB0aGlzLnd4Q2xvdWQgPSB3eC5jbG91ZFxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvL1xuICAgIH1cbiAgICB0aGlzLnJlZnJlc2hUb2tlbkZ1bmMgPSBvcHRpb25zLnJlZnJlc2hUb2tlbkZ1bmMgfHwgdGhpcy5kZWZhdWx0UmVmcmVzaFRva2VuRnVuY1xuICAgIHRoaXMuYW5vbnltb3VzU2lnbkluRnVuYyA9IG9wdGlvbnMuYW5vbnltb3VzU2lnbkluRnVuY1xuICB9XG5cbiAgLyoqXG4gICAqIHNldENyZWRlbnRpYWxzIFByb3ZpZGVzIGFuIGFsdGVybmF0aXZlIGZldGNoIGFwaSByZXF1ZXN0IGltcGxlbWVudGF0aW9uIHdpdGggYXV0aCBjcmVkZW50aWFsc1xuICAgKiBAcGFyYW0ge0NyZWRlbnRpYWxzfSBjcmVkZW50aWFsc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgcHVibGljIHNldENyZWRlbnRpYWxzKGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5sb2NhbENyZWRlbnRpYWxzLnNldENyZWRlbnRpYWxzKGNyZWRlbnRpYWxzKVxuICB9XG5cbiAgLyoqXG4gICAqIGdldEFjY2Vzc1Rva2VuIHJldHVybiBhIHZhbGlkYXRlIGFjY2VzcyB0b2tlblxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEFjY2Vzc1Rva2VuKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5nZXRDcmVkZW50aWFscygpXG4gICAgaWYgKGNyZWRlbnRpYWxzPy5hY2Nlc3NfdG9rZW4pIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY3JlZGVudGlhbHMuYWNjZXNzX3Rva2VuKVxuICAgIH1cbiAgICBjb25zdCByZXNwRXJyOiBSZXNwb25zZUVycm9yID0geyBlcnJvcjogRXJyb3JUeXBlLlVOQVVUSEVOVElDQVRFRCB9XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlc3BFcnIpXG4gIH1cblxuICAvKipcbiAgICogcmVxdWVzdCBodHRwIGxpa2Ugc2ltcGxlIGZldGNoIGFwaSwgZXhwOnJlcXVlc3QoJy92MS91c2VyL21lJywge3dpdGhDcmVkZW50aWFsczp0cnVlfSlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge0F1dGhDbGllbnRSZXF1ZXN0T3B0aW9uc30gb3B0aW9uc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIHJlcXVlc3Q8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBBdXRoQ2xpZW50UmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIG9wdGlvbnMgPSB7fVxuICAgIH1cbiAgICBjb25zdCByZXRyeTogbnVtYmVyID0gdGhpcy5mb3JtYXRSZXRyeShvcHRpb25zLnJldHJ5LCB0aGlzLnJldHJ5KVxuICAgIG9wdGlvbnMuaGVhZGVycyA9IG9wdGlvbnMuaGVhZGVycyB8fCB7fVxuICAgIGlmICh0aGlzLmhlYWRlcnMpIHtcbiAgICAgIG9wdGlvbnMuaGVhZGVycyA9IHtcbiAgICAgICAgLi4udGhpcy5oZWFkZXJzLFxuICAgICAgICAuLi5vcHRpb25zLmhlYWRlcnMsXG4gICAgICB9XG4gICAgfVxuICAgIGlmICghb3B0aW9ucy5oZWFkZXJzW1JlcXVlc3RJZEhlYWRlck5hbWVdKSB7XG4gICAgICBvcHRpb25zLmhlYWRlcnNbUmVxdWVzdElkSGVhZGVyTmFtZV0gPSBnZW5lcmF0ZVJlcXVlc3RJZCgpXG4gICAgfVxuICAgIGlmICghb3B0aW9ucy5oZWFkZXJzW0RldmljZUlkSGVhZGVyTmFtZV0pIHtcbiAgICAgIGNvbnN0IGRldmljZUlkID0gYXdhaXQgdGhpcy5nZXREZXZpY2VJZCgpXG4gICAgICBvcHRpb25zLmhlYWRlcnNbRGV2aWNlSWRIZWFkZXJOYW1lXSA9IGRldmljZUlkXG4gICAgfVxuICAgIGlmIChvcHRpb25zPy53aXRoQmFzaWNBdXRoICYmIHRoaXMuYmFzaWNBdXRoKSB7XG4gICAgICBvcHRpb25zLmhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IHRoaXMuYmFzaWNBdXRoXG4gICAgfVxuICAgIGlmIChvcHRpb25zPy53aXRoQ3JlZGVudGlhbHMpIHtcbiAgICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5nZXRDcmVkZW50aWFscygpXG4gICAgICBpZiAoY3JlZGVudGlhbHMpIHtcbiAgICAgICAgaWYgKHRoaXMudG9rZW5JblVSTCkge1xuICAgICAgICAgIGlmICh1cmwuaW5kZXhPZignPycpIDwgMCkge1xuICAgICAgICAgICAgdXJsICs9ICc/J1xuICAgICAgICAgIH1cbiAgICAgICAgICB1cmwgKz0gYGFjY2Vzc190b2tlbj0ke2NyZWRlbnRpYWxzLmFjY2Vzc190b2tlbn1gXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9ucy5oZWFkZXJzLkF1dGhvcml6YXRpb24gPSBgJHtjcmVkZW50aWFscy50b2tlbl90eXBlfSAke2NyZWRlbnRpYWxzLmFjY2Vzc190b2tlbn1gXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY2xpZW50SWQgJiYgdXJsLmluZGV4T2YoJ2NsaWVudF9pZCcpIDwgMCkge1xuICAgICAgICB1cmwgKz0gdXJsLmluZGV4T2YoJz8nKSA8IDAgPyAnPycgOiAnJidcbiAgICAgICAgdXJsICs9IGBjbGllbnRfaWQ9JHt0aGlzLmNsaWVudElkfWBcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHVybC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgIHVybCA9IHRoaXMuYXBpT3JpZ2luICsgdXJsXG4gICAgfVxuICAgIGxldCByZXNwb25zZTogVCB8IG51bGwgPSBudWxsXG4gICAgY29uc3QgbWF4UmVxdWVzdFRpbWVzOiBudW1iZXIgPSByZXRyeSArIDFcbiAgICBmb3IgKGxldCByZXF1ZXN0VGltZSA9IDA7IHJlcXVlc3RUaW1lIDwgbWF4UmVxdWVzdFRpbWVzOyByZXF1ZXN0VGltZSsrKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAob3B0aW9ucy51c2VXeENsb3VkKSB7XG4gICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnd4Q2xvdWRDYWxsRnVuY3Rpb248VD4odXJsLCBvcHRpb25zKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5iYXNlUmVxdWVzdDxUPih1cmwsIG9wdGlvbnMpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH0gY2F0Y2ggKHJlc3BvbnNlRXJyb3IpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMud2l0aENyZWRlbnRpYWxzICYmIHJlc3BvbnNlRXJyb3IgJiYgcmVzcG9uc2VFcnJvci5lcnJvciA9PT0gRXJyb3JUeXBlLlVOQVVUSEVOVElDQVRFRCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2V0Q3JlZGVudGlhbHMobnVsbClcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVzcG9uc2VFcnJvcilcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXF1ZXN0VGltZSA9PT0gcmV0cnkgfHwgIXJlc3BvbnNlRXJyb3IgfHwgcmVzcG9uc2VFcnJvci5lcnJvciAhPT0gJ3VucmVhY2hhYmxlJykge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChyZXNwb25zZUVycm9yKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLnNsZWVwKE9BdXRoMkNsaWVudC5yZXRyeUludGVydmFsKVxuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2VcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB3eENsb3VkQ2FsbEZ1bmN0aW9uPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFQ+IHtcbiAgICBsZXQgcmVzdWx0OiBUIHwgbnVsbCA9IG51bGxcbiAgICBsZXQgcmVzcG9uc2VFcnJvcjogUmVzcG9uc2VFcnJvciB8IG51bGwgPSBudWxsXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgcmVzdWx0OiByZXNwb25zZVJlc3VsdCB9ID0gYXdhaXQgdGhpcy53eENsb3VkLmNhbGxGdW5jdGlvbih7XG4gICAgICAgIG5hbWU6ICdodHRwT3ZlckNhbGxGdW5jdGlvbicsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICB1cmwsXG4gICAgICAgICAgbWV0aG9kOiBvcHRpb25zLm1ldGhvZCxcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBvcmlnaW46ICdodHRwczovL3NlcnZpY2V3ZWNoYXQuY29tJyxcbiAgICAgICAgICAgIC4uLm9wdGlvbnMuaGVhZGVycyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJvZHk6IG9wdGlvbnMuYm9keSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG5cbiAgICAgIGlmIChyZXNwb25zZVJlc3VsdD8uYm9keT8uZXJyb3JfY29kZSkge1xuICAgICAgICByZXNwb25zZUVycm9yID0gcmVzcG9uc2VSZXN1bHQ/LmJvZHkgYXMgUmVzcG9uc2VFcnJvclxuICAgICAgICByZXNwb25zZUVycm9yLmVycm9yX3VyaSA9IGdldFBhdGhOYW1lKHVybClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3BvbnNlUmVzdWx0Py5ib2R5IGFzIFRcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmVzcG9uc2VFcnJvciA9IHtcbiAgICAgICAgZXJyb3I6IEVycm9yVHlwZS5VTlJFQUNIQUJMRSxcbiAgICAgICAgZXJyb3JfZGVzY3JpcHRpb246IGVycm9yLm1lc3NhZ2UsXG4gICAgICAgIGVycm9yX3VyaTogZ2V0UGF0aE5hbWUodXJsKSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVzcG9uc2VFcnJvcikge1xuICAgICAgdGhyb3cgcmVzcG9uc2VFcnJvclxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjcmVkZW50aWFscy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRDcmVkZW50aWFscygpOiBQcm9taXNlPENyZWRlbnRpYWxzIHwgbnVsbD4ge1xuICAgIGxldCBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmxvY2FsQ3JlZGVudGlhbHMuZ2V0Q3JlZGVudGlhbHMoKVxuICAgIGlmICghY3JlZGVudGlhbHMpIHtcbiAgICAgIHJldHVybiB0aGlzLnVuQXV0aGVudGljYXRlZEVycm9yKCdjcmVkZW50aWFscyBub3QgZm91bmQnKVxuICAgIH1cbiAgICBpZiAoaXNDcmVkZW50aWFsc0V4cGlyZWQoY3JlZGVudGlhbHMpKSB7XG4gICAgICBpZiAoY3JlZGVudGlhbHMgJiYgY3JlZGVudGlhbHMuc2NvcGUgPT09ICdhbm9ueW1vdXMnKSB7XG4gICAgICAgIGlmICh0aGlzLmFub255bW91c1NpZ25JbkZ1bmMpIHtcbiAgICAgICAgICBjb25zdCBjID0gYXdhaXQgdGhpcy5hbm9ueW1vdXNTaWduSW5GdW5jKGNyZWRlbnRpYWxzKVxuICAgICAgICAgIGNyZWRlbnRpYWxzID0gYyB8fCAoYXdhaXQgdGhpcy5sb2NhbENyZWRlbnRpYWxzLmdldENyZWRlbnRpYWxzKCkpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmFub255bW91c1NpZ25JbihjcmVkZW50aWFscylcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLnJlZnJlc2hUb2tlbihjcmVkZW50aWFscylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNyZWRlbnRpYWxzXG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQg5bqf5byD5o6l5Y+j77yM5Yu/55SoLiDlpoLpnIDojrflj5blh63or4Hkv6Hmga/or7fkvb/nlKggZ2V0Q3JlZGVudGlhbHMg5pa55rOVXG4gICAqL1xuICBwdWJsaWMgZ2V0Q3JlZGVudGlhbHNTeW5jKCk6IENyZWRlbnRpYWxzIHwgbnVsbCB7XG4gICAgY29uc3QgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gdGhpcy5sb2NhbENyZWRlbnRpYWxzLmdldFN0b3JhZ2VDcmVkZW50aWFsc1N5bmMoKVxuICAgIHJldHVybiBjcmVkZW50aWFsc1xuICB9XG5cbiAgcHVibGljIGdldENyZWRlbnRpYWxzQXN5bmMoKTogUHJvbWlzZTxDcmVkZW50aWFscyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRDcmVkZW50aWFscygpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U2NvcGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmxvY2FsQ3JlZGVudGlhbHMuZ2V0Q3JlZGVudGlhbHMoKVxuICAgIGlmICghY3JlZGVudGlhbHMpIHtcbiAgICAgIHJldHVybiB0aGlzLnVuQXV0aGVudGljYXRlZEVycm9yKCdjcmVkZW50aWFscyBub3QgZm91bmQnKVxuICAgIH1cbiAgICByZXR1cm4gY3JlZGVudGlhbHMuc2NvcGVcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRHcm91cHMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMubG9jYWxDcmVkZW50aWFscy5nZXRDcmVkZW50aWFscygpXG4gICAgaWYgKCFjcmVkZW50aWFscykge1xuICAgICAgcmV0dXJuIHRoaXMudW5BdXRoZW50aWNhdGVkRXJyb3IoJ2NyZWRlbnRpYWxzIG5vdCBmb3VuZCcpXG4gICAgfVxuICAgIHJldHVybiBjcmVkZW50aWFscy5ncm91cHNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNoIGV4cGlyZWQgdG9rZW4uXG4gICAqIEBwYXJhbSB7Q3JlZGVudGlhbHN9IGNyZWRlbnRpYWxzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q3JlZGVudGlhbHM+fVxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJlZnJlc2hUb2tlbihjcmVkZW50aWFsczogQ3JlZGVudGlhbHMpOiBQcm9taXNlPENyZWRlbnRpYWxzPiB7XG4gICAgcmV0dXJuIHRoaXMuc2luZ2xlUHJvbWlzZS5ydW4oJ19yZWZyZXNoVG9rZW4nLCBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoIWNyZWRlbnRpYWxzIHx8ICFjcmVkZW50aWFscy5yZWZyZXNoX3Rva2VuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuQXV0aGVudGljYXRlZEVycm9yKCdubyByZWZyZXNoIHRva2VuIGZvdW5kIGluIGNyZWRlbnRpYWxzJylcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG5ld0NyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMucmVmcmVzaFRva2VuRnVuYyhjcmVkZW50aWFscy5yZWZyZXNoX3Rva2VuLCBjcmVkZW50aWFscylcbiAgICAgICAgYXdhaXQgdGhpcy5sb2NhbENyZWRlbnRpYWxzLnNldENyZWRlbnRpYWxzKG5ld0NyZWRlbnRpYWxzKVxuICAgICAgICByZXR1cm4gbmV3Q3JlZGVudGlhbHNcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvci5lcnJvciA9PT0gRXJyb3JUeXBlLklOVkFMSURfR1JBTlQpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmxvY2FsQ3JlZGVudGlhbHMuc2V0Q3JlZGVudGlhbHMobnVsbClcbiAgICAgICAgICByZXR1cm4gdGhpcy51bkF1dGhlbnRpY2F0ZWRFcnJvcihlcnJvci5lcnJvcl9kZXNjcmlwdGlvbilcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayByZXRyeSB2YWx1ZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHJldHJ5XG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIHByaXZhdGUgY2hlY2tSZXRyeShyZXRyeTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgcmVzcG9uc2VFcnJvcjogUmVzcG9uc2VFcnJvciB8IG51bGwgPSBudWxsXG4gICAgaWYgKHR5cGVvZiByZXRyeSAhPT0gJ251bWJlcicgfHwgcmV0cnkgPCBPQXV0aDJDbGllbnQubWluUmV0cnkgfHwgcmV0cnkgPiBPQXV0aDJDbGllbnQubWF4UmV0cnkpIHtcbiAgICAgIHJlc3BvbnNlRXJyb3IgPSB7XG4gICAgICAgIGVycm9yOiBFcnJvclR5cGUuVU5SRUFDSEFCTEUsXG4gICAgICAgIGVycm9yX2Rlc2NyaXB0aW9uOiAnd3Jvbmcgb3B0aW9ucyBwYXJhbTogcmV0cnknLFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAocmVzcG9uc2VFcnJvcikge1xuICAgICAgdGhyb3cgcmVzcG9uc2VFcnJvclxuICAgIH1cbiAgICByZXR1cm4gcmV0cnlcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXQgcmV0cnkgdmFsdWUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByZXRyeVxuICAgKiBAcGFyYW0ge251bWJlcn0gZGVmYXVsdFZhbGVcbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgcHJpdmF0ZSBmb3JtYXRSZXRyeShyZXRyeTogbnVtYmVyLCBkZWZhdWx0VmFsZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAodHlwZW9mIHJldHJ5ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIGRlZmF1bHRWYWxlXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNoZWNrUmV0cnkocmV0cnkpXG4gIH1cblxuICAvKipcbiAgICogU2xlZXAuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBzbGVlcChtczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpXG4gICAgICB9LCBtcylcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIGFub255bW91cyBzaWduSW5cbiAgICogQHBhcmFtIHtDcmVkZW50aWFsc30gY3JlZGVudGlhbHNcbiAgICogQHJldHVybiB7UHJvbWlzZTxDcmVkZW50aWFscz59XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGFub255bW91c1NpZ25JbihjcmVkZW50aWFsczogQ3JlZGVudGlhbHMpOiBQcm9taXNlPENyZWRlbnRpYWxzPiB7XG4gICAgcmV0dXJuIHRoaXMuc2luZ2xlUHJvbWlzZS5ydW4oJ19hbm9ueW1vdXMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoIWNyZWRlbnRpYWxzIHx8IGNyZWRlbnRpYWxzLnNjb3BlICE9PSAnYW5vbnltb3VzJykge1xuICAgICAgICByZXR1cm4gdGhpcy51bkF1dGhlbnRpY2F0ZWRFcnJvcignbm8gYW5vbnltb3VzIGluIGNyZWRlbnRpYWxzJylcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG5ld0NyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMucmVxdWVzdChBcGlVcmxzLkFVVEhfU0lHTl9JTl9BTk9OWU1PVVNMWV9VUkwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICB3aXRoQmFzaWNBdXRoOiB0cnVlLFxuICAgICAgICAgIGJvZHk6IHt9LFxuICAgICAgICB9KVxuICAgICAgICBhd2FpdCB0aGlzLmxvY2FsQ3JlZGVudGlhbHMuc2V0Q3JlZGVudGlhbHMobmV3Q3JlZGVudGlhbHMpXG4gICAgICAgIHJldHVybiBuZXdDcmVkZW50aWFsc1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yLmVycm9yID09PSBFcnJvclR5cGUuSU5WQUxJRF9HUkFOVCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMubG9jYWxDcmVkZW50aWFscy5zZXRDcmVkZW50aWFscyhudWxsKVxuICAgICAgICAgIHJldHVybiB0aGlzLnVuQXV0aGVudGljYXRlZEVycm9yKGVycm9yLmVycm9yX2Rlc2NyaXB0aW9uKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcilcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgcmVmcmVzaCB0b2tlbiBmdW5jdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZnJlc2hUb2tlblxuICAgKiBAcmV0dXJuIHtQcm9taXNlPENyZWRlbnRpYWxzPn1cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZGVmYXVsdFJlZnJlc2hUb2tlbkZ1bmMocmVmcmVzaFRva2VuPzogc3RyaW5nLCBjcmVkZW50aWFscz86IENyZWRlbnRpYWxzKTogUHJvbWlzZTxDcmVkZW50aWFscz4ge1xuICAgIGlmIChyZWZyZXNoVG9rZW4gPT09IHVuZGVmaW5lZCB8fCByZWZyZXNoVG9rZW4gPT09ICcnKSB7XG4gICAgICByZXR1cm4gdGhpcy51bkF1dGhlbnRpY2F0ZWRFcnJvcigncmVmcmVzaCB0b2tlbiBub3QgZm91bmQnKVxuICAgIH1cblxuICAgIGxldCB1cmw6IHN0cmluZyA9IEFwaVVybHMuQVVUSF9UT0tFTl9VUkxcblxuICAgIGlmIChjcmVkZW50aWFscz8udmVyc2lvbiA9PT0gJ3YyJykge1xuICAgICAgdXJsID0gQXBpVXJsc1YyLkFVVEhfVE9LRU5fVVJMXG4gICAgfVxuXG4gICAgY29uc3QgbmV3Q3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5yZXF1ZXN0KHVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiB7XG4gICAgICAgIGNsaWVudF9pZDogdGhpcy5jbGllbnRJZCxcbiAgICAgICAgY2xpZW50X3NlY3JldDogdGhpcy5jbGllbnRTZWNyZXQsXG4gICAgICAgIGdyYW50X3R5cGU6ICdyZWZyZXNoX3Rva2VuJyxcbiAgICAgICAgcmVmcmVzaF90b2tlbjogcmVmcmVzaFRva2VuLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgcmV0dXJuIHsgLi4ubmV3Q3JlZGVudGlhbHMsIHZlcnNpb246IGNyZWRlbnRpYWxzPy52ZXJzaW9uIHx8ICd2MScgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBkZXZpY2VJZFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBnZXREZXZpY2VJZCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLmRldmljZUlEKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZXZpY2VJRFxuICAgIH1cbiAgICBsZXQgZGV2aWNlSWQ6IHN0cmluZyA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXRJdGVtKERldmljZUlkU2VjdGlvbk5hbWUpXG4gICAgaWYgKCEodHlwZW9mIGRldmljZUlkID09PSAnc3RyaW5nJyAmJiBkZXZpY2VJZC5sZW5ndGggPj0gMTYgJiYgZGV2aWNlSWQubGVuZ3RoIDw9IDQ4KSkge1xuICAgICAgZGV2aWNlSWQgPSB1dWlkdjQoKVxuICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldEl0ZW0oRGV2aWNlSWRTZWN0aW9uTmFtZSwgZGV2aWNlSWQpXG4gICAgfVxuICAgIHRoaXMuZGV2aWNlSUQgPSBkZXZpY2VJZFxuICAgIHJldHVybiBkZXZpY2VJZFxuICB9XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB1bkF1dGhlbnRpY2F0ZWQgZXJyb3IuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlcnJcbiAgICogQHJldHVybiB7UHJvbWlzZTxUPn1cbiAgICovXG4gIHByaXZhdGUgdW5BdXRoZW50aWNhdGVkRXJyb3I8VD4oZXJyPzogc3RyaW5nKTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QgcmVzcEVycjogUmVzcG9uc2VFcnJvciA9IHtcbiAgICAgIGVycm9yOiBFcnJvclR5cGUuVU5BVVRIRU5USUNBVEVELFxuICAgICAgZXJyb3JfZGVzY3JpcHRpb246IGVycixcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlc3BFcnIpXG4gIH1cbn1cbiJdfQ==
|
|
758
|
+
exports.OAuth2Client = OAuth2Client;
|
|
759
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgyY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29hdXRoMmNsaWVudC9vYXV0aDJjbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBb0M7QUFDcEMseUNBQW1EO0FBYW5ELHNDQUFzQztBQUN0Qyx3Q0FBNEM7QUFFNUMsbUVBQWdFO0FBQ2hFLDBDQUF3QztBQUN4Qyw0RUFBMEQ7QUFFMUQsSUFBTSxtQkFBbUIsR0FBRyxjQUFjLENBQUE7QUFDMUMsSUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQUE7QUFDeEMsSUFBTSxtQkFBbUIsR0FBRyxXQUFXLENBQUE7QUFXaEMsSUFBTSxjQUFjLEdBQW9CLFVBQW1CLEdBQVcsRUFBRSxPQUF3Qjs7Ozs7O29CQUNqRyxNQUFNLEdBQWEsSUFBSSxDQUFBO29CQUN2QixhQUFhLEdBQXlCLElBQUksQ0FBQTs7OztvQkFHdEMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFBO29CQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTt3QkFDdkIsV0FBVyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUE7cUJBQzNCO29CQUNELElBQUksV0FBVyxDQUFDLElBQUksSUFBSSxPQUFPLFdBQVcsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO3dCQUM1RCxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO3FCQUNwRDtvQkFDZ0MsV0FBTSxLQUFLLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxFQUFBOztvQkFBeEQsY0FBYyxHQUFhLFNBQTZCO29CQUN6QyxXQUFNLGNBQWMsQ0FBQyxJQUFJLEVBQUUsRUFBQTs7b0JBQTFDLFlBQVksR0FBRyxTQUEyQjtv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LENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBMVljLHlCQUFZLEdBQUcsQ0FBQyxDQUFBO0lBQ2hCLHFCQUFRLEdBQUcsQ0FBQyxDQUFBO0lBQ1oscUJBQVEsR0FBRyxDQUFDLENBQUE7SUFDWiwwQkFBYSxHQUFHLElBQUksQ0FBQTtJQXdZckMsbUJBQUM7Q0FBQSxBQTVZRCxJQTRZQztBQTVZWSxvQ0FBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVycm9yVHlwZSB9IGZyb20gJy4vY29uc3RzJ1xuaW1wb3J0IHsgQXBpVXJscywgQXBpVXJsc1YyIH0gZnJvbSAnLi4vYXV0aC9jb25zdHMnXG5cbmltcG9ydCB7IEF1dGhDbGllbnQsIFNpbXBsZVN0b3JhZ2UgfSBmcm9tICcuL2ludGVyZmFjZSdcblxuaW1wb3J0IHtcbiAgQ3JlZGVudGlhbHMsXG4gIFJlc3BvbnNlRXJyb3IsXG4gIFJlcXVlc3RPcHRpb25zLFxuICBSZXF1ZXN0RnVuY3Rpb24sXG4gIE9BdXRoMkNsaWVudE9wdGlvbnMsXG4gIEF1dGhDbGllbnRSZXF1ZXN0T3B0aW9ucyxcbn0gZnJvbSAnLi9tb2RlbHMnXG5cbmltcG9ydCB7IHV1aWR2NCB9IGZyb20gJy4uL3V0aWxzL3V1aWQnXG5pbXBvcnQgeyBnZXRQYXRoTmFtZSB9IGZyb20gJy4uL3V0aWxzL2luZGV4J1xuXG5pbXBvcnQgeyBTaW5nbGVQcm9taXNlIH0gZnJvbSAnLi4vdXRpbHMvZnVuY3Rpb24vc2luZ2xlLXByb21pc2UnXG5pbXBvcnQgeyB3ZUJ0b2EgfSBmcm9tICcuLi91dGlscy9iYXNlNjQnXG5pbXBvcnQgeyBpc01hdGNoIH0gZnJvbSAnLi4vdXRpbHMvY2xvdWRiYXNlLWFkYXB0ZXItd3hfbXAnXG5cbmNvbnN0IFJlcXVlc3RJZEhlYWRlck5hbWUgPSAneC1yZXF1ZXN0LWlkJ1xuY29uc3QgRGV2aWNlSWRIZWFkZXJOYW1lID0gJ3gtZGV2aWNlLWlkJ1xuY29uc3QgRGV2aWNlSWRTZWN0aW9uTmFtZSA9ICdkZXZpY2VfaWQnXG5cbmRlY2xhcmUgY29uc3Qgd3g6IGFueVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvUmVzcG9uc2VFcnJvck9wdGlvbnMge1xuICBlcnJvcj86IEVycm9yVHlwZVxuICBlcnJvcl9kZXNjcmlwdGlvbj86IHN0cmluZyB8IG51bGxcbiAgZXJyb3JfdXJpPzogc3RyaW5nIHwgbnVsbFxuICBkZXRhaWxzPzogYW55IHwgbnVsbFxufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdFJlcXVlc3Q6IFJlcXVlc3RGdW5jdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIDxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUPiB7XG4gIGxldCByZXN1bHQ6IFQgfCBudWxsID0gbnVsbFxuICBsZXQgcmVzcG9uc2VFcnJvcjogUmVzcG9uc2VFcnJvciB8IG51bGwgPSBudWxsXG4gIHRyeSB7XG4gICAgLy8gT2JqZWN0cyBtdXN0IGJlIGNvcGllZCB0byBwcmV2ZW50IG1vZGlmaWNhdGlvbiBvZiBkYXRhIHN1Y2ggYXMgYm9keS5cbiAgICBjb25zdCBjb3B5T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpXG4gICAgaWYgKCFjb3B5T3B0aW9ucy5tZXRob2QpIHtcbiAgICAgIGNvcHlPcHRpb25zLm1ldGhvZCA9ICdHRVQnXG4gICAgfVxuICAgIGlmIChjb3B5T3B0aW9ucy5ib2R5ICYmIHR5cGVvZiBjb3B5T3B0aW9ucy5ib2R5ICE9PSAnc3RyaW5nJykge1xuICAgICAgY29weU9wdGlvbnMuYm9keSA9IEpTT04uc3RyaW5naWZ5KGNvcHlPcHRpb25zLmJvZHkpXG4gICAgfVxuICAgIGNvbnN0IHJlc3BvbnNlUmVzdWx0OiBSZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwgY29weU9wdGlvbnMpXG4gICAgY29uc3QganNvblJlc3BvbnNlID0gYXdhaXQgcmVzcG9uc2VSZXN1bHQuanNvbigpXG4gICAgaWYgKGpzb25SZXNwb25zZT8uZXJyb3IpIHtcbiAgICAgIHJlc3BvbnNlRXJyb3IgPSBqc29uUmVzcG9uc2UgYXMgUmVzcG9uc2VFcnJvclxuICAgICAgcmVzcG9uc2VFcnJvci5lcnJvcl91cmkgPSBuZXcgVVJMKHVybCkucGF0aG5hbWVcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0ganNvblJlc3BvbnNlIGFzIFRcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVzcG9uc2VFcnJvciA9IHtcbiAgICAgIGVycm9yOiBFcnJvclR5cGUuVU5SRUFDSEFCTEUsXG4gICAgICBlcnJvcl9kZXNjcmlwdGlvbjogZXJyb3IubWVzc2FnZSxcbiAgICAgIGVycm9yX3VyaTogbmV3IFVSTCh1cmwpLnBhdGhuYW1lLFxuICAgIH1cbiAgfVxuICBpZiAocmVzcG9uc2VFcnJvcikge1xuICAgIHRocm93IHJlc3BvbnNlRXJyb3JcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHRvUmVzcG9uc2VFcnJvciA9IChlcnJvcjogUmVzcG9uc2VFcnJvciB8IEVycm9yLCBvcHRpb25zPzogVG9SZXNwb25zZUVycm9yT3B0aW9ucyk6IFJlc3BvbnNlRXJyb3IgPT4ge1xuICBsZXQgcmVzcG9uc2VFcnJvcjogUmVzcG9uc2VFcnJvclxuICBjb25zdCBmb3JtYXRPcHRpb25zOiBUb1Jlc3BvbnNlRXJyb3JPcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIHJlc3BvbnNlRXJyb3IgPSB7XG4gICAgICBlcnJvcjogZm9ybWF0T3B0aW9ucy5lcnJvciB8fCBFcnJvclR5cGUuTE9DQUwsXG4gICAgICBlcnJvcl9kZXNjcmlwdGlvbjogZm9ybWF0T3B0aW9ucy5lcnJvcl9kZXNjcmlwdGlvbiB8fCBlcnJvci5tZXNzYWdlLFxuICAgICAgZXJyb3JfdXJpOiBmb3JtYXRPcHRpb25zLmVycm9yX3VyaSxcbiAgICAgIGRldGFpbHM6IGZvcm1hdE9wdGlvbnMuZGV0YWlscyB8fCBlcnJvci5zdGFjayxcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZm9ybWF0RXJyb3I6IFRvUmVzcG9uc2VFcnJvck9wdGlvbnMgPSBlcnJvciB8fCB7fVxuICAgIHJlc3BvbnNlRXJyb3IgPSB7XG4gICAgICBlcnJvcjogZm9ybWF0T3B0aW9ucy5lcnJvciB8fCBmb3JtYXRFcnJvci5lcnJvciB8fCBFcnJvclR5cGUuTE9DQUwsXG4gICAgICBlcnJvcl9kZXNjcmlwdGlvbjogZm9ybWF0T3B0aW9ucy5lcnJvcl9kZXNjcmlwdGlvbiB8fCBmb3JtYXRFcnJvci5lcnJvcl9kZXNjcmlwdGlvbixcbiAgICAgIGVycm9yX3VyaTogZm9ybWF0T3B0aW9ucy5lcnJvcl91cmkgfHwgZm9ybWF0RXJyb3IuZXJyb3JfdXJpLFxuICAgICAgZGV0YWlsczogZm9ybWF0T3B0aW9ucy5kZXRhaWxzIHx8IGZvcm1hdEVycm9yLmRldGFpbHMsXG4gICAgfVxuICB9XG4gIHJldHVybiByZXNwb25zZUVycm9yXG59XG5cbi8qKlxuICogR2VuZXJhdGUgcmVxdWVzdCBpZC5cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUmVxdWVzdElkKCk6IHN0cmluZyB7XG4gIHJldHVybiB1dWlkdjQoKVxufVxuXG4vKipcbiAqIERlZmF1bHQgU3RvcmFnZS5cbiAqL1xuY2xhc3MgRGVmYXVsdFN0b3JhZ2UgaW1wbGVtZW50cyBTaW1wbGVTdG9yYWdlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZW52OiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihvcHRzPzogeyBlbnY6IHN0cmluZyB9KSB7XG4gICAgdGhpcy5fZW52ID0gb3B0cz8uZW52IHx8ICcnXG4gIH1cbiAgLyoqXG4gICAqIEdldCBpdGVtLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gICAqL1xuICBhc3luYyBnZXRJdGVtKGtleTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShgJHtrZXl9JHt0aGlzLl9lbnZ9YClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgaXRlbS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgKi9cbiAgYXN5bmMgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShgJHtrZXl9JHt0aGlzLl9lbnZ9YClcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgaXRlbS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAgICovXG4gIGFzeW5jIHNldEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oYCR7a2V5fSR7dGhpcy5fZW52fWAsIHZhbHVlKVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBpdGVtIHN5bmMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICovXG4gIGdldEl0ZW1TeW5jKGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShgJHtrZXl9JHt0aGlzLl9lbnZ9YClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgaXRlbSBzeW5jLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gICAqL1xuICByZW1vdmVJdGVtU3luYyhrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShgJHtrZXl9JHt0aGlzLl9lbnZ9YClcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgaXRlbSBzeW5jLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICAgKi9cbiAgc2V0SXRlbVN5bmMoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oYCR7a2V5fSR7dGhpcy5fZW52fWAsIHZhbHVlKVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0U3RvcmFnZSA9IG5ldyBEZWZhdWx0U3RvcmFnZSgpXG5cbmludGVyZmFjZSBMb2NhbENyZWRlbnRpYWxzT3B0aW9ucyB7XG4gIHRva2VuU2VjdGlvbk5hbWU6IHN0cmluZ1xuICBzdG9yYWdlOiBTaW1wbGVTdG9yYWdlXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgY3JlZGVudGlhbHMgaXMgZXhwaXJlZC5cbiAqIEBwYXJhbSB7Q3JlZGVudGlhbHN9IGNyZWRlbnRpYWxzXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc0NyZWRlbnRpYWxzRXhwaXJlZChjcmVkZW50aWFsczogQ3JlZGVudGlhbHMpOiBib29sZWFuIHtcbiAgbGV0IGlzRXhwaXJlZCA9IHRydWVcbiAgaWYgKGNyZWRlbnRpYWxzPy5leHBpcmVzX2F0ICYmIGNyZWRlbnRpYWxzPy5hY2Nlc3NfdG9rZW4pIHtcbiAgICBpc0V4cGlyZWQgPSBjcmVkZW50aWFscy5leHBpcmVzX2F0IDwgbmV3IERhdGUoKVxuICB9XG4gIHJldHVybiBpc0V4cGlyZWRcbn1cblxuLyoqXG4gKiBMb2NhbCBjcmVkZW50aWFscy5cbiAqIExvY2FsIGNyZWRlbnRpYWxzLCB3aXRoIG1lbW9yeSBjYWNoZSBhbmQgc3RvcmFnZSBjYWNoZS5cbiAqIElmIHRoZSBtZW1vcnkgY2FjaGUgZXhwaXJlcywgdGhlIHN0b3JhZ2UgY2FjaGUgaXMgYXV0b21hdGljYWxseSBsb2FkZWQuXG4gKi9cbmNsYXNzIExvY2FsQ3JlZGVudGlhbHMge1xuICBwcml2YXRlIHRva2VuU2VjdGlvbk5hbWU6IHN0cmluZ1xuXG4gIHByaXZhdGUgc3RvcmFnZTogU2ltcGxlU3RvcmFnZVxuXG4gIHByaXZhdGUgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzIHwgbnVsbCA9IG51bGxcblxuICBwcml2YXRlIHNpbmdsZVByb21pc2U6IFNpbmdsZVByb21pc2UgPSBuZXcgU2luZ2xlUHJvbWlzZSgpXG5cbiAgLyoqXG4gICAqIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7TG9jYWxDcmVkZW50aWFsc09wdGlvbnN9IG9wdGlvbnNcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IExvY2FsQ3JlZGVudGlhbHNPcHRpb25zKSB7XG4gICAgdGhpcy50b2tlblNlY3Rpb25OYW1lID0gb3B0aW9ucy50b2tlblNlY3Rpb25OYW1lXG4gICAgdGhpcy5zdG9yYWdlID0gb3B0aW9ucy5zdG9yYWdlXG4gIH1cblxuICBwdWJsaWMgZ2V0U3RvcmFnZUNyZWRlbnRpYWxzU3luYygpOiBDcmVkZW50aWFscyB8IG51bGwge1xuICAgIGxldCBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBudWxsXG4gICAgY29uc3QgdG9rZW5TdHI6IHN0cmluZyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtU3luYyh0aGlzLnRva2VuU2VjdGlvbk5hbWUpXG4gICAgaWYgKHRva2VuU3RyICE9PSB1bmRlZmluZWQgJiYgdG9rZW5TdHIgIT09IG51bGwpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNyZWRlbnRpYWxzID0gSlNPTi5wYXJzZSh0b2tlblN0cilcbiAgICAgICAgaWYgKGNyZWRlbnRpYWxzPy5leHBpcmVzX2F0KSB7XG4gICAgICAgICAgY3JlZGVudGlhbHMuZXhwaXJlc19hdCA9IG5ldyBEYXRlKGNyZWRlbnRpYWxzLmV4cGlyZXNfYXQpXG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMuc3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMudG9rZW5TZWN0aW9uTmFtZSlcbiAgICAgICAgY3JlZGVudGlhbHMgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjcmVkZW50aWFsc1xuICB9XG5cbiAgLyoqXG4gICAqIHNldENyZWRlbnRpYWxzIFByb3ZpZGVzIGFuIGFsdGVybmF0aXZlIGZldGNoIGFwaSByZXF1ZXN0IGltcGxlbWVudGF0aW9uIHdpdGggYXV0aCBjcmVkZW50aWFsc1xuICAgKiBAcGFyYW0ge0NyZWRlbnRpYWxzfSBjcmVkZW50aWFsc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIHNldENyZWRlbnRpYWxzKGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoY3JlZGVudGlhbHM/LmV4cGlyZXNfaW4pIHtcbiAgICAgIGNyZWRlbnRpYWxzLmV4cGlyZXNfYXQgPSBuZXcgRGF0ZShEYXRlLm5vdygpICsgKGNyZWRlbnRpYWxzLmV4cGlyZXNfaW4gLSAzMCkgKiAxMDAwKVxuICAgICAgaWYgKHRoaXMuc3RvcmFnZSkge1xuICAgICAgICBjb25zdCB0b2tlblN0cjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoY3JlZGVudGlhbHMpXG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zZXRJdGVtKHRoaXMudG9rZW5TZWN0aW9uTmFtZSwgdG9rZW5TdHIpXG4gICAgICB9XG4gICAgICB0aGlzLmNyZWRlbnRpYWxzID0gY3JlZGVudGlhbHNcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc3RvcmFnZSkge1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLnRva2VuU2VjdGlvbk5hbWUpXG4gICAgICB9XG4gICAgICB0aGlzLmNyZWRlbnRpYWxzID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3JlZGVudGlhbHMuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q3JlZGVudGlhbHMgfCBudWxsPn1cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRDcmVkZW50aWFscygpOiBQcm9taXNlPENyZWRlbnRpYWxzIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnNpbmdsZVByb21pc2UucnVuKCdnZXRDcmVkZW50aWFscycsIGFzeW5jICgpID0+IHtcbiAgICAgIGlmIChpc0NyZWRlbnRpYWxzRXhwaXJlZCh0aGlzLmNyZWRlbnRpYWxzKSkge1xuICAgICAgICB0aGlzLmNyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5nZXRTdG9yYWdlQ3JlZGVudGlhbHMoKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuY3JlZGVudGlhbHNcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBzdG9yYWdlIGNyZWRlbnRpYWxzLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBnZXRTdG9yYWdlQ3JlZGVudGlhbHMoKTogUHJvbWlzZTxDcmVkZW50aWFscyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5zaW5nbGVQcm9taXNlLnJ1bignX2dldFN0b3JhZ2VDcmVkZW50aWFscycsIGFzeW5jICgpID0+IHtcbiAgICAgIGxldCBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBudWxsXG4gICAgICBjb25zdCB0b2tlblN0cjogc3RyaW5nID0gYXdhaXQgdGhpcy5zdG9yYWdlLmdldEl0ZW0odGhpcy50b2tlblNlY3Rpb25OYW1lKVxuICAgICAgaWYgKHRva2VuU3RyICE9PSB1bmRlZmluZWQgJiYgdG9rZW5TdHIgIT09IG51bGwpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjcmVkZW50aWFscyA9IEpTT04ucGFyc2UodG9rZW5TdHIpXG4gICAgICAgICAgaWYgKGNyZWRlbnRpYWxzPy5leHBpcmVzX2F0KSB7XG4gICAgICAgICAgICBjcmVkZW50aWFscy5leHBpcmVzX2F0ID0gbmV3IERhdGUoY3JlZGVudGlhbHMuZXhwaXJlc19hdClcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy50b2tlblNlY3Rpb25OYW1lKVxuICAgICAgICAgIGNyZWRlbnRpYWxzID0gbnVsbFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlZGVudGlhbHNcbiAgICB9KVxuICB9XG59XG5cbi8qKlxuICogT0F1dGgyQ2xpZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBPQXV0aDJDbGllbnQgaW1wbGVtZW50cyBBdXRoQ2xpZW50IHtcbiAgcHJpdmF0ZSBzdGF0aWMgZGVmYXVsdFJldHJ5ID0gMlxuICBwcml2YXRlIHN0YXRpYyBtaW5SZXRyeSA9IDBcbiAgcHJpdmF0ZSBzdGF0aWMgbWF4UmV0cnkgPSA1XG4gIHByaXZhdGUgc3RhdGljIHJldHJ5SW50ZXJ2YWwgPSAxMDAwXG5cbiAgcHJpdmF0ZSBhcGlPcmlnaW46IHN0cmluZ1xuICBwcml2YXRlIGNsaWVudElkOiBzdHJpbmdcbiAgcHJpdmF0ZSByZXRyeTogbnVtYmVyXG4gIHByaXZhdGUgY2xpZW50U2VjcmV0Pzogc3RyaW5nXG4gIHByaXZhdGUgYmFzZVJlcXVlc3Q6IDxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFQ+XG4gIHByaXZhdGUgbG9jYWxDcmVkZW50aWFsczogTG9jYWxDcmVkZW50aWFsc1xuICBwcml2YXRlIHN0b3JhZ2U6IFNpbXBsZVN0b3JhZ2VcbiAgcHJpdmF0ZSBkZXZpY2VJRD86IHN0cmluZ1xuICBwcml2YXRlIHRva2VuSW5VUkw/OiBib29sZWFuXG4gIHByaXZhdGUgcmVmcmVzaFRva2VuRnVuYzogKHJlZnJlc2hUb2tlbj86IHN0cmluZywgY3JlZGVudGlhbHM/OiBDcmVkZW50aWFscykgPT4gUHJvbWlzZTxDcmVkZW50aWFscz5cbiAgcHJpdmF0ZSBoZWFkZXJzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICBwcml2YXRlIHNpbmdsZVByb21pc2U6IFNpbmdsZVByb21pc2UgPSBuZXcgU2luZ2xlUHJvbWlzZSgpXG4gIHByaXZhdGUgYW5vbnltb3VzU2lnbkluRnVuYzogKENyZWRlbnRpYWxzKSA9PiBQcm9taXNlPENyZWRlbnRpYWxzIHwgdm9pZD5cbiAgcHJpdmF0ZSB3eENsb3VkOiBhbnlcbiAgcHJpdmF0ZSBiYXNpY0F1dGg6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge09BdXRoMkNsaWVudE9wdGlvbnN9IG9wdGlvbnNcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9BdXRoMkNsaWVudE9wdGlvbnMpIHtcbiAgICB0aGlzLmFwaU9yaWdpbiA9IG9wdGlvbnMuYXBpT3JpZ2luXG4gICAgdGhpcy5jbGllbnRJZCA9IG9wdGlvbnMuY2xpZW50SWRcbiAgICB0aGlzLnJldHJ5ID0gdGhpcy5mb3JtYXRSZXRyeShvcHRpb25zLnJldHJ5LCBPQXV0aDJDbGllbnQuZGVmYXVsdFJldHJ5KVxuICAgIGlmIChvcHRpb25zLmJhc2VSZXF1ZXN0KSB7XG4gICAgICB0aGlzLmJhc2VSZXF1ZXN0ID0gb3B0aW9ucy5iYXNlUmVxdWVzdFxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJhc2VSZXF1ZXN0ID0gZGVmYXVsdFJlcXVlc3RcbiAgICB9XG4gICAgdGhpcy50b2tlbkluVVJMID0gb3B0aW9ucy50b2tlbkluVVJMXG4gICAgdGhpcy5oZWFkZXJzID0gb3B0aW9ucy5oZWFkZXJzXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMuc3RvcmFnZSA9IG9wdGlvbnMuc3RvcmFnZSB8fCBuZXcgRGVmYXVsdFN0b3JhZ2UoeyBlbnY6IG9wdGlvbnMuZW52IH0pXG4gICAgdGhpcy5sb2NhbENyZWRlbnRpYWxzID0gbmV3IExvY2FsQ3JlZGVudGlhbHMoe1xuICAgICAgdG9rZW5TZWN0aW9uTmFtZTogYGNyZWRlbnRpYWxzXyR7b3B0aW9ucy5jbGllbnRJZH1gLFxuICAgICAgc3RvcmFnZTogdGhpcy5zdG9yYWdlLFxuICAgIH0pXG4gICAgdGhpcy5jbGllbnRTZWNyZXQgPSBvcHRpb25zLmNsaWVudFNlY3JldFxuICAgIGlmIChvcHRpb25zLmNsaWVudElkICE9PSAnJykge1xuICAgICAgdGhpcy5iYXNpY0F1dGggPSBgQmFzaWMgJHt3ZUJ0b2EoYCR7b3B0aW9ucy5jbGllbnRJZH06JHtvcHRpb25zLmNsaWVudFNlY3JldH1gKX1gXG4gICAgfVxuICAgIHRoaXMud3hDbG91ZCA9IG9wdGlvbnMud3hDbG91ZFxuICAgIHRyeSB7XG4gICAgICBpZiAoaXNNYXRjaCgpICYmIHRoaXMud3hDbG91ZCA9PT0gdW5kZWZpbmVkICYmIG9wdGlvbnMuZW52KSB7XG4gICAgICAgIHd4LmNsb3VkLmluaXQoeyBlbnY6IG9wdGlvbnMuZW52IH0pXG4gICAgICAgIHRoaXMud3hDbG91ZCA9IHd4LmNsb3VkXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vXG4gICAgfVxuICAgIHRoaXMucmVmcmVzaFRva2VuRnVuYyA9IG9wdGlvbnMucmVmcmVzaFRva2VuRnVuYyB8fCB0aGlzLmRlZmF1bHRSZWZyZXNoVG9rZW5GdW5jXG4gICAgdGhpcy5hbm9ueW1vdXNTaWduSW5GdW5jID0gb3B0aW9ucy5hbm9ueW1vdXNTaWduSW5GdW5jXG4gIH1cblxuICAvKipcbiAgICogc2V0Q3JlZGVudGlhbHMgUHJvdmlkZXMgYW4gYWx0ZXJuYXRpdmUgZmV0Y2ggYXBpIHJlcXVlc3QgaW1wbGVtZW50YXRpb24gd2l0aCBhdXRoIGNyZWRlbnRpYWxzXG4gICAqIEBwYXJhbSB7Q3JlZGVudGlhbHN9IGNyZWRlbnRpYWxzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBwdWJsaWMgc2V0Q3JlZGVudGlhbHMoY3JlZGVudGlhbHM/OiBDcmVkZW50aWFscyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmxvY2FsQ3JlZGVudGlhbHMuc2V0Q3JlZGVudGlhbHMoY3JlZGVudGlhbHMpXG4gIH1cblxuICAvKipcbiAgICogZ2V0QWNjZXNzVG9rZW4gcmV0dXJuIGEgdmFsaWRhdGUgYWNjZXNzIHRva2VuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0QWNjZXNzVG9rZW4oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmdldENyZWRlbnRpYWxzKClcbiAgICBpZiAoY3JlZGVudGlhbHM/LmFjY2Vzc190b2tlbikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjcmVkZW50aWFscy5hY2Nlc3NfdG9rZW4pXG4gICAgfVxuICAgIGNvbnN0IHJlc3BFcnI6IFJlc3BvbnNlRXJyb3IgPSB7IGVycm9yOiBFcnJvclR5cGUuVU5BVVRIRU5USUNBVEVEIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVzcEVycilcbiAgfVxuXG4gIC8qKlxuICAgKiByZXF1ZXN0IGh0dHAgbGlrZSBzaW1wbGUgZmV0Y2ggYXBpLCBleHA6cmVxdWVzdCgnL3YxL3VzZXIvbWUnLCB7d2l0aENyZWRlbnRpYWxzOnRydWV9KVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEBwYXJhbSB7QXV0aENsaWVudFJlcXVlc3RPcHRpb25zfSBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVxdWVzdDxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IEF1dGhDbGllbnRSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VD4ge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgb3B0aW9ucyA9IHt9XG4gICAgfVxuICAgIGNvbnN0IHJldHJ5OiBudW1iZXIgPSB0aGlzLmZvcm1hdFJldHJ5KG9wdGlvbnMucmV0cnksIHRoaXMucmV0cnkpXG4gICAgb3B0aW9ucy5oZWFkZXJzID0gb3B0aW9ucy5oZWFkZXJzIHx8IHt9XG4gICAgaWYgKHRoaXMuaGVhZGVycykge1xuICAgICAgb3B0aW9ucy5oZWFkZXJzID0ge1xuICAgICAgICAuLi50aGlzLmhlYWRlcnMsXG4gICAgICAgIC4uLm9wdGlvbnMuaGVhZGVycyxcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFvcHRpb25zLmhlYWRlcnNbUmVxdWVzdElkSGVhZGVyTmFtZV0pIHtcbiAgICAgIG9wdGlvbnMuaGVhZGVyc1tSZXF1ZXN0SWRIZWFkZXJOYW1lXSA9IGdlbmVyYXRlUmVxdWVzdElkKClcbiAgICB9XG4gICAgaWYgKCFvcHRpb25zLmhlYWRlcnNbRGV2aWNlSWRIZWFkZXJOYW1lXSkge1xuICAgICAgY29uc3QgZGV2aWNlSWQgPSBhd2FpdCB0aGlzLmdldERldmljZUlkKClcbiAgICAgIG9wdGlvbnMuaGVhZGVyc1tEZXZpY2VJZEhlYWRlck5hbWVdID0gZGV2aWNlSWRcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/LndpdGhCYXNpY0F1dGggJiYgdGhpcy5iYXNpY0F1dGgpIHtcbiAgICAgIG9wdGlvbnMuaGVhZGVycy5BdXRob3JpemF0aW9uID0gdGhpcy5iYXNpY0F1dGhcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/LndpdGhDcmVkZW50aWFscykge1xuICAgICAgY29uc3QgY3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmdldENyZWRlbnRpYWxzKClcbiAgICAgIGlmIChjcmVkZW50aWFscykge1xuICAgICAgICBpZiAodGhpcy50b2tlbkluVVJMKSB7XG4gICAgICAgICAgaWYgKHVybC5pbmRleE9mKCc/JykgPCAwKSB7XG4gICAgICAgICAgICB1cmwgKz0gJz8nXG4gICAgICAgICAgfVxuICAgICAgICAgIHVybCArPSBgYWNjZXNzX3Rva2VuPSR7Y3JlZGVudGlhbHMuYWNjZXNzX3Rva2VufWBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLmhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IGAke2NyZWRlbnRpYWxzLnRva2VuX3R5cGV9ICR7Y3JlZGVudGlhbHMuYWNjZXNzX3Rva2VufWBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5jbGllbnRJZCAmJiB1cmwuaW5kZXhPZignY2xpZW50X2lkJykgPCAwKSB7XG4gICAgICAgIHVybCArPSB1cmwuaW5kZXhPZignPycpIDwgMCA/ICc/JyA6ICcmJ1xuICAgICAgICB1cmwgKz0gYGNsaWVudF9pZD0ke3RoaXMuY2xpZW50SWR9YFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodXJsLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgdXJsID0gdGhpcy5hcGlPcmlnaW4gKyB1cmxcbiAgICB9XG4gICAgbGV0IHJlc3BvbnNlOiBUIHwgbnVsbCA9IG51bGxcbiAgICBjb25zdCBtYXhSZXF1ZXN0VGltZXM6IG51bWJlciA9IHJldHJ5ICsgMVxuICAgIGZvciAobGV0IHJlcXVlc3RUaW1lID0gMDsgcmVxdWVzdFRpbWUgPCBtYXhSZXF1ZXN0VGltZXM7IHJlcXVlc3RUaW1lKyspIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChvcHRpb25zLnVzZVd4Q2xvdWQpIHtcbiAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMud3hDbG91ZENhbGxGdW5jdGlvbjxUPih1cmwsIG9wdGlvbnMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmJhc2VSZXF1ZXN0PFQ+KHVybCwgb3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfSBjYXRjaCAocmVzcG9uc2VFcnJvcikge1xuICAgICAgICBpZiAob3B0aW9ucy53aXRoQ3JlZGVudGlhbHMgJiYgcmVzcG9uc2VFcnJvciAmJiByZXNwb25zZUVycm9yLmVycm9yID09PSBFcnJvclR5cGUuVU5BVVRIRU5USUNBVEVEKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zZXRDcmVkZW50aWFscyhudWxsKVxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChyZXNwb25zZUVycm9yKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcXVlc3RUaW1lID09PSByZXRyeSB8fCAhcmVzcG9uc2VFcnJvciB8fCByZXNwb25zZUVycm9yLmVycm9yICE9PSAndW5yZWFjaGFibGUnKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlc3BvbnNlRXJyb3IpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGF3YWl0IHRoaXMuc2xlZXAoT0F1dGgyQ2xpZW50LnJldHJ5SW50ZXJ2YWwpXG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHd4Q2xvdWRDYWxsRnVuY3Rpb248VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VD4ge1xuICAgIGxldCByZXN1bHQ6IFQgfCBudWxsID0gbnVsbFxuICAgIGxldCByZXNwb25zZUVycm9yOiBSZXNwb25zZUVycm9yIHwgbnVsbCA9IG51bGxcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyByZXN1bHQ6IHJlc3BvbnNlUmVzdWx0IH0gPSBhd2FpdCB0aGlzLnd4Q2xvdWQuY2FsbEZ1bmN0aW9uKHtcbiAgICAgICAgbmFtZTogJ2h0dHBPdmVyQ2FsbEZ1bmN0aW9uJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHVybCxcbiAgICAgICAgICBtZXRob2Q6IG9wdGlvbnMubWV0aG9kLFxuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIG9yaWdpbjogJ2h0dHBzOi8vc2VydmljZXdlY2hhdC5jb20nLFxuICAgICAgICAgICAgLi4ub3B0aW9ucy5oZWFkZXJzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYm9keTogb3B0aW9ucy5ib2R5LFxuICAgICAgICB9LFxuICAgICAgfSlcblxuICAgICAgaWYgKHJlc3BvbnNlUmVzdWx0Py5ib2R5Py5lcnJvcl9jb2RlKSB7XG4gICAgICAgIHJlc3BvbnNlRXJyb3IgPSByZXNwb25zZVJlc3VsdD8uYm9keSBhcyBSZXNwb25zZUVycm9yXG4gICAgICAgIHJlc3BvbnNlRXJyb3IuZXJyb3JfdXJpID0gZ2V0UGF0aE5hbWUodXJsKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzcG9uc2VSZXN1bHQ/LmJvZHkgYXMgVFxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXNwb25zZUVycm9yID0ge1xuICAgICAgICBlcnJvcjogRXJyb3JUeXBlLlVOUkVBQ0hBQkxFLFxuICAgICAgICBlcnJvcl9kZXNjcmlwdGlvbjogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgZXJyb3JfdXJpOiBnZXRQYXRoTmFtZSh1cmwpLFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyZXNwb25zZUVycm9yKSB7XG4gICAgICB0aHJvdyByZXNwb25zZUVycm9yXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNyZWRlbnRpYWxzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldENyZWRlbnRpYWxzKCk6IFByb21pc2U8Q3JlZGVudGlhbHMgfCBudWxsPiB7XG4gICAgbGV0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMubG9jYWxDcmVkZW50aWFscy5nZXRDcmVkZW50aWFscygpXG4gICAgaWYgKCFjcmVkZW50aWFscykge1xuICAgICAgcmV0dXJuIHRoaXMudW5BdXRoZW50aWNhdGVkRXJyb3IoJ2NyZWRlbnRpYWxzIG5vdCBmb3VuZCcpXG4gICAgfVxuICAgIGlmIChpc0NyZWRlbnRpYWxzRXhwaXJlZChjcmVkZW50aWFscykpIHtcbiAgICAgIGlmIChjcmVkZW50aWFscyAmJiBjcmVkZW50aWFscy5zY29wZSA9PT0gJ2Fub255bW91cycpIHtcbiAgICAgICAgaWYgKHRoaXMuYW5vbnltb3VzU2lnbkluRnVuYykge1xuICAgICAgICAgIGNvbnN0IGMgPSBhd2FpdCB0aGlzLmFub255bW91c1NpZ25JbkZ1bmMoY3JlZGVudGlhbHMpXG4gICAgICAgICAgY3JlZGVudGlhbHMgPSBjIHx8IChhd2FpdCB0aGlzLmxvY2FsQ3JlZGVudGlhbHMuZ2V0Q3JlZGVudGlhbHMoKSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjcmVkZW50aWFscyA9IGF3YWl0IHRoaXMuYW5vbnltb3VzU2lnbkluKGNyZWRlbnRpYWxzKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjcmVkZW50aWFscyA9IGF3YWl0IHRoaXMucmVmcmVzaFRva2VuKGNyZWRlbnRpYWxzKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY3JlZGVudGlhbHNcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCDlup/lvIPmjqXlj6PvvIzli7/nlKguIOWmgumcgOiOt+WPluWHreivgeS/oeaBr+ivt+S9v+eUqCBnZXRDcmVkZW50aWFscyDmlrnms5VcbiAgICovXG4gIHB1YmxpYyBnZXRDcmVkZW50aWFsc1N5bmMoKTogQ3JlZGVudGlhbHMgfCBudWxsIHtcbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSB0aGlzLmxvY2FsQ3JlZGVudGlhbHMuZ2V0U3RvcmFnZUNyZWRlbnRpYWxzU3luYygpXG4gICAgcmV0dXJuIGNyZWRlbnRpYWxzXG4gIH1cblxuICBwdWJsaWMgZ2V0Q3JlZGVudGlhbHNBc3luYygpOiBQcm9taXNlPENyZWRlbnRpYWxzIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmdldENyZWRlbnRpYWxzKClcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTY29wZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMubG9jYWxDcmVkZW50aWFscy5nZXRDcmVkZW50aWFscygpXG4gICAgaWYgKCFjcmVkZW50aWFscykge1xuICAgICAgcmV0dXJuIHRoaXMudW5BdXRoZW50aWNhdGVkRXJyb3IoJ2NyZWRlbnRpYWxzIG5vdCBmb3VuZCcpXG4gICAgfVxuICAgIHJldHVybiBjcmVkZW50aWFscy5zY29wZVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEdyb3VwcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5sb2NhbENyZWRlbnRpYWxzLmdldENyZWRlbnRpYWxzKClcbiAgICBpZiAoIWNyZWRlbnRpYWxzKSB7XG4gICAgICByZXR1cm4gdGhpcy51bkF1dGhlbnRpY2F0ZWRFcnJvcignY3JlZGVudGlhbHMgbm90IGZvdW5kJylcbiAgICB9XG4gICAgcmV0dXJuIGNyZWRlbnRpYWxzLmdyb3Vwc1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZnJlc2ggZXhwaXJlZCB0b2tlbi5cbiAgICogQHBhcmFtIHtDcmVkZW50aWFsc30gY3JlZGVudGlhbHNcbiAgICogQHJldHVybiB7UHJvbWlzZTxDcmVkZW50aWFscz59XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVmcmVzaFRva2VuKGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyk6IFByb21pc2U8Q3JlZGVudGlhbHM+IHtcbiAgICByZXR1cm4gdGhpcy5zaW5nbGVQcm9taXNlLnJ1bignX3JlZnJlc2hUb2tlbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGlmICghY3JlZGVudGlhbHMgfHwgIWNyZWRlbnRpYWxzLnJlZnJlc2hfdG9rZW4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5BdXRoZW50aWNhdGVkRXJyb3IoJ25vIHJlZnJlc2ggdG9rZW4gZm91bmQgaW4gY3JlZGVudGlhbHMnKVxuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbmV3Q3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5yZWZyZXNoVG9rZW5GdW5jKGNyZWRlbnRpYWxzLnJlZnJlc2hfdG9rZW4sIGNyZWRlbnRpYWxzKVxuICAgICAgICBhd2FpdCB0aGlzLmxvY2FsQ3JlZGVudGlhbHMuc2V0Q3JlZGVudGlhbHMobmV3Q3JlZGVudGlhbHMpXG4gICAgICAgIHJldHVybiBuZXdDcmVkZW50aWFsc1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yLmVycm9yID09PSBFcnJvclR5cGUuSU5WQUxJRF9HUkFOVCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMubG9jYWxDcmVkZW50aWFscy5zZXRDcmVkZW50aWFscyhudWxsKVxuICAgICAgICAgIHJldHVybiB0aGlzLnVuQXV0aGVudGljYXRlZEVycm9yKGVycm9yLmVycm9yX2Rlc2NyaXB0aW9uKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcilcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHJldHJ5IHZhbHVlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gcmV0cnlcbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja1JldHJ5KHJldHJ5OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCByZXNwb25zZUVycm9yOiBSZXNwb25zZUVycm9yIHwgbnVsbCA9IG51bGxcbiAgICBpZiAodHlwZW9mIHJldHJ5ICE9PSAnbnVtYmVyJyB8fCByZXRyeSA8IE9BdXRoMkNsaWVudC5taW5SZXRyeSB8fCByZXRyeSA+IE9BdXRoMkNsaWVudC5tYXhSZXRyeSkge1xuICAgICAgcmVzcG9uc2VFcnJvciA9IHtcbiAgICAgICAgZXJyb3I6IEVycm9yVHlwZS5VTlJFQUNIQUJMRSxcbiAgICAgICAgZXJyb3JfZGVzY3JpcHRpb246ICd3cm9uZyBvcHRpb25zIHBhcmFtOiByZXRyeScsXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChyZXNwb25zZUVycm9yKSB7XG4gICAgICB0aHJvdyByZXNwb25zZUVycm9yXG4gICAgfVxuICAgIHJldHVybiByZXRyeVxuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCByZXRyeSB2YWx1ZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHJldHJ5XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBkZWZhdWx0VmFsZVxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBwcml2YXRlIGZvcm1hdFJldHJ5KHJldHJ5OiBudW1iZXIsIGRlZmF1bHRWYWxlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICh0eXBlb2YgcmV0cnkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdFZhbGVcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tSZXRyeShyZXRyeSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTbGVlcC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG1zXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHNsZWVwKG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICByZXNvbHZlKClcbiAgICAgIH0sIG1zKVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogYW5vbnltb3VzIHNpZ25JblxuICAgKiBAcGFyYW0ge0NyZWRlbnRpYWxzfSBjcmVkZW50aWFsc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPENyZWRlbnRpYWxzPn1cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgYW5vbnltb3VzU2lnbkluKGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyk6IFByb21pc2U8Q3JlZGVudGlhbHM+IHtcbiAgICByZXR1cm4gdGhpcy5zaW5nbGVQcm9taXNlLnJ1bignX2Fub255bW91cycsIGFzeW5jICgpID0+IHtcbiAgICAgIGlmICghY3JlZGVudGlhbHMgfHwgY3JlZGVudGlhbHMuc2NvcGUgIT09ICdhbm9ueW1vdXMnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuQXV0aGVudGljYXRlZEVycm9yKCdubyBhbm9ueW1vdXMgaW4gY3JlZGVudGlhbHMnKVxuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbmV3Q3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5yZXF1ZXN0KEFwaVVybHMuQVVUSF9TSUdOX0lOX0FOT05ZTU9VU0xZX1VSTCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIHdpdGhCYXNpY0F1dGg6IHRydWUsXG4gICAgICAgICAgYm9keToge30sXG4gICAgICAgIH0pXG4gICAgICAgIGF3YWl0IHRoaXMubG9jYWxDcmVkZW50aWFscy5zZXRDcmVkZW50aWFscyhuZXdDcmVkZW50aWFscylcbiAgICAgICAgcmV0dXJuIG5ld0NyZWRlbnRpYWxzXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IuZXJyb3IgPT09IEVycm9yVHlwZS5JTlZBTElEX0dSQU5UKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5sb2NhbENyZWRlbnRpYWxzLnNldENyZWRlbnRpYWxzKG51bGwpXG4gICAgICAgICAgcmV0dXJuIHRoaXMudW5BdXRoZW50aWNhdGVkRXJyb3IoZXJyb3IuZXJyb3JfZGVzY3JpcHRpb24pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogRGVmYXVsdCByZWZyZXNoIHRva2VuIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmcmVzaFRva2VuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q3JlZGVudGlhbHM+fVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBkZWZhdWx0UmVmcmVzaFRva2VuRnVuYyhyZWZyZXNoVG9rZW4/OiBzdHJpbmcsIGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHMpOiBQcm9taXNlPENyZWRlbnRpYWxzPiB7XG4gICAgaWYgKHJlZnJlc2hUb2tlbiA9PT0gdW5kZWZpbmVkIHx8IHJlZnJlc2hUb2tlbiA9PT0gJycpIHtcbiAgICAgIHJldHVybiB0aGlzLnVuQXV0aGVudGljYXRlZEVycm9yKCdyZWZyZXNoIHRva2VuIG5vdCBmb3VuZCcpXG4gICAgfVxuXG4gICAgbGV0IHVybDogc3RyaW5nID0gQXBpVXJscy5BVVRIX1RPS0VOX1VSTFxuXG4gICAgaWYgKGNyZWRlbnRpYWxzPy52ZXJzaW9uID09PSAndjInKSB7XG4gICAgICB1cmwgPSBBcGlVcmxzVjIuQVVUSF9UT0tFTl9VUkxcbiAgICB9XG5cbiAgICBjb25zdCBuZXdDcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLnJlcXVlc3QodXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgY2xpZW50X2lkOiB0aGlzLmNsaWVudElkLFxuICAgICAgICBjbGllbnRfc2VjcmV0OiB0aGlzLmNsaWVudFNlY3JldCxcbiAgICAgICAgZ3JhbnRfdHlwZTogJ3JlZnJlc2hfdG9rZW4nLFxuICAgICAgICByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4sXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICByZXR1cm4geyAuLi5uZXdDcmVkZW50aWFscywgdmVyc2lvbjogY3JlZGVudGlhbHM/LnZlcnNpb24gfHwgJ3YxJyB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRldmljZUlkXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGdldERldmljZUlkKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKHRoaXMuZGV2aWNlSUQpIHtcbiAgICAgIHJldHVybiB0aGlzLmRldmljZUlEXG4gICAgfVxuICAgIGxldCBkZXZpY2VJZDogc3RyaW5nID0gYXdhaXQgdGhpcy5zdG9yYWdlLmdldEl0ZW0oRGV2aWNlSWRTZWN0aW9uTmFtZSlcbiAgICBpZiAoISh0eXBlb2YgZGV2aWNlSWQgPT09ICdzdHJpbmcnICYmIGRldmljZUlkLmxlbmd0aCA+PSAxNiAmJiBkZXZpY2VJZC5sZW5ndGggPD0gNDgpKSB7XG4gICAgICBkZXZpY2VJZCA9IHV1aWR2NCgpXG4gICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0SXRlbShEZXZpY2VJZFNlY3Rpb25OYW1lLCBkZXZpY2VJZClcbiAgICB9XG4gICAgdGhpcy5kZXZpY2VJRCA9IGRldmljZUlkXG4gICAgcmV0dXJuIGRldmljZUlkXG4gIH1cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHVuQXV0aGVudGljYXRlZCBlcnJvci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGVyclxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFQ+fVxuICAgKi9cbiAgcHJpdmF0ZSB1bkF1dGhlbnRpY2F0ZWRFcnJvcjxUPihlcnI/OiBzdHJpbmcpOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCByZXNwRXJyOiBSZXNwb25zZUVycm9yID0ge1xuICAgICAgZXJyb3I6IEVycm9yVHlwZS5VTkFVVEhFTlRJQ0FURUQsXG4gICAgICBlcnJvcl9kZXNjcmlwdGlvbjogZXJyLFxuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVzcEVycilcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isMatch(): boolean;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isMatch = void 0;
|
|
4
|
+
function isMatch() {
|
|
5
|
+
if (typeof wx === 'undefined') {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
if (typeof Page === 'undefined') {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
if (!wx.getSystemInfoSync) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
if (!wx.getStorageSync) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
if (!wx.setStorageSync) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
if (!wx.connectSocket) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
if (!wx.request) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
if (!wx.getSystemInfoSync()) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
if (wx.getSystemInfoSync().AppPlatform === 'qq') {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
exports.isMatch = isMatch;
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRiYXNlLWFkYXB0ZXItd3hfbXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvY2xvdWRiYXNlLWFkYXB0ZXItd3hfbXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBS0EsU0FBZ0IsT0FBTztJQUNyQixJQUFJLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQTtLQUNiO0lBQ0QsSUFBSSxPQUFPLElBQUksS0FBSyxXQUFXLEVBQUU7UUFDL0IsT0FBTyxLQUFLLENBQUE7S0FDYjtJQUNELElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUU7UUFDekIsT0FBTyxLQUFLLENBQUE7S0FDYjtJQUNELElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFO1FBQ3RCLE9BQU8sS0FBSyxDQUFBO0tBQ2I7SUFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRTtRQUN0QixPQUFPLEtBQUssQ0FBQTtLQUNiO0lBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUU7UUFDckIsT0FBTyxLQUFLLENBQUE7S0FDYjtJQUNELElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFO1FBQ2YsT0FBTyxLQUFLLENBQUE7S0FDYjtJQUVELElBQUk7UUFDRixJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLEVBQUU7WUFDM0IsT0FBTyxLQUFLLENBQUE7U0FDYjtRQUVELElBQUksRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRTtZQUMvQyxPQUFPLEtBQUssQ0FBQTtTQUNiO0tBQ0Y7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sS0FBSyxDQUFBO0tBQ2I7SUFFRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFwQ0QsMEJBb0NDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDliKTmlq3mmK/lkKbkuLrlsI/nqIvluo9ydW50aW1lXG4gKi9cbmRlY2xhcmUgY29uc3Qgd3hcbmRlY2xhcmUgY29uc3QgUGFnZVxuZXhwb3J0IGZ1bmN0aW9uIGlzTWF0Y2goKTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2Ygd3ggPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgaWYgKHR5cGVvZiBQYWdlID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGlmICghd3guZ2V0U3lzdGVtSW5mb1N5bmMpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBpZiAoIXd4LmdldFN0b3JhZ2VTeW5jKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgaWYgKCF3eC5zZXRTdG9yYWdlU3luYykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGlmICghd3guY29ubmVjdFNvY2tldCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGlmICghd3gucmVxdWVzdCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgdHJ5IHtcbiAgICBpZiAoIXd4LmdldFN5c3RlbUluZm9TeW5jKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGlmICh3eC5nZXRTeXN0ZW1JbmZvU3luYygpLkFwcFBsYXRmb3JtID09PSAncXEnKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG4iXX0=
|
|
@@ -5,13 +5,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getEncryptInfo = void 0;
|
|
7
7
|
var encryptlong_1 = __importDefault(require("./encryptlong"));
|
|
8
|
-
var
|
|
8
|
+
var index_1 = require("./index");
|
|
9
9
|
var getEncryptInfo = function (_a) {
|
|
10
10
|
var _b = _a === void 0 ? {} : _a, _c = _b.publicKey, publicKey = _c === void 0 ? '' : _c, _d = _b.payload, payload = _d === void 0 ? {} : _d;
|
|
11
11
|
if (!publicKey)
|
|
12
12
|
return '';
|
|
13
13
|
try {
|
|
14
|
-
var params = (0,
|
|
14
|
+
var params = (0, index_1.deepClone)(payload);
|
|
15
15
|
var rsaInstance = new encryptlong_1.default({});
|
|
16
16
|
rsaInstance.setPublicKey(publicKey);
|
|
17
17
|
var encrypted = rsaInstance.encryptLong(JSON.stringify(params));
|
|
@@ -22,4 +22,4 @@ var getEncryptInfo = function (_a) {
|
|
|
22
22
|
return '';
|
|
23
23
|
};
|
|
24
24
|
exports.getEncryptInfo = getEncryptInfo;
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9lbmNyeXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUlBLDhEQUFxQztBQUNyQyxpQ0FBbUM7QUFRNUIsSUFBTSxjQUFjLEdBQUcsVUFBQyxFQUFxQztRQUFyQyxxQkFBbUMsRUFBRSxLQUFBLEVBQW5DLGlCQUFjLEVBQWQsU0FBUyxtQkFBRyxFQUFFLEtBQUEsRUFBRSxlQUFZLEVBQVosT0FBTyxtQkFBRyxFQUFFLEtBQUE7SUFDM0QsSUFBSSxDQUFDLFNBQVM7UUFBRSxPQUFPLEVBQUUsQ0FBQTtJQUV6QixJQUFJO1FBQ0YsSUFBTSxNQUFNLEdBQUcsSUFBQSxpQkFBUyxFQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRWpDLElBQU0sV0FBVyxHQUFHLElBQUkscUJBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUVyQyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBY25DLElBQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBRWpFLE9BQU8sU0FBUyxDQUFBO0tBQ2pCO0lBQUMsT0FBTyxLQUFLLEVBQUU7S0FFZjtJQUVELE9BQU8sRUFBRSxDQUFBO0FBQ1gsQ0FBQyxDQUFBO0FBOUJZLFFBQUEsY0FBYyxrQkE4QjFCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDprZTmlLnnmoQgZW5jcnlwdGxvbmcg54mI5pys77yMIOWPquaUr+aMgSBlbmNyeXB0TG9uZyDmlrnms5VcbiAqIOWwj+eoi+W6j+S4iiBKU0VuY3J5cHQg5Li656m65LiN5pSv5oyBIEBpbXBvcnRhbnRcbiAqL1xuaW1wb3J0IEpTRW5jcnlwdCBmcm9tICcuL2VuY3J5cHRsb25nJ1xuaW1wb3J0IHsgZGVlcENsb25lIH0gZnJvbSAnLi9pbmRleCdcblxuLyoqXG4gKiDnlJ/miJBSU0HlhazpkqXliqDlr4blkI7nmoTmlbDmja5cbiAqIEBwYXJhbSBwYXJhbTAucHVibGljS2V5IFJTQeWFrOmSpVxuICogQHBhcmFtIHBhcmFtMC5wYXlsb2FkIOWKoOWvhuWJjeeahOaVsOaNrlxuICogQHJldHVybnMge3N0cmluZ30g5Yqg5a+G5ZCO55qE5pWw5o2uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFbmNyeXB0SW5mbyA9ICh7IHB1YmxpY0tleSA9ICcnLCBwYXlsb2FkID0ge30gfSA9IHt9KSA9PiB7XG4gIGlmICghcHVibGljS2V5KSByZXR1cm4gJydcblxuICB0cnkge1xuICAgIGNvbnN0IHBhcmFtcyA9IGRlZXBDbG9uZShwYXlsb2FkKVxuICAgIC8vIOeUn+aIkFJTQeWunuS+i1xuICAgIGNvbnN0IHJzYUluc3RhbmNlID0gbmV3IEpTRW5jcnlwdCh7fSlcbiAgICAvLyDorr7nva7lhazpkqVcbiAgICByc2FJbnN0YW5jZS5zZXRQdWJsaWNLZXkocHVibGljS2V5KVxuICAgIC8vIOeUn+aIkOaXtumXtOaIs1xuICAgIC8vIHBhcmFtcy50aW1lc3RhbXAgPSArbmV3IERhdGUoKVxuICAgIC8vIOehruWumuetvuWQjeeul+azlVxuICAgIC8vIGNvbnN0IHNpZ25NZXRob2QgPSAnSG1hY1NIQTI1NidcbiAgICAvLyDnlJ/miJDpmo/mnLrmlbBcbiAgICAvLyBjb25zdCBub25jZSA9IFdvcmRBcnJheS5yYW5kb20oMTYpLnRvU3RyaW5nKClcbiAgICAvLyDnlJ/miJDnrb7lkI3vvJrln7rmnKzlj4LmlbDjgIHml7bpl7TmiLMgKyDpmo/mnLrmlbBcbiAgICAvLyBjb25zdCBzaWduYXR1cmUgPSBIbWFjU0hBMjU2KEpTT04uc3RyaW5naWZ5KHBhcmFtcyksIG5vbmNlKS50b1N0cmluZygpXG4gICAgLy8g5bCG562+5ZCN5pS+5YWl5Y+C5pWw5LitXG4gICAgLy8gcGFyYW1zLnNpZ25hdHVyZSA9IHNpZ25hdHVyZVxuICAgIC8vIHBhcmFtcy5ub25jZSA9IG5vbmNlXG4gICAgLy8gcGFyYW1zLnNpZ25NZXRob2QgPSBzaWduTWV0aG9kXG4gICAgLy8gcnNh5YWs6ZKl5Yqg5a+GXG4gICAgY29uc3QgZW5jcnlwdGVkID0gcnNhSW5zdGFuY2UuZW5jcnlwdExvbmcoSlNPTi5zdHJpbmdpZnkocGFyYW1zKSlcblxuICAgIHJldHVybiBlbmNyeXB0ZWRcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvL1xuICB9XG5cbiAgcmV0dXJuICcnXG59XG4iXX0=
|