ng-yunzai-mobile
Version:
1. 修改wechat.micro.ts
459 lines • 29.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: devices/dingtalk.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { BaseDevice } from "./base.device";
import { Inject, Injectable } from "@angular/core";
import { TokenService } from "../token/token.service";
import { HttpClient } from "@angular/common/http";
import { UserService } from "../user/user.service";
import { BASE_CLIENT } from "../client/base.client";
import { preloaderFinished } from "../auth/preloader";
import { from } from "rxjs";
import { Title } from "@angular/platform-browser";
import * as i0 from "@angular/core";
import * as i1 from "../token/token.service";
import * as i2 from "@angular/common/http";
import * as i3 from "../user/user.service";
import * as i4 from "@angular/platform-browser";
import * as i5 from "../client/base.client";
/** @type {?} */
var apis = [
'requestAuthCode',
'scan',
'getLocation',
'device.geolocation.get',
];
var Dingtalk = /** @class */ (function (_super) {
tslib_1.__extends(Dingtalk, _super);
function Dingtalk(tokenService, http, user, title, baseclient) {
var _this = _super.call(this) || this;
_this.tokenService = tokenService;
_this.http = http;
_this.user = user;
_this.title = title;
_this.baseclient = baseclient;
return _this;
}
/**
* @return {?}
*/
Dingtalk.prototype.auth = /**
* @return {?}
*/
function () {
var _this = this;
if (this.baseclient.dingtalk && this.baseclient.dingtalk.auth === false) {
return new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
function (resolve, reject) {
preloaderFinished();
resolve(true);
}));
}
return new Promise((/**
* @param {?} reject
* @param {?} resolve
* @return {?}
*/
function (reject, resolve) {
/** @type {?} */
var url = encodeURIComponent(window.location.href);
_this.http
.get(_this.baseclient.gateway + "/wechat/mp/token?url=" + url)
.subscribe((/**
* @param {?} token
* @return {?}
*/
function (token) {
if (token.error_code === 200) {
_this.tokenService.set((/** @type {?} */ ({
accessToken: token.message,
tokenType: "bearer",
})));
_this.http
.get(_this.baseclient.gateway + "/auth/user")
.subscribe((/**
* @param {?} response
* @return {?}
*/
function (response) {
_this.user.set(response.principal);
_this.generateDingtalkConfig();
preloaderFinished();
reject(null);
}));
}
else if (token.error_code === 500) {
// 没有token,则重定向到认证页面,认证完成后会跳回本页面
window.location.href = token.path;
}
}));
}));
};
/**
* @param {?} iwindow
* @return {?}
*/
Dingtalk.prototype.openWindow = /**
* @param {?} iwindow
* @return {?}
*/
function (iwindow) {
window.open(iwindow.url, '_self');
};
/**
* @param {?} ititle
* @return {?}
*/
Dingtalk.prototype.setTitle = /**
* @param {?} ititle
* @return {?}
*/
function (ititle) {
this.title.setTitle(ititle.title);
};
/**
* @param {?} navigationBar
* @return {?}
*/
Dingtalk.prototype.setNavigationBar = /**
* @param {?} navigationBar
* @return {?}
*/
function (navigationBar) {
alert("dingtalk暂不支持放置按钮!");
};
/**
* @param {?} ishare
* @return {?}
*/
Dingtalk.prototype.share = /**
* @param {?} ishare
* @return {?}
*/
function (ishare) {
alert("dingtalk暂不支持分享!");
};
/**
* @return {?}
*/
Dingtalk.prototype.getToken = /**
* @return {?}
*/
function () {
return this.tokenService.get();
};
/**
* @return {?}
*/
Dingtalk.prototype.scanCode = /**
* @return {?}
*/
function () {
/** @type {?} */
var p = new Promise((/**
* @param {?} resolve
* @return {?}
*/
function (resolve) {
dd.scan({
type: 'qr',
success: (/**
* @param {?} res
* @return {?}
*/
function (res) {
resolve(res.text);
}),
fail: (/**
* @param {?} err
* @return {?}
*/
function (err) {
console.log('调用扫一扫失败:' + JSON.stringify(err));
}),
});
}));
return from(p);
};
/**
* @return {?}
*/
Dingtalk.prototype.userLocation = /**
* @return {?}
*/
function () {
/** @type {?} */
var p = new Promise((/**
* @param {?} resolve
* @return {?}
*/
function (resolve) {
dd.getLocation({
type: 1,
useCache: true,
coordinate: '0',
cacheTimeout: 20,
withReGeocode: true,
targetAccuracy: '200',
success: (/**
* @param {?} res
* @return {?}
*/
function (res) {
console.log(res);
var latitude = res.latitude, longitude = res.longitude, address = res.address;
resolve({ latitude: latitude, longitude: longitude, address: address });
}),
fail: (/**
* @param {?} err
* @return {?}
*/
function (err) {
console.log('调用定位失败:' + JSON.stringify(err));
}),
});
}));
return from(p);
};
/**
* @param {?} bssids
* @return {?}
*/
Dingtalk.prototype.validateInWifi = /**
* @param {?} bssids
* @return {?}
*/
function (bssids) {
alert("dingtalk暂不支持WIFI验证!");
return undefined;
};
/**
* @return {?}
*/
Dingtalk.prototype.getWifiMac = /**
* @return {?}
*/
function () {
alert("dingtalk暂不支持获取MAC地址!");
return undefined;
};
/**
* @param {?} count
* @return {?}
*/
Dingtalk.prototype.chooseContacts = /**
* @param {?} count
* @return {?}
*/
function (count) {
alert("dingtalk暂不支持获取联系人!");
return undefined;
};
/**
* @param {?} targetUserId
* @return {?}
*/
Dingtalk.prototype.contactDetails = /**
* @param {?} targetUserId
* @return {?}
*/
function (targetUserId) {
alert("dingtalk暂不支持查询联系人详细信息!");
return undefined;
};
/**
* @param {?} count
* @param {?} sourceType
* @return {?}
*/
Dingtalk.prototype.uploadImage = /**
* @param {?} count
* @param {?} sourceType
* @return {?}
*/
function (count, sourceType) {
alert("dingtalk暂不支持图片上传!");
return undefined;
};
/**
* @param {?} url
* @param {?} openType
* @param {?} title
* @param {?} id
* @param {?} type
* @return {?}
*/
Dingtalk.prototype.openReadWithTimer = /**
* @param {?} url
* @param {?} openType
* @param {?} title
* @param {?} id
* @param {?} type
* @return {?}
*/
function (url, openType, title, id, type) {
alert("dingtalk暂不支持读物时间统计!");
return undefined;
};
/**
* @param {?} limitMinute
* @return {?}
*/
Dingtalk.prototype.uploadMovie = /**
* @param {?} limitMinute
* @return {?}
*/
function (limitMinute) {
alert("dingtalk暂不支持视频上传!");
return undefined;
};
/**
* @param {?} url
* @param {?} title
* @return {?}
*/
Dingtalk.prototype.fileBrowser = /**
* @param {?} url
* @param {?} title
* @return {?}
*/
function (url, title) {
alert("dingtalk暂不支持此功能!");
return undefined;
};
/**
* @param {?} ticket
* @param {?} callback
* @return {?}
*/
Dingtalk.prototype.startSearchBeacons = /**
* @param {?} ticket
* @param {?} callback
* @return {?}
*/
function (ticket, callback) {
throw new Error("Method not implemented.");
};
/**
* @param {?} callback
* @return {?}
*/
Dingtalk.prototype.stopSearchBeacons = /**
* @param {?} callback
* @return {?}
*/
function (callback) {
throw new Error("Method not implemented.");
};
/**
* @param {?} callback
* @return {?}
*/
Dingtalk.prototype.onSearchBeacons = /**
* @param {?} callback
* @return {?}
*/
function (callback) {
throw new Error("Method not implemented.");
};
/**
* @return {?}
*/
Dingtalk.prototype.generateDingtalkConfig = /**
* @return {?}
*/
function () {
this.http
.get(this.baseclient.gateway + "/wechat/mp/jssdk?url=" + encodeURIComponent(window.location.href))
.subscribe((/**
* @param {?} response
* @return {?}
*/
function (response) {
try {
dd.config({
agentId: response.agentId,
// 必填,微应用ID
corpId: response.corpId,
// 必填,企业ID
timeStamp: response.timestamp,
// 必填,生成签名的时间戳
nonceStr: response.nonceStr,
// 必填,自定义固定字符串。
signature: response.signature,
// 必填,签名
type: 0,
// 选填。0表示微应用的jsapi,1表示服务窗的jsapi;不填默认为0。该参数从dingtalk.js的0.8.3版本开始支持
jsApiList: apis // 必填,需要使用的jsapi列表,注意:不要带dd。
});
}
catch (e) {
console.log(e);
}
}));
dd.ready((/**
* @return {?}
*/
function () {
console.log('钉钉jssdk初始化完成.');
}));
dd.error((/**
* @param {?} res
* @return {?}
*/
function (res) {
console.log('钉钉jssdk初始化失败:', res);
}));
};
Dingtalk.decorators = [
{ type: Injectable, args: [{
providedIn: "root",
},] }
];
/** @nocollapse */
Dingtalk.ctorParameters = function () { return [
{ type: TokenService },
{ type: HttpClient },
{ type: UserService },
{ type: Title },
{ type: undefined, decorators: [{ type: Inject, args: [BASE_CLIENT,] }] }
]; };
/** @nocollapse */ Dingtalk.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function Dingtalk_Factory() { return new Dingtalk(i0.ɵɵinject(i1.TokenService), i0.ɵɵinject(i2.HttpClient), i0.ɵɵinject(i3.UserService), i0.ɵɵinject(i4.Title), i0.ɵɵinject(i5.BASE_CLIENT)); }, token: Dingtalk, providedIn: "root" });
return Dingtalk;
}(BaseDevice));
export { Dingtalk };
if (false) {
/**
* @type {?}
* @private
*/
Dingtalk.prototype.tokenService;
/**
* @type {?}
* @private
*/
Dingtalk.prototype.http;
/**
* @type {?}
* @private
*/
Dingtalk.prototype.user;
/**
* @type {?}
* @private
*/
Dingtalk.prototype.title;
/**
* @type {?}
* @private
*/
Dingtalk.prototype.baseclient;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGluZ3RhbGsuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy15dW56YWktbW9iaWxlLyIsInNvdXJjZXMiOlsiZGV2aWNlcy9kaW5ndGFsay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxXQUFXLEVBQWEsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUVwRCxPQUFPLEVBQUMsSUFBSSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7SUFJMUMsSUFBSSxHQUFHO0lBQ1gsaUJBQWlCO0lBQ2pCLE1BQU07SUFDTixhQUFhO0lBQ2Isd0JBQXdCO0NBQ3pCO0FBS0Q7SUFHOEIsb0NBQVU7SUFDdEMsa0JBQ1UsWUFBMEIsRUFDMUIsSUFBZ0IsRUFDaEIsSUFBaUIsRUFDakIsS0FBWSxFQUNTLFVBQXNCO1FBTHJELFlBT0UsaUJBQU8sU0FDUjtRQVBTLGtCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFVBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsVUFBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixXQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1MsZ0JBQVUsR0FBVixVQUFVLENBQVk7O0lBR3JELENBQUM7Ozs7SUFFRCx1QkFBSTs7O0lBQUo7UUFBQSxpQkErQkM7UUE5QkMsSUFBSSxJQUFJLENBQUMs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O0NBcU5DLEFBN0xELENBRzhCLFVBQVUsR0EwTHZDO1NBMUxZLFFBQVE7Ozs7OztJQUVqQixnQ0FBa0M7Ozs7O0lBQ2xDLHdCQUF3Qjs7Ozs7SUFDeEIsd0JBQXlCOzs7OztJQUN6Qix5QkFBb0I7Ozs7O0lBQ3BCLDhCQUFtRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QmFzZURldmljZX0gZnJvbSBcIi4vYmFzZS5kZXZpY2VcIjtcclxuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7VG9rZW5TZXJ2aWNlfSBmcm9tIFwiLi4vdG9rZW4vdG9rZW4uc2VydmljZVwiO1xyXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge1VzZXJTZXJ2aWNlfSBmcm9tIFwiLi4vdXNlci91c2VyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtCQVNFX0NMSUVOVCwgQmFzZUNsaWVudH0gZnJvbSBcIi4uL2NsaWVudC9iYXNlLmNsaWVudFwiO1xyXG5pbXBvcnQge3ByZWxvYWRlckZpbmlzaGVkfSBmcm9tIFwiLi4vYXV0aC9wcmVsb2FkZXJcIjtcclxuaW1wb3J0IHtJdG9rZW59IGZyb20gXCIuLi9hdXRoL2l0b2tlblwiO1xyXG5pbXBvcnQge2Zyb20sIE9ic2VydmFibGV9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7SVNoYXJlLCBJVGl0bGUsIElXaW5kb3csIE5hdmlnYXRpb25CYXIsIFVzZXJMb2NhdGlvbn0gZnJvbSBcIi4vbW9kZWxcIjtcclxuaW1wb3J0IHtUaXRsZX0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcclxuaW1wb3J0IHtNeVdlY2hhdE1wVG9rZW59IGZyb20gXCIuL21vZGVsL3dlY2hhdC5tcFwiO1xyXG5cclxuXHJcbmNvbnN0IGFwaXMgPSBbXHJcbiAgJ3JlcXVlc3RBdXRoQ29kZScsXHJcbiAgJ3NjYW4nLFxyXG4gICdnZXRMb2NhdGlvbicsXHJcbiAgJ2RldmljZS5nZW9sb2NhdGlvbi5nZXQnLFxyXG5dO1xyXG5cclxuXHJcbmRlY2xhcmUgbGV0IGRkO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGluZ3RhbGsgZXh0ZW5kcyBCYXNlRGV2aWNlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdG9rZW5TZXJ2aWNlOiBUb2tlblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIHVzZXI6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0aXRsZTogVGl0bGUsXHJcbiAgICBASW5qZWN0KEJBU0VfQ0xJRU5UKSBwcml2YXRlIGJhc2VjbGllbnQ6IEJhc2VDbGllbnRcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBhdXRoKCk6IFByb21pc2U8YW55PiB7XHJcbiAgICBpZiAodGhpcy5iYXNlY2xpZW50LmRpbmd0YWxrICYmIHRoaXMuYmFzZWNsaWVudC5kaW5ndGFsay5hdXRoID09PSBmYWxzZSkge1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgcHJlbG9hZGVyRmluaXNoZWQoKTtcclxuICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChyZWplY3QsIHJlc29sdmUpID0+IHtcclxuICAgICAgY29uc3QgdXJsID0gZW5jb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcclxuICAgICAgdGhpcy5odHRwXHJcbiAgICAgICAgLmdldChgJHt0aGlzLmJhc2VjbGllbnQuZ2F0ZXdheX0vd2VjaGF0L21wL3Rva2VuP3VybD1gICsgdXJsKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHRva2VuOiBNeVdlY2hhdE1wVG9rZW4pID0+IHtcclxuICAgICAgICAgIGlmICh0b2tlbi5lcnJvcl9jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy50b2tlblNlcnZpY2Uuc2V0KHtcclxuICAgICAgICAgICAgICBhY2Nlc3NUb2tlbjogdG9rZW4ubWVzc2FnZSxcclxuICAgICAgICAgICAgICB0b2tlblR5cGU6IFwiYmVhcmVyXCIsXHJcbiAgICAgICAgICAgIH0gYXMgYW55KTtcclxuICAgICAgICAgICAgdGhpcy5odHRwXHJcbiAgICAgICAgICAgICAgLmdldChgJHt0aGlzLmJhc2VjbGllbnQuZ2F0ZXdheX0vYXV0aC91c2VyYClcclxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXIuc2V0KHJlc3BvbnNlLnByaW5jaXBhbCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRGluZ3RhbGtDb25maWcoKTtcclxuICAgICAgICAgICAgICAgIHByZWxvYWRlckZpbmlzaGVkKCk7XHJcbiAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRva2VuLmVycm9yX2NvZGUgPT09IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDmsqHmnIl0b2tlbu+8jOWImemHjeWumuWQkeWIsOiupOivgemhtemdou+8jOiupOivgeWujOaIkOWQjuS8mui3s+WbnuacrOmhtemdolxyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRva2VuLnBhdGg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9wZW5XaW5kb3coaXdpbmRvdzogSVdpbmRvdyk6IHZvaWQge1xyXG4gICAgd2luZG93Lm9wZW4oaXdpbmRvdy51cmwsICdfc2VsZicpO1xyXG4gIH1cclxuXHJcbiAgc2V0VGl0bGUoaXRpdGxlOiBJVGl0bGUpOiB2b2lkIHtcclxuICAgIHRoaXMudGl0bGUuc2V0VGl0bGUoaXRpdGxlLnRpdGxlKTtcclxuICB9XHJcblxyXG4gIHNldE5hdmlnYXRpb25CYXIobmF2aWdhdGlvbkJhcjogTmF2aWdhdGlvbkJhcik6IHZvaWQge1xyXG4gICAgYWxlcnQoXCJkaW5ndGFsa+aaguS4jeaUr+aMgeaUvue9ruaMiemSriFcIik7XHJcbiAgfVxyXG5cclxuICBzaGFyZShpc2hhcmU6IElTaGFyZSk6IHZvaWQge1xyXG4gICAgYWxlcnQoXCJkaW5ndGFsa+aaguS4jeaUr+aMgeWIhuS6qyFcIik7XHJcbiAgfVxyXG5cclxuICBnZXRUb2tlbigpOiBJdG9rZW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudG9rZW5TZXJ2aWNlLmdldCgpO1xyXG4gIH1cclxuXHJcbiAgc2NhbkNvZGUoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IHAgPSBuZXcgUHJvbWlzZTxzdHJpbmc+KHJlc29sdmUgPT4ge1xyXG4gICAgICBkZC5zY2FuKHtcclxuICAgICAgICB0eXBlOiAncXInLFxyXG4gICAgICAgIHN1Y2Nlc3M6IChyZXMpID0+IHtcclxuICAgICAgICAgIHJlc29sdmUocmVzLnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmFpbDogKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ+iwg+eUqOaJq+S4gOaJq+Wksei0pTonICsgSlNPTi5zdHJpbmdpZnkoZXJyKSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmcm9tKHApO1xyXG4gIH1cclxuXHJcbiAgdXNlckxvY2F0aW9uKCk6IE9ic2VydmFibGU8VXNlckxvY2F0aW9uPiB7XHJcbiAgICBjb25zdCBwID0gbmV3IFByb21pc2U8VXNlckxvY2F0aW9uPihyZXNvbHZlID0+IHtcclxuICAgICAgZGQuZ2V0TG9jYXRpb24oe1xyXG4gICAgICAgIHR5cGU6IDEsXHJcbiAgICAgICAgdXNlQ2FjaGU6IHRydWUsXHJcbiAgICAgICAgY29vcmRpbmF0ZTogJzAnLFxyXG4gICAgICAgIGNhY2hlVGltZW91dDogMjAsXHJcbiAgICAgICAgd2l0aFJlR2VvY29kZTogdHJ1ZSxcclxuICAgICAgICB0YXJnZXRBY2N1cmFjeTogJzIwMCcsXHJcbiAgICAgICAgc3VjY2VzczogKHJlcykgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICAgIGNvbnN0IHtsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhZGRyZXNzfSA9IHJlcztcclxuICAgICAgICAgIHJlc29sdmUoe2xhdGl0dWRlLCBsb25naXR1ZGUsIGFkZHJlc3N9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhaWw6IChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCfosIPnlKjlrprkvY3lpLHotKU6JyArIEpTT04uc3RyaW5naWZ5KGVycikpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZnJvbShwKTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlSW5XaWZpKGJzc2lkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIGFsZXJ0KFwiZGluZ3RhbGvmmoLkuI3mlK/mjIFXSUZJ6aqM6K+BIVwiKTtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRXaWZpTWFjKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICBhbGVydChcImRpbmd0YWxr5pqC5LiN5pSv5oyB6I635Y+WTUFD5Zyw5Z2AIVwiKTtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBjaG9vc2VDb250YWN0cyhjb3VudDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGFsZXJ0KFwiZGluZ3RhbGvmmoLkuI3mlK/mjIHojrflj5bogZTns7vkurohXCIpO1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGNvbnRhY3REZXRhaWxzKHRhcmdldFVzZXJJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGFsZXJ0KFwiZGluZ3RhbGvmmoLkuI3mlK/mjIHmn6Xor6LogZTns7vkurror6bnu4bkv6Hmga8hXCIpO1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHVwbG9hZEltYWdlKGNvdW50OiBudW1iZXIsIHNvdXJjZVR5cGU6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBhbGVydChcImRpbmd0YWxr5pqC5LiN5pSv5oyB5Zu+54mH5LiK5LygIVwiKTtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBvcGVuUmVhZFdpdGhUaW1lcihcclxuICAgIHVybDogYW55LFxyXG4gICAgb3BlblR5cGU6IGFueSxcclxuICAgIHRpdGxlOiBhbnksXHJcbiAgICBpZDogYW55LFxyXG4gICAgdHlwZTogYW55XHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGFsZXJ0KFwiZGluZ3RhbGvmmoLkuI3mlK/mjIHor7vnianml7bpl7Tnu5/orqEhXCIpO1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHVwbG9hZE1vdmllKGxpbWl0TWludXRlOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgYWxlcnQoXCJkaW5ndGFsa+aaguS4jeaUr+aMgeinhumikeS4iuS8oCFcIik7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZmlsZUJyb3dzZXIodXJsOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgYWxlcnQoXCJkaW5ndGFsa+aaguS4jeaUr+aMgeatpOWKn+iDvSFcIik7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgc3RhcnRTZWFyY2hCZWFjb25zKHRpY2tldDogc3RyaW5nLCBjYWxsYmFjazogKGFyZ3Y6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XHJcbiAgfVxyXG5cclxuICBzdG9wU2VhcmNoQmVhY29ucyhjYWxsYmFjazogKGFyZ3Y6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaEJlYWNvbnMoY2FsbGJhY2s6IChhcmd2OiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdlbmVyYXRlRGluZ3RhbGtDb25maWcoKTogdm9pZCB7XHJcbiAgICB0aGlzLmh0dHBcclxuICAgICAgLmdldChgJHt0aGlzLmJhc2VjbGllbnQuZ2F0ZXdheX0vd2VjaGF0L21wL2pzc2RrP3VybD0ke2VuY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24uaHJlZil9YClcclxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBkZC5jb25maWcoe1xyXG4gICAgICAgICAgICBhZ2VudElkOiByZXNwb25zZS5hZ2VudElkLCAvLyDlv4XloavvvIzlvq7lupTnlKhJRFxyXG4gICAgICAgICAgICBjb3JwSWQ6IHJlc3BvbnNlLmNvcnBJZCwgLy8g5b+F5aGr77yM5LyB5LiaSURcclxuICAgICAgICAgICAgdGltZVN0YW1wOiByZXNwb25zZS50aW1lc3RhbXAsIC8vIOW/heWhq++8jOeUn+aIkOetvuWQjeeahOaXtumXtOaIs1xyXG4gICAgICAgICAgICBub25jZVN0cjogcmVzcG9uc2Uubm9uY2VTdHIsIC8vIOW/heWhq++8jOiHquWumuS5ieWbuuWumuWtl+espuS4suOAglxyXG4gICAgICAgICAgICBzaWduYXR1cmU6IHJlc3BvbnNlLnNpZ25hdHVyZSwgLy8g5b+F5aGr77yM562+5ZCNXHJcbiAgICAgICAgICAgIHR5cGU6IDAsICAgLy8g6YCJ5aGr44CCMOihqOekuuW+ruW6lOeUqOeahGpzYXBpLDHooajnpLrmnI3liqHnqpfnmoRqc2Fwae+8m+S4jeWhq+m7mOiupOS4ujDjgILor6Xlj4LmlbDku45kaW5ndGFsay5qc+eahDAuOC4z54mI5pys5byA5aeL5pSv5oyBXHJcbiAgICAgICAgICAgIGpzQXBpTGlzdDogYXBpcyAvLyDlv4XloavvvIzpnIDopoHkvb/nlKjnmoRqc2FwaeWIl+ihqO+8jOazqOaEj++8muS4jeimgeW4pmRk44CCXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgZGQucmVhZHkoKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZygn6ZKJ6ZKJanNzZGvliJ3lp4vljJblrozmiJAuJyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBkZC5lcnJvcigocmVzKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCfpkonpkolqc3Nka+WIneWni+WMluWksei0pTonLCByZXMpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==