@acorex/core 18.15.1 → 18.15.2
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.
@@ -249,7 +249,7 @@ export class AXPlatform {
|
|
249
249
|
}
|
250
250
|
});
|
251
251
|
});
|
252
|
-
observer.observe(
|
252
|
+
observer.observe(document.documentElement, {
|
253
253
|
attributes: true,
|
254
254
|
childList: false,
|
255
255
|
characterData: false,
|
@@ -264,4 +264,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
264
264
|
providedIn: 'root',
|
265
265
|
}]
|
266
266
|
}], ctorParameters: () => [] });
|
267
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9wbGF0Zm9ybS9zcmMvbGliL3BsYXRmb3JtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVNwRSxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUV6RSxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUUzRSxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUVyRSxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUV6RSxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxhQUFhLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRXJHLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBVyxFQUFXLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFJ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QUMsUUFBUSxDQUFDLGVBQWUsRUFBRTtZQUM5QyxVQUFVLEVBQUUsSUFBSTtZQUNoQixTQUFTLEVBQUUsS0FBSztZQUNoQixhQUFhLEVBQUUsS0FBSztTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQWpNVSxVQUFVO2tIQUFWLFVBQVUsY0FGVCxNQUFNOzsyRkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IHR5cGUgQVhUaGVtZU1vZGUgPSAnbGlnaHQnIHwgJ2RhcmsnIHwgJ3N5c3RlbScgfCAnc3lzdGVtLWRhcmsnIHwgJ3N5c3RlbS1saWdodCc7XG5leHBvcnQgdHlwZSBBWFBsYXRmb3JtcyA9ICdBbmRyb2lkJyB8ICdEZXNrdG9wJyB8ICdpT1MnIHwgJ01vYmlsZSc7XG5leHBvcnQgdHlwZSBBWEJyb3dzZXJzID0gJ0Nocm9tZScgfCAnU2FmYXJpJyB8ICdFZGdlJyB8ICdGaXJlZm94JyB8ICdPcGVyYScgfCAnTVNJRSc7XG5leHBvcnQgdHlwZSBBWFRlY2hub2xvZ2llcyA9ICdQV0EnIHwgJ0h5YnJpZCcgfCAnRWxlY3Ryb24nO1xuXG5leHBvcnQgdHlwZSBBWFNjcmVlblNpemVzID0gJ1NNJyB8ICdNRCcgfCAnTEcnIHwgJ1hMJyB8ICcyWEwnIHwgJzNYTCcgfCAnNFhMJyB8ICc1WEwnO1xuXG5jb25zdCBpc0Nocm9tZSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9DaHJvbWUvaSk7XG5cbmNvbnN0IGlzRmlyZWZveCA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9GaXJlZm94L2kpO1xuXG5jb25zdCBpc0VkZ2UgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+IHRlc3RVc2VyQWdlbnQod2luLCAvRWRnZS9pKTtcblxuY29uc3QgaXNTYWZhcmkgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+IHRlc3RVc2VyQWdlbnQod2luLCAvU2FmYXJpL2kpO1xuXG5jb25zdCBpc09wZXJhID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL09wZXJhL2kpIHx8IHRlc3RVc2VyQWdlbnQod2luLCAvT1BSL2kpO1xuXG5jb25zdCBpc01TSUUgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+IHRlc3RVc2VyQWdlbnQod2luLCAvTVNJRS9pKSB8fCB0ZXN0VXNlckFnZW50KHdpbiwgL1RyaWRlbnQvaSk7XG5cbmNvbnN0IGlzTW9iaWxlV2ViID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiBpc01vYmlsZSh3aW4pICYmICFpc0h5YnJpZCh3aW4pO1xuXG5jb25zdCBpc0lwYWQgPSAod2luOiBXaW5kb3cpID0+IHtcbiAgLy8gaU9TIDEyIGFuZCBiZWxvd1xuICBpZiAodGVzdFVzZXJBZ2VudCh3aW4sIC9pUGFkL2kpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBpT1MgMTMrXG4gIGlmICh0ZXN0VXNlckFnZW50KHdpbiwgL01hY2ludG9zaC9pKSAmJiBpc01vYmlsZSh3aW4pKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5jb25zdCBpc0lwaG9uZSA9ICh3aW46IFdpbmRvdykgPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9pUGhvbmUvaSk7XG5cbmNvbnN0IGlzSU9TID0gKHdpbjogV2luZG93KSA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL2lQaG9uZXxpUG9kL2kpIHx8IGlzSXBhZCh3aW4pO1xuXG5jb25zdCBpc0FuZHJvaWQgPSAod2luOiBXaW5kb3cpID0+IHRlc3RVc2VyQWdlbnQod2luLCAvYW5kcm9pZHxzaW5rL2kpO1xuXG5jb25zdCBpc0FuZHJvaWRUYWJsZXQgPSAod2luOiBXaW5kb3cpID0+IHtcbiAgcmV0dXJuIGlzQW5kcm9pZCh3aW4pICYmICF0ZXN0VXNlckFnZW50KHdpbiwgL21vYmlsZS9pKTtcbn07XG5cbmNvbnN0IGlzUGhhYmxldCA9ICh3aW46IFdpbmRvdykgPT4ge1xuICBjb25zdCB3aWR0aCA9IHdpbi5pbm5lcldpZHRoO1xuICBjb25zdCBoZWlnaHQgPSB3aW4uaW5uZXJIZWlnaHQ7XG4gIGNvbnN0IHNtYWxsZXN0ID0gTWF0aC5taW4od2lkdGgsIGhlaWdodCk7XG4gIGNvbnN0IGxhcmdlc3QgPSBNYXRoLm1heCh3aWR0aCwgaGVpZ2h0KTtcblxuICByZXR1cm4gc21hbGxlc3QgPiAzOTAgJiYgc21hbGxlc3QgPCA1MjAgJiYgbGFyZ2VzdCA+IDYyMCAmJiBsYXJnZXN0IDwgODAwO1xufTtcblxuY29uc3QgaXNUYWJsZXQgPSAod2luOiBXaW5kb3cpID0+IHtcbiAgY29uc3Qgd2lkdGggPSB3aW4uaW5uZXJXaWR0aDtcbiAgY29uc3QgaGVpZ2h0ID0gd2luLmlubmVySGVpZ2h0O1xuICBjb25zdCBzbWFsbGVzdCA9IE1hdGgubWluKHdpZHRoLCBoZWlnaHQpO1xuICBjb25zdCBsYXJnZXN0ID0gTWF0aC5tYXgod2lkdGgsIGhlaWdodCk7XG5cbiAgcmV0dXJuIChcbiAgICBpc0lwYWQod2luKSB8fFxuICAgIGlzQW5kcm9pZFRhYmxldCh3aW4pIHx8XG4gICAgKHNtYWxsZXN0ID4gNDYwICYmIHNtYWxsZXN0IDwgODIwICYmIGxhcmdlc3QgPiA3ODAgJiYgbGFyZ2VzdCA8IDE0MDApXG4gICk7XG59O1xuXG5jb25zdCBpc01vYmlsZSA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcoYW55LXBvaW50ZXI6Y29hcnNlKScpO1xuY29uc3QgaXNUb3VjaCA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcoYW55LXBvaW50ZXI6Y29hcnNlKScpO1xuXG5jb25zdCBpc0Rlc2t0b3AgPSAod2luOiBXaW5kb3cpID0+ICFpc01vYmlsZSh3aW4pO1xuXG5jb25zdCBpc0h5YnJpZCA9ICh3aW46IFdpbmRvdykgPT4gaXNDb3Jkb3ZhKHdpbikgfHwgaXNDYXBhY2l0b3JOYXRpdmUod2luKTtcblxuY29uc3QgaXNDb3Jkb3ZhID0gKHdpbjogYW55KTogYm9vbGVhbiA9PiAhISh3aW5bJ2NvcmRvdmEnXSB8fCB3aW5bJ3Bob25lZ2FwJ10gfHwgd2luWydQaG9uZUdhcCddKTtcblxuY29uc3QgaXNDYXBhY2l0b3JOYXRpdmUgPSAod2luOiBhbnkpOiBib29sZWFuID0+IHtcbiAgY29uc3QgY2FwYWNpdG9yID0gd2luWydDYXBhY2l0b3InXTtcbiAgcmV0dXJuICEhKGNhcGFjaXRvciAmJiBjYXBhY2l0b3IuaXNOYXRpdmUpO1xufTtcblxuY29uc3QgaXNFbGVjdHJvbiA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9lbGVjdHJvbi9pKTtcblxuY29uc3QgaXNQV0EgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+XG4gICEhKHdpbi5tYXRjaE1lZGlhKCcoZGlzcGxheS1tb2RlOiBzdGFuZGFsb25lKScpLm1hdGNoZXMgfHwgKHdpbi5uYXZpZ2F0b3IgYXMgYW55KS5zdGFuZGFsb25lKTtcblxuZXhwb3J0IGNvbnN0IHRlc3RVc2VyQWdlbnQgPSAod2luOiBXaW5kb3csIGV4cHI6IFJlZ0V4cCkgPT4gZXhwci50ZXN0KHdpbi5uYXZpZ2F0b3IudXNlckFnZW50KTtcblxuZXhwb3J0IGNvbnN0IGlzQnJvd3NlciA9IG5ldyBGdW5jdGlvbigndHJ5IHtyZXR1cm4gdGhpcz09PXdpbmRvdzt9Y2F0Y2goZSl7IHJldHVybiBmYWxzZTt9Jyk7XG5leHBvcnQgY29uc3QgaXNTZXJ2ZXIgPSBuZXcgRnVuY3Rpb24oJ3RyeSB7cmV0dXJuIHRoaXM9PT1nbG9iYWw7fWNhdGNoKGUpe3JldHVybiBmYWxzZTt9Jyk7XG5cbmNvbnN0IG1hdGNoTWVkaWEgPSAod2luOiBXaW5kb3csIHF1ZXJ5OiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIHdpbi5tYXRjaE1lZGlhKHF1ZXJ5KS5tYXRjaGVzO1xufTtcblxuY29uc3QgaXNTTVNjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiA2NDBweCknKTtcbmNvbnN0IGlzTURTY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogNzY4cHgpJyk7XG5jb25zdCBpc0xHU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDEwMjRweCknKTtcbmNvbnN0IGlzWExTY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogMTI4MHB4KScpO1xuY29uc3QgaXMyWExTY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogMTUzNnB4KScpO1xuY29uc3QgaXMzWExTY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogMTkyMHB4KScpO1xuY29uc3QgaXM0WExTY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogMjU2MHB4KScpO1xuXG5jb25zdCBQTEFURk9STVNfTUFQOiBhbnkgPSB7XG4gIEFuZHJvaWQ6IGlzQW5kcm9pZCxcbiAgaU9TOiBpc0lPUyxcbiAgRGVza3RvcDogaXNEZXNrdG9wLFxuICBNb2JpbGU6IGlzTW9iaWxlLFxuICBUb3VjaDogaXNUb3VjaCxcbiAgQ2hyb21lOiBpc0Nocm9tZSxcbiAgRmlyZWZveDogaXNGaXJlZm94LFxuICBTYWZhcmk6IGlzU2FmYXJpLFxuICBFZGdlOiBpc0VkZ2UsXG4gIE9wZXJhOiBpc09wZXJhLFxuICBIeWJyaWQ6IGlzSHlicmlkLFxuICBQV0E6IGlzUFdBLFxuICBFbGVjdHJvbjogaXNFbGVjdHJvbixcbiAgU006IGlzU01TY3JlZW4sXG4gIE1EOiBpc01EU2NyZWVuLFxuICBMRzogaXNMR1NjcmVlbixcbiAgWEw6IGlzWExTY3JlZW4sXG4gICcyWEwnOiBpczJYTFNjcmVlbixcbiAgJzNYTCc6IGlzM1hMU2NyZWVuLFxuICAnNFhMJzogaXM0WExTY3JlZW4sXG59O1xuXG5leHBvcnQgY2xhc3MgQVhQbGF0Zm9ybUV2ZW50PFQgZXh0ZW5kcyBFdmVudCA9IEV2ZW50PiB7XG4gIG5hdGl2ZUV2ZW50ITogVDtcbiAgc291cmNlITogQVhQbGF0Zm9ybTtcbiAgZGF0YT86IGFueTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYUGxhdGZvcm0ge1xuICByZXNpemU6IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PiA9IG5ldyBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4oKTtcbiAgZGlyZWN0aW9uQ2hhbmdlOiBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4gPSBuZXcgU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+KCk7XG4gIGNsaWNrOiBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4gPSBuZXcgU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+KCk7XG4gIHNjcm9sbDogU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+ID0gbmV3IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PigpO1xuICB0aGVtZU1vZGUkOiBCZWhhdmlvclN1YmplY3Q8QVhUaGVtZU1vZGU+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBWFRoZW1lTW9kZT4oJ3N5c3RlbScpO1xuICB0aGVtZU1vZGUgPSBzaWduYWw8QVhUaGVtZU1vZGU+KCdzeXN0ZW0nKTtcbiAgcHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgaXNEYXJrKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2F4LWRhcmsnKTtcbiAgfVxuXG4gIGlzUnRsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmRvY3VtZW50LmRpciA9PSAncnRsJyB8fFxuICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LmRpciA9PSAncnRsJyB8fFxuICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LnN0eWxlLmRpcmVjdGlvbiA9PSAncnRsJ1xuICAgICk7XG4gIH1cblxuICBpc0xhbmRzY2FwZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gd2luZG93LmlubmVySGVpZ2h0IDwgd2luZG93LmlubmVyV2lkdGg7XG4gIH1cblxuICBpc1BvcnRyYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc0xhbmRzY2FwZSgpO1xuICB9XG5cbiAgaXMobmFtZTogQVhQbGF0Zm9ybXMgfCBBWEJyb3dzZXJzIHwgQVhUZWNobm9sb2dpZXMgfCBBWFNjcmVlblNpemVzKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzQnJvd3NlcigpKSB7XG4gICAgICByZXR1cm4gUExBVEZPUk1TX01BUFtuYW1lXSh3aW5kb3cpIHx8IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNjcmVlblNpemUoKTogQVhTY3JlZW5TaXplcyB7XG4gICAgcmV0dXJuIChbJ1NNJywgJ01EJywgJ0xHJywgJ1hMJywgJzJYTCcsICczWEwnLCAnNFhMJ10uZmluZChcbiAgICAgIChuYW1lKSA9PiBQTEFURk9STVNfTUFQW25hbWVdKHdpbmRvdykgPT0gdHJ1ZSxcbiAgICApIHx8ICc1WEwnKSBhcyBBWFNjcmVlblNpemVzO1xuICB9XG5cbiAgc3dpdGNoTGlnaHRNb2RlKCkge1xuICAgIGNvbnN0IF9odG1sID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuICAgIF9odG1sLmNsYXNzTGlzdC5yZW1vdmUoJ2F4LWRhcmsnKTtcbiAgICB0aGlzLiNzZXRTeXN0ZW1UaGVtZSgnbGlnaHQnKTtcbiAgICByZXR1cm4gJ2xpZ2h0JztcbiAgfVxuXG4gIHN3aXRjaERhcmtNb2RlKCkge1xuICAgIGNvbnN0IF9odG1sID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuICAgIF9odG1sLmNsYXNzTGlzdC5hZGQoJ2F4LWRhcmsnKTtcbiAgICB0aGlzLiNzZXRTeXN0ZW1UaGVtZSgnZGFyaycpO1xuICAgIHJldHVybiAnZGFyayc7XG4gIH1cblxuICBzd2l0Y2hTeXN0ZW1Nb2RlKCkge1xuICAgIGlmIChpc0Jyb3dzZXIoKSkge1xuICAgICAgaWYgKHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykubWF0Y2hlcykge1xuICAgICAgICBjb25zdCBfaHRtbCA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXTtcbiAgICAgICAgX2h0bWwuY2xhc3NMaXN0LmFkZCgnYXgtZGFyaycpO1xuICAgICAgICB0aGlzLiNzZXRTeXN0ZW1UaGVtZSgnc3lzdGVtLWRhcmsnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IF9odG1sID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuICAgICAgICBfaHRtbC5jbGFzc0xpc3QucmVtb3ZlKCdheC1kYXJrJyk7XG4gICAgICAgIHRoaXMuI3NldFN5c3RlbVRoZW1lKCdzeXN0ZW0tbGlnaHQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjc2V0U3lzdGVtVGhlbWUodGhlbWVNb2RlOiBBWFRoZW1lTW9kZSkge1xuICAgIHRoaXMudGhlbWVNb2RlJC5uZXh0KHRoZW1lTW9kZSk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ0FYX1RIRU1FX01PREUnLCB0aGVtZU1vZGUpO1xuICAgIHRoaXMudGhlbWVNb2RlLnNldCh0aGVtZU1vZGUpO1xuICB9XG5cbiAgYXV0b0RldGVjdFRoZW1lTW9kZSgpIHtcbiAgICBjb25zdCBtb2RlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0FYX1RIRU1FX01PREUnKSB8fCAnc3lzdGVtJztcbiAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgIGNhc2UgJ2xpZ2h0JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc3dpdGNoTGlnaHRNb2RlKCk7XG5cbiAgICAgIGNhc2UgJ2RhcmsnOlxuICAgICAgICByZXR1cm4gdGhpcy5zd2l0Y2hEYXJrTW9kZSgpO1xuXG4gICAgICBjYXNlICdzeXN0ZW0nOlxuICAgICAgICByZXR1cm4gdGhpcy5zd2l0Y2hTeXN0ZW1Nb2RlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRGdWxsSGVpZ2h0UmF0aW8oKSB7XG4gICAgaWYgKGlzQnJvd3NlcigpKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCc6cm9vdCcpXG4gICAgICAgICAgPy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1heC12aCcsIHdpbmRvdy5pbm5lckhlaWdodCAvIDEwMCArICdweCcpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhdXRvU3lzdGVtTW9kZURldGVjdGlvbihldmVudCkge1xuICAgIGlmICh0aGlzLnRoZW1lTW9kZSgpID09PSAnc3lzdGVtJykge1xuICAgICAgY29uc3QgdGhlbWVNb2RlID0gZXZlbnQubWF0Y2hlcyA/ICdkYXJrJyA6ICdsaWdodCc7XG5cbiAgICAgIGlmICh0aGVtZU1vZGUgPT09ICdkYXJrJykge1xuICAgICAgICBjb25zdCBfaHRtbCA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXTtcbiAgICAgICAgX2h0bWwuY2xhc3NMaXN0LmFkZCgnYXgtZGFyaycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgX2h0bWwgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF07XG4gICAgICAgIF9odG1sLmNsYXNzTGlzdC5yZW1vdmUoJ2F4LWRhcmsnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoaXNCcm93c2VyKCkpIHtcbiAgICAgIHRoaXMuZGV0ZWN0RGFya01vZGUoKTtcbiAgICAgIHRoaXMuZGV0ZWN0T25SZXNpemUoKTtcbiAgICAgIHRoaXMuZGV0ZWN0Q2xpY2tFdmVudCgpO1xuICAgICAgdGhpcy5kZXRlY3RTY3JvbGxFdmVudCgpO1xuICAgICAgdGhpcy5zZXRGdWxsSGVpZ2h0UmF0aW8oKTtcbiAgICAgIHRoaXMuZGV0ZWN0RG9jdW1lbnREaXJlY3Rpb25DaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRldGVjdERhcmtNb2RlKCkge1xuICAgIC8vIGZyb21FdmVudChVSUV2ZW50KSh3aW5kb3csJycpXG4gICAgaWYgKHdpbmRvdz8ubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXMpIHtcbiAgICAgIHdpbmRvdz8ubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpPy5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgLy8gRGV0ZWN0IFN5c3RlbSBjb2xvciBtb2RlXG4gICAgICAgIHRoaXMuYXV0b1N5c3RlbU1vZGVEZXRlY3Rpb24oZXZlbnQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXRlY3RPblJlc2l6ZSgpIHtcbiAgICBmcm9tRXZlbnQ8VUlFdmVudD4od2luZG93LCAncmVzaXplJylcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDApKVxuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgdGhpcy5yZXNpemUubmV4dCh7XG4gICAgICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgICAgICAgc291cmNlOiB0aGlzLFxuICAgICAgICB9KTtcbiAgICAgICAgLy9cbiAgICAgICAgdGhpcy5zZXRGdWxsSGVpZ2h0UmF0aW8oKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXRlY3RDbGlja0V2ZW50KCkge1xuICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdjbGljaycsXG4gICAgICAoZSkgPT4ge1xuICAgICAgICB0aGlzLmNsaWNrLm5leHQoe1xuICAgICAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgICAgICAgIHNvdXJjZTogdGhpcyxcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgdHJ1ZSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXRlY3RTY3JvbGxFdmVudCgpIHtcbiAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnc2Nyb2xsJyxcbiAgICAgIChlKSA9PiB7XG4gICAgICAgIHRoaXMuc2Nyb2xsLm5leHQoe1xuICAgICAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgICAgICAgIHNvdXJjZTogdGhpcyxcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgdHJ1ZSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXRlY3REb2N1bWVudERpcmVjdGlvbkNoYW5nZSgpIHtcbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcbiAgICAgIG11dGF0aW9ucy5mb3JFYWNoKChtdXRhdGlvbikgPT4ge1xuICAgICAgICAvLyBEZXRlY3QgRGlyZWN0aW9uIENoYW5nZVxuICAgICAgICBpZiAobXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gJ2RpcicpIHtcbiAgICAgICAgICBjb25zdCBkaXIgPSB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RpcicpO1xuICAgICAgICAgIHRoaXMuZGlyZWN0aW9uQ2hhbmdlLm5leHQoeyBzb3VyY2U6IHRoaXMsIG5hdGl2ZUV2ZW50OiBudWxsLCBkYXRhOiBkaXIgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIG9ic2VydmVyLm9ic2VydmUodGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICBjaGlsZExpc3Q6IGZhbHNlLFxuICAgICAgY2hhcmFjdGVyRGF0YTogZmFsc2UsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
267
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9wbGF0Zm9ybS9zcmMvbGliL3BsYXRmb3JtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVNwRSxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUV6RSxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUUzRSxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUVyRSxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUV6RSxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxhQUFhLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRXJHLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBVyxFQUFXLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFJ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QUMsZUFBZSxFQUFFO1lBQ3pDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLGFBQWEsRUFBRSxLQUFLO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBak1VLFVBQVU7a0hBQVYsVUFBVSxjQUZULE1BQU07OzJGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgdHlwZSBBWFRoZW1lTW9kZSA9ICdsaWdodCcgfCAnZGFyaycgfCAnc3lzdGVtJyB8ICdzeXN0ZW0tZGFyaycgfCAnc3lzdGVtLWxpZ2h0JztcbmV4cG9ydCB0eXBlIEFYUGxhdGZvcm1zID0gJ0FuZHJvaWQnIHwgJ0Rlc2t0b3AnIHwgJ2lPUycgfCAnTW9iaWxlJztcbmV4cG9ydCB0eXBlIEFYQnJvd3NlcnMgPSAnQ2hyb21lJyB8ICdTYWZhcmknIHwgJ0VkZ2UnIHwgJ0ZpcmVmb3gnIHwgJ09wZXJhJyB8ICdNU0lFJztcbmV4cG9ydCB0eXBlIEFYVGVjaG5vbG9naWVzID0gJ1BXQScgfCAnSHlicmlkJyB8ICdFbGVjdHJvbic7XG5cbmV4cG9ydCB0eXBlIEFYU2NyZWVuU2l6ZXMgPSAnU00nIHwgJ01EJyB8ICdMRycgfCAnWEwnIHwgJzJYTCcgfCAnM1hMJyB8ICc0WEwnIHwgJzVYTCc7XG5cbmNvbnN0IGlzQ2hyb21lID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL0Nocm9tZS9pKTtcblxuY29uc3QgaXNGaXJlZm94ID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL0ZpcmVmb3gvaSk7XG5cbmNvbnN0IGlzRWRnZSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9FZGdlL2kpO1xuXG5jb25zdCBpc1NhZmFyaSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9TYWZhcmkvaSk7XG5cbmNvbnN0IGlzT3BlcmEgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+IHRlc3RVc2VyQWdlbnQod2luLCAvT3BlcmEvaSkgfHwgdGVzdFVzZXJBZ2VudCh3aW4sIC9PUFIvaSk7XG5cbmNvbnN0IGlzTVNJRSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9NU0lFL2kpIHx8IHRlc3RVc2VyQWdlbnQod2luLCAvVHJpZGVudC9pKTtcblxuY29uc3QgaXNNb2JpbGVXZWIgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+IGlzTW9iaWxlKHdpbikgJiYgIWlzSHlicmlkKHdpbik7XG5cbmNvbnN0IGlzSXBhZCA9ICh3aW46IFdpbmRvdykgPT4ge1xuICAvLyBpT1MgMTIgYW5kIGJlbG93XG4gIGlmICh0ZXN0VXNlckFnZW50KHdpbiwgL2lQYWQvaSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIGlPUyAxMytcbiAgaWYgKHRlc3RVc2VyQWdlbnQod2luLCAvTWFjaW50b3NoL2kpICYmIGlzTW9iaWxlKHdpbikpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmNvbnN0IGlzSXBob25lID0gKHdpbjogV2luZG93KSA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL2lQaG9uZS9pKTtcblxuY29uc3QgaXNJT1MgPSAod2luOiBXaW5kb3cpID0+IHRlc3RVc2VyQWdlbnQod2luLCAvaVBob25lfGlQb2QvaSkgfHwgaXNJcGFkKHdpbik7XG5cbmNvbnN0IGlzQW5kcm9pZCA9ICh3aW46IFdpbmRvdykgPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9hbmRyb2lkfHNpbmsvaSk7XG5cbmNvbnN0IGlzQW5kcm9pZFRhYmxldCA9ICh3aW46IFdpbmRvdykgPT4ge1xuICByZXR1cm4gaXNBbmRyb2lkKHdpbikgJiYgIXRlc3RVc2VyQWdlbnQod2luLCAvbW9iaWxlL2kpO1xufTtcblxuY29uc3QgaXNQaGFibGV0ID0gKHdpbjogV2luZG93KSA9PiB7XG4gIGNvbnN0IHdpZHRoID0gd2luLmlubmVyV2lkdGg7XG4gIGNvbnN0IGhlaWdodCA9IHdpbi5pbm5lckhlaWdodDtcbiAgY29uc3Qgc21hbGxlc3QgPSBNYXRoLm1pbih3aWR0aCwgaGVpZ2h0KTtcbiAgY29uc3QgbGFyZ2VzdCA9IE1hdGgubWF4KHdpZHRoLCBoZWlnaHQpO1xuXG4gIHJldHVybiBzbWFsbGVzdCA+IDM5MCAmJiBzbWFsbGVzdCA8IDUyMCAmJiBsYXJnZXN0ID4gNjIwICYmIGxhcmdlc3QgPCA4MDA7XG59O1xuXG5jb25zdCBpc1RhYmxldCA9ICh3aW46IFdpbmRvdykgPT4ge1xuICBjb25zdCB3aWR0aCA9IHdpbi5pbm5lcldpZHRoO1xuICBjb25zdCBoZWlnaHQgPSB3aW4uaW5uZXJIZWlnaHQ7XG4gIGNvbnN0IHNtYWxsZXN0ID0gTWF0aC5taW4od2lkdGgsIGhlaWdodCk7XG4gIGNvbnN0IGxhcmdlc3QgPSBNYXRoLm1heCh3aWR0aCwgaGVpZ2h0KTtcblxuICByZXR1cm4gKFxuICAgIGlzSXBhZCh3aW4pIHx8XG4gICAgaXNBbmRyb2lkVGFibGV0KHdpbikgfHxcbiAgICAoc21hbGxlc3QgPiA0NjAgJiYgc21hbGxlc3QgPCA4MjAgJiYgbGFyZ2VzdCA+IDc4MCAmJiBsYXJnZXN0IDwgMTQwMClcbiAgKTtcbn07XG5cbmNvbnN0IGlzTW9iaWxlID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhhbnktcG9pbnRlcjpjb2Fyc2UpJyk7XG5jb25zdCBpc1RvdWNoID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhhbnktcG9pbnRlcjpjb2Fyc2UpJyk7XG5cbmNvbnN0IGlzRGVza3RvcCA9ICh3aW46IFdpbmRvdykgPT4gIWlzTW9iaWxlKHdpbik7XG5cbmNvbnN0IGlzSHlicmlkID0gKHdpbjogV2luZG93KSA9PiBpc0NvcmRvdmEod2luKSB8fCBpc0NhcGFjaXRvck5hdGl2ZSh3aW4pO1xuXG5jb25zdCBpc0NvcmRvdmEgPSAod2luOiBhbnkpOiBib29sZWFuID0+ICEhKHdpblsnY29yZG92YSddIHx8IHdpblsncGhvbmVnYXAnXSB8fCB3aW5bJ1Bob25lR2FwJ10pO1xuXG5jb25zdCBpc0NhcGFjaXRvck5hdGl2ZSA9ICh3aW46IGFueSk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBjYXBhY2l0b3IgPSB3aW5bJ0NhcGFjaXRvciddO1xuICByZXR1cm4gISEoY2FwYWNpdG9yICYmIGNhcGFjaXRvci5pc05hdGl2ZSk7XG59O1xuXG5jb25zdCBpc0VsZWN0cm9uID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL2VsZWN0cm9uL2kpO1xuXG5jb25zdCBpc1BXQSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT5cbiAgISEod2luLm1hdGNoTWVkaWEoJyhkaXNwbGF5LW1vZGU6IHN0YW5kYWxvbmUpJykubWF0Y2hlcyB8fCAod2luLm5hdmlnYXRvciBhcyBhbnkpLnN0YW5kYWxvbmUpO1xuXG5leHBvcnQgY29uc3QgdGVzdFVzZXJBZ2VudCA9ICh3aW46IFdpbmRvdywgZXhwcjogUmVnRXhwKSA9PiBleHByLnRlc3Qod2luLm5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG5leHBvcnQgY29uc3QgaXNCcm93c2VyID0gbmV3IEZ1bmN0aW9uKCd0cnkge3JldHVybiB0aGlzPT09d2luZG93O31jYXRjaChlKXsgcmV0dXJuIGZhbHNlO30nKTtcbmV4cG9ydCBjb25zdCBpc1NlcnZlciA9IG5ldyBGdW5jdGlvbigndHJ5IHtyZXR1cm4gdGhpcz09PWdsb2JhbDt9Y2F0Y2goZSl7cmV0dXJuIGZhbHNlO30nKTtcblxuY29uc3QgbWF0Y2hNZWRpYSA9ICh3aW46IFdpbmRvdywgcXVlcnk6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gd2luLm1hdGNoTWVkaWEocXVlcnkpLm1hdGNoZXM7XG59O1xuXG5jb25zdCBpc1NNU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDY0MHB4KScpO1xuY29uc3QgaXNNRFNjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiA3NjhweCknKTtcbmNvbnN0IGlzTEdTY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogMTAyNHB4KScpO1xuY29uc3QgaXNYTFNjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiAxMjgwcHgpJyk7XG5jb25zdCBpczJYTFNjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiAxNTM2cHgpJyk7XG5jb25zdCBpczNYTFNjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiAxOTIwcHgpJyk7XG5jb25zdCBpczRYTFNjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiAyNTYwcHgpJyk7XG5cbmNvbnN0IFBMQVRGT1JNU19NQVA6IGFueSA9IHtcbiAgQW5kcm9pZDogaXNBbmRyb2lkLFxuICBpT1M6IGlzSU9TLFxuICBEZXNrdG9wOiBpc0Rlc2t0b3AsXG4gIE1vYmlsZTogaXNNb2JpbGUsXG4gIFRvdWNoOiBpc1RvdWNoLFxuICBDaHJvbWU6IGlzQ2hyb21lLFxuICBGaXJlZm94OiBpc0ZpcmVmb3gsXG4gIFNhZmFyaTogaXNTYWZhcmksXG4gIEVkZ2U6IGlzRWRnZSxcbiAgT3BlcmE6IGlzT3BlcmEsXG4gIEh5YnJpZDogaXNIeWJyaWQsXG4gIFBXQTogaXNQV0EsXG4gIEVsZWN0cm9uOiBpc0VsZWN0cm9uLFxuICBTTTogaXNTTVNjcmVlbixcbiAgTUQ6IGlzTURTY3JlZW4sXG4gIExHOiBpc0xHU2NyZWVuLFxuICBYTDogaXNYTFNjcmVlbixcbiAgJzJYTCc6IGlzMlhMU2NyZWVuLFxuICAnM1hMJzogaXMzWExTY3JlZW4sXG4gICc0WEwnOiBpczRYTFNjcmVlbixcbn07XG5cbmV4cG9ydCBjbGFzcyBBWFBsYXRmb3JtRXZlbnQ8VCBleHRlbmRzIEV2ZW50ID0gRXZlbnQ+IHtcbiAgbmF0aXZlRXZlbnQhOiBUO1xuICBzb3VyY2UhOiBBWFBsYXRmb3JtO1xuICBkYXRhPzogYW55O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhQbGF0Zm9ybSB7XG4gIHJlc2l6ZTogU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+ID0gbmV3IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PigpO1xuICBkaXJlY3Rpb25DaGFuZ2U6IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PiA9IG5ldyBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4oKTtcbiAgY2xpY2s6IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PiA9IG5ldyBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4oKTtcbiAgc2Nyb2xsOiBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4gPSBuZXcgU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+KCk7XG4gIHRoZW1lTW9kZSQ6IEJlaGF2aW9yU3ViamVjdDxBWFRoZW1lTW9kZT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFYVGhlbWVNb2RlPignc3lzdGVtJyk7XG4gIHRoZW1lTW9kZSA9IHNpZ25hbDxBWFRoZW1lTW9kZT4oJ3N5c3RlbScpO1xuICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblxuICBpc0RhcmsoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnYXgtZGFyaycpO1xuICB9XG5cbiAgaXNSdGwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZG9jdW1lbnQuZGlyID09ICdydGwnIHx8XG4gICAgICB0aGlzLmRvY3VtZW50LmJvZHkuZGlyID09ICdydGwnIHx8XG4gICAgICB0aGlzLmRvY3VtZW50LmJvZHkuc3R5bGUuZGlyZWN0aW9uID09ICdydGwnXG4gICAgKTtcbiAgfVxuXG4gIGlzTGFuZHNjYXBlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQgPCB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgfVxuXG4gIGlzUG9ydHJhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzTGFuZHNjYXBlKCk7XG4gIH1cblxuICBpcyhuYW1lOiBBWFBsYXRmb3JtcyB8IEFYQnJvd3NlcnMgfCBBWFRlY2hub2xvZ2llcyB8IEFYU2NyZWVuU2l6ZXMpOiBib29sZWFuIHtcbiAgICBpZiAoaXNCcm93c2VyKCkpIHtcbiAgICAgIHJldHVybiBQTEFURk9STVNfTUFQW25hbWVdKHdpbmRvdykgfHwgZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2NyZWVuU2l6ZSgpOiBBWFNjcmVlblNpemVzIHtcbiAgICByZXR1cm4gKFsnU00nLCAnTUQnLCAnTEcnLCAnWEwnLCAnMlhMJywgJzNYTCcsICc0WEwnXS5maW5kKFxuICAgICAgKG5hbWUpID0+IFBMQVRGT1JNU19NQVBbbmFtZV0od2luZG93KSA9PSB0cnVlLFxuICAgICkgfHwgJzVYTCcpIGFzIEFYU2NyZWVuU2l6ZXM7XG4gIH1cblxuICBzd2l0Y2hMaWdodE1vZGUoKSB7XG4gICAgY29uc3QgX2h0bWwgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF07XG4gICAgX2h0bWwuY2xhc3NMaXN0LnJlbW92ZSgnYXgtZGFyaycpO1xuICAgIHRoaXMuI3NldFN5c3RlbVRoZW1lKCdsaWdodCcpO1xuICAgIHJldHVybiAnbGlnaHQnO1xuICB9XG5cbiAgc3dpdGNoRGFya01vZGUoKSB7XG4gICAgY29uc3QgX2h0bWwgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF07XG4gICAgX2h0bWwuY2xhc3NMaXN0LmFkZCgnYXgtZGFyaycpO1xuICAgIHRoaXMuI3NldFN5c3RlbVRoZW1lKCdkYXJrJyk7XG4gICAgcmV0dXJuICdkYXJrJztcbiAgfVxuXG4gIHN3aXRjaFN5c3RlbU1vZGUoKSB7XG4gICAgaWYgKGlzQnJvd3NlcigpKSB7XG4gICAgICBpZiAod2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5tYXRjaGVzKSB7XG4gICAgICAgIGNvbnN0IF9odG1sID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuICAgICAgICBfaHRtbC5jbGFzc0xpc3QuYWRkKCdheC1kYXJrJyk7XG4gICAgICAgIHRoaXMuI3NldFN5c3RlbVRoZW1lKCdzeXN0ZW0tZGFyaycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgX2h0bWwgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF07XG4gICAgICAgIF9odG1sLmNsYXNzTGlzdC5yZW1vdmUoJ2F4LWRhcmsnKTtcbiAgICAgICAgdGhpcy4jc2V0U3lzdGVtVGhlbWUoJ3N5c3RlbS1saWdodCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICNzZXRTeXN0ZW1UaGVtZSh0aGVtZU1vZGU6IEFYVGhlbWVNb2RlKSB7XG4gICAgdGhpcy50aGVtZU1vZGUkLm5leHQodGhlbWVNb2RlKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQVhfVEhFTUVfTU9ERScsIHRoZW1lTW9kZSk7XG4gICAgdGhpcy50aGVtZU1vZGUuc2V0KHRoZW1lTW9kZSk7XG4gIH1cblxuICBhdXRvRGV0ZWN0VGhlbWVNb2RlKCkge1xuICAgIGNvbnN0IG1vZGUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQVhfVEhFTUVfTU9ERScpIHx8ICdzeXN0ZW0nO1xuICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgY2FzZSAnbGlnaHQnOlxuICAgICAgICByZXR1cm4gdGhpcy5zd2l0Y2hMaWdodE1vZGUoKTtcblxuICAgICAgY2FzZSAnZGFyayc6XG4gICAgICAgIHJldHVybiB0aGlzLnN3aXRjaERhcmtNb2RlKCk7XG5cbiAgICAgIGNhc2UgJ3N5c3RlbSc6XG4gICAgICAgIHJldHVybiB0aGlzLnN3aXRjaFN5c3RlbU1vZGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEZ1bGxIZWlnaHRSYXRpbygpIHtcbiAgICBpZiAoaXNCcm93c2VyKCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJzpyb290JylcbiAgICAgICAgICA/LnN0eWxlLnNldFByb3BlcnR5KCctLWF4LXZoJywgd2luZG93LmlubmVySGVpZ2h0IC8gMTAwICsgJ3B4Jyk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGF1dG9TeXN0ZW1Nb2RlRGV0ZWN0aW9uKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMudGhlbWVNb2RlKCkgPT09ICdzeXN0ZW0nKSB7XG4gICAgICBjb25zdCB0aGVtZU1vZGUgPSBldmVudC5tYXRjaGVzID8gJ2RhcmsnIDogJ2xpZ2h0JztcblxuICAgICAgaWYgKHRoZW1lTW9kZSA9PT0gJ2RhcmsnKSB7XG4gICAgICAgIGNvbnN0IF9odG1sID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuICAgICAgICBfaHRtbC5jbGFzc0xpc3QuYWRkKCdheC1kYXJrJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBfaHRtbCA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXTtcbiAgICAgICAgX2h0bWwuY2xhc3NMaXN0LnJlbW92ZSgnYXgtZGFyaycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmIChpc0Jyb3dzZXIoKSkge1xuICAgICAgdGhpcy5kZXRlY3REYXJrTW9kZSgpO1xuICAgICAgdGhpcy5kZXRlY3RPblJlc2l6ZSgpO1xuICAgICAgdGhpcy5kZXRlY3RDbGlja0V2ZW50KCk7XG4gICAgICB0aGlzLmRldGVjdFNjcm9sbEV2ZW50KCk7XG4gICAgICB0aGlzLnNldEZ1bGxIZWlnaHRSYXRpbygpO1xuICAgICAgdGhpcy5kZXRlY3REb2N1bWVudERpcmVjdGlvbkNoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0RGFya01vZGUoKSB7XG4gICAgLy8gZnJvbUV2ZW50KFVJRXZlbnQpKHdpbmRvdywnJylcbiAgICBpZiAod2luZG93Py5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykubWF0Y2hlcykge1xuICAgICAgd2luZG93Py5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJyk/LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChldmVudCkgPT4ge1xuICAgICAgICAvLyBEZXRlY3QgU3lzdGVtIGNvbG9yIG1vZGVcbiAgICAgICAgdGhpcy5hdXRvU3lzdGVtTW9kZURldGVjdGlvbihldmVudCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRldGVjdE9uUmVzaXplKCkge1xuICAgIGZyb21FdmVudDxVSUV2ZW50Pih3aW5kb3csICdyZXNpemUnKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCkpXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICB0aGlzLnJlc2l6ZS5uZXh0KHtcbiAgICAgICAgICBuYXRpdmVFdmVudDogZSxcbiAgICAgICAgICBzb3VyY2U6IHRoaXMsXG4gICAgICAgIH0pO1xuICAgICAgICAvL1xuICAgICAgICB0aGlzLnNldEZ1bGxIZWlnaHRSYXRpbygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRldGVjdENsaWNrRXZlbnQoKSB7XG4gICAgdGhpcy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2NsaWNrJyxcbiAgICAgIChlKSA9PiB7XG4gICAgICAgIHRoaXMuY2xpY2submV4dCh7XG4gICAgICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgICAgICAgc291cmNlOiB0aGlzLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICB0cnVlLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGRldGVjdFNjcm9sbEV2ZW50KCkge1xuICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdzY3JvbGwnLFxuICAgICAgKGUpID0+IHtcbiAgICAgICAgdGhpcy5zY3JvbGwubmV4dCh7XG4gICAgICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgICAgICAgc291cmNlOiB0aGlzLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICB0cnVlLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGRldGVjdERvY3VtZW50RGlyZWN0aW9uQ2hhbmdlKCkge1xuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuICAgICAgbXV0YXRpb25zLmZvckVhY2goKG11dGF0aW9uKSA9PiB7XG4gICAgICAgIC8vIERldGVjdCBEaXJlY3Rpb24gQ2hhbmdlXG4gICAgICAgIGlmIChtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lID09PSAnZGlyJykge1xuICAgICAgICAgIGNvbnN0IGRpciA9IHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGlyJyk7XG4gICAgICAgICAgdGhpcy5kaXJlY3Rpb25DaGFuZ2UubmV4dCh7IHNvdXJjZTogdGhpcywgbmF0aXZlRXZlbnQ6IG51bGwsIGRhdGE6IGRpciB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICBjaGlsZExpc3Q6IGZhbHNlLFxuICAgICAgY2hhcmFjdGVyRGF0YTogZmFsc2UsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-core-platform.mjs","sources":["../../../../libs/core/platform/src/lib/platform.service.ts","../../../../libs/core/platform/src/acorex-core-platform.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable, signal } from '@angular/core';\nimport { BehaviorSubject, fromEvent, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\nexport type AXThemeMode = 'light' | 'dark' | 'system' | 'system-dark' | 'system-light';\nexport type AXPlatforms = 'Android' | 'Desktop' | 'iOS' | 'Mobile';\nexport type AXBrowsers = 'Chrome' | 'Safari' | 'Edge' | 'Firefox' | 'Opera' | 'MSIE';\nexport type AXTechnologies = 'PWA' | 'Hybrid' | 'Electron';\n\nexport type AXScreenSizes = 'SM' | 'MD' | 'LG' | 'XL' | '2XL' | '3XL' | '4XL' | '5XL';\n\nconst isChrome = (win: Window): boolean => testUserAgent(win, /Chrome/i);\n\nconst isFirefox = (win: Window): boolean => testUserAgent(win, /Firefox/i);\n\nconst isEdge = (win: Window): boolean => testUserAgent(win, /Edge/i);\n\nconst isSafari = (win: Window): boolean => testUserAgent(win, /Safari/i);\n\nconst isOpera = (win: Window): boolean => testUserAgent(win, /Opera/i) || testUserAgent(win, /OPR/i);\n\nconst isMSIE = (win: Window): boolean => testUserAgent(win, /MSIE/i) || testUserAgent(win, /Trident/i);\n\nconst isMobileWeb = (win: Window): boolean => isMobile(win) && !isHybrid(win);\n\nconst isIpad = (win: Window) => {\n // iOS 12 and below\n if (testUserAgent(win, /iPad/i)) {\n return true;\n }\n\n // iOS 13+\n if (testUserAgent(win, /Macintosh/i) && isMobile(win)) {\n return true;\n }\n\n return false;\n};\n\nconst isIphone = (win: Window) => testUserAgent(win, /iPhone/i);\n\nconst isIOS = (win: Window) => testUserAgent(win, /iPhone|iPod/i) || isIpad(win);\n\nconst isAndroid = (win: Window) => testUserAgent(win, /android|sink/i);\n\nconst isAndroidTablet = (win: Window) => {\n return isAndroid(win) && !testUserAgent(win, /mobile/i);\n};\n\nconst isPhablet = (win: Window) => {\n const width = win.innerWidth;\n const height = win.innerHeight;\n const smallest = Math.min(width, height);\n const largest = Math.max(width, height);\n\n return smallest > 390 && smallest < 520 && largest > 620 && largest < 800;\n};\n\nconst isTablet = (win: Window) => {\n const width = win.innerWidth;\n const height = win.innerHeight;\n const smallest = Math.min(width, height);\n const largest = Math.max(width, height);\n\n return (\n isIpad(win) ||\n isAndroidTablet(win) ||\n (smallest > 460 && smallest < 820 && largest > 780 && largest < 1400)\n );\n};\n\nconst isMobile = (win: Window) => matchMedia(win, '(any-pointer:coarse)');\nconst isTouch = (win: Window) => matchMedia(win, '(any-pointer:coarse)');\n\nconst isDesktop = (win: Window) => !isMobile(win);\n\nconst isHybrid = (win: Window) => isCordova(win) || isCapacitorNative(win);\n\nconst isCordova = (win: any): boolean => !!(win['cordova'] || win['phonegap'] || win['PhoneGap']);\n\nconst isCapacitorNative = (win: any): boolean => {\n const capacitor = win['Capacitor'];\n return !!(capacitor && capacitor.isNative);\n};\n\nconst isElectron = (win: Window): boolean => testUserAgent(win, /electron/i);\n\nconst isPWA = (win: Window): boolean =>\n !!(win.matchMedia('(display-mode: standalone)').matches || (win.navigator as any).standalone);\n\nexport const testUserAgent = (win: Window, expr: RegExp) => expr.test(win.navigator.userAgent);\n\nexport const isBrowser = new Function('try {return this===window;}catch(e){ return false;}');\nexport const isServer = new Function('try {return this===global;}catch(e){return false;}');\n\nconst matchMedia = (win: Window, query: string): boolean => {\n return win.matchMedia(query).matches;\n};\n\nconst isSMScreen = (win: Window) => matchMedia(win, '(max-width: 640px)');\nconst isMDScreen = (win: Window) => matchMedia(win, '(max-width: 768px)');\nconst isLGScreen = (win: Window) => matchMedia(win, '(max-width: 1024px)');\nconst isXLScreen = (win: Window) => matchMedia(win, '(max-width: 1280px)');\nconst is2XLScreen = (win: Window) => matchMedia(win, '(max-width: 1536px)');\nconst is3XLScreen = (win: Window) => matchMedia(win, '(max-width: 1920px)');\nconst is4XLScreen = (win: Window) => matchMedia(win, '(max-width: 2560px)');\n\nconst PLATFORMS_MAP: any = {\n Android: isAndroid,\n iOS: isIOS,\n Desktop: isDesktop,\n Mobile: isMobile,\n Touch: isTouch,\n Chrome: isChrome,\n Firefox: isFirefox,\n Safari: isSafari,\n Edge: isEdge,\n Opera: isOpera,\n Hybrid: isHybrid,\n PWA: isPWA,\n Electron: isElectron,\n SM: isSMScreen,\n MD: isMDScreen,\n LG: isLGScreen,\n XL: isXLScreen,\n '2XL': is2XLScreen,\n '3XL': is3XLScreen,\n '4XL': is4XLScreen,\n};\n\nexport class AXPlatformEvent<T extends Event = Event> {\n nativeEvent!: T;\n source!: AXPlatform;\n data?: any;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPlatform {\n resize: Subject<AXPlatformEvent> = new Subject<AXPlatformEvent>();\n directionChange: Subject<AXPlatformEvent> = new Subject<AXPlatformEvent>();\n click: Subject<AXPlatformEvent> = new Subject<AXPlatformEvent>();\n scroll: Subject<AXPlatformEvent> = new Subject<AXPlatformEvent>();\n themeMode$: BehaviorSubject<AXThemeMode> = new BehaviorSubject<AXThemeMode>('system');\n themeMode = signal<AXThemeMode>('system');\n private document = inject(DOCUMENT);\n\n isDark(): boolean {\n return this.document.documentElement.classList.contains('ax-dark');\n }\n\n isRtl(): boolean {\n return (\n this.document.dir == 'rtl' ||\n this.document.body.dir == 'rtl' ||\n this.document.body.style.direction == 'rtl'\n );\n }\n\n isLandscape(): boolean {\n return window.innerHeight < window.innerWidth;\n }\n\n isPortrate(): boolean {\n return !this.isLandscape();\n }\n\n is(name: AXPlatforms | AXBrowsers | AXTechnologies | AXScreenSizes): boolean {\n if (isBrowser()) {\n return PLATFORMS_MAP[name](window) || false;\n } else {\n return false;\n }\n }\n\n get screenSize(): AXScreenSizes {\n return (['SM', 'MD', 'LG', 'XL', '2XL', '3XL', '4XL'].find(\n (name) => PLATFORMS_MAP[name](window) == true,\n ) || '5XL') as AXScreenSizes;\n }\n\n switchLightMode() {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.remove('ax-dark');\n this.#setSystemTheme('light');\n return 'light';\n }\n\n switchDarkMode() {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.add('ax-dark');\n this.#setSystemTheme('dark');\n return 'dark';\n }\n\n switchSystemMode() {\n if (isBrowser()) {\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.add('ax-dark');\n this.#setSystemTheme('system-dark');\n } else {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.remove('ax-dark');\n this.#setSystemTheme('system-light');\n }\n }\n }\n\n #setSystemTheme(themeMode: AXThemeMode) {\n this.themeMode$.next(themeMode);\n localStorage.setItem('AX_THEME_MODE', themeMode);\n this.themeMode.set(themeMode);\n }\n\n autoDetectThemeMode() {\n const mode = localStorage.getItem('AX_THEME_MODE') || 'system';\n switch (mode) {\n case 'light':\n return this.switchLightMode();\n\n case 'dark':\n return this.switchDarkMode();\n\n case 'system':\n return this.switchSystemMode();\n }\n }\n\n private setFullHeightRatio() {\n if (isBrowser()) {\n try {\n this.document\n .querySelector<HTMLElement>(':root')\n ?.style.setProperty('--ax-vh', window.innerHeight / 100 + 'px');\n } catch (error) {\n console.error(error);\n }\n }\n }\n\n private autoSystemModeDetection(event) {\n if (this.themeMode() === 'system') {\n const themeMode = event.matches ? 'dark' : 'light';\n\n if (themeMode === 'dark') {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.add('ax-dark');\n } else {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.remove('ax-dark');\n }\n }\n }\n\n constructor() {\n if (isBrowser()) {\n this.detectDarkMode();\n this.detectOnResize();\n this.detectClickEvent();\n this.detectScrollEvent();\n this.setFullHeightRatio();\n this.detectDocumentDirectionChange();\n }\n }\n\n private detectDarkMode() {\n // fromEvent(UIEvent)(window,'')\n if (window?.matchMedia('(prefers-color-scheme: dark)').matches) {\n window?.matchMedia('(prefers-color-scheme: dark)')?.addEventListener('change', (event) => {\n // Detect System color mode\n this.autoSystemModeDetection(event);\n });\n }\n }\n\n private detectOnResize() {\n fromEvent<UIEvent>(window, 'resize')\n .pipe(debounceTime(100))\n .pipe(distinctUntilChanged())\n .subscribe((e) => {\n this.resize.next({\n nativeEvent: e,\n source: this,\n });\n //\n this.setFullHeightRatio();\n });\n }\n\n private detectClickEvent() {\n this.document.addEventListener(\n 'click',\n (e) => {\n this.click.next({\n nativeEvent: e,\n source: this,\n });\n },\n true,\n );\n }\n\n private detectScrollEvent() {\n this.document.addEventListener(\n 'scroll',\n (e) => {\n this.scroll.next({\n nativeEvent: e,\n source: this,\n });\n },\n true,\n );\n }\n\n private detectDocumentDirectionChange() {\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n // Detect Direction Change\n if (mutation.attributeName === 'dir') {\n const dir = this.document.documentElement.getAttribute('dir');\n this.directionChange.next({ source: this, nativeEvent: null, data: dir });\n }\n });\n });\n observer.observe(this.document.documentElement, {\n attributes: true,\n childList: false,\n characterData: false,\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"acorex-core-platform.mjs","sources":["../../../../libs/core/platform/src/lib/platform.service.ts","../../../../libs/core/platform/src/acorex-core-platform.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable, signal } from '@angular/core';\nimport { BehaviorSubject, fromEvent, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\nexport type AXThemeMode = 'light' | 'dark' | 'system' | 'system-dark' | 'system-light';\nexport type AXPlatforms = 'Android' | 'Desktop' | 'iOS' | 'Mobile';\nexport type AXBrowsers = 'Chrome' | 'Safari' | 'Edge' | 'Firefox' | 'Opera' | 'MSIE';\nexport type AXTechnologies = 'PWA' | 'Hybrid' | 'Electron';\n\nexport type AXScreenSizes = 'SM' | 'MD' | 'LG' | 'XL' | '2XL' | '3XL' | '4XL' | '5XL';\n\nconst isChrome = (win: Window): boolean => testUserAgent(win, /Chrome/i);\n\nconst isFirefox = (win: Window): boolean => testUserAgent(win, /Firefox/i);\n\nconst isEdge = (win: Window): boolean => testUserAgent(win, /Edge/i);\n\nconst isSafari = (win: Window): boolean => testUserAgent(win, /Safari/i);\n\nconst isOpera = (win: Window): boolean => testUserAgent(win, /Opera/i) || testUserAgent(win, /OPR/i);\n\nconst isMSIE = (win: Window): boolean => testUserAgent(win, /MSIE/i) || testUserAgent(win, /Trident/i);\n\nconst isMobileWeb = (win: Window): boolean => isMobile(win) && !isHybrid(win);\n\nconst isIpad = (win: Window) => {\n // iOS 12 and below\n if (testUserAgent(win, /iPad/i)) {\n return true;\n }\n\n // iOS 13+\n if (testUserAgent(win, /Macintosh/i) && isMobile(win)) {\n return true;\n }\n\n return false;\n};\n\nconst isIphone = (win: Window) => testUserAgent(win, /iPhone/i);\n\nconst isIOS = (win: Window) => testUserAgent(win, /iPhone|iPod/i) || isIpad(win);\n\nconst isAndroid = (win: Window) => testUserAgent(win, /android|sink/i);\n\nconst isAndroidTablet = (win: Window) => {\n return isAndroid(win) && !testUserAgent(win, /mobile/i);\n};\n\nconst isPhablet = (win: Window) => {\n const width = win.innerWidth;\n const height = win.innerHeight;\n const smallest = Math.min(width, height);\n const largest = Math.max(width, height);\n\n return smallest > 390 && smallest < 520 && largest > 620 && largest < 800;\n};\n\nconst isTablet = (win: Window) => {\n const width = win.innerWidth;\n const height = win.innerHeight;\n const smallest = Math.min(width, height);\n const largest = Math.max(width, height);\n\n return (\n isIpad(win) ||\n isAndroidTablet(win) ||\n (smallest > 460 && smallest < 820 && largest > 780 && largest < 1400)\n );\n};\n\nconst isMobile = (win: Window) => matchMedia(win, '(any-pointer:coarse)');\nconst isTouch = (win: Window) => matchMedia(win, '(any-pointer:coarse)');\n\nconst isDesktop = (win: Window) => !isMobile(win);\n\nconst isHybrid = (win: Window) => isCordova(win) || isCapacitorNative(win);\n\nconst isCordova = (win: any): boolean => !!(win['cordova'] || win['phonegap'] || win['PhoneGap']);\n\nconst isCapacitorNative = (win: any): boolean => {\n const capacitor = win['Capacitor'];\n return !!(capacitor && capacitor.isNative);\n};\n\nconst isElectron = (win: Window): boolean => testUserAgent(win, /electron/i);\n\nconst isPWA = (win: Window): boolean =>\n !!(win.matchMedia('(display-mode: standalone)').matches || (win.navigator as any).standalone);\n\nexport const testUserAgent = (win: Window, expr: RegExp) => expr.test(win.navigator.userAgent);\n\nexport const isBrowser = new Function('try {return this===window;}catch(e){ return false;}');\nexport const isServer = new Function('try {return this===global;}catch(e){return false;}');\n\nconst matchMedia = (win: Window, query: string): boolean => {\n return win.matchMedia(query).matches;\n};\n\nconst isSMScreen = (win: Window) => matchMedia(win, '(max-width: 640px)');\nconst isMDScreen = (win: Window) => matchMedia(win, '(max-width: 768px)');\nconst isLGScreen = (win: Window) => matchMedia(win, '(max-width: 1024px)');\nconst isXLScreen = (win: Window) => matchMedia(win, '(max-width: 1280px)');\nconst is2XLScreen = (win: Window) => matchMedia(win, '(max-width: 1536px)');\nconst is3XLScreen = (win: Window) => matchMedia(win, '(max-width: 1920px)');\nconst is4XLScreen = (win: Window) => matchMedia(win, '(max-width: 2560px)');\n\nconst PLATFORMS_MAP: any = {\n Android: isAndroid,\n iOS: isIOS,\n Desktop: isDesktop,\n Mobile: isMobile,\n Touch: isTouch,\n Chrome: isChrome,\n Firefox: isFirefox,\n Safari: isSafari,\n Edge: isEdge,\n Opera: isOpera,\n Hybrid: isHybrid,\n PWA: isPWA,\n Electron: isElectron,\n SM: isSMScreen,\n MD: isMDScreen,\n LG: isLGScreen,\n XL: isXLScreen,\n '2XL': is2XLScreen,\n '3XL': is3XLScreen,\n '4XL': is4XLScreen,\n};\n\nexport class AXPlatformEvent<T extends Event = Event> {\n nativeEvent!: T;\n source!: AXPlatform;\n data?: any;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPlatform {\n resize: Subject<AXPlatformEvent> = new Subject<AXPlatformEvent>();\n directionChange: Subject<AXPlatformEvent> = new Subject<AXPlatformEvent>();\n click: Subject<AXPlatformEvent> = new Subject<AXPlatformEvent>();\n scroll: Subject<AXPlatformEvent> = new Subject<AXPlatformEvent>();\n themeMode$: BehaviorSubject<AXThemeMode> = new BehaviorSubject<AXThemeMode>('system');\n themeMode = signal<AXThemeMode>('system');\n private document = inject(DOCUMENT);\n\n isDark(): boolean {\n return this.document.documentElement.classList.contains('ax-dark');\n }\n\n isRtl(): boolean {\n return (\n this.document.dir == 'rtl' ||\n this.document.body.dir == 'rtl' ||\n this.document.body.style.direction == 'rtl'\n );\n }\n\n isLandscape(): boolean {\n return window.innerHeight < window.innerWidth;\n }\n\n isPortrate(): boolean {\n return !this.isLandscape();\n }\n\n is(name: AXPlatforms | AXBrowsers | AXTechnologies | AXScreenSizes): boolean {\n if (isBrowser()) {\n return PLATFORMS_MAP[name](window) || false;\n } else {\n return false;\n }\n }\n\n get screenSize(): AXScreenSizes {\n return (['SM', 'MD', 'LG', 'XL', '2XL', '3XL', '4XL'].find(\n (name) => PLATFORMS_MAP[name](window) == true,\n ) || '5XL') as AXScreenSizes;\n }\n\n switchLightMode() {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.remove('ax-dark');\n this.#setSystemTheme('light');\n return 'light';\n }\n\n switchDarkMode() {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.add('ax-dark');\n this.#setSystemTheme('dark');\n return 'dark';\n }\n\n switchSystemMode() {\n if (isBrowser()) {\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.add('ax-dark');\n this.#setSystemTheme('system-dark');\n } else {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.remove('ax-dark');\n this.#setSystemTheme('system-light');\n }\n }\n }\n\n #setSystemTheme(themeMode: AXThemeMode) {\n this.themeMode$.next(themeMode);\n localStorage.setItem('AX_THEME_MODE', themeMode);\n this.themeMode.set(themeMode);\n }\n\n autoDetectThemeMode() {\n const mode = localStorage.getItem('AX_THEME_MODE') || 'system';\n switch (mode) {\n case 'light':\n return this.switchLightMode();\n\n case 'dark':\n return this.switchDarkMode();\n\n case 'system':\n return this.switchSystemMode();\n }\n }\n\n private setFullHeightRatio() {\n if (isBrowser()) {\n try {\n this.document\n .querySelector<HTMLElement>(':root')\n ?.style.setProperty('--ax-vh', window.innerHeight / 100 + 'px');\n } catch (error) {\n console.error(error);\n }\n }\n }\n\n private autoSystemModeDetection(event) {\n if (this.themeMode() === 'system') {\n const themeMode = event.matches ? 'dark' : 'light';\n\n if (themeMode === 'dark') {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.add('ax-dark');\n } else {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.remove('ax-dark');\n }\n }\n }\n\n constructor() {\n if (isBrowser()) {\n this.detectDarkMode();\n this.detectOnResize();\n this.detectClickEvent();\n this.detectScrollEvent();\n this.setFullHeightRatio();\n this.detectDocumentDirectionChange();\n }\n }\n\n private detectDarkMode() {\n // fromEvent(UIEvent)(window,'')\n if (window?.matchMedia('(prefers-color-scheme: dark)').matches) {\n window?.matchMedia('(prefers-color-scheme: dark)')?.addEventListener('change', (event) => {\n // Detect System color mode\n this.autoSystemModeDetection(event);\n });\n }\n }\n\n private detectOnResize() {\n fromEvent<UIEvent>(window, 'resize')\n .pipe(debounceTime(100))\n .pipe(distinctUntilChanged())\n .subscribe((e) => {\n this.resize.next({\n nativeEvent: e,\n source: this,\n });\n //\n this.setFullHeightRatio();\n });\n }\n\n private detectClickEvent() {\n this.document.addEventListener(\n 'click',\n (e) => {\n this.click.next({\n nativeEvent: e,\n source: this,\n });\n },\n true,\n );\n }\n\n private detectScrollEvent() {\n this.document.addEventListener(\n 'scroll',\n (e) => {\n this.scroll.next({\n nativeEvent: e,\n source: this,\n });\n },\n true,\n );\n }\n\n private detectDocumentDirectionChange() {\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n // Detect Direction Change\n if (mutation.attributeName === 'dir') {\n const dir = this.document.documentElement.getAttribute('dir');\n this.directionChange.next({ source: this, nativeEvent: null, data: dir });\n }\n });\n });\n observer.observe(document.documentElement, {\n attributes: true,\n childList: false,\n characterData: false,\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAYA,MAAM,QAAQ,GAAG,CAAC,GAAW,KAAc,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC;AAExE,MAAM,SAAS,GAAG,CAAC,GAAW,KAAc,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC;AAE1E,MAAM,MAAM,GAAG,CAAC,GAAW,KAAc,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC;AAEpE,MAAM,QAAQ,GAAG,CAAC,GAAW,KAAc,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC;AAExE,MAAM,OAAO,GAAG,CAAC,GAAW,KAAc,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC;AAEpG,MAAM,MAAM,GAAG,CAAC,GAAW,KAAc,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC;AAEtG,MAAM,WAAW,GAAG,CAAC,GAAW,KAAc,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAE7E,MAAM,MAAM,GAAG,CAAC,GAAW,KAAI;;AAE7B,IAAA,IAAI,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE;AAC/B,QAAA,OAAO,IAAI;;;AAIb,IAAA,IAAI,aAAa,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACrD,QAAA,OAAO,IAAI;;AAGb,IAAA,OAAO,KAAK;AACd,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,GAAW,KAAK,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC;AAE/D,MAAM,KAAK,GAAG,CAAC,GAAW,KAAK,aAAa,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC;AAEhF,MAAM,SAAS,GAAG,CAAC,GAAW,KAAK,aAAa,CAAC,GAAG,EAAE,eAAe,CAAC;AAEtE,MAAM,eAAe,GAAG,CAAC,GAAW,KAAI;AACtC,IAAA,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC;AACzD,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,GAAW,KAAI;AAChC,IAAA,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU;AAC5B,IAAA,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW;IAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;AAEvC,IAAA,OAAO,QAAQ,GAAG,GAAG,IAAI,QAAQ,GAAG,GAAG,IAAI,OAAO,GAAG,GAAG,IAAI,OAAO,GAAG,GAAG;AAC3E,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,GAAW,KAAI;AAC/B,IAAA,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU;AAC5B,IAAA,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW;IAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;AAEvC,IAAA,QACE,MAAM,CAAC,GAAG,CAAC;QACX,eAAe,CAAC,GAAG,CAAC;AACpB,SAAC,QAAQ,GAAG,GAAG,IAAI,QAAQ,GAAG,GAAG,IAAI,OAAO,GAAG,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC;AAEzE,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,GAAW,KAAK,UAAU,CAAC,GAAG,EAAE,sBAAsB,CAAC;AACzE,MAAM,OAAO,GAAG,CAAC,GAAW,KAAK,UAAU,CAAC,GAAG,EAAE,sBAAsB,CAAC;AAExE,MAAM,SAAS,GAAG,CAAC,GAAW,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AAEjD,MAAM,QAAQ,GAAG,CAAC,GAAW,KAAK,SAAS,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC;AAE1E,MAAM,SAAS,GAAG,CAAC,GAAQ,KAAc,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;AAEjG,MAAM,iBAAiB,GAAG,CAAC,GAAQ,KAAa;AAC9C,IAAA,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC;IAClC,OAAO,CAAC,EAAE,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,GAAW,KAAc,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC;AAE5E,MAAM,KAAK,GAAG,CAAC,GAAW,KACxB,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAC,OAAO,IAAK,GAAG,CAAC,SAAiB,CAAC,UAAU,CAAC;MAElF,aAAa,GAAG,CAAC,GAAW,EAAE,IAAY,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS;MAEhF,SAAS,GAAG,IAAI,QAAQ,CAAC,qDAAqD;MAC9E,QAAQ,GAAG,IAAI,QAAQ,CAAC,oDAAoD;AAEzF,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,KAAa,KAAa;IACzD,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO;AACtC,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,GAAW,KAAK,UAAU,CAAC,GAAG,EAAE,oBAAoB,CAAC;AACzE,MAAM,UAAU,GAAG,CAAC,GAAW,KAAK,UAAU,CAAC,GAAG,EAAE,oBAAoB,CAAC;AACzE,MAAM,UAAU,GAAG,CAAC,GAAW,KAAK,UAAU,CAAC,GAAG,EAAE,qBAAqB,CAAC;AAC1E,MAAM,UAAU,GAAG,CAAC,GAAW,KAAK,UAAU,CAAC,GAAG,EAAE,qBAAqB,CAAC;AAC1E,MAAM,WAAW,GAAG,CAAC,GAAW,KAAK,UAAU,CAAC,GAAG,EAAE,qBAAqB,CAAC;AAC3E,MAAM,WAAW,GAAG,CAAC,GAAW,KAAK,UAAU,CAAC,GAAG,EAAE,qBAAqB,CAAC;AAC3E,MAAM,WAAW,GAAG,CAAC,GAAW,KAAK,UAAU,CAAC,GAAG,EAAE,qBAAqB,CAAC;AAE3E,MAAM,aAAa,GAAQ;AACzB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,KAAK,EAAE,WAAW;AAClB,IAAA,KAAK,EAAE,WAAW;AAClB,IAAA,KAAK,EAAE,WAAW;CACnB;MAEY,eAAe,CAAA;AAI3B;MAKY,UAAU,CAAA;IASrB,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;;IAGpE,KAAK,GAAA;AACH,QAAA,QACE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,KAAK;AAC1B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK;YAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK;;IAI/C,WAAW,GAAA;AACT,QAAA,OAAO,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU;;IAG/C,UAAU,GAAA;AACR,QAAA,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;;AAG5B,IAAA,EAAE,CAAC,IAA+D,EAAA;QAChE,IAAI,SAAS,EAAE,EAAE;YACf,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK;;aACtC;AACL,YAAA,OAAO,KAAK;;;AAIhB,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CACxD,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAC9C,IAAI,KAAK;;IAGZ,eAAe,GAAA;AACb,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3D,QAAA,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;AACjC,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;AAC7B,QAAA,OAAO,OAAO;;IAGhB,cAAc,GAAA;AACZ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3D,QAAA,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AAC9B,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAC5B,QAAA,OAAO,MAAM;;IAGf,gBAAgB,GAAA;QACd,IAAI,SAAS,EAAE,EAAE;AACf,YAAA,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,OAAO,EAAE;AAClF,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3D,gBAAA,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AAC9B,gBAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;;iBAC9B;AACL,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3D,gBAAA,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;AACjC,gBAAA,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;;;;AAK1C,IAAA,eAAe,CAAC,SAAsB,EAAA;AACpC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;AAC/B,QAAA,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC;AAChD,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;;IAG/B,mBAAmB,GAAA;QACjB,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,QAAQ;QAC9D,QAAQ,IAAI;AACV,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,IAAI,CAAC,eAAe,EAAE;AAE/B,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,IAAI,CAAC,cAAc,EAAE;AAE9B,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE;;;IAI5B,kBAAkB,GAAA;QACxB,IAAI,SAAS,EAAE,EAAE;AACf,YAAA,IAAI;AACF,gBAAA,IAAI,CAAC;qBACF,aAAa,CAAc,OAAO;AACnC,sBAAE,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC;;YACjE,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;;;;AAKlB,IAAA,uBAAuB,CAAC,KAAK,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,QAAQ,EAAE;AACjC,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,GAAG,OAAO;AAElD,YAAA,IAAI,SAAS,KAAK,MAAM,EAAE;AACxB,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3D,gBAAA,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;;iBACzB;AACL,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3D,gBAAA,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;;;;AAKvC,IAAA,WAAA,GAAA;AApHA,QAAA,IAAA,CAAA,MAAM,GAA6B,IAAI,OAAO,EAAmB;AACjE,QAAA,IAAA,CAAA,eAAe,GAA6B,IAAI,OAAO,EAAmB;AAC1E,QAAA,IAAA,CAAA,KAAK,GAA6B,IAAI,OAAO,EAAmB;AAChE,QAAA,IAAA,CAAA,MAAM,GAA6B,IAAI,OAAO,EAAmB;AACjE,QAAA,IAAA,CAAA,UAAU,GAAiC,IAAI,eAAe,CAAc,QAAQ,CAAC;AACrF,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAc,QAAQ,CAAC;AACjC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QA+GjC,IAAI,SAAS,EAAE,EAAE;YACf,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,6BAA6B,EAAE;;;IAIhC,cAAc,GAAA;;QAEpB,IAAI,MAAM,EAAE,UAAU,CAAC,8BAA8B,CAAC,CAAC,OAAO,EAAE;AAC9D,YAAA,MAAM,EAAE,UAAU,CAAC,8BAA8B,CAAC,EAAE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,KAAI;;AAEvF,gBAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACrC,aAAC,CAAC;;;IAIE,cAAc,GAAA;AACpB,QAAA,SAAS,CAAU,MAAM,EAAE,QAAQ;AAChC,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;aACtB,IAAI,CAAC,oBAAoB,EAAE;AAC3B,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,MAAM,EAAE,IAAI;AACb,aAAA,CAAC;;YAEF,IAAI,CAAC,kBAAkB,EAAE;AAC3B,SAAC,CAAC;;IAGE,gBAAgB,GAAA;QACtB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAC5B,OAAO,EACP,CAAC,CAAC,KAAI;AACJ,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACd,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,MAAM,EAAE,IAAI;AACb,aAAA,CAAC;SACH,EACD,IAAI,CACL;;IAGK,iBAAiB,GAAA;QACvB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAC5B,QAAQ,EACR,CAAC,CAAC,KAAI;AACJ,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,MAAM,EAAE,IAAI;AACb,aAAA,CAAC;SACH,EACD,IAAI,CACL;;IAGK,6BAA6B,GAAA;QACnC,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,SAAS,KAAI;AAClD,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;;AAE7B,gBAAA,IAAI,QAAQ,CAAC,aAAa,KAAK,KAAK,EAAE;AACpC,oBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC;AAC7D,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;;AAE7E,aAAC,CAAC;AACJ,SAAC,CAAC;AACF,QAAA,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE;AACzC,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,aAAa,EAAE,KAAK;AACrB,SAAA,CAAC;;8GAhMO,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA;;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;AC3ID;;AAEG;;;;"}
|