@snabcentr/client-ui 4.13.0 → 4.14.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 (36) hide show
  1. package/catalog/catalog-filters/sc-catalog-filters.component.d.ts +7 -0
  2. package/esm2022/catalog/catalog-filters/sc-catalog-filters.component.mjs +18 -2
  3. package/esm2022/news/sc-news.module.mjs +4 -5
  4. package/esm2022/pages/frequently-asked-questions/sc-faq-question-anchor.mjs +23 -0
  5. package/esm2022/pages/frequently-asked-questions/sc-frequently-asked-questions.component.mjs +79 -6
  6. package/esm2022/pages/frequently-asked-questions-with-groups/sc-frequently-asked-questions-with-groups.component.mjs +4 -2
  7. package/esm2022/pages/index.mjs +2 -1
  8. package/esm2022/public-api.mjs +2 -2
  9. package/esm2022/share/index.mjs +6 -0
  10. package/esm2022/share/sc-share-dialog-data.mjs +2 -0
  11. package/esm2022/share/sc-share.service.mjs +40 -0
  12. package/esm2022/share/share-button/sc-share-button.component.mjs +99 -0
  13. package/esm2022/share/share-dialog/sc-share-dialog.component.mjs +134 -0
  14. package/esm2022/share/share-messengers-links/sc-share-messengers-links.component.mjs +84 -0
  15. package/fesm2022/snabcentr-client-ui.mjs +450 -63
  16. package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
  17. package/news/sc-news.module.d.ts +3 -4
  18. package/package.json +1 -1
  19. package/pages/frequently-asked-questions/sc-faq-question-anchor.d.ts +16 -0
  20. package/pages/frequently-asked-questions/sc-frequently-asked-questions.component.d.ts +43 -1
  21. package/pages/index.d.ts +1 -0
  22. package/public-api.d.ts +1 -1
  23. package/release_notes.tmp +4 -2
  24. package/share/index.d.ts +5 -0
  25. package/share/sc-share-dialog-data.d.ts +13 -0
  26. package/share/sc-share.service.d.ts +19 -0
  27. package/share/share-button/sc-share-button.component.d.ts +78 -0
  28. package/share/share-dialog/sc-share-dialog.component.d.ts +87 -0
  29. package/share/share-messengers-links/sc-share-messengers-links.component.d.ts +49 -0
  30. package/styles/tailwind/tailwind.scss +18 -0
  31. package/esm2022/share-button/index.mjs +0 -3
  32. package/esm2022/share-button/sc-share-button.component.mjs +0 -35
  33. package/esm2022/share-button/sc-share-button.module.mjs +0 -22
  34. package/share-button/index.d.ts +0 -2
  35. package/share-button/sc-share-button.component.d.ts +0 -22
  36. package/share-button/sc-share-button.module.d.ts +0 -12
@@ -0,0 +1,84 @@
1
+ import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';
2
+ import { WA_WINDOW } from '@ng-web-apis/common';
3
+ import { IS_RUNNING_ON_TERMINAL, ScPhoneService, ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '@snabcentr/client-core';
4
+ import { TuiButton, TuiDialogService } from '@taiga-ui/core';
5
+ import { PolymorpheusComponent } from '@taiga-ui/polymorpheus';
6
+ import { ScPhoneFormatPipe } from '../../pipes';
7
+ import { ScQRCodeDialogComponent } from '../../qrcode';
8
+ import * as i0 from "@angular/core";
9
+ /**
10
+ * Ссылки на мессенджеры контакта по номеру телефона.
11
+ *
12
+ * На терминале вместо перехода в мессенджер отображается QR-код ссылки.
13
+ */
14
+ export class ScShareMessengersLinksComponent {
15
+ constructor() {
16
+ /**
17
+ * {@link InputSignal} телефона контакта.
18
+ */
19
+ this.phone = input.required();
20
+ /**
21
+ * {@link InputSignal} размера кнопок.
22
+ */
23
+ this.size = input('s');
24
+ /**
25
+ * Сервис для сбора метрик о действиях пользователей.
26
+ */
27
+ this.userMetrikaService = inject(ScUserMetrikaService);
28
+ /**
29
+ * Ссылка на объект окна браузера.
30
+ */
31
+ this.window = inject(WA_WINDOW);
32
+ /**
33
+ * Провайдер данных о терминале.
34
+ */
35
+ this.terminal = inject(IS_RUNNING_ON_TERMINAL);
36
+ /**
37
+ * Сервис для работы с диалоговыми окнами.
38
+ */
39
+ this.dialog = inject(TuiDialogService);
40
+ }
41
+ /**
42
+ * Открывает окно перехода в мессенджер.
43
+ *
44
+ * @param shareLink Ссылка перехода в мессенджер.
45
+ * @param socialMedia Slug мессенджера.
46
+ */
47
+ openShareWindow(shareLink, socialMedia) {
48
+ this.userMetrikaService.emitUserMetrikaEvent({
49
+ target: ScUserMetrikaGoalsEnum.shareClick,
50
+ params: {
51
+ share_link_name: socialMedia,
52
+ phone: this.phone(),
53
+ },
54
+ });
55
+ if (this.terminal.isRunningOnTerminal) {
56
+ this.dialog
57
+ .open(new PolymorpheusComponent(ScQRCodeDialogComponent), {
58
+ size: 's',
59
+ label: socialMedia,
60
+ data: { qrdata: shareLink },
61
+ })
62
+ .subscribe();
63
+ }
64
+ else {
65
+ this.window.open(shareLink, 'sharer', 'status=0,toolbar=0,width=650,height=500');
66
+ }
67
+ }
68
+ /**
69
+ * Проверяет, что номер телефона подходит для использования в мессенджерах.
70
+ *
71
+ * @param value Номер телефона.
72
+ */
73
+ // eslint-disable-next-line class-methods-use-this
74
+ isValidPhoneNumberForMessenger(value) {
75
+ return ScPhoneService.isValidPhoneNumberForMessenger(value);
76
+ }
77
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScShareMessengersLinksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
78
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScShareMessengersLinksComponent, isStandalone: true, selector: "sc-share-messengers-links", inputs: { phone: { classPropertyName: "phone", publicName: "phone", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (isValidPhoneNumberForMessenger(phone())) {\n @let phoneNumber = phone() | scPhoneFormat: 'cleanWithPlus';\n\n <button\n tuiIconButton\n type=\"button\"\n appearance=\"mono\"\n iconStart=\"@tui.sc.telegram\"\n title=\"Telegram\"\n aria-label=\"Telegram\"\n [size]=\"size()\"\n (click)=\"openShareWindow('https://t.me/' + phoneNumber, 'telegram')\"\n ></button>\n}\n", dependencies: [{ kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "pipe", type: ScPhoneFormatPipe, name: "scPhoneFormat" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
79
+ }
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScShareMessengersLinksComponent, decorators: [{
81
+ type: Component,
82
+ args: [{ standalone: true, selector: 'sc-share-messengers-links', imports: [TuiButton, ScPhoneFormatPipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (isValidPhoneNumberForMessenger(phone())) {\n @let phoneNumber = phone() | scPhoneFormat: 'cleanWithPlus';\n\n <button\n tuiIconButton\n type=\"button\"\n appearance=\"mono\"\n iconStart=\"@tui.sc.telegram\"\n title=\"Telegram\"\n aria-label=\"Telegram\"\n [size]=\"size()\"\n (click)=\"openShareWindow('https://t.me/' + phoneNumber, 'telegram')\"\n ></button>\n}\n" }]
83
+ }] });
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc2hhcmUtbWVzc2VuZ2Vycy1saW5rcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvc2hhcmUvc2hhcmUtbWVzc2VuZ2Vycy1saW5rcy9zYy1zaGFyZS1tZXNzZW5nZXJzLWxpbmtzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9zaGFyZS9zaGFyZS1tZXNzZW5nZXJzLWxpbmtzL3NjLXNoYXJlLW1lc3NlbmdlcnMtbGlua3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsc0JBQXNCLEVBQXVCLGNBQWMsRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25KLE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUV2RDs7OztHQUlHO0FBUUgsTUFBTSxPQUFPLCtCQUErQjtJQVA1QztRQVFJOztXQUVHO1FBQ2EsVUFBSyxHQUF3QixLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFFdEU7O1dBRUc7UUFDYSxTQUFJLEdBQTJCLEtBQUssQ0FBWSxHQUFHLENBQUMsQ0FBQztRQUVyRTs7V0FFRztRQUNjLHVCQUFrQixHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUV6Rjs7V0FFRztRQUNjLFdBQU0sR0FBVyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFcEQ7O1dBRUc7UUFDYyxhQUFRLEdBQXdCLE1BQU0sQ0FBc0Isc0JBQXNCLENBQUMsQ0FBQztRQUVyRzs7V0FFRztRQUNjLFdBQU0sR0FBcUIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7S0F1Q3hFO0lBckNHOzs7OztPQUtHO0lBQ08sZUFBZSxDQUFDLFNBQWlCLEVBQUUsV0FBbUI7UUFDNUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDO1lBQ3pDLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxVQUFVO1lBQ3pDLE1BQU0sRUFBRTtnQkFDSixlQUFlLEVBQUUsV0FBVztnQkFDNUIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUU7YUFDdEI7U0FDSixDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsTUFBTTtpQkFDTixJQUFJLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFO2dCQUN0RCxJQUFJLEVBQUUsR0FBRztnQkFDVCxLQUFLLEVBQUUsV0FBVztnQkFDbEIsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRTthQUM5QixDQUFDO2lCQUNELFNBQVMsRUFBRSxDQUFDO1FBQ3JCLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSx5Q0FBeUMsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGtEQUFrRDtJQUN4Qyw4QkFBOEIsQ0FBQyxLQUFhO1FBQ2xELE9BQU8sY0FBYyxDQUFDLDhCQUE4QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLENBQUM7K0dBbkVRLCtCQUErQjttR0FBL0IsK0JBQStCLDZVQ3JCNUMsb2JBY0EsNENESWMsU0FBUywrSEFBRSxpQkFBaUI7OzRGQUc3QiwrQkFBK0I7a0JBUDNDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLDJCQUEyQixXQUU1QixDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxtQkFDdEIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgaW5wdXQsIElucHV0U2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXQV9XSU5ET1cgfSBmcm9tICdAbmctd2ViLWFwaXMvY29tbW9uJztcbmltcG9ydCB7IElTX1JVTk5JTkdfT05fVEVSTUlOQUwsIFNjSVRlcm1pbmFsUHJvdmlkZXIsIFNjUGhvbmVTZXJ2aWNlLCBTY1VzZXJNZXRyaWthR29hbHNFbnVtLCBTY1VzZXJNZXRyaWthU2VydmljZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVHVpQnV0dG9uLCBUdWlEaWFsb2dTZXJ2aWNlLCBUdWlTaXplWFMgfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBQb2x5bW9ycGhldXNDb21wb25lbnQgfSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcblxuaW1wb3J0IHsgU2NQaG9uZUZvcm1hdFBpcGUgfSBmcm9tICcuLi8uLi9waXBlcyc7XG5pbXBvcnQgeyBTY1FSQ29kZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3FyY29kZSc7XG5cbi8qKlxuICog0KHRgdGL0LvQutC4INC90LAg0LzQtdGB0YHQtdC90LTQttC10YDRiyDQutC+0L3RgtCw0LrRgtCwINC/0L4g0L3QvtC80LXRgNGDINGC0LXQu9C10YTQvtC90LAuXG4gKlxuICog0J3QsCDRgtC10YDQvNC40L3QsNC70LUg0LLQvNC10YHRgtC+INC/0LXRgNC10YXQvtC00LAg0LIg0LzQtdGB0YHQtdC90LTQttC10YAg0L7RgtC+0LHRgNCw0LbQsNC10YLRgdGPIFFSLdC60L7QtCDRgdGB0YvQu9C60LguXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdzYy1zaGFyZS1tZXNzZW5nZXJzLWxpbmtzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2Mtc2hhcmUtbWVzc2VuZ2Vycy1saW5rcy5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1R1aUJ1dHRvbiwgU2NQaG9uZUZvcm1hdFBpcGVdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY1NoYXJlTWVzc2VuZ2Vyc0xpbmtzQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgSW5wdXRTaWduYWx9INGC0LXQu9C10YTQvtC90LAg0LrQvtC90YLQsNC60YLQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgcGhvbmU6IElucHV0U2lnbmFsPHN0cmluZz4gPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgSW5wdXRTaWduYWx9INGA0LDQt9C80LXRgNCwINC60L3QvtC/0L7Qui5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgc2l6ZTogSW5wdXRTaWduYWw8VHVpU2l6ZVhTPiA9IGlucHV0PFR1aVNpemVYUz4oJ3MnKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YHQsdC+0YDQsCDQvNC10YLRgNC40Log0L4g0LTQtdC50YHRgtCy0LjRj9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlck1ldHJpa2FTZXJ2aWNlOiBTY1VzZXJNZXRyaWthU2VydmljZSA9IGluamVjdChTY1VzZXJNZXRyaWthU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0L3QsCDQvtCx0YrQtdC60YIg0L7QutC90LAg0LHRgNCw0YPQt9C10YDQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdzogV2luZG93ID0gaW5qZWN0KFdBX1dJTkRPVyk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0L7QstCw0LnQtNC10YAg0LTQsNC90L3Ri9GFINC+INGC0LXRgNC80LjQvdCw0LvQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlcm1pbmFsOiBTY0lUZXJtaW5hbFByb3ZpZGVyID0gaW5qZWN0PFNjSVRlcm1pbmFsUHJvdmlkZXI+KElTX1JVTk5JTkdfT05fVEVSTUlOQUwpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0LTQuNCw0LvQvtCz0L7QstGL0LzQuCDQvtC60L3QsNC80LguXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IFR1aURpYWxvZ1NlcnZpY2UgPSBpbmplY3QoVHVpRGlhbG9nU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQntGC0LrRgNGL0LLQsNC10YIg0L7QutC90L4g0L/QtdGA0LXRhdC+0LTQsCDQsiDQvNC10YHRgdC10L3QtNC20LXRgC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzaGFyZUxpbmsg0KHRgdGL0LvQutCwINC/0LXRgNC10YXQvtC00LAg0LIg0LzQtdGB0YHQtdC90LTQttC10YAuXG4gICAgICogQHBhcmFtIHNvY2lhbE1lZGlhIFNsdWcg0LzQtdGB0YHQtdC90LTQttC10YDQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb3BlblNoYXJlV2luZG93KHNoYXJlTGluazogc3RyaW5nLCBzb2NpYWxNZWRpYTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5zaGFyZUNsaWNrLFxuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgc2hhcmVfbGlua19uYW1lOiBzb2NpYWxNZWRpYSxcbiAgICAgICAgICAgICAgICBwaG9uZTogdGhpcy5waG9uZSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMudGVybWluYWwuaXNSdW5uaW5nT25UZXJtaW5hbCkge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dcbiAgICAgICAgICAgICAgICAub3BlbihuZXcgUG9seW1vcnBoZXVzQ29tcG9uZW50KFNjUVJDb2RlRGlhbG9nQ29tcG9uZW50KSwge1xuICAgICAgICAgICAgICAgICAgICBzaXplOiAncycsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBzb2NpYWxNZWRpYSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogeyBxcmRhdGE6IHNoYXJlTGluayB9LFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy53aW5kb3cub3BlbihzaGFyZUxpbmssICdzaGFyZXInLCAnc3RhdHVzPTAsdG9vbGJhcj0wLHdpZHRoPTY1MCxoZWlnaHQ9NTAwJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0L7QstC10YDRj9C10YIsINGH0YLQviDQvdC+0LzQtdGAINGC0LXQu9C10YTQvtC90LAg0L/QvtC00YXQvtC00LjRgiDQtNC70Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0LIg0LzQtdGB0YHQtdC90LTQttC10YDQsNGFLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlINCd0L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuICAgIHByb3RlY3RlZCBpc1ZhbGlkUGhvbmVOdW1iZXJGb3JNZXNzZW5nZXIodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gU2NQaG9uZVNlcnZpY2UuaXNWYWxpZFBob25lTnVtYmVyRm9yTWVzc2VuZ2VyKHZhbHVlKTtcbiAgICB9XG59XG4iLCJAaWYgKGlzVmFsaWRQaG9uZU51bWJlckZvck1lc3NlbmdlcihwaG9uZSgpKSkge1xuICAgIEBsZXQgcGhvbmVOdW1iZXIgPSBwaG9uZSgpIHwgc2NQaG9uZUZvcm1hdDogJ2NsZWFuV2l0aFBsdXMnO1xuXG4gICAgPGJ1dHRvblxuICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBhcHBlYXJhbmNlPVwibW9ub1wiXG4gICAgICAgIGljb25TdGFydD1cIkB0dWkuc2MudGVsZWdyYW1cIlxuICAgICAgICB0aXRsZT1cIlRlbGVncmFtXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIlRlbGVncmFtXCJcbiAgICAgICAgW3NpemVdPVwic2l6ZSgpXCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5TaGFyZVdpbmRvdygnaHR0cHM6Ly90Lm1lLycgKyBwaG9uZU51bWJlciwgJ3RlbGVncmFtJylcIlxuICAgID48L2J1dHRvbj5cbn1cbiJdfQ==