ato-water-lib 0.0.9 → 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- package/assets/icon1.png +0 -0
- package/esm2020/lib/ato-water-lib.module.mjs +20 -7
- package/esm2020/lib/components/asset-flow/asset-flow.component.mjs +56 -0
- package/esm2020/lib/components/flow-diagram-lib/flow-diagram-lib.component.mjs +5 -5
- package/esm2020/lib/constants/components-group-const.mjs +1289 -0
- package/esm2020/lib/directive/ato-loading.directive.mjs +83 -0
- package/esm2020/lib/models/default-gojs-editor.model.mjs +225 -223
- package/esm2020/lib/models/gojs-editor.model.mjs +302 -295
- package/esm2020/public-api.mjs +5 -1
- package/fesm2015/ato-water-lib.mjs +1833 -526
- package/fesm2015/ato-water-lib.mjs.map +1 -1
- package/fesm2020/ato-water-lib.mjs +1964 -526
- package/fesm2020/ato-water-lib.mjs.map +1 -1
- package/lib/ato-water-lib.module.d.ts +4 -1
- package/lib/components/asset-flow/asset-flow.component.d.ts +21 -0
- package/lib/constants/components-group-const.d.ts +1132 -0
- package/lib/directive/ato-loading.directive.d.ts +14 -0
- package/lib/models/default-gojs-editor.model.d.ts +3 -3
- package/lib/models/gojs-editor.model.d.ts +10 -7
- package/package.json +6 -3
- package/public-api.d.ts +2 -0
@@ -0,0 +1,83 @@
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
export class AtoLoadingDirective {
|
4
|
+
constructor(el, renderer) {
|
5
|
+
this.el = el;
|
6
|
+
this.renderer = renderer;
|
7
|
+
// Tạo phần tử spinner wrapper
|
8
|
+
this.spinnerWrapper = this.renderer.createElement('div');
|
9
|
+
this.renderer.setStyle(this.spinnerWrapper, 'position', 'absolute');
|
10
|
+
this.renderer.setStyle(this.spinnerWrapper, 'top', '0');
|
11
|
+
this.renderer.setStyle(this.spinnerWrapper, 'left', '0');
|
12
|
+
this.renderer.setStyle(this.spinnerWrapper, 'width', '100%');
|
13
|
+
this.renderer.setStyle(this.spinnerWrapper, 'height', '100%');
|
14
|
+
this.renderer.setStyle(this.spinnerWrapper, 'display', 'flex');
|
15
|
+
this.renderer.setStyle(this.spinnerWrapper, 'align-items', 'center');
|
16
|
+
this.renderer.setStyle(this.spinnerWrapper, 'justify-content', 'center');
|
17
|
+
this.renderer.setStyle(this.spinnerWrapper, 'background', 'rgba(255, 255, 255, 0.7)');
|
18
|
+
this.renderer.setStyle(this.spinnerWrapper, 'z-index', '10');
|
19
|
+
// Tạo phần tử spinner icon (sử dụng hình ảnh base64)
|
20
|
+
const spinner = this.renderer.createElement('img');
|
21
|
+
// this.renderer.setAttribute(spinner, 'src', 'data:image/gif;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBzdHlsZT0ibWFyZ2luOiBhdXRvOyBiYWNrZ3JvdW5kOiByZ2IoMjU1LCAyNTUsIDI1NSk7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nOyBhbmltYXRpb24tZGVsYXk6IDBzOyIgd2lkdGg9Ijg4cHgiIGhlaWdodD0iODhweCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KPGRlZnMgc3R5bGU9ImFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nOyBhbmltYXRpb24tZGVsYXk6IDBzOyI+CiAgPG1hc2sgaWQ9ImxkaW8tdmN5YjQ1YmFvdWstbWFzayIgc3R5bGU9ImFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nOyBhbmltYXRpb24tZGVsYXk6IDBzOyI+CiAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0id2hpdGUiIHN0eWxlPSJhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZzsgYW5pbWF0aW9uLWRlbGF5OiAwczsiPjwvcmVjdD4KICA8L21hc2s+CjwvZGVmcz4KPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9IiM1Y2FhZWEiIHN0eWxlPSJhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZzsgYW5pbWF0aW9uLWRlbGF5OiAwczsiPjwvcmVjdD4KPGcgbWFzaz0idXJsKCNsZGlvLXZjeWI0NWJhb3VrLW1hc2spIiBzdHlsZT0iYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7IGFuaW1hdGlvbi1kZWxheTogMHM7Ij4KICA8cmVjdCB4PSItMTAwIiB5PSItMjUwIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCIgcng9IjkwIiByeT0iOTAiIGZpbGw9IiM4MmNlZmYiIG9wYWNpdHk9IjAuNCIgc3R5bGU9ImFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nOyBhbmltYXRpb24tZGVsYXk6IDBzOyI+CiAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InJvdGF0ZSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHZhbHVlcz0iMCA1MCAtMTAwOzkwIDUwIC0xMDAiIGtleVRpbWVzPSIwOzEiIHN0eWxlPSJhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZzsgYW5pbWF0aW9uLWRlbGF5OiAwczsiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICA8L3JlY3Q+CgogIDxyZWN0IHg9Ii0xMDAiIHk9Ii0yNjAiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIiByeD0iOTUiIHJ5PSI5NSIgZmlsbD0iI2E1ZGNmZiIgb3BhY2l0eT0iMC40IiBzdHlsZT0iYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7IGFuaW1hdGlvbi1kZWxheTogMHM7Ij4KICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0icm90YXRlIiBkdXI9IjEuNTE1MTUxNTE1MTUxNTE1MXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiB2YWx1ZXM9IjAgNTAgLTExMDs5MCA1MCAtMTEwIiBrZXlUaW1lcz0iMDsxIiBzdHlsZT0iYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7IGFuaW1hdGlvbi1kZWxheTogMHM7Ij48L2FuaW1hdGVUcmFuc2Zvcm0+CiAgPC9yZWN0PgoKICA8cmVjdCB4PSItMTAwIiB5PSItMjcwIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCIgcng9IjEwMCIgcnk9IjEwMCIgZmlsbD0iI2ZmZmZmZiIgb3BhY2l0eT0iMC40IiBzdHlsZT0iYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7IGFuaW1hdGlvbi1kZWxheTogMHM7Ij4KICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0icm90YXRlIiBkdXI9IjMuMDMwMzAzMDMwMzAzMDMwM3MiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiB2YWx1ZXM9IjAgNTAgLTEyMDs5MCA1MCAtMTIwIiBrZXlUaW1lcz0iMDsxIiBzdHlsZT0iYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7IGFuaW1hdGlvbi1kZWxheTogMHM7Ij48L2FuaW1hdGVUcmFuc2Zvcm0+CiAgPC9yZWN0PgoKPC9nPgo8IS0tIFtsZGlvXSBnZW5lcmF0ZWQgYnkgaHR0cHM6Ly9sb2FkaW5nLmlvLyAtLT48L3N2Zz4=');
|
22
|
+
this.renderer.setProperty(spinner, 'innerHTML', `
|
23
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin: auto; background: rgb(255, 255, 255); display: block; shape-rendering: auto; animation-play-state: running; animation-delay: 0s;" width="88px" height="88px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
|
24
|
+
<defs style="animation-play-state: running; animation-delay: 0s;">
|
25
|
+
<mask id="ldio-vcyb45baouk-mask" style="animation-play-state: running; animation-delay: 0s;">
|
26
|
+
<rect x="0" y="0" width="100" height="100" fill="white" style="animation-play-state: running; animation-delay: 0s;"/>
|
27
|
+
</mask>
|
28
|
+
</defs>
|
29
|
+
<rect x="0" y="0" width="100" height="100" fill="#5caaea" style="animation-play-state: running; animation-delay: 0s;"/>
|
30
|
+
<g mask="url(#ldio-vcyb45baouk-mask)" style="animation-play-state: running; animation-delay: 0s;">
|
31
|
+
<rect x="-100" y="-250" width="300" height="300" rx="90" ry="90" fill="#82ceff" opacity="0.4" style="animation-play-state: running; animation-delay: 0s;">
|
32
|
+
<animateTransform attributeName="transform" type="rotate" dur="1s" repeatCount="indefinite" values="0 50 -100;90 50 -100" keyTimes="0;1" style="animation-play-state: running; animation-delay: 0s;"/>
|
33
|
+
</rect>
|
34
|
+
|
35
|
+
<rect x="-100" y="-260" width="300" height="300" rx="95" ry="95" fill="#a5dcff" opacity="0.4" style="animation-play-state: running; animation-delay: 0s;">
|
36
|
+
<animateTransform attributeName="transform" type="rotate" dur="1.5151515151515151s" repeatCount="indefinite" values="0 50 -110;90 50 -110" keyTimes="0;1" style="animation-play-state: running; animation-delay: 0s;"/>
|
37
|
+
</rect>
|
38
|
+
|
39
|
+
<rect x="-100" y="-270" width="300" height="300" rx="100" ry="100" fill="#ffffff" opacity="0.4" style="animation-play-state: running; animation-delay: 0s;">
|
40
|
+
<animateTransform attributeName="transform" type="rotate" dur="3.0303030303030303s" repeatCount="indefinite" values="0 50 -120;90 50 -120" keyTimes="0;1" style="animation-play-state: running; animation-delay: 0s;"/>
|
41
|
+
</rect>
|
42
|
+
|
43
|
+
</g>
|
44
|
+
<!-- [ldio] generated by https://loading.io/ --></svg>
|
45
|
+
`);
|
46
|
+
this.renderer.setStyle(spinner, 'width', '40px');
|
47
|
+
this.renderer.setStyle(spinner, 'height', '40px');
|
48
|
+
// Thêm spinner vào spinner wrapper
|
49
|
+
this.renderer.appendChild(this.spinnerWrapper, spinner);
|
50
|
+
}
|
51
|
+
ngOnChanges(changes) {
|
52
|
+
if (changes['appLoading']) {
|
53
|
+
if (this.appLoading) {
|
54
|
+
this.showSpinner();
|
55
|
+
}
|
56
|
+
else {
|
57
|
+
this.hideSpinner();
|
58
|
+
}
|
59
|
+
}
|
60
|
+
}
|
61
|
+
showSpinner() {
|
62
|
+
this.renderer.setStyle(this.el.nativeElement, 'position', 'relative');
|
63
|
+
this.renderer.setStyle(this.el.nativeElement, 'filter', 'blur(2px)');
|
64
|
+
this.renderer.appendChild(this.el.nativeElement, this.spinnerWrapper);
|
65
|
+
}
|
66
|
+
hideSpinner() {
|
67
|
+
this.renderer.removeStyle(this.el.nativeElement, 'filter');
|
68
|
+
if (this.el.nativeElement.contains(this.spinnerWrapper)) {
|
69
|
+
this.renderer.removeChild(this.el.nativeElement, this.spinnerWrapper);
|
70
|
+
}
|
71
|
+
}
|
72
|
+
}
|
73
|
+
AtoLoadingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AtoLoadingDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
74
|
+
AtoLoadingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: AtoLoadingDirective, selector: "[atoLoading]", inputs: { appLoading: "appLoading" }, usesOnChanges: true, ngImport: i0 });
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AtoLoadingDirective, decorators: [{
|
76
|
+
type: Directive,
|
77
|
+
args: [{
|
78
|
+
selector: '[atoLoading]'
|
79
|
+
}]
|
80
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { appLoading: [{
|
81
|
+
type: Input
|
82
|
+
}] } });
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvLWxvYWRpbmcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXRvLXdhdGVyLWxpYi9zcmMvbGliL2RpcmVjdGl2ZS9hdG8tbG9hZGluZy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBeUIsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQzs7QUFLbEcsTUFBTSxPQUFPLG1CQUFtQjtJQU05QixZQUFvQixFQUFjLEVBQVUsUUFBbUI7UUFBM0MsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDN0QsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFlBQVksRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTdELHFEQUFxRDtRQUNyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCxvM0ZBQW8zRjtRQUNwM0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1QmpELENBQUMsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVsRCxtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3pCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3BCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNwQjtTQUNGO0lBQ0gsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0QsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ3ZELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN2RTtJQUNILENBQUM7O2lIQTNFVSxtQkFBbUI7cUdBQW5CLG1CQUFtQjs0RkFBbkIsbUJBQW1CO2tCQUgvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO2lCQUN6Qjt5SEFHVSxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBSZW5kZXJlcjIsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2F0b0xvYWRpbmddJ1xufSlcbmV4cG9ydCBjbGFzcyBBdG9Mb2FkaW5nRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKSBhcHBMb2FkaW5nOiBib29sZWFuO1xuXG4gIHByaXZhdGUgc3Bpbm5lcldyYXBwZXI6IEhUTUxFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgIC8vIFThuqFvIHBo4bqnbiB04butIHNwaW5uZXIgd3JhcHBlclxuICAgIHRoaXMuc3Bpbm5lcldyYXBwZXIgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zcGlubmVyV3JhcHBlciwgJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNwaW5uZXJXcmFwcGVyLCAndG9wJywgJzAnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lcldyYXBwZXIsICdsZWZ0JywgJzAnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lcldyYXBwZXIsICd3aWR0aCcsICcxMDAlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNwaW5uZXJXcmFwcGVyLCAnaGVpZ2h0JywgJzEwMCUnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lcldyYXBwZXIsICdkaXNwbGF5JywgJ2ZsZXgnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lcldyYXBwZXIsICdhbGlnbi1pdGVtcycsICdjZW50ZXInKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lcldyYXBwZXIsICdqdXN0aWZ5LWNvbnRlbnQnLCAnY2VudGVyJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNwaW5uZXJXcmFwcGVyLCAnYmFja2dyb3VuZCcsICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyknKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lcldyYXBwZXIsICd6LWluZGV4JywgJzEwJyk7XG5cbiAgICAvLyBU4bqhbyBwaOG6p24gdOG7rSBzcGlubmVyIGljb24gKHPhu60gZOG7pW5nIGjDrG5oIOG6o25oIGJhc2U2NClcbiAgICBjb25zdCBzcGlubmVyID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdpbWcnKTtcbiAgICAvLyB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShzcGlubmVyLCAnc3JjJywgJ2RhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpZFhSbUxUZ2lQejRLUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIaHRiRzV6T25oc2FXNXJQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUwzaHNhVzVySWlCemRIbHNaVDBpYldGeVoybHVPaUJoZFhSdk95QmlZV05yWjNKdmRXNWtPaUJ5WjJJb01qVTFMQ0F5TlRVc0lESTFOU2s3SUdScGMzQnNZWGs2SUdKc2IyTnJPeUJ6YUdGd1pTMXlaVzVrWlhKcGJtYzZJR0YxZEc4N0lHRnVhVzFoZEdsdmJpMXdiR0Y1TFhOMFlYUmxPaUJ5ZFc1dWFXNW5PeUJoYm1sdFlYUnBiMjR0WkdWc1lYazZJREJ6T3lJZ2QybGtkR2c5SWpnNGNIZ2lJR2hsYVdkb2REMGlPRGh3ZUNJZ2RtbGxkMEp2ZUQwaU1DQXdJREV3TUNBeE1EQWlJSEJ5WlhObGNuWmxRWE53WldOMFVtRjBhVzg5SW5oTmFXUlpUV2xrSWo0S1BHUmxabk1nYzNSNWJHVTlJbUZ1YVcxaGRHbHZiaTF3YkdGNUxYTjBZWFJsT2lCeWRXNXVhVzVuT3lCaGJtbHRZWFJwYjI0dFpHVnNZWGs2SURCek95SStDaUFnUEcxaGMyc2dhV1E5SW14a2FXOHRkbU41WWpRMVltRnZkV3N0YldGemF5SWdjM1I1YkdVOUltRnVhVzFoZEdsdmJpMXdiR0Y1TFhOMFlYUmxPaUJ5ZFc1dWFXNW5PeUJoYm1sdFlYUnBiMjR0WkdWc1lYazZJREJ6T3lJK0NpQWdJQ0E4Y21WamRDQjRQU0l3SWlCNVBTSXdJaUIzYVdSMGFEMGlNVEF3SWlCb1pXbG5hSFE5SWpFd01DSWdabWxzYkQwaWQyaHBkR1VpSUhOMGVXeGxQU0poYm1sdFlYUnBiMjR0Y0d4aGVTMXpkR0YwWlRvZ2NuVnVibWx1WnpzZ1lXNXBiV0YwYVc5dUxXUmxiR0Y1T2lBd2N6c2lQand2Y21WamRENEtJQ0E4TDIxaGMycytDand2WkdWbWN6NEtQSEpsWTNRZ2VEMGlNQ0lnZVQwaU1DSWdkMmxrZEdnOUlqRXdNQ0lnYUdWcFoyaDBQU0l4TURBaUlHWnBiR3c5SWlNMVkyRmhaV0VpSUhOMGVXeGxQU0poYm1sdFlYUnBiMjR0Y0d4aGVTMXpkR0YwWlRvZ2NuVnVibWx1WnpzZ1lXNXBiV0YwYVc5dUxXUmxiR0Y1T2lBd2N6c2lQand2Y21WamRENEtQR2NnYldGemF6MGlkWEpzS0NOc1pHbHZMWFpqZVdJME5XSmhiM1ZyTFcxaGMyc3BJaUJ6ZEhsc1pUMGlZVzVwYldGMGFXOXVMWEJzWVhrdGMzUmhkR1U2SUhKMWJtNXBibWM3SUdGdWFXMWhkR2x2Ymkxa1pXeGhlVG9nTUhNN0lqNEtJQ0E4Y21WamRDQjRQU0l0TVRBd0lpQjVQU0l0TWpVd0lpQjNhV1IwYUQwaU16QXdJaUJvWldsbmFIUTlJak13TUNJZ2NuZzlJamt3SWlCeWVUMGlPVEFpSUdacGJHdzlJaU00TW1ObFptWWlJRzl3WVdOcGRIazlJakF1TkNJZ2MzUjViR1U5SW1GdWFXMWhkR2x2Ymkxd2JHRjVMWE4wWVhSbE9pQnlkVzV1YVc1bk95QmhibWx0WVhScGIyNHRaR1ZzWVhrNklEQnpPeUkrQ2lBZ0lDQThZVzVwYldGMFpWUnlZVzV6Wm05eWJTQmhkSFJ5YVdKMWRHVk9ZVzFsUFNKMGNtRnVjMlp2Y20waUlIUjVjR1U5SW5KdmRHRjBaU0lnWkhWeVBTSXhjeUlnY21Wd1pXRjBRMjkxYm5ROUltbHVaR1ZtYVc1cGRHVWlJSFpoYkhWbGN6MGlNQ0ExTUNBdE1UQXdPemt3SURVd0lDMHhNREFpSUd0bGVWUnBiV1Z6UFNJd096RWlJSE4wZVd4bFBTSmhibWx0WVhScGIyNHRjR3hoZVMxemRHRjBaVG9nY25WdWJtbHVaenNnWVc1cGJXRjBhVzl1TFdSbGJHRjVPaUF3Y3pzaVBqd3ZZVzVwYldGMFpWUnlZVzV6Wm05eWJUNEtJQ0E4TDNKbFkzUStDZ29nSUR4eVpXTjBJSGc5SWkweE1EQWlJSGs5SWkweU5qQWlJSGRwWkhSb1BTSXpNREFpSUdobGFXZG9kRDBpTXpBd0lpQnllRDBpT1RVaUlISjVQU0k1TlNJZ1ptbHNiRDBpSTJFMVpHTm1aaUlnYjNCaFkybDBlVDBpTUM0MElpQnpkSGxzWlQwaVlXNXBiV0YwYVc5dUxYQnNZWGt0YzNSaGRHVTZJSEoxYm01cGJtYzdJR0Z1YVcxaGRHbHZiaTFrWld4aGVUb2dNSE03SWo0S0lDQWdJRHhoYm1sdFlYUmxWSEpoYm5ObWIzSnRJR0YwZEhKcFluVjBaVTVoYldVOUluUnlZVzV6Wm05eWJTSWdkSGx3WlQwaWNtOTBZWFJsSWlCa2RYSTlJakV1TlRFMU1UVXhOVEUxTVRVeE5URTFNWE1pSUhKbGNHVmhkRU52ZFc1MFBTSnBibVJsWm1sdWFYUmxJaUIyWVd4MVpYTTlJakFnTlRBZ0xURXhNRHM1TUNBMU1DQXRNVEV3SWlCclpYbFVhVzFsY3owaU1Ec3hJaUJ6ZEhsc1pUMGlZVzVwYldGMGFXOXVMWEJzWVhrdGMzUmhkR1U2SUhKMWJtNXBibWM3SUdGdWFXMWhkR2x2Ymkxa1pXeGhlVG9nTUhNN0lqNDhMMkZ1YVcxaGRHVlVjbUZ1YzJadmNtMCtDaUFnUEM5eVpXTjBQZ29LSUNBOGNtVmpkQ0I0UFNJdE1UQXdJaUI1UFNJdE1qY3dJaUIzYVdSMGFEMGlNekF3SWlCb1pXbG5hSFE5SWpNd01DSWdjbmc5SWpFd01DSWdjbms5SWpFd01DSWdabWxzYkQwaUkyWm1abVptWmlJZ2IzQmhZMmwwZVQwaU1DNDBJaUJ6ZEhsc1pUMGlZVzVwYldGMGFXOXVMWEJzWVhrdGMzUmhkR1U2SUhKMWJtNXBibWM3SUdGdWFXMWhkR2x2Ymkxa1pXeGhlVG9nTUhNN0lqNEtJQ0FnSUR4aGJtbHRZWFJsVkhKaGJuTm1iM0p0SUdGMGRISnBZblYwWlU1aGJXVTlJblJ5WVc1elptOXliU0lnZEhsd1pUMGljbTkwWVhSbElpQmtkWEk5SWpNdU1ETXdNekF6TURNd016QXpNRE13TTNNaUlISmxjR1ZoZEVOdmRXNTBQU0pwYm1SbFptbHVhWFJsSWlCMllXeDFaWE05SWpBZ05UQWdMVEV5TURzNU1DQTFNQ0F0TVRJd0lpQnJaWGxVYVcxbGN6MGlNRHN4SWlCemRIbHNaVDBpWVc1cGJXRjBhVzl1TFhCc1lYa3RjM1JoZEdVNklISjFibTVwYm1jN0lHRnVhVzFoZEdsdmJpMWtaV3hoZVRvZ01ITTdJajQ4TDJGdWFXMWhkR1ZVY21GdWMyWnZjbTArQ2lBZ1BDOXlaV04wUGdvS1BDOW5QZ284SVMwdElGdHNaR2x2WFNCblpXNWxjbUYwWldRZ1lua2dhSFIwY0hNNkx5OXNiMkZrYVc1bkxtbHZMeUF0TFQ0OEwzTjJaejQ9Jyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShzcGlubmVyLCAnaW5uZXJIVE1MJywgYFxuICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHN0eWxlPVwibWFyZ2luOiBhdXRvOyBiYWNrZ3JvdW5kOiByZ2IoMjU1LCAyNTUsIDI1NSk7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nOyBhbmltYXRpb24tZGVsYXk6IDBzO1wiIHdpZHRoPVwiODhweFwiIGhlaWdodD1cIjg4cHhcIiB2aWV3Qm94PVwiMCAwIDEwMCAxMDBcIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWRcIj5cbjxkZWZzIHN0eWxlPVwiYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7IGFuaW1hdGlvbi1kZWxheTogMHM7XCI+XG4gIDxtYXNrIGlkPVwibGRpby12Y3liNDViYW91ay1tYXNrXCIgc3R5bGU9XCJhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZzsgYW5pbWF0aW9uLWRlbGF5OiAwcztcIj5cbiAgICA8cmVjdCB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIxMDBcIiBoZWlnaHQ9XCIxMDBcIiBmaWxsPVwid2hpdGVcIiBzdHlsZT1cImFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nOyBhbmltYXRpb24tZGVsYXk6IDBzO1wiLz5cbiAgPC9tYXNrPlxuPC9kZWZzPlxuPHJlY3QgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMTAwXCIgaGVpZ2h0PVwiMTAwXCIgZmlsbD1cIiM1Y2FhZWFcIiBzdHlsZT1cImFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nOyBhbmltYXRpb24tZGVsYXk6IDBzO1wiLz5cbjxnIG1hc2s9XCJ1cmwoI2xkaW8tdmN5YjQ1YmFvdWstbWFzaylcIiBzdHlsZT1cImFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nOyBhbmltYXRpb24tZGVsYXk6IDBzO1wiPlxuICA8cmVjdCB4PVwiLTEwMFwiIHk9XCItMjUwXCIgd2lkdGg9XCIzMDBcIiBoZWlnaHQ9XCIzMDBcIiByeD1cIjkwXCIgcnk9XCI5MFwiIGZpbGw9XCIjODJjZWZmXCIgb3BhY2l0eT1cIjAuNFwiIHN0eWxlPVwiYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7IGFuaW1hdGlvbi1kZWxheTogMHM7XCI+XG4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT1cInRyYW5zZm9ybVwiIHR5cGU9XCJyb3RhdGVcIiBkdXI9XCIxc1wiIHJlcGVhdENvdW50PVwiaW5kZWZpbml0ZVwiIHZhbHVlcz1cIjAgNTAgLTEwMDs5MCA1MCAtMTAwXCIga2V5VGltZXM9XCIwOzFcIiBzdHlsZT1cImFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nOyBhbmltYXRpb24tZGVsYXk6IDBzO1wiLz5cbiAgPC9yZWN0PlxuXG4gIDxyZWN0IHg9XCItMTAwXCIgeT1cIi0yNjBcIiB3aWR0aD1cIjMwMFwiIGhlaWdodD1cIjMwMFwiIHJ4PVwiOTVcIiByeT1cIjk1XCIgZmlsbD1cIiNhNWRjZmZcIiBvcGFjaXR5PVwiMC40XCIgc3R5bGU9XCJhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZzsgYW5pbWF0aW9uLWRlbGF5OiAwcztcIj5cbiAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPVwidHJhbnNmb3JtXCIgdHlwZT1cInJvdGF0ZVwiIGR1cj1cIjEuNTE1MTUxNTE1MTUxNTE1MXNcIiByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIiB2YWx1ZXM9XCIwIDUwIC0xMTA7OTAgNTAgLTExMFwiIGtleVRpbWVzPVwiMDsxXCIgc3R5bGU9XCJhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZzsgYW5pbWF0aW9uLWRlbGF5OiAwcztcIi8+XG4gIDwvcmVjdD5cblxuICA8cmVjdCB4PVwiLTEwMFwiIHk9XCItMjcwXCIgd2lkdGg9XCIzMDBcIiBoZWlnaHQ9XCIzMDBcIiByeD1cIjEwMFwiIHJ5PVwiMTAwXCIgZmlsbD1cIiNmZmZmZmZcIiBvcGFjaXR5PVwiMC40XCIgc3R5bGU9XCJhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZzsgYW5pbWF0aW9uLWRlbGF5OiAwcztcIj5cbiAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPVwidHJhbnNmb3JtXCIgdHlwZT1cInJvdGF0ZVwiIGR1cj1cIjMuMDMwMzAzMDMwMzAzMDMwM3NcIiByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIiB2YWx1ZXM9XCIwIDUwIC0xMjA7OTAgNTAgLTEyMFwiIGtleVRpbWVzPVwiMDsxXCIgc3R5bGU9XCJhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZzsgYW5pbWF0aW9uLWRlbGF5OiAwcztcIi8+XG4gIDwvcmVjdD5cblxuPC9nPlxuPCEtLSBbbGRpb10gZ2VuZXJhdGVkIGJ5IGh0dHBzOi8vbG9hZGluZy5pby8gLS0+PC9zdmc+XG4gIGApO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc3Bpbm5lciwgJ3dpZHRoJywgJzQwcHgnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHNwaW5uZXIsICdoZWlnaHQnLCAnNDBweCcpO1xuXG4gICAgLy8gVGjDqm0gc3Bpbm5lciB2w6BvIHNwaW5uZXIgd3JhcHBlclxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5zcGlubmVyV3JhcHBlciwgc3Bpbm5lcik7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2FwcExvYWRpbmcnXSkge1xuICAgICAgaWYgKHRoaXMuYXBwTG9hZGluZykge1xuICAgICAgICB0aGlzLnNob3dTcGlubmVyKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhpZGVTcGlubmVyKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93U3Bpbm5lcigpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdmaWx0ZXInLCAnYmx1cigycHgpJyk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMuc3Bpbm5lcldyYXBwZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBoaWRlU3Bpbm5lcigpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2ZpbHRlcicpO1xuICAgIGlmICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGhpcy5zcGlubmVyV3JhcHBlcikpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLnNwaW5uZXJXcmFwcGVyKTtcbiAgICB9XG4gIH1cblxufVxuIl19
|