@expcluster/permission-groups 7.0.1

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 (91) hide show
  1. package/LICENSE.md +21 -0
  2. package/controller.ts +434 -0
  3. package/dist/browser/messages.d.ts +527 -0
  4. package/dist/browser/messages.d.ts.map +1 -0
  5. package/dist/browser/messages.js +561 -0
  6. package/dist/browser/messages.js.map +1 -0
  7. package/dist/browser/package.json +49 -0
  8. package/dist/browser/tsconfig.browser.tsbuildinfo +1 -0
  9. package/dist/browser/web/components/AssignmentForm.d.ts +7 -0
  10. package/dist/browser/web/components/AssignmentForm.d.ts.map +1 -0
  11. package/dist/browser/web/components/AssignmentForm.js +29 -0
  12. package/dist/browser/web/components/AssignmentForm.js.map +1 -0
  13. package/dist/browser/web/components/AssignmentsTable.d.ts +2 -0
  14. package/dist/browser/web/components/AssignmentsTable.d.ts.map +1 -0
  15. package/dist/browser/web/components/AssignmentsTable.js +61 -0
  16. package/dist/browser/web/components/AssignmentsTable.js.map +1 -0
  17. package/dist/browser/web/components/DeleteConfirm.d.ts +6 -0
  18. package/dist/browser/web/components/DeleteConfirm.d.ts.map +1 -0
  19. package/dist/browser/web/components/DeleteConfirm.js +7 -0
  20. package/dist/browser/web/components/DeleteConfirm.js.map +1 -0
  21. package/dist/browser/web/components/GroupForm.d.ts +5 -0
  22. package/dist/browser/web/components/GroupForm.d.ts.map +1 -0
  23. package/dist/browser/web/components/GroupForm.js +22 -0
  24. package/dist/browser/web/components/GroupForm.js.map +1 -0
  25. package/dist/browser/web/components/GroupViewPage.d.ts +2 -0
  26. package/dist/browser/web/components/GroupViewPage.d.ts.map +1 -0
  27. package/dist/browser/web/components/GroupViewPage.js +161 -0
  28. package/dist/browser/web/components/GroupViewPage.js.map +1 -0
  29. package/dist/browser/web/components/GroupsTable.d.ts +2 -0
  30. package/dist/browser/web/components/GroupsTable.d.ts.map +1 -0
  31. package/dist/browser/web/components/GroupsTable.js +29 -0
  32. package/dist/browser/web/components/GroupsTable.js.map +1 -0
  33. package/dist/browser/web/components/RoleMappingForm.d.ts +7 -0
  34. package/dist/browser/web/components/RoleMappingForm.d.ts.map +1 -0
  35. package/dist/browser/web/components/RoleMappingForm.js +32 -0
  36. package/dist/browser/web/components/RoleMappingForm.js.map +1 -0
  37. package/dist/browser/web/components/RoleMappingsTable.d.ts +2 -0
  38. package/dist/browser/web/components/RoleMappingsTable.d.ts.map +1 -0
  39. package/dist/browser/web/components/RoleMappingsTable.js +64 -0
  40. package/dist/browser/web/components/RoleMappingsTable.js.map +1 -0
  41. package/dist/browser/web/index.d.ts +13 -0
  42. package/dist/browser/web/index.d.ts.map +1 -0
  43. package/dist/browser/web/index.js +60 -0
  44. package/dist/browser/web/index.js.map +1 -0
  45. package/dist/node/controller.d.ts +37 -0
  46. package/dist/node/controller.d.ts.map +1 -0
  47. package/dist/node/controller.js +372 -0
  48. package/dist/node/controller.js.map +1 -0
  49. package/dist/node/index.d.ts +10 -0
  50. package/dist/node/index.d.ts.map +1 -0
  51. package/dist/node/index.js +196 -0
  52. package/dist/node/index.js.map +1 -0
  53. package/dist/node/instance.d.ts +40 -0
  54. package/dist/node/instance.d.ts.map +1 -0
  55. package/dist/node/instance.js +155 -0
  56. package/dist/node/instance.js.map +1 -0
  57. package/dist/node/messages.d.ts +527 -0
  58. package/dist/node/messages.d.ts.map +1 -0
  59. package/dist/node/messages.js +620 -0
  60. package/dist/node/messages.js.map +1 -0
  61. package/dist/node/tsconfig.node.tsbuildinfo +1 -0
  62. package/dist/web/manifest.json +10 -0
  63. package/dist/web/static/exp_groups.afefd90b210f7c8e0df2.js +543 -0
  64. package/dist/web/static/index_ts.f7d30aa0c13ff0be393a.js +22 -0
  65. package/dist/web/static/main.c2178975889c1c720e80.js +653 -0
  66. package/dist/web/static/messages_ts.65a81c17fb37953c5d68.js +22 -0
  67. package/dist/web/static/package_json.aab0d3f37da0567c250c.js +22 -0
  68. package/dist/web/static/vendors-node_modules_pnpm_ant-design_icons_6_2_3_rea_94b50600dfe79448cabf92d130d83059_node_mo-c79f54.cf768c64b40c811ce6c9.js +273 -0
  69. package/dist/web/static/vendors-node_modules_pnpm_sinclair_typebox_0_30_4_node_modules_sinclair_typebox_typebox_js.7fa46fac84f2e9324e54.js +22 -0
  70. package/dist/web/static/web_index_tsx-webpack_sharing_consume_default_react.b4766180f4d467b7b24f.js +102 -0
  71. package/index.ts +183 -0
  72. package/instance.ts +171 -0
  73. package/messages.ts +692 -0
  74. package/module/control.lua +438 -0
  75. package/module/globals.lua +11 -0
  76. package/module/module.json +12 -0
  77. package/module/module_exports.lua +3 -0
  78. package/package.json +47 -0
  79. package/tsconfig.browser.json +4 -0
  80. package/tsconfig.json +7 -0
  81. package/tsconfig.node.json +5 -0
  82. package/web/components/AssignmentForm.tsx +74 -0
  83. package/web/components/AssignmentsTable.tsx +111 -0
  84. package/web/components/DeleteConfirm.tsx +16 -0
  85. package/web/components/GroupForm.tsx +45 -0
  86. package/web/components/GroupViewPage.tsx +287 -0
  87. package/web/components/GroupsTable.tsx +49 -0
  88. package/web/components/RoleMappingForm.tsx +106 -0
  89. package/web/components/RoleMappingsTable.tsx +107 -0
  90. package/web/index.tsx +108 -0
  91. package/webpack.config.js +34 -0
@@ -0,0 +1,543 @@
1
+ /*
2
+ * ATTENTION: An "eval-source-map" devtool has been used.
3
+ * This devtool is neither made for production nor for readable output files.
4
+ * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
5
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
6
+ * or disable the default devtool with "devtool: false".
7
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
8
+ */
9
+ /******/ (() => { // webpackBootstrap
10
+ /******/ "use strict";
11
+ /******/ var __webpack_modules__ = ({
12
+
13
+ /***/ 518
14
+ /*!***********************!*\
15
+ !*** container entry ***!
16
+ \***********************/
17
+ (__unused_webpack_module, exports, __webpack_require__) {
18
+
19
+ const moduleMap = {
20
+ "./": () => {
21
+ return Promise.all([__webpack_require__.e("vendors-node_modules_pnpm_sinclair_typebox_0_30_4_node_modules_sinclair_typebox_typebox_js"), __webpack_require__.e("messages_ts"), __webpack_require__.e("index_ts")]).then(() => (() => ((__webpack_require__(/*! ./index.ts */ 566)))));
22
+ },
23
+ "./package.json": () => {
24
+ return __webpack_require__.e("package_json").then(() => (() => ((__webpack_require__(/*! ./package.json */ 330)))));
25
+ },
26
+ "./web": () => {
27
+ return Promise.all([__webpack_require__.e("vendors-node_modules_pnpm_sinclair_typebox_0_30_4_node_modules_sinclair_typebox_typebox_js"), __webpack_require__.e("vendors-node_modules_pnpm_ant-design_icons_6_2_3_rea_94b50600dfe79448cabf92d130d83059_node_mo-c79f54"), __webpack_require__.e("messages_ts"), __webpack_require__.e("web_index_tsx-webpack_sharing_consume_default_react")]).then(() => (() => ((__webpack_require__(/*! ./web/index.tsx */ 769)))));
28
+ }
29
+ };
30
+ const get = (module, getScope) => {
31
+ __webpack_require__.R = getScope;
32
+ getScope = (
33
+ __webpack_require__.o(moduleMap, module)
34
+ ? moduleMap[module]()
35
+ : Promise.resolve().then(() => {
36
+ throw new Error('Module "' + module + '" does not exist in container.');
37
+ })
38
+ );
39
+ __webpack_require__.R = undefined;
40
+ return getScope;
41
+ };
42
+ const init = (shareScope, initScope) => {
43
+ if (!__webpack_require__.S) return;
44
+ const name = "default"
45
+ const oldScope = __webpack_require__.S[name];
46
+ if(oldScope && oldScope !== shareScope) throw new Error("Container initialization failed as it has already been initialized with a different share scope");
47
+ __webpack_require__.S[name] = shareScope;
48
+ return __webpack_require__.I(name, initScope);
49
+ };
50
+
51
+ // This exports getters to disallow modifications
52
+ __webpack_require__.d(exports, {
53
+ get: () => (get),
54
+ init: () => (init)
55
+ });
56
+
57
+ /***/ }
58
+
59
+ /******/ });
60
+ /************************************************************************/
61
+ /******/ // The module cache
62
+ /******/ const __webpack_module_cache__ = {};
63
+ /******/
64
+ /******/ // The require function
65
+ /******/ function __webpack_require__(moduleId) {
66
+ /******/ // Check if module is in cache
67
+ /******/ const cachedModule = __webpack_module_cache__[moduleId];
68
+ /******/ if (cachedModule !== undefined) {
69
+ /******/ return cachedModule.exports;
70
+ /******/ }
71
+ /******/ // Create a new module (and put it into the cache)
72
+ /******/ const module = __webpack_module_cache__[moduleId] = {
73
+ /******/ // no module.id needed
74
+ /******/ // no module.loaded needed
75
+ /******/ exports: {}
76
+ /******/ };
77
+ /******/
78
+ /******/ // Execute the module function
79
+ /******/ if (!(moduleId in __webpack_modules__)) {
80
+ /******/ delete __webpack_module_cache__[moduleId];
81
+ /******/ const e = new Error("Cannot find module '" + moduleId + "'");
82
+ /******/ e.code = 'MODULE_NOT_FOUND';
83
+ /******/ throw e;
84
+ /******/ }
85
+ /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
86
+ /******/
87
+ /******/ // Return the exports of the module
88
+ /******/ return module.exports;
89
+ /******/ }
90
+ /******/
91
+ /******/ // expose the modules object (__webpack_modules__)
92
+ /******/ __webpack_require__.m = __webpack_modules__;
93
+ /******/
94
+ /******/ // expose the module cache
95
+ /******/ __webpack_require__.c = __webpack_module_cache__;
96
+ /******/
97
+ /************************************************************************/
98
+ /******/ /* webpack/runtime/compat get default export */
99
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
100
+ /******/ __webpack_require__.n = (module) => {
101
+ /******/ const getter = module && module.__esModule ?
102
+ /******/ () => (module['default']) :
103
+ /******/ () => (module);
104
+ /******/ __webpack_require__.d(getter, { a: getter });
105
+ /******/ return getter;
106
+ /******/ };
107
+ /******/
108
+ /******/ /* webpack/runtime/define property getters */
109
+ /******/ // define getter/value functions for harmony exports
110
+ /******/ __webpack_require__.d = (exports, definition) => {
111
+ /******/ for(var key in definition) {
112
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
113
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
114
+ /******/ }
115
+ /******/ }
116
+ /******/ };
117
+ /******/
118
+ /******/ /* webpack/runtime/ensure chunk */
119
+ /******/ __webpack_require__.f = {};
120
+ /******/ // This file contains only the entry chunk.
121
+ /******/ // The chunk loading function for additional chunks
122
+ /******/ __webpack_require__.e = (chunkId) => {
123
+ /******/ return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {
124
+ /******/ __webpack_require__.f[key](chunkId, promises);
125
+ /******/ return promises;
126
+ /******/ }, []));
127
+ /******/ };
128
+ /******/
129
+ /******/ /* webpack/runtime/get javascript chunk filename */
130
+ /******/ // This function allow to reference async chunks
131
+ /******/ __webpack_require__.u = (chunkId) => ("static/" + chunkId + "." + {"vendors-node_modules_pnpm_sinclair_typebox_0_30_4_node_modules_sinclair_typebox_typebox_js":"7fa46fac84f2e9324e54","messages_ts":"65a81c17fb37953c5d68","index_ts":"f7d30aa0c13ff0be393a","package_json":"aab0d3f37da0567c250c","vendors-node_modules_pnpm_ant-design_icons_6_2_3_rea_94b50600dfe79448cabf92d130d83059_node_mo-c79f54":"cf768c64b40c811ce6c9","web_index_tsx-webpack_sharing_consume_default_react":"b4766180f4d467b7b24f"}[chunkId] + ".js");
132
+ /******/
133
+ /******/ /* webpack/runtime/global */
134
+ /******/ __webpack_require__.g = (function() {
135
+ /******/ if (typeof globalThis === 'object') return globalThis;
136
+ /******/ try {
137
+ /******/ return this || new Function('return this')();
138
+ /******/ } catch (e) {
139
+ /******/ if (typeof window === 'object') return window;
140
+ /******/ }
141
+ /******/ })();
142
+ /******/
143
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
144
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop));
145
+ /******/
146
+ /******/ /* webpack/runtime/load script */
147
+ /******/ (() => {
148
+ /******/ const inProgress = {};
149
+ /******/ const dataWebpackPrefix = "@expcluster/permission-groups:";
150
+ /******/ // loadScript function to load a script via script tag
151
+ /******/ __webpack_require__.l = (url, done, key, chunkId) => {
152
+ /******/ if(inProgress[url]) { inProgress[url].push(done); return; }
153
+ /******/ let script, needAttach;
154
+ /******/ if(key !== undefined) {
155
+ /******/ const scripts = document.getElementsByTagName("script");
156
+ /******/ for(var i = 0; i < scripts.length; i++) {
157
+ /******/ const s = scripts[i];
158
+ /******/ if(s.getAttribute("src") == url || s.getAttribute("data-webpack") == dataWebpackPrefix + key) { script = s; break; }
159
+ /******/ }
160
+ /******/ }
161
+ /******/ if(!script) {
162
+ /******/ needAttach = true;
163
+ /******/ script = document.createElement('script');
164
+ /******/
165
+ /******/ script.charset = 'utf-8';
166
+ /******/ if (__webpack_require__.nc) {
167
+ /******/ script.setAttribute("nonce", __webpack_require__.nc);
168
+ /******/ }
169
+ /******/ script.setAttribute("data-webpack", dataWebpackPrefix + key);
170
+ /******/
171
+ /******/ script.src = url;
172
+ /******/ }
173
+ /******/ inProgress[url] = [done];
174
+ /******/ const onScriptComplete = (prev, event) => {
175
+ /******/ // avoid mem leaks in IE.
176
+ /******/ script.onerror = script.onload = null;
177
+ /******/ clearTimeout(timeout);
178
+ /******/ const doneFns = inProgress[url];
179
+ /******/ delete inProgress[url];
180
+ /******/ script.parentNode?.removeChild(script);
181
+ /******/ doneFns?.forEach((fn) => (fn(event)));
182
+ /******/ if(prev) return prev(event);
183
+ /******/ }
184
+ /******/ const timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);
185
+ /******/ script.onerror = onScriptComplete.bind(null, script.onerror);
186
+ /******/ script.onload = onScriptComplete.bind(null, script.onload);
187
+ /******/ needAttach && document.head.appendChild(script);
188
+ /******/ };
189
+ /******/ })();
190
+ /******/
191
+ /******/ /* webpack/runtime/make namespace object */
192
+ /******/ // define __esModule on exports
193
+ /******/ __webpack_require__.r = (exports) => {
194
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
195
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
196
+ /******/ };
197
+ /******/
198
+ /******/ /* webpack/runtime/sharing */
199
+ /******/ (() => {
200
+ /******/ __webpack_require__.S = {};
201
+ /******/ const initPromises = {};
202
+ /******/ const initTokens = {};
203
+ /******/ __webpack_require__.I = (name, initScope) => {
204
+ /******/ if(!initScope) initScope = [];
205
+ /******/ // handling circular init calls
206
+ /******/ let initToken = initTokens[name];
207
+ /******/ if(!initToken) initToken = initTokens[name] = {};
208
+ /******/ if(initScope.indexOf(initToken) >= 0) return;
209
+ /******/ initScope.push(initToken);
210
+ /******/ // only runs once
211
+ /******/ if(initPromises[name]) return initPromises[name];
212
+ /******/ // creates a new share scope if needed
213
+ /******/ if(!__webpack_require__.o(__webpack_require__.S, name)) __webpack_require__.S[name] = {};
214
+ /******/ // runs all init snippets from all modules reachable
215
+ /******/ const scope = __webpack_require__.S[name];
216
+ /******/ const warn = (msg) => {
217
+ /******/ if (typeof console !== "undefined" && console.warn) console.warn(msg);
218
+ /******/ };
219
+ /******/ const uniqueName = "@expcluster/permission-groups";
220
+ /******/ const register = (name, version, factory, eager) => {
221
+ /******/ const versions = scope[name] = scope[name] || {};
222
+ /******/ const activeVersion = versions[version];
223
+ /******/ if(!activeVersion || (!activeVersion.loaded && (!eager != !activeVersion.eager ? eager : uniqueName > activeVersion.from))) versions[version] = { get: factory, from: uniqueName, eager: !!eager };
224
+ /******/ };
225
+ /******/ const initExternal = (id) => {
226
+ /******/ const handleError = (err) => (warn("Initialization of sharing external failed: " + err));
227
+ /******/ try {
228
+ /******/ const module = __webpack_require__(id);
229
+ /******/ if(!module) return;
230
+ /******/ const initFn = (module) => (module && module.init && module.init(__webpack_require__.S[name], initScope))
231
+ /******/ if(module.then) return promises.push(module.then(initFn, handleError));
232
+ /******/ const initResult = initFn(module);
233
+ /******/ if(initResult?.then) return promises.push(initResult['catch'](handleError));
234
+ /******/ } catch(err) { handleError(err); }
235
+ /******/ }
236
+ /******/ const promises = [];
237
+ /******/ switch(name) {
238
+ /******/ }
239
+ /******/ if(!promises.length) return initPromises[name] = 1;
240
+ /******/ return initPromises[name] = Promise.all(promises).then(() => (initPromises[name] = 1));
241
+ /******/ };
242
+ /******/ })();
243
+ /******/
244
+ /******/ /* webpack/runtime/publicPath */
245
+ /******/ (() => {
246
+ /******/ let scriptUrl;
247
+ /******/ if (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + "";
248
+ /******/ const document = __webpack_require__.g.document;
249
+ /******/ if (!scriptUrl && document) {
250
+ /******/ if (document.currentScript?.tagName.toUpperCase() === 'SCRIPT')
251
+ /******/ scriptUrl = document.currentScript.src;
252
+ /******/ if (!scriptUrl) {
253
+ /******/ const scripts = document.getElementsByTagName("script");
254
+ /******/ if(scripts.length) {
255
+ /******/ let i = scripts.length - 1;
256
+ /******/ while (i > -1 && (!scriptUrl || !/^https?:/.test(scriptUrl))) scriptUrl = scripts[i--].src;
257
+ /******/ }
258
+ /******/ }
259
+ /******/ }
260
+ /******/ // When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration
261
+ /******/ // or pass an empty string ("") and set the __webpack_public_path__ variable from your code to use your own logic.
262
+ /******/ if (!scriptUrl) throw new Error("Automatic publicPath is not supported in this browser");
263
+ /******/ scriptUrl = scriptUrl.replace(/^blob:|[?#].*$/g, "").replace(/\/[^/]+$/, "/");
264
+ /******/ __webpack_require__.p = scriptUrl + "../";
265
+ /******/ })();
266
+ /******/
267
+ /******/ /* webpack/runtime/consumes */
268
+ /******/ (() => {
269
+ /******/ var parseVersion = (str) => {
270
+ /******/ // see webpack/lib/util/semver.js for original code
271
+ /******/ var p=p=>{return p.split(".").map(p=>{return+p==p?+p:p})},n=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(str),r=n[1]?p(n[1]):[];return n[2]&&(r.length++,r.push.apply(r,p(n[2]))),n[3]&&(r.push([]),r.push.apply(r,p(n[3]))),r;
272
+ /******/ }
273
+ /******/ var versionLt = (a, b) => {
274
+ /******/ // see webpack/lib/util/semver.js for original code
275
+ /******/ a=parseVersion(a),b=parseVersion(b);for(var r=0;;){if(r>=a.length)return r<b.length&&"u"!=(typeof b[r])[0];var e=a[r],n=(typeof e)[0];if(r>=b.length)return"u"==n;var t=b[r],f=(typeof t)[0];if(n!=f)return"o"==n&&"n"==f||("s"==f||"u"==n);if("o"!=n&&"u"!=n&&e!=t)return e<t;r++}
276
+ /******/ }
277
+ /******/ var rangeToString = (range) => {
278
+ /******/ // see webpack/lib/util/semver.js for original code
279
+ /******/ var r=range[0],n="";if(1===range.length)return"*";if(r+.5){n+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var e=1,a=1;a<range.length;a++){e--,n+="u"==(typeof(t=range[a]))[0]?"-":(e>0?".":"")+(e=2,t)}return n}var g=[];for(a=1;a<range.length;a++){var t=range[a];g.push(0===t?"not("+o()+")":1===t?"("+o()+" || "+o()+")":2===t?g.pop()+" "+g.pop():rangeToString(t))}return o();function o(){return g.pop().replace(/^\((.+)\)$/,"$1")}
280
+ /******/ }
281
+ /******/ var satisfy = (range, version) => {
282
+ /******/ // see webpack/lib/util/semver.js for original code
283
+ /******/ if(0 in range){version=parseVersion(version);var e=range[0],r=e<0;r&&(e=-e-1);for(var n=0,i=1,a=!0;;i++,n++){var f,s,g=i<range.length?(typeof range[i])[0]:"";if(n>=version.length||"o"==(s=(typeof(f=version[n]))[0]))return!a||("u"==g?i>e&&!r:""==g!=r);if("u"==s){if(!a||"u"!=g)return!1}else if(a)if(g==s)if(i<=e){if(f!=range[i])return!1}else{if(r?f>range[i]:f<range[i])return!1;f!=range[i]&&(a=!1)}else if("s"!=g&&"n"!=g){if(r||i<=e)return!1;a=!1,i--}else{if(i<=e||s<g!=r)return!1;a=!1}else"s"!=g&&"n"!=g&&(a=!1,i--)}}var t=[],o=t.pop.bind(t);for(n=1;n<range.length;n++){var u=range[n];t.push(1==u?o()|o():2==u?o()&o():u?satisfy(u,version):!o())}return!!o();
284
+ /******/ }
285
+ /******/ const exists = (scope, key) => {
286
+ /******/ return scope && __webpack_require__.o(scope, key);
287
+ /******/ }
288
+ /******/ const get = (entry) => {
289
+ /******/ entry.loaded = 1;
290
+ /******/ return entry.get()
291
+ /******/ };
292
+ /******/ const eagerOnly = (versions) => {
293
+ /******/ return Object.keys(versions).reduce((filtered, version) => {
294
+ /******/ if (versions[version].eager) {
295
+ /******/ filtered[version] = versions[version];
296
+ /******/ }
297
+ /******/ return filtered;
298
+ /******/ }, {});
299
+ /******/ };
300
+ /******/ const findLatestVersion = (scope, key, eager) => {
301
+ /******/ const versions = eager ? eagerOnly(scope[key]) : scope[key];
302
+ /******/ var key = Object.keys(versions).reduce((a, b) => {
303
+ /******/ return !a || versionLt(a, b) ? b : a;
304
+ /******/ }, 0);
305
+ /******/ return key && versions[key];
306
+ /******/ };
307
+ /******/ const findSatisfyingVersion = (scope, key, requiredVersion, eager) => {
308
+ /******/ const versions = eager ? eagerOnly(scope[key]) : scope[key];
309
+ /******/ var key = Object.keys(versions).reduce((a, b) => {
310
+ /******/ if (!satisfy(requiredVersion, b)) return a;
311
+ /******/ return !a || versionLt(a, b) ? b : a;
312
+ /******/ }, 0);
313
+ /******/ return key && versions[key]
314
+ /******/ };
315
+ /******/ const findSingletonVersionKey = (scope, key, eager) => {
316
+ /******/ const versions = eager ? eagerOnly(scope[key]) : scope[key];
317
+ /******/ return Object.keys(versions).reduce((a, b) => {
318
+ /******/ return !a || (!versions[a].loaded && versionLt(a, b)) ? b : a;
319
+ /******/ }, 0);
320
+ /******/ };
321
+ /******/ const getInvalidSingletonVersionMessage = (scope, key, version, requiredVersion) => {
322
+ /******/ return "Unsatisfied version " + version + " from " + (version && scope[key][version].from) + " of shared singleton module " + key + " (required " + rangeToString(requiredVersion) + ")"
323
+ /******/ };
324
+ /******/ const getInvalidVersionMessage = (scope, scopeName, key, requiredVersion, eager) => {
325
+ /******/ const versions = scope[key];
326
+ /******/ return "No satisfying version (" + rangeToString(requiredVersion) + ")" + (eager ? " for eager consumption" : "") + " of shared module " + key + " found in shared scope " + scopeName + ".\n" +
327
+ /******/ "Available versions: " + Object.keys(versions).map((key) => {
328
+ /******/ return key + " from " + versions[key].from;
329
+ /******/ }).join(", ");
330
+ /******/ };
331
+ /******/ const fail = (msg) => {
332
+ /******/ throw new Error(msg);
333
+ /******/ }
334
+ /******/ const failAsNotExist = (scopeName, key) => {
335
+ /******/ return fail("Shared module " + key + " doesn't exist in shared scope " + scopeName);
336
+ /******/ }
337
+ /******/ const warn = /*#__PURE__*/ (msg) => {
338
+ /******/ if (typeof console !== "undefined" && console.warn) console.warn(msg);
339
+ /******/ };
340
+ /******/ const init = (fn) => (function(scopeName, key, eager, c, d) {
341
+ /******/ const promise = __webpack_require__.I(scopeName);
342
+ /******/ if (promise?.then && !eager) {
343
+ /******/ return promise.then(fn.bind(fn, scopeName, __webpack_require__.S[scopeName], key, false, c, d));
344
+ /******/ }
345
+ /******/ return fn(scopeName, __webpack_require__.S[scopeName], key, eager, c, d);
346
+ /******/ });
347
+ /******/
348
+ /******/ const useFallback = (scopeName, key, fallback) => {
349
+ /******/ return fallback ? fallback() : failAsNotExist(scopeName, key);
350
+ /******/ }
351
+ /******/ const load = /*#__PURE__*/ init((scopeName, scope, key, eager, fallback) => {
352
+ /******/ if (!exists(scope, key)) return useFallback(scopeName, key, fallback);
353
+ /******/ return get(findLatestVersion(scope, key, eager));
354
+ /******/ });
355
+ /******/ const loadVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {
356
+ /******/ if (!exists(scope, key)) return useFallback(scopeName, key, fallback);
357
+ /******/ const satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);
358
+ /******/ if (satisfyingVersion) return get(satisfyingVersion);
359
+ /******/ warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager))
360
+ /******/ return get(findLatestVersion(scope, key, eager));
361
+ /******/ });
362
+ /******/ const loadStrictVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {
363
+ /******/ if (!exists(scope, key)) return useFallback(scopeName, key, fallback);
364
+ /******/ const satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);
365
+ /******/ if (satisfyingVersion) return get(satisfyingVersion);
366
+ /******/ if (fallback) return fallback();
367
+ /******/ fail(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager));
368
+ /******/ });
369
+ /******/ const loadSingleton = /*#__PURE__*/ init((scopeName, scope, key, eager, fallback) => {
370
+ /******/ if (!exists(scope, key)) return useFallback(scopeName, key, fallback);
371
+ /******/ const version = findSingletonVersionKey(scope, key, eager);
372
+ /******/ return get(scope[key][version]);
373
+ /******/ });
374
+ /******/ const loadSingletonVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {
375
+ /******/ if (!exists(scope, key)) return useFallback(scopeName, key, fallback);
376
+ /******/ const version = findSingletonVersionKey(scope, key, eager);
377
+ /******/ if (!satisfy(requiredVersion, version)) {
378
+ /******/ warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));
379
+ /******/ }
380
+ /******/ return get(scope[key][version]);
381
+ /******/ });
382
+ /******/ const loadStrictSingletonVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {
383
+ /******/ if (!exists(scope, key)) return useFallback(scopeName, key, fallback);
384
+ /******/ const version = findSingletonVersionKey(scope, key, eager);
385
+ /******/ if (!satisfy(requiredVersion, version)) {
386
+ /******/ fail(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));
387
+ /******/ }
388
+ /******/ return get(scope[key][version]);
389
+ /******/ });
390
+ /******/ const installedModules = {};
391
+ /******/ const moduleToHandlerMapping = {
392
+ /******/ 194: () => (load("default", "@clusterio/lib", false)),
393
+ /******/ 27: () => (load("default", "react", false)),
394
+ /******/ 226: () => (load("default", "react-router-dom", false)),
395
+ /******/ 388: () => (load("default", "@clusterio/web_ui", false)),
396
+ /******/ 533: () => (loadVersion("default", "react", false, [0,16,0,0])),
397
+ /******/ 537: () => (load("default", "antd", false))
398
+ /******/ };
399
+ /******/ // no consumes in initial chunks
400
+ /******/ const chunkMapping = {
401
+ /******/ "messages_ts": [
402
+ /******/ 194
403
+ /******/ ],
404
+ /******/ "web_index_tsx-webpack_sharing_consume_default_react": [
405
+ /******/ 27,
406
+ /******/ 226,
407
+ /******/ 388,
408
+ /******/ 533,
409
+ /******/ 537
410
+ /******/ ]
411
+ /******/ };
412
+ /******/ const startedInstallModules = {};
413
+ /******/ __webpack_require__.f.consumes = (chunkId, promises) => {
414
+ /******/ if(__webpack_require__.o(chunkMapping, chunkId)) {
415
+ /******/ chunkMapping[chunkId].forEach((id) => {
416
+ /******/ if(__webpack_require__.o(installedModules, id)) return promises.push(installedModules[id]);
417
+ /******/ if(!startedInstallModules[id]) {
418
+ /******/ const onFactory = (factory) => {
419
+ /******/ installedModules[id] = 0;
420
+ /******/ __webpack_require__.m[id] = (module) => {
421
+ /******/ delete __webpack_require__.c[id];
422
+ /******/ module.exports = factory();
423
+ /******/ }
424
+ /******/ };
425
+ /******/ startedInstallModules[id] = true;
426
+ /******/ const onError = (error) => {
427
+ /******/ delete installedModules[id];
428
+ /******/ __webpack_require__.m[id] = (module) => {
429
+ /******/ delete __webpack_require__.c[id];
430
+ /******/ throw error;
431
+ /******/ }
432
+ /******/ };
433
+ /******/ try {
434
+ /******/ const promise = moduleToHandlerMapping[id]();
435
+ /******/ if(promise.then) {
436
+ /******/ promises.push(installedModules[id] = promise.then(onFactory)['catch'](onError));
437
+ /******/ } else onFactory(promise);
438
+ /******/ } catch(e) { onError(e); }
439
+ /******/ }
440
+ /******/ });
441
+ /******/ }
442
+ /******/ }
443
+ /******/ })();
444
+ /******/
445
+ /******/ /* webpack/runtime/jsonp chunk loading */
446
+ /******/ (() => {
447
+ /******/ // no baseURI
448
+ /******/
449
+ /******/ // object to store loaded and loading chunks
450
+ /******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
451
+ /******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
452
+ /******/ const installedChunks = {
453
+ /******/ "exp_groups": 0
454
+ /******/ };
455
+ /******/
456
+ /******/ __webpack_require__.f.j = (chunkId, promises) => {
457
+ /******/ // JSONP chunk loading for javascript
458
+ /******/ let installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;
459
+ /******/ if(installedChunkData !== 0) { // 0 means "already installed".
460
+ /******/
461
+ /******/ // a Promise means "currently loading".
462
+ /******/ if(installedChunkData) {
463
+ /******/ promises.push(installedChunkData[2]);
464
+ /******/ } else {
465
+ /******/ if(true) { // all chunks have JS
466
+ /******/ // setup Promise in chunk cache
467
+ /******/ const promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));
468
+ /******/ promises.push(installedChunkData[2] = promise);
469
+ /******/
470
+ /******/ // create error before stack unwound to get useful stacktrace later
471
+ /******/ const error = new Error();
472
+ /******/ const loadingEnded = (event) => {
473
+ /******/ if(__webpack_require__.o(installedChunks, chunkId)) {
474
+ /******/ installedChunkData = installedChunks[chunkId];
475
+ /******/ if(installedChunkData !== 0) installedChunks[chunkId] = undefined;
476
+ /******/ if(installedChunkData) {
477
+ /******/ const errorType = event && (event.type === 'load' ? 'missing' : event.type);
478
+ /******/ const realSrc = event && event.target && event.target.src;
479
+ /******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')';
480
+ /******/ error.name = 'ChunkLoadError';
481
+ /******/ error.type = errorType;
482
+ /******/ error.request = realSrc;
483
+ /******/ error.event = event;
484
+ /******/ installedChunkData[1](error);
485
+ /******/ }
486
+ /******/ }
487
+ /******/ };
488
+ /******/ __webpack_require__.l(__webpack_require__.p + __webpack_require__.u(chunkId), loadingEnded, "chunk-" + chunkId, chunkId);
489
+ /******/ }
490
+ /******/ }
491
+ /******/ }
492
+ /******/ };
493
+ /******/
494
+ /******/ // no prefetching
495
+ /******/
496
+ /******/ // no preloaded
497
+ /******/
498
+ /******/ // no HMR
499
+ /******/
500
+ /******/ // no HMR manifest
501
+ /******/
502
+ /******/ // no on chunks loaded
503
+ /******/
504
+ /******/ // install a JSONP callback for chunk loading
505
+ /******/ const webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
506
+ /******/ let [chunkIds, moreModules, runtime] = data;
507
+ /******/ // add "moreModules" to the modules object,
508
+ /******/ // then flag all "chunkIds" as loaded and fire callback
509
+ /******/ var moduleId, chunkId, i = 0;
510
+ /******/ if(chunkIds.some((id) => (installedChunks[id] !== 0))) {
511
+ /******/ for(moduleId in moreModules) {
512
+ /******/ if(__webpack_require__.o(moreModules, moduleId)) {
513
+ /******/ __webpack_require__.m[moduleId] = moreModules[moduleId];
514
+ /******/ }
515
+ /******/ }
516
+ /******/ if(runtime) var result = runtime(__webpack_require__);
517
+ /******/ }
518
+ /******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
519
+ /******/ for(;i < chunkIds.length; i++) {
520
+ /******/ chunkId = chunkIds[i];
521
+ /******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
522
+ /******/ installedChunks[chunkId][0]();
523
+ /******/ }
524
+ /******/ installedChunks[chunkId] = 0;
525
+ /******/ }
526
+ /******/
527
+ /******/ }
528
+ /******/
529
+ /******/ const chunkLoadingGlobal = self["webpackChunk_expcluster_permission_groups"] = self["webpackChunk_expcluster_permission_groups"] || [];
530
+ /******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
531
+ /******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
532
+ /******/ })();
533
+ /******/
534
+ /************************************************************************/
535
+ /******/
536
+ /******/ // module cache are used so entry inlining is disabled
537
+ /******/ // startup
538
+ /******/ // Load entry module and return exports
539
+ /******/ let __webpack_exports__ = __webpack_require__(518);
540
+ /******/ window.plugin_exp_groups = __webpack_exports__;
541
+ /******/
542
+ /******/ })()
543
+ ;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ /*
3
+ * ATTENTION: An "eval-source-map" devtool has been used.
4
+ * This devtool is neither made for production nor for readable output files.
5
+ * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
6
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
7
+ * or disable the default devtool with "devtool: false".
8
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
9
+ */
10
+ (self["webpackChunk_expcluster_permission_groups"] = self["webpackChunk_expcluster_permission_groups"] || []).push([["index_ts"],{
11
+
12
+ /***/ 566
13
+ /*!******************!*\
14
+ !*** ./index.ts ***!
15
+ \******************/
16
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
17
+
18
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ plugin: () => (/* binding */ plugin)\n/* harmony export */ });\n/* harmony import */ var _clusterio_lib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @clusterio/lib */ 194);\n/* harmony import */ var _clusterio_lib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_clusterio_lib__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _messages__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./messages */ 40);\n\n\n// Group permissions\n_clusterio_lib__WEBPACK_IMPORTED_MODULE_0__.definePermission({\n name: \"exp_groups.group.get\",\n title: \"Get Groups\",\n description: \"Retrieve a specific Factorio permission group by ID.\",\n grantByDefault: true\n});\n_clusterio_lib__WEBPACK_IMPORTED_MODULE_0__.definePermission({\n name: \"exp_groups.group.list\",\n title: \"List Groups\",\n description: \"List all Factorio permission groups.\",\n grantByDefault: true\n});\n_clusterio_lib__WEBPACK_IMPORTED_MODULE_0__.definePermission({\n name: \"exp_groups.group.subscribe\",\n title: \"Subscribe to Group Updates\",\n description: \"Receive updates when Factorio permission groups change.\",\n grantByDefault: true\n});\n_clusterio_lib__WEBPACK_IMPORTED_MODULE_0__.definePermission({\n name: \"exp_groups.group.create\",\n title: \"Create Groups\",\n description: \"Create new Factorio permission groups.\",\n grantByDefault: false\n});\n_clusterio_lib__WEBPACK_IMPORTED_MODULE_0__.definePermission({\n name: \"exp_groups.group.update\",\n title: \"Update Groups\",\n description: \"Modify existing Factorio permission groups.\",\n grantByDefault: false\n});\n_clusterio_lib__WEBPACK_IMPORTED_MODULE_0__.definePermission({\n name: \"exp_groups.group.delete\",\n title: \"Delete Groups\",\n description: \"Delete Factorio permission groups.\",\n grantByDefault: false\n});\n// Assignment permissions\n_clusterio_lib__WEBPACK_IMPORTED_MODULE_0__.definePermission({\n name: \"exp_groups.assignment.get\",\n title: \"Get Assignments\",\n description: \"Retrieve a specific manual group assignment for a player.\",\n grantByDefault: true\n});\n_clusterio_lib__WEBPACK_IMPORTED_MODULE_0__.definePermission({\n name: \"exp_groups.assignment.list\",\n title: \"List Assignments\",\n description: \"List all manual group assignments.\",\n grantByDefault: true\n});\n_clusterio_lib__WEBPACK_IMPORTED_MODULE_0__.definePermission({\n name: \"exp_groups.assignment.subscribe\",\n title: \"Subscribe to Assignment Updates\",\n description: \"Receive updates when manual group assignments change.\",\n grantByDefault: true\n});\n_clusterio_lib__WEBPACK_IMPORTED_MODULE_0__.definePermission({\n name: \"exp_groups.assignment.create\",\n title: \"Create Assignments\",\n description: \"Manually assign players to groups, overriding role mappings.\",\n grantByDefault: false\n});\n_clusterio_lib__WEBPACK_IMPORTED_MODULE_0__.definePermission({\n name: \"exp_groups.assignment.update\",\n title: \"Update Assignments\",\n description: \"Modify existing manual group assignments.\",\n grantByDefault: false\n});\n_clusterio_lib__WEBPACK_IMPORTED_MODULE_0__.definePermission({\n name: \"exp_groups.assignment.delete\",\n title: \"Delete Assignments\",\n description: \"Remove manual group assignments.\",\n grantByDefault: false\n});\n// Role mapping permissions\n_clusterio_lib__WEBPACK_IMPORTED_MODULE_0__.definePermission({\n name: \"exp_groups.role_mapping.get\",\n title: \"Get Role Mappings\",\n description: \"Retrieve a specific role mapping rule.\",\n grantByDefault: true\n});\n_clusterio_lib__WEBPACK_IMPORTED_MODULE_0__.definePermission({\n name: \"exp_groups.role_mapping.list\",\n title: \"List Role Mappings\",\n description: \"List all role mapping rules.\",\n grantByDefault: true\n});\n_clusterio_lib__WEBPACK_IMPORTED_MODULE_0__.definePermission({\n name: \"exp_groups.role_mapping.subscribe\",\n title: \"Subscribe to Role Mapping Updates\",\n description: \"Receive updates when role mapping rules change.\",\n grantByDefault: true\n});\n_clusterio_lib__WEBPACK_IMPORTED_MODULE_0__.definePermission({\n name: \"exp_groups.role_mapping.create\",\n title: \"Create Role Mappings\",\n description: \"Create rules that map user roles to Factorio permission groups.\",\n grantByDefault: false\n});\n_clusterio_lib__WEBPACK_IMPORTED_MODULE_0__.definePermission({\n name: \"exp_groups.role_mapping.update\",\n title: \"Update Role Mappings\",\n description: \"Modify existing role mapping rules.\",\n grantByDefault: false\n});\n_clusterio_lib__WEBPACK_IMPORTED_MODULE_0__.definePermission({\n name: \"exp_groups.role_mapping.delete\",\n title: \"Delete Role Mappings\",\n description: \"Delete role mapping rules.\",\n grantByDefault: false\n});\nconst plugin = {\n name: \"exp_groups\",\n title: \"ExpGaming - Permission Groups\",\n description: \"Clusterio plugin providing syncing of permission groups\",\n features: [\n \"SavePatching\",\n \"ScriptCommands\"\n ],\n messages: [\n _messages__WEBPACK_IMPORTED_MODULE_1__.GroupUpdatedEvent,\n _messages__WEBPACK_IMPORTED_MODULE_1__.ManualAssignmentUpdatedEvent,\n _messages__WEBPACK_IMPORTED_MODULE_1__.ResolvedAssignmentUpdatedEvent,\n _messages__WEBPACK_IMPORTED_MODULE_1__.RoleMappingUpdatedEvent,\n _messages__WEBPACK_IMPORTED_MODULE_1__.GroupCreateRequest,\n _messages__WEBPACK_IMPORTED_MODULE_1__.GroupUpdateRequest,\n _messages__WEBPACK_IMPORTED_MODULE_1__.GroupDeleteRequest,\n _messages__WEBPACK_IMPORTED_MODULE_1__.GroupGetRequest,\n _messages__WEBPACK_IMPORTED_MODULE_1__.GroupListRequest,\n _messages__WEBPACK_IMPORTED_MODULE_1__.AssignmentCreateRequest,\n _messages__WEBPACK_IMPORTED_MODULE_1__.AssignmentUpdateRequest,\n _messages__WEBPACK_IMPORTED_MODULE_1__.AssignmentDeleteRequest,\n _messages__WEBPACK_IMPORTED_MODULE_1__.AssignmentGetRequest,\n _messages__WEBPACK_IMPORTED_MODULE_1__.AssignmentListRequest,\n _messages__WEBPACK_IMPORTED_MODULE_1__.RoleMappingCreateRequest,\n _messages__WEBPACK_IMPORTED_MODULE_1__.RoleMappingUpdateRequest,\n _messages__WEBPACK_IMPORTED_MODULE_1__.RoleMappingDeleteRequest,\n _messages__WEBPACK_IMPORTED_MODULE_1__.RoleMappingGetRequest,\n _messages__WEBPACK_IMPORTED_MODULE_1__.RoleMappingListRequest\n ],\n instanceEntrypoint: \"./dist/node/instance\",\n instanceConfigFields: {\n \"exp_groups.sync_mode\": {\n description: \"Synchronize permission groups with the controller\",\n type: \"string\",\n enum: [\n \"disabled\",\n \"enabled\",\n \"bidirectional\"\n ],\n initialValue: \"bidirectional\"\n }\n },\n controllerEntrypoint: \"./dist/node/controller\",\n controllerConfigFields: {},\n webEntrypoint: \"./web\",\n routes: [\n \"/permission_groups\",\n \"/permission_groups/:id/view\"\n ]\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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TTtZQUNOQyxNQUFNO2dCQUFDO2dCQUFZO2dCQUFXO2FBQWdCO1lBQzlDQyxjQUFjO1FBQ2Y7SUFDRDtJQUVBQyxzQkFBc0I7SUFDdEJDLHdCQUF3QixDQUN4QjtJQUVBQyxlQUFlO0lBQ2ZDLFFBQVE7UUFDUDtRQUNBO0tBQ0E7QUFDRixFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQGV4cGNsdXN0ZXIvcGVybWlzc2lvbi1ncm91cHMvLi9pbmRleC50cz9hOTU5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGxpYiBmcm9tIFwiQGNsdXN0ZXJpby9saWJcIjtcbmltcG9ydCAqIGFzIG1lc3NhZ2VzIGZyb20gXCIuL21lc3NhZ2VzXCI7XG5cbmRlY2xhcmUgbW9kdWxlIFwiQGNsdXN0ZXJpby9saWJcIiB7XG5cdGV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VDb25maWdGaWVsZHMge1xuXHRcdFwiZXhwX2dyb3Vwcy5zeW5jX21vZGVcIjogXCJlbmFibGVkXCIgfCBcImRpc2FibGVkXCIgfCBcImJpZGlyZWN0aW9uYWxcIlxuXHR9XG5cdGV4cG9ydCBpbnRlcmZhY2UgQ29udHJvbGxlckNvbmZpZ0ZpZWxkcyB7XG5cdH1cbn1cblxuLy8gR3JvdXAgcGVybWlzc2lvbnNcblxubGliLmRlZmluZVBlcm1pc3Npb24oe1xuXHRuYW1lOiBcImV4cF9ncm91cHMuZ3JvdXAuZ2V0XCIsXG5cdHRpdGxlOiBcIkdldCBHcm91cHNcIixcblx0ZGVzY3JpcHRpb246IFwiUmV0cmlldmUgYSBzcGVjaWZpYyBGYWN0b3JpbyBwZXJtaXNzaW9uIGdyb3VwIGJ5IElELlwiLFxuXHRncmFudEJ5RGVmYXVsdDogdHJ1ZSxcbn0pO1xubGliLmRlZmluZVBlcm1pc3Npb24oe1xuXHRuYW1lOiBcImV4cF9ncm91cHMuZ3JvdXAubGlzdFwiLFxuXHR0aXRsZTogXCJMaXN0IEdyb3Vwc1wiLFxuXHRkZXNjcmlwdGlvbjogXCJMaXN0IGFsbCBGYWN0b3JpbyBwZXJtaXNzaW9uIGdyb3Vwcy5cIixcblx0Z3JhbnRCeURlZmF1bHQ6IHRydWUsXG59KTtcbmxpYi5kZWZpbmVQZXJtaXNzaW9uKHtcblx0bmFtZTogXCJleHBfZ3JvdXBzLmdyb3VwLnN1YnNjcmliZVwiLFxuXHR0aXRsZTogXCJTdWJzY3JpYmUgdG8gR3JvdXAgVXBkYXRlc1wiLFxuXHRkZXNjcmlwdGlvbjogXCJSZWNlaXZlIHVwZGF0ZXMgd2hlbiBGYWN0b3JpbyBwZXJtaXNzaW9uIGdyb3VwcyBjaGFuZ2UuXCIsXG5cdGdyYW50QnlEZWZhdWx0OiB0cnVlLFxufSk7XG5saWIuZGVmaW5lUGVybWlzc2lvbih7XG5cdG5hbWU6IFwiZXhwX2dyb3Vwcy5ncm91cC5jcmVhdGVcIixcblx0dGl0bGU6IFwiQ3JlYXRlIEdyb3Vwc1wiLFxuXHRkZXNjcmlwdGlvbjogXCJDcmVhdGUgbmV3IEZhY3RvcmlvIHBlcm1pc3Npb24gZ3JvdXBzLlwiLFxuXHRncmFudEJ5RGVmYXVsdDogZmFsc2UsXG59KTtcbmxpYi5kZWZpbmVQZXJtaXNzaW9uKHtcblx0bmFtZTogXCJleHBfZ3JvdXBzLmdyb3VwLnVwZGF0ZVwiLFxuXHR0aXRsZTogXCJVcGRhdGUgR3JvdXBzXCIsXG5cdGRlc2NyaXB0aW9uOiBcIk1vZGlmeSBleGlzdGluZyBGYWN0b3JpbyBwZXJtaXNzaW9uIGdyb3Vwcy5cIixcblx0Z3JhbnRCeURlZmF1bHQ6IGZhbHNlLFxufSk7XG5saWIuZGVmaW5lUGVybWlzc2lvbih7XG5cdG5hbWU6IFwiZXhwX2dyb3Vwcy5ncm91cC5kZWxldGVcIixcblx0dGl0bGU6IFwiRGVsZXRlIEdyb3Vwc1wiLFxuXHRkZXNjcmlwdGlvbjogXCJEZWxldGUgRmFjdG9yaW8gcGVybWlzc2lvbiBncm91cHMuXCIsXG5cdGdyYW50QnlEZWZhdWx0OiBmYWxzZSxcbn0pO1xuXG4vLyBBc3NpZ25tZW50IHBlcm1pc3Npb25zXG5cbmxpYi5kZWZpbmVQZXJtaXNzaW9uKHtcblx0bmFtZTogXCJleHBfZ3JvdXBzLmFzc2lnbm1lbnQuZ2V0XCIsXG5cdHRpdGxlOiBcIkdldCBBc3NpZ25tZW50c1wiLFxuXHRkZXNjcmlwdGlvbjogXCJSZXRyaWV2ZSBhIHNwZWNpZmljIG1hbnVhbCBncm91cCBhc3NpZ25tZW50IGZvciBhIHBsYXllci5cIixcblx0Z3JhbnRCeURlZmF1bHQ6IHRydWUsXG59KTtcbmxpYi5kZWZpbmVQZXJtaXNzaW9uKHtcblx0bmFtZTogXCJleHBfZ3JvdXBzLmFzc2lnbm1lbnQubGlzdFwiLFxuXHR0aXRsZTogXCJMaXN0IEFzc2lnbm1lbnRzXCIsXG5cdGRlc2NyaXB0aW9uOiBcIkxpc3QgYWxsIG1hbnVhbCBncm91cCBhc3NpZ25tZW50cy5cIixcblx0Z3JhbnRCeURlZmF1bHQ6IHRydWUsXG59KTtcbmxpYi5kZWZpbmVQZXJtaXNzaW9uKHtcblx0bmFtZTogXCJleHBfZ3JvdXBzLmFzc2lnbm1lbnQuc3Vic2NyaWJlXCIsXG5cdHRpdGxlOiBcIlN1YnNjcmliZSB0byBBc3NpZ25tZW50IFVwZGF0ZXNcIixcblx0ZGVzY3JpcHRpb246IFwiUmVjZWl2ZSB1cGRhdGVzIHdoZW4gbWFudWFsIGdyb3VwIGFzc2lnbm1lbnRzIGNoYW5nZS5cIixcblx0Z3JhbnRCeURlZmF1bHQ6IHRydWUsXG59KTtcbmxpYi5kZWZpbmVQZXJtaXNzaW9uKHtcblx0bmFtZTogXCJleHBfZ3JvdXBzLmFzc2lnbm1lbnQuY3JlYXRlXCIsXG5cdHRpdGxlOiBcIkNyZWF0ZSBBc3NpZ25tZW50c1wiLFxuXHRkZXNjcmlwdGlvbjogXCJNYW51YWxseSBhc3NpZ24gcGxheWVycyB0byBncm91cHMsIG92ZXJyaWRpbmcgcm9sZSBtYXBwaW5ncy5cIixcblx0Z3JhbnRCeURlZmF1bHQ6IGZhbHNlLFxufSk7XG5saWIuZGVmaW5lUGVybWlzc2lvbih7XG5cdG5hbWU6IFwiZXhwX2dyb3Vwcy5hc3NpZ25tZW50LnVwZGF0ZVwiLFxuXHR0aXRsZTogXCJVcGRhdGUgQXNzaWdubWVudHNcIixcblx0ZGVzY3JpcHRpb246IFwiTW9kaWZ5IGV4aXN0aW5nIG1hbnVhbCBncm91cCBhc3NpZ25tZW50cy5cIixcblx0Z3JhbnRCeURlZmF1bHQ6IGZhbHNlLFxufSk7XG5saWIuZGVmaW5lUGVybWlzc2lvbih7XG5cdG5hbWU6IFwiZXhwX2dyb3Vwcy5hc3NpZ25tZW50LmRlbGV0ZVwiLFxuXHR0aXRsZTogXCJEZWxldGUgQXNzaWdubWVudHNcIixcblx0ZGVzY3JpcHRpb246IFwiUmVtb3ZlIG1hbnVhbCBncm91cCBhc3NpZ25tZW50cy5cIixcblx0Z3JhbnRCeURlZmF1bHQ6IGZhbHNlLFxufSk7XG5cbi8vIFJvbGUgbWFwcGluZyBwZXJtaXNzaW9uc1xuXG5saWIuZGVmaW5lUGVybWlzc2lvbih7XG5cdG5hbWU6IFwiZXhwX2dyb3Vwcy5yb2xlX21hcHBpbmcuZ2V0XCIsXG5cdHRpdGxlOiBcIkdldCBSb2xlIE1hcHBpbmdzXCIsXG5cdGRlc2NyaXB0aW9uOiBcIlJldHJpZXZlIGEgc3BlY2lmaWMgcm9sZSBtYXBwaW5nIHJ1bGUuXCIsXG5cdGdyYW50QnlEZWZhdWx0OiB0cnVlLFxufSk7XG5saWIuZGVmaW5lUGVybWlzc2lvbih7XG5cdG5hbWU6IFwiZXhwX2dyb3Vwcy5yb2xlX21hcHBpbmcubGlzdFwiLFxuXHR0aXRsZTogXCJMaXN0IFJvbGUgTWFwcGluZ3NcIixcblx0ZGVzY3JpcHRpb246IFwiTGlzdCBhbGwgcm9sZSBtYXBwaW5nIHJ1bGVzLlwiLFxuXHRncmFudEJ5RGVmYXVsdDogdHJ1ZSxcbn0pO1xubGliLmRlZmluZVBlcm1pc3Npb24oe1xuXHRuYW1lOiBcImV4cF9ncm91cHMucm9sZV9tYXBwaW5nLnN1YnNjcmliZVwiLFxuXHR0aXRsZTogXCJTdWJzY3JpYmUgdG8gUm9sZSBNYXBwaW5nIFVwZGF0ZXNcIixcblx0ZGVzY3JpcHRpb246IFwiUmVjZWl2ZSB1cGRhdGVzIHdoZW4gcm9sZSBtYXBwaW5nIHJ1bGVzIGNoYW5nZS5cIixcblx0Z3JhbnRCeURlZmF1bHQ6IHRydWUsXG59KTtcbmxpYi5kZWZpbmVQZXJtaXNzaW9uKHtcblx0bmFtZTogXCJleHBfZ3JvdXBzLnJvbGVfbWFwcGluZy5jcmVhdGVcIixcblx0dGl0bGU6IFwiQ3JlYXRlIFJvbGUgTWFwcGluZ3NcIixcblx0ZGVzY3JpcHRpb246IFwiQ3JlYXRlIHJ1bGVzIHRoYXQgbWFwIHVzZXIgcm9sZXMgdG8gRmFjdG9yaW8gcGVybWlzc2lvbiBncm91cHMuXCIsXG5cdGdyYW50QnlEZWZhdWx0OiBmYWxzZSxcbn0pO1xubGliLmRlZmluZVBlcm1pc3Npb24oe1xuXHRuYW1lOiBcImV4cF9ncm91cHMucm9sZV9tYXBwaW5nLnVwZGF0ZVwiLFxuXHR0aXRsZTogXCJVcGRhdGUgUm9sZSBNYXBwaW5nc1wiLFxuXHRkZXNjcmlwdGlvbjogXCJNb2RpZnkgZXhpc3Rpbmcgcm9sZSBtYXBwaW5nIHJ1bGVzLlwiLFxuXHRncmFudEJ5RGVmYXVsdDogZmFsc2UsXG59KTtcbmxpYi5kZWZpbmVQZXJtaXNzaW9uKHtcblx0bmFtZTogXCJleHBfZ3JvdXBzLnJvbGVfbWFwcGluZy5kZWxldGVcIixcblx0dGl0bGU6IFwiRGVsZXRlIFJvbGUgTWFwcGluZ3NcIixcblx0ZGVzY3JpcHRpb246IFwiRGVsZXRlIHJvbGUgbWFwcGluZyBydWxlcy5cIixcblx0Z3JhbnRCeURlZmF1bHQ6IGZhbHNlLFxufSk7XG5cbmV4cG9ydCBjb25zdCBwbHVnaW46IGxpYi5QbHVnaW5EZWNsYXJhdGlvbiA9IHtcblx0bmFtZTogXCJleHBfZ3JvdXBzXCIsXG5cdHRpdGxlOiBcIkV4cEdhbWluZyAtIFBlcm1pc3Npb24gR3JvdXBzXCIsXG5cdGRlc2NyaXB0aW9uOiBcIkNsdXN0ZXJpbyBwbHVnaW4gcHJvdmlkaW5nIHN5bmNpbmcgb2YgcGVybWlzc2lvbiBncm91cHNcIixcblxuXHRmZWF0dXJlczogW1xuXHRcdFwiU2F2ZVBhdGNoaW5nXCIsXG5cdFx0XCJTY3JpcHRDb21tYW5kc1wiLFxuXHRdLFxuXG5cdG1lc3NhZ2VzOiBbXG5cdFx0bWVzc2FnZXMuR3JvdXBVcGRhdGVkRXZlbnQsXG5cdFx0bWVzc2FnZXMuTWFudWFsQXNzaWdubWVudFVwZGF0ZWRFdmVudCxcblx0XHRtZXNzYWdlcy5SZXNvbHZlZEFzc2lnbm1lbnRVcGRhdGVkRXZlbnQsXG5cdFx0bWVzc2FnZXMuUm9sZU1hcHBpbmdVcGRhdGVkRXZlbnQsXG5cblx0XHRtZXNzYWdlcy5Hcm91cENyZWF0ZVJlcXVlc3QsXG5cdFx0bWVzc2FnZXMuR3JvdXBVcGRhdGVSZXF1ZXN0LFxuXHRcdG1lc3NhZ2VzLkdyb3VwRGVsZXRlUmVxdWVzdCxcblx0XHRtZXNzYWdlcy5Hcm91cEdldFJlcXVlc3QsXG5cdFx0bWVzc2FnZXMuR3JvdXBMaXN0UmVxdWVzdCxcblxuXHRcdG1lc3NhZ2VzLkFzc2lnbm1lbnRDcmVhdGVSZXF1ZXN0LFxuXHRcdG1lc3NhZ2VzLkFzc2lnbm1lbnRVcGRhdGVSZXF1ZXN0LFxuXHRcdG1lc3NhZ2VzLkFzc2lnbm1lbnREZWxldGVSZXF1ZXN0LFxuXHRcdG1lc3NhZ2VzLkFzc2lnbm1lbnRHZXRSZXF1ZXN0LFxuXHRcdG1lc3NhZ2VzLkFzc2lnbm1lbnRMaXN0UmVxdWVzdCxcblxuXHRcdG1lc3NhZ2VzLlJvbGVNYXBwaW5nQ3JlYXRlUmVxdWVzdCxcblx0XHRtZXNzYWdlcy5Sb2xlTWFwcGluZ1VwZGF0ZVJlcXVlc3QsXG5cdFx0bWVzc2FnZXMuUm9sZU1hcHBpbmdEZWxldGVSZXF1ZXN0LFxuXHRcdG1lc3NhZ2VzLlJvbGVNYXBwaW5nR2V0UmVxdWVzdCxcblx0XHRtZXNzYWdlcy5Sb2xlTWFwcGluZ0xpc3RSZXF1ZXN0LFxuXHRdLFxuXG5cdGluc3RhbmNlRW50cnlwb2ludDogXCIuL2Rpc3Qvbm9kZS9pbnN0YW5jZVwiLFxuXHRpbnN0YW5jZUNvbmZpZ0ZpZWxkczoge1xuXHRcdFwiZXhwX2dyb3Vwcy5zeW5jX21vZGVcIjoge1xuXHRcdFx0ZGVzY3JpcHRpb246IFwiU3luY2hyb25pemUgcGVybWlzc2lvbiBncm91cHMgd2l0aCB0aGUgY29udHJvbGxlclwiLFxuXHRcdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRcdGVudW06IFtcImRpc2FibGVkXCIsIFwiZW5hYmxlZFwiLCBcImJpZGlyZWN0aW9uYWxcIl0sXG5cdFx0XHRpbml0aWFsVmFsdWU6IFwiYmlkaXJlY3Rpb25hbFwiLFxuXHRcdH0sXG5cdH0sXG5cblx0Y29udHJvbGxlckVudHJ5cG9pbnQ6IFwiLi9kaXN0L25vZGUvY29udHJvbGxlclwiLFxuXHRjb250cm9sbGVyQ29uZmlnRmllbGRzOiB7XG5cdH0sXG5cblx0d2ViRW50cnlwb2ludDogXCIuL3dlYlwiLFxuXHRyb3V0ZXM6IFtcblx0XHRcIi9wZXJtaXNzaW9uX2dyb3Vwc1wiLFxuXHRcdFwiL3Blcm1pc3Npb25fZ3JvdXBzLzppZC92aWV3XCIsXG5cdF1cbn07XG4iXSwibmFtZXMiOlsibGliIiwibWVzc2FnZXMiLCJkZWZpbmVQZXJtaXNzaW9uIiwibmFtZSIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJncmFudEJ5RGVmYXVsdCIsInBsdWdpbiIsImZlYXR1cmVzIiwiR3JvdXBVcGRhdGVkRXZlbnQiLCJNYW51YWxBc3NpZ25tZW50VXBkYXRlZEV2ZW50IiwiUmVzb2x2ZWRBc3NpZ25tZW50VXBkYXRlZEV2ZW50IiwiUm9sZU1hcHBpbmdVcGRhdGVkRXZlbnQiLCJHcm91cENyZWF0ZVJlcXVlc3QiLCJHcm91cFVwZGF0ZVJlcXVlc3QiLCJHcm91cERlbGV0ZVJlcXVlc3QiLCJHcm91cEdldFJlcXVlc3QiLCJHcm91cExpc3RSZXF1ZXN0IiwiQXNzaWdubWVudENyZWF0ZVJlcXVlc3QiLCJBc3NpZ25tZW50VXBkYXRlUmVxdWVzdCIsIkFzc2lnbm1lbnREZWxldGVSZXF1ZXN0IiwiQXNzaWdubWVudEdldFJlcXVlc3QiLCJBc3NpZ25tZW50TGlzdFJlcXVlc3QiLCJSb2xlTWFwcGluZ0NyZWF0ZVJlcXVlc3QiLCJSb2xlTWFwcGluZ1VwZGF0ZVJlcXVlc3QiLCJSb2xlTWFwcGluZ0RlbGV0ZVJlcXVlc3QiLCJSb2xlTWFwcGluZ0dldFJlcXVlc3QiLCJSb2xlTWFwcGluZ0xpc3RSZXF1ZXN0IiwiaW5zdGFuY2VFbnRyeXBvaW50IiwiaW5zdGFuY2VDb25maWdGaWVsZHMiLCJ0eXBlIiwiZW51bSIsImluaXRpYWxWYWx1ZSIsImNvbnRyb2xsZXJFbnRyeXBvaW50IiwiY29udHJvbGxlckNvbmZpZ0ZpZWxkcyIsIndlYkVudHJ5cG9pbnQiLCJyb3V0ZXMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///566\n\n}");
19
+
20
+ /***/ }
21
+
22
+ }]);