node-opcua-service-discovery 2.158.0 → 2.161.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-opcua-service-discovery",
3
- "version": "2.158.0",
3
+ "version": "2.161.0",
4
4
  "description": "pure nodejs OPCUA SDK - module service-discovery",
5
5
  "scripts": {
6
6
  "build": "tsc -b",
@@ -15,7 +15,7 @@
15
15
  "node-opcua-assert": "2.157.0",
16
16
  "node-opcua-debug": "2.157.0",
17
17
  "node-opcua-object-registry": "2.157.0",
18
- "node-opcua-types": "2.158.0",
18
+ "node-opcua-types": "2.161.0",
19
19
  "sterfive-bonjour-service": "1.1.4"
20
20
  },
21
21
  "devDependencies": {
@@ -36,7 +36,7 @@
36
36
  "internet of things"
37
37
  ],
38
38
  "homepage": "http://node-opcua.github.io/",
39
- "gitHead": "d92c1c46754548964c3a7821dfec2b52a8522232",
39
+ "gitHead": "38402828c447c860efb5f3141306ccc148bb99bc",
40
40
  "files": [
41
41
  "dist",
42
42
  "source"
package/dist/bonjour.d.ts DELETED
@@ -1,41 +0,0 @@
1
- import { Bonjour, Service, ServiceConfig } from "sterfive-bonjour-service";
2
- export declare function acquireBonjour(): Bonjour;
3
- export declare function releaseBonjour(bonjour: Bonjour, callback: () => void): void;
4
- export declare function acquireBonjour2(): Bonjour;
5
- export declare function releaseBonjour2(bonjour: Bonjour): void;
6
- export interface Announcement {
7
- port: number;
8
- path: string;
9
- name: string;
10
- host: string;
11
- capabilities: string[];
12
- }
13
- export declare function announcementToServiceConfig(announcement: Announcement): ServiceConfig;
14
- export declare function isSameService(a?: ServiceConfig, b?: ServiceConfig): boolean;
15
- export declare const serviceToString: (service: ServiceConfig) => string;
16
- export declare function _announceServerOnMulticastSubnet(multicastDNS: Bonjour, serviceConfig: ServiceConfig): Promise<Service>;
17
- export declare class BonjourHolder {
18
- serviceConfig?: ServiceConfig;
19
- private _multicastDNS?;
20
- private _service?;
21
- private pendingAnnouncement;
22
- /**
23
- *
24
- * @param announcement
25
- * @returns
26
- */
27
- announcedOnMulticastSubnet(announcement: Announcement): Promise<boolean>;
28
- isStarted(): boolean;
29
- /**
30
- *
31
- * @param announcement
32
- * @param callback
33
- * @private
34
- */
35
- announcedOnMulticastSubnetWithCallback(announcement: Announcement, callback: (err: Error | null, result?: boolean) => void): void;
36
- /**
37
- * @private
38
- */
39
- stopAnnouncedOnMulticastSubnet(): Promise<void>;
40
- stopAnnouncedOnMulticastSubnetWithCallback(callback: (err: Error | null) => void): void;
41
- }
package/dist/bonjour.js DELETED
@@ -1,261 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.BonjourHolder = exports.serviceToString = void 0;
7
- exports.acquireBonjour = acquireBonjour;
8
- exports.releaseBonjour = releaseBonjour;
9
- exports.acquireBonjour2 = acquireBonjour2;
10
- exports.releaseBonjour2 = releaseBonjour2;
11
- exports.announcementToServiceConfig = announcementToServiceConfig;
12
- exports.isSameService = isSameService;
13
- exports._announceServerOnMulticastSubnet = _announceServerOnMulticastSubnet;
14
- /**
15
- * @module node-opcua-service-discovery
16
- */
17
- // tslint:disable:no-console
18
- const util_1 = require("util");
19
- const chalk_1 = __importDefault(require("chalk"));
20
- const node_opcua_assert_1 = require("node-opcua-assert");
21
- const node_opcua_debug_1 = require("node-opcua-debug");
22
- const node_opcua_object_registry_1 = require("node-opcua-object-registry");
23
- const sterfive_bonjour_service_1 = require("sterfive-bonjour-service");
24
- const debugLog = (0, node_opcua_debug_1.make_debugLog)(__filename);
25
- const doDebug = (0, node_opcua_debug_1.checkDebugFlag)(__filename);
26
- const errorLog = (0, node_opcua_debug_1.make_errorLog)(__filename);
27
- let gBonjour;
28
- let gBonjourRefCount = 0;
29
- const registry = new node_opcua_object_registry_1.ObjectRegistry();
30
- function errorCallback(err) {
31
- errorLog(" ERROR received from Bonjour", err.message);
32
- }
33
- function acquireBonjour() {
34
- const bonjour = new sterfive_bonjour_service_1.Bonjour();
35
- registry.unregister(bonjour);
36
- return bonjour;
37
- }
38
- function releaseBonjour(bonjour, callback) {
39
- bonjour.unpublishAll(() => {
40
- bonjour.destroy(callback);
41
- registry.unregister(bonjour);
42
- });
43
- }
44
- function acquireBonjour2() {
45
- if (gBonjourRefCount === 0) {
46
- // will start the Bonjour service
47
- debugLog("Starting Bonjour");
48
- gBonjour = new sterfive_bonjour_service_1.Bonjour(undefined, errorCallback);
49
- registry.register(gBonjour);
50
- }
51
- gBonjourRefCount++;
52
- return gBonjour;
53
- }
54
- function releaseBonjour2(bonjour) {
55
- gBonjourRefCount--;
56
- (0, node_opcua_assert_1.assert)(gBonjourRefCount >= 0);
57
- if (gBonjourRefCount === 0) {
58
- if (!gBonjour) {
59
- throw new Error("internal error");
60
- }
61
- const tmp = gBonjour;
62
- gBonjour = undefined;
63
- // will stop the Bonjour service
64
- tmp.unpublishAll(() => {
65
- tmp.destroy();
66
- registry.unregister(tmp);
67
- debugLog("Releasing Bonjour");
68
- });
69
- }
70
- }
71
- function announcementToServiceConfig(announcement) {
72
- const serviceConfig = {
73
- name: announcement.name,
74
- port: announcement.port,
75
- protocol: "tcp",
76
- host: announcement.host,
77
- txt: {
78
- caps: announcement.capabilities.sort().join(","),
79
- path: announcement.path
80
- },
81
- type: "opcua-tcp"
82
- };
83
- return serviceConfig;
84
- }
85
- function isSameService(a, b) {
86
- if (!a && !b) {
87
- return true;
88
- }
89
- if (!a || !b) {
90
- return false;
91
- }
92
- return a.port === b.port && a.txt?.path === b.txt?.path && a.name === b.name && a.txt?.caps === b.txt?.caps;
93
- }
94
- const serviceToString = (service) => {
95
- return ("host" +
96
- service.host +
97
- " type=" +
98
- service.type +
99
- service.name +
100
- " on port " +
101
- service.port +
102
- " txt " +
103
- JSON.stringify(service.txt));
104
- };
105
- exports.serviceToString = serviceToString;
106
- // function waitServiceUp(serviceConfig: ServiceConfig, callback: () => void) {
107
- // const multicastDNS = new Bonjour();
108
- // const browser = multicastDNS.find({
109
- // protocol: "tcp",
110
- // type: "opcua-tcp"
111
- // });
112
- // const onUp = (service: Service) => {
113
- // if (doDebug) {
114
- // debugLog(chalk.cyan(" waitServiceUp is up with ", serviceToString(service)));
115
- // }
116
- // if (isSameService(service, serviceConfig)) {
117
- // browser.removeAllListeners("up");
118
- // multicastDNS.destroy();
119
- // callback();
120
- // }
121
- // };
122
- // browser.on("up", onUp);
123
- // }
124
- // function waitServiceDown(serviceConfig: ServiceConfig, callback: () => void) {
125
- // const multicastDNS = new Bonjour();
126
- // const browser = multicastDNS.find({
127
- // protocol: "tcp",
128
- // type: "opcua-tcp"
129
- // });
130
- // const onDown = (service: Service) => {
131
- // if (doDebug) {
132
- // debugLog(chalk.cyan(" waitServiceDown down with ", serviceToString(service)));
133
- // }
134
- // if (isSameService(service, serviceConfig)) {
135
- // browser.removeAllListeners("down");
136
- // multicastDNS.destroy();
137
- // callback();
138
- // }
139
- // };
140
- // browser.on("down", onDown);
141
- // }
142
- async function _announceServerOnMulticastSubnet(multicastDNS, serviceConfig) {
143
- return new Promise((resolve, reject) => {
144
- const port = serviceConfig.port;
145
- (0, node_opcua_assert_1.assert)(typeof port === "number");
146
- (0, node_opcua_assert_1.assert)(multicastDNS, "bonjour must have been initialized?");
147
- debugLog(chalk_1.default.cyan(" announceServerOnMulticastSubnet", (0, exports.serviceToString)(serviceConfig)));
148
- // waitServiceUp(serviceConfig, () => {
149
- // // istanbul ignore next
150
- // if (doDebug) {
151
- // debugLog(chalk.cyan(" announcedOnMulticastSubnet done ", serviceToString(serviceConfig)));
152
- // }
153
- // // resolve(service);
154
- // });
155
- const service = multicastDNS.publish({ ...serviceConfig, probe: false });
156
- service.on("error", (err) => {
157
- debugLog("bonjour ERROR received ! ", err.message);
158
- debugLog("params = ", serviceConfig);
159
- });
160
- service.on("up", () => {
161
- debugLog("_announceServerOnMulticastSubnet: bonjour UP received ! ", (0, exports.serviceToString)(serviceConfig));
162
- resolve(service);
163
- });
164
- service.start();
165
- });
166
- }
167
- class BonjourHolder {
168
- constructor() {
169
- this.pendingAnnouncement = false;
170
- }
171
- /**
172
- *
173
- * @param announcement
174
- * @returns
175
- */
176
- async announcedOnMulticastSubnet(announcement) {
177
- debugLog(chalk_1.default.yellow("\n\nentering announcedOnMulticastSubnet"));
178
- const serviceConfig = announcementToServiceConfig(announcement);
179
- if (this._service && this.serviceConfig) {
180
- // verify that Announcement has changed
181
- if (isSameService(serviceConfig, this.serviceConfig)) {
182
- debugLog(" Announcement ignored as it has been already made", announcement.name);
183
- debugLog("exiting announcedOnMulticastSubnet-2", false);
184
- return false; // nothing changed
185
- }
186
- }
187
- (0, node_opcua_assert_1.assert)(!this._multicastDNS, "already called ?");
188
- this._multicastDNS = acquireBonjour();
189
- this.pendingAnnouncement = true;
190
- this.serviceConfig = serviceConfig;
191
- this._service = await _announceServerOnMulticastSubnet(this._multicastDNS, serviceConfig);
192
- this.pendingAnnouncement = false;
193
- debugLog(chalk_1.default.yellow("exiting announcedOnMulticastSubnet-3", true));
194
- return true;
195
- }
196
- isStarted() {
197
- return !!this._multicastDNS;
198
- }
199
- /**
200
- *
201
- * @param announcement
202
- * @param callback
203
- * @private
204
- */
205
- announcedOnMulticastSubnetWithCallback(announcement, callback) {
206
- callback(new Error("Internal Error"));
207
- }
208
- /**
209
- * @private
210
- */
211
- async stopAnnouncedOnMulticastSubnet() {
212
- if (this.pendingAnnouncement) {
213
- debugLog(chalk_1.default.bgWhite.redBright("stopAnnnouncedOnMulticastSubnet is pending : let's wait a little bit and try again"));
214
- // wait until announcement is done
215
- await new Promise((resolve) => setTimeout(resolve, 500));
216
- return this.stopAnnouncedOnMulticastSubnet();
217
- }
218
- debugLog(chalk_1.default.green("\n\nentering stop_announcedOnMulticastSubnet = ", this.serviceConfig ? (0, exports.serviceToString)(this.serviceConfig) : "<null>"));
219
- if (!this._service) {
220
- debugLog(chalk_1.default.green("leaving stop_announcedOnMulticastSubnet = no service"));
221
- return;
222
- }
223
- // due to a wrong declaration of Service.stop in the d.ts file we
224
- // need to use a workaround here
225
- const that_service = this._service;
226
- const that_multicastDNS = this._multicastDNS;
227
- this._service = undefined;
228
- this._multicastDNS = undefined;
229
- this.serviceConfig = undefined;
230
- const proxy = (callback) => {
231
- if (that_multicastDNS && that_service.stop) {
232
- // waitServiceDown(that_service, () => {
233
- // debugLog(chalk.green("stop_announcedOnMulticastSubnet, ", serviceToString(that_service)));
234
- // });
235
- that_service.stop((err) => {
236
- debugLog(chalk_1.default.green("service stopped err=", err));
237
- that_multicastDNS.unpublishAll(() => {
238
- releaseBonjour(that_multicastDNS, () => {
239
- callback();
240
- });
241
- });
242
- });
243
- return;
244
- }
245
- else {
246
- callback();
247
- }
248
- };
249
- const stop = (0, util_1.promisify)(proxy);
250
- await stop.call(this);
251
- debugLog(chalk_1.default.green("leaving stop_announcedOnMulticastSubnet = done"));
252
- debugLog(chalk_1.default.green("leaving stop_announcedOnMulticastSubnet stop announcement completed"));
253
- }
254
- stopAnnouncedOnMulticastSubnetWithCallback(callback) {
255
- callback(new Error("Internal Error"));
256
- }
257
- }
258
- exports.BonjourHolder = BonjourHolder;
259
- BonjourHolder.prototype.announcedOnMulticastSubnetWithCallback = (0, util_1.callbackify)(BonjourHolder.prototype.announcedOnMulticastSubnet);
260
- BonjourHolder.prototype.stopAnnouncedOnMulticastSubnetWithCallback = (0, util_1.callbackify)(BonjourHolder.prototype.stopAnnouncedOnMulticastSubnet);
261
- //# sourceMappingURL=bonjour.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bonjour.js","sourceRoot":"","sources":["../source/bonjour.ts"],"names":[],"mappings":";;;;;;AAwBA,wCAIC;AAED,wCAKC;AAED,0CASC;AAED,0CAgBC;AAUD,kEAcC;AAED,sCAQC;AAsDD,4EA2BC;AAnLD;;GAEG;AACH,4BAA4B;AAC5B,+BAA8C;AAC9C,kDAA0B;AAC1B,yDAA2C;AAC3C,uDAAgF;AAChF,2EAA4D;AAC5D,uEAA2E;AAE3E,MAAM,QAAQ,GAAG,IAAA,gCAAa,EAAC,UAAU,CAAC,CAAC;AAC3C,MAAM,OAAO,GAAG,IAAA,iCAAc,EAAC,UAAU,CAAC,CAAC;AAC3C,MAAM,QAAQ,GAAG,IAAA,gCAAa,EAAC,UAAU,CAAC,CAAC;AAE3C,IAAI,QAA6B,CAAC;AAClC,IAAI,gBAAgB,GAAG,CAAC,CAAC;AAEzB,MAAM,QAAQ,GAAG,IAAI,2CAAc,EAAE,CAAC;AAEtC,SAAS,aAAa,CAAC,GAAU;IAC7B,QAAQ,CAAC,8BAA8B,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,cAAc;IAC1B,MAAM,OAAO,GAAG,IAAI,kCAAO,EAAE,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAgB,cAAc,CAAC,OAAgB,EAAE,QAAoB;IACjE,OAAQ,CAAC,YAAY,CAAC,GAAG,EAAE;QACvB,OAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3B,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAgB,eAAe;IAC3B,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;QACzB,iCAAiC;QACjC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAC7B,QAAQ,GAAG,IAAI,kCAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACjD,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IACD,gBAAgB,EAAE,CAAC;IACnB,OAAO,QAAS,CAAC;AACrB,CAAC;AAED,SAAgB,eAAe,CAAC,OAAgB;IAC5C,gBAAgB,EAAE,CAAC;IACnB,IAAA,0BAAM,EAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC;IAC9B,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC;QACrB,QAAQ,GAAG,SAAS,CAAC;QACrB,gCAAgC;QAChC,GAAI,CAAC,YAAY,CAAC,GAAG,EAAE;YACnB,GAAI,CAAC,OAAO,EAAE,CAAC;YACf,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACzB,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAUD,SAAgB,2BAA2B,CAAC,YAA0B;IAClE,MAAM,aAAa,GAAkB;QACjC,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,GAAG,EAAE;YACD,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;YAChD,IAAI,EAAE,YAAY,CAAC,IAAI;SAC1B;QACD,IAAI,EAAE,WAAW;KACpB,CAAC;IAEF,OAAO,aAAa,CAAC;AACzB,CAAC;AAED,SAAgB,aAAa,CAAC,CAAiB,EAAE,CAAiB;IAC9D,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC;AAChH,CAAC;AAEM,MAAM,eAAe,GAAG,CAAC,OAAsB,EAAE,EAAE;IACtD,OAAO,CACH,MAAM;QACN,OAAO,CAAC,IAAI;QACZ,QAAQ;QACR,OAAO,CAAC,IAAI;QACZ,OAAO,CAAC,IAAI;QACZ,WAAW;QACX,OAAO,CAAC,IAAI;QACZ,OAAO;QACP,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAC9B,CAAC;AACN,CAAC,CAAC;AAZW,QAAA,eAAe,mBAY1B;AAEF,+EAA+E;AAC/E,0CAA0C;AAC1C,0CAA0C;AAC1C,2BAA2B;AAC3B,4BAA4B;AAC5B,UAAU;AACV,2CAA2C;AAC3C,yBAAyB;AACzB,gGAAgG;AAChG,YAAY;AACZ,uDAAuD;AACvD,gDAAgD;AAChD,sCAAsC;AACtC,0BAA0B;AAC1B,YAAY;AACZ,SAAS;AACT,8BAA8B;AAC9B,IAAI;AAEJ,iFAAiF;AACjF,0CAA0C;AAC1C,0CAA0C;AAC1C,2BAA2B;AAC3B,4BAA4B;AAC5B,UAAU;AACV,6CAA6C;AAC7C,yBAAyB;AACzB,iGAAiG;AACjG,YAAY;AACZ,uDAAuD;AACvD,kDAAkD;AAClD,sCAAsC;AACtC,0BAA0B;AAC1B,YAAY;AACZ,SAAS;AACT,kCAAkC;AAClC,IAAI;AAEG,KAAK,UAAU,gCAAgC,CAAC,YAAqB,EAAE,aAA4B;IACtG,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;QAChC,IAAA,0BAAM,EAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;QACjC,IAAA,0BAAM,EAAC,YAAY,EAAE,qCAAqC,CAAC,CAAC;QAE5D,QAAQ,CAAC,eAAK,CAAC,IAAI,CAAC,mCAAmC,EAAE,IAAA,uBAAe,EAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAE1F,uCAAuC;QACvC,8BAA8B;QAC9B,qBAAqB;QACrB,sGAAsG;QACtG,QAAQ;QACR,8BAA8B;QAC9B,MAAM;QAEN,MAAM,OAAO,GAAY,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAClF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YAC/B,QAAQ,CAAC,2BAA2B,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACnD,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE;YAClB,QAAQ,CAAC,0DAA0D,EAAE,IAAA,uBAAe,EAAC,aAAa,CAAC,CAAC,CAAC;YACrG,OAAO,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAa,aAAa;IAA1B;QAKY,wBAAmB,GAAG,KAAK,CAAC;IAwGxC,CAAC;IAvGG;;;;OAIG;IACI,KAAK,CAAC,0BAA0B,CAAC,YAA0B;QAC9D,QAAQ,CAAC,eAAK,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC,CAAC;QAClE,MAAM,aAAa,GAAG,2BAA2B,CAAC,YAAY,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACtC,uCAAuC;YACvC,IAAI,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,aAAc,CAAC,EAAE,CAAC;gBACpD,QAAQ,CAAC,mDAAmD,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;gBACjF,QAAQ,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;gBACxD,OAAO,KAAK,CAAC,CAAC,kBAAkB;YACpC,CAAC;QACL,CAAC;QACD,IAAA,0BAAM,EAAC,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;QAEhD,IAAI,CAAC,aAAa,GAAG,cAAc,EAAE,CAAC;QAEtC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,MAAM,gCAAgC,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QAC1F,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,QAAQ,CAAC,eAAK,CAAC,MAAM,CAAC,sCAAsC,EAAE,IAAI,CAAC,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,SAAS;QACZ,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACI,sCAAsC,CACzC,YAA0B,EAC1B,QAAuD;QAEvD,QAAQ,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,8BAA8B;QACvC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,QAAQ,CAAC,eAAK,CAAC,OAAO,CAAC,SAAS,CAAC,oFAAoF,CAAC,CAAC,CAAC;YACxH,kCAAkC;YAClC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACjD,CAAC;QAED,QAAQ,CACJ,eAAK,CAAC,KAAK,CACP,iDAAiD,EACjD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAA,uBAAe,EAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CACtE,CACJ,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjB,QAAQ,CAAC,eAAK,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC,CAAC;YAC9E,OAAO;QACX,CAAC;QACD,iEAAiE;QACjE,gCAAgC;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;QACnC,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAc,CAAC;QAC9C,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAE/B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,MAAM,KAAK,GAAG,CAAC,QAA+B,EAAE,EAAE;YAC9C,IAAI,iBAAiB,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;gBACzC,wCAAwC;gBACxC,iGAAiG;gBACjG,MAAM;gBACN,YAAY,CAAC,IAAI,CAAC,CAAC,GAAW,EAAE,EAAE;oBAC9B,QAAQ,CAAC,eAAK,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC,CAAC;oBACnD,iBAAiB,CAAC,YAAY,CAAC,GAAG,EAAE;wBAChC,cAAc,CAAC,iBAAiB,EAAE,GAAG,EAAE;4BACnC,QAAQ,EAAE,CAAC;wBACf,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;iBAAM,CAAC;gBACJ,QAAQ,EAAE,CAAC;YACf,CAAC;QACL,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,IAAA,gBAAS,EAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtB,QAAQ,CAAC,eAAK,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC,CAAC;QACxE,QAAQ,CAAC,eAAK,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC,CAAC;IACjG,CAAC;IAEM,0CAA0C,CAAC,QAAqC;QACnF,QAAQ,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1C,CAAC;CACJ;AA7GD,sCA6GC;AAED,aAAa,CAAC,SAAS,CAAC,sCAAsC,GAAG,IAAA,kBAAW,EAAC,aAAa,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;AACjI,aAAa,CAAC,SAAS,CAAC,0CAA0C,GAAG,IAAA,kBAAW,EAC5E,aAAa,CAAC,SAAS,CAAC,8BAA8B,CACzD,CAAC"}