tnp-helpers 13.1.24 → 13.1.26
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/app.js +3 -3
- package/browser/README.md +24 -24
- package/browser/esm2020/lib/angular.helper.mjs +87 -87
- package/browser/esm2020/lib/base-component.mjs +49 -49
- package/browser/esm2020/lib/base-formly-component.mjs +112 -112
- package/browser/esm2020/lib/condition-wait.mjs +45 -45
- package/browser/esm2020/lib/constants.mjs +8 -8
- package/browser/esm2020/lib/dual-component-ctrl.mjs +118 -118
- package/browser/esm2020/lib/firedev-models.mjs +3 -3
- package/browser/esm2020/lib/helpers-array-obj.mjs +82 -82
- package/browser/esm2020/lib/helpers-browser.mjs +46 -46
- package/browser/esm2020/lib/helpers-console-gui.mjs +9 -9
- package/browser/esm2020/lib/helpers-environment.mjs +32 -32
- package/browser/esm2020/lib/helpers-numbers.mjs +7 -7
- package/browser/esm2020/lib/helpers-strings-regexes.mjs +50 -50
- package/browser/esm2020/lib/helpers-strings.mjs +252 -252
- package/browser/esm2020/lib/helpers.mjs +285 -285
- package/browser/esm2020/lib/index.mjs +15 -15
- package/browser/esm2020/lib/long-press.directive.mjs +112 -112
- package/browser/esm2020/lib/project.mjs +429 -429
- package/browser/esm2020/lib/resize-service.mjs +21 -21
- package/browser/esm2020/public-api.mjs +1 -1
- package/browser/esm2020/tnp-helpers.mjs +4 -4
- package/browser/fesm2015/tnp-helpers.mjs +1686 -1686
- package/browser/fesm2020/tnp-helpers.mjs +1676 -1676
- package/browser/lib/angular.helper.d.ts +35 -35
- package/browser/lib/base-component.d.ts +16 -16
- package/browser/lib/base-formly-component.d.ts +30 -30
- package/browser/lib/condition-wait.d.ts +7 -7
- package/browser/lib/constants.d.ts +6 -6
- package/browser/lib/dual-component-ctrl.d.ts +24 -24
- package/browser/lib/firedev-models.d.ts +12 -12
- package/browser/lib/helpers-array-obj.d.ts +14 -14
- package/browser/lib/helpers-browser.d.ts +10 -10
- package/browser/lib/helpers-console-gui.d.ts +5 -5
- package/browser/lib/helpers-environment.d.ts +4 -4
- package/browser/lib/helpers-numbers.d.ts +2 -2
- package/browser/lib/helpers-strings-regexes.d.ts +27 -27
- package/browser/lib/helpers-strings.d.ts +49 -49
- package/browser/lib/helpers.d.ts +33 -33
- package/browser/lib/index.d.ts +11 -11
- package/browser/lib/long-press.directive.d.ts +24 -24
- package/browser/lib/project.d.ts +93 -93
- package/browser/lib/resize-service.d.ts +8 -8
- package/browser/tnp-helpers.d.ts +4 -4
- package/client/README.md +24 -24
- package/client/esm2020/lib/angular.helper.mjs +87 -87
- package/client/esm2020/lib/base-component.mjs +49 -49
- package/client/esm2020/lib/base-formly-component.mjs +112 -112
- package/client/esm2020/lib/condition-wait.mjs +45 -45
- package/client/esm2020/lib/constants.mjs +8 -8
- package/client/esm2020/lib/dual-component-ctrl.mjs +118 -118
- package/client/esm2020/lib/firedev-models.mjs +3 -3
- package/client/esm2020/lib/helpers-array-obj.mjs +82 -82
- package/client/esm2020/lib/helpers-browser.mjs +46 -46
- package/client/esm2020/lib/helpers-console-gui.mjs +9 -9
- package/client/esm2020/lib/helpers-environment.mjs +32 -32
- package/client/esm2020/lib/helpers-numbers.mjs +7 -7
- package/client/esm2020/lib/helpers-strings-regexes.mjs +50 -50
- package/client/esm2020/lib/helpers-strings.mjs +252 -252
- package/client/esm2020/lib/helpers.mjs +285 -285
- package/client/esm2020/lib/index.mjs +15 -15
- package/client/esm2020/lib/long-press.directive.mjs +112 -112
- package/client/esm2020/lib/project.mjs +429 -429
- package/client/esm2020/lib/resize-service.mjs +21 -21
- package/client/esm2020/public-api.mjs +1 -1
- package/client/esm2020/tnp-helpers.mjs +4 -4
- package/client/fesm2015/tnp-helpers.mjs +1686 -1686
- package/client/fesm2020/tnp-helpers.mjs +1676 -1676
- package/client/lib/angular.helper.d.ts +35 -35
- package/client/lib/base-component.d.ts +16 -16
- package/client/lib/base-formly-component.d.ts +30 -30
- package/client/lib/condition-wait.d.ts +7 -7
- package/client/lib/constants.d.ts +6 -6
- package/client/lib/dual-component-ctrl.d.ts +24 -24
- package/client/lib/firedev-models.d.ts +12 -12
- package/client/lib/helpers-array-obj.d.ts +14 -14
- package/client/lib/helpers-browser.d.ts +10 -10
- package/client/lib/helpers-console-gui.d.ts +5 -5
- package/client/lib/helpers-environment.d.ts +4 -4
- package/client/lib/helpers-numbers.d.ts +2 -2
- package/client/lib/helpers-strings-regexes.d.ts +27 -27
- package/client/lib/helpers-strings.d.ts +49 -49
- package/client/lib/helpers.d.ts +33 -33
- package/client/lib/index.d.ts +11 -11
- package/client/lib/long-press.directive.d.ts +24 -24
- package/client/lib/project.d.ts +93 -93
- package/client/lib/resize-service.d.ts +8 -8
- package/client/tnp-helpers.d.ts +4 -4
- package/index.d.ts +1 -1
- package/lib/angular.helper.d.ts +35 -35
- package/lib/angular.helper.js +3 -3
- package/lib/base-component.d.ts +13 -13
- package/lib/base-component.js +3 -3
- package/lib/base-formly-component.d.ts +27 -27
- package/lib/base-formly-component.js +3 -3
- package/lib/condition-wait.d.ts +8 -8
- package/lib/constants.d.ts +7 -7
- package/lib/dual-component-ctrl.d.ts +24 -24
- package/lib/dual-component-ctrl.js +3 -3
- package/lib/firedev-models.d.ts +13 -13
- package/lib/git-project.d.ts +46 -45
- package/lib/helpers-array-obj.d.ts +15 -15
- package/lib/helpers-browser.d.ts +11 -11
- package/lib/helpers-cli-tool.backend.d.ts +55 -55
- package/lib/helpers-cli-tool.backend.js +1 -1
- package/lib/helpers-cli-tool.backend.js.map +1 -1
- package/lib/helpers-console-gui.d.ts +17 -17
- package/lib/helpers-dependencies.backend.d.ts +11 -11
- package/lib/helpers-environment.d.ts +5 -5
- package/lib/helpers-file-folders.backend.d.ts +84 -84
- package/lib/helpers-git.backend.d.ts +43 -43
- package/lib/helpers-json5.backend.d.ts +16 -16
- package/lib/helpers-morphi-framework.backend.d.ts +4 -4
- package/lib/helpers-network.backend.d.ts +8 -8
- package/lib/helpers-npm.backend.d.ts +3 -3
- package/lib/helpers-numbers.d.ts +3 -3
- package/lib/helpers-path.backend.d.ts +7 -7
- package/lib/helpers-process.backend.d.ts +58 -58
- package/lib/helpers-strings-regexes.d.ts +28 -28
- package/lib/helpers-strings.d.ts +50 -50
- package/lib/helpers-system-terminal.backend.d.ts +5 -5
- package/lib/helpers-vscode.backend.d.ts +5 -5
- package/lib/helpers.d.ts +74 -74
- package/lib/index.d.ts +12 -12
- package/lib/long-press.directive.d.ts +22 -22
- package/lib/merge-helpers.backend.d.ts +23 -23
- package/lib/project.d.ts +96 -96
- package/lib/project.js +3 -1
- package/lib/project.js.map +1 -1
- package/lib/resize-service.d.ts +6 -6
- package/lib/ts-code/index.d.ts +1 -1
- package/lib/ts-code/ts-code-extractor.d.ts +14 -14
- package/lib/ts-code/ts-code-modifier.backend.d.ts +12 -12
- package/package.json +5 -5
- package/package.json_devDependencies.json +222 -222
- package/package.json_tnp.json5 +44 -44
- package/tmp-environment.json +44 -42
- package/websql/README.md +24 -24
- package/websql/esm2020/lib/angular.helper.mjs +87 -87
- package/websql/esm2020/lib/base-component.mjs +49 -49
- package/websql/esm2020/lib/base-formly-component.mjs +112 -112
- package/websql/esm2020/lib/condition-wait.mjs +45 -45
- package/websql/esm2020/lib/constants.mjs +8 -8
- package/websql/esm2020/lib/dual-component-ctrl.mjs +118 -118
- package/websql/esm2020/lib/firedev-models.mjs +3 -3
- package/websql/esm2020/lib/helpers-array-obj.mjs +82 -82
- package/websql/esm2020/lib/helpers-browser.mjs +46 -46
- package/websql/esm2020/lib/helpers-console-gui.mjs +9 -9
- package/websql/esm2020/lib/helpers-environment.mjs +32 -32
- package/websql/esm2020/lib/helpers-numbers.mjs +7 -7
- package/websql/esm2020/lib/helpers-strings-regexes.mjs +50 -50
- package/websql/esm2020/lib/helpers-strings.mjs +252 -252
- package/websql/esm2020/lib/helpers.mjs +285 -285
- package/websql/esm2020/lib/index.mjs +15 -15
- package/websql/esm2020/lib/long-press.directive.mjs +112 -112
- package/websql/esm2020/lib/project.mjs +429 -429
- package/websql/esm2020/lib/resize-service.mjs +21 -21
- package/websql/esm2020/public-api.mjs +1 -1
- package/websql/esm2020/tnp-helpers.mjs +4 -4
- package/websql/fesm2015/tnp-helpers.mjs +1686 -1686
- package/websql/fesm2020/tnp-helpers.mjs +1676 -1676
- package/websql/lib/angular.helper.d.ts +35 -35
- package/websql/lib/base-component.d.ts +16 -16
- package/websql/lib/base-formly-component.d.ts +30 -30
- package/websql/lib/condition-wait.d.ts +7 -7
- package/websql/lib/constants.d.ts +6 -6
- package/websql/lib/dual-component-ctrl.d.ts +24 -24
- package/websql/lib/firedev-models.d.ts +12 -12
- package/websql/lib/helpers-array-obj.d.ts +14 -14
- package/websql/lib/helpers-browser.d.ts +10 -10
- package/websql/lib/helpers-console-gui.d.ts +5 -5
- package/websql/lib/helpers-environment.d.ts +4 -4
- package/websql/lib/helpers-numbers.d.ts +2 -2
- package/websql/lib/helpers-strings-regexes.d.ts +27 -27
- package/websql/lib/helpers-strings.d.ts +49 -49
- package/websql/lib/helpers.d.ts +33 -33
- package/websql/lib/index.d.ts +11 -11
- package/websql/lib/long-press.directive.d.ts +24 -24
- package/websql/lib/project.d.ts +93 -93
- package/websql/lib/resize-service.d.ts +8 -8
- package/websql/tnp-helpers.d.ts +4 -4
|
@@ -1,113 +1,113 @@
|
|
|
1
|
-
import { Directive, Input, Output, EventEmitter, HostBinding, HostListener } from '@angular/core'; /* */
|
|
2
|
-
/* */
|
|
3
|
-
/* */
|
|
4
|
-
/* */
|
|
5
|
-
/* */
|
|
6
|
-
/* */
|
|
7
|
-
/* */
|
|
8
|
-
import { _ } from 'tnp-core/browser';
|
|
9
|
-
import { Log, Level } from 'ng2-logger/browser';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
const log = Log.create(`[firedev-helpers] long-press`, Level.__NOTHING);
|
|
12
|
-
export class LongPress {
|
|
13
|
-
constructor() {
|
|
14
|
-
this.pressDuration = 1000;
|
|
15
|
-
this.onLongPress = new EventEmitter();
|
|
16
|
-
this.onLongPressing = new EventEmitter();
|
|
17
|
-
this.onLongPressEnd = new EventEmitter();
|
|
18
|
-
this.mouseX = 0;
|
|
19
|
-
this.mouseY = 0;
|
|
20
|
-
this.allowTrigger = false;
|
|
21
|
-
this.triggerEnd = _.debounce(() => {
|
|
22
|
-
this.endPress();
|
|
23
|
-
}, 500);
|
|
24
|
-
}
|
|
25
|
-
get press() { return this.pressing; }
|
|
26
|
-
get longPress() { return this.longPressing; }
|
|
27
|
-
onMouseDown(event) {
|
|
28
|
-
log.d(`MOUSE DOWN `);
|
|
29
|
-
if (event.which !== 1)
|
|
30
|
-
return;
|
|
31
|
-
this.allowTrigger = true;
|
|
32
|
-
this.mouseX = event.clientX;
|
|
33
|
-
this.mouseY = event.clientY;
|
|
34
|
-
this.pressing = true;
|
|
35
|
-
this.longPressing = false;
|
|
36
|
-
this.timeout = setTimeout(() => {
|
|
37
|
-
if (this.allowTrigger) {
|
|
38
|
-
this.longPressing = true;
|
|
39
|
-
log.d(`long pressing start pressDuration:${this.pressDuration} `);
|
|
40
|
-
this.onLongPress.emit(event);
|
|
41
|
-
this.loop(event);
|
|
42
|
-
}
|
|
43
|
-
}, this.pressDuration);
|
|
44
|
-
this.loop(event);
|
|
45
|
-
}
|
|
46
|
-
onMouseMove(event) {
|
|
47
|
-
if (this.pressing && !this.longPressing) {
|
|
48
|
-
const xThres = (event.clientX - this.mouseX) > 10;
|
|
49
|
-
const yThres = (event.clientY - this.mouseY) > 10;
|
|
50
|
-
if (xThres || yThres) {
|
|
51
|
-
this.endPress();
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
loop(event) {
|
|
56
|
-
if (this.longPressing) {
|
|
57
|
-
this.timeout = setTimeout(() => {
|
|
58
|
-
log.d(`emil longpressing`);
|
|
59
|
-
this.triggerEnd();
|
|
60
|
-
this.onLongPressing.emit(event);
|
|
61
|
-
this.loop(event);
|
|
62
|
-
}, 50);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
endPress(emit = true) {
|
|
66
|
-
this.allowTrigger = false;
|
|
67
|
-
clearTimeout(this.timeout);
|
|
68
|
-
this.longPressing = false;
|
|
69
|
-
this.pressing = false;
|
|
70
|
-
if (emit) {
|
|
71
|
-
log.d(`EMIT END`);
|
|
72
|
-
this.onLongPressEnd.emit(true);
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
log.d(`NOT EMIT END`);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
onMouseUp() {
|
|
79
|
-
this.endPress(false);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
LongPress.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: LongPress, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
83
|
-
LongPress.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: LongPress, selector: "[long-press]", inputs: { pressDuration: "pressDuration" }, outputs: { onLongPress: "onLongPress", onLongPressing: "onLongPressing", onLongPressEnd: "onLongPressEnd" }, host: { listeners: { "mousedown": "onMouseDown($event)", "mousemove": "onMouseMove($event)", "mouseup": "onMouseUp()" }, properties: { "class.press": "this.press", "class.longpress": "this.longPress" } }, ngImport: i0 });
|
|
84
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: LongPress, decorators: [{
|
|
85
|
-
type: Directive,
|
|
86
|
-
args: [{ selector: '[long-press]' }]
|
|
87
|
-
}], propDecorators: { pressDuration: [{
|
|
88
|
-
type: Input
|
|
89
|
-
}], onLongPress: [{
|
|
90
|
-
type: Output
|
|
91
|
-
}], onLongPressing: [{
|
|
92
|
-
type: Output
|
|
93
|
-
}], onLongPressEnd: [{
|
|
94
|
-
type: Output
|
|
95
|
-
}], press: [{
|
|
96
|
-
type: HostBinding,
|
|
97
|
-
args: ['class.press']
|
|
98
|
-
}], longPress: [{
|
|
99
|
-
type: HostBinding,
|
|
100
|
-
args: ['class.longpress']
|
|
101
|
-
}], onMouseDown: [{
|
|
102
|
-
type: HostListener,
|
|
103
|
-
args: ['mousedown', ['$event']]
|
|
104
|
-
}], onMouseMove: [{
|
|
105
|
-
type: HostListener,
|
|
106
|
-
args: ['mousemove', ['$event']]
|
|
107
|
-
}], onMouseUp: [{
|
|
108
|
-
type: HostListener,
|
|
109
|
-
args: ['mouseup']
|
|
110
|
-
}] } });
|
|
111
|
-
;
|
|
112
|
-
({}); // @--end-of-file-for-module=tnp-helpers lib/long-press.directive.ts
|
|
1
|
+
import { Directive, Input, Output, EventEmitter, HostBinding, HostListener } from '@angular/core'; /* */
|
|
2
|
+
/* */
|
|
3
|
+
/* */
|
|
4
|
+
/* */
|
|
5
|
+
/* */
|
|
6
|
+
/* */
|
|
7
|
+
/* */
|
|
8
|
+
import { _ } from 'tnp-core/browser';
|
|
9
|
+
import { Log, Level } from 'ng2-logger/browser';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
const log = Log.create(`[firedev-helpers] long-press`, Level.__NOTHING);
|
|
12
|
+
export class LongPress {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.pressDuration = 1000;
|
|
15
|
+
this.onLongPress = new EventEmitter();
|
|
16
|
+
this.onLongPressing = new EventEmitter();
|
|
17
|
+
this.onLongPressEnd = new EventEmitter();
|
|
18
|
+
this.mouseX = 0;
|
|
19
|
+
this.mouseY = 0;
|
|
20
|
+
this.allowTrigger = false;
|
|
21
|
+
this.triggerEnd = _.debounce(() => {
|
|
22
|
+
this.endPress();
|
|
23
|
+
}, 500);
|
|
24
|
+
}
|
|
25
|
+
get press() { return this.pressing; }
|
|
26
|
+
get longPress() { return this.longPressing; }
|
|
27
|
+
onMouseDown(event) {
|
|
28
|
+
log.d(`MOUSE DOWN `);
|
|
29
|
+
if (event.which !== 1)
|
|
30
|
+
return;
|
|
31
|
+
this.allowTrigger = true;
|
|
32
|
+
this.mouseX = event.clientX;
|
|
33
|
+
this.mouseY = event.clientY;
|
|
34
|
+
this.pressing = true;
|
|
35
|
+
this.longPressing = false;
|
|
36
|
+
this.timeout = setTimeout(() => {
|
|
37
|
+
if (this.allowTrigger) {
|
|
38
|
+
this.longPressing = true;
|
|
39
|
+
log.d(`long pressing start pressDuration:${this.pressDuration} `);
|
|
40
|
+
this.onLongPress.emit(event);
|
|
41
|
+
this.loop(event);
|
|
42
|
+
}
|
|
43
|
+
}, this.pressDuration);
|
|
44
|
+
this.loop(event);
|
|
45
|
+
}
|
|
46
|
+
onMouseMove(event) {
|
|
47
|
+
if (this.pressing && !this.longPressing) {
|
|
48
|
+
const xThres = (event.clientX - this.mouseX) > 10;
|
|
49
|
+
const yThres = (event.clientY - this.mouseY) > 10;
|
|
50
|
+
if (xThres || yThres) {
|
|
51
|
+
this.endPress();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
loop(event) {
|
|
56
|
+
if (this.longPressing) {
|
|
57
|
+
this.timeout = setTimeout(() => {
|
|
58
|
+
log.d(`emil longpressing`);
|
|
59
|
+
this.triggerEnd();
|
|
60
|
+
this.onLongPressing.emit(event);
|
|
61
|
+
this.loop(event);
|
|
62
|
+
}, 50);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
endPress(emit = true) {
|
|
66
|
+
this.allowTrigger = false;
|
|
67
|
+
clearTimeout(this.timeout);
|
|
68
|
+
this.longPressing = false;
|
|
69
|
+
this.pressing = false;
|
|
70
|
+
if (emit) {
|
|
71
|
+
log.d(`EMIT END`);
|
|
72
|
+
this.onLongPressEnd.emit(true);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
log.d(`NOT EMIT END`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
onMouseUp() {
|
|
79
|
+
this.endPress(false);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
LongPress.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: LongPress, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
83
|
+
LongPress.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: LongPress, selector: "[long-press]", inputs: { pressDuration: "pressDuration" }, outputs: { onLongPress: "onLongPress", onLongPressing: "onLongPressing", onLongPressEnd: "onLongPressEnd" }, host: { listeners: { "mousedown": "onMouseDown($event)", "mousemove": "onMouseMove($event)", "mouseup": "onMouseUp()" }, properties: { "class.press": "this.press", "class.longpress": "this.longPress" } }, ngImport: i0 });
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: LongPress, decorators: [{
|
|
85
|
+
type: Directive,
|
|
86
|
+
args: [{ selector: '[long-press]' }]
|
|
87
|
+
}], propDecorators: { pressDuration: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}], onLongPress: [{
|
|
90
|
+
type: Output
|
|
91
|
+
}], onLongPressing: [{
|
|
92
|
+
type: Output
|
|
93
|
+
}], onLongPressEnd: [{
|
|
94
|
+
type: Output
|
|
95
|
+
}], press: [{
|
|
96
|
+
type: HostBinding,
|
|
97
|
+
args: ['class.press']
|
|
98
|
+
}], longPress: [{
|
|
99
|
+
type: HostBinding,
|
|
100
|
+
args: ['class.longpress']
|
|
101
|
+
}], onMouseDown: [{
|
|
102
|
+
type: HostListener,
|
|
103
|
+
args: ['mousedown', ['$event']]
|
|
104
|
+
}], onMouseMove: [{
|
|
105
|
+
type: HostListener,
|
|
106
|
+
args: ['mousemove', ['$event']]
|
|
107
|
+
}], onMouseUp: [{
|
|
108
|
+
type: HostListener,
|
|
109
|
+
args: ['mouseup']
|
|
110
|
+
}] } });
|
|
111
|
+
;
|
|
112
|
+
({}); // @--end-of-file-for-module=tnp-helpers lib/long-press.directive.ts
|
|
113
113
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9uZy1wcmVzcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlL3RucC1oZWxwZXJzL3Byb2plY3RzL3RucC1oZWxwZXJzL3NyYy9saWIvbG9uZy1wcmVzcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFJLFNBQVMsRUFBSSxLQUFLLEVBQUksTUFBTSxFQUFJLFlBQVksRUFBSSxXQUFXLEVBQUksWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDLENBQUEsS0FBSztBQUNuSCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFHTCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFDaEQsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyw4QkFBOEIsRUFDakQsS0FBSyxDQUFDLFNBQVMsQ0FDbEIsQ0FBQTtBQUdELE1BQU0sT0FBTyxTQUFTO0lBRHRCO1FBR1csa0JBQWEsR0FBVyxJQUFJLENBQUM7UUFFNUIsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNwRCxtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZELG1CQUFjLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFLekQsV0FBTSxHQUFXLENBQUMsQ0FBQztRQUNuQixXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBUTNCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0tBb0VSO0lBN0VDLElBQ0ksS0FBSyxLQUFLLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFckMsSUFDSSxTQUFTLEtBQUssT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQVE3QyxXQUFXLENBQUMsS0FBSztRQUVmLEdBQUcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFckIsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUM7WUFBRSxPQUFPO1FBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXpCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFFNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFFMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQzdCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLEdBQUcsQ0FBQyxDQUFDLENBQUMsc0NBQXNDLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNsQjtRQUNILENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBR0QsV0FBVyxDQUFDLEtBQUs7UUFDZixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3ZDLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2xELE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2xELElBQUksTUFBTSxJQUFJLE1BQU0sRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ2pCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQUs7UUFDUixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUM3QixHQUFHLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUE7Z0JBQzFCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ1I7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJO1FBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxJQUFJLEVBQUU7WUFDUixHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2hDO2FBQU07WUFDTCxHQUFHLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFBO1NBQ3RCO0lBQ0gsQ0FBQztJQUdELFNBQVM7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7O3VHQXpGVSxTQUFTOzJGQUFULFNBQVM7NEZBQVQsU0FBUztrQkFEckIsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUU7OEJBRzVCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBU0gsS0FBSztzQkFEUixXQUFXO3VCQUFDLGFBQWE7Z0JBSXRCLFNBQVM7c0JBRFosV0FBVzt1QkFBQyxpQkFBaUI7Z0JBUzlCLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBMkJyQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQW9DckMsU0FBUztzQkFEUixZQUFZO3VCQUFDLFNBQVM7O0FBT3hCLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0VBQW9FIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgICBEaXJlY3RpdmUsICAgSW5wdXQsICAgT3V0cHV0LCAgIEV2ZW50RW1pdHRlciwgICBIb3N0QmluZGluZywgICBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuXG5cbmltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcbmltcG9ydCB7IExvZywgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL2Jyb3dzZXInO1xuY29uc3QgbG9nID0gTG9nLmNyZWF0ZShgW2ZpcmVkZXYtaGVscGVyc10gbG9uZy1wcmVzc2BcbiAgLCBMZXZlbC5fX05PVEhJTkdcbilcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2xvbmctcHJlc3NdJyB9KVxuZXhwb3J0IGNsYXNzIExvbmdQcmVzcyB7XG5cbiAgQElucHV0KCkgcHJlc3NEdXJhdGlvbjogbnVtYmVyID0gMTAwMDtcblxuICBAT3V0cHV0KCkgb25Mb25nUHJlc3M6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Mb25nUHJlc3Npbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Mb25nUHJlc3NFbmQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgcHJlc3Npbmc6IGJvb2xlYW47XG4gIHByaXZhdGUgbG9uZ1ByZXNzaW5nOiBib29sZWFuO1xuICBwcml2YXRlIHRpbWVvdXQ6IGFueTtcbiAgcHJpdmF0ZSBtb3VzZVg6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgbW91c2VZOiBudW1iZXIgPSAwO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucHJlc3MnKVxuICBnZXQgcHJlc3MoKSB7IHJldHVybiB0aGlzLnByZXNzaW5nOyB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5sb25ncHJlc3MnKVxuICBnZXQgbG9uZ1ByZXNzKCkgeyByZXR1cm4gdGhpcy5sb25nUHJlc3Npbmc7IH1cblxuICBhbGxvd1RyaWdnZXIgPSBmYWxzZTtcbiAgdHJpZ2dlckVuZCA9IF8uZGVib3VuY2UoKCkgPT4ge1xuICAgIHRoaXMuZW5kUHJlc3MoKTtcbiAgfSwgNTAwKVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VEb3duKGV2ZW50KSB7XG5cbiAgICBsb2cuZChgTU9VU0UgRE9XTiBgKTtcblxuICAgIGlmIChldmVudC53aGljaCAhPT0gMSkgcmV0dXJuO1xuICAgIHRoaXMuYWxsb3dUcmlnZ2VyID0gdHJ1ZTtcblxuICAgIHRoaXMubW91c2VYID0gZXZlbnQuY2xpZW50WDtcbiAgICB0aGlzLm1vdXNlWSA9IGV2ZW50LmNsaWVudFk7XG5cbiAgICB0aGlzLnByZXNzaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmxvbmdQcmVzc2luZyA9IGZhbHNlO1xuXG4gICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5hbGxvd1RyaWdnZXIpIHtcbiAgICAgICAgdGhpcy5sb25nUHJlc3NpbmcgPSB0cnVlO1xuICAgICAgICBsb2cuZChgbG9uZyBwcmVzc2luZyBzdGFydCAgcHJlc3NEdXJhdGlvbjoke3RoaXMucHJlc3NEdXJhdGlvbn0gYCk7XG4gICAgICAgIHRoaXMub25Mb25nUHJlc3MuZW1pdChldmVudCk7XG4gICAgICAgIHRoaXMubG9vcChldmVudCk7XG4gICAgICB9XG4gICAgfSwgdGhpcy5wcmVzc0R1cmF0aW9uKTtcblxuICAgIHRoaXMubG9vcChldmVudCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZW1vdmUnLCBbJyRldmVudCddKVxuICBvbk1vdXNlTW92ZShldmVudCkge1xuICAgIGlmICh0aGlzLnByZXNzaW5nICYmICF0aGlzLmxvbmdQcmVzc2luZykge1xuICAgICAgY29uc3QgeFRocmVzID0gKGV2ZW50LmNsaWVudFggLSB0aGlzLm1vdXNlWCkgPiAxMDtcbiAgICAgIGNvbnN0IHlUaHJlcyA9IChldmVudC5jbGllbnRZIC0gdGhpcy5tb3VzZVkpID4gMTA7XG4gICAgICBpZiAoeFRocmVzIHx8IHlUaHJlcykge1xuICAgICAgICB0aGlzLmVuZFByZXNzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbG9vcChldmVudCkge1xuICAgIGlmICh0aGlzLmxvbmdQcmVzc2luZykge1xuICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGxvZy5kKGBlbWlsIGxvbmdwcmVzc2luZ2ApXG4gICAgICAgIHRoaXMudHJpZ2dlckVuZCgpO1xuICAgICAgICB0aGlzLm9uTG9uZ1ByZXNzaW5nLmVtaXQoZXZlbnQpO1xuICAgICAgICB0aGlzLmxvb3AoZXZlbnQpO1xuICAgICAgfSwgNTApO1xuICAgIH1cbiAgfVxuXG4gIGVuZFByZXNzKGVtaXQgPSB0cnVlKSB7XG4gICAgdGhpcy5hbGxvd1RyaWdnZXIgPSBmYWxzZTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcbiAgICB0aGlzLmxvbmdQcmVzc2luZyA9IGZhbHNlO1xuICAgIHRoaXMucHJlc3NpbmcgPSBmYWxzZTtcbiAgICBpZiAoZW1pdCkge1xuICAgICAgbG9nLmQoYEVNSVQgRU5EYClcbiAgICAgIHRoaXMub25Mb25nUHJlc3NFbmQuZW1pdCh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmQoYE5PVCBFTUlUIEVORGApXG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2V1cCcpXG4gIG9uTW91c2VVcCgpIHtcbiAgICB0aGlzLmVuZFByZXNzKGZhbHNlKTtcbiAgfVxuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10bnAtaGVscGVycyBsaWIvbG9uZy1wcmVzcy5kaXJlY3RpdmUudHMiXX0=
|