@vgip/meta-ui 1.7.0 → 1.7.3

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.
Files changed (185) hide show
  1. package/{esm2020 → esm2022}/lib/common/metaAutofocus.directive.mjs +4 -4
  2. package/esm2022/lib/common/metaIcons.pipe.mjs +29 -0
  3. package/esm2022/lib/common/metaModel.pipe.mjs +23 -0
  4. package/esm2022/lib/common/metaNormalizer.mjs +341 -0
  5. package/{esm2020 → esm2022}/lib/common/metaStripHtml.pipe.mjs +4 -4
  6. package/esm2022/lib/common/utils/colorThemes.mjs +77 -0
  7. package/esm2022/lib/common/utils/indexedDbStore/index.mjs +218 -0
  8. package/{esm2020 → esm2022}/lib/common/utils/templateBuilder.mjs +3 -3
  9. package/esm2022/lib/fieldAbstract.mjs +291 -0
  10. package/{esm2020 → esm2022}/lib/fieldBoolean/index.mjs +4 -4
  11. package/{esm2020 → esm2022}/lib/fieldComposite/index.mjs +4 -4
  12. package/esm2022/lib/fieldDatetime/index.mjs +365 -0
  13. package/{esm2020 → esm2022}/lib/fieldHidden/index.mjs +4 -4
  14. package/{esm2020 → esm2022}/lib/fieldInput/index.mjs +5 -5
  15. package/esm2022/lib/fieldList/index.mjs +69 -0
  16. package/{esm2020 → esm2022}/lib/fieldRadio/index.mjs +5 -5
  17. package/esm2022/lib/fieldReference/index.mjs +829 -0
  18. package/esm2022/lib/fieldRichtext/index.mjs +95 -0
  19. package/esm2022/lib/fieldSelect/index.mjs +495 -0
  20. package/{esm2020 → esm2022}/lib/fieldText/index.mjs +5 -5
  21. package/esm2022/lib/fieldUnknown/index.mjs +19 -0
  22. package/esm2022/lib/index.mjs +163 -0
  23. package/esm2022/lib/layout/index.mjs +155 -0
  24. package/{esm2020 → esm2022}/lib/metaField/index.mjs +7 -7
  25. package/esm2022/lib/refDialog/index.mjs +135 -0
  26. package/esm2022/lib/resource/index.mjs +495 -0
  27. package/{esm2020 → esm2022}/lib/resourceCard/index.mjs +4 -4
  28. package/{esm2020 → esm2022}/lib/services/metaContext/index.mjs +4 -4
  29. package/esm2022/lib/services/metaMsg/index.mjs +84 -0
  30. package/esm2022/lib/services/metaReference/index.mjs +89 -0
  31. package/{esm2020 → esm2022}/lib/services/metaResource/index.mjs +7 -7
  32. package/{esm2020 → esm2022}/lib/services/metaResource/metaHttpClient.mjs +5 -5
  33. package/{esm2020 → esm2022}/lib/services/metaTracker/index.mjs +4 -4
  34. package/esm2022/lib/services/resourceDrafts/index.mjs +69 -0
  35. package/{fesm2020/vgip-meta-ui-fieldAbstract-f7d80db6.mjs → fesm2022/vgip-meta-ui-fieldAbstract-9955be39.mjs} +10 -8
  36. package/fesm2022/vgip-meta-ui-fieldAbstract-9955be39.mjs.map +1 -0
  37. package/{fesm2020/vgip-meta-ui-index-301b28cd.mjs → fesm2022/vgip-meta-ui-index-39011b04.mjs} +20 -20
  38. package/{fesm2020/vgip-meta-ui-index-301b28cd.mjs.map → fesm2022/vgip-meta-ui-index-39011b04.mjs.map} +1 -1
  39. package/{fesm2020/vgip-meta-ui-index-4fcefde0.mjs → fesm2022/vgip-meta-ui-index-3bc3d41b.mjs} +88 -56
  40. package/fesm2022/vgip-meta-ui-index-3bc3d41b.mjs.map +1 -0
  41. package/fesm2022/vgip-meta-ui-index-3fda8c0e.mjs +74 -0
  42. package/fesm2022/vgip-meta-ui-index-3fda8c0e.mjs.map +1 -0
  43. package/fesm2022/vgip-meta-ui-index-5871a6f2.mjs +95 -0
  44. package/fesm2022/vgip-meta-ui-index-5871a6f2.mjs.map +1 -0
  45. package/fesm2022/vgip-meta-ui-index-5891b8e7.mjs +24 -0
  46. package/fesm2022/vgip-meta-ui-index-5891b8e7.mjs.map +1 -0
  47. package/{fesm2020/vgip-meta-ui-index-87041aad.mjs → fesm2022/vgip-meta-ui-index-5d13f5e6.mjs} +5 -5
  48. package/{fesm2015/vgip-meta-ui-index-87041aad.mjs.map → fesm2022/vgip-meta-ui-index-5d13f5e6.mjs.map} +1 -1
  49. package/fesm2022/vgip-meta-ui-index-9e4137fe.mjs +68 -0
  50. package/fesm2022/vgip-meta-ui-index-9e4137fe.mjs.map +1 -0
  51. package/fesm2022/vgip-meta-ui-index-a2a973a6.mjs +862 -0
  52. package/fesm2022/vgip-meta-ui-index-a2a973a6.mjs.map +1 -0
  53. package/{fesm2015/vgip-meta-ui-index-81aa79dc.mjs → fesm2022/vgip-meta-ui-index-af4eda3c.mjs} +8 -8
  54. package/fesm2022/vgip-meta-ui-index-af4eda3c.mjs.map +1 -0
  55. package/fesm2022/vgip-meta-ui-index-b0a76073.mjs +97 -0
  56. package/fesm2022/vgip-meta-ui-index-b0a76073.mjs.map +1 -0
  57. package/fesm2022/vgip-meta-ui-index-b48e32ce.mjs +502 -0
  58. package/fesm2022/vgip-meta-ui-index-b48e32ce.mjs.map +1 -0
  59. package/{fesm2020/vgip-meta-ui-index-2b20afc8.mjs → fesm2022/vgip-meta-ui-index-b6fcc07d.mjs} +10 -8
  60. package/fesm2022/vgip-meta-ui-index-b6fcc07d.mjs.map +1 -0
  61. package/{fesm2015/vgip-meta-ui-index-bf5b6c0f.mjs → fesm2022/vgip-meta-ui-index-c39ea0ec.mjs} +6 -6
  62. package/{fesm2020/vgip-meta-ui-index-bf5b6c0f.mjs.map → fesm2022/vgip-meta-ui-index-c39ea0ec.mjs.map} +1 -1
  63. package/{fesm2020/vgip-meta-ui-index-6e77c362.mjs → fesm2022/vgip-meta-ui-index-ea5c2466.mjs} +6 -6
  64. package/fesm2022/vgip-meta-ui-index-ea5c2466.mjs.map +1 -0
  65. package/{fesm2020/vgip-meta-ui-index-b92a559b.mjs → fesm2022/vgip-meta-ui-index-fef499eb.mjs} +6 -6
  66. package/{fesm2020/vgip-meta-ui-index-b92a559b.mjs.map → fesm2022/vgip-meta-ui-index-fef499eb.mjs.map} +1 -1
  67. package/fesm2022/vgip-meta-ui-metaModel.pipe-6b803e66.mjs +26 -0
  68. package/fesm2022/vgip-meta-ui-metaModel.pipe-6b803e66.mjs.map +1 -0
  69. package/{fesm2015 → fesm2022}/vgip-meta-ui.mjs +108 -103
  70. package/fesm2022/vgip-meta-ui.mjs.map +1 -0
  71. package/lib/common/metaAutofocus.directive.d.ts +1 -1
  72. package/lib/common/metaIcons.pipe.d.ts +1 -1
  73. package/lib/common/metaModel.pipe.d.ts +1 -2
  74. package/lib/common/utils/indexedDbStore/index.d.ts +2 -2
  75. package/lib/fieldAbstract.d.ts +0 -4
  76. package/lib/fieldBoolean/index.d.ts +1 -1
  77. package/lib/fieldComposite/index.d.ts +1 -1
  78. package/lib/fieldRadio/index.d.ts +1 -1
  79. package/lib/fieldReference/index.d.ts +1 -1
  80. package/lib/fieldRichtext/index.d.ts +6 -8
  81. package/lib/fieldSelect/index.d.ts +1 -1
  82. package/lib/fieldText/index.d.ts +1 -1
  83. package/lib/layout/index.d.ts +5 -5
  84. package/lib/metaField/index.d.ts +1 -1
  85. package/lib/refDialog/index.d.ts +3 -3
  86. package/lib/resource/index.d.ts +2 -2
  87. package/lib/resourceCard/index.d.ts +1 -1
  88. package/package.json +8 -14
  89. package/esm2020/lib/common/metaIcons.pipe.mjs +0 -29
  90. package/esm2020/lib/common/metaModel.pipe.mjs +0 -25
  91. package/esm2020/lib/common/metaNormalizer.mjs +0 -327
  92. package/esm2020/lib/common/utils/colorThemes.mjs +0 -79
  93. package/esm2020/lib/common/utils/indexedDbStore/index.mjs +0 -218
  94. package/esm2020/lib/fieldAbstract.mjs +0 -287
  95. package/esm2020/lib/fieldDatetime/index.mjs +0 -363
  96. package/esm2020/lib/fieldList/index.mjs +0 -69
  97. package/esm2020/lib/fieldReference/index.mjs +0 -825
  98. package/esm2020/lib/fieldRichtext/index.mjs +0 -85
  99. package/esm2020/lib/fieldSelect/index.mjs +0 -490
  100. package/esm2020/lib/fieldUnknown/index.mjs +0 -19
  101. package/esm2020/lib/index.mjs +0 -158
  102. package/esm2020/lib/layout/index.mjs +0 -149
  103. package/esm2020/lib/refDialog/index.mjs +0 -127
  104. package/esm2020/lib/resource/index.mjs +0 -491
  105. package/esm2020/lib/services/metaMsg/index.mjs +0 -84
  106. package/esm2020/lib/services/metaReference/index.mjs +0 -89
  107. package/esm2020/lib/services/resourceDrafts/index.mjs +0 -68
  108. package/fesm2015/vgip-meta-ui-fieldAbstract-f7d80db6.mjs +0 -397
  109. package/fesm2015/vgip-meta-ui-fieldAbstract-f7d80db6.mjs.map +0 -1
  110. package/fesm2015/vgip-meta-ui-index-1d2b4c69.mjs +0 -68
  111. package/fesm2015/vgip-meta-ui-index-1d2b4c69.mjs.map +0 -1
  112. package/fesm2015/vgip-meta-ui-index-2737c81e.mjs +0 -1900
  113. package/fesm2015/vgip-meta-ui-index-2737c81e.mjs.map +0 -1
  114. package/fesm2015/vgip-meta-ui-index-2b20afc8.mjs +0 -368
  115. package/fesm2015/vgip-meta-ui-index-2b20afc8.mjs.map +0 -1
  116. package/fesm2015/vgip-meta-ui-index-3eefa50a.mjs +0 -75
  117. package/fesm2015/vgip-meta-ui-index-3eefa50a.mjs.map +0 -1
  118. package/fesm2015/vgip-meta-ui-index-476b6cb7.mjs +0 -24
  119. package/fesm2015/vgip-meta-ui-index-476b6cb7.mjs.map +0 -1
  120. package/fesm2015/vgip-meta-ui-index-4b8d731c.mjs +0 -151
  121. package/fesm2015/vgip-meta-ui-index-4b8d731c.mjs.map +0 -1
  122. package/fesm2015/vgip-meta-ui-index-4ecdd48a.mjs +0 -72
  123. package/fesm2015/vgip-meta-ui-index-4ecdd48a.mjs.map +0 -1
  124. package/fesm2015/vgip-meta-ui-index-62be0e3e.mjs +0 -858
  125. package/fesm2015/vgip-meta-ui-index-62be0e3e.mjs.map +0 -1
  126. package/fesm2015/vgip-meta-ui-index-640f8e62.mjs +0 -95
  127. package/fesm2015/vgip-meta-ui-index-640f8e62.mjs.map +0 -1
  128. package/fesm2015/vgip-meta-ui-index-695384af.mjs +0 -88
  129. package/fesm2015/vgip-meta-ui-index-695384af.mjs.map +0 -1
  130. package/fesm2015/vgip-meta-ui-index-6e77c362.mjs +0 -130
  131. package/fesm2015/vgip-meta-ui-index-6e77c362.mjs.map +0 -1
  132. package/fesm2015/vgip-meta-ui-index-81aa79dc.mjs.map +0 -1
  133. package/fesm2015/vgip-meta-ui-index-87041aad.mjs +0 -23
  134. package/fesm2015/vgip-meta-ui-index-a76ba482.mjs +0 -498
  135. package/fesm2015/vgip-meta-ui-index-a76ba482.mjs.map +0 -1
  136. package/fesm2015/vgip-meta-ui-index-bf5b6c0f.mjs.map +0 -1
  137. package/fesm2015/vgip-meta-ui-metaModel.pipe-4b068359.mjs +0 -28
  138. package/fesm2015/vgip-meta-ui-metaModel.pipe-4b068359.mjs.map +0 -1
  139. package/fesm2015/vgip-meta-ui.mjs.map +0 -1
  140. package/fesm2020/vgip-meta-ui-fieldAbstract-f7d80db6.mjs.map +0 -1
  141. package/fesm2020/vgip-meta-ui-index-1d2b4c69.mjs +0 -68
  142. package/fesm2020/vgip-meta-ui-index-1d2b4c69.mjs.map +0 -1
  143. package/fesm2020/vgip-meta-ui-index-2b20afc8.mjs.map +0 -1
  144. package/fesm2020/vgip-meta-ui-index-476b6cb7.mjs +0 -24
  145. package/fesm2020/vgip-meta-ui-index-476b6cb7.mjs.map +0 -1
  146. package/fesm2020/vgip-meta-ui-index-4c4a4daf.mjs +0 -858
  147. package/fesm2020/vgip-meta-ui-index-4c4a4daf.mjs.map +0 -1
  148. package/fesm2020/vgip-meta-ui-index-4fcefde0.mjs.map +0 -1
  149. package/fesm2020/vgip-meta-ui-index-640f8e62.mjs +0 -95
  150. package/fesm2020/vgip-meta-ui-index-640f8e62.mjs.map +0 -1
  151. package/fesm2020/vgip-meta-ui-index-695384af.mjs +0 -88
  152. package/fesm2020/vgip-meta-ui-index-695384af.mjs.map +0 -1
  153. package/fesm2020/vgip-meta-ui-index-6e77c362.mjs.map +0 -1
  154. package/fesm2020/vgip-meta-ui-index-81aa79dc.mjs +0 -460
  155. package/fesm2020/vgip-meta-ui-index-81aa79dc.mjs.map +0 -1
  156. package/fesm2020/vgip-meta-ui-index-87041aad.mjs.map +0 -1
  157. package/fesm2020/vgip-meta-ui-index-aee28354.mjs +0 -497
  158. package/fesm2020/vgip-meta-ui-index-aee28354.mjs.map +0 -1
  159. package/fesm2020/vgip-meta-ui-index-bf5b6c0f.mjs +0 -61
  160. package/fesm2020/vgip-meta-ui-index-f7370960.mjs +0 -74
  161. package/fesm2020/vgip-meta-ui-index-f7370960.mjs.map +0 -1
  162. package/fesm2020/vgip-meta-ui-metaModel.pipe-4b068359.mjs +0 -28
  163. package/fesm2020/vgip-meta-ui-metaModel.pipe-4b068359.mjs.map +0 -1
  164. package/fesm2020/vgip-meta-ui-relativeTimeBuilder-31791ce4.mjs +0 -51
  165. package/fesm2020/vgip-meta-ui-relativeTimeBuilder-31791ce4.mjs.map +0 -1
  166. package/fesm2020/vgip-meta-ui.mjs +0 -524
  167. package/fesm2020/vgip-meta-ui.mjs.map +0 -1
  168. /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/boolean.mjs +0 -0
  169. /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/datetime.mjs +0 -0
  170. /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/index.mjs +0 -0
  171. /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/number.mjs +0 -0
  172. /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/options.mjs +0 -0
  173. /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/radio.mjs +0 -0
  174. /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/reference.mjs +0 -0
  175. /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/richtext.mjs +0 -0
  176. /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/string.mjs +0 -0
  177. /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/text.mjs +0 -0
  178. /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/uniqueNameFilter.mjs +0 -0
  179. /package/{esm2020 → esm2022}/lib/common/utils/relativeTimeBuilder.mjs +0 -0
  180. /package/{esm2020 → esm2022}/lib/common/utils/resourceCardLabel.mjs +0 -0
  181. /package/{esm2020 → esm2022}/lib/common/utils/smartProp.mjs +0 -0
  182. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  183. /package/{esm2020 → esm2022}/vgip-meta-ui.mjs +0 -0
  184. /package/{fesm2015 → fesm2022}/vgip-meta-ui-relativeTimeBuilder-31791ce4.mjs +0 -0
  185. /package/{fesm2015 → fesm2022}/vgip-meta-ui-relativeTimeBuilder-31791ce4.mjs.map +0 -0
@@ -1,218 +0,0 @@
1
- /*
2
- * @Author: Alexander.Vangelov@vonage.com
3
- * @Date: 2020-02-10 18:47:45
4
- * @Last Modified by: Alexander.Vangelov@vonage.com
5
- * @Last Modified time: 2020-02-28 13:29:23
6
- */
7
- export class IndexedDbStore {
8
- constructor(dbName = 'vgip') {
9
- this.dbName = dbName;
10
- this.indxDb = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
11
- }
12
- _getDb(callback) {
13
- const self = this;
14
- if (this.db) {
15
- return callback(null, this.db);
16
- }
17
- const req = this.indxDb.open(this.dbName);
18
- req.onupgradeneeded = (ev) => {
19
- self.db = ev.target.result;
20
- const objectStore = self.db.createObjectStore('Draft', { keyPath: 'id', autoIncrement: true });
21
- objectStore.createIndex('contextIndex', 'context', { unique: false });
22
- objectStore.createIndex('contextintegrationIndex', ['context', 'integration'], { unique: false });
23
- objectStore.createIndex('contextintegrationresourceIndex', ['context', 'integration', 'resource'], { unique: true });
24
- };
25
- if (callback) {
26
- req.onsuccess = (ev) => {
27
- self.db = ev.target.result;
28
- callback(null, self.db);
29
- };
30
- }
31
- req.onerror = (ev) => {
32
- if (callback) {
33
- callback(ev.error);
34
- }
35
- };
36
- }
37
- initCollection(collectionName, items = [], callback) {
38
- const self = this;
39
- this._getDb((err) => {
40
- if (err && callback) {
41
- return callback(err);
42
- }
43
- if (callback) {
44
- callback(null, self.db);
45
- }
46
- });
47
- }
48
- reset(callback) {
49
- this._getDb((err) => {
50
- if (err) {
51
- return callback(err);
52
- }
53
- this.db.close();
54
- this.indxDb.deleteDatabase(this.dbName);
55
- delete this.db;
56
- this._getDb(callback); // eslint-disable-line no-underscore-dangle
57
- });
58
- }
59
- findById(collectionName, id, callback) {
60
- const tx = this.db.transaction([collectionName]);
61
- const store = tx.objectStore(collectionName);
62
- const request = store.get(parseInt(`${id}`, 10));
63
- if (callback) {
64
- request.onerror = () => {
65
- callback(request.error);
66
- };
67
- }
68
- request.onsuccess = () => {
69
- if (!request.result) {
70
- callback({ message: 'Not Found' });
71
- }
72
- else if (callback) {
73
- callback(null, request.result);
74
- }
75
- };
76
- }
77
- destroyById(collectionName, id, callback) {
78
- const tx = this.db.transaction([collectionName], 'readwrite');
79
- const store = tx.objectStore(collectionName);
80
- const request = store.delete(parseInt(`${id}`, 10));
81
- if (callback) {
82
- request.onerror = () => {
83
- callback(request.error);
84
- };
85
- }
86
- request.onsuccess = () => {
87
- if (callback) {
88
- callback(null, request.result);
89
- }
90
- };
91
- }
92
- findOne(collectionName, conditions, options, callback) {
93
- const tx = this.db.transaction([collectionName]);
94
- const store = tx.objectStore(collectionName);
95
- const conditionsKeys = Object.keys(conditions);
96
- let idx;
97
- let req;
98
- if (conditionsKeys.length > 1) {
99
- const vals = [];
100
- conditionsKeys.forEach((key) => vals.push(conditions[key]));
101
- idx = store.index(`${conditionsKeys.join('')}Index`);
102
- req = idx.get(vals);
103
- }
104
- else {
105
- idx = store.index(`${conditionsKeys[0]}Index`);
106
- req = idx.get(conditions[conditionsKeys[0]]);
107
- }
108
- if (callback) {
109
- req.onerror = () => {
110
- callback(req.error);
111
- };
112
- }
113
- req.onsuccess = (ev) => {
114
- if (!ev.target.result) {
115
- callback({ message: 'Not Found' });
116
- }
117
- else if (callback) {
118
- callback(null, ev.target.result);
119
- }
120
- };
121
- }
122
- find(collectionName, conditions, options, callback) {
123
- const tx = this.db.transaction([collectionName]);
124
- const store = tx.objectStore(collectionName);
125
- const conditionsKeys = Object.keys(conditions);
126
- let idx;
127
- let req;
128
- if (conditionsKeys.length > 1) {
129
- const vals = [];
130
- conditionsKeys.forEach((key) => vals.push(conditions[key]));
131
- idx = store.index(`${conditionsKeys.join('')}Index`);
132
- req = idx.openCursor(vals);
133
- }
134
- else {
135
- idx = store.index(`${conditionsKeys[0]}Index`);
136
- req = idx.openCursor(conditions[conditionsKeys[0]]);
137
- }
138
- req.onerror = () => {
139
- if (callback) {
140
- callback(req.error);
141
- }
142
- };
143
- const items = [];
144
- req.onsuccess = (ev) => {
145
- const cursor = ev.target.result;
146
- if (cursor) {
147
- items.push(cursor.value);
148
- cursor.continue();
149
- }
150
- else if (callback) {
151
- callback(null, items);
152
- }
153
- };
154
- }
155
- save(collectionName, model, callback) {
156
- const record = model; // model.toJson(true, false);
157
- const createNew = () => {
158
- const txN = this.db.transaction([collectionName], 'readwrite');
159
- const request = txN.objectStore(collectionName).add(record);
160
- if (callback) {
161
- request.onerror = () => callback(request.error);
162
- }
163
- request.onsuccess = () => {
164
- record.id = request.result;
165
- if (callback) {
166
- callback(null, record);
167
- }
168
- };
169
- };
170
- const updateOldById = (id) => {
171
- const txO = this.db.transaction([collectionName], 'readwrite');
172
- const storeW = txO.objectStore(collectionName);
173
- const getRequest = storeW.get(id);
174
- if (callback) {
175
- getRequest.onerror = () => callback(getRequest.error);
176
- }
177
- getRequest.onsuccess = () => {
178
- const existing = getRequest.result;
179
- if (!existing) {
180
- callback({ message: 'Not Found' });
181
- }
182
- else {
183
- for (const p of Object.keys(record)) {
184
- existing[p] = record[p];
185
- }
186
- const updateRequest = storeW.put(existing);
187
- updateRequest.onerror = () => callback(updateRequest.error);
188
- updateRequest.onsuccess = (ev) => {
189
- if (typeof (callback) === 'function') {
190
- callback(null, existing);
191
- }
192
- };
193
- }
194
- };
195
- };
196
- if (record.id) {
197
- updateOldById(record.id);
198
- }
199
- else if (record.integration && record.resource) {
200
- this.findOne(collectionName, {
201
- context: record.context || '',
202
- integration: record.integration || '',
203
- resource: record.resource || ''
204
- }, null, (err, existing) => {
205
- if (!existing) {
206
- createNew();
207
- }
208
- else {
209
- updateOldById(existing.id);
210
- }
211
- });
212
- }
213
- else {
214
- createNew();
215
- }
216
- }
217
- }
218
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvY29tbW9uL3V0aWxzL2luZGV4ZWREYlN0b3JlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBY0gsTUFBTSxPQUFPLGNBQWM7SUFLekIsWUFBWSxTQUFpQixNQUFNO1FBQ2pDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsSUFBSyxNQUFjLENBQUMsWUFBWSxJQUFLLE1BQWMsQ0FBQyxlQUFlLElBQUssTUFBYyxDQUFDLFdBQVcsQ0FBQztJQUNuSSxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQWdDO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDWCxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2hDO1FBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLEdBQUcsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxFQUFPLEVBQUUsRUFBRTtZQUNoQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQzNCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMvRixXQUFXLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUN0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QWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDMUI7YUFBTSxJQUFJLE1BQU0sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUNoRCxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRTtnQkFDM0IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksRUFBRTtnQkFDN0IsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRTtnQkFDckMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRTthQUNoQyxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRTtnQkFDekIsSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDYixTQUFTLEVBQUUsQ0FBQztpQkFDYjtxQkFBTTtvQkFDTCxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUM1QjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLFNBQVMsRUFBRSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQEF1dGhvcjogQWxleGFuZGVyLlZhbmdlbG92QHZvbmFnZS5jb21cbiAqIEBEYXRlOiAyMDIwLTAyLTEwIDE4OjQ3OjQ1XG4gKiBATGFzdCBNb2RpZmllZCBieTogQWxleGFuZGVyLlZhbmdlbG92QHZvbmFnZS5jb21cbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjAtMDItMjggMTM6Mjk6MjNcbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIElTdG9yZVJlY29yZCB7XG4gIGlkPzogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdG9yZSB7XG4gIGluaXRDb2xsZWN0aW9uKGNvbGxlY3Rpb25OYW1lOiBzdHJpbmcsIGl0ZW1zPzogQXJyYXk8SVN0b3JlUmVjb3JkPiwgY2FsbGJhY2s/OiAoZXJyLCByZXN1bHQ/KSA9PiB2b2lkKTogYW55O1xuICBmaW5kQnlJZChjb2xsZWN0aW9uTmFtZSwgaWQ6IG51bWJlciB8IHN0cmluZywgY2FsbGJhY2s/OiAoZXJyLCByZXN1bHQ/KSA9PiB2b2lkKTogYW55O1xuICBzYXZlKGNvbGxlY3Rpb25OYW1lOiBzdHJpbmcsIHJlY29yZDogYW55LCBjYWxsYmFjaz86IChlcnIsIHJlc3VsdD8pID0+IHZvaWQpOiBhbnk7XG4gIGZpbmQoY29sbGVjdGlvbk5hbWU6IHN0cmluZywgY29uZGl0aW9uczogYW55LCBvcHRpb25zOiBhbnksIGNhbGxiYWNrOiAoZXJyLCByZXN1bHQ/KSA9PiB2b2lkKTtcbiAgZmluZE9uZShjb2xsZWN0aW9uTmFtZTogc3RyaW5nLCBjb25kaXRpb25zOiBhbnksIG9wdGlvbnM6IGFueSwgY2FsbGJhY2s/OiAoZXJyLCByZXN1bHQ/KSA9PiB2b2lkKTtcbn1cblxuZXhwb3J0IGNsYXNzIEluZGV4ZWREYlN0b3JlIGltcGxlbWVudHMgSVN0b3JlIHtcbiAgaW5keERiOiBJREJGYWN0b3J5O1xuICBkYjogSURCRGF0YWJhc2U7XG4gIGRiTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGRiTmFtZTogc3RyaW5nID0gJ3ZnaXAnKSB7XG4gICAgdGhpcy5kYk5hbWUgPSBkYk5hbWU7XG4gICAgdGhpcy5pbmR4RGIgPSB3aW5kb3cuaW5kZXhlZERCIHx8ICh3aW5kb3cgYXMgYW55KS5tb3pJbmRleGVkREIgfHwgKHdpbmRvdyBhcyBhbnkpLndlYmtpdEluZGV4ZWREQiB8fCAod2luZG93IGFzIGFueSkubXNJbmRleGVkREI7XG4gIH1cblxuICBfZ2V0RGIoY2FsbGJhY2s6IChlcnIsIHJlc3VsdD8pID0+IHZvaWQpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBpZiAodGhpcy5kYikge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHRoaXMuZGIpO1xuICAgIH1cbiAgICBjb25zdCByZXEgPSB0aGlzLmluZHhEYi5vcGVuKHRoaXMuZGJOYW1lKTtcbiAgICByZXEub251cGdyYWRlbmVlZGVkID0gKGV2OiBhbnkpID0+IHtcbiAgICAgIHNlbGYuZGIgPSBldi50YXJnZXQucmVzdWx0O1xuICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBzZWxmLmRiLmNyZWF0ZU9iamVjdFN0b3JlKCdEcmFmdCcsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTtcbiAgICAgIG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdjb250ZXh0SW5kZXgnLCAnY29udGV4dCcsIHsgdW5pcXVlOiBmYWxzZSB9KTtcbiAgICAgIG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdjb250ZXh0aW50ZWdyYXRpb25JbmRleCcsIFsnY29udGV4dCcsICdpbnRlZ3JhdGlvbiddLCB7IHVuaXF1ZTogZmFsc2UgfSk7XG4gICAgICBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnY29udGV4dGludGVncmF0aW9ucmVzb3VyY2VJbmRleCcsIFsnY29udGV4dCcsICdpbnRlZ3JhdGlvbicsICdyZXNvdXJjZSddLCB7IHVuaXF1ZTogdHJ1ZSB9KTtcbiAgICB9O1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgcmVxLm9uc3VjY2VzcyA9IChldjogYW55KSA9PiB7XG4gICAgICAgIHNlbGYuZGIgPSBldi50YXJnZXQucmVzdWx0O1xuICAgICAgICBjYWxsYmFjayhudWxsLCBzZWxmLmRiKTtcbiAgICAgIH07XG4gICAgfVxuICAgIHJlcS5vbmVycm9yID0gKGV2OiBhbnkpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjayhldi5lcnJvcik7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGluaXRDb2xsZWN0aW9uKGNvbGxlY3Rpb25OYW1lOiBzdHJpbmcsIGl0ZW1zOiBBcnJheTxJU3RvcmVSZWNvcmQ+ID0gW10sIGNhbGxiYWNrOiAoZXJyLCByZXN1bHQ/KSA9PiB2b2lkKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5fZ2V0RGIoKGVycikgPT4geyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG4gICAgICBpZiAoZXJyICYmIGNhbGxiYWNrKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgfVxuICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIHNlbGYuZGIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmVzZXQoY2FsbGJhY2s6IChlcnIsIHJlc3VsdD8pID0+IHZvaWQpIHtcbiAgICB0aGlzLl9nZXREYigoZXJyKSA9PiB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZXJzY29yZS1kYW5nbGVcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICB9XG4gICAgICB0aGlzLmRiLmNsb3NlKCk7XG4gICAgICB0aGlzLmluZHhEYi5kZWxldGVEYXRhYmFzZSh0aGlzLmRiTmFtZSk7XG4gICAgICBkZWxldGUgdGhpcy5kYjtcbiAgICAgIHRoaXMuX2dldERiKGNhbGxiYWNrKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICAgIH0pO1xuICB9XG5cbiAgZmluZEJ5SWQoY29sbGVjdGlvbk5hbWU6IHN0cmluZywgaWQ6IG51bWJlciB8IHN0cmluZywgY2FsbGJhY2s6IChlcnIsIHJlc3VsdD8pID0+IHZvaWQpOiBhbnkge1xuICAgIGNvbnN0IHR4ID0gdGhpcy5kYi50cmFuc2FjdGlvbihbY29sbGVjdGlvbk5hbWVdKTtcbiAgICBjb25zdCBzdG9yZSA9IHR4Lm9iamVjdFN0b3JlKGNvbGxlY3Rpb25OYW1lKTtcbiAgICBjb25zdCByZXF1ZXN0ID0gc3RvcmUuZ2V0KHBhcnNlSW50KGAke2lkfWAsIDEwKSk7XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgIGNhbGxiYWNrKHJlcXVlc3QuZXJyb3IpO1xuICAgICAgfTtcbiAgICB9XG4gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICBpZiAoIXJlcXVlc3QucmVzdWx0KSB7XG4gICAgICAgIGNhbGxiYWNrKHsgbWVzc2FnZTogJ05vdCBGb3VuZCcgfSk7XG4gICAgICB9IGVsc2UgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIHJlcXVlc3QucmVzdWx0KTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZGVzdHJveUJ5SWQoY29sbGVjdGlvbk5hbWU6IHN0cmluZywgaWQ6IG51bWJlciB8IHN0cmluZywgY2FsbGJhY2s6IChlcnIsIHJlc3VsdD8pID0+IHZvaWQpOiBhbnkge1xuICAgIGNvbnN0IHR4ID0gdGhpcy5kYi50cmFuc2FjdGlvbihbY29sbGVjdGlvbk5hbWVdLCAncmVhZHdyaXRlJyk7XG4gICAgY29uc3Qgc3RvcmUgPSB0eC5vYmplY3RTdG9yZShjb2xsZWN0aW9uTmFtZSk7XG4gICAgY29uc3QgcmVxdWVzdCA9IHN0b3JlLmRlbGV0ZShwYXJzZUludChgJHtpZH1gLCAxMCkpO1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgcmVxdWVzdC5vbmVycm9yID0gKCkgPT4ge1xuICAgICAgICBjYWxsYmFjayhyZXF1ZXN0LmVycm9yKTtcbiAgICAgIH07XG4gICAgfVxuICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4ge1xuICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIHJlcXVlc3QucmVzdWx0KTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZmluZE9uZShjb2xsZWN0aW9uTmFtZTogc3RyaW5nLCBjb25kaXRpb25zOiBhbnksIG9wdGlvbnM6IGFueSwgY2FsbGJhY2s/OiAoZXJyLCByZXN1bHQ/KSA9PiB2b2lkKTogYW55IHtcbiAgICBjb25zdCB0eCA9IHRoaXMuZGIudHJhbnNhY3Rpb24oW2NvbGxlY3Rpb25OYW1lXSk7XG4gICAgY29uc3Qgc3RvcmUgPSB0eC5vYmplY3RTdG9yZShjb2xsZWN0aW9uTmFtZSk7XG4gICAgY29uc3QgY29uZGl0aW9uc0tleXMgPSBPYmplY3Qua2V5cyhjb25kaXRpb25zKTtcbiAgICBsZXQgaWR4OiBJREJJbmRleDtcbiAgICBsZXQgcmVxOiBJREJSZXF1ZXN0O1xuICAgIGlmIChjb25kaXRpb25zS2V5cy5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zdCB2YWxzID0gW107XG4gICAgICBjb25kaXRpb25zS2V5cy5mb3JFYWNoKChrZXkpID0+IHZhbHMucHVzaChjb25kaXRpb25zW2tleV0pKTtcbiAgICAgIGlkeCA9IHN0b3JlLmluZGV4KGAke2NvbmRpdGlvbnNLZXlzLmpvaW4oJycpfUluZGV4YCk7XG4gICAgICByZXEgPSBpZHguZ2V0KHZhbHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZHggPSBzdG9yZS5pbmRleChgJHtjb25kaXRpb25zS2V5c1swXX1JbmRleGApO1xuICAgICAgcmVxID0gaWR4LmdldChjb25kaXRpb25zW2NvbmRpdGlvbnNLZXlzWzBdXSk7XG4gICAgfVxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgcmVxLm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgIGNhbGxiYWNrKHJlcS5lcnJvcik7XG4gICAgICB9O1xuICAgIH1cbiAgICByZXEub25zdWNjZXNzID0gKGV2OiBhbnkpID0+IHtcbiAgICAgIGlmICghZXYudGFyZ2V0LnJlc3VsdCkge1xuICAgICAgICBjYWxsYmFjayh7IG1lc3NhZ2U6ICdOb3QgRm91bmQnIH0pO1xuICAgICAgfSBlbHNlIGlmIChjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjayhudWxsLCBldi50YXJnZXQucmVzdWx0KTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZmluZChjb2xsZWN0aW9uTmFtZTogc3RyaW5nLCBjb25kaXRpb25zOiBhbnksIG9wdGlvbnM6IGFueSwgY2FsbGJhY2s/OiAoZXJyLCByZXN1bHQ/KSA9PiB2b2lkKTogQXJyYXk8SVN0b3JlUmVjb3JkPiB8IGFueSB7XG4gICAgY29uc3QgdHggPSB0aGlzLmRiLnRyYW5zYWN0aW9uKFtjb2xsZWN0aW9uTmFtZV0pO1xuICAgIGNvbnN0IHN0b3JlID0gdHgub2JqZWN0U3RvcmUoY29sbGVjdGlvbk5hbWUpO1xuICAgIGNvbnN0IGNvbmRpdGlvbnNLZXlzID0gT2JqZWN0LmtleXMoY29uZGl0aW9ucyk7XG4gICAgbGV0IGlkeDogSURCSW5kZXg7XG4gICAgbGV0IHJlcTogSURCUmVxdWVzdDtcbiAgICBpZiAoY29uZGl0aW9uc0tleXMubGVuZ3RoID4gMSkge1xuICAgICAgY29uc3QgdmFscyA9IFtdO1xuICAgICAgY29uZGl0aW9uc0tleXMuZm9yRWFjaCgoa2V5KSA9PiB2YWxzLnB1c2goY29uZGl0aW9uc1trZXldKSk7XG4gICAgICBpZHggPSBzdG9yZS5pbmRleChgJHtjb25kaXRpb25zS2V5cy5qb2luKCcnKX1JbmRleGApO1xuICAgICAgcmVxID0gaWR4Lm9wZW5DdXJzb3IodmFscyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlkeCA9IHN0b3JlLmluZGV4KGAke2NvbmRpdGlvbnNLZXlzWzBdfUluZGV4YCk7XG4gICAgICByZXEgPSBpZHgub3BlbkN1cnNvcihjb25kaXRpb25zW2NvbmRpdGlvbnNLZXlzWzBdXSk7XG4gICAgfVxuICAgIHJlcS5vbmVycm9yID0gKCkgPT4ge1xuICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgIGNhbGxiYWNrKHJlcS5lcnJvcik7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBpdGVtcyA9IFtdO1xuICAgIHJlcS5vbnN1Y2Nlc3MgPSAoZXY6IGFueSkgPT4ge1xuICAgICAgY29uc3QgY3Vyc29yID0gZXYudGFyZ2V0LnJlc3VsdDtcbiAgICAgIGlmIChjdXJzb3IpIHtcbiAgICAgICAgaXRlbXMucHVzaChjdXJzb3IudmFsdWUpO1xuICAgICAgICBjdXJzb3IuY29udGludWUoKTtcbiAgICAgIH0gZWxzZSBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgY2FsbGJhY2sobnVsbCwgaXRlbXMpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBzYXZlKGNvbGxlY3Rpb25OYW1lOiBzdHJpbmcsIG1vZGVsOiBhbnksIGNhbGxiYWNrPzogKGVyciwgcmVzdWx0PykgPT4gdm9pZCkge1xuICAgIGNvbnN0IHJlY29yZCA9IG1vZGVsOyAvLyBtb2RlbC50b0pzb24odHJ1ZSwgZmFsc2UpO1xuICAgIGNvbnN0IGNyZWF0ZU5ldyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHR4TiA9IHRoaXMuZGIudHJhbnNhY3Rpb24oW2NvbGxlY3Rpb25OYW1lXSwgJ3JlYWR3cml0ZScpO1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHR4Ti5vYmplY3RTdG9yZShjb2xsZWN0aW9uTmFtZSkuYWRkKHJlY29yZCk7XG4gICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gKCkgPT4gY2FsbGJhY2socmVxdWVzdC5lcnJvcik7XG4gICAgICB9XG4gICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHtcbiAgICAgICAgcmVjb3JkLmlkID0gcmVxdWVzdC5yZXN1bHQ7XG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHJlY29yZCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZU9sZEJ5SWQgPSAoaWQpID0+IHtcbiAgICAgIGNvbnN0IHR4TyA9IHRoaXMuZGIudHJhbnNhY3Rpb24oW2NvbGxlY3Rpb25OYW1lXSwgJ3JlYWR3cml0ZScpO1xuICAgICAgY29uc3Qgc3RvcmVXID0gdHhPLm9iamVjdFN0b3JlKGNvbGxlY3Rpb25OYW1lKTtcbiAgICAgIGNvbnN0IGdldFJlcXVlc3QgPSBzdG9yZVcuZ2V0KGlkKTtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBnZXRSZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiBjYWxsYmFjayhnZXRSZXF1ZXN0LmVycm9yKTtcbiAgICAgIH1cbiAgICAgIGdldFJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBleGlzdGluZyA9IGdldFJlcXVlc3QucmVzdWx0O1xuICAgICAgICBpZiAoIWV4aXN0aW5nKSB7XG4gICAgICAgICAgY2FsbGJhY2soeyBtZXNzYWdlOiAnTm90IEZvdW5kJyB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHAgb2YgT2JqZWN0LmtleXMocmVjb3JkKSkge1xuICAgICAgICAgICAgZXhpc3RpbmdbcF0gPSByZWNvcmRbcF07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHVwZGF0ZVJlcXVlc3QgPSBzdG9yZVcucHV0KGV4aXN0aW5nKTtcbiAgICAgICAgICB1cGRhdGVSZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiBjYWxsYmFjayh1cGRhdGVSZXF1ZXN0LmVycm9yKTtcbiAgICAgICAgICB1cGRhdGVSZXF1ZXN0Lm9uc3VjY2VzcyA9IChldjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIChjYWxsYmFjaykgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgZXhpc3RpbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfTtcblxuICAgIGlmIChyZWNvcmQuaWQpIHtcbiAgICAgIHVwZGF0ZU9sZEJ5SWQocmVjb3JkLmlkKTtcbiAgICB9IGVsc2UgaWYgKHJlY29yZC5pbnRlZ3JhdGlvbiAmJiByZWNvcmQucmVzb3VyY2UpIHtcbiAgICAgIHRoaXMuZmluZE9uZShjb2xsZWN0aW9uTmFtZSwge1xuICAgICAgICBjb250ZXh0OiByZWNvcmQuY29udGV4dCB8fCAnJyxcbiAgICAgICAgaW50ZWdyYXRpb246IHJlY29yZC5pbnRlZ3JhdGlvbiB8fCAnJyxcbiAgICAgICAgcmVzb3VyY2U6IHJlY29yZC5yZXNvdXJjZSB8fCAnJ1xuICAgICAgfSwgbnVsbCwgKGVyciwgZXhpc3RpbmcpID0+IHtcbiAgICAgICAgaWYgKCFleGlzdGluZykge1xuICAgICAgICAgIGNyZWF0ZU5ldygpOyAgXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXBkYXRlT2xkQnlJZChleGlzdGluZy5pZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjcmVhdGVOZXcoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,287 +0,0 @@
1
- /*
2
- * @Author: Alexander.Vangelov@vonage.com
3
- * @Date: 2019-09-19 17:34:44
4
- * @Last Modified by: Alexander.Vangelov@vonage.com
5
- * @Last Modified time: 2020-04-18 21:18:08
6
- */
7
- import { Directive } from '@angular/core';
8
- // import { ControlValueAccessor } from '@angular/forms';
9
- import { BehaviorSubject } from 'rxjs';
10
- import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
11
- import { metaDark, metaLight } from './common/utils/colorThemes';
12
- import { extractValueBySmartProp, extractBooleanValueBySmartProp } from '../lib/common/utils/smartProp';
13
- import * as i0 from "@angular/core";
14
- // eslint-disable-next-line @angular-eslint/directive-class-suffix
15
- export class FieldAbstract {
16
- constructor() {
17
- this.scope = '';
18
- this.validationAttributes = [];
19
- this.changeEvent = document.createEvent('MouseEvents');
20
- this.logicalDisabled = false;
21
- this.flags = {};
22
- }
23
- get parentChangeSubject() {
24
- if (!Object.getOwnPropertyDescriptor(this.parent, '$changeSubject')) {
25
- Object.defineProperty(this.parent, '$changeSubject', {
26
- value: new BehaviorSubject({}).pipe(debounceTime(300), distinctUntilChanged()),
27
- writable: false,
28
- enumerable: false
29
- });
30
- }
31
- return this.parent.$changeSubject;
32
- }
33
- get isPersistedParent() {
34
- // eslint-disable-next-line no-underscore-dangle
35
- return this.parent && this.parent._vgis && (this.parent._vgis.externalId || this.parent._vgis.id);
36
- }
37
- get validations() {
38
- return this.meta.validations || {};
39
- }
40
- get name() {
41
- return (typeof (this.index) === 'undefined') ? `${this.scope}${this.meta.name}` : `${this.scope}${this.meta.name}[${this.index}]`;
42
- }
43
- get default() {
44
- return this.meta.default || this.meta.defaultValue;
45
- }
46
- get disabled() {
47
- // TODO conditions
48
- return this.logicalDisabled || this.validations.disabled || this.meta.disabled === true || this.flags.disabled
49
- || (this.flags.updatable === false && this.isPersistedParent);
50
- }
51
- get readonly() {
52
- // TODO conditions
53
- return !!(this.validations.readonly || this.meta.readonly || (this.flags.updatable === false));
54
- }
55
- get sendToServer() {
56
- return this.isPersistedParent ? (this.flags.updatable !== false) : (this.flags.creatable !== false);
57
- }
58
- get uiInput() {
59
- if (!this.mainInput) {
60
- this.mainInput = this.elementRef.nativeElement.querySelector('.main:not([type="hidden"]):not(.standalone)');
61
- }
62
- return this.mainInput;
63
- }
64
- get isOptional() {
65
- const baseOptional = this.preview || (!this.meta.unset && !this.validations.required && !this.meta.visible);
66
- switch (this.meta.type) {
67
- case 'composite': {
68
- if (baseOptional) {
69
- return !this.meta.fields.find((f) => !f.$optional);
70
- }
71
- return false;
72
- }
73
- case 'list': {
74
- if (baseOptional) {
75
- return !(this.parent[this.meta.name] instanceof Array && this.parent[this.meta.name].length) && !this.meta.min;
76
- }
77
- return false;
78
- }
79
- default: {
80
- return baseOptional && typeof (this.parent[this.meta.name]) === 'undefined';
81
- }
82
- }
83
- }
84
- static setup(instance, parent, meta) { }
85
- ngAfterViewInit() {
86
- if (this.elementRef) {
87
- if (this.integrationCode === 'mocks') {
88
- this.integrationIcon = 'Brand-icon-vonage';
89
- }
90
- else {
91
- switch (this.integrationCode) {
92
- case 'office365':
93
- this.integrationIcon = 'Brand-icon-office-color';
94
- break;
95
- case 'sugar':
96
- this.integrationIcon = 'Brand-icon-sugarcrm-color';
97
- break;
98
- case 'msdynamics':
99
- this.integrationIcon = 'Brand-icon-dynamics-color';
100
- break;
101
- default:
102
- this.integrationIcon = `Brand-icon-${(this.integrationCode || '').toLowerCase()}-color`;
103
- }
104
- }
105
- Object.defineProperty(this.meta, '$optional', {
106
- value: (typeof (this.default) === 'undefined') && this.isOptional,
107
- writable: true,
108
- configurable: true,
109
- enumerable: false
110
- });
111
- this.flags = this.meta.flags || {};
112
- Object.defineProperty(this.meta, '$hidden', {
113
- value: !this.isPersistedParent && this.flags.creatable === false,
114
- writable: true,
115
- configurable: true,
116
- enumerable: false
117
- });
118
- if (typeof (this.meta.hidden) !== 'undefined') {
119
- if (typeof (this.meta.hidden) === 'object') {
120
- const setHiddenByPropertyConfig = (par) => {
121
- if (typeof (this.meta.hidden[par]) === 'boolean') { // any value makes me hidden
122
- this.meta.$hidden = !!this.parent[par];
123
- }
124
- else {
125
- const value = extractValueBySmartProp(this.parent, par);
126
- const parValue = value ? (value.id || value.value || value) : value;
127
- this.meta.$hidden = this.meta.hidden[par] === parValue;
128
- }
129
- };
130
- for (const par of Object.keys(this.meta.hidden)) {
131
- setHiddenByPropertyConfig(par);
132
- this.parentChangeSubject.subscribe((value) => {
133
- if (value && value.hasOwnProperty(par.split('.')[0])) {
134
- setHiddenByPropertyConfig(par);
135
- if (this.meta.$hidden) {
136
- delete this.parent[this.meta.name];
137
- }
138
- }
139
- });
140
- }
141
- }
142
- else if (typeof (this.meta.hidden) === 'string') {
143
- if (this.meta.hidden.toUpperCase() === 'CREATE') {
144
- this.meta.$hidden = !this.isPersistedParent;
145
- }
146
- else if (this.meta.hidden.toUpperCase() === 'UPDATE') {
147
- this.meta.$hidden = this.isPersistedParent;
148
- }
149
- }
150
- else {
151
- this.meta.$hidden = !!this.meta.hidden;
152
- }
153
- }
154
- Object.defineProperty(this.meta, '$invisible', {
155
- value: false,
156
- writable: true,
157
- configurable: true,
158
- enumerable: false
159
- });
160
- if (typeof (this.meta.visible) !== 'undefined') {
161
- if (typeof (this.meta.visible) === 'object') {
162
- const setInvisibleByPropertyConfig = (par) => {
163
- if (typeof (this.meta.visible[par]) === 'boolean') { // any value makes me hidden
164
- this.meta.$invisible = extractBooleanValueBySmartProp(this.parent[par], this.meta.visible[par]);
165
- }
166
- else {
167
- const value = extractValueBySmartProp(this.parent, par);
168
- const parValue = value ? (value.id || value.value || value) : value;
169
- this.meta.$invisible = this.meta.visible[par] !== parValue;
170
- }
171
- };
172
- for (const par of Object.keys(this.meta.visible)) {
173
- setInvisibleByPropertyConfig(par);
174
- this.parentChangeSubject.subscribe((value) => {
175
- // if (value && value.hasOwnProperty(par.split('.')[0])) {
176
- setInvisibleByPropertyConfig(par);
177
- if (this.meta.$invisible) {
178
- delete this.parent[this.meta.name];
179
- }
180
- // }
181
- });
182
- }
183
- }
184
- else if (typeof (this.meta.visible) === 'string') {
185
- if (this.meta.visible.toUpperCase() === 'CREATE') {
186
- this.meta.$invisible = this.isPersistedParent;
187
- }
188
- else if (this.meta.visible.toUpperCase() === 'UPDATE') {
189
- this.meta.$invisible = !this.isPersistedParent;
190
- }
191
- }
192
- }
193
- if (this.theme !== 'inherit') {
194
- const metaTheme = this.theme === 'dark' ? metaDark : metaLight;
195
- for (const key of Object.keys(metaTheme.properties)) {
196
- this.elementRef.nativeElement.style.setProperty(key, metaTheme.properties[key]);
197
- }
198
- }
199
- }
200
- }
201
- focus() {
202
- const input = this.uiInput;
203
- if (input) {
204
- input.focus();
205
- }
206
- }
207
- modelToValue(m, valueType) {
208
- if (typeof (m) !== 'undefined') {
209
- switch (valueType) {
210
- case 'object': {
211
- return m ? { id: m.id, label: m.label, type: m.type } : m;
212
- }
213
- case 'number': {
214
- if (m != null) {
215
- const v = m.id || m;
216
- try {
217
- return parseInt(v, 10);
218
- }
219
- catch (e) {
220
- return v;
221
- }
222
- }
223
- break;
224
- }
225
- default: {
226
- if (m != null) {
227
- return m.id || m;
228
- }
229
- }
230
- }
231
- }
232
- }
233
- onSubjectChange(model) {
234
- if (Object.getOwnPropertyDescriptor(this.parent, '$changeSubject')) {
235
- const parentChange = {};
236
- parentChange[this.meta.name] = model;
237
- this.parentChangeSubject.next(parentChange);
238
- }
239
- }
240
- onModelChange(model) {
241
- // TODO add resource type logic
242
- if (this.model instanceof Array) {
243
- this.parent[this.meta.name] = this.model.map((m) => this.modelToValue(m, this.meta.valueType));
244
- }
245
- else {
246
- this.parent[this.meta.name] = this.modelToValue(model, this.meta.valueType);
247
- }
248
- this.onChange.emit(model);
249
- this.onSubjectChange(model);
250
- // console.log('onChange', model);
251
- this.changeEvent.initMouseEvent('change', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
252
- this.elementRef.nativeElement.dispatchEvent(this.changeEvent);
253
- if (this.model) {
254
- this.prevModel = this.model;
255
- }
256
- else {
257
- this.meta.unset = true;
258
- }
259
- this.meta.$optional = this.isOptional;
260
- }
261
- clear() {
262
- delete this.model;
263
- this.onModelChange(this.model);
264
- }
265
- applyValidations() {
266
- this.validationAttributes.forEach((attribute) => {
267
- const validation = this.validations[attribute];
268
- if (validation) {
269
- this.modelInput.setAttribute(attribute, validation.value || validation);
270
- }
271
- });
272
- }
273
- }
274
- FieldAbstract.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: FieldAbstract, deps: [], target: i0.ɵɵFactoryTarget.Directive });
275
- FieldAbstract.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.8", type: FieldAbstract, ngImport: i0 });
276
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: FieldAbstract, decorators: [{
277
- type: Directive
278
- }] });
279
- export class MetaElem {
280
- }
281
- export class MetaElemDisableadble {
282
- disable() {
283
- console.log(this.cssmodifier);
284
- this.elementRef.nativeElement.classList.remove(this.cssmodifier);
285
- }
286
- }
287
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRBYnN0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21ldGEtdWkvc3JjL2xpYi9maWVsZEFic3RyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUEyQyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYseURBQXlEO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBUXhHLGtFQUFrRTtBQUNsRSxNQUFNLE9BQWdCLGFBQWE7SUFGbkM7UUFNRSxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBWVgseUJBQW9CLEdBQUcsRUFBRSxDQUFDO1FBRzFCLGdCQUFXLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVsRCxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUV4QixVQUFLLEdBQVEsRUFBRSxDQUFDO0tBb1FqQjtJQWxRQyxJQUFJLG1CQUFtQjtRQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsRUFBRTtZQUNuRSxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ25ELEtBQUssRUFBRSxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLENBQUM7Z0JBQzlFLFFBQVEsRUFBRSxLQUFLO2dC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QVMsRUFBRSxFQUFFO1lBQzlDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDL0MsSUFBSSxVQUFVLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLENBQUM7YUFDekU7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzBHQTFSbUIsYUFBYTs4RkFBYixhQUFhOzJGQUFiLGFBQWE7a0JBRmxDLFNBQVM7O0FBZ1NWLE1BQU0sT0FBTyxRQUFRO0NBR3BCO0FBRUQsTUFBTSxPQUFnQixvQkFBb0I7SUFLeEMsT0FBTztRQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBAQXV0aG9yOiBBbGV4YW5kZXIuVmFuZ2Vsb3ZAdm9uYWdlLmNvbVxuICogQERhdGU6IDIwMTktMDktMTkgMTc6MzQ6NDRcbiAqIEBMYXN0IE1vZGlmaWVkIGJ5OiBBbGV4YW5kZXIuVmFuZ2Vsb3ZAdm9uYWdlLmNvbVxuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAyMC0wNC0xOCAyMToxODowOFxuICovXG5cbmltcG9ydCB7IEVsZW1lbnRSZWYsIEFmdGVyVmlld0luaXQsIEV2ZW50RW1pdHRlciwgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vLyBpbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IG1ldGFEYXJrLCBtZXRhTGlnaHQgfSBmcm9tICcuL2NvbW1vbi91dGlscy9jb2xvclRoZW1lcyc7XG5pbXBvcnQgeyBleHRyYWN0VmFsdWVCeVNtYXJ0UHJvcCwgZXh0cmFjdEJvb2xlYW5WYWx1ZUJ5U21hcnRQcm9wIH0gZnJvbSAnLi4vbGliL2NvbW1vbi91dGlscy9zbWFydFByb3AnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElNZXRhRmllbGQ8VCBleHRlbmRzIEZpZWxkQWJzdHJhY3Q+IHtcbiAgbWV0YTogYW55O1xuICBtb2RlbDogYW55O1xufVxuXG5ARGlyZWN0aXZlKClcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZpZWxkQWJzdHJhY3QgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHsgLy8gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIG1vZGVsOiBhbnk7XG4gIG1ldGE6IGFueTtcbiAgaW5kZXg6IG51bWJlcjtcbiAgc2NvcGUgPSAnJztcbiAgcGFyZW50OiBhbnk7XG4gIGludGVncmF0aW9uQ29kZTogc3RyaW5nO1xuICBpbnRlZ3JhdGlvbkljb246IHN0cmluZztcbiAgcmVzb3VyY2VUeXBlOiBzdHJpbmc7XG4gIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG4gIG1vZGVsSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gIG1vZGVsQ29udHJvbDogSFRNTElucHV0RWxlbWVudDtcbiAgbWFpbklucHV0OiBIVE1MSW5wdXRFbGVtZW50O1xuICBrZXlMaXN0ZW5lckFjdGl2ZTogYm9vbGVhbjtcbiAgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBvbkxlYXZlOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgdmFsaWRhdGlvbkF0dHJpYnV0ZXMgPSBbXTtcbiAgcHJldmlldzogYm9vbGVhbjtcbiAgcHJldk1vZGVsOiBhbnk7XG4gIGNoYW5nZUV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ01vdXNlRXZlbnRzJyk7XG4gIG1ldGFSZXNvdXJjZVNlcnZpY2U6IGFueTtcbiAgbG9naWNhbERpc2FibGVkID0gZmFsc2U7XG4gIHRoZW1lOiBzdHJpbmc7XG4gIGZsYWdzOiBhbnkgPSB7fTtcblxuICBnZXQgcGFyZW50Q2hhbmdlU3ViamVjdCgpIHtcbiAgICBpZiAoIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcy5wYXJlbnQsICckY2hhbmdlU3ViamVjdCcpKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5wYXJlbnQsICckY2hhbmdlU3ViamVjdCcsIHtcbiAgICAgICAgdmFsdWU6IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pLnBpcGUoZGVib3VuY2VUaW1lKDMwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucGFyZW50LiRjaGFuZ2VTdWJqZWN0O1xuICB9XG5cbiAgZ2V0IGlzUGVyc2lzdGVkUGFyZW50KCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICAgIHJldHVybiB0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC5fdmdpcyAmJiAodGhpcy5wYXJlbnQuX3ZnaXMuZXh0ZXJuYWxJZCB8fCB0aGlzLnBhcmVudC5fdmdpcy5pZCApO1xuICB9XG5cbiAgZ2V0IHZhbGlkYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGEudmFsaWRhdGlvbnMgfHwge307XG4gIH1cblxuICBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gKHR5cGVvZiAodGhpcy5pbmRleCkgPT09ICd1bmRlZmluZWQnKSA/IGAke3RoaXMuc2NvcGV9JHt0aGlzLm1ldGEubmFtZX1gIDogYCR7dGhpcy5zY29wZX0ke3RoaXMubWV0YS5uYW1lfVske3RoaXMuaW5kZXh9XWA7XG4gIH1cblxuICBnZXQgZGVmYXVsdCgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRhLmRlZmF1bHQgfHwgdGhpcy5tZXRhLmRlZmF1bHRWYWx1ZTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICAvLyBUT0RPIGNvbmRpdGlvbnNcbiAgICByZXR1cm4gdGhpcy5sb2dpY2FsRGlzYWJsZWQgfHwgdGhpcy52YWxpZGF0aW9ucy5kaXNhYmxlZCB8fCB0aGlzLm1ldGEuZGlzYWJsZWQgPT09IHRydWUgfHwgdGhpcy5mbGFncy5kaXNhYmxlZFxuICAgICAgfHwgKHRoaXMuZmxhZ3MudXBkYXRhYmxlID09PSBmYWxzZSAmJiB0aGlzLmlzUGVyc2lzdGVkUGFyZW50KTtcbiAgfVxuXG4gIGdldCByZWFkb25seSgpIHtcbiAgICAvLyBUT0RPIGNvbmRpdGlvbnNcbiAgICByZXR1cm4gISEodGhpcy52YWxpZGF0aW9ucy5yZWFkb25seSB8fCB0aGlzLm1ldGEucmVhZG9ubHkgfHwgKHRoaXMuZmxhZ3MudXBkYXRhYmxlID09PSBmYWxzZSkpO1xuICB9XG5cbiAgZ2V0IHNlbmRUb1NlcnZlcigpIHtcbiAgICByZXR1cm4gdGhpcy5pc1BlcnNpc3RlZFBhcmVudCA/ICh0aGlzLmZsYWdzLnVwZGF0YWJsZSAhPT0gZmFsc2UpIDogKHRoaXMuZmxhZ3MuY3JlYXRhYmxlICE9PSBmYWxzZSk7XG4gIH1cblxuICBnZXQgdWlJbnB1dCgpIHtcbiAgICBpZiAoIXRoaXMubWFpbklucHV0KSB7XG4gICAgICB0aGlzLm1haW5JbnB1dCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tYWluOm5vdChbdHlwZT1cImhpZGRlblwiXSk6bm90KC5zdGFuZGFsb25lKScpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tYWluSW5wdXQ7XG4gIH1cblxuICBnZXQgaXNPcHRpb25hbCgpIHtcbiAgICBjb25zdCBiYXNlT3B0aW9uYWwgPSB0aGlzLnByZXZpZXcgfHwgKCF0aGlzLm1ldGEudW5zZXQgJiYgIXRoaXMudmFsaWRhdGlvbnMucmVxdWlyZWQgJiYgIXRoaXMubWV0YS52aXNpYmxlKTtcbiAgICBzd2l0Y2ggKHRoaXMubWV0YS50eXBlKSB7XG4gICAgICBjYXNlICdjb21wb3NpdGUnOiB7XG4gICAgICAgIGlmIChiYXNlT3B0aW9uYWwpIHtcbiAgICAgICAgICByZXR1cm4gIXRoaXMubWV0YS5maWVsZHMuZmluZCgoZikgPT4gIWYuJG9wdGlvbmFsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjYXNlICdsaXN0Jzoge1xuICAgICAgICBpZiAoYmFzZU9wdGlvbmFsKSB7XG4gICAgICAgICAgcmV0dXJuICEodGhpcy5wYXJlbnRbdGhpcy5tZXRhLm5hbWVdIGluc3RhbmNlb2YgQXJyYXkgJiYgdGhpcy5wYXJlbnRbdGhpcy5tZXRhLm5hbWVdLmxlbmd0aCkgJiYgIXRoaXMubWV0YS5taW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gYmFzZU9wdGlvbmFsICYmIHR5cGVvZih0aGlzLnBhcmVudFt0aGlzLm1ldGEubmFtZV0pID09PSAndW5kZWZpbmVkJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0aWMgc2V0dXAoaW5zdGFuY2UsIHBhcmVudCwgbWV0YSkgeyB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmVsZW1lbnRSZWYpIHtcbiAgICAgIGlmICh0aGlzLmludGVncmF0aW9uQ29kZSA9PT0gJ21vY2tzJykge1xuICAgICAgICB0aGlzLmludGVncmF0aW9uSWNvbiA9ICdCcmFuZC1pY29uLXZvbmFnZSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuaW50ZWdyYXRpb25Db2RlKSB7XG4gICAgICAgICAgY2FzZSAnb2ZmaWNlMzY1JzpcbiAgICAgICAgICAgIHRoaXMuaW50ZWdyYXRpb25JY29uID0gJ0JyYW5kLWljb24tb2ZmaWNlLWNvbG9yJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3N1Z2FyJzpcbiAgICAgICAgICAgIHRoaXMuaW50ZWdyYXRpb25JY29uID0gJ0JyYW5kLWljb24tc3VnYXJjcm0tY29sb3InO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbXNkeW5hbWljcyc6XG4gICAgICAgICAgICB0aGlzLmludGVncmF0aW9uSWNvbiA9ICdCcmFuZC1pY29uLWR5bmFtaWNzLWNvbG9yJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aGlzLmludGVncmF0aW9uSWNvbiA9IGBCcmFuZC1pY29uLSR7KHRoaXMuaW50ZWdyYXRpb25Db2RlIHx8ICcnKS50b0xvd2VyQ2FzZSgpfS1jb2xvcmA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLm1ldGEsICckb3B0aW9uYWwnLCB7XG4gICAgICAgIHZhbHVlOiAodHlwZW9mKHRoaXMuZGVmYXVsdCkgPT09ICd1bmRlZmluZWQnKSAmJiB0aGlzLmlzT3B0aW9uYWwsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZmxhZ3MgPSB0aGlzLm1ldGEuZmxhZ3MgfHwge307XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5tZXRhLCAnJGhpZGRlbicsIHtcbiAgICAgICAgdmFsdWU6ICF0aGlzLmlzUGVyc2lzdGVkUGFyZW50ICYmIHRoaXMuZmxhZ3MuY3JlYXRhYmxlID09PSBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgaWYgKHR5cGVvZih0aGlzLm1ldGEuaGlkZGVuKSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgaWYgKHR5cGVvZih0aGlzLm1ldGEuaGlkZGVuKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBjb25zdCBzZXRIaWRkZW5CeVByb3BlcnR5Q29uZmlnID0gKHBhcikgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZih0aGlzLm1ldGEuaGlkZGVuW3Bhcl0pID09PSAnYm9vbGVhbicpIHsgLy8gYW55IHZhbHVlIG1ha2VzIG1lIGhpZGRlblxuICAgICAgICAgICAgICB0aGlzLm1ldGEuJGhpZGRlbiA9ICEhdGhpcy5wYXJlbnRbcGFyXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZXh0cmFjdFZhbHVlQnlTbWFydFByb3AodGhpcy5wYXJlbnQsIHBhcik7XG4gICAgICAgICAgICAgIGNvbnN0IHBhclZhbHVlID0gdmFsdWUgPyAodmFsdWUuaWQgfHwgdmFsdWUudmFsdWUgfHwgdmFsdWUpIDogdmFsdWU7XG4gICAgICAgICAgICAgIHRoaXMubWV0YS4kaGlkZGVuID0gdGhpcy5tZXRhLmhpZGRlbltwYXJdID09PSBwYXJWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICAgIGZvciAoY29uc3QgcGFyIG9mIE9iamVjdC5rZXlzKHRoaXMubWV0YS5oaWRkZW4pKSB7XG4gICAgICAgICAgICBzZXRIaWRkZW5CeVByb3BlcnR5Q29uZmlnKHBhcik7XG4gICAgICAgICAgICB0aGlzLnBhcmVudENoYW5nZVN1YmplY3Quc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaGFzT3duUHJvcGVydHkocGFyLnNwbGl0KCcuJylbMF0pKSB7XG4gICAgICAgICAgICAgICAgc2V0SGlkZGVuQnlQcm9wZXJ0eUNvbmZpZyhwYXIpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1ldGEuJGhpZGRlbikge1xuICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMucGFyZW50W3RoaXMubWV0YS5uYW1lXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YodGhpcy5tZXRhLmhpZGRlbikgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgaWYgKHRoaXMubWV0YS5oaWRkZW4udG9VcHBlckNhc2UoKSA9PT0gJ0NSRUFURScpIHtcbiAgICAgICAgICAgIHRoaXMubWV0YS4kaGlkZGVuID0gIXRoaXMuaXNQZXJzaXN0ZWRQYXJlbnQ7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1ldGEuaGlkZGVuLnRvVXBwZXJDYXNlKCkgPT09ICdVUERBVEUnKSB7XG4gICAgICAgICAgICB0aGlzLm1ldGEuJGhpZGRlbiA9IHRoaXMuaXNQZXJzaXN0ZWRQYXJlbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubWV0YS4kaGlkZGVuPSAhIXRoaXMubWV0YS5oaWRkZW47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMubWV0YSwgJyRpbnZpc2libGUnLCB7XG4gICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgaWYgKHR5cGVvZih0aGlzLm1ldGEudmlzaWJsZSkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGlmICh0eXBlb2YodGhpcy5tZXRhLnZpc2libGUpID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGNvbnN0IHNldEludmlzaWJsZUJ5UHJvcGVydHlDb25maWcgPSAocGFyKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mKHRoaXMubWV0YS52aXNpYmxlW3Bhcl0pID09PSAnYm9vbGVhbicpIHsgLy8gYW55IHZhbHVlIG1ha2VzIG1lIGhpZGRlblxuICAgICAgICAgICAgICB0aGlzLm1ldGEuJGludmlzaWJsZSA9IGV4dHJhY3RCb29sZWFuVmFsdWVCeVNtYXJ0UHJvcCh0aGlzLnBhcmVudFtwYXJdLHRoaXMubWV0YS52aXNpYmxlW3Bhcl0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBleHRyYWN0VmFsdWVCeVNtYXJ0UHJvcCh0aGlzLnBhcmVudCwgcGFyKTtcbiAgICAgICAgICAgICAgY29uc3QgcGFyVmFsdWUgPSB2YWx1ZSA/ICh2YWx1ZS5pZCB8fCB2YWx1ZS52YWx1ZSB8fCB2YWx1ZSkgOiB2YWx1ZTtcbiAgICAgICAgICAgICAgdGhpcy5tZXRhLiRpbnZpc2libGUgPSB0aGlzLm1ldGEudmlzaWJsZVtwYXJdICE9PSBwYXJWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICAgIGZvciAoY29uc3QgcGFyIG9mIE9iamVjdC5rZXlzKHRoaXMubWV0YS52aXNpYmxlKSkge1xuICAgICAgICAgICAgc2V0SW52aXNpYmxlQnlQcm9wZXJ0eUNvbmZpZyhwYXIpO1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRDaGFuZ2VTdWJqZWN0LnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgLy8gaWYgKHZhbHVlICYmIHZhbHVlLmhhc093blByb3BlcnR5KHBhci5zcGxpdCgnLicpWzBdKSkge1xuICAgICAgICAgICAgICAgIHNldEludmlzaWJsZUJ5UHJvcGVydHlDb25maWcocGFyKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tZXRhLiRpbnZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnBhcmVudFt0aGlzLm1ldGEubmFtZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mKHRoaXMubWV0YS52aXNpYmxlKSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBpZiAodGhpcy5tZXRhLnZpc2libGUudG9VcHBlckNhc2UoKSA9PT0gJ0NSRUFURScpIHtcbiAgICAgICAgICAgIHRoaXMubWV0YS4kaW52aXNpYmxlID0gdGhpcy5pc1BlcnNpc3RlZFBhcmVudDtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubWV0YS52aXNpYmxlLnRvVXBwZXJDYXNlKCkgPT09ICdVUERBVEUnKSB7XG4gICAgICAgICAgICB0aGlzLm1ldGEuJGludmlzaWJsZSA9ICF0aGlzLmlzUGVyc2lzdGVkUGFyZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy50aGVtZSAhPT0gJ2luaGVyaXQnKSB7XG4gICAgICAgIGNvbnN0IG1ldGFUaGVtZSA9IHRoaXMudGhlbWUgPT09ICdkYXJrJyA/IG1ldGFEYXJrIDogbWV0YUxpZ2h0O1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhtZXRhVGhlbWUucHJvcGVydGllcykpIHtcbiAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIG1ldGFUaGVtZS5wcm9wZXJ0aWVzW2tleV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9jdXMoKSB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLnVpSW5wdXQ7XG4gICAgaWYgKGlucHV0KSB7XG4gICAgICBpbnB1dC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG1vZGVsVG9WYWx1ZShtLCB2YWx1ZVR5cGUpIHtcbiAgICBpZiAodHlwZW9mKG0pICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgc3dpdGNoICh2YWx1ZVR5cGUpIHtcbiAgICAgICAgY2FzZSAnb2JqZWN0Jzoge1xuICAgICAgICAgIHJldHVybiBtID8geyBpZDogbS5pZCwgbGFiZWw6IG0ubGFiZWwsIHR5cGU6IG0udHlwZSB9IDogbTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdudW1iZXInOiB7XG4gICAgICAgICAgaWYgKG0gIT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgdiA9IG0uaWQgfHwgbTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHJldHVybiBwYXJzZUludCh2LCAxMCk7XG4gICAgICAgICAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBpZiAobSAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbS5pZCB8fCBtO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uU3ViamVjdENoYW5nZShtb2RlbCkge1xuICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMucGFyZW50LCAnJGNoYW5nZVN1YmplY3QnKSkge1xuICAgICAgY29uc3QgcGFyZW50Q2hhbmdlOiBhbnkgPSB7fTtcbiAgICAgIHBhcmVudENoYW5nZVt0aGlzLm1ldGEubmFtZV0gPSBtb2RlbDtcbiAgICAgIHRoaXMucGFyZW50Q2hhbmdlU3ViamVjdC5uZXh0KHBhcmVudENoYW5nZSk7XG4gICAgfVxuICB9XG5cbiAgb25Nb2RlbENoYW5nZShtb2RlbCkge1xuICAgIC8vIFRPRE8gYWRkIHJlc291cmNlIHR5cGUgbG9naWNcbiAgICBpZiAodGhpcy5tb2RlbCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICB0aGlzLnBhcmVudFt0aGlzLm1ldGEubmFtZV0gPSB0aGlzLm1vZGVsLm1hcCgobSkgPT4gdGhpcy5tb2RlbFRvVmFsdWUobSwgdGhpcy5tZXRhLnZhbHVlVHlwZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBhcmVudFt0aGlzLm1ldGEubmFtZV0gPSB0aGlzLm1vZGVsVG9WYWx1ZShtb2RlbCwgdGhpcy5tZXRhLnZhbHVlVHlwZSk7XG4gICAgfVxuICAgIHRoaXMub25DaGFuZ2UuZW1pdChtb2RlbCk7XG4gICAgdGhpcy5vblN1YmplY3RDaGFuZ2UobW9kZWwpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdvbkNoYW5nZScsIG1vZGVsKTtcbiAgICB0aGlzLmNoYW5nZUV2ZW50LmluaXRNb3VzZUV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlLCB3aW5kb3csIDAsIDAsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwLCBudWxsKTtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KHRoaXMuY2hhbmdlRXZlbnQpO1xuICAgIGlmICh0aGlzLm1vZGVsKSB7XG4gICAgICB0aGlzLnByZXZNb2RlbCA9IHRoaXMubW9kZWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWV0YS51bnNldCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMubWV0YS4kb3B0aW9uYWwgPSB0aGlzLmlzT3B0aW9uYWw7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICBkZWxldGUgdGhpcy5tb2RlbDtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5tb2RlbCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5VmFsaWRhdGlvbnMoKSB7XG4gICAgdGhpcy52YWxpZGF0aW9uQXR0cmlidXRlcy5mb3JFYWNoKChhdHRyaWJ1dGUpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb24gPSB0aGlzLnZhbGlkYXRpb25zW2F0dHJpYnV0ZV07XG4gICAgICBpZiAodmFsaWRhdGlvbikge1xuICAgICAgICB0aGlzLm1vZGVsSW5wdXQuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZSwgdmFsaWRhdGlvbi52YWx1ZSB8fCB2YWxpZGF0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBNZXRhRWxlbSB7XG4gIGNzc2VsZW06IHN0cmluZztcbiAgbWV0YTogYW55O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTWV0YUVsZW1EaXNhYmxlYWRibGUgaW1wbGVtZW50cyBNZXRhRWxlbSB7XG4gIGNzc21vZGlmaWVyOiBzdHJpbmc7XG4gIGFic3RyYWN0IG1ldGE6IGFueTtcbiAgYWJzdHJhY3QgY3NzZWxlbTogc3RyaW5nO1xuICBhYnN0cmFjdCBlbGVtZW50UmVmOiBFbGVtZW50UmVmO1xuICBkaXNhYmxlKCkge1xuICAgIGNvbnNvbGUubG9nKHRoaXMuY3NzbW9kaWZpZXIpO1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5jc3Ntb2RpZmllcik7XG4gIH1cbn1cblxuIl19