@cloudbase/app
Version:
cloudbase javascript sdk core
94 lines • 13.7 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
import { constants } from '@cloudbase/utilities';
var ZONE_CHINA = ['ap-shanghai', 'ap-guangzhou', 'ap-shenzhen-fsi', 'ap-shanghai-fsi', 'ap-nanjing', 'ap-beijing', 'ap-chengdu', 'ap-chongqing', 'ap-hongkong'];
var setUtilitiesSdkName = constants.setSdkName, setUtilitiesProtocol = constants.setProtocol;
var sdkVersion = '';
var sdkName = '@cloudbase/js-sdk';
export function setSdkVersion(version) {
sdkVersion = version;
}
export function getSdkVersion() {
return sdkVersion;
}
export function setSdkName(name) {
sdkName = name;
setUtilitiesSdkName(name);
}
export function getSdkName() {
return sdkName;
}
export var DATA_VERSION = '2020-01-10';
var END_POINT_INFO_ARR = [];
var END_POINT_INFO_SEARCH_KEYS = ['env', 'endPointKey', 'region'];
export var DEFAULT_PROTOCOL = 'https:';
function findMatchedInfo(info) {
return END_POINT_INFO_ARR.find(function (targetInfo) { return END_POINT_INFO_SEARCH_KEYS.filter(function (searchKey) { return info[searchKey] != null; }).every(function (searchKey) { return targetInfo[searchKey] === info[searchKey]; }); });
}
export function setEndPointInfo(newInfo) {
var _a, _b;
if (newInfo.protocol && !/:$/.test(newInfo.protocol)) {
newInfo.protocol = "".concat(newInfo.protocol, ":");
}
var endPointInfo = findMatchedInfo(newInfo);
if (endPointInfo) {
if (newInfo.baseUrl != null) {
endPointInfo.baseUrl = newInfo.baseUrl;
}
if (newInfo.protocol != null) {
endPointInfo.protocol = newInfo.protocol;
}
}
else {
END_POINT_INFO_ARR.push(__assign(__assign({}, newInfo), { protocol: (_a = newInfo.protocol) !== null && _a !== void 0 ? _a : DEFAULT_PROTOCOL }));
}
if (newInfo.endPointKey === 'CLOUD_API') {
setUtilitiesProtocol(((_b = newInfo.protocol) !== null && _b !== void 0 ? _b : DEFAULT_PROTOCOL));
}
}
export function getEndPointInfo(env, endPointKey, region) {
return findMatchedInfo({ env: env, endPointKey: endPointKey, region: region });
}
export function setGatewayEndPointWithEnv(env, protocol, region) {
if (region === void 0) { region = 'ap-shanghai'; }
region = region || 'ap-shanghai';
var baseUrl = "//".concat(env, ".api.tcloudbasegateway.com/v1");
if (!ZONE_CHINA.includes(region)) {
baseUrl = "//".concat(env, ".api.intl.tcloudbasegateway.com/v1");
}
setEndPointInfo({ endPointKey: 'GATEWAY', env: env, baseUrl: baseUrl, protocol: protocol });
}
export function setRegionLevelEndpoint(env, region, protocol) {
var baseUrl = "//".concat(env, ".").concat(region || 'ap-shanghai', ".tcb-api.tencentcloudapi.com/web");
setEndPointInfo({ env: env, region: region, baseUrl: baseUrl, protocol: protocol, endPointKey: 'CLOUD_API' });
}
export function getBaseEndPoint(env, endPointKey) {
if (endPointKey === void 0) { endPointKey = 'CLOUD_API'; }
var info = getEndPointInfo(env, endPointKey || 'CLOUD_API');
var PROTOCOL = info.protocol, BASE_URL = info.baseUrl;
var webEndpoint = "".concat(PROTOCOL).concat(BASE_URL);
return webEndpoint.match(/(http(s)?:)?\/\/([^/?#]*)/)[0];
}
export var LOGINTYPE;
(function (LOGINTYPE) {
LOGINTYPE["NULL"] = "NULL";
LOGINTYPE["ANONYMOUS"] = "ANONYMOUS";
LOGINTYPE["WECHAT"] = "WECHAT";
LOGINTYPE["WECHAT_PUBLIC"] = "WECHAT-PUBLIC";
LOGINTYPE["WECHAT_OPEN"] = "WECHAT-OPEN";
LOGINTYPE["CUSTOM"] = "CUSTOM";
LOGINTYPE["EMAIL"] = "EMAIL";
LOGINTYPE["USERNAME"] = "USERNAME";
LOGINTYPE["PHONE"] = "PHONE";
})(LOGINTYPE || (LOGINTYPE = {}));
export var OAUTH2_LOGINTYPE_PREFIX = 'OAUTH2';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnN0YW50cy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFaEQsSUFBTSxVQUFVLEdBQUcsQ0FBQyxhQUFhLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQTtBQUd6SixJQUFZLG1CQUFtQixHQUF3QyxTQUFTLFdBQWpELEVBQWUsb0JBQW9CLEdBQUssU0FBUyxZQUFkLENBQWM7QUFJeEYsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFBO0FBQ25CLElBQUksT0FBTyxHQUFHLG1CQUFtQixDQUFBO0FBRWpDLE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBZTtJQUMzQyxVQUFVLEdBQUcsT0FBTyxDQUFBO0FBQ3RCLENBQUM7QUFDRCxNQUFNLFVBQVUsYUFBYTtJQUMzQixPQUFPLFVBQVUsQ0FBQTtBQUNuQixDQUFDO0FBQ0QsTUFBTSxVQUFVLFVBQVUsQ0FBQyxJQUFZO0lBQ3JDLE9BQU8sR0FBRyxJQUFJLENBQUE7SUFDZCxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUMzQixDQUFDO0FBQ0QsTUFBTSxVQUFVLFVBQVU7SUFDeEIsT0FBTyxPQUFPLENBQUE7QUFDaEIsQ0FBQztBQUNELE1BQU0sQ0FBQyxJQUFNLFlBQVksR0FBRyxZQUFZLENBQUE7QUFpQnhDLElBQU0sa0JBQWtCLEdBQXdCLEVBQUUsQ0FBQTtBQUdsRCxJQUFNLDBCQUEwQixHQUFHLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQTtBQUVuRSxNQUFNLENBQUMsSUFBTSxnQkFBZ0IsR0FBdUIsUUFBUSxDQUFBO0FBRTVELFNBQVMsZUFBZSxDQUFDLElBQWtCO0lBRXpDLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQUEsVUFBVSxJQUFJLE9BQUEsMEJBQTBCLENBQUMsTUFBTSxDQUFDLFVBQUEsU0FBUyxJQUFJLE9BQUEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksRUFBdkIsQ0FBdUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFBLFNBQVMsSUFBSSxPQUFBLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQXpDLENBQXlDLENBQUUsRUFBdEksQ0FBc0ksQ0FBRSxDQUFBO0FBQ3ZMLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLE9BQXFCOztJQUNuRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUNwRCxPQUFPLENBQUMsUUFBUSxHQUFHLFVBQUcsT0FBTyxDQUFDLFFBQVEsTUFBZSxDQUFBO0tBQ3REO0lBRUQsSUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzdDLElBQUksWUFBWSxFQUFFO1FBRWhCLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUU7WUFDM0IsWUFBWSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFBO1NBQ3ZDO1FBRUQsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRTtZQUM1QixZQUFZLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUE7U0FDekM7S0FDRjtTQUFNO1FBQ0wsa0JBQWtCLENBQUMsSUFBSSx1QkFBTSxPQUFPLEtBQUUsUUFBUSxFQUFFLE1BQUEsT0FBTyxDQUFDLFFBQVEsbUNBQUksZ0JBQWdCLElBQUcsQ0FBQTtLQUN4RjtJQUdELElBQUksT0FBTyxDQUFDLFdBQVcsS0FBSyxXQUFXLEVBQUU7UUFDdkMsb0JBQW9CLENBQUMsQ0FBQyxNQUFBLE9BQU8sQ0FBQyxRQUFRLG1DQUFJLGdCQUFnQixDQUF1QixDQUFDLENBQUE7S0FDbkY7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFXLEVBQUUsV0FBd0IsRUFBRSxNQUFlO0lBQ3BGLE9BQU8sZUFBZSxDQUFDLEVBQUUsR0FBRyxLQUFBLEVBQUUsV0FBVyxhQUFBLEVBQUUsTUFBTSxRQUFBLEVBQUUsQ0FBQyxDQUFBO0FBQ3RELENBQUM7QUFRRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsR0FBVyxFQUFFLFFBQW1CLEVBQUUsTUFBc0I7SUFBdEIsdUJBQUEsRUFBQSxzQkFBc0I7SUFDaEcsTUFBTSxHQUFHLE1BQU0sSUFBSSxhQUFhLENBQUE7SUFDaEMsSUFBSSxPQUFPLEdBQUcsWUFBSyxHQUFHLGtDQUErQixDQUFBO0lBRXJELElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ2hDLE9BQU8sR0FBRyxZQUFLLEdBQUcsdUNBQW9DLENBQUE7S0FDdkQ7SUFFRCxlQUFlLENBQUMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBQSxFQUFFLE9BQU8sU0FBQSxFQUFFLFFBQVEsVUFBQSxFQUFFLENBQUMsQ0FBQTtBQUNyRSxDQUFDO0FBQ0QsTUFBTSxVQUFVLHNCQUFzQixDQUFDLEdBQVcsRUFBRSxNQUFjLEVBQUUsUUFBbUI7SUFDckYsSUFBTSxPQUFPLEdBQUcsWUFBSyxHQUFHLGNBQUksTUFBTSxJQUFJLGFBQWEscUNBQWtDLENBQUE7SUFDckYsZUFBZSxDQUFDLEVBQUUsR0FBRyxLQUFBLEVBQUUsTUFBTSxRQUFBLEVBQUUsT0FBTyxTQUFBLEVBQUUsUUFBUSxVQUFBLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUE7QUFDL0UsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsR0FBVyxFQUFFLFdBQXNDO0lBQXRDLDRCQUFBLEVBQUEseUJBQXNDO0lBQ2pGLElBQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQUUsV0FBVyxJQUFJLFdBQVcsQ0FBQyxDQUFBO0lBRXJELElBQVUsUUFBUSxHQUF3QixJQUFJLFNBQTVCLEVBQVcsUUFBUSxHQUFLLElBQUksUUFBVCxDQUFTO0lBQ3RELElBQU0sV0FBVyxHQUFHLFVBQUcsUUFBUSxTQUFHLFFBQVEsQ0FBRSxDQUFBO0lBRTVDLE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBRTFELENBQUM7QUFFRCxNQUFNLENBQU4sSUFBWSxTQVVYO0FBVkQsV0FBWSxTQUFTO0lBQ25CLDBCQUFhLENBQUE7SUFDYixvQ0FBdUIsQ0FBQTtJQUN2Qiw4QkFBaUIsQ0FBQTtJQUNqQiw0Q0FBK0IsQ0FBQTtJQUMvQix3Q0FBMkIsQ0FBQTtJQUMzQiw4QkFBaUIsQ0FBQTtJQUNqQiw0QkFBZSxDQUFBO0lBQ2Ysa0NBQXFCLENBQUE7SUFDckIsNEJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBVlcsU0FBUyxLQUFULFNBQVMsUUFVcEI7QUFFRCxNQUFNLENBQUMsSUFBTSx1QkFBdUIsR0FBRyxRQUFRLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbmRQb2ludEtleSB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMnXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICdAY2xvdWRiYXNlL3V0aWxpdGllcydcblxuY29uc3QgWk9ORV9DSElOQSA9IFsnYXAtc2hhbmdoYWknLCAnYXAtZ3Vhbmd6aG91JywgJ2FwLXNoZW56aGVuLWZzaScsICdhcC1zaGFuZ2hhaS1mc2knLCAnYXAtbmFuamluZycsICdhcC1iZWlqaW5nJywgJ2FwLWNoZW5nZHUnLCAnYXAtY2hvbmdxaW5nJywgJ2FwLWhvbmdrb25nJ11cblxuLy8gQHRzLWlnbm9yZVxuY29uc3QgeyBzZXRTZGtOYW1lOiBzZXRVdGlsaXRpZXNTZGtOYW1lLCBzZXRQcm90b2NvbDogc2V0VXRpbGl0aWVzUHJvdG9jb2wgfSA9IGNvbnN0YW50c1xuLyoqXG4gKiBTREtcbiAqL1xubGV0IHNka1ZlcnNpb24gPSAnJ1xubGV0IHNka05hbWUgPSAnQGNsb3VkYmFzZS9qcy1zZGsnXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRTZGtWZXJzaW9uKHZlcnNpb246IHN0cmluZykge1xuICBzZGtWZXJzaW9uID0gdmVyc2lvblxufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNka1ZlcnNpb24oKSB7XG4gIHJldHVybiBzZGtWZXJzaW9uXG59XG5leHBvcnQgZnVuY3Rpb24gc2V0U2RrTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgc2RrTmFtZSA9IG5hbWVcbiAgc2V0VXRpbGl0aWVzU2RrTmFtZShuYW1lKVxufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNka05hbWUoKSB7XG4gIHJldHVybiBzZGtOYW1lXG59XG5leHBvcnQgY29uc3QgREFUQV9WRVJTSU9OID0gJzIwMjAtMDEtMTAnXG5cbmludGVyZmFjZSBFbmRQb2ludEluZm8ge1xuICBlbnY6IHN0cmluZ1xuICBlbmRQb2ludEtleTogRW5kUG9pbnRLZXlcbiAgcmVnaW9uPzogc3RyaW5nXG4gIGJhc2VVcmw/OiBzdHJpbmdcbiAgcHJvdG9jb2w/OiBQcm90b2NvbFxufVxuXG50eXBlIFByb3RvY29sID0gJ2h0dHAnIHwgJ2h0dHBzJyB8ICdodHRwOicgfCAnaHR0cHM6J1xuXG4vKipcbiAqICDmiYDmnIkgZW5kUG9pbnQg5L+h5oGvXG4gKiAg6YG/5YWN55u05o6l5pON5L2c6K+l5pWw57uEXG4gKiAg5L2/55SoIHNldEVuZFBvaW50SW5mb+OAgSBnZXRFbmRQb2ludEluZm9cbiAqL1xuY29uc3QgRU5EX1BPSU5UX0lORk9fQVJSOiBBcnJheTxFbmRQb2ludEluZm8+ID0gW11cblxuLyoqIOeUqOadpeafpeaJviBlbmRQb2ludCDnmoTlrZfmrrUgKi9cbmNvbnN0IEVORF9QT0lOVF9JTkZPX1NFQVJDSF9LRVlTID0gWydlbnYnLCAnZW5kUG9pbnRLZXknLCAncmVnaW9uJ11cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUFJPVE9DT0w6ICdodHRwOicgfCAnaHR0cHM6JyA9ICdodHRwczonXG5cbmZ1bmN0aW9uIGZpbmRNYXRjaGVkSW5mbyhpbmZvOiBFbmRQb2ludEluZm8pIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW4sIGVxZXFlcVxuICByZXR1cm4gRU5EX1BPSU5UX0lORk9fQVJSLmZpbmQodGFyZ2V0SW5mbyA9PiBFTkRfUE9JTlRfSU5GT19TRUFSQ0hfS0VZUy5maWx0ZXIoc2VhcmNoS2V5ID0+IGluZm9bc2VhcmNoS2V5XSAhPSBudWxsKS5ldmVyeShzZWFyY2hLZXkgPT4gdGFyZ2V0SW5mb1tzZWFyY2hLZXldID09PSBpbmZvW3NlYXJjaEtleV0sKSwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRFbmRQb2ludEluZm8obmV3SW5mbzogRW5kUG9pbnRJbmZvKSB7XG4gIGlmIChuZXdJbmZvLnByb3RvY29sICYmICEvOiQvLnRlc3QobmV3SW5mby5wcm90b2NvbCkpIHtcbiAgICBuZXdJbmZvLnByb3RvY29sID0gYCR7bmV3SW5mby5wcm90b2NvbH06YCBhcyBQcm90b2NvbFxuICB9XG5cbiAgY29uc3QgZW5kUG9pbnRJbmZvID0gZmluZE1hdGNoZWRJbmZvKG5ld0luZm8pXG4gIGlmIChlbmRQb2ludEluZm8pIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgaWYgKG5ld0luZm8uYmFzZVVybCAhPSBudWxsKSB7XG4gICAgICBlbmRQb2ludEluZm8uYmFzZVVybCA9IG5ld0luZm8uYmFzZVVybFxuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgaWYgKG5ld0luZm8ucHJvdG9jb2wgIT0gbnVsbCkge1xuICAgICAgZW5kUG9pbnRJbmZvLnByb3RvY29sID0gbmV3SW5mby5wcm90b2NvbFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBFTkRfUE9JTlRfSU5GT19BUlIucHVzaCh7IC4uLm5ld0luZm8sIHByb3RvY29sOiBuZXdJbmZvLnByb3RvY29sID8/IERFRkFVTFRfUFJPVE9DT0wgfSlcbiAgfVxuXG4gIC8vIOS/neaMgeaXp+S7o+eggemAu+i+kVxuICBpZiAobmV3SW5mby5lbmRQb2ludEtleSA9PT0gJ0NMT1VEX0FQSScpIHtcbiAgICBzZXRVdGlsaXRpZXNQcm90b2NvbCgobmV3SW5mby5wcm90b2NvbCA/PyBERUZBVUxUX1BST1RPQ09MKSBhcyAnaHR0cDonIHwgJ2h0dHBzOicpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVuZFBvaW50SW5mbyhlbnY6IHN0cmluZywgZW5kUG9pbnRLZXk6IEVuZFBvaW50S2V5LCByZWdpb24/OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGZpbmRNYXRjaGVkSW5mbyh7IGVudiwgZW5kUG9pbnRLZXksIHJlZ2lvbiB9KVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZXRFbmRQb2ludFdpdGhLZXkge1xuICBrZXk6IEVuZFBvaW50S2V5XG4gIHVybD86IHN0cmluZ1xuICBwcm90b2NvbD86ICdodHRwJyB8ICdodHRwcydcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEdhdGV3YXlFbmRQb2ludFdpdGhFbnYoZW52OiBzdHJpbmcsIHByb3RvY29sPzogUHJvdG9jb2wsIHJlZ2lvbiA9ICdhcC1zaGFuZ2hhaScpIHtcbiAgcmVnaW9uID0gcmVnaW9uIHx8ICdhcC1zaGFuZ2hhaSdcbiAgbGV0IGJhc2VVcmwgPSBgLy8ke2Vudn0uYXBpLnRjbG91ZGJhc2VnYXRld2F5LmNvbS92MWBcblxuICBpZiAoIVpPTkVfQ0hJTkEuaW5jbHVkZXMocmVnaW9uKSkge1xuICAgIGJhc2VVcmwgPSBgLy8ke2Vudn0uYXBpLmludGwudGNsb3VkYmFzZWdhdGV3YXkuY29tL3YxYFxuICB9XG5cbiAgc2V0RW5kUG9pbnRJbmZvKHsgZW5kUG9pbnRLZXk6ICdHQVRFV0FZJywgZW52LCBiYXNlVXJsLCBwcm90b2NvbCB9KVxufVxuZXhwb3J0IGZ1bmN0aW9uIHNldFJlZ2lvbkxldmVsRW5kcG9pbnQoZW52OiBzdHJpbmcsIHJlZ2lvbjogc3RyaW5nLCBwcm90b2NvbD86IFByb3RvY29sKSB7XG4gIGNvbnN0IGJhc2VVcmwgPSBgLy8ke2Vudn0uJHtyZWdpb24gfHwgJ2FwLXNoYW5naGFpJ30udGNiLWFwaS50ZW5jZW50Y2xvdWRhcGkuY29tL3dlYmBcbiAgc2V0RW5kUG9pbnRJbmZvKHsgZW52LCByZWdpb24sIGJhc2VVcmwsIHByb3RvY29sLCBlbmRQb2ludEtleTogJ0NMT1VEX0FQSScgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJhc2VFbmRQb2ludChlbnY6IHN0cmluZywgZW5kUG9pbnRLZXk6IEVuZFBvaW50S2V5ID0gJ0NMT1VEX0FQSScpIHtcbiAgY29uc3QgaW5mbyA9IGdldEVuZFBvaW50SW5mbyhlbnYsIGVuZFBvaW50S2V5IHx8ICdDTE9VRF9BUEknKVxuXG4gIGNvbnN0IHsgcHJvdG9jb2w6IFBST1RPQ09MLCBiYXNlVXJsOiBCQVNFX1VSTCB9ID0gaW5mb1xuICBjb25zdCB3ZWJFbmRwb2ludCA9IGAke1BST1RPQ09MfSR7QkFTRV9VUkx9YFxuICAvLyBAdG9kbyDkuLTml7blhbzlrrnlsI/nqIvluo9cbiAgcmV0dXJuIHdlYkVuZHBvaW50Lm1hdGNoKC8oaHR0cChzKT86KT9cXC9cXC8oW14vPyNdKikvKVswXVxuICAvLyByZXR1cm4gYCR7bmV3IFVSTCh3ZWJFbmRwb2ludCkub3JpZ2lufWBcbn1cblxuZXhwb3J0IGVudW0gTE9HSU5UWVBFIHtcbiAgTlVMTCA9ICdOVUxMJyxcbiAgQU5PTllNT1VTID0gJ0FOT05ZTU9VUycsXG4gIFdFQ0hBVCA9ICdXRUNIQVQnLFxuICBXRUNIQVRfUFVCTElDID0gJ1dFQ0hBVC1QVUJMSUMnLFxuICBXRUNIQVRfT1BFTiA9ICdXRUNIQVQtT1BFTicsXG4gIENVU1RPTSA9ICdDVVNUT00nLFxuICBFTUFJTCA9ICdFTUFJTCcsXG4gIFVTRVJOQU1FID0gJ1VTRVJOQU1FJyxcbiAgUEhPTkUgPSAnUEhPTkUnLFxufVxuXG5leHBvcnQgY29uc3QgT0FVVEgyX0xPR0lOVFlQRV9QUkVGSVggPSAnT0FVVEgyJ1xuIl19