tnx-shared 5.1.359 → 5.1.360
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/bundles/tnx-shared.umd.js +37 -16
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/classes/form-schema.d.ts +1 -0
- package/classes/form-schema.d.ts.map +1 -1
- package/components/reference-textbox/reference-textbox.component.d.ts +3 -0
- package/components/reference-textbox/reference-textbox.component.d.ts.map +1 -1
- package/components/user-picker/user-picker.component.d.ts.map +1 -1
- package/esm2015/classes/form-schema.js +1 -1
- package/esm2015/components/access-denied-component/access-denied-v1/access-denied-v1.component.js +1 -1
- package/esm2015/components/chat/chat-box/chat-box.component.js +1 -1
- package/esm2015/components/chat/chat-send-message-box/chat-send-message-box.component.js +1 -1
- package/esm2015/components/common-app-component/app-topbar-v1/app-topbar-v1.component.js +1 -1
- package/esm2015/components/common-app-component/app-topbar-v2/app-topbar-v2.component.js +1 -1
- package/esm2015/components/common-app-component/app.topbar.component.js +1 -1
- package/esm2015/components/crud/crud-form/crud-form.component.js +2 -2
- package/esm2015/components/file-explorer/file-ky-so-sim/file-ky-so-sim.component.js +1 -1
- package/esm2015/components/not-found/not-found.component.js +1 -1
- package/esm2015/components/reference-textbox/reference-textbox.component.js +16 -4
- package/esm2015/components/splash-component/splash-component-v1/splash-component-v1.component.js +1 -1
- package/esm2015/components/splash-component/splash-component-v2/splash-component-v2.component.js +1 -1
- package/esm2015/components/user-picker/user-picker.component.js +3 -1
- package/esm2015/models/grid-info.js +2 -2
- package/fesm2015/tnx-shared.js +28 -15
- package/fesm2015/tnx-shared.js.map +1 -1
- package/models/grid-info.d.ts.map +1 -1
- package/package.json +2 -2
- package/tnx-shared.metadata.json +1 -1
|
@@ -266,7 +266,7 @@ FileKySoSimComponent.decorators = [
|
|
|
266
266
|
selector: 'app-file-ky-so-sim',
|
|
267
267
|
template: "<div *ngIf=\"isLoading\" class=\"div-loading\">\r\n <div class=\"div-loading-image\">\r\n <p-progressSpinner [style]=\"{width: '50px', height: '50px'}\" styleClass=\"custom-spinner\" strokeWidth=\"8\"\r\n fill=\"#EEEEEE\" animationDuration=\".5s\"></p-progressSpinner>\r\n </div>\r\n</div>\r\n<div style=\"text-align: center;\">\r\n <!-- -->\r\n <ngx-extended-pdf-viewer #extendedPdfViewer pageViewMode=\"single\" useBrowserLocale=\"true\"\r\n height=\"calc(100vh - 100px)\" [src]=\"model.pdfAsDataUri\" [showToolbar]=\"true\" [showSidebarButton]=\"false\"\r\n [showFindButton]=\"false\" [showPagingButtons]=\"true\" [showZoomButtons]=\"false\"\r\n [showPresentationModeButton]=\"false\" [showOpenFileButton]=\"false\" [showPrintButton]=\"false\"\r\n [showDownloadButton]=\"false\" [showBookmarkButton]=\"false\" [showSecondaryToolbarButton]=\"false\"\r\n [showRotateButton]=\"false\" [showHandToolButton]=\"false\" [showScrollingButton]=\"false\" [showSpreadButton]=\"false\"\r\n [showPropertiesButton]=\"false\" [enablePinchOnMobile]=\"true\" [showUnverifiedSignatures]=\"true\"\r\n [filenameForDownload]=\"'file1.pdf'\" [zoom]=\"100\" [language]=\"'vi-VN'\" [handTool]=\"false\"\r\n [(page)]=\"myState.currentPage\" (currentZoomFactor)=\"onPDFZoom($event)\" (pagesLoaded)=\"pagesLoaded($event)\">\r\n </ngx-extended-pdf-viewer>\r\n <div #signContainer id=\"signContainer\" class=\"sign-container\" (window:resize)=\"onResize($event)\">\r\n <img #signImage *ngIf=\"model.kySimDataChuKy.signImageAsDataUri != null\" id=\"signImage\"\r\n [src]=\"model.kySimDataChuKy.signImageAsDataUri\" />\r\n <span *ngIf=\"model.kySimDataChuKy.signImageAsDataUri == null\">\r\n <i class=\"fas fa-signature\"></i> Ch\u1ECDn v\u1ECB tr\u00ED k\u00FD\r\n </span>\r\n <div class=\"resize top-left\"></div>\r\n <div class=\"resize bottom-right\"></div>\r\n </div>\r\n</div>\r\n<tn-dialog *ngIf=\"forms.danhSachChuKy.show\" #dialog [styleClass]=\"'address-form'\" [useDefaultScrollBar]=\"true\"\r\n [header]=\"forms.danhSachChuKy.header | translate\" [popupSize]=\"forms.danhSachChuKy.popupSize\" [showFooter]=\"true\"\r\n (onHide)=\"forms.danhSachChuKy.show=false\">\r\n <app-ky-so-sim-danh-sach-chu-ky [formData]=\"forms.danhSachChuKy\" [parentModel]=\"model\" [parentContext]=\"context\">\r\n </app-ky-so-sim-danh-sach-chu-ky>\r\n</tn-dialog>",
|
|
268
268
|
providers: [ComponentContextService],
|
|
269
|
-
styles: [".sign-container{-moz-user-select:none;-
|
|
269
|
+
styles: [".sign-container{-moz-user-select:none;-webkit-user-select:none;background:rgba(33,150,243,.14901960784313725);border:2px dashed #2196f3;display:none;left:0;position:absolute;top:10px;touch-action:none;user-select:none;z-index:11111}.sign-container span{color:#555;display:block;font-size:20px;font-style:italic;font-weight:700;padding:10px 20px 10px 10px}.sign-container img{height:100%;width:100%}.resize{background:#2196f3;border:1px solid #fff;border-radius:50%;box-shadow:1px 1px 3px 1px rgba(0,0,0,.25098039215686274);display:inline-block;height:16px;position:absolute;width:16px}.top-left{left:-8px;top:-8px}.bottom-right{bottom:-8px;right:-8px}.div-loading{background:rgba(0,0,0,.45098039215686275);display:block;height:100%;left:0;position:fixed;top:0;width:100%;z-index:99}.div-loading-image{left:50%;position:absolute;top:50%;z-index:100}"]
|
|
270
270
|
},] }
|
|
271
271
|
];
|
|
272
272
|
FileKySoSimComponent.ctorParameters = () => [
|
|
@@ -41,7 +41,7 @@ NotFoundComponent.decorators = [
|
|
|
41
41
|
selector: 'app-not-found',
|
|
42
42
|
template: "<ng-container [ngSwitch]=\"layoutNotFound\">\r\n <ng-container *ngSwitchDefault>\r\n <ng-container [ngTemplateOutlet]=\"notFoundDefault\">\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #notFoundDefault>\r\n <!-- <div style=\"display:flex; align-items:center; justify-content:center;height: calc(100vh - 60px);\">\r\n <div class=\"lds-ring\">\r\n </div>\r\n </div> -->\r\n <div class=\"modules\">\r\n <div class=\"welcome-user\">\r\n <div class=\"profile-image\">\r\n <img src=\"/assets/layout/images/male.png\" alt=\"Avatar\" />\r\n </div>\r\n\r\n <div class=\"wrp-login\">\r\n <h2>Xin ch\u00E0o!</h2>\r\n <b>{{currentUser.fullName}}</b>\r\n <div class=\"login\">\r\n <a (click)=\"goToHome()\"><i class=\"far fa-folder-open\"></i>Trang ch\u1EE7</a>\r\n <a style=\"background: #fabc01;\" (click)=\"logout()\"><i class=\"far fa-arrow-alt-circle-right\"></i>\u0110\u0103ng\r\n xu\u1EA5t</a>\r\n </div>\r\n </div>\r\n <div class=\"clock-wrapper\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"module-warning\">\r\n <div class=\"title\">\r\n <h1>404</h1>\r\n <h2>Kh\u00F4ng t\u00ECm th\u1EA5y trang</h2>\r\n <p>Trang b\u1EA1n \u0111ang t\u00ECm ki\u1EBFm c\u00F3 th\u1EC3 \u0111\u00E3 b\u1ECB x\u00F3a ho\u1EB7c kh\u00F4ng t\u1ED3n t\u1EA1i.</p>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>",
|
|
43
43
|
providers: [ComponentContextService],
|
|
44
|
-
styles: [".lds-ring{-webkit-animation:lds-ring 1.2s cubic-bezier(.5,0,.5,1) infinite;animation:lds-ring 1.2s cubic-bezier(.5,0,.5,1) infinite;background:no-repeat #eff1f6;border:2px solid #bcdbf5;border-radius:50%;border-top-color:#3192e1;box-sizing:border-box;display:inline-block;height:80px;position:relative;width:80px}@-webkit-keyframes lds-ring{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes lds-ring{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}body{background-color:#fff}.modules{align-items:center;background-image:url(/assets/images/background-splash.png);background-position:50%;background-repeat:no-repeat;background-size:cover;display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:100}.modules div>span{border-radius:5px;box-shadow:1px 2px 9px 1px #dadada;display:inline-block;height:120px;margin:10px;min-width:100px;white-space:normal;width:120px}.modules div>span>a{border-radius:5px;cursor:pointer;font-weight:700;height:100%;position:relative}.modules div>span>a,.modules div>span>a>span{color:#fff;display:inline-block;text-align:center;text-decoration:unset;width:100%}.modules div>span>a>span{bottom:10px;left:0;position:absolute}.modules div>span.implementing{background-color:#fff;box-shadow:none}.modules div>span>a>i{font-size:3.5em;left:0;position:absolute;top:20px;width:100%}.div1111-wrapper{height:420px;margin:0 auto;max-width:700px;overflow:auto}.div1111-wrapper .div1111{display:flex;flex-wrap:wrap;white-space:nowrap;width:100%}.div1111-wrapper .div1111 .bg-switcher{background:#fff;transition:.3s}.div1111-wrapper .div1111 .bg-switcher .app-switcher-item-icon{color:#52abff;transition:.3s}.div1111-wrapper .div1111 .bg-switcher span{color:#2f70ac;font-weight:500;text-shadow:none;transition:.3s}.div1111-wrapper .div1111 .bg-switcher:hover{background:#facb01;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804)}.div1111-wrapper .div1111 .bg-switcher:hover .app-switcher-item-icon,.div1111-wrapper .div1111 .bg-switcher:hover span{color:#2f70ac}.module-warning{
|
|
44
|
+
styles: [".lds-ring{-webkit-animation:lds-ring 1.2s cubic-bezier(.5,0,.5,1) infinite;animation:lds-ring 1.2s cubic-bezier(.5,0,.5,1) infinite;background:no-repeat #eff1f6;border:2px solid #bcdbf5;border-radius:50%;border-top-color:#3192e1;box-sizing:border-box;display:inline-block;height:80px;position:relative;width:80px}@-webkit-keyframes lds-ring{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes lds-ring{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}body{background-color:#fff}.modules{align-items:center;background-image:url(/assets/images/background-splash.png);background-position:50%;background-repeat:no-repeat;background-size:cover;display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:100}.modules div>span{border-radius:5px;box-shadow:1px 2px 9px 1px #dadada;display:inline-block;height:120px;margin:10px;min-width:100px;white-space:normal;width:120px}.modules div>span>a{border-radius:5px;cursor:pointer;font-weight:700;height:100%;position:relative}.modules div>span>a,.modules div>span>a>span{color:#fff;display:inline-block;text-align:center;text-decoration:unset;width:100%}.modules div>span>a>span{bottom:10px;left:0;position:absolute}.modules div>span.implementing{background-color:#fff;box-shadow:none}.modules div>span>a>i{font-size:3.5em;left:0;position:absolute;top:20px;width:100%}.div1111-wrapper{height:420px;margin:0 auto;max-width:700px;overflow:auto}.div1111-wrapper .div1111{display:flex;flex-wrap:wrap;white-space:nowrap;width:100%}.div1111-wrapper .div1111 .bg-switcher{background:#fff;transition:.3s}.div1111-wrapper .div1111 .bg-switcher .app-switcher-item-icon{color:#52abff;transition:.3s}.div1111-wrapper .div1111 .bg-switcher span{color:#2f70ac;font-weight:500;text-shadow:none;transition:.3s}.div1111-wrapper .div1111 .bg-switcher:hover{background:#facb01;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804)}.div1111-wrapper .div1111 .bg-switcher:hover .app-switcher-item-icon,.div1111-wrapper .div1111 .bg-switcher:hover span{color:#2f70ac}.module-warning{align-self:stretch;background-color:rgba(249,244,244,.9215686274509803);color:#666;display:flex;flex-direction:column;justify-content:center;text-align:center;width:65%}.module-warning .title{padding:0 20px}.module-warning img{margin:150px auto}.module-warning h1{color:#2f70ac;display:inline-block;font-size:35px;font-size:200px;font-weight:700;line-height:1;margin-bottom:0;margin-top:0;text-shadow:4px 4px 0 #00ffc0}.module-warning h2{color:#271756;font-size:40px;margin-bottom:0;margin-top:0;text-transform:uppercase}.module-warning p{color:#271756;display:inline-block;font-size:20px;font-weight:400;margin-bottom:25px;margin-top:20px}.welcome-user{align-self:stretch;background-color:rgba(47,112,172,.9215686274509803);display:flex;flex-direction:column;text-align:center;width:35%}.welcome-user .wrp-login{color:#fff;margin:20px auto auto}.welcome-user .wrp-login h2{font-size:20px;font-weight:500;margin-bottom:5px;margin-top:0}.welcome-user .wrp-login b{display:block;font-size:25px;text-transform:uppercase}.welcome-user .wrp-login .login{display:grid;grid-gap:10px;grid-template-columns:repeat(2,minmax(120px,1fr));margin-top:30px}.welcome-user .wrp-login .login a{background:#fff;border-radius:5px;color:#5d5d5d;cursor:pointer;display:inline-block;padding:6px}.welcome-user .wrp-login .login a i{margin-right:10px}.welcome-user .profile-image{margin:auto auto 0}.welcome-user .profile-image img{-o-object-fit:contain;background:#fff;border-radius:50%;box-shadow:1px 1px 11px 6px #2a659b;height:200px;object-fit:contain;width:200px}.welcome-user .clock-wrapper{color:#fff;margin-bottom:auto;margin-top:auto;text-align:center}.welcome-user .clock-wrapper h4{font-size:18px;font-weight:500;margin-top:10px}.welcome-user .clock-wrapper h1{font-size:40px;margin-bottom:0}@media (max-width:1368px){.clock{font-size:1.5em;margin:0 20px}.data-time{font-size:1em;margin:10px 0 20px}}@media (max-width:768px){.modules{flex-direction:column}.welcome-user{align-items:center;flex-direction:row;height:25%;width:100%}.welcome-user .profile-image{margin-bottom:auto}.welcome-user .profile-image img{height:150px;width:150px}.welcome-user .wrp-login{margin-top:auto}.welcome-user .wrp-login .login{margin-top:20px}.welcome-user .clock-wrapper{display:none}.module-warning{height:75%;width:100%}}@media (max-width:640px){.welcome-user .wrp-login{float:right;padding:0 20px 0 0;width:50%}.welcome-user .wrp-login h2{font-size:14px;margin-bottom:3px}.welcome-user .wrp-login b{font-size:14px}.welcome-user .wrp-login .login{display:flex;flex-direction:column;margin-top:10px;padding:0 15px;text-align:left}.welcome-user .wrp-login .login a{font-size:14px}.welcome-user .profile-image{float:left;width:50%}.welcome-user .profile-image img{display:block;height:130px;margin-left:35px;width:130px}.welcome-user .clock-wrapper{clear:both;padding-right:0;padding-top:10px}.welcome-user .clock-wrapper h4{font-size:14px;margin-top:5px}.welcome-user .clock-wrapper h1{font-size:1.3em}.module-warning .div1111-wrapper{height:360px;margin-top:0;max-width:360px}.module-warning .div1111-wrapper .div1111 .bg-switcher span{font-size:14px}.module-warning div>span{height:100px;width:100px}.module-warning div>span>a>i{font-size:2.5em;top:10px}}@media (max-width:425px){.module-warning h2{font-size:28px}}@media (max-width:375px){.module-warning h2{font-size:26px}}"]
|
|
45
45
|
},] }
|
|
46
46
|
];
|
|
47
47
|
NotFoundComponent.ctorParameters = () => [
|
|
@@ -14,6 +14,14 @@ export class ReferenceTextBoxComponent extends ComponentBase {
|
|
|
14
14
|
this._value = value;
|
|
15
15
|
this.checkAndGetData();
|
|
16
16
|
}
|
|
17
|
+
set dataSource(value) {
|
|
18
|
+
if (!value)
|
|
19
|
+
return;
|
|
20
|
+
this._dataSource = value;
|
|
21
|
+
}
|
|
22
|
+
get dataSource() {
|
|
23
|
+
return this._dataSource;
|
|
24
|
+
}
|
|
17
25
|
get value() {
|
|
18
26
|
return this._value;
|
|
19
27
|
}
|
|
@@ -27,16 +35,19 @@ export class ReferenceTextBoxComponent extends ComponentBase {
|
|
|
27
35
|
return __awaiter(this, void 0, void 0, function* () {
|
|
28
36
|
this.data = '';
|
|
29
37
|
if (!this.ready
|
|
30
|
-
||
|
|
38
|
+
|| this._value == null
|
|
31
39
|
|| !this.control
|
|
32
|
-
|| !this.control.baseService)
|
|
40
|
+
|| (!this.control.baseService && !this.dataSource))
|
|
33
41
|
return;
|
|
34
42
|
let item = null;
|
|
35
|
-
if (this.control.baseService instanceof BaseService) {
|
|
43
|
+
if (this.control.baseService && this.control.baseService instanceof BaseService) {
|
|
36
44
|
item = (yield this.control.baseService.getDetailByFilter([
|
|
37
45
|
this.newFilter(this.control.valueField, Operator.equal, this.value)
|
|
38
46
|
])).data;
|
|
39
47
|
}
|
|
48
|
+
else if (this.dataSource) {
|
|
49
|
+
item = this.dataSource.find(x => x[this.control.valueField] == this.value);
|
|
50
|
+
}
|
|
40
51
|
else {
|
|
41
52
|
// TODO: xử lý lấy dữ liệu detail của master data
|
|
42
53
|
item = null;
|
|
@@ -65,6 +76,7 @@ ReferenceTextBoxComponent.ctorParameters = () => [
|
|
|
65
76
|
ReferenceTextBoxComponent.propDecorators = {
|
|
66
77
|
control: [{ type: Input }],
|
|
67
78
|
value: [{ type: Input }],
|
|
79
|
+
dataSource: [{ type: Input }],
|
|
68
80
|
onInit: [{ type: Output }]
|
|
69
81
|
};
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlLXRleHRib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvcmVmZXJlbmNlLXRleHRib3gvcmVmZXJlbmNlLXRleHRib3guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQU8xRCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsYUFBYTtJQTBCeEQsWUFDSSxRQUFrQjtRQUVsQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFWVixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUMzQyxTQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLFVBQUssR0FBRyxLQUFLLENBQUM7SUFTZCxDQUFDO0lBdkJELElBQWEsS0FBSyxDQUFDLEtBQVU7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFhLFVBQVUsQ0FBQyxLQUFZO1FBQ2hDLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTztRQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFLRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQU9ELFFBQVE7UUFDSixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFSyxlQUFlOztZQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSzttQkFDUixJQUFJLENBQUMsTUFBTSxJQUFJLElBQUk7bUJBQ25CLENBQUMsSUFBSSxDQUFDLE9BQU87bUJBQ2IsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDcEQsT0FBTztZQUVULElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztZQUNoQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxZQUFZLFdBQVcsRUFBRTtnQkFDN0UsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDckQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUM7aUJBQ3RFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzthQUNaO2lCQUNJLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDdEIsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzlFO2lCQUNJO2dCQUNELGlEQUFpRDtnQkFDakQsSUFBSSxHQUFHLElBQUksQ0FBQzthQUNmO1lBRUQsSUFBSSxJQUFJLElBQUksSUFBSTtnQkFBRSxPQUFPO1lBQ3pCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDL0M7aUJBQ0k7Z0JBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUMvQztRQUNMLENBQUM7S0FBQTs7O1lBekVKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixvWkFBaUQ7O2FBRXBEOzs7WUFWaUMsUUFBUTs7O3NCQWdCckMsS0FBSztvQkFFTCxLQUFLO3lCQUlMLEtBQUs7cUJBUUwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlJztcclxuaW1wb3J0IHsgT3BlcmF0b3IsIFJlZmVyZW5jZVRleHRDb250cm9sU2NoZW1hIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYmFzZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdyZWZlcmVuY2UtdGV4dGJveCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVmZXJlbmNlLXRleHRib3guY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vcmVmZXJlbmNlLXRleHRib3guY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVmZXJlbmNlVGV4dEJveENvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIG9uQ2hhbmdlOiBGdW5jdGlvbjtcclxuICAgIG9uVG91Y2hlZDogRnVuY3Rpb247XHJcblxyXG4gICAgQElucHV0KCkgY29udHJvbDogUmVmZXJlbmNlVGV4dENvbnRyb2xTY2hlbWE7XHJcbiAgICBfdmFsdWU6IGFueTtcclxuICAgIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmNoZWNrQW5kR2V0RGF0YSgpO1xyXG4gICAgfVxyXG4gICAgQElucHV0KCkgc2V0IGRhdGFTb3VyY2UodmFsdWU6IGFueVtdKSB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2UgPSB2YWx1ZTtcclxuICAgIH1cclxuICAgIF9kYXRhU291cmNlOiBhbnlbXTtcclxuICAgIGdldCBkYXRhU291cmNlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlO1xyXG4gICAgfVxyXG4gICAgQE91dHB1dCgpIG9uSW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgZGF0YTogc3RyaW5nID0gJyc7XHJcbiAgICByZWFkeSA9IGZhbHNlO1xyXG5cclxuICAgIGdldCB2YWx1ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgICB9XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3JcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wuX2NvbXBvbmVudCA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5yZWFkeSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jaGVja0FuZEdldERhdGEoKTtcclxuICAgICAgICB0aGlzLm9uSW5pdC5lbWl0KHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNoZWNrQW5kR2V0RGF0YSgpIHtcclxuICAgICAgICB0aGlzLmRhdGEgPSAnJztcclxuICAgICAgICBpZiAoIXRoaXMucmVhZHlcclxuICAgICAgICAgICAgfHwgdGhpcy5fdmFsdWUgPT0gbnVsbFxyXG4gICAgICAgICAgICB8fCAhdGhpcy5jb250cm9sXHJcbiAgICAgICAgICAgIHx8ICghdGhpcy5jb250cm9sLmJhc2VTZXJ2aWNlICYmICF0aGlzLmRhdGFTb3VyY2UpXHJcbiAgICAgICAgKSByZXR1cm47XHJcblxyXG4gICAgICAgIGxldCBpdGVtID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLmJhc2VTZXJ2aWNlICYmIHRoaXMuY29udHJvbC5iYXNlU2VydmljZSBpbnN0YW5jZW9mIEJhc2VTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgIGl0ZW0gPSAoYXdhaXQgdGhpcy5jb250cm9sLmJhc2VTZXJ2aWNlLmdldERldGFpbEJ5RmlsdGVyKFtcclxuICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKHRoaXMuY29udHJvbC52YWx1ZUZpZWxkLCBPcGVyYXRvci5lcXVhbCwgdGhpcy52YWx1ZSlcclxuICAgICAgICAgICAgXSkpLmRhdGE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZGF0YVNvdXJjZSkge1xyXG4gICAgICAgICAgICBpdGVtID0gdGhpcy5kYXRhU291cmNlLmZpbmQoeCA9PiB4W3RoaXMuY29udHJvbC52YWx1ZUZpZWxkXSA9PSB0aGlzLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIFRPRE86IHjhu60gbMO9IGzhuqV5IGThu68gbGnhu4d1IGRldGFpbCBj4bunYSBtYXN0ZXIgZGF0YVxyXG4gICAgICAgICAgICBpdGVtID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpdGVtID09IG51bGwpIHJldHVybjtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLmZ1bmNHZXRMYWJlbCkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmNvbnRyb2wuZnVuY0dldExhYmVsKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhID0gaXRlbVt0aGlzLmNvbnRyb2wuZGlzcGxheUZpZWxkXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|
package/esm2015/components/splash-component/splash-component-v1/splash-component-v1.component.js
CHANGED
|
@@ -182,7 +182,7 @@ SplashComponentV1Component.decorators = [
|
|
|
182
182
|
selector: 'splash-component-v1',
|
|
183
183
|
template: "<div *ngIf=\"!loaded\" class=\"wrp-loader\">\r\n <div class=\"loader\"></div>\r\n</div>\r\n<div *ngIf=\"loaded\" class=\"modules-v1\">\r\n <div class=\"welcome-user\">\r\n <div class=\"profile-image\">\r\n <img class=\"custom-avatar\" [src-fallback]=\"defaultAvatar\" [src]=\"getCurrentUserAvatar()\" />\r\n </div>\r\n\r\n <div class=\"wrp-login\">\r\n <h2>Xin ch\u00E0o!</h2>\r\n <b>{{currentUser.fullName}}</b>\r\n <div *ngIf=\"currentUser\" class=\"login\">\r\n <a (click)=\"goToPersonal()\"><i class=\"far fa-folder-open\"></i>Trang c\u00E1 nh\u00E2n</a>\r\n <a style=\"background: #fabc01;\" (click)=\"logout()\"><i class=\"far fa-arrow-alt-circle-right\"></i>\u0110\u0103ng\r\n xu\u1EA5t</a>\r\n </div>\r\n <div *ngIf=\"!currentUser\" class=\"login\"><a style=\"background: #fabc01;\" (click)=\"login()\"><i\r\n class=\"fas fa-sign-out-alt\"></i>\u0110\u0103ng nh\u1EADp</a></div>\r\n </div>\r\n\r\n <div class=\"clock-wrapper\">\r\n <h1 class=\"clock\">{{currentDate | date:'HH:mm:ss'}}</h1>\r\n <h4 class=\"data-time\">{{getNgayTrongTuan()}}, ng\u00E0y {{currentDate | date:'dd/MM/yyyy'}}</h4>\r\n </div>\r\n </div>\r\n\r\n <div class=\"module-icons\">\r\n <div class=\"img-title\">\r\n <img class=\"tn-custom-logo\" [src]=\"environment.appMetadata.main.logo\"\r\n [alt]=\"environment.appMetadata.main.owner\">\r\n <div class=\"title\">\r\n <h2>{{environment.appMetadata.main.title}}</h2>\r\n <h1>{{environment.appMetadata.main.owner}}</h1>\r\n </div>\r\n </div>\r\n\r\n <div class=\"div1111-wrapper\">\r\n <tn-custom-scrollbar *ngIf=\"!isOnMobile\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </tn-custom-scrollbar>\r\n\r\n <ng-container *ngIf=\"isOnMobile\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #appSwitcher>\r\n <div class=\"div1111\">\r\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\r\n <span>\r\n <a class=\"bg-switcher\" (click)=\"switchApp(item)\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon\"></i>\r\n <span>{{ item.title | translate}}</span>\r\n </a>\r\n </span>\r\n </ng-container>\r\n </div>\r\n</ng-template>",
|
|
184
184
|
providers: [ComponentContextService],
|
|
185
|
-
styles: ["body{background-color:#fff;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.wrp-loader{display:inline-block;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:101}.wrp-loader .loader{-webkit-animation:load4 1.3s linear infinite;animation:load4 1.3s linear infinite;border:2px solid #bcdbf5;border-radius:50%;border-top-color:#3192e1;color:#607d8b;display:block;font-size:10px;height:10px;width:10px}.modules-v1{align-items:center;background-image:url(/assets/images/background-splash.png);background-position:50%;background-repeat:no-repeat;background-size:cover;display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:100}.modules-v1 div>span{border-radius:5px;box-shadow:1px 2px 9px 1px #dadada;display:inline-block;height:120px;margin:10px;min-width:100px;white-space:normal;width:120px}.modules-v1 div>span>a{border-radius:5px;cursor:pointer;display:inline-block;display:flex;flex-direction:column;font-weight:700;height:100%;justify-content:space-evenly;position:relative}.modules-v1 div>span>a,.modules-v1 div>span>a>span{color:#fff;text-align:center;text-decoration:unset;width:100%}.modules-v1 div>span>a>span{display:inline-block;line-height:1.2}.modules-v1 div>span>a>i{font-size:3.5em;width:100%}.modules-v1 .div1111-wrapper{height:420px;margin:0 auto;max-width:700px;overflow:auto}.modules-v1 .div1111-wrapper .div1111{display:flex;flex-wrap:wrap;white-space:nowrap;width:100%}.modules-v1 .div1111-wrapper .div1111 .bg-switcher{background:#fff;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher .app-switcher-item-icon{color:#52abff;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher span{color:#2f70ac;font-weight:500;text-shadow:none;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover{background:#fabc01;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804)}.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover .app-switcher-item-icon,.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover span{color:#2f70ac}.modules-v1 .module-icons{
|
|
185
|
+
styles: ["body{background-color:#fff;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.wrp-loader{display:inline-block;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:101}.wrp-loader .loader{-webkit-animation:load4 1.3s linear infinite;animation:load4 1.3s linear infinite;border:2px solid #bcdbf5;border-radius:50%;border-top-color:#3192e1;color:#607d8b;display:block;font-size:10px;height:10px;width:10px}.modules-v1{align-items:center;background-image:url(/assets/images/background-splash.png);background-position:50%;background-repeat:no-repeat;background-size:cover;display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:100}.modules-v1 div>span{border-radius:5px;box-shadow:1px 2px 9px 1px #dadada;display:inline-block;height:120px;margin:10px;min-width:100px;white-space:normal;width:120px}.modules-v1 div>span>a{border-radius:5px;cursor:pointer;display:inline-block;display:flex;flex-direction:column;font-weight:700;height:100%;justify-content:space-evenly;position:relative}.modules-v1 div>span>a,.modules-v1 div>span>a>span{color:#fff;text-align:center;text-decoration:unset;width:100%}.modules-v1 div>span>a>span{display:inline-block;line-height:1.2}.modules-v1 div>span>a>i{font-size:3.5em;width:100%}.modules-v1 .div1111-wrapper{height:420px;margin:0 auto;max-width:700px;overflow:auto}.modules-v1 .div1111-wrapper .div1111{display:flex;flex-wrap:wrap;white-space:nowrap;width:100%}.modules-v1 .div1111-wrapper .div1111 .bg-switcher{background:#fff;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher .app-switcher-item-icon{color:#52abff;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher span{color:#2f70ac;font-weight:500;text-shadow:none;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover{background:#fabc01;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804)}.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover .app-switcher-item-icon,.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover span{color:#2f70ac}.modules-v1 .module-icons{align-self:stretch;background-color:rgba(249,244,244,.9215686274509803);color:#666;display:flex;flex-direction:column;justify-content:space-evenly;text-align:center;width:65%}.modules-v1 .module-icons h2{color:#271756;font-size:25px;margin-bottom:15px;margin-top:15px}.modules-v1 .module-icons h1{color:#2f70ac;font-size:35px;margin-bottom:0;margin-top:0}.modules-v1 .welcome-user{align-self:stretch;background-color:rgba(47,112,172,.9215686274509803);display:flex;flex-direction:column;text-align:center;width:35%}.modules-v1 .welcome-user .wrp-login{align-items:center;color:#fff;display:flex;flex-direction:column;margin:20px auto auto}.modules-v1 .welcome-user .wrp-login h2{font-size:20px;font-weight:500;margin-bottom:5px;margin-top:0}.modules-v1 .welcome-user .wrp-login b{display:block;font-size:25px;text-transform:uppercase}.modules-v1 .welcome-user .wrp-login .login{display:grid;grid-gap:10px;grid-template-columns:repeat(2,150px);margin-top:30px}.modules-v1 .welcome-user .wrp-login .login a{background:#fff;border-radius:5px;color:#5d5d5d;cursor:pointer;display:inline-block;padding:6px}.modules-v1 .welcome-user .wrp-login .login a i{margin-right:10px}.modules-v1 .welcome-user .profile-image{margin:auto auto 0}.modules-v1 .welcome-user .profile-image img{-o-object-fit:contain;background:#fff;border-radius:50%;box-shadow:1px 1px 11px 6px #2a659b;height:200px;object-fit:contain;width:200px}.modules-v1 .welcome-user .clock-wrapper{color:#fff;margin-bottom:auto;margin-top:auto;text-align:center}.modules-v1 .welcome-user .clock-wrapper h4{font-size:18px;font-weight:500;margin-top:10px}.modules-v1 .welcome-user .clock-wrapper h1{font-size:40px;margin-bottom:0}.modules-v1 .underconstruction{color:red;font-size:4em;font-weight:700;text-transform:uppercase}@media (max-width:1368px){.modules-v1 .clock{font-size:1.5em;margin:0 20px}.modules-v1 .data-time{font-size:1em;margin:10px 0 20px}}@media (max-width:1100px){.modules-v1 .div1111-wrapper .div1111{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr))}}@media (max-width:991px){.modules-v1 .welcome-user .wrp-login .login{grid-template-columns:1fr}}@media (max-width:768px){.modules-v1{flex-direction:column}.modules-v1 .welcome-user{align-items:center;flex-direction:row;height:270px;padding-bottom:87px;width:100%}.modules-v1 .welcome-user .profile-image{margin-bottom:auto}.modules-v1 .welcome-user .profile-image img{height:150px;width:150px}.modules-v1 .welcome-user .wrp-login{margin-top:auto}.modules-v1 .welcome-user .wrp-login .login{margin-top:20px}.modules-v1 .welcome-user .clock-wrapper{padding-right:15px}.modules-v1 .module-icons{height:calc(100% - 270px);width:100%}.modules-v1 .module-icons .img-title{background-image:url(/assets/images/logo.png);background-position:50%;background-repeat:no-repeat;z-index:9}.modules-v1 .module-icons .img-title img{display:none}.modules-v1 .module-icons .img-title .title{background:hsla(0,0%,100%,.9019607843137255);box-shadow:1px 4px 9px 2px #67a0d4;left:20px;padding:20px 10px;position:absolute;right:20px;top:200px;width:calc(100% - 40px)}.modules-v1 .module-icons .img-title .title h2{font-size:30px}.modules-v1 .module-icons .img-title .title h1{font-size:34px}}@media (max-width:640px){.modules-v1 .welcome-user{display:block;padding-top:20px}.modules-v1 .welcome-user .wrp-login{float:right;padding:0 20px 0 0;width:50%}.modules-v1 .welcome-user .wrp-login h2{font-size:14px;margin-bottom:3px}.modules-v1 .welcome-user .wrp-login b{font-size:14px}.modules-v1 .welcome-user .wrp-login .login{display:flex;flex-direction:column;margin-top:10px;padding:0 15px;text-align:left}.modules-v1 .welcome-user .wrp-login .login a{font-size:14px}.modules-v1 .welcome-user .profile-image{float:left;width:50%}.modules-v1 .welcome-user .profile-image img{display:block;height:130px;margin-left:35px;width:130px}.modules-v1 .welcome-user .clock-wrapper{clear:both;padding-right:0;padding-top:10px}.modules-v1 .welcome-user .clock-wrapper h4{font-size:14px;margin-top:5px}.modules-v1 .welcome-user .clock-wrapper h1{font-size:1.3em}.modules-v1 .module-icons .img-title{background-size:80px 80px}.modules-v1 .module-icons .img-title .title{top:230px}.modules-v1 .module-icons .img-title .title h1{font-size:16px}.modules-v1 .module-icons .img-title .title h2{font-size:16px;margin-top:0}.modules-v1 .module-icons .div1111-wrapper{height:360px;margin-top:0}.modules-v1 .module-icons .div1111-wrapper .div1111 .bg-switcher span{font-size:14px}.modules-v1 .module-icons div>span{height:100px;width:100px}.modules-v1 .module-icons div>span>a>i{font-size:2.5em;top:10px}}@media (max-width:425px){.modules-v1 .module-icons .img-title .title{top:225px}.modules-v1 .module-icons .div1111-wrapper .div1111{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr))}}@media (max-width:375px){.modules-v1 .module-icons{height:calc(100% - 250px)}.modules-v1 .module-icons .img-title{background-size:60px 60px}.modules-v1 .module-icons .img-title .title{padding:10px;top:220px}.modules-v1 .module-icons .img-title .title h2{margin-bottom:10px}.modules-v1 .module-icons .img-title .title h1,.modules-v1 .module-icons .img-title .title h2{font-size:14px}.modules-v1 .welcome-user{height:250px}}@media (max-width:360px){.modules-v1 .module-icons{height:calc(100% - 240px)}.modules-v1 .module-icons .img-title{background-size:60px 60px}.modules-v1 .module-icons .img-title .title{left:10px;right:10px;top:205px;width:calc(100% - 20px)}.modules-v1 .welcome-user{height:240px}.modules-v1 .welcome-user .clock-wrapper{padding-top:0}}@-webkit-keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}@keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}"]
|
|
186
186
|
},] }
|
|
187
187
|
];
|
|
188
188
|
SplashComponentV1Component.ctorParameters = () => [
|
package/esm2015/components/splash-component/splash-component-v2/splash-component-v2.component.js
CHANGED
|
@@ -181,7 +181,7 @@ SplashComponentV2Component.decorators = [
|
|
|
181
181
|
selector: 'splash-component-v2',
|
|
182
182
|
template: "<div *ngIf=\"!loaded\" class=\"wrp-loader\">\r\n <div class=\"loader\"></div>\r\n</div>\r\n<div *ngIf=\"loaded\" class=\"modules-v2\">\r\n <div class=\"welcome-user\">\r\n <div class=\"profile-image\">\r\n <div class=\"tn-full-name\">{{currentUser.fullName}}</div>\r\n <img class=\"custom-avatar\" [src-fallback]=\"defaultAvatar\" [src]=\"getCurrentUserAvatar()\" />\r\n <div *ngIf=\"currentUser\" class=\"login\">\r\n <a class=\"tn-icon-signout\" title=\"\u0110\u0103ng xu\u1EA5t\" (click)=\"logout()\">\r\n <i class=\"pi pi-sign-out\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"module-icons\">\r\n <div class=\"img-title\">\r\n <img class=\"tn-custom-logo\" [src]=\"environment.appMetadata.main.logo\"\r\n [alt]=\"environment.appMetadata.main.owner\">\r\n <div class=\"title\">\r\n <h2>{{environment.appMetadata.main.title}}</h2>\r\n <h1>{{environment.appMetadata.main.owner}}</h1>\r\n </div>\r\n <div *ngIf=\"!currentUser\" class=\"login\">\r\n <a class=\"tn-icon-signin\" title=\"\u0110\u0103ng nh\u1EADp\" (click)=\"login()\">\r\n <i class=\"pi pi-sign-in\"></i>\u0110\u0103ng nh\u1EADp\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"div1111-wrapper\">\r\n <tn-custom-scrollbar *ngIf=\"!isOnMobile\" [config]=\"{'suppressScrollY': true}\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </tn-custom-scrollbar>\r\n\r\n <ng-container *ngIf=\"isOnMobile\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"clock-wrapper\">\r\n <h1 class=\"clock\">{{currentDate | date:'HH:mm:ss'}}</h1>\r\n <h4 class=\"data-time\">{{getNgayTrongTuan()}}, ng\u00E0y {{currentDate | date:'dd/MM/yyyy'}}</h4>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #appSwitcher>\r\n <div class=\"div1111\">\r\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\r\n <span>\r\n <a class=\"bg-switcher\" (click)=\"switchApp(item)\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon\"></i>\r\n <span>{{ item.title | translate}}</span>\r\n </a>\r\n </span>\r\n </ng-container>\r\n </div>\r\n</ng-template>",
|
|
183
183
|
providers: [ComponentContextService],
|
|
184
|
-
styles: ["body{background-color:#fff;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.wrp-loader{display:inline-block;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:101}.wrp-loader .loader{-webkit-animation:load4 1.3s linear infinite;animation:load4 1.3s linear infinite;border:2px solid #bcdbf5;border-radius:50%;border-top-color:#3192e1;color:#607d8b;display:block;font-size:10px;height:10px;width:10px}.modules-v2{align-items:center;background-image:url(/assets/images/background-splash.png);background-position:50%;background-repeat:no-repeat;background-size:cover;display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:100}.modules-v2 div>span{border-radius:5px;box-shadow:1px 2px 9px 1px #dfd1d1;display:inline-block;height:120px;margin:10px;min-width:100px;white-space:normal;width:120px}.modules-v2 div>span>a{border-radius:5px;cursor:pointer;display:inline-block;display:flex;flex-direction:column;font-weight:700;height:100%;justify-content:space-evenly;position:relative}.modules-v2 div>span>a,.modules-v2 div>span>a>span{color:#fff;text-align:center;text-decoration:unset;width:100%}.modules-v2 div>span>a>span{display:inline-block;line-height:1.2;padding:0 5px}.modules-v2 div>span>a>i{font-size:3.5em;width:100%}.modules-v2 .module-icons{background:hsla(0,0%,100%,.9490196078431372);border-radius:10px;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804);color:#666;display:flex;flex-direction:column;justify-content:center;padding:40px 60px;text-align:center}.modules-v2 .module-icons h2{color:#271756;font-size:25px;margin-bottom:15px;margin-top:15px}.modules-v2 .module-icons h1{color:#2f70ac;font-size:35px;margin-bottom:0;margin-top:0}.modules-v2 .module-icons .img-title{margin-bottom:80px}.modules-v2 .module-icons .img-title img.tn-custom-logo{margin-bottom:30px}.modules-v2 .module-icons .img-title a.tn-icon-signin{align-items:center;background:#002c6c;border-radius:5px;color:#fff;cursor:pointer;display:inline-flex;justify-content:center;padding:10px}.modules-v2 .module-icons .img-title a.tn-icon-signin i{margin-right:5px}.modules-v2 .module-icons .div1111-wrapper{margin:0 auto 80px}.modules-v2 .module-icons .div1111-wrapper .div1111{display:flex;flex-wrap:wrap;white-space:nowrap;width:100%}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher{background:#fff;transition:.3s}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher .app-switcher-item-icon{color:#2f70ac;transition:.3s}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher span{color:#2f70ac;font-weight:500;text-shadow:none;transition:.3s}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher:hover{background:#002c6c;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804)}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher:hover .app-switcher-item-icon,.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher:hover span{color:#fff}.modules-v2 .module-icons .clock-wrapper{color:#fff;margin-bottom:auto;margin-top:auto;text-align:center}.modules-v2 .module-icons .clock-wrapper h4{color:#2f70ac;font-size:20px;font-weight:500;margin-bottom:0;margin-top:10px}.modules-v2 .module-icons .clock-wrapper h1{font-size:40px;margin-bottom:0}.modules-v2 .welcome-user{background:hsla(0,0%,100%,.9019607843137255);border-radius:10px;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804);color:#333;display:flex;padding:10px;position:absolute;right:20px;text-align:center;top:20px}.modules-v2 .welcome-user .wrp-login{align-items:center;color:#333;display:flex;flex-direction:column;margin:auto}.modules-v2 .welcome-user .wrp-login h2{font-size:20px;font-weight:500;margin-bottom:5px;margin-top:0}.modules-v2 .profile-image{align-items:center;display:flex;justify-content:center}.modules-v2 .profile-image .tn-full-name{font-size:18px;margin-right:10px}.modules-v2 .profile-image img{-o-object-fit:contain;background:#fff;border-radius:50%;height:40px;margin-right:10px;object-fit:contain;width:40px}.modules-v2 .profile-image .login{display
|
|
184
|
+
styles: ["body{background-color:#fff;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.wrp-loader{display:inline-block;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:101}.wrp-loader .loader{-webkit-animation:load4 1.3s linear infinite;animation:load4 1.3s linear infinite;border:2px solid #bcdbf5;border-radius:50%;border-top-color:#3192e1;color:#607d8b;display:block;font-size:10px;height:10px;width:10px}.modules-v2{align-items:center;background-image:url(/assets/images/background-splash.png);background-position:50%;background-repeat:no-repeat;background-size:cover;display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:100}.modules-v2 div>span{border-radius:5px;box-shadow:1px 2px 9px 1px #dfd1d1;display:inline-block;height:120px;margin:10px;min-width:100px;white-space:normal;width:120px}.modules-v2 div>span>a{border-radius:5px;cursor:pointer;display:inline-block;display:flex;flex-direction:column;font-weight:700;height:100%;justify-content:space-evenly;position:relative}.modules-v2 div>span>a,.modules-v2 div>span>a>span{color:#fff;text-align:center;text-decoration:unset;width:100%}.modules-v2 div>span>a>span{display:inline-block;line-height:1.2;padding:0 5px}.modules-v2 div>span>a>i{font-size:3.5em;width:100%}.modules-v2 .module-icons{background:hsla(0,0%,100%,.9490196078431372);border-radius:10px;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804);color:#666;display:flex;flex-direction:column;justify-content:center;padding:40px 60px;text-align:center}.modules-v2 .module-icons h2{color:#271756;font-size:25px;margin-bottom:15px;margin-top:15px}.modules-v2 .module-icons h1{color:#2f70ac;font-size:35px;margin-bottom:0;margin-top:0}.modules-v2 .module-icons .img-title{margin-bottom:80px}.modules-v2 .module-icons .img-title img.tn-custom-logo{margin-bottom:30px}.modules-v2 .module-icons .img-title a.tn-icon-signin{align-items:center;background:#002c6c;border-radius:5px;color:#fff;cursor:pointer;display:inline-flex;justify-content:center;padding:10px}.modules-v2 .module-icons .img-title a.tn-icon-signin i{margin-right:5px}.modules-v2 .module-icons .div1111-wrapper{margin:0 auto 80px}.modules-v2 .module-icons .div1111-wrapper .div1111{display:flex;flex-wrap:wrap;white-space:nowrap;width:100%}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher{background:#fff;transition:.3s}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher .app-switcher-item-icon{color:#2f70ac;transition:.3s}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher span{color:#2f70ac;font-weight:500;text-shadow:none;transition:.3s}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher:hover{background:#002c6c;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804)}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher:hover .app-switcher-item-icon,.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher:hover span{color:#fff}.modules-v2 .module-icons .clock-wrapper{color:#fff;margin-bottom:auto;margin-top:auto;text-align:center}.modules-v2 .module-icons .clock-wrapper h4{color:#2f70ac;font-size:20px;font-weight:500;margin-bottom:0;margin-top:10px}.modules-v2 .module-icons .clock-wrapper h1{font-size:40px;margin-bottom:0}.modules-v2 .welcome-user{background:hsla(0,0%,100%,.9019607843137255);border-radius:10px;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804);color:#333;display:flex;padding:10px;position:absolute;right:20px;text-align:center;top:20px}.modules-v2 .welcome-user .wrp-login{align-items:center;color:#333;display:flex;flex-direction:column;margin:auto}.modules-v2 .welcome-user .wrp-login h2{font-size:20px;font-weight:500;margin-bottom:5px;margin-top:0}.modules-v2 .profile-image{align-items:center;display:flex;justify-content:center}.modules-v2 .profile-image .tn-full-name{font-size:18px;margin-right:10px}.modules-v2 .profile-image img{-o-object-fit:contain;background:#fff;border-radius:50%;height:40px;margin-right:10px;object-fit:contain;width:40px}.modules-v2 .profile-image .login{display:grid;grid-gap:10px}.modules-v2 .profile-image .login a.tn-icon-signout{align-items:center;background:#002c6c;border-radius:50%;cursor:pointer;display:flex;height:40px;justify-content:center;width:40px}.modules-v2 .profile-image .login a.tn-icon-signout i{color:#edc16f;font-size:16px}@media (max-width:1368px){.modules-v2 .clock{font-size:1.5em;margin:0 20px}.modules-v2 .data-time{font-size:1em;margin:10px 0 20px}}@media (max-width:1200px){.modules-v2 .welcome-user{right:10px;top:10px}}@media (max-width:768px){.modules-v2 .module-icons .img-title .title h2{font-size:28px}.modules-v2 .module-icons .img-title .title h1{font-size:32px}}@media (max-width:640px){.modules-v2 .welcome-user{justify-content:flex-end;right:10px;top:10px;width:calc(100% - 20px)}.modules-v2 .module-icons{margin:10px;padding:20px}.modules-v2 .module-icons .img-title{margin-bottom:40px}.modules-v2 .module-icons .img-title .title h1{font-size:19px}.modules-v2 .module-icons .img-title .title h2{font-size:16px;margin-bottom:10px;margin-top:0}.modules-v2 .module-icons .div1111-wrapper{margin-bottom:50px}.modules-v2 .module-icons .div1111-wrapper .div1111{display:grid;grid-template-columns:repeat(3,minmax(100px,1fr))}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher span{font-size:14px}.modules-v2 .module-icons div>span{height:100px;width:100px}.modules-v2 .module-icons div>span>a>i{font-size:3em;top:15px}.modules-v2 .module-icons .clock-wrapper h4{font-size:16px;margin-top:5px}.modules-v2 .module-icons .clock-wrapper h1{font-size:30px}}@media (max-width:375px){.modules-v2 .module-icons .img-title{margin-bottom:0}.modules-v2 .module-icons .img-title img.tn-custom-logo{margin-bottom:10px;width:100px}.modules-v2 .module-icons .img-title .title{padding:0}.modules-v2 .module-icons .img-title .title h2{font-size:14px;margin-bottom:10px}.modules-v2 .module-icons .div1111-wrapper{margin-bottom:0}.modules-v2 .module-icons .div1111-wrapper .div1111{display:flex;justify-content:center}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher span{font-size:14px}}@-webkit-keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}@keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}"]
|
|
185
185
|
},] }
|
|
186
186
|
];
|
|
187
187
|
SplashComponentV2Component.ctorParameters = () => [
|
|
@@ -92,6 +92,8 @@ export class UserPickerComponent extends ComponentBase {
|
|
|
92
92
|
new EntityPickerColumn({
|
|
93
93
|
label: 'Chức vụ',
|
|
94
94
|
code: 'lstTenChucVu',
|
|
95
|
+
// code: 'maChucVu',
|
|
96
|
+
// baseService: this._dm_ChucVuService,
|
|
95
97
|
templateFilter: this.filterChucVuRef,
|
|
96
98
|
width: '160px'
|
|
97
99
|
}),
|
|
@@ -569,4 +571,4 @@ UserPickerComponent.propDecorators = {
|
|
|
569
571
|
onBlur: [{ type: Output, args: ['onBlur',] }],
|
|
570
572
|
onReady: [{ type: Output, args: ['onReady',] }]
|
|
571
573
|
};
|
|
572
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdXNlci1waWNrZXIvdXNlci1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFFSCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLFVBQVUsRUFDVixRQUFRLEVBQ1IsU0FBUyxFQUNULHVCQUF1QixFQUMxQixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBZ0I5RSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsYUFBYTtJQXlEbEQsWUFDSSxTQUFtQixFQUNaLGNBQTZCLEVBQzVC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QUNMLEtBQUs7NkJBRUwsS0FBSztxQkFTTCxNQUFNO3VCQUNOLE1BQU0sU0FBQyxVQUFVO3lCQUNqQixNQUFNLFNBQUMsWUFBWTt3QkFDbkIsTUFBTSxTQUFDLFdBQVc7c0JBQ2xCLE1BQU0sU0FBQyxTQUFTO3FCQUNoQixNQUFNLFNBQUMsUUFBUTtzQkFDZixNQUFNLFNBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBmb3J3YXJkUmVmLFxyXG4gICAgSW5qZWN0b3IsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBTZWxlY3RJdGVtIH0gZnJvbSAndG4tY3VzdG9tLXByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYmFzZS9jb21wb25lbnQtYmFzZSc7XHJcbmltcG9ydCB7XHJcbiAgICBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hLFxyXG4gICAgQ3J1ZExpc3RTZXR0aW5nLFxyXG4gICAgRHJvcGRvd25Db250cm9sU2NoZW1hLFxyXG4gICAgRHJvcGRvd25PcHRpb25zLFxyXG4gICAgRW50aXR5UGlja2VyQ29sdW1uLFxyXG4gICAgRW50aXR5UGlja2VyQ29udHJvbFNjaGVtYSxcclxuICAgIEhlaWdodFR5cGUsXHJcbiAgICBPcGVyYXRvcixcclxuICAgIFBvcHVwU2l6ZSxcclxuICAgIFVzZXJQaWNrZXJDb250cm9sU2NoZW1hXHJcbn0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uLy4uL21vZGVscy9ncmlkLWluZm8nO1xyXG5pbXBvcnQgeyBEbUNodWNWdVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kbS1jaHVjdnUuc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJWNVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91c2VyLXY1LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBhcHBlbmREZWZhdWx0RmlsdGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29tbW9uJztcclxuaW1wb3J0IHsgQWR2YW5jZURhdGFFbnRpdHlQaWNrZXIgfSBmcm9tICcuLi9lbnRpdHktcGlja2VyL21vZGVsL2FkdmFuY2UtZGF0YSc7XHJcbmltcG9ydCB7IFVzZXJQaWNrZXJCb3hDb21wb25lbnQgfSBmcm9tICcuL3VzZXItcGlja2VyLWJveC91c2VyLXBpY2tlci1ib3guY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd1c2VyLXBpY2tlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdXNlci1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdXNlci1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFVzZXJQaWNrZXJDb21wb25lbnQpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgQ29tcG9uZW50Q29udGV4dFNlcnZpY2VcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFVzZXJQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgICBAVmlld0NoaWxkKCdmaWx0ZXJDaHVjVnVSZWYnLCB7IHN0YXRpYzogdHJ1ZSB9KSBmaWx0ZXJDaHVjVnVSZWY6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBvbkNoYW5nZUJhc2U6IEZ1bmN0aW9uO1xyXG4gICAgb25Ub3VjaGVkOiBGdW5jdGlvbjtcclxuXHJcbiAgICBASW5wdXQoKSBjb250cm9sOiBVc2VyUGlja2VyQ29udHJvbFNjaGVtYTtcclxuICAgIEBJbnB1dCgpIHBvcHVwU2l6ZTogUG9wdXBTaXplID0gbmV3IFBvcHVwU2l6ZSh7XHJcbiAgICAgICAgd2lkdGg6IDExMDAsXHJcbiAgICAgICAgaGVpZ2h0OiA5MDAsXHJcbiAgICAgICAgbWF4aW1pemU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgQElucHV0KCkgbXVsdGlwbGUgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICBfcmVhZE9ubHlWYWx1ZXM6IHN0cmluZ1tdO1xyXG4gICAgQElucHV0KCkgc2V0IHJlYWRPbmx5VmFsdWVzKHZhbHVlOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHRoaXMuX3JlYWRPbmx5VmFsdWVzID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy51cGRhdGVGdW5jQ2hlY2tSZWFkT25seUl0ZW0oKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVJlYWRPbmx5SXRlbSgpO1xyXG4gICAgfVxyXG4gICAgZ2V0IHJlYWRPbmx5VmFsdWVzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9yZWFkT25seVZhbHVlcztcclxuICAgIH1cclxuXHJcbiAgICBAT3V0cHV0KCkgb25Jbml0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCdvblNlbGVjdCcpIG9uU2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgnb25VblNlbGVjdCcpIG9uVW5TZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCdvbkNoYW5nZWQnKSBvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCdvbkZvY3VzJykgb25Gb2N1czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoJ29uQmx1cicpIG9uQmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoJ29uUmVhZHknKSBvblJlYWR5OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIGNvbnRyb2xQaWNrZXI6IEF1dG9Db21wbGV0ZVBpY2tlckNvbnRyb2xTY2hlbWE7XHJcbiAgICBzZXR0aW5nUGlja2VyOiBDcnVkTGlzdFNldHRpbmcgPSBuZXcgQ3J1ZExpc3RTZXR0aW5nKCk7XHJcbiAgICBhZHZhbmNlRGF0YVBpY2tlcjogQWR2YW5jZURhdGFFbnRpdHlQaWNrZXIgPSBuZXcgQWR2YW5jZURhdGFFbnRpdHlQaWNrZXIoKTtcclxuXHJcbiAgICB2YWx1ZTogYW55O1xyXG4gICAgZnVuY1JldHVyblZhbHVlOiAodmFsdWUpID0+IHt9ID0gdmFsdWUgPT4gdmFsdWU7XHJcbiAgICBzZWxlY3RlZFJvd0RhdGE6IGFueTtcclxuICAgIHNlbGVjdGVkVmFsdWU6IGFueTtcclxuICAgIHNlbGVjdGVkVmFsdWVPYmplY3Q6IGFueTtcclxuICAgIGRhdGFTb3VyY2U6IGFueVtdID0gW107XHJcbiAgICBmdW5jQ2hlY2tSZWFkT25seUl0ZW06IChpdGVtOiBhbnkpID0+IHZvaWQ7XHJcblxyXG4gICAgZmllbGRTZWFyY2hUZXh0OiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIHJlc3VsdHM6IGFueVtdID0gW107XHJcblxyXG4gICAgc2hvd0Zvcm1QaWNrZXIgPSBmYWxzZTtcclxuICAgIGRpcnR5ID0gZmFsc2U7XHJcblxyXG4gICAgdG9vbHRpcCA9ICcnO1xyXG4gICAgaGFzVmFsdWUgPSBmYWxzZTtcclxuICAgIHNlYXJjaFNjaGVtYTogYW55ID0ge307XHJcbiAgICBzZWFyY2hEYXRhOiBhbnkgPSB7fTtcclxuXHJcbiAgICBwcml2YXRlIGdldEZpbHRlck9uU2VhcmNoPzogRnVuY3Rpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwdWJsaWMgX3VzZXJWNVNlcnZpY2U6IFVzZXJWNVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9kbV9DaHVjVnVTZXJ2aWNlOiBEbUNodWNWdVNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9sLl9jb21wb25lbnQgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMuY29udHJvbFBpY2tlciA9IG5ldyBFbnRpdHlQaWNrZXJDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgLi4udGhpcy5jb250cm9sLFxyXG4gICAgICAgICAgICBmaWVsZDogJ2FycklkTmd1b2lEdW5nJyxcclxuICAgICAgICAgICAgbGFiZWw6ICdOZ8aw4budaSBkw7luZycsXHJcbiAgICAgICAgICAgIHRpdGxlOiAnQ2jhu41uIG5nxrDhu51pIGTDuW5nJyxcclxuICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3VzZXJWNVNlcnZpY2UsXHJcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgICBkaXNwbGF5RmllbGQ6IHRoaXMuY29udHJvbC5nZXREaXNwbGF5TmFtZSA/ICdkaXNwbGF5TmFtZScgOiAnZnVsbE5hbWVOZXcnLFxyXG4gICAgICAgICAgICBmaWVsZFBsdXM6IHRoaXMuY29udHJvbC5maWVsZFBsdXMgPyBgJHt0aGlzLmNvbnRyb2wuZmllbGRQbHVzfSxtYUNodWNWdWAgOiAnbWFDaHVjVnUnLFxyXG4gICAgICAgICAgICB2YWx1ZUZpZWxkOiB0aGlzLmNvbnRyb2wudmFsdWVGaWVsZCxcclxuICAgICAgICAgICAgZGVmYXVsdEZpbHRlcnM6IHRoaXMuY29udHJvbC5kZWZhdWx0RmlsdGVycyxcclxuICAgICAgICAgICAgbXVsdGlwbGU6IHRoaXMuY29udHJvbC5tdWx0aXBsZSxcclxuICAgICAgICAgICAgZnVuY0dldExhYmVsOiAoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbC5mdW5jR2V0TGFiZWwpIHJldHVybiB0aGlzLmNvbnRyb2wuZnVuY0dldExhYmVsKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZGlzcGxheU5hbWUgPz8gdGhpcy5fdXNlclY1U2VydmljZS5nZXRVc2VyTmFtZShpdGVtKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gcGFnZVNpemU6IHRoaXMuY29udHJvbC5wYWdlU2l6ZSxcclxuICAgICAgICAgICAgLy8gZmllbGRQbHVzOiAnaG8sdGVuJyxcclxuICAgICAgICAgICAgLy8gZmllbGRTZWFyY2hUZXh0OiBbJ2hvJywgJ3RlbiddLFxyXG4gICAgICAgICAgICAvLyBhZnRlckdldERhdGE6IHRoaXMuZ2VuZXJhdGVIb1RlbixcclxuICAgICAgICAgICAgLy8gYWZ0ZXJHZXREYXRhVW5QaWNrZWQ6IHRoaXMuZ2VuZXJhdGVIb1RlbixcclxuICAgICAgICAgICAgLy8gYWZ0ZXJHZXREYXRhUGlja2VkOiB0aGlzLmdlbmVyYXRlSG9UZW4sXHJcbiAgICAgICAgICAgIGNvbHVtbnM6IFtcclxuICAgICAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnVMOgaSBraG/huqNuJyxcclxuICAgICAgICAgICAgICAgICAgICBjb2RlOiAndXNlck5hbWUnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcclxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcclxuICAgICAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMHB4J1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0jhu40gdsOgIHTDqm4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvZGU6ICdmdWxsTmFtZU5ldycsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTYwcHgnXHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnSMOybSB0aMawJyxcclxuICAgICAgICAgICAgICAgICAgICBjb2RlOiAnZW1haWwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcclxuICAgICAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzE2MHB4J1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0No4bupYyB24bulJyxcclxuICAgICAgICAgICAgICAgICAgICBjb2RlOiAnbHN0VGVuQ2h1Y1Z1JyxcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZUZpbHRlcjogdGhpcy5maWx0ZXJDaHVjVnVSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxNjBweCdcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdHaeG6o25nIHZpw6puJyxcclxuICAgICAgICAgICAgICAgICAgICBjb2RlOiAnaXNHaWFuZ1ZpZW4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICc5MHB4J1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0NodXnDqm4gdmnDqm4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvZGU6ICdpc0NodXllblZpZW4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICc5MHB4J1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgbWRXaWR0aDogMTJcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmZpZWxkU2VhcmNoVGV4dCA9IFsuLi50aGlzLmNvbnRyb2xQaWNrZXIuZmllbGRTZWFyY2hUZXh0XTtcclxuICAgICAgICBpZiAoIXRoaXMuZmllbGRTZWFyY2hUZXh0LnNvbWUoaXRlbSA9PiBpdGVtID09IHRoaXMuY29udHJvbFBpY2tlci5kaXNwbGF5RmllbGQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmllbGRTZWFyY2hUZXh0LnB1c2godGhpcy5jb250cm9sUGlja2VyLmRpc3BsYXlGaWVsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wucmV0dXJuVHlwZSA9PSAndmFsdWUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZnVuY1JldHVyblZhbHVlID0gKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250cm9sLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1hcChpdGVtID0+IGl0ZW1bdGhpcy5jb250cm9sLnZhbHVlRmllbGRdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZF07XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgdGhpcy5mdW5jUmV0dXJuVmFsdWUgPSB2YWx1ZSA9PiB2YWx1ZTtcclxuICAgICAgICB0aGlzLmJ1aWxkRmlsdGVyS2V5d29yZCgpO1xyXG4gICAgICAgIHRoaXMuYnVpbGRTZXR0aW5nRW50aXR5UGlja2VyKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVTY2hlbWFTZWFyY2goKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUZ1bmNDaGVja1JlYWRPbmx5SXRlbSgpO1xyXG4gICAgICAgIHRoaXMub25SZWFkeS5lbWl0KCk7XHJcbiAgICAgICAgdGhpcy5vbkluaXQuZW1pdCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVGdW5jQ2hlY2tSZWFkT25seUl0ZW0oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHlWYWx1ZXMgJiYgdGhpcy5yZWFkT25seVZhbHVlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5mdW5jQ2hlY2tSZWFkT25seUl0ZW0gPSB0aGlzLl9mdW5jQ2hlY2tSZWFkT25seUl0ZW07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZ1bmNDaGVja1JlYWRPbmx5SXRlbSA9IChpdGVtOiBhbnkpID0+IHsgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY3JlYXRlU2NoZW1hU2VhcmNoKCkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoU2NoZW1hLmlkQ2h1Y1Z1cyA9IG5ldyBEcm9wZG93bkNvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICBmaWVsZDogJ2lkQ2h1Y1Z1cycsXHJcbiAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0No4buNbiBjaOG7qWMgduG7pScsXHJcbiAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9kbV9DaHVjVnVTZXJ2aWNlLFxyXG4gICAgICAgICAgICBzb3J0RmllbGQ6ICdzb1RodVR1JyxcclxuICAgICAgICAgICAgbG9hZE9uSW5pdDogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkRmlsdGVyS2V5d29yZCgpIHtcclxuICAgICAgICBpZiAodGhpcy5maWVsZFNlYXJjaFRleHQubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWx0ZXJPblNlYXJjaCA9IHZhbHVlID0+IHRoaXMubmV3RmlsdGVyKHRoaXMuY29udHJvbFBpY2tlci5kaXNwbGF5RmllbGQsIE9wZXJhdG9yLmNvbnRhaW4sIHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmlsdGVyT25TZWFyY2ggPSB2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgRmlsdGVyKHtcclxuICAgICAgICAgICAgICAgICAgICBsb2dpYzogJ29yJyxcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbXVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkU2VhcmNoIG9mIHRoaXMuZmllbGRTZWFyY2hUZXh0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcihmaWVsZFNlYXJjaCwgT3BlcmF0b3IuY29udGFpbiwgdmFsdWUpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkU2V0dGluZ0VudGl0eVBpY2tlcigpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuY29scyA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci50aXRsZSA9ICcnO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIucGFnZVNpemUpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLnBhZ2VTZXR0aW5nLnBhZ2VTaXplID0gdGhpcy5jb250cm9sUGlja2VyLnBhZ2VTaXplO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuYmFzZVNlcnZpY2UgPSB0aGlzLmNvbnRyb2xQaWNrZXIuYmFzZVNlcnZpY2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLmhlaWdodFR5cGUgPSBIZWlnaHRUeXBlLmR5bmFtaWM7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLmhpZGRlbkNoZWNrYm94ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuc2V0dGluZ0tleSA9ICd1c2VyUGlja2VyJztcclxuICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuaGlkZGVuU2V0dGluZ1dvcmtmbG93ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuaGlkZGVuU2V0dGluZ1Blcm1pc3Npb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci5maWVsZFNlYXJjaFRleHQgPSB0aGlzLmNvbnRyb2xQaWNrZXIuZmllbGRTZWFyY2hUZXh0O1xyXG4gICAgICAgIHRoaXMuY29udHJvbFBpY2tlci5jb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbHVtbi5pc0Rpc3BsYXkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjb2x1bW4uZGF0YVR5cGUgPT0gJ2N1c3RvbScpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuY29scy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGNvbHVtbi5jb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogY29sdW1uLmNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoY29sdW1uLmxhYmVsKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IGNvbHVtbi5iYXNlU2VydmljZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVGaWVsZDogY29sdW1uLnZhbHVlRmllbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogY29sdW1uLmRpc3BsYXlGaWVsZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRQbHVzOiBjb2x1bW4uZmllbGRQbHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0RmllbGQ6IGNvbHVtbi5zb3J0RmllbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnREaXI6IGNvbHVtbi5zb3J0RGlyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jR2V0TGFiZWw6IGNvbHVtbi5mdW5jR2V0TGFiZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IGNvbHVtbi5kYXRhU291cmNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cENvZGU6IGNvbHVtbi5ncm91cENvZGVcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci5jb2xzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jb2x1bW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBjb2x1bW4uY29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChjb2x1bW4ubGFiZWwpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmFkdmFuY2VEYXRhUGlja2VyLmZpZWxkcyA9IHRoaXMuZ2V0RmllbGRzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTOG6pXkgdW5pb24gY+G7p2E6IHNlbGVjdGVkRmllbGQsIGZpZWxkUGx1cywgZGlzcGxheSBmaWVsZHMgY8OzIHRyb25nIHRhYmxlLlxyXG4gICAgZ2V0RmllbGRzKCkge1xyXG4gICAgICAgIGNvbnN0IGFyckZpZWxkOiBzdHJpbmdbXSA9IFt0aGlzLmNvbnRyb2xQaWNrZXIuZGlzcGxheUZpZWxkLCAnaWQnXTtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQgJiYgdGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQgIT0gJ2lkJykge1xyXG4gICAgICAgICAgICBhcnJGaWVsZC5wdXNoKHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIuZmllbGRQbHVzKSB7XHJcbiAgICAgICAgICAgIGFyckZpZWxkLnB1c2goLi4udGhpcy5jb250cm9sUGlja2VyLmZpZWxkUGx1cy5zcGxpdCgnLCcpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGFyckRpc3BsYXlGaWVsZCA9IHRoaXMuY29udHJvbFBpY2tlci5jb2x1bW5zLmZpbHRlcih4ID0+IHguaXNEaXNwbGF5ID09IHRydWUgJiYgIXgubm90SW5GaWVsZHMgJiYgeC5kYXRhVHlwZSAhPSAnY3VzdG9tJylcclxuICAgICAgICAgICAgLm1hcCh4ID0+IHguY29kZSk7XHJcblxyXG4gICAgICAgIHRoaXMuX2NvbW1vblNlcnZpY2UuYWRkRGlzdGluY3QoYXJyRGlzcGxheUZpZWxkLCBhcnJGaWVsZCk7XHJcbiAgICAgICAgcmV0dXJuIGFyckZpZWxkLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RHJvcGRvd25PcHRpb25zKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgRHJvcGRvd25PcHRpb25zKHtcclxuICAgICAgICAgICAgZGlzcGxheUZpZWxkOiB0aGlzLmNvbnRyb2xQaWNrZXIuZGlzcGxheUZpZWxkLFxyXG4gICAgICAgICAgICB2YWx1ZUZpZWxkOiB0aGlzLmNvbnRyb2xQaWNrZXIudmFsdWVGaWVsZCxcclxuICAgICAgICAgICAgZmllbGRQbHVzOiB0aGlzLmNvbnRyb2xQaWNrZXIuZmllbGRQbHVzLFxyXG4gICAgICAgICAgICBmdW5jR2V0TGFiZWw6IHRoaXMuY29udHJvbFBpY2tlci5mdW5jR2V0TGFiZWwsXHJcbiAgICAgICAgICAgIHBsdXNVcmw6IHRoaXMuY29udHJvbFBpY2tlci5wbHVzVXJsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2hvd1BpY2tGb3JtKCkge1xyXG4gICAgICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dGb3JtUGlja2VyID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXREYXRhKGtleVdvcmQpIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJzID0gW107XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbFBpY2tlci5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcih0aGlzLmNvbnRyb2xQaWNrZXIudmFsdWVGaWVsZCwgT3BlcmF0b3Iubm90SW4sIHRoaXMudmFsdWUpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcih0aGlzLmNvbnRyb2xQaWNrZXIudmFsdWVGaWVsZCwgT3BlcmF0b3Iubm90RXF1YWwsIHRoaXMudmFsdWUpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYXdhaXQgYXBwZW5kRGVmYXVsdEZpbHRlcihmaWx0ZXJzLCB0aGlzLmNvbnRyb2wuZGVmYXVsdEZpbHRlcnMpO1xyXG4gICAgICAgIGlmIChrZXlXb3JkICYmIGtleVdvcmQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5nZXRGaWx0ZXJPblNlYXJjaChrZXlXb3JkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGRhdGFTb3VyY2UgPSBhd2FpdCB0aGlzLmNvbnRyb2xQaWNrZXIuYmFzZVNlcnZpY2UuZ2V0RGF0YURyb3Bkb3duQnlGaWx0ZXIoXHJcbiAgICAgICAgICAgIGZpbHRlcnMsIHRoaXMuZ2V0RHJvcGRvd25PcHRpb25zKClcclxuICAgICAgICApO1xyXG4gICAgICAgIGF3YWl0IHRoaXMucmVTdHJ1Y3R1cmVEYXRhU291cmNlKGRhdGFTb3VyY2UpO1xyXG4gICAgICAgIHRoaXMucmVzdWx0cyA9IHRoaXMuZGF0YVNvdXJjZTtcclxuICAgICAgICAvLyBSZXR1cm4gxJHhu4MgbeG7mXQgc+G7kSBuxqFpIGtow6FjIGTDuW5nLCBrIHJlbW92ZVxyXG4gICAgICAgIHJldHVybiB0aGlzLnJlc3VsdHM7XHJcbiAgICB9XHJcblxyXG4gICAgc2VhcmNoKGV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5nZXREYXRhKGV2ZW50LnF1ZXJ5KTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhclZhbHVlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0ID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlc3VsdHMgPSBbXTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICB0aGlzLmhhc1ZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vblVuU2VsZWN0LmVtaXQoe1xyXG4gICAgICAgICAgICBpdGVtOiB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QsXHJcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkVmFsdWVcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmZpcmVDaGFuZ2VFdmVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVJvd1NlbGVjdChpdGVtKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93RGF0YSA9IGl0ZW07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU2VsZWN0IGl0ZW0gY+G7p2EgYXV0b2NvbXBsZXRlXHJcbiAgICBoYW5kbGVTZWxlY3QoaXRlbSkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSgpO1xyXG4gICAgICAgIGNvbnN0IGV2dCA9IHtcclxuICAgICAgICAgICAgaXRlbSxcclxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuc2VsZWN0ZWRWYWx1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KGV2dCk7XHJcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlRXZlbnQoKTtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLmNhbGxCYWNrICYmIHRoaXMuY29udHJvbFBpY2tlci5jYWxsQmFjay5zZWxlY3QpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sUGlja2VyLmNhbGxCYWNrLnNlbGVjdChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQuG7jyBzZWxlY3QgaXRlbSBj4bunYSBhdXRvY29tcGxldGVcclxuICAgIGhhbmRsZVVuU2VsZWN0KCRldmVudCkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSgpO1xyXG4gICAgICAgIGNvbnN0IGV2dCA9IHtcclxuICAgICAgICAgICAgaXRlbTogJGV2ZW50LFxyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5zZWxlY3RlZFZhbHVlXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLm9uVW5TZWxlY3QuZW1pdChldnQpO1xyXG4gICAgICAgIHRoaXMuZmlyZUNoYW5nZUV2ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlRm9jdXMoZXZ0KSB7XHJcbiAgICAgICAgaWYgKGV2dC50YXJnZXQudmFsdWUpIHtcclxuICAgICAgICAgICAgZXZ0LnRhcmdldC5zZWxlY3QoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vbkZvY3VzLmVtaXQoZXZ0KTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVCbHVyKCRldmVudCkge1xyXG4gICAgICAgIHRoaXMub25CbHVyLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVLZXlVcChldnQpIHtcclxuICAgICAgICBsZXQgaGlkZVN1Z2dlc3Npb25zID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICBoaWRlU3VnZ2Vzc2lvbnMgPSBldnQudGFyZ2V0LnBhcmVudE5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLmNoaWxkRWxlbWVudENvdW50ID09IDE7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgJiYgdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICAgICYmIGV2dC5rZXlDb2RlID09IDQwICYmIGhpZGVTdWdnZXNzaW9ucykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGhpZGVTdWdnZXNzaW9ucyA9IGV2dC50YXJnZXQucGFyZW50Tm9kZS5jaGlsZEVsZW1lbnRDb3VudCA9PSAxO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGV2dC50YXJnZXQudmFsdWUgPT0gJycgJiYgaGlkZVN1Z2dlc3Npb25zICYmIGV2dC5rZXlDb2RlICE9IDQwICYmIGV2dC5rZXlDb2RlICE9IDM4KSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzdWx0cyA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBIYW5kbGUgc2VsZWN0IGl0ZW0gdHJvbmcgZW50aXR5IHBpY2tlciBib3ggKEtow7RuZyBj4bqnbiBlbWl0IGNoYW5nZSlcclxuICAgIGhhbmRsZVNlbGVjdEVudGl0eShldnQpIHtcclxuICAgICAgICB0aGlzLm9uU2VsZWN0LmVtaXQoZXZ0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBIYW5kbGUgdW5zZWxlY3QgaXRlbSB0cm9uZyBlbnRpdHkgcGlja2VyIGJveCAoS2jDtG5nIGPhuqduIGVtaXQgY2hhbmdlKVxyXG4gICAgaGFuZGxlVW5TZWxlY3RFbnRpdHkoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5vblVuU2VsZWN0LmVtaXQoZXZ0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBIYW5kbGUgY2hhbmdlIGl0ZW0gdHJvbmcgZW50aXR5IHBpY2tlciBib3hcclxuICAgIGhhbmRsZUNoYW5nZUVudGl0eShldnQpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBldnQudmFsdWU7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQdXJlVmFsdWUoKTtcclxuICAgICAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmZpcmVDaGFuZ2VFdmVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIF9mdW5jQ2hlY2tSZWFkT25seUl0ZW0oaXRlbTogYW55KSB7XHJcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHlWYWx1ZXMuc29tZShxID0+IHEgPT0gaXRlbS52YWx1ZVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZF0pKSB7XHJcbiAgICAgICAgICAgIGl0ZW0uX2Rpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUmVhZE9ubHlJdGVtKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wubXVsdGlwbGUgJiYgdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mdW5jQ2hlY2tSZWFkT25seUl0ZW0oaXRlbSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVTZWxlY3RlZFZhbHVlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUucHVzaChpdGVtLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZnVuY0NoZWNrUmVhZE9ubHlJdGVtKGl0ZW0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdC52YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0ZVB1cmVWYWx1ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVB1cmVWYWx1ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnNlbGVjdGVkVmFsdWUubWFwKGl0ZW0gPT4gaXRlbVt0aGlzLmNvbnRyb2xQaWNrZXIudmFsdWVGaWVsZF0pO1xyXG4gICAgICAgICAgICB0aGlzLmhhc1ZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYXNWYWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZVt0aGlzLmNvbnRyb2xQaWNrZXIudmFsdWVGaWVsZF07XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhc1ZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRWYWx1ZVJldHVybigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mdW5jUmV0dXJuVmFsdWUodGhpcy5zZWxlY3RlZFZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBmaXJlQ2hhbmdlRXZlbnQoKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVSZXR1cm4gPSB0aGlzLmdldFZhbHVlUmV0dXJuKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZUJhc2UodmFsdWVSZXR1cm4pO1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2VkLmVtaXQoe1xyXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWVSZXR1cm5cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBoYW5kbGVIaWRlKGV2dCkge1xyXG4gICAgICAgIHRoaXMuc2hvd0Zvcm1QaWNrZXIgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5kaXJ0eSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGF0YVNvdXJjZSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZSA9IGF3YWl0IHRoaXMuY29udHJvbFBpY2tlci5iYXNlU2VydmljZS5nZXREYXRhRHJvcGRvd25CeUZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQsIE9wZXJhdG9yLmluLCB0aGlzLnZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdLCB0aGlzLmdldERyb3Bkb3duT3B0aW9ucygpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlU3RydWN0dXJlRGF0YVNvdXJjZShkYXRhU291cmNlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSB0aGlzLmRhdGFTb3VyY2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGF0YVNvdXJjZSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gYXdhaXQgdGhpcy5jb250cm9sUGlja2VyLmJhc2VTZXJ2aWNlLmdldERhdGFEcm9wZG93bkJ5RmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcih0aGlzLmNvbnRyb2xQaWNrZXIudmFsdWVGaWVsZCwgT3BlcmF0b3IuZXF1YWwsIHRoaXMudmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIHRoaXMuZ2V0RHJvcGRvd25PcHRpb25zKClcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZVN0cnVjdHVyZURhdGFTb3VyY2UoZGF0YVNvdXJjZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhU291cmNlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSB0aGlzLmRhdGFTb3VyY2VbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sdGlwID0gdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0LmxhYmVsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrU3VibWl0QnV0dG9uKGV2dCwgdXNlclBpY2tlckJveDogVXNlclBpY2tlckJveENvbXBvbmVudCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVIaWRlKGV2dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRSb3dEYXRhKSB7XHJcbiAgICAgICAgICAgIHVzZXJQaWNrZXJCb3hcclxuICAgICAgICAgICAgICAgICYmIHVzZXJQaWNrZXJCb3guZW50aXR5UGlja2VyQm94XHJcbiAgICAgICAgICAgICAgICAmJiB1c2VyUGlja2VyQm94LmVudGl0eVBpY2tlckJveC5oYW5kbGVQaWNrKHRoaXMuc2VsZWN0ZWRSb3dEYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm1QaWNrZXIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyByZVN0cnVjdHVyZURhdGFTb3VyY2Uoc291cmNlczogYW55W10pIHtcclxuICAgICAgICBpZiAoc291cmNlcyAhPSBudWxsICYmIHNvdXJjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAvLyBM4bqleSB0aMOqbSB0aMO0bmcgdGluIGNo4bupYyB24bulIMSR4buDIGhp4buDbiB0aOG7i1xyXG4gICAgICAgICAgICBjb25zdCBhcnIgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBzb3VyY2VzKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5yZVN0cnVjdHVyZUl0ZW1PYmplY3QoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICBhcnIucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlID0gYXJyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlU3RydWN0dXJlSXRlbU9iamVjdChpdGVtKTogU2VsZWN0SXRlbSB7XHJcbiAgICAgICAgY29uc3QgdGVtcDogU2VsZWN0SXRlbSA9IHsgdmFsdWU6IGl0ZW0gfTtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLmZ1bmNHZXRMYWJlbCkge1xyXG4gICAgICAgICAgICB0ZW1wLmxhYmVsID0gdGhpcy5jb250cm9sUGlja2VyLmZ1bmNHZXRMYWJlbChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRlbXAubGFiZWwgPSBpdGVtLm1hQ2h1Y1Z1ID8gYCR7aXRlbS5tYUNodWNWdX0uICR7aXRlbVt0aGlzLmNvbnRyb2xQaWNrZXIuZGlzcGxheUZpZWxkXX1gIDogaXRlbVt0aGlzLmNvbnRyb2xQaWNrZXIuZGlzcGxheUZpZWxkXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGVtcC52YWx1ZS5fZHJvcGRvd252YWx1ZSA9IHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkO1xyXG4gICAgICAgIHJldHVybiB0ZW1wO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHdyaXRlVmFsdWUob2JqOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmhhc1ZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbFBpY2tlci5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICBpZiAob2JqICE9IG51bGwgJiYgb2JqLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcnM6IEZpbHRlcltdID0gW107XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQsIE9wZXJhdG9yLmluLCBvYmopKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGFwcGVuZERlZmF1bHRGaWx0ZXIoZmlsdGVycywgdGhpcy5jb250cm9sLmRlZmF1bHRGaWx0ZXJzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbFBpY2tlci5iYXNlU2VydmljZS5nZXREYXRhRHJvcGRvd25CeUZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RHJvcGRvd25PcHRpb25zKClcclxuICAgICAgICAgICAgICAgICkudGhlbihhc3luYyByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVTdHJ1Y3R1cmVEYXRhU291cmNlKHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzID0gdGhpcy5kYXRhU291cmNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCA9IHRoaXMuZGF0YVNvdXJjZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzID0gW107XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAob2JqICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbFBpY2tlci5iYXNlU2VydmljZS5nZXREYXRhRHJvcGRvd25CeUZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICBbdGhpcy5uZXdGaWx0ZXIodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQsIE9wZXJhdG9yLmVxdWFsLCBvYmopXSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldERyb3Bkb3duT3B0aW9ucygpXHJcbiAgICAgICAgICAgICAgICApLnRoZW4oYXN5bmMgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZVN0cnVjdHVyZURhdGFTb3VyY2UocmVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzID0gdGhpcy5kYXRhU291cmNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSB0aGlzLmRhdGFTb3VyY2VbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QubGFiZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIuY2FsbEJhY2sgJiYgdGhpcy5jb250cm9sUGlja2VyLmNhbGxCYWNrLnNlbGVjdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9sUGlja2VyLmNhbGxCYWNrLnNlbGVjdCh0aGlzLnNlbGVjdGVkVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlQmFzZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
574
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdXNlci1waWNrZXIvdXNlci1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFFSCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLFVBQVUsRUFDVixRQUFRLEVBQ1IsU0FBUyxFQUNULHVCQUF1QixFQUMxQixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBZ0I5RSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsYUFBYTtJQXlEbEQsWUFDSSxTQUFtQixFQUNaLGNBQTZCLEVBQzVC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QUFLO3dCQUNMLEtBQUs7dUJBS0wsS0FBSzt1QkFDTCxLQUFLOzZCQUVMLEtBQUs7cUJBU0wsTUFBTTt1QkFDTixNQUFNLFNBQUMsVUFBVTt5QkFDakIsTUFBTSxTQUFDLFlBQVk7d0JBQ25CLE1BQU0sU0FBQyxXQUFXO3NCQUNsQixNQUFNLFNBQUMsU0FBUztxQkFDaEIsTUFBTSxTQUFDLFFBQVE7c0JBQ2YsTUFBTSxTQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgZm9yd2FyZFJlZixcclxuICAgIEluamVjdG9yLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBUZW1wbGF0ZVJlZixcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgU2VsZWN0SXRlbSB9IGZyb20gJ3RuLWN1c3RvbS1wcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UvY29tcG9uZW50LWJhc2UnO1xyXG5pbXBvcnQge1xyXG4gICAgQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSxcclxuICAgIENydWRMaXN0U2V0dGluZyxcclxuICAgIERyb3Bkb3duQ29udHJvbFNjaGVtYSxcclxuICAgIERyb3Bkb3duT3B0aW9ucyxcclxuICAgIEVudGl0eVBpY2tlckNvbHVtbixcclxuICAgIEVudGl0eVBpY2tlckNvbnRyb2xTY2hlbWEsXHJcbiAgICBIZWlnaHRUeXBlLFxyXG4gICAgT3BlcmF0b3IsXHJcbiAgICBQb3B1cFNpemUsXHJcbiAgICBVc2VyUGlja2VyQ29udHJvbFNjaGVtYVxyXG59IGZyb20gJy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgRG1DaHVjVnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZG0tY2h1Y3Z1LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyVjVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXNlci12NS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgYXBwZW5kRGVmYXVsdEZpbHRlciB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbW1vbic7XHJcbmltcG9ydCB7IEFkdmFuY2VEYXRhRW50aXR5UGlja2VyIH0gZnJvbSAnLi4vZW50aXR5LXBpY2tlci9tb2RlbC9hZHZhbmNlLWRhdGEnO1xyXG5pbXBvcnQgeyBVc2VyUGlja2VyQm94Q29tcG9uZW50IH0gZnJvbSAnLi91c2VyLXBpY2tlci1ib3gvdXNlci1waWNrZXItYm94LmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndXNlci1waWNrZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VzZXItcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3VzZXItcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBVc2VyUGlja2VyQ29tcG9uZW50KSxcclxuICAgICAgICAgICAgbXVsdGk6IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIENvbXBvbmVudENvbnRleHRTZXJ2aWNlXHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVc2VyUGlja2VyQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gICAgQFZpZXdDaGlsZCgnZmlsdGVyQ2h1Y1Z1UmVmJywgeyBzdGF0aWM6IHRydWUgfSkgZmlsdGVyQ2h1Y1Z1UmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gICAgb25DaGFuZ2VCYXNlOiBGdW5jdGlvbjtcclxuICAgIG9uVG91Y2hlZDogRnVuY3Rpb247XHJcblxyXG4gICAgQElucHV0KCkgY29udHJvbDogVXNlclBpY2tlckNvbnRyb2xTY2hlbWE7XHJcbiAgICBASW5wdXQoKSBwb3B1cFNpemU6IFBvcHVwU2l6ZSA9IG5ldyBQb3B1cFNpemUoe1xyXG4gICAgICAgIHdpZHRoOiAxMTAwLFxyXG4gICAgICAgIGhlaWdodDogOTAwLFxyXG4gICAgICAgIG1heGltaXplOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgX3JlYWRPbmx5VmFsdWVzOiBzdHJpbmdbXTtcclxuICAgIEBJbnB1dCgpIHNldCByZWFkT25seVZhbHVlcyh2YWx1ZTogc3RyaW5nW10pIHtcclxuICAgICAgICB0aGlzLl9yZWFkT25seVZhbHVlcyA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRnVuY0NoZWNrUmVhZE9ubHlJdGVtKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVSZWFkT25seUl0ZW0oKTtcclxuICAgIH1cclxuICAgIGdldCByZWFkT25seVZhbHVlcygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlWYWx1ZXM7XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpIG9uSW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgnb25TZWxlY3QnKSBvblNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoJ29uVW5TZWxlY3QnKSBvblVuU2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgnb25DaGFuZ2VkJykgb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgnb25Gb2N1cycpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCdvbkJsdXInKSBvbkJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCdvblJlYWR5Jykgb25SZWFkeTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICBjb250cm9sUGlja2VyOiBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hO1xyXG4gICAgc2V0dGluZ1BpY2tlcjogQ3J1ZExpc3RTZXR0aW5nID0gbmV3IENydWRMaXN0U2V0dGluZygpO1xyXG4gICAgYWR2YW5jZURhdGFQaWNrZXI6IEFkdmFuY2VEYXRhRW50aXR5UGlja2VyID0gbmV3IEFkdmFuY2VEYXRhRW50aXR5UGlja2VyKCk7XHJcblxyXG4gICAgdmFsdWU6IGFueTtcclxuICAgIGZ1bmNSZXR1cm5WYWx1ZTogKHZhbHVlKSA9PiB7fSA9IHZhbHVlID0+IHZhbHVlO1xyXG4gICAgc2VsZWN0ZWRSb3dEYXRhOiBhbnk7XHJcbiAgICBzZWxlY3RlZFZhbHVlOiBhbnk7XHJcbiAgICBzZWxlY3RlZFZhbHVlT2JqZWN0OiBhbnk7XHJcbiAgICBkYXRhU291cmNlOiBhbnlbXSA9IFtdO1xyXG4gICAgZnVuY0NoZWNrUmVhZE9ubHlJdGVtOiAoaXRlbTogYW55KSA9PiB2b2lkO1xyXG5cclxuICAgIGZpZWxkU2VhcmNoVGV4dDogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICByZXN1bHRzOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIHNob3dGb3JtUGlja2VyID0gZmFsc2U7XHJcbiAgICBkaXJ0eSA9IGZhbHNlO1xyXG5cclxuICAgIHRvb2x0aXAgPSAnJztcclxuICAgIGhhc1ZhbHVlID0gZmFsc2U7XHJcbiAgICBzZWFyY2hTY2hlbWE6IGFueSA9IHt9O1xyXG4gICAgc2VhcmNoRGF0YTogYW55ID0ge307XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRGaWx0ZXJPblNlYXJjaD86IEZ1bmN0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHVibGljIF91c2VyVjVTZXJ2aWNlOiBVc2VyVjVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX3RyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfZG1fQ2h1Y1Z1U2VydmljZTogRG1DaHVjVnVTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuY29udHJvbC5fY29tcG9uZW50ID0gdGhpcztcclxuICAgICAgICB0aGlzLmNvbnRyb2xQaWNrZXIgPSBuZXcgRW50aXR5UGlja2VyQ29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuY29udHJvbCxcclxuICAgICAgICAgICAgZmllbGQ6ICdhcnJJZE5ndW9pRHVuZycsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnTmfGsOG7nWkgZMO5bmcnLFxyXG4gICAgICAgICAgICB0aXRsZTogJ0No4buNbiBuZ8aw4budaSBkw7luZycsXHJcbiAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl91c2VyVjVTZXJ2aWNlLFxyXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgICAgZGlzcGxheUZpZWxkOiB0aGlzLmNvbnRyb2wuZ2V0RGlzcGxheU5hbWUgPyAnZGlzcGxheU5hbWUnIDogJ2Z1bGxOYW1lTmV3JyxcclxuICAgICAgICAgICAgZmllbGRQbHVzOiB0aGlzLmNvbnRyb2wuZmllbGRQbHVzID8gYCR7dGhpcy5jb250cm9sLmZpZWxkUGx1c30sbWFDaHVjVnVgIDogJ21hQ2h1Y1Z1JyxcclxuICAgICAgICAgICAgdmFsdWVGaWVsZDogdGhpcy5jb250cm9sLnZhbHVlRmllbGQsXHJcbiAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXJzOiB0aGlzLmNvbnRyb2wuZGVmYXVsdEZpbHRlcnMsXHJcbiAgICAgICAgICAgIG11bHRpcGxlOiB0aGlzLmNvbnRyb2wubXVsdGlwbGUsXHJcbiAgICAgICAgICAgIGZ1bmNHZXRMYWJlbDogKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wuZnVuY0dldExhYmVsKSByZXR1cm4gdGhpcy5jb250cm9sLmZ1bmNHZXRMYWJlbChpdGVtKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmRpc3BsYXlOYW1lID8/IHRoaXMuX3VzZXJWNVNlcnZpY2UuZ2V0VXNlck5hbWUoaXRlbSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIHBhZ2VTaXplOiB0aGlzLmNvbnRyb2wucGFnZVNpemUsXHJcbiAgICAgICAgICAgIC8vIGZpZWxkUGx1czogJ2hvLHRlbicsXHJcbiAgICAgICAgICAgIC8vIGZpZWxkU2VhcmNoVGV4dDogWydobycsICd0ZW4nXSxcclxuICAgICAgICAgICAgLy8gYWZ0ZXJHZXREYXRhOiB0aGlzLmdlbmVyYXRlSG9UZW4sXHJcbiAgICAgICAgICAgIC8vIGFmdGVyR2V0RGF0YVVuUGlja2VkOiB0aGlzLmdlbmVyYXRlSG9UZW4sXHJcbiAgICAgICAgICAgIC8vIGFmdGVyR2V0RGF0YVBpY2tlZDogdGhpcy5nZW5lcmF0ZUhvVGVuLFxyXG4gICAgICAgICAgICBjb2x1bW5zOiBbXHJcbiAgICAgICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ1TDoGkga2hv4bqjbicsXHJcbiAgICAgICAgICAgICAgICAgICAgY29kZTogJ3VzZXJOYW1lJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXHJcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXHJcbiAgICAgICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDBweCdcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdI4buNIHbDoCB0w6puJyxcclxuICAgICAgICAgICAgICAgICAgICBjb2RlOiAnZnVsbE5hbWVOZXcnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcclxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcclxuICAgICAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzE2MHB4J1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0jDsm0gdGjGsCcsXHJcbiAgICAgICAgICAgICAgICAgICAgY29kZTogJ2VtYWlsJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxNjBweCdcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdDaOG7qWMgduG7pScsXHJcbiAgICAgICAgICAgICAgICAgICAgY29kZTogJ2xzdFRlbkNodWNWdScsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29kZTogJ21hQ2h1Y1Z1JyxcclxuICAgICAgICAgICAgICAgICAgICAvLyBiYXNlU2VydmljZTogdGhpcy5fZG1fQ2h1Y1Z1U2VydmljZSxcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZUZpbHRlcjogdGhpcy5maWx0ZXJDaHVjVnVSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxNjBweCdcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdHaeG6o25nIHZpw6puJyxcclxuICAgICAgICAgICAgICAgICAgICBjb2RlOiAnaXNHaWFuZ1ZpZW4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICc5MHB4J1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0NodXnDqm4gdmnDqm4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvZGU6ICdpc0NodXllblZpZW4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICc5MHB4J1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgbWRXaWR0aDogMTJcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmZpZWxkU2VhcmNoVGV4dCA9IFsuLi50aGlzLmNvbnRyb2xQaWNrZXIuZmllbGRTZWFyY2hUZXh0XTtcclxuICAgICAgICBpZiAoIXRoaXMuZmllbGRTZWFyY2hUZXh0LnNvbWUoaXRlbSA9PiBpdGVtID09IHRoaXMuY29udHJvbFBpY2tlci5kaXNwbGF5RmllbGQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmllbGRTZWFyY2hUZXh0LnB1c2godGhpcy5jb250cm9sUGlja2VyLmRpc3BsYXlGaWVsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wucmV0dXJuVHlwZSA9PSAndmFsdWUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZnVuY1JldHVyblZhbHVlID0gKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250cm9sLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1hcChpdGVtID0+IGl0ZW1bdGhpcy5jb250cm9sLnZhbHVlRmllbGRdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZF07XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgdGhpcy5mdW5jUmV0dXJuVmFsdWUgPSB2YWx1ZSA9PiB2YWx1ZTtcclxuICAgICAgICB0aGlzLmJ1aWxkRmlsdGVyS2V5d29yZCgpO1xyXG4gICAgICAgIHRoaXMuYnVpbGRTZXR0aW5nRW50aXR5UGlja2VyKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVTY2hlbWFTZWFyY2goKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUZ1bmNDaGVja1JlYWRPbmx5SXRlbSgpO1xyXG4gICAgICAgIHRoaXMub25SZWFkeS5lbWl0KCk7XHJcbiAgICAgICAgdGhpcy5vbkluaXQuZW1pdCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVGdW5jQ2hlY2tSZWFkT25seUl0ZW0oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHlWYWx1ZXMgJiYgdGhpcy5yZWFkT25seVZhbHVlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5mdW5jQ2hlY2tSZWFkT25seUl0ZW0gPSB0aGlzLl9mdW5jQ2hlY2tSZWFkT25seUl0ZW07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZ1bmNDaGVja1JlYWRPbmx5SXRlbSA9IChpdGVtOiBhbnkpID0+IHsgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY3JlYXRlU2NoZW1hU2VhcmNoKCkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoU2NoZW1hLmlkQ2h1Y1Z1cyA9IG5ldyBEcm9wZG93bkNvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICBmaWVsZDogJ2lkQ2h1Y1Z1cycsXHJcbiAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0No4buNbiBjaOG7qWMgduG7pScsXHJcbiAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9kbV9DaHVjVnVTZXJ2aWNlLFxyXG4gICAgICAgICAgICBzb3J0RmllbGQ6ICdzb1RodVR1JyxcclxuICAgICAgICAgICAgbG9hZE9uSW5pdDogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkRmlsdGVyS2V5d29yZCgpIHtcclxuICAgICAgICBpZiAodGhpcy5maWVsZFNlYXJjaFRleHQubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWx0ZXJPblNlYXJjaCA9IHZhbHVlID0+IHRoaXMubmV3RmlsdGVyKHRoaXMuY29udHJvbFBpY2tlci5kaXNwbGF5RmllbGQsIE9wZXJhdG9yLmNvbnRhaW4sIHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmlsdGVyT25TZWFyY2ggPSB2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgRmlsdGVyKHtcclxuICAgICAgICAgICAgICAgICAgICBsb2dpYzogJ29yJyxcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbXVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkU2VhcmNoIG9mIHRoaXMuZmllbGRTZWFyY2hUZXh0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcihmaWVsZFNlYXJjaCwgT3BlcmF0b3IuY29udGFpbiwgdmFsdWUpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkU2V0dGluZ0VudGl0eVBpY2tlcigpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuY29scyA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci50aXRsZSA9ICcnO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIucGFnZVNpemUpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLnBhZ2VTZXR0aW5nLnBhZ2VTaXplID0gdGhpcy5jb250cm9sUGlja2VyLnBhZ2VTaXplO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuYmFzZVNlcnZpY2UgPSB0aGlzLmNvbnRyb2xQaWNrZXIuYmFzZVNlcnZpY2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLmhlaWdodFR5cGUgPSBIZWlnaHRUeXBlLmR5bmFtaWM7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nUGlja2VyLmhpZGRlbkNoZWNrYm94ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuc2V0dGluZ0tleSA9ICd1c2VyUGlja2VyJztcclxuICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuaGlkZGVuU2V0dGluZ1dvcmtmbG93ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuaGlkZGVuU2V0dGluZ1Blcm1pc3Npb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci5maWVsZFNlYXJjaFRleHQgPSB0aGlzLmNvbnRyb2xQaWNrZXIuZmllbGRTZWFyY2hUZXh0O1xyXG4gICAgICAgIHRoaXMuY29udHJvbFBpY2tlci5jb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbHVtbi5pc0Rpc3BsYXkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjb2x1bW4uZGF0YVR5cGUgPT0gJ2N1c3RvbScpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmdQaWNrZXIuY29scy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGNvbHVtbi5jb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogY29sdW1uLmNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoY29sdW1uLmxhYmVsKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IGNvbHVtbi5iYXNlU2VydmljZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVGaWVsZDogY29sdW1uLnZhbHVlRmllbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogY29sdW1uLmRpc3BsYXlGaWVsZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRQbHVzOiBjb2x1bW4uZmllbGRQbHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0RmllbGQ6IGNvbHVtbi5zb3J0RmllbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnREaXI6IGNvbHVtbi5zb3J0RGlyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jR2V0TGFiZWw6IGNvbHVtbi5mdW5jR2V0TGFiZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IGNvbHVtbi5kYXRhU291cmNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cENvZGU6IGNvbHVtbi5ncm91cENvZGVcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ1BpY2tlci5jb2xzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jb2x1bW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBjb2x1bW4uY29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChjb2x1bW4ubGFiZWwpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmFkdmFuY2VEYXRhUGlja2VyLmZpZWxkcyA9IHRoaXMuZ2V0RmllbGRzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTOG6pXkgdW5pb24gY+G7p2E6IHNlbGVjdGVkRmllbGQsIGZpZWxkUGx1cywgZGlzcGxheSBmaWVsZHMgY8OzIHRyb25nIHRhYmxlLlxyXG4gICAgZ2V0RmllbGRzKCkge1xyXG4gICAgICAgIGNvbnN0IGFyckZpZWxkOiBzdHJpbmdbXSA9IFt0aGlzLmNvbnRyb2xQaWNrZXIuZGlzcGxheUZpZWxkLCAnaWQnXTtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQgJiYgdGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQgIT0gJ2lkJykge1xyXG4gICAgICAgICAgICBhcnJGaWVsZC5wdXNoKHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIuZmllbGRQbHVzKSB7XHJcbiAgICAgICAgICAgIGFyckZpZWxkLnB1c2goLi4udGhpcy5jb250cm9sUGlja2VyLmZpZWxkUGx1cy5zcGxpdCgnLCcpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGFyckRpc3BsYXlGaWVsZCA9IHRoaXMuY29udHJvbFBpY2tlci5jb2x1bW5zLmZpbHRlcih4ID0+IHguaXNEaXNwbGF5ID09IHRydWUgJiYgIXgubm90SW5GaWVsZHMgJiYgeC5kYXRhVHlwZSAhPSAnY3VzdG9tJylcclxuICAgICAgICAgICAgLm1hcCh4ID0+IHguY29kZSk7XHJcblxyXG4gICAgICAgIHRoaXMuX2NvbW1vblNlcnZpY2UuYWRkRGlzdGluY3QoYXJyRGlzcGxheUZpZWxkLCBhcnJGaWVsZCk7XHJcbiAgICAgICAgcmV0dXJuIGFyckZpZWxkLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RHJvcGRvd25PcHRpb25zKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgRHJvcGRvd25PcHRpb25zKHtcclxuICAgICAgICAgICAgZGlzcGxheUZpZWxkOiB0aGlzLmNvbnRyb2xQaWNrZXIuZGlzcGxheUZpZWxkLFxyXG4gICAgICAgICAgICB2YWx1ZUZpZWxkOiB0aGlzLmNvbnRyb2xQaWNrZXIudmFsdWVGaWVsZCxcclxuICAgICAgICAgICAgZmllbGRQbHVzOiB0aGlzLmNvbnRyb2xQaWNrZXIuZmllbGRQbHVzLFxyXG4gICAgICAgICAgICBmdW5jR2V0TGFiZWw6IHRoaXMuY29udHJvbFBpY2tlci5mdW5jR2V0TGFiZWwsXHJcbiAgICAgICAgICAgIHBsdXNVcmw6IHRoaXMuY29udHJvbFBpY2tlci5wbHVzVXJsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2hvd1BpY2tGb3JtKCkge1xyXG4gICAgICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dGb3JtUGlja2VyID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXREYXRhKGtleVdvcmQpIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJzID0gW107XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbFBpY2tlci5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcih0aGlzLmNvbnRyb2xQaWNrZXIudmFsdWVGaWVsZCwgT3BlcmF0b3Iubm90SW4sIHRoaXMudmFsdWUpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcih0aGlzLmNvbnRyb2xQaWNrZXIudmFsdWVGaWVsZCwgT3BlcmF0b3Iubm90RXF1YWwsIHRoaXMudmFsdWUpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYXdhaXQgYXBwZW5kRGVmYXVsdEZpbHRlcihmaWx0ZXJzLCB0aGlzLmNvbnRyb2wuZGVmYXVsdEZpbHRlcnMpO1xyXG4gICAgICAgIGlmIChrZXlXb3JkICYmIGtleVdvcmQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5nZXRGaWx0ZXJPblNlYXJjaChrZXlXb3JkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGRhdGFTb3VyY2UgPSBhd2FpdCB0aGlzLmNvbnRyb2xQaWNrZXIuYmFzZVNlcnZpY2UuZ2V0RGF0YURyb3Bkb3duQnlGaWx0ZXIoXHJcbiAgICAgICAgICAgIGZpbHRlcnMsIHRoaXMuZ2V0RHJvcGRvd25PcHRpb25zKClcclxuICAgICAgICApO1xyXG4gICAgICAgIGF3YWl0IHRoaXMucmVTdHJ1Y3R1cmVEYXRhU291cmNlKGRhdGFTb3VyY2UpO1xyXG4gICAgICAgIHRoaXMucmVzdWx0cyA9IHRoaXMuZGF0YVNvdXJjZTtcclxuICAgICAgICAvLyBSZXR1cm4gxJHhu4MgbeG7mXQgc+G7kSBuxqFpIGtow6FjIGTDuW5nLCBrIHJlbW92ZVxyXG4gICAgICAgIHJldHVybiB0aGlzLnJlc3VsdHM7XHJcbiAgICB9XHJcblxyXG4gICAgc2VhcmNoKGV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5nZXREYXRhKGV2ZW50LnF1ZXJ5KTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhclZhbHVlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0ID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlc3VsdHMgPSBbXTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICB0aGlzLmhhc1ZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vblVuU2VsZWN0LmVtaXQoe1xyXG4gICAgICAgICAgICBpdGVtOiB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QsXHJcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkVmFsdWVcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmZpcmVDaGFuZ2VFdmVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVJvd1NlbGVjdChpdGVtKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93RGF0YSA9IGl0ZW07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU2VsZWN0IGl0ZW0gY+G7p2EgYXV0b2NvbXBsZXRlXHJcbiAgICBoYW5kbGVTZWxlY3QoaXRlbSkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSgpO1xyXG4gICAgICAgIGNvbnN0IGV2dCA9IHtcclxuICAgICAgICAgICAgaXRlbSxcclxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuc2VsZWN0ZWRWYWx1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KGV2dCk7XHJcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlRXZlbnQoKTtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLmNhbGxCYWNrICYmIHRoaXMuY29udHJvbFBpY2tlci5jYWxsQmFjay5zZWxlY3QpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sUGlja2VyLmNhbGxCYWNrLnNlbGVjdChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQuG7jyBzZWxlY3QgaXRlbSBj4bunYSBhdXRvY29tcGxldGVcclxuICAgIGhhbmRsZVVuU2VsZWN0KCRldmVudCkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSgpO1xyXG4gICAgICAgIGNvbnN0IGV2dCA9IHtcclxuICAgICAgICAgICAgaXRlbTogJGV2ZW50LFxyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5zZWxlY3RlZFZhbHVlXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLm9uVW5TZWxlY3QuZW1pdChldnQpO1xyXG4gICAgICAgIHRoaXMuZmlyZUNoYW5nZUV2ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlRm9jdXMoZXZ0KSB7XHJcbiAgICAgICAgaWYgKGV2dC50YXJnZXQudmFsdWUpIHtcclxuICAgICAgICAgICAgZXZ0LnRhcmdldC5zZWxlY3QoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vbkZvY3VzLmVtaXQoZXZ0KTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVCbHVyKCRldmVudCkge1xyXG4gICAgICAgIHRoaXMub25CbHVyLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVLZXlVcChldnQpIHtcclxuICAgICAgICBsZXQgaGlkZVN1Z2dlc3Npb25zID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICBoaWRlU3VnZ2Vzc2lvbnMgPSBldnQudGFyZ2V0LnBhcmVudE5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLmNoaWxkRWxlbWVudENvdW50ID09IDE7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgJiYgdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICAgICYmIGV2dC5rZXlDb2RlID09IDQwICYmIGhpZGVTdWdnZXNzaW9ucykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGhpZGVTdWdnZXNzaW9ucyA9IGV2dC50YXJnZXQucGFyZW50Tm9kZS5jaGlsZEVsZW1lbnRDb3VudCA9PSAxO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGV2dC50YXJnZXQudmFsdWUgPT0gJycgJiYgaGlkZVN1Z2dlc3Npb25zICYmIGV2dC5rZXlDb2RlICE9IDQwICYmIGV2dC5rZXlDb2RlICE9IDM4KSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzdWx0cyA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBIYW5kbGUgc2VsZWN0IGl0ZW0gdHJvbmcgZW50aXR5IHBpY2tlciBib3ggKEtow7RuZyBj4bqnbiBlbWl0IGNoYW5nZSlcclxuICAgIGhhbmRsZVNlbGVjdEVudGl0eShldnQpIHtcclxuICAgICAgICB0aGlzLm9uU2VsZWN0LmVtaXQoZXZ0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBIYW5kbGUgdW5zZWxlY3QgaXRlbSB0cm9uZyBlbnRpdHkgcGlja2VyIGJveCAoS2jDtG5nIGPhuqduIGVtaXQgY2hhbmdlKVxyXG4gICAgaGFuZGxlVW5TZWxlY3RFbnRpdHkoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5vblVuU2VsZWN0LmVtaXQoZXZ0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBIYW5kbGUgY2hhbmdlIGl0ZW0gdHJvbmcgZW50aXR5IHBpY2tlciBib3hcclxuICAgIGhhbmRsZUNoYW5nZUVudGl0eShldnQpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBldnQudmFsdWU7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQdXJlVmFsdWUoKTtcclxuICAgICAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmZpcmVDaGFuZ2VFdmVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIF9mdW5jQ2hlY2tSZWFkT25seUl0ZW0oaXRlbTogYW55KSB7XHJcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHlWYWx1ZXMuc29tZShxID0+IHEgPT0gaXRlbS52YWx1ZVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZF0pKSB7XHJcbiAgICAgICAgICAgIGl0ZW0uX2Rpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUmVhZE9ubHlJdGVtKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wubXVsdGlwbGUgJiYgdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mdW5jQ2hlY2tSZWFkT25seUl0ZW0oaXRlbSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVTZWxlY3RlZFZhbHVlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUucHVzaChpdGVtLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZnVuY0NoZWNrUmVhZE9ubHlJdGVtKGl0ZW0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdC52YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0ZVB1cmVWYWx1ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVB1cmVWYWx1ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnNlbGVjdGVkVmFsdWUubWFwKGl0ZW0gPT4gaXRlbVt0aGlzLmNvbnRyb2xQaWNrZXIudmFsdWVGaWVsZF0pO1xyXG4gICAgICAgICAgICB0aGlzLmhhc1ZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYXNWYWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZVt0aGlzLmNvbnRyb2xQaWNrZXIudmFsdWVGaWVsZF07XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhc1ZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRWYWx1ZVJldHVybigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mdW5jUmV0dXJuVmFsdWUodGhpcy5zZWxlY3RlZFZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBmaXJlQ2hhbmdlRXZlbnQoKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVSZXR1cm4gPSB0aGlzLmdldFZhbHVlUmV0dXJuKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZUJhc2UodmFsdWVSZXR1cm4pO1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2VkLmVtaXQoe1xyXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWVSZXR1cm5cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBoYW5kbGVIaWRlKGV2dCkge1xyXG4gICAgICAgIHRoaXMuc2hvd0Zvcm1QaWNrZXIgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5kaXJ0eSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb250cm9sUGlja2VyLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGF0YVNvdXJjZSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZSA9IGF3YWl0IHRoaXMuY29udHJvbFBpY2tlci5iYXNlU2VydmljZS5nZXREYXRhRHJvcGRvd25CeUZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQsIE9wZXJhdG9yLmluLCB0aGlzLnZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdLCB0aGlzLmdldERyb3Bkb3duT3B0aW9ucygpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlU3RydWN0dXJlRGF0YVNvdXJjZShkYXRhU291cmNlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSB0aGlzLmRhdGFTb3VyY2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGF0YVNvdXJjZSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gYXdhaXQgdGhpcy5jb250cm9sUGlja2VyLmJhc2VTZXJ2aWNlLmdldERhdGFEcm9wZG93bkJ5RmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcih0aGlzLmNvbnRyb2xQaWNrZXIudmFsdWVGaWVsZCwgT3BlcmF0b3IuZXF1YWwsIHRoaXMudmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIHRoaXMuZ2V0RHJvcGRvd25PcHRpb25zKClcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZVN0cnVjdHVyZURhdGFTb3VyY2UoZGF0YVNvdXJjZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhU291cmNlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSB0aGlzLmRhdGFTb3VyY2VbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sdGlwID0gdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0LmxhYmVsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlT2JqZWN0ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrU3VibWl0QnV0dG9uKGV2dCwgdXNlclBpY2tlckJveDogVXNlclBpY2tlckJveENvbXBvbmVudCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVIaWRlKGV2dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRSb3dEYXRhKSB7XHJcbiAgICAgICAgICAgIHVzZXJQaWNrZXJCb3hcclxuICAgICAgICAgICAgICAgICYmIHVzZXJQaWNrZXJCb3guZW50aXR5UGlja2VyQm94XHJcbiAgICAgICAgICAgICAgICAmJiB1c2VyUGlja2VyQm94LmVudGl0eVBpY2tlckJveC5oYW5kbGVQaWNrKHRoaXMuc2VsZWN0ZWRSb3dEYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm1QaWNrZXIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyByZVN0cnVjdHVyZURhdGFTb3VyY2Uoc291cmNlczogYW55W10pIHtcclxuICAgICAgICBpZiAoc291cmNlcyAhPSBudWxsICYmIHNvdXJjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAvLyBM4bqleSB0aMOqbSB0aMO0bmcgdGluIGNo4bupYyB24bulIMSR4buDIGhp4buDbiB0aOG7i1xyXG4gICAgICAgICAgICBjb25zdCBhcnIgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBzb3VyY2VzKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5yZVN0cnVjdHVyZUl0ZW1PYmplY3QoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICBhcnIucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlID0gYXJyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlU3RydWN0dXJlSXRlbU9iamVjdChpdGVtKTogU2VsZWN0SXRlbSB7XHJcbiAgICAgICAgY29uc3QgdGVtcDogU2VsZWN0SXRlbSA9IHsgdmFsdWU6IGl0ZW0gfTtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLmZ1bmNHZXRMYWJlbCkge1xyXG4gICAgICAgICAgICB0ZW1wLmxhYmVsID0gdGhpcy5jb250cm9sUGlja2VyLmZ1bmNHZXRMYWJlbChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRlbXAubGFiZWwgPSBpdGVtLm1hQ2h1Y1Z1ID8gYCR7aXRlbS5tYUNodWNWdX0uICR7aXRlbVt0aGlzLmNvbnRyb2xQaWNrZXIuZGlzcGxheUZpZWxkXX1gIDogaXRlbVt0aGlzLmNvbnRyb2xQaWNrZXIuZGlzcGxheUZpZWxkXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGVtcC52YWx1ZS5fZHJvcGRvd252YWx1ZSA9IHRoaXMuY29udHJvbFBpY2tlci52YWx1ZUZpZWxkO1xyXG4gICAgICAgIHJldHVybiB0ZW1wO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHdyaXRlVmFsdWUob2JqOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmhhc1ZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbFBpY2tlci5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICBpZiAob2JqICE9IG51bGwgJiYgb2JqLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcnM6IEZpbHRlcltdID0gW107XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQsIE9wZXJhdG9yLmluLCBvYmopKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGFwcGVuZERlZmF1bHRGaWx0ZXIoZmlsdGVycywgdGhpcy5jb250cm9sLmRlZmF1bHRGaWx0ZXJzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbFBpY2tlci5iYXNlU2VydmljZS5nZXREYXRhRHJvcGRvd25CeUZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RHJvcGRvd25PcHRpb25zKClcclxuICAgICAgICAgICAgICAgICkudGhlbihhc3luYyByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVTdHJ1Y3R1cmVEYXRhU291cmNlKHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzID0gdGhpcy5kYXRhU291cmNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCA9IHRoaXMuZGF0YVNvdXJjZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzID0gW107XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAob2JqICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbFBpY2tlci5iYXNlU2VydmljZS5nZXREYXRhRHJvcGRvd25CeUZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICBbdGhpcy5uZXdGaWx0ZXIodGhpcy5jb250cm9sUGlja2VyLnZhbHVlRmllbGQsIE9wZXJhdG9yLmVxdWFsLCBvYmopXSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldERyb3Bkb3duT3B0aW9ucygpXHJcbiAgICAgICAgICAgICAgICApLnRoZW4oYXN5bmMgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZVN0cnVjdHVyZURhdGFTb3VyY2UocmVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzID0gdGhpcy5kYXRhU291cmNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QgPSB0aGlzLmRhdGFTb3VyY2VbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLnNlbGVjdGVkVmFsdWVPYmplY3QubGFiZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xQaWNrZXIuY2FsbEJhY2sgJiYgdGhpcy5jb250cm9sUGlja2VyLmNhbGxCYWNrLnNlbGVjdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9sUGlja2VyLmNhbGxCYWNrLnNlbGVjdCh0aGlzLnNlbGVjdGVkVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZU9iamVjdCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlQmFzZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
1
2
|
// TODO: Test later
|
|
2
3
|
// export function extension(ctr: any) {
|
|
3
4
|
// let originalFunction: Function;
|
|
4
5
|
// return function (target, propertyKey: string, descriptor: PropertyDescriptor) {
|
|
5
6
|
// originalFunction = descriptor.value;
|
|
6
|
-
import { __awaiter } from "tslib";
|
|
7
7
|
import { Operator } from '../classes/form-schema';
|
|
8
8
|
// ctr.prototype[propertyKey] = function (...args) {
|
|
9
9
|
// return originalFunction(this, ...args);
|
|
@@ -146,4 +146,4 @@ export var StringCompareOption;
|
|
|
146
146
|
StringCompareOption[StringCompareOption["Normal"] = 0] = "Normal";
|
|
147
147
|
StringCompareOption[StringCompareOption["IgnoreCase"] = 1] = "IgnoreCase";
|
|
148
148
|
})(StringCompareOption || (StringCompareOption = {}));
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1pbmZvLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbIm1vZGVscy9ncmlkLWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CO0FBQ25CLHdDQUF3QztBQUN4QyxzQ0FBc0M7QUFDdEMsc0ZBQXNGO0FBQ3RGLCtDQUErQzs7QUFFL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWxELDREQUE0RDtBQUM1RCxzREFBc0Q7QUFDdEQsWUFBWTtBQUNaLFFBQVE7QUFDUixJQUFJO0FBRUosTUFBTSxPQUFPLFFBQVE7SUE4QmpCLFlBQVksSUFBZTtRQTVCM0IsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQUN2QixVQUFLLEdBQVcsRUFBRSxDQUFDO1FBQ25CLGFBQVEsR0FBZSxFQUFFLENBQUM7UUFDMUIsYUFBUSxHQUFhLElBQUksUUFBUSxFQUFFLENBQUM7UUEwQmhDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBM0JELGNBQWMsQ0FBRSxLQUFLLEVBQUUsZUFBd0IsS0FBSztRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQzFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMxQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssRUFBRTtnQkFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQ3BDLElBQUksWUFBWSxFQUFFO29C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QTtBQUFDLENBQUMsRUFBMUMsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUF1QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRPRE86IFRlc3QgbGF0ZXJcclxuLy8gZXhwb3J0IGZ1bmN0aW9uIGV4dGVuc2lvbihjdHI6IGFueSkge1xyXG4vLyAgICAgbGV0IG9yaWdpbmFsRnVuY3Rpb246IEZ1bmN0aW9uO1xyXG4vLyAgICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikge1xyXG4vLyAgICAgICAgIG9yaWdpbmFsRnVuY3Rpb24gPSBkZXNjcmlwdG9yLnZhbHVlO1xyXG5cclxuaW1wb3J0IHsgT3BlcmF0b3IgfSBmcm9tICcuLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuXHJcbi8vICAgICAgICAgY3RyLnByb3RvdHlwZVtwcm9wZXJ0eUtleV0gPSBmdW5jdGlvbiAoLi4uYXJncykge1xyXG4vLyAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxGdW5jdGlvbih0aGlzLCAuLi5hcmdzKTtcclxuLy8gICAgICAgICB9XHJcbi8vICAgICB9XHJcbi8vIH1cclxuXHJcbmV4cG9ydCBjbGFzcyBHcmlkSW5mbyB7XHJcbiAgICBmaWVsZHM/OiBzdHJpbmc7XHJcbiAgICBmaWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xyXG4gICAgc29ydHM6IFNvcnRbXSA9IFtdO1xyXG4gICAgaW5jbHVkZXM/OiBJbmNsdWRlW10gPSBbXTtcclxuICAgIHBhZ2VJbmZvOiBQYWdlSW5mbyA9IG5ldyBQYWdlSW5mbygpO1xyXG5cclxuICAgIGdldEZpbHRlclZhbHVlPyhmaWVsZCwgcmVtb3ZlRmlsdGVyOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZmlsdGVycykgcmV0dXJuO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5maWx0ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcnNbaV0uZmllbGQgPT0gZmllbGQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5maWx0ZXJzW2ldLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlbW92ZUZpbHRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVycy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbW9kaWZ5RmlsdGVyPyhmaWVsZCwgZnVuY01vZGlmeTogKGZpbHRlcjogRmlsdGVyKSA9PiB2b2lkKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpbHRlcnMpIHJldHVybjtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZmlsdGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJzW2ldLmZpZWxkID09IGZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBmdW5jTW9kaWZ5KHRoaXMuZmlsdGVyc1tpXSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogR3JpZEluZm8pIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIGV4cG9ydCBjbGFzcyBHcmlkSW5mb0V4dGVuc2lvbnMge1xyXG4vLyAgICAgQGV4dGVuc2lvbihHcmlkSW5mbylcclxuLy8gICAgIHN0YXRpYyBzZXRGaWVsZHModGhpc0FyZ3M6IEdyaWRJbmZvLCBmaWVsZHM6IHN0cmluZyk6IEdyaWRJbmZvIHtcclxuLy8gICAgICAgICB0aGlzQXJncy5maWVsZHMgPSBmaWVsZHM7XHJcbi8vICAgICAgICAgcmV0dXJuIHRoaXNBcmdzO1xyXG4vLyAgICAgfVxyXG4vLyAgICAgQGV4dGVuc2lvbihHcmlkSW5mbylcclxuLy8gICAgIHN0YXRpYyBmaWVsZCh0aGlzQXJnczogR3JpZEluZm8sIGZpZWxkOiBzdHJpbmcpOiBHcmlkSW5mbyB7XHJcbi8vICAgICAgICAgaWYgKCF0aGlzQXJncy5maWVsZHMuc3BsaXQoJywnKS5zb21lKHggPT4geCA9PSBmaWVsZCkpIHtcclxuLy8gICAgICAgICAgICAgdGhpc0FyZ3MuZmllbGRzICs9ICcsJyArIGZpZWxkO1xyXG4vLyAgICAgICAgIH1cclxuLy8gICAgICAgICByZXR1cm4gdGhpc0FyZ3M7XHJcbi8vICAgICB9XHJcbi8vICAgICBAZXh0ZW5zaW9uKEdyaWRJbmZvKVxyXG4vLyAgICAgc3RhdGljIGZpbHRlcih0aGlzQXJnczogR3JpZEluZm8sIGZpbHRlcjogRmlsdGVyKTogR3JpZEluZm8ge1xyXG4vLyAgICAgICAgIHRoaXNBcmdzLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4vLyAgICAgICAgIHJldHVybiB0aGlzQXJncztcclxuLy8gICAgIH1cclxuLy8gICAgIEBleHRlbnNpb24oR3JpZEluZm8pXHJcbi8vICAgICBzdGF0aWMgc2V0UGFnZUluZm8odGhpc0FyZ3M6IEdyaWRJbmZvLCBwYWdlSW5mbzogUGFnZUluZm8pOiBHcmlkSW5mbyB7XHJcbi8vICAgICAgICAgdGhpc0FyZ3MucGFnZUluZm8gPSBwYWdlSW5mbztcclxuLy8gICAgICAgICByZXR1cm4gdGhpc0FyZ3M7XHJcbi8vICAgICB9XHJcbi8vIH1cclxuXHJcbmV4cG9ydCBjbGFzcyBQYWdlSW5mbyB7XHJcbiAgICBwYWdlID0gMTtcclxuICAgIHBhZ2VTaXplID0gMTA7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFBhZ2VJbmZvKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSW5jbHVkZSB7XHJcbiAgICBmaWVsZDogc3RyaW5nO1xyXG4gICAgdGhlbkluY2x1ZGU/OiBJbmNsdWRlO1xyXG4gICAgZmlsdGVycz86IEZpbHRlcltdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ6IEluY2x1ZGUpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTb3J0IHtcclxuICAgIGZpZWxkID0gJ2lkJztcclxuICAgIGRpciA9IDE7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFNvcnQpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXIge1xyXG4gICAgZmllbGQ/OiBzdHJpbmc7XHJcbiAgICBsb2dpYz86ICdvcicgfCAnYW5kJztcclxuICAgIHNvdXJjZUZpZWxkPzogc3RyaW5nO1xyXG4gICAgc3ViRmllbGQ/OiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgICBmdW5jR2V0VmFsdWU/OiAoaXRlbSkgPT4gdm9pZDtcclxuICAgIGlzQXJyYXlGaWVsZD86IGJvb2xlYW47XHJcbiAgICB2YWx1ZT86IHN0cmluZztcclxuICAgIHZhbHVlSXNGaWVsZD86IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIG9wZXJhdG9yPzogT3BlcmF0b3I7XHJcbiAgICBmaWx0ZXJzPzogRmlsdGVyW10gPSBbXTtcclxuICAgIHN0cmluZ0NvbXBhcmVPcHRpb24/OiBTdHJpbmdDb21wYXJlT3B0aW9uID0gU3RyaW5nQ29tcGFyZU9wdGlvbi5Ob3JtYWw7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEZpbHRlcikge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb252ZXJ0RmlsdGVyRm9yQXJyYXlGaWVsZD8oZmllbGQ/OiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoIWZpZWxkKSB7XHJcbiAgICAgICAgICAgIGZpZWxkID0gdGhpcy5maWVsZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gSlNPTi5wYXJzZSh0aGlzLnZhbHVlKTtcclxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlcykpIHJldHVybjtcclxuICAgICAgICAgICAgdGhpcy5maWVsZCA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3IgPSBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2ljID0gJ29yJztcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVycyA9IFtdO1xyXG4gICAgICAgICAgICB2YWx1ZXMuZm9yRWFjaCh2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICBuZXcgRmlsdGVyKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICBuZXcgRmlsdGVyKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3Iuc3RhcnRXaXRoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogSlNPTi5zdHJpbmdpZnkoYCR7dmFsdWV9LGApXHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZpbHRlcih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBmaWVsZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVuZFdpdGgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBKU09OLnN0cmluZ2lmeShgLCR7dmFsdWV9YClcclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICBuZXcgRmlsdGVyKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KGAsJHt2YWx1ZX0sYClcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleCkge1xyXG5cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFN0cmluZ0NvbXBhcmVPcHRpb24geyBOb3JtYWwsIElnbm9yZUNhc2UgfVxyXG4iXX0=
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1pbmZvLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbIm1vZGVscy9ncmlkLWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG1CQUFtQjtBQUNuQix3Q0FBd0M7QUFDeEMsc0NBQXNDO0FBQ3RDLHNGQUFzRjtBQUN0RiwrQ0FBK0M7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR2xELDREQUE0RDtBQUM1RCxzREFBc0Q7QUFDdEQsWUFBWTtBQUNaLFFBQVE7QUFDUixJQUFJO0FBRUosTUFBTSxPQUFPLFFBQVE7SUE4QmpCLFlBQVksSUFBZTtRQTVCM0IsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQUN2QixVQUFLLEdBQVcsRUFBRSxDQUFDO1FBQ25CLGFBQVEsR0FBZSxFQUFFLENBQUM7UUFDMUIsYUFBUSxHQUFhLElBQUksUUFBUSxFQUFFLENBQUM7UUEwQmhDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBM0JELGNBQWMsQ0FBRSxLQUFLLEVBQUUsZUFBd0IsS0FBSztRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQzFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMxQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssRUFBRTtnQkFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQ3BDLElBQUksWUFBWSxFQUFFO29C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QTtBQUFDLENBQUMsRUFBMUMsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUF1QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRPRE86IFRlc3QgbGF0ZXJcclxuLy8gZXhwb3J0IGZ1bmN0aW9uIGV4dGVuc2lvbihjdHI6IGFueSkge1xyXG4vLyAgICAgbGV0IG9yaWdpbmFsRnVuY3Rpb246IEZ1bmN0aW9uO1xyXG4vLyAgICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikge1xyXG4vLyAgICAgICAgIG9yaWdpbmFsRnVuY3Rpb24gPSBkZXNjcmlwdG9yLnZhbHVlO1xyXG5pbXBvcnQgeyBPcGVyYXRvciB9IGZyb20gJy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5cclxuXHJcbi8vICAgICAgICAgY3RyLnByb3RvdHlwZVtwcm9wZXJ0eUtleV0gPSBmdW5jdGlvbiAoLi4uYXJncykge1xyXG4vLyAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxGdW5jdGlvbih0aGlzLCAuLi5hcmdzKTtcclxuLy8gICAgICAgICB9XHJcbi8vICAgICB9XHJcbi8vIH1cclxuXHJcbmV4cG9ydCBjbGFzcyBHcmlkSW5mbyB7XHJcbiAgICBmaWVsZHM/OiBzdHJpbmc7XHJcbiAgICBmaWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xyXG4gICAgc29ydHM6IFNvcnRbXSA9IFtdO1xyXG4gICAgaW5jbHVkZXM/OiBJbmNsdWRlW10gPSBbXTtcclxuICAgIHBhZ2VJbmZvOiBQYWdlSW5mbyA9IG5ldyBQYWdlSW5mbygpO1xyXG5cclxuICAgIGdldEZpbHRlclZhbHVlPyhmaWVsZCwgcmVtb3ZlRmlsdGVyOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZmlsdGVycykgcmV0dXJuO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5maWx0ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcnNbaV0uZmllbGQgPT0gZmllbGQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5maWx0ZXJzW2ldLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlbW92ZUZpbHRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVycy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbW9kaWZ5RmlsdGVyPyhmaWVsZCwgZnVuY01vZGlmeTogKGZpbHRlcjogRmlsdGVyKSA9PiB2b2lkKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpbHRlcnMpIHJldHVybjtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZmlsdGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJzW2ldLmZpZWxkID09IGZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBmdW5jTW9kaWZ5KHRoaXMuZmlsdGVyc1tpXSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogR3JpZEluZm8pIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIGV4cG9ydCBjbGFzcyBHcmlkSW5mb0V4dGVuc2lvbnMge1xyXG4vLyAgICAgQGV4dGVuc2lvbihHcmlkSW5mbylcclxuLy8gICAgIHN0YXRpYyBzZXRGaWVsZHModGhpc0FyZ3M6IEdyaWRJbmZvLCBmaWVsZHM6IHN0cmluZyk6IEdyaWRJbmZvIHtcclxuLy8gICAgICAgICB0aGlzQXJncy5maWVsZHMgPSBmaWVsZHM7XHJcbi8vICAgICAgICAgcmV0dXJuIHRoaXNBcmdzO1xyXG4vLyAgICAgfVxyXG4vLyAgICAgQGV4dGVuc2lvbihHcmlkSW5mbylcclxuLy8gICAgIHN0YXRpYyBmaWVsZCh0aGlzQXJnczogR3JpZEluZm8sIGZpZWxkOiBzdHJpbmcpOiBHcmlkSW5mbyB7XHJcbi8vICAgICAgICAgaWYgKCF0aGlzQXJncy5maWVsZHMuc3BsaXQoJywnKS5zb21lKHggPT4geCA9PSBmaWVsZCkpIHtcclxuLy8gICAgICAgICAgICAgdGhpc0FyZ3MuZmllbGRzICs9ICcsJyArIGZpZWxkO1xyXG4vLyAgICAgICAgIH1cclxuLy8gICAgICAgICByZXR1cm4gdGhpc0FyZ3M7XHJcbi8vICAgICB9XHJcbi8vICAgICBAZXh0ZW5zaW9uKEdyaWRJbmZvKVxyXG4vLyAgICAgc3RhdGljIGZpbHRlcih0aGlzQXJnczogR3JpZEluZm8sIGZpbHRlcjogRmlsdGVyKTogR3JpZEluZm8ge1xyXG4vLyAgICAgICAgIHRoaXNBcmdzLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4vLyAgICAgICAgIHJldHVybiB0aGlzQXJncztcclxuLy8gICAgIH1cclxuLy8gICAgIEBleHRlbnNpb24oR3JpZEluZm8pXHJcbi8vICAgICBzdGF0aWMgc2V0UGFnZUluZm8odGhpc0FyZ3M6IEdyaWRJbmZvLCBwYWdlSW5mbzogUGFnZUluZm8pOiBHcmlkSW5mbyB7XHJcbi8vICAgICAgICAgdGhpc0FyZ3MucGFnZUluZm8gPSBwYWdlSW5mbztcclxuLy8gICAgICAgICByZXR1cm4gdGhpc0FyZ3M7XHJcbi8vICAgICB9XHJcbi8vIH1cclxuXHJcbmV4cG9ydCBjbGFzcyBQYWdlSW5mbyB7XHJcbiAgICBwYWdlID0gMTtcclxuICAgIHBhZ2VTaXplID0gMTA7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFBhZ2VJbmZvKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSW5jbHVkZSB7XHJcbiAgICBmaWVsZDogc3RyaW5nO1xyXG4gICAgdGhlbkluY2x1ZGU/OiBJbmNsdWRlO1xyXG4gICAgZmlsdGVycz86IEZpbHRlcltdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ6IEluY2x1ZGUpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTb3J0IHtcclxuICAgIGZpZWxkID0gJ2lkJztcclxuICAgIGRpciA9IDE7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFNvcnQpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXIge1xyXG4gICAgZmllbGQ/OiBzdHJpbmc7XHJcbiAgICBsb2dpYz86ICdvcicgfCAnYW5kJztcclxuICAgIHNvdXJjZUZpZWxkPzogc3RyaW5nO1xyXG4gICAgc3ViRmllbGQ/OiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgICBmdW5jR2V0VmFsdWU/OiAoaXRlbSkgPT4gdm9pZDtcclxuICAgIGlzQXJyYXlGaWVsZD86IGJvb2xlYW47XHJcbiAgICB2YWx1ZT86IHN0cmluZztcclxuICAgIHZhbHVlSXNGaWVsZD86IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIG9wZXJhdG9yPzogT3BlcmF0b3I7XHJcbiAgICBmaWx0ZXJzPzogRmlsdGVyW10gPSBbXTtcclxuICAgIHN0cmluZ0NvbXBhcmVPcHRpb24/OiBTdHJpbmdDb21wYXJlT3B0aW9uID0gU3RyaW5nQ29tcGFyZU9wdGlvbi5Ob3JtYWw7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEZpbHRlcikge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb252ZXJ0RmlsdGVyRm9yQXJyYXlGaWVsZD8oZmllbGQ/OiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoIWZpZWxkKSB7XHJcbiAgICAgICAgICAgIGZpZWxkID0gdGhpcy5maWVsZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gSlNPTi5wYXJzZSh0aGlzLnZhbHVlKTtcclxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlcykpIHJldHVybjtcclxuICAgICAgICAgICAgdGhpcy5maWVsZCA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3IgPSBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2ljID0gJ29yJztcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVycyA9IFtdO1xyXG4gICAgICAgICAgICB2YWx1ZXMuZm9yRWFjaCh2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICBuZXcgRmlsdGVyKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICBuZXcgRmlsdGVyKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3Iuc3RhcnRXaXRoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogSlNPTi5zdHJpbmdpZnkoYCR7dmFsdWV9LGApXHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZpbHRlcih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBmaWVsZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVuZFdpdGgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBKU09OLnN0cmluZ2lmeShgLCR7dmFsdWV9YClcclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICBuZXcgRmlsdGVyKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KGAsJHt2YWx1ZX0sYClcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleCkge1xyXG5cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFN0cmluZ0NvbXBhcmVPcHRpb24geyBOb3JtYWwsIElnbm9yZUNhc2UgfVxyXG4iXX0=
|