@osovitny/anatoly 3.17.4 → 3.17.5

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.
@@ -21,8 +21,7 @@
21
21
  import { Injectable, Output, EventEmitter } from '@angular/core';
22
22
  //date-fns
23
23
  import { format, formatDistanceToNow, formatDistance } from 'date-fns';
24
- import { utcToZonedTime } from 'date-fns-tz';
25
- // VadimOS: IE11-fix. DON'T change next imports!
24
+ // VadimOS: DON'T change next imports!
26
25
  // Reason: https://github.com/date-fns/date-fns/issues/666
27
26
  import enUS from 'date-fns/locale/en-US';
28
27
  //App
@@ -30,6 +29,7 @@ import { Subs } from '../subs';
30
29
  import { dateFormats, dateTimeFormats } from '../consts/settings';
31
30
  import { DateConvert } from '../converts/dateConvert';
32
31
  import { is } from '../is';
32
+ import { utcToZonedTime } from './tz/utcToZonedTime';
33
33
  import * as i0 from "@angular/core";
34
34
  import * as i1 from "@ngx-translate/core";
35
35
  export class LocalizationService {
@@ -187,4 +187,4 @@ export class LocalizationService {
187
187
  }], () => [{ type: i1.TranslateService }], { langchange: [{
188
188
  type: Output
189
189
  }] }); })();
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9sb2NhbGl6YXRpb24vbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWtCRTtBQUVGLE1BQU07QUFDTixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFHNUUsVUFBVTtBQUNWLE9BQU8sRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0MsZ0RBQWdEO0FBQ2hELDBEQUEwRDtBQUMxRCxPQUFPLElBQUksTUFBTSx1QkFBdUIsQ0FBQztBQUV6QyxLQUFLO0FBQ0wsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMvQixPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sT0FBTyxDQUFDOzs7QUFLM0IsTUFBTSxPQUFPLG1CQUFtQjtJQVc5QixZQUFvQixTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQVZ2QyxTQUFJLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUdoQyxNQUFNO1FBQ0UsdUJBQWtCLEdBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdDLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBRS9CLFNBQVM7UUFDQyxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHM0QsSUFB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LE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQ0QsOEVBQThFO0lBRTlFLGdGQUFnRjtJQUNoRiwyQkFBMkIsQ0FBQyxZQUFvQixFQUFFLGNBQXNCO1FBQ3RFLElBQUksU0FBUyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakQsSUFBSSxXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVyRCxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzdELE9BQU8sY0FBYyxDQUFDO1FBQ3hCLENBQUM7UUFFRCxPQUFPLGNBQWMsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsZ0NBQWdDLENBQUMsS0FBYTtRQUM1QyxJQUFJLElBQUksR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sY0FBYyxDQUFDO1FBQ3hCLENBQUM7UUFFRCxPQUFPLG1CQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkQsQ0FBQztvRkF2TFUsbUJBQW1CO3VFQUFuQixtQkFBbUIsV0FBbkIsbUJBQW1CLG1CQUZsQixNQUFNOztpRkFFUCxtQkFBbUI7Y0FIL0IsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CO2lEQVVXLFVBQVU7a0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMDUgTWF5IDIwMjBcclxuXHJcbiAgU291cmNlOlxyXG4gICAgaHR0cHM6Ly9kYXRlLWZucy5vcmcvdjMuMy4xL2RvY3MvZm9ybWF0RGlzdGFuY2VcclxuICAgIGh0dHBzOi8vZGF0ZS1mbnMub3JnL3YzLjMuMS9kb2NzL2Zvcm1hdERpc3RhbmNlVG9Ob3dcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG4vL05vZGVcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlLCBMYW5nQ2hhbmdlRXZlbnQgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbi8vZGF0ZS1mbnNcclxuaW1wb3J0IHsgZm9ybWF0LCBmb3JtYXREaXN0YW5jZVRvTm93LCBmb3JtYXREaXN0YW5jZSB9IGZyb20gJ2RhdGUtZm5zJztcclxuaW1wb3J0IHsgdXRjVG9ab25lZFRpbWUgfSBmcm9tICdkYXRlLWZucy10eic7XHJcblxyXG4vLyBWYWRpbU9TOiBJRTExLWZpeC4gRE9OJ1QgY2hhbmdlIG5leHQgaW1wb3J0cyFcclxuLy8gUmVhc29uOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvaXNzdWVzLzY2NlxyXG5pbXBvcnQgZW5VUyBmcm9tICdkYXRlLWZucy9sb2NhbGUvZW4tVVMnO1xyXG5cclxuLy9BcHBcclxuaW1wb3J0IHsgU3VicyB9IGZyb20gJy4uL3N1YnMnO1xyXG5pbXBvcnQgeyBkYXRlRm9ybWF0cywgZGF0ZVRpbWVGb3JtYXRzIH0gZnJvbSAnLi4vY29uc3RzL3NldHRpbmdzJztcclxuaW1wb3J0IHsgRGF0ZUNvbnZlcnQgfSBmcm9tICcuLi9jb252ZXJ0cy9kYXRlQ29udmVydCc7XHJcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi4vaXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9jYWxpemF0aW9uU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBzdWJzOiBTdWJzID0gbmV3IFN1YnMoKTtcclxuICBwcml2YXRlIGRhdGVGbnNMb2NhbGU6IGFueTtcclxuXHJcbiAgLy9pMTBuXHJcbiAgcHJpdmF0ZSBzdXBwb3J0ZWRMYW5ndWFnZXM6IGFueSA9IFsnZW4nLCAncnUnLCAnZXMnXTtcclxuICBwcml2YXRlIGRlZmF1bHRMYW5ndWFnZSA9ICdlbic7XHJcblxyXG4gIC8vT3V0cHV0c1xyXG4gIEBPdXRwdXQoKSBsYW5nY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuc2V0U3VwcG9ydGVkTGFuZ3VhZ2VzKHRoaXMuc3VwcG9ydGVkTGFuZ3VhZ2VzKTtcclxuICAgIHRoaXMuc2V0RGVmYXVsdExhbmd1YWdlKHRoaXMuZGVmYXVsdExhbmd1YWdlKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zdWJzLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdChzdHI6IHN0cmluZywgYXJncykge1xyXG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC97KFxcZCspfS9nLCBmdW5jdGlvbiAobWF0Y2gsIG51bWJlcikge1xyXG4gICAgICByZXR1cm4gdHlwZW9mIGFyZ3NbbnVtYmVyXSAhPSAndW5kZWZpbmVkJ1xyXG4gICAgICAgID8gYXJnc1tudW1iZXJdXHJcbiAgICAgICAgOiBtYXRjaFxyXG4gICAgICAgIDtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIGNvbmZpZ3VyZVNldHRpbmdzKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSk6IHN0cmluZyB7XHJcbiAgICAvL2kxMG5cclxuICAgIGNvbnN0IGJyb3dzZXJMYW5nID0gdHJhbnNsYXRlLmdldEJyb3dzZXJMYW5nKCk7XHJcbiAgICBjb25zdCBsYW5nID0gYnJvd3NlckxhbmcubWF0Y2goL2VufHJ1fGVzLykgPyBicm93c2VyTGFuZyA6IHRoaXMuZGVmYXVsdExhbmd1YWdlO1xyXG5cclxuICAgIC8vZGF0ZXNcclxuICAgIHRoaXMuZGF0ZUZuc0xvY2FsZSA9IHsgbG9jYWxlOiBlblVTIH07XHJcblxyXG4gICAgdGhpcy5zdWJzLnNpbmsgPSB0aGlzLnRyYW5zbGF0ZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudDogTGFuZ0NoYW5nZUV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdMYW5ndWFnZSBDaGFuZ2VkJyk7XHJcbiAgICAgIHRoaXMubGFuZ2NoYW5nZS5lbWl0KGV2ZW50LmxhbmcpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGxhbmc7XHJcbiAgfVxyXG5cclxuICAvL0xhbmd1YWdlc1xyXG4gIHNldFN1cHBvcnRlZExhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5hZGRMYW5ncyhsYW5ndWFnZXMpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdExhbmd1YWdlKGxhbmc6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFuc2xhdGUuc2V0RGVmYXVsdExhbmcobGFuZyk7XHJcbiAgfVxyXG5cclxuICBzZXRMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS51c2UobGFuZ3VhZ2UpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QnJvd3Nlckxhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuZ2V0QnJvd3NlckxhbmcoKTtcclxuICB9XHJcblxyXG4gIC8vRGF0ZXNcclxuICBnZXREYXRlZm5zTG9jYWxlKCk6IGFueSB7XHJcbiAgICBsZXQgZGZuTG9jYWxlOiBhbnk7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLmdldEJyb3dzZXJMYW5ndWFnZSgpKSB7XHJcbiAgICAgIGNhc2UgJ2VuJzpcclxuICAgICAgICBkZm5Mb2NhbGUgPSB7IGxvY2FsZTogZW5VUyB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBkZm5Mb2NhbGUgPSB7IGxvY2FsZTogZW5VUyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZm5Mb2NhbGU7XHJcbiAgfVxyXG5cclxuICAvL2dldExvY2FsaXplZFxyXG4gIGdldExvY2FsaXplZFZhbHVlKGtleTogc3RyaW5nLCBwYXJhbXM/OiBhbnlbXSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoa2V5KTtcclxuXHJcbiAgICBpZiAoIXBhcmFtcyB8fCBwYXJhbXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5mb3JtYXQodmFsdWUsIHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBnZXRMb2NhbGl6ZWREYXRlKHZhbHVlKTogc3RyaW5nIHtcclxuICAgIGxldCBkYXRlID0gRGF0ZUNvbnZlcnQudG9EYXRlKHZhbHVlKTtcclxuICAgIGlmIChpcy5kYXRlSW52YWxpZChkYXRlKSkge1xyXG4gICAgICByZXR1cm4gXCJJbnZhbGlkIERhdGVcIjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ybWF0KGRhdGUsIGRhdGVGb3JtYXRzLm1lZGl1bSwgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICB9XHJcblxyXG4gIGdldExvY2FsaXplZERhdGVUaW1lKHZhbHVlKTogc3RyaW5nIHtcclxuICAgIGxldCBkYXRlID0gRGF0ZUNvbnZlcnQudG9EYXRlKHZhbHVlKTtcclxuICAgIGlmIChpcy5kYXRlSW52YWxpZChkYXRlKSkge1xyXG4gICAgICByZXR1cm4gXCJJbnZhbGlkIERhdGVcIjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ybWF0KGRhdGUsIGRhdGVUaW1lRm9ybWF0cy5tZWRpdW0sIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgfVxyXG5cclxuICAvL1VUQyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1CRUdJTlxyXG4gIGdldFVUQ1RvTG9jYWxpemVkRGF0ZSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2FmZVV0Y1RvWm9uZWRUaW1lKHZhbHVlLCBkYXRlRm9ybWF0cy5tZWRpdW0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VVRDVG9Mb2NhbGl6ZWREYXRlVGltZSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2FmZVV0Y1RvWm9uZWRUaW1lKHZhbHVlLCBkYXRlVGltZUZvcm1hdHMubWVkaXVtKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2FmZVV0Y1RvWm9uZWRUaW1lKGRhdGUsIGNvbnZlcnNpb25Gb3JtYXQgPSBudWxsKTogc3RyaW5nIHtcclxuICAgIGlmICghZGF0ZSl7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCByZXN1bHQgPSBkYXRlO1xyXG5cclxuICAgIHRyeVxyXG4gICAge1xyXG4gICAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgaWYgKGRhdGUuaW5kZXhPZihcIlRcIikgPiAtMSkge1xyXG4gICAgICAgICAgZGF0ZSA9IGRhdGUucmVwbGFjZShcIlRcIiwgXCIgXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRhdGUuaW5kZXhPZihcIlpcIikgPT0gLTEpIHtcclxuICAgICAgICAgIGRhdGUgPSBkYXRlICsgXCJaXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgYnJvd3NlclRpbWVab25lID0gSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xyXG5cclxuICAgICAgaWYgKGJyb3dzZXJUaW1lWm9uZSkge1xyXG4gICAgICAgIGlmIChjb252ZXJzaW9uRm9ybWF0KSB7XHJcbiAgICAgICAgICByZXN1bHQgPSB1dGNUb1pvbmVkVGltZShkYXRlLCBicm93c2VyVGltZVpvbmUpO1xyXG4gICAgICAgICAgcmVzdWx0ID0gZm9ybWF0KHJlc3VsdCwgY29udmVyc2lvbkZvcm1hdCwgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICByZXN1bHQgPSB1dGNUb1pvbmVkVGltZShkYXRlLCBicm93c2VyVGltZVpvbmUpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChjb252ZXJzaW9uRm9ybWF0KSB7XHJcbiAgICAgICAgICByZXN1bHQgPSBmb3JtYXQobmV3IERhdGUoZGF0ZSksIGNvbnZlcnNpb25Gb3JtYXQsIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgcmVzdWx0ID0gbmV3IERhdGUoZGF0ZSkudG9TdHJpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoXHJcbiAgICB7XHJcbiAgICAgIHJlc3VsdCA9IFwiSW52YWxpZCBEYXRlXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbiAgLy9VVEMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRU5EXHJcblxyXG4gIC8vRGlzdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUJFR0lOXHJcbiAgZ2V0TG9jYWxpemVkRGlzdGFuY2VJbldvcmRzKGVuZGVkRGF0ZVN0cjogc3RyaW5nLCBzdGFydGVkRGF0ZVN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBlbmRlZERhdGUgPSBEYXRlQ29udmVydC50b0RhdGUoZW5kZWREYXRlU3RyKTtcclxuICAgIGxldCBzdGFydGVkRGF0ZSA9IERhdGVDb252ZXJ0LnRvRGF0ZShzdGFydGVkRGF0ZVN0cik7XHJcblxyXG4gICAgaWYgKGlzLmRhdGVJbnZhbGlkKGVuZGVkRGF0ZSkgfHwgaXMuZGF0ZUludmFsaWQoc3RhcnRlZERhdGUpKSB7XHJcbiAgICAgIHJldHVybiBcIkludmFsaWQgRGF0ZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmb3JtYXREaXN0YW5jZShlbmRlZERhdGUsIHN0YXJ0ZWREYXRlLCB0aGlzLmRhdGVGbnNMb2NhbGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9jYWxpemVkRGlzdGFuY2VUb05vd0luV29yZHModmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgZGF0ZSA9IERhdGVDb252ZXJ0LnRvRGF0ZSh2YWx1ZSk7XHJcbiAgICBpZiAoaXMuZGF0ZUludmFsaWQoZGF0ZSkpIHtcclxuICAgICAgcmV0dXJuIFwiSW52YWxpZCBEYXRlXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZvcm1hdERpc3RhbmNlVG9Ob3coZGF0ZSwgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICB9XHJcbiAgLy9EaXN0YW5jZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRU5EXHJcbn1cclxuXHJcbiJdfQ==
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9sb2NhbGl6YXRpb24vbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWtCRTtBQUVGLE1BQU07QUFDTixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFHNUUsVUFBVTtBQUNWLE9BQU8sRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXZFLHNDQUFzQztBQUN0QywwREFBMEQ7QUFDMUQsT0FBTyxJQUFJLE1BQU0sdUJBQXVCLENBQUM7QUFFekMsS0FBSztBQUNMLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUtyRCxNQUFNLE9BQU8sbUJBQW1CO0lBVzlCLFlBQW9CLFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBVnZDLFNBQUksR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1FBR2hDLE1BQU07UUFDRSx1QkFBa0IsR0FBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0Msb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFFL0IsU0FBUztRQUNDLGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUczRCxJ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QU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDRCw4RUFBOEU7SUFFOUUsZ0ZBQWdGO0lBQ2hGLDJCQUEyQixDQUFDLFlBQW9CLEVBQUUsY0FBc0I7UUFDdEUsSUFBSSxTQUFTLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqRCxJQUFJLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXJELElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDN0QsT0FBTyxjQUFjLENBQUM7UUFDeEIsQ0FBQztRQUVELE9BQU8sY0FBYyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxnQ0FBZ0MsQ0FBQyxLQUFhO1FBQzVDLElBQUksSUFBSSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDekIsT0FBTyxjQUFjLENBQUM7UUFDeEIsQ0FBQztRQUVELE9BQU8sbUJBQW1CLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2RCxDQUFDO29GQXZMVSxtQkFBbUI7dUVBQW5CLG1CQUFtQixXQUFuQixtQkFBbUIsbUJBRmxCLE1BQU07O2lGQUVQLG1CQUFtQjtjQUgvQixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7aURBVVcsVUFBVTtrQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbjxmaWxlPlxyXG4gIFByb2plY3Q6XHJcbiAgICBAb3Nvdml0bnkvYW5hdG9seVxyXG5cclxuICBBdXRob3JzOlxyXG4gICAgVmFkaW0gT3Nvdml0bnkgdmFkaW1Ab3Nvdml0bnkuY29tXHJcbiAgICBBbmF0b2x5IE9zb3ZpdG55IGFuYXRvbHlAb3Nvdml0bnkuY29tXHJcblxyXG4gIENyZWF0ZWQ6XHJcbiAgICAwNSBNYXkgMjAyMFxyXG5cclxuICBTb3VyY2U6XHJcbiAgICBodHRwczovL2RhdGUtZm5zLm9yZy92My4zLjEvZG9jcy9mb3JtYXREaXN0YW5jZVxyXG4gICAgaHR0cHM6Ly9kYXRlLWZucy5vcmcvdjMuMy4xL2RvY3MvZm9ybWF0RGlzdGFuY2VUb05vd1xyXG5cclxuICBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiBPc292aXRueSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbi8vTm9kZVxyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UsIExhbmdDaGFuZ2VFdmVudCB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuLy9kYXRlLWZuc1xyXG5pbXBvcnQgeyBmb3JtYXQsIGZvcm1hdERpc3RhbmNlVG9Ob3csIGZvcm1hdERpc3RhbmNlIH0gZnJvbSAnZGF0ZS1mbnMnO1xyXG5cclxuLy8gVmFkaW1PUzogRE9OJ1QgY2hhbmdlIG5leHQgaW1wb3J0cyFcclxuLy8gUmVhc29uOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvaXNzdWVzLzY2NlxyXG5pbXBvcnQgZW5VUyBmcm9tICdkYXRlLWZucy9sb2NhbGUvZW4tVVMnO1xyXG5cclxuLy9BcHBcclxuaW1wb3J0IHsgU3VicyB9IGZyb20gJy4uL3N1YnMnO1xyXG5pbXBvcnQgeyBkYXRlRm9ybWF0cywgZGF0ZVRpbWVGb3JtYXRzIH0gZnJvbSAnLi4vY29uc3RzL3NldHRpbmdzJztcclxuaW1wb3J0IHsgRGF0ZUNvbnZlcnQgfSBmcm9tICcuLi9jb252ZXJ0cy9kYXRlQ29udmVydCc7XHJcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi4vaXMnO1xyXG5pbXBvcnQgeyB1dGNUb1pvbmVkVGltZSB9IGZyb20gJy4vdHovdXRjVG9ab25lZFRpbWUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9jYWxpemF0aW9uU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBzdWJzOiBTdWJzID0gbmV3IFN1YnMoKTtcclxuICBwcml2YXRlIGRhdGVGbnNMb2NhbGU6IGFueTtcclxuXHJcbiAgLy9pMTBuXHJcbiAgcHJpdmF0ZSBzdXBwb3J0ZWRMYW5ndWFnZXM6IGFueSA9IFsnZW4nLCAncnUnLCAnZXMnXTtcclxuICBwcml2YXRlIGRlZmF1bHRMYW5ndWFnZSA9ICdlbic7XHJcblxyXG4gIC8vT3V0cHV0c1xyXG4gIEBPdXRwdXQoKSBsYW5nY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuc2V0U3VwcG9ydGVkTGFuZ3VhZ2VzKHRoaXMuc3VwcG9ydGVkTGFuZ3VhZ2VzKTtcclxuICAgIHRoaXMuc2V0RGVmYXVsdExhbmd1YWdlKHRoaXMuZGVmYXVsdExhbmd1YWdlKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zdWJzLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdChzdHI6IHN0cmluZywgYXJncykge1xyXG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC97KFxcZCspfS9nLCBmdW5jdGlvbiAobWF0Y2gsIG51bWJlcikge1xyXG4gICAgICByZXR1cm4gdHlwZW9mIGFyZ3NbbnVtYmVyXSAhPSAndW5kZWZpbmVkJ1xyXG4gICAgICAgID8gYXJnc1tudW1iZXJdXHJcbiAgICAgICAgOiBtYXRjaFxyXG4gICAgICAgIDtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIGNvbmZpZ3VyZVNldHRpbmdzKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSk6IHN0cmluZyB7XHJcbiAgICAvL2kxMG5cclxuICAgIGNvbnN0IGJyb3dzZXJMYW5nID0gdHJhbnNsYXRlLmdldEJyb3dzZXJMYW5nKCk7XHJcbiAgICBjb25zdCBsYW5nID0gYnJvd3NlckxhbmcubWF0Y2goL2VufHJ1fGVzLykgPyBicm93c2VyTGFuZyA6IHRoaXMuZGVmYXVsdExhbmd1YWdlO1xyXG5cclxuICAgIC8vZGF0ZXNcclxuICAgIHRoaXMuZGF0ZUZuc0xvY2FsZSA9IHsgbG9jYWxlOiBlblVTIH07XHJcblxyXG4gICAgdGhpcy5zdWJzLnNpbmsgPSB0aGlzLnRyYW5zbGF0ZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudDogTGFuZ0NoYW5nZUV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdMYW5ndWFnZSBDaGFuZ2VkJyk7XHJcbiAgICAgIHRoaXMubGFuZ2NoYW5nZS5lbWl0KGV2ZW50LmxhbmcpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGxhbmc7XHJcbiAgfVxyXG5cclxuICAvL0xhbmd1YWdlc1xyXG4gIHNldFN1cHBvcnRlZExhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5hZGRMYW5ncyhsYW5ndWFnZXMpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdExhbmd1YWdlKGxhbmc6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFuc2xhdGUuc2V0RGVmYXVsdExhbmcobGFuZyk7XHJcbiAgfVxyXG5cclxuICBzZXRMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS51c2UobGFuZ3VhZ2UpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QnJvd3Nlckxhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuZ2V0QnJvd3NlckxhbmcoKTtcclxuICB9XHJcblxyXG4gIC8vRGF0ZXNcclxuICBnZXREYXRlZm5zTG9jYWxlKCk6IGFueSB7XHJcbiAgICBsZXQgZGZuTG9jYWxlOiBhbnk7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLmdldEJyb3dzZXJMYW5ndWFnZSgpKSB7XHJcbiAgICAgIGNhc2UgJ2VuJzpcclxuICAgICAgICBkZm5Mb2NhbGUgPSB7IGxvY2FsZTogZW5VUyB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBkZm5Mb2NhbGUgPSB7IGxvY2FsZTogZW5VUyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZm5Mb2NhbGU7XHJcbiAgfVxyXG5cclxuICAvL2dldExvY2FsaXplZFxyXG4gIGdldExvY2FsaXplZFZhbHVlKGtleTogc3RyaW5nLCBwYXJhbXM/OiBhbnlbXSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoa2V5KTtcclxuXHJcbiAgICBpZiAoIXBhcmFtcyB8fCBwYXJhbXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5mb3JtYXQodmFsdWUsIHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBnZXRMb2NhbGl6ZWREYXRlKHZhbHVlKTogc3RyaW5nIHtcclxuICAgIGxldCBkYXRlID0gRGF0ZUNvbnZlcnQudG9EYXRlKHZhbHVlKTtcclxuICAgIGlmIChpcy5kYXRlSW52YWxpZChkYXRlKSkge1xyXG4gICAgICByZXR1cm4gXCJJbnZhbGlkIERhdGVcIjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ybWF0KGRhdGUsIGRhdGVGb3JtYXRzLm1lZGl1bSwgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICB9XHJcblxyXG4gIGdldExvY2FsaXplZERhdGVUaW1lKHZhbHVlKTogc3RyaW5nIHtcclxuICAgIGxldCBkYXRlID0gRGF0ZUNvbnZlcnQudG9EYXRlKHZhbHVlKTtcclxuICAgIGlmIChpcy5kYXRlSW52YWxpZChkYXRlKSkge1xyXG4gICAgICByZXR1cm4gXCJJbnZhbGlkIERhdGVcIjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ybWF0KGRhdGUsIGRhdGVUaW1lRm9ybWF0cy5tZWRpdW0sIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgfVxyXG5cclxuICAvL1VUQyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1CRUdJTlxyXG4gIGdldFVUQ1RvTG9jYWxpemVkRGF0ZSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2FmZVV0Y1RvWm9uZWRUaW1lKHZhbHVlLCBkYXRlRm9ybWF0cy5tZWRpdW0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VVRDVG9Mb2NhbGl6ZWREYXRlVGltZSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2FmZVV0Y1RvWm9uZWRUaW1lKHZhbHVlLCBkYXRlVGltZUZvcm1hdHMubWVkaXVtKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2FmZVV0Y1RvWm9uZWRUaW1lKGRhdGUsIGNvbnZlcnNpb25Gb3JtYXQgPSBudWxsKTogc3RyaW5nIHtcclxuICAgIGlmICghZGF0ZSl7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCByZXN1bHQgPSBkYXRlO1xyXG5cclxuICAgIHRyeVxyXG4gICAge1xyXG4gICAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgaWYgKGRhdGUuaW5kZXhPZihcIlRcIikgPiAtMSkge1xyXG4gICAgICAgICAgZGF0ZSA9IGRhdGUucmVwbGFjZShcIlRcIiwgXCIgXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRhdGUuaW5kZXhPZihcIlpcIikgPT0gLTEpIHtcclxuICAgICAgICAgIGRhdGUgPSBkYXRlICsgXCJaXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgYnJvd3NlclRpbWVab25lID0gSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xyXG5cclxuICAgICAgaWYgKGJyb3dzZXJUaW1lWm9uZSkge1xyXG4gICAgICAgIGlmIChjb252ZXJzaW9uRm9ybWF0KSB7XHJcbiAgICAgICAgICByZXN1bHQgPSB1dGNUb1pvbmVkVGltZShkYXRlLCBicm93c2VyVGltZVpvbmUpO1xyXG4gICAgICAgICAgcmVzdWx0ID0gZm9ybWF0KHJlc3VsdCwgY29udmVyc2lvbkZvcm1hdCwgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICByZXN1bHQgPSB1dGNUb1pvbmVkVGltZShkYXRlLCBicm93c2VyVGltZVpvbmUpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChjb252ZXJzaW9uRm9ybWF0KSB7XHJcbiAgICAgICAgICByZXN1bHQgPSBmb3JtYXQobmV3IERhdGUoZGF0ZSksIGNvbnZlcnNpb25Gb3JtYXQsIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgcmVzdWx0ID0gbmV3IERhdGUoZGF0ZSkudG9TdHJpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoXHJcbiAgICB7XHJcbiAgICAgIHJlc3VsdCA9IFwiSW52YWxpZCBEYXRlXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbiAgLy9VVEMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRU5EXHJcblxyXG4gIC8vRGlzdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUJFR0lOXHJcbiAgZ2V0TG9jYWxpemVkRGlzdGFuY2VJbldvcmRzKGVuZGVkRGF0ZVN0cjogc3RyaW5nLCBzdGFydGVkRGF0ZVN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBlbmRlZERhdGUgPSBEYXRlQ29udmVydC50b0RhdGUoZW5kZWREYXRlU3RyKTtcclxuICAgIGxldCBzdGFydGVkRGF0ZSA9IERhdGVDb252ZXJ0LnRvRGF0ZShzdGFydGVkRGF0ZVN0cik7XHJcblxyXG4gICAgaWYgKGlzLmRhdGVJbnZhbGlkKGVuZGVkRGF0ZSkgfHwgaXMuZGF0ZUludmFsaWQoc3RhcnRlZERhdGUpKSB7XHJcbiAgICAgIHJldHVybiBcIkludmFsaWQgRGF0ZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmb3JtYXREaXN0YW5jZShlbmRlZERhdGUsIHN0YXJ0ZWREYXRlLCB0aGlzLmRhdGVGbnNMb2NhbGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9jYWxpemVkRGlzdGFuY2VUb05vd0luV29yZHModmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgZGF0ZSA9IERhdGVDb252ZXJ0LnRvRGF0ZSh2YWx1ZSk7XHJcbiAgICBpZiAoaXMuZGF0ZUludmFsaWQoZGF0ZSkpIHtcclxuICAgICAgcmV0dXJuIFwiSW52YWxpZCBEYXRlXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZvcm1hdERpc3RhbmNlVG9Ob3coZGF0ZSwgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICB9XHJcbiAgLy9EaXN0YW5jZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRU5EXHJcbn1cclxuXHJcbiJdfQ==
@@ -0,0 +1,122 @@
1
+ /*
2
+ <file>
3
+ Project:
4
+ @osovitny/anatoly
5
+
6
+ Authors:
7
+ Vadim Osovitny vadim@osovitny.com
8
+ Anatoly Osovitny anatoly@osovitny.com
9
+
10
+ Created:
11
+ 10 Feb 2024
12
+
13
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
14
+ </file>
15
+ */
16
+ import { tzTokenizeDate } from "./tzTokenizeDate";
17
+ export function tzParseTimezone(timezoneString, date, isUtcDate) {
18
+ var token;
19
+ var absoluteOffset;
20
+ // Empty string
21
+ if (!timezoneString) {
22
+ return 0;
23
+ }
24
+ // Z
25
+ token = patterns.timezoneZ.exec(timezoneString);
26
+ if (token) {
27
+ return 0;
28
+ }
29
+ var hours;
30
+ // ±hh
31
+ token = patterns.timezoneHH.exec(timezoneString);
32
+ if (token) {
33
+ hours = parseInt(token[1], 10);
34
+ if (!validateTimezone(hours)) {
35
+ return NaN;
36
+ }
37
+ return -(hours * MILLISECONDS_IN_HOUR);
38
+ }
39
+ // ±hh:mm or ±hhmm
40
+ token = patterns.timezoneHHMM.exec(timezoneString);
41
+ if (token) {
42
+ hours = parseInt(token[1], 10);
43
+ var minutes = parseInt(token[2], 10);
44
+ if (!validateTimezone(hours, minutes)) {
45
+ return NaN;
46
+ }
47
+ absoluteOffset = Math.abs(hours) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE;
48
+ return hours > 0 ? -absoluteOffset : absoluteOffset;
49
+ }
50
+ // IANA time zone
51
+ if (isValidTimezoneIANAString(timezoneString)) {
52
+ date = new Date(date || Date.now());
53
+ var utcDate = isUtcDate ? date : toUtcDate(date);
54
+ var offset = calcOffset(utcDate, timezoneString);
55
+ var fixedOffset = isUtcDate ? offset : fixOffset(date, offset, timezoneString);
56
+ return -fixedOffset;
57
+ }
58
+ return NaN;
59
+ }
60
+ var MILLISECONDS_IN_HOUR = 3600000;
61
+ var MILLISECONDS_IN_MINUTE = 60000;
62
+ var patterns = {
63
+ timezone: /([Z+-].*)$/,
64
+ timezoneZ: /^(Z)$/,
65
+ timezoneHH: /^([+-]\d{2})$/,
66
+ timezoneHHMM: /^([+-]\d{2}):?(\d{2})$/,
67
+ };
68
+ function newDateUTC(fullYear, month, day, hour, minute, second, millisecond) {
69
+ var utcDate = new Date(0);
70
+ utcDate.setUTCFullYear(fullYear, month, day);
71
+ utcDate.setUTCHours(hour, minute, second, millisecond);
72
+ return utcDate;
73
+ }
74
+ function toUtcDate(date) {
75
+ return newDateUTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());
76
+ }
77
+ function calcOffset(date, timezoneString) {
78
+ var tokens = tzTokenizeDate(date, timezoneString);
79
+ // ms dropped because it's not provided by tzTokenizeDate
80
+ var asUTC = newDateUTC(tokens[0], tokens[1] - 1, tokens[2], tokens[3] % 24, tokens[4], tokens[5], 0).getTime();
81
+ var asTS = date.getTime();
82
+ var over = asTS % 1000;
83
+ asTS -= over >= 0 ? over : 1000 + over;
84
+ return asUTC - asTS;
85
+ }
86
+ function fixOffset(date, offset, timezoneString) {
87
+ var localTS = date.getTime();
88
+ // Our UTC time is just a guess because our offset is just a guess
89
+ var utcGuess = localTS - offset;
90
+ // Test whether the zone matches the offset for this ts
91
+ var o2 = calcOffset(new Date(utcGuess), timezoneString);
92
+ // If so, offset didn't change, and we're done
93
+ if (offset === o2) {
94
+ return offset;
95
+ }
96
+ // If not, change the ts by the difference in the offset
97
+ utcGuess -= o2 - offset;
98
+ // If that gives us the local time we want, we're done
99
+ var o3 = calcOffset(new Date(utcGuess), timezoneString);
100
+ if (o2 === o3) {
101
+ return o2;
102
+ }
103
+ // If it's different, we're in a hole time. The offset has changed, but we don't adjust the time
104
+ return Math.max(o2, o3);
105
+ }
106
+ function validateTimezone(hours, minutes = null) {
107
+ return -23 <= hours && hours <= 23 && (minutes == null || (0 <= minutes && minutes <= 59));
108
+ }
109
+ var validIANATimezoneCache = {};
110
+ function isValidTimezoneIANAString(timeZoneString) {
111
+ if (validIANATimezoneCache[timeZoneString])
112
+ return true;
113
+ try {
114
+ new Intl.DateTimeFormat(undefined, { timeZone: timeZoneString });
115
+ validIANATimezoneCache[timeZoneString] = true;
116
+ return true;
117
+ }
118
+ catch (error) {
119
+ return false;
120
+ }
121
+ }
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHpQYXJzZVRpbWV6b25lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL2NvcmUvbG9jYWxpemF0aW9uL3R6L3R6UGFyc2VUaW1lem9uZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUVqRCxNQUFNLFVBQVUsZUFBZSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsU0FBUztJQUM3RCxJQUFJLEtBQUssQ0FBQTtJQUNULElBQUksY0FBYyxDQUFBO0lBRWxCLGVBQWU7SUFDZixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsT0FBTyxDQUFDLENBQUE7SUFDVixDQUFDO0lBRUQsSUFBSTtJQUNKLEtBQUssR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUMvQyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1YsT0FBTyxDQUFDLENBQUE7SUFDVixDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUE7SUFFVCxNQUFNO0lBQ04sS0FBSyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ2hELElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUU5QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLEdBQUcsQ0FBQTtRQUNaLENBQUM7UUFFRCxPQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUcsb0JBQW9CLENBQUMsQ0FBQTtJQUN4QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLEtBQUssR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUNsRCxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1YsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDOUIsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVwQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdEMsT0FBTyxHQUFHLENBQUE7UUFDWixDQUFDO1FBRUQsY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsb0JBQW9CLEdBQUcsT0FBTyxHQUFHLHNCQUFzQixDQUFBO1FBQzFGLE9BQU8sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQTtJQUNyRCxDQUFDO0lBRUQsaUJBQWlCO0lBQ2pCLElBQUkseUJBQXlCLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUM5QyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO1FBQ25DLElBQUksT0FBTyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNqRCxJQUFJLFdBQVcsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUE7UUFFOUUsT0FBTyxDQUFDLFdBQVcsQ0FBQTtJQUNyQixDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBR0QsSUFBSSxvQkFBb0IsR0FBRyxPQUFPLENBQUE7QUFDbEMsSUFBSSxzQkFBc0IsR0FBRyxLQUFLLENBQUE7QUFFbEMsSUFBSSxRQUFRLEdBQUc7SUFDYixRQUFRLEVBQUUsWUFBWTtJQUN0QixTQUFTLEVBQUUsT0FBTztJQUNsQixVQUFVLEVBQUUsZUFBZTtJQUMzQixZQUFZLEVBQUUsd0JBQXdCO0NBQ3ZDLENBQUE7QUFFRCxTQUFTLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXO0lBQ3pFLElBQUksT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3pCLE9BQU8sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUM1QyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQ3RELE9BQU8sT0FBTyxDQUFBO0FBQ2hCLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxJQUFJO0lBQ3JCLE9BQU8sVUFBVSxDQUNmLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFDbEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUNmLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFDZCxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQ2YsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUNqQixJQUFJLENBQUMsVUFBVSxFQUFFLEVBQ2pCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FDdkIsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxJQUFJLEVBQUUsY0FBYztJQUN0QyxJQUFJLE1BQU0sR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFBO0lBRWpELHlEQUF5RDtJQUN6RCxJQUFJLEtBQUssR0FBRyxVQUFVLENBQ3BCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDVCxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUNiLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDVCxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUNkLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDVCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQ1QsQ0FBQyxDQUNGLENBQUMsT0FBTyxFQUFFLENBQUE7SUFFWCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDekIsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQTtJQUN0QixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO0lBQ3RDLE9BQU8sS0FBSyxHQUFHLElBQUksQ0FBQTtBQUNyQixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxjQUFjO0lBQzdDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUU1QixrRUFBa0U7SUFDbEUsSUFBSSxRQUFRLEdBQUcsT0FBTyxHQUFHLE1BQU0sQ0FBQTtJQUUvQix1REFBdUQ7SUFDdkQsSUFBSSxFQUFFLEdBQUcsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFBO0lBRXZELDhDQUE4QztJQUM5QyxJQUFJLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNsQixPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFRCx3REFBd0Q7SUFDeEQsUUFBUSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUE7SUFFdkIsc0RBQXNEO0lBQ3RELElBQUksRUFBRSxHQUFHLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUN2RCxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNkLE9BQU8sRUFBRSxDQUFBO0lBQ1gsQ0FBQztJQUVELGdHQUFnRztJQUNoRyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQ3pCLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLEtBQUssRUFBRSxPQUFPLEdBQUcsSUFBSTtJQUM3QyxPQUFPLENBQUMsRUFBRSxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxPQUFPLElBQUksT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDNUYsQ0FBQztBQUVELElBQUksc0JBQXNCLEdBQUcsRUFBRSxDQUFBO0FBQy9CLFNBQVMseUJBQXlCLENBQUMsY0FBYztJQUMvQyxJQUFJLHNCQUFzQixDQUFDLGNBQWMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFBO0lBQ3ZELElBQUksQ0FBQztRQUNILElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQTtRQUNoRSxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUE7UUFDN0MsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMTAgRmViIDIwMjRcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG5pbXBvcnQgeyB0elRva2VuaXplRGF0ZSB9IGZyb20gXCIuL3R6VG9rZW5pemVEYXRlXCJcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0elBhcnNlVGltZXpvbmUodGltZXpvbmVTdHJpbmcsIGRhdGUsIGlzVXRjRGF0ZSkge1xyXG4gIHZhciB0b2tlblxyXG4gIHZhciBhYnNvbHV0ZU9mZnNldFxyXG5cclxuICAvLyBFbXB0eSBzdHJpbmdcclxuICBpZiAoIXRpbWV6b25lU3RyaW5nKSB7XHJcbiAgICByZXR1cm4gMFxyXG4gIH1cclxuXHJcbiAgLy8gWlxyXG4gIHRva2VuID0gcGF0dGVybnMudGltZXpvbmVaLmV4ZWModGltZXpvbmVTdHJpbmcpXHJcbiAgaWYgKHRva2VuKSB7XHJcbiAgICByZXR1cm4gMFxyXG4gIH1cclxuXHJcbiAgdmFyIGhvdXJzXHJcblxyXG4gIC8vIMKxaGhcclxuICB0b2tlbiA9IHBhdHRlcm5zLnRpbWV6b25lSEguZXhlYyh0aW1lem9uZVN0cmluZylcclxuICBpZiAodG9rZW4pIHtcclxuICAgIGhvdXJzID0gcGFyc2VJbnQodG9rZW5bMV0sIDEwKVxyXG5cclxuICAgIGlmICghdmFsaWRhdGVUaW1lem9uZShob3VycykpIHtcclxuICAgICAgcmV0dXJuIE5hTlxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAtKGhvdXJzICogTUlMTElTRUNPTkRTX0lOX0hPVVIpXHJcbiAgfVxyXG5cclxuICAvLyDCsWhoOm1tIG9yIMKxaGhtbVxyXG4gIHRva2VuID0gcGF0dGVybnMudGltZXpvbmVISE1NLmV4ZWModGltZXpvbmVTdHJpbmcpXHJcbiAgaWYgKHRva2VuKSB7XHJcbiAgICBob3VycyA9IHBhcnNlSW50KHRva2VuWzFdLCAxMClcclxuICAgIHZhciBtaW51dGVzID0gcGFyc2VJbnQodG9rZW5bMl0sIDEwKVxyXG5cclxuICAgIGlmICghdmFsaWRhdGVUaW1lem9uZShob3VycywgbWludXRlcykpIHtcclxuICAgICAgcmV0dXJuIE5hTlxyXG4gICAgfVxyXG5cclxuICAgIGFic29sdXRlT2Zmc2V0ID0gTWF0aC5hYnMoaG91cnMpICogTUlMTElTRUNPTkRTX0lOX0hPVVIgKyBtaW51dGVzICogTUlMTElTRUNPTkRTX0lOX01JTlVURVxyXG4gICAgcmV0dXJuIGhvdXJzID4gMCA/IC1hYnNvbHV0ZU9mZnNldCA6IGFic29sdXRlT2Zmc2V0XHJcbiAgfVxyXG5cclxuICAvLyBJQU5BIHRpbWUgem9uZVxyXG4gIGlmIChpc1ZhbGlkVGltZXpvbmVJQU5BU3RyaW5nKHRpbWV6b25lU3RyaW5nKSkge1xyXG4gICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUgfHwgRGF0ZS5ub3coKSlcclxuICAgIHZhciB1dGNEYXRlID0gaXNVdGNEYXRlID8gZGF0ZSA6IHRvVXRjRGF0ZShkYXRlKTtcclxuICAgIHZhciBvZmZzZXQgPSBjYWxjT2Zmc2V0KHV0Y0RhdGUsIHRpbWV6b25lU3RyaW5nKTtcclxuICAgIHZhciBmaXhlZE9mZnNldCA9IGlzVXRjRGF0ZSA/IG9mZnNldCA6IGZpeE9mZnNldChkYXRlLCBvZmZzZXQsIHRpbWV6b25lU3RyaW5nKVxyXG5cclxuICAgIHJldHVybiAtZml4ZWRPZmZzZXRcclxuICB9XHJcblxyXG4gIHJldHVybiBOYU5cclxufVxyXG5cclxuXHJcbnZhciBNSUxMSVNFQ09ORFNfSU5fSE9VUiA9IDM2MDAwMDBcclxudmFyIE1JTExJU0VDT05EU19JTl9NSU5VVEUgPSA2MDAwMFxyXG5cclxudmFyIHBhdHRlcm5zID0ge1xyXG4gIHRpbWV6b25lOiAvKFtaKy1dLiopJC8sXHJcbiAgdGltZXpvbmVaOiAvXihaKSQvLFxyXG4gIHRpbWV6b25lSEg6IC9eKFsrLV1cXGR7Mn0pJC8sXHJcbiAgdGltZXpvbmVISE1NOiAvXihbKy1dXFxkezJ9KTo/KFxcZHsyfSkkLyxcclxufVxyXG5cclxuZnVuY3Rpb24gbmV3RGF0ZVVUQyhmdWxsWWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kKSB7XHJcbiAgdmFyIHV0Y0RhdGUgPSBuZXcgRGF0ZSgwKVxyXG4gIHV0Y0RhdGUuc2V0VVRDRnVsbFllYXIoZnVsbFllYXIsIG1vbnRoLCBkYXkpXHJcbiAgdXRjRGF0ZS5zZXRVVENIb3Vycyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQpXHJcbiAgcmV0dXJuIHV0Y0RhdGVcclxufVxyXG5cclxuZnVuY3Rpb24gdG9VdGNEYXRlKGRhdGUpIHtcclxuICByZXR1cm4gbmV3RGF0ZVVUQyhcclxuICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgIGRhdGUuZ2V0TW9udGgoKSxcclxuICAgIGRhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgZGF0ZS5nZXRIb3VycygpLFxyXG4gICAgZGF0ZS5nZXRNaW51dGVzKCksXHJcbiAgICBkYXRlLmdldFNlY29uZHMoKSxcclxuICAgIGRhdGUuZ2V0TWlsbGlzZWNvbmRzKClcclxuICApXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhbGNPZmZzZXQoZGF0ZSwgdGltZXpvbmVTdHJpbmcpIHtcclxuICB2YXIgdG9rZW5zID0gdHpUb2tlbml6ZURhdGUoZGF0ZSwgdGltZXpvbmVTdHJpbmcpXHJcblxyXG4gIC8vIG1zIGRyb3BwZWQgYmVjYXVzZSBpdCdzIG5vdCBwcm92aWRlZCBieSB0elRva2VuaXplRGF0ZVxyXG4gIHZhciBhc1VUQyA9IG5ld0RhdGVVVEMoXHJcbiAgICB0b2tlbnNbMF0sXHJcbiAgICB0b2tlbnNbMV0gLSAxLFxyXG4gICAgdG9rZW5zWzJdLFxyXG4gICAgdG9rZW5zWzNdICUgMjQsXHJcbiAgICB0b2tlbnNbNF0sXHJcbiAgICB0b2tlbnNbNV0sXHJcbiAgICAwXHJcbiAgKS5nZXRUaW1lKClcclxuXHJcbiAgdmFyIGFzVFMgPSBkYXRlLmdldFRpbWUoKVxyXG4gIHZhciBvdmVyID0gYXNUUyAlIDEwMDBcclxuICBhc1RTIC09IG92ZXIgPj0gMCA/IG92ZXIgOiAxMDAwICsgb3ZlclxyXG4gIHJldHVybiBhc1VUQyAtIGFzVFNcclxufVxyXG5cclxuZnVuY3Rpb24gZml4T2Zmc2V0KGRhdGUsIG9mZnNldCwgdGltZXpvbmVTdHJpbmcpIHtcclxuICB2YXIgbG9jYWxUUyA9IGRhdGUuZ2V0VGltZSgpXHJcblxyXG4gIC8vIE91ciBVVEMgdGltZSBpcyBqdXN0IGEgZ3Vlc3MgYmVjYXVzZSBvdXIgb2Zmc2V0IGlzIGp1c3QgYSBndWVzc1xyXG4gIHZhciB1dGNHdWVzcyA9IGxvY2FsVFMgLSBvZmZzZXRcclxuXHJcbiAgLy8gVGVzdCB3aGV0aGVyIHRoZSB6b25lIG1hdGNoZXMgdGhlIG9mZnNldCBmb3IgdGhpcyB0c1xyXG4gIHZhciBvMiA9IGNhbGNPZmZzZXQobmV3IERhdGUodXRjR3Vlc3MpLCB0aW1lem9uZVN0cmluZylcclxuXHJcbiAgLy8gSWYgc28sIG9mZnNldCBkaWRuJ3QgY2hhbmdlLCBhbmQgd2UncmUgZG9uZVxyXG4gIGlmIChvZmZzZXQgPT09IG8yKSB7XHJcbiAgICByZXR1cm4gb2Zmc2V0XHJcbiAgfVxyXG5cclxuICAvLyBJZiBub3QsIGNoYW5nZSB0aGUgdHMgYnkgdGhlIGRpZmZlcmVuY2UgaW4gdGhlIG9mZnNldFxyXG4gIHV0Y0d1ZXNzIC09IG8yIC0gb2Zmc2V0XHJcblxyXG4gIC8vIElmIHRoYXQgZ2l2ZXMgdXMgdGhlIGxvY2FsIHRpbWUgd2Ugd2FudCwgd2UncmUgZG9uZVxyXG4gIHZhciBvMyA9IGNhbGNPZmZzZXQobmV3IERhdGUodXRjR3Vlc3MpLCB0aW1lem9uZVN0cmluZylcclxuICBpZiAobzIgPT09IG8zKSB7XHJcbiAgICByZXR1cm4gbzJcclxuICB9XHJcblxyXG4gIC8vIElmIGl0J3MgZGlmZmVyZW50LCB3ZSdyZSBpbiBhIGhvbGUgdGltZS4gVGhlIG9mZnNldCBoYXMgY2hhbmdlZCwgYnV0IHdlIGRvbid0IGFkanVzdCB0aGUgdGltZVxyXG4gIHJldHVybiBNYXRoLm1heChvMiwgbzMpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHZhbGlkYXRlVGltZXpvbmUoaG91cnMsIG1pbnV0ZXMgPSBudWxsKSB7XHJcbiAgcmV0dXJuIC0yMyA8PSBob3VycyAmJiBob3VycyA8PSAyMyAmJiAobWludXRlcyA9PSBudWxsIHx8ICgwIDw9IG1pbnV0ZXMgJiYgbWludXRlcyA8PSA1OSkpXHJcbn1cclxuXHJcbnZhciB2YWxpZElBTkFUaW1lem9uZUNhY2hlID0ge31cclxuZnVuY3Rpb24gaXNWYWxpZFRpbWV6b25lSUFOQVN0cmluZyh0aW1lWm9uZVN0cmluZykge1xyXG4gIGlmICh2YWxpZElBTkFUaW1lem9uZUNhY2hlW3RpbWVab25lU3RyaW5nXSkgcmV0dXJuIHRydWVcclxuICB0cnkge1xyXG4gICAgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodW5kZWZpbmVkLCB7IHRpbWVab25lOiB0aW1lWm9uZVN0cmluZyB9KVxyXG4gICAgdmFsaWRJQU5BVGltZXpvbmVDYWNoZVt0aW1lWm9uZVN0cmluZ10gPSB0cnVlXHJcbiAgICByZXR1cm4gdHJ1ZVxyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,101 @@
1
+ /*
2
+ <file>
3
+ Project:
4
+ @osovitny/anatoly
5
+
6
+ Authors:
7
+ Vadim Osovitny vadim@osovitny.com
8
+ Anatoly Osovitny anatoly@osovitny.com
9
+
10
+ Created:
11
+ 10 Feb 2024
12
+
13
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
14
+ </file>
15
+ */
16
+ /**
17
+ * Returns the [year, month, day, hour, minute, seconds] tokens of the provided
18
+ * `date` as it will be rendered in the `timeZone`.
19
+ */
20
+ export function tzTokenizeDate(date, timeZone) {
21
+ var dtf = getDateTimeFormat(timeZone);
22
+ return dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date);
23
+ }
24
+ var typeToPos = {
25
+ year: 0,
26
+ month: 1,
27
+ day: 2,
28
+ hour: 3,
29
+ minute: 4,
30
+ second: 5,
31
+ };
32
+ function partsOffset(dtf, date) {
33
+ try {
34
+ var formatted = dtf.formatToParts(date);
35
+ var filled = [];
36
+ for (var i = 0; i < formatted.length; i++) {
37
+ var pos = typeToPos[formatted[i].type];
38
+ if (pos >= 0) {
39
+ filled[pos] = parseInt(formatted[i].value, 10);
40
+ }
41
+ }
42
+ return filled;
43
+ }
44
+ catch (error) {
45
+ if (error instanceof RangeError) {
46
+ return [NaN];
47
+ }
48
+ throw error;
49
+ }
50
+ }
51
+ function hackyOffset(dtf, date) {
52
+ var formatted = dtf.format(date).replace(/\u200E/g, '');
53
+ var parsed = /(\d+)\/(\d+)\/(\d+),? (\d+):(\d+):(\d+)/.exec(formatted);
54
+ // var [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed
55
+ // return [fYear, fMonth, fDay, fHour, fMinute, fSecond]
56
+ return [parsed[3], parsed[1], parsed[2], parsed[4], parsed[5], parsed[6]];
57
+ }
58
+ // Get a cached Intl.DateTimeFormat instance for the IANA `timeZone`. This can be used
59
+ // to get deterministic local date/time output according to the `en-US` locale which
60
+ // can be used to extract local time parts as necessary.
61
+ var dtfCache = {};
62
+ function getDateTimeFormat(timeZone) {
63
+ if (!dtfCache[timeZone]) {
64
+ // New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12`
65
+ var testDateFormatted = new Intl.DateTimeFormat('en-US', {
66
+ hour12: false,
67
+ timeZone: 'America/New_York',
68
+ year: 'numeric',
69
+ month: 'numeric',
70
+ day: '2-digit',
71
+ hour: '2-digit',
72
+ minute: '2-digit',
73
+ second: '2-digit',
74
+ }).format(new Date('2014-06-25T04:00:00.123Z'));
75
+ var hourCycleSupported = testDateFormatted === '06/25/2014, 00:00:00' ||
76
+ testDateFormatted === '06/25/2014 00:00:00';
77
+ dtfCache[timeZone] = hourCycleSupported
78
+ ? new Intl.DateTimeFormat('en-US', {
79
+ hour12: false,
80
+ timeZone: timeZone,
81
+ year: 'numeric',
82
+ month: 'numeric',
83
+ day: '2-digit',
84
+ hour: '2-digit',
85
+ minute: '2-digit',
86
+ second: '2-digit',
87
+ })
88
+ : new Intl.DateTimeFormat('en-US', {
89
+ hourCycle: 'h23',
90
+ timeZone: timeZone,
91
+ year: 'numeric',
92
+ month: 'numeric',
93
+ day: '2-digit',
94
+ hour: '2-digit',
95
+ minute: '2-digit',
96
+ second: '2-digit',
97
+ });
98
+ }
99
+ return dtfCache[timeZone];
100
+ }
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHpUb2tlbml6ZURhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9sb2NhbGl6YXRpb24vdHovdHpUb2tlbml6ZURhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRO0lBQzNDLElBQUksR0FBRyxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3JDLE9BQU8sR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtBQUM1RSxDQUFDO0FBRUQsSUFBSSxTQUFTLEdBQUc7SUFDZCxJQUFJLEVBQUUsQ0FBQztJQUNQLEtBQUssRUFBRSxDQUFDO0lBQ1IsR0FBRyxFQUFFLENBQUM7SUFDTixJQUFJLEVBQUUsQ0FBQztJQUNQLE1BQU0sRUFBRSxDQUFDO0lBQ1QsTUFBTSxFQUFFLENBQUM7Q0FDVixDQUFBO0FBRUQsU0FBUyxXQUFXLENBQUMsR0FBRyxFQUFFLElBQUk7SUFDNUIsSUFBSSxDQUFDO1FBQ0gsSUFBSSxTQUFTLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN2QyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUE7UUFDZixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzFDLElBQUksR0FBRyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7WUFFdEMsSUFBSSxHQUFHLElBQUksQ0FB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ZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMTAgRmViIDIwMjRcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG4vKipcclxuICogUmV0dXJucyB0aGUgW3llYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kc10gdG9rZW5zIG9mIHRoZSBwcm92aWRlZFxyXG4gKiBgZGF0ZWAgYXMgaXQgd2lsbCBiZSByZW5kZXJlZCBpbiB0aGUgYHRpbWVab25lYC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB0elRva2VuaXplRGF0ZShkYXRlLCB0aW1lWm9uZSkge1xyXG4gIHZhciBkdGYgPSBnZXREYXRlVGltZUZvcm1hdCh0aW1lWm9uZSlcclxuICByZXR1cm4gZHRmLmZvcm1hdFRvUGFydHMgPyBwYXJ0c09mZnNldChkdGYsIGRhdGUpIDogaGFja3lPZmZzZXQoZHRmLCBkYXRlKVxyXG59XHJcblxyXG52YXIgdHlwZVRvUG9zID0ge1xyXG4gIHllYXI6IDAsXHJcbiAgbW9udGg6IDEsXHJcbiAgZGF5OiAyLFxyXG4gIGhvdXI6IDMsXHJcbiAgbWludXRlOiA0LFxyXG4gIHNlY29uZDogNSxcclxufVxyXG5cclxuZnVuY3Rpb24gcGFydHNPZmZzZXQoZHRmLCBkYXRlKSB7XHJcbiAgdHJ5IHtcclxuICAgIHZhciBmb3JtYXR0ZWQgPSBkdGYuZm9ybWF0VG9QYXJ0cyhkYXRlKVxyXG4gICAgdmFyIGZpbGxlZCA9IFtdXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcm1hdHRlZC5sZW5ndGg7IGkrKykge1xyXG4gICAgICB2YXIgcG9zID0gdHlwZVRvUG9zW2Zvcm1hdHRlZFtpXS50eXBlXVxyXG5cclxuICAgICAgaWYgKHBvcyA+PSAwKSB7XHJcbiAgICAgICAgZmlsbGVkW3Bvc10gPSBwYXJzZUludChmb3JtYXR0ZWRbaV0udmFsdWUsIDEwKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmlsbGVkXHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFJhbmdlRXJyb3IpIHtcclxuICAgICAgcmV0dXJuIFtOYU5dXHJcbiAgICB9XHJcbiAgICB0aHJvdyBlcnJvclxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaGFja3lPZmZzZXQoZHRmLCBkYXRlKSB7XHJcbiAgdmFyIGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXQoZGF0ZSkucmVwbGFjZSgvXFx1MjAwRS9nLCAnJylcclxuICB2YXIgcGFyc2VkID0gLyhcXGQrKVxcLyhcXGQrKVxcLyhcXGQrKSw/IChcXGQrKTooXFxkKyk6KFxcZCspLy5leGVjKGZvcm1hdHRlZClcclxuICAvLyB2YXIgWywgZk1vbnRoLCBmRGF5LCBmWWVhciwgZkhvdXIsIGZNaW51dGUsIGZTZWNvbmRdID0gcGFyc2VkXHJcbiAgLy8gcmV0dXJuIFtmWWVhciwgZk1vbnRoLCBmRGF5LCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF1cclxuICByZXR1cm4gW3BhcnNlZFszXSwgcGFyc2VkWzFdLCBwYXJzZWRbMl0sIHBhcnNlZFs0XSwgcGFyc2VkWzVdLCBwYXJzZWRbNl1dXHJcbn1cclxuXHJcbi8vIEdldCBhIGNhY2hlZCBJbnRsLkRhdGVUaW1lRm9ybWF0IGluc3RhbmNlIGZvciB0aGUgSUFOQSBgdGltZVpvbmVgLiBUaGlzIGNhbiBiZSB1c2VkXHJcbi8vIHRvIGdldCBkZXRlcm1pbmlzdGljIGxvY2FsIGRhdGUvdGltZSBvdXRwdXQgYWNjb3JkaW5nIHRvIHRoZSBgZW4tVVNgIGxvY2FsZSB3aGljaFxyXG4vLyBjYW4gYmUgdXNlZCB0byBleHRyYWN0IGxvY2FsIHRpbWUgcGFydHMgYXMgbmVjZXNzYXJ5LlxyXG52YXIgZHRmQ2FjaGUgPSB7fVxyXG5mdW5jdGlvbiBnZXREYXRlVGltZUZvcm1hdCh0aW1lWm9uZSkge1xyXG4gIGlmICghZHRmQ2FjaGVbdGltZVpvbmVdKSB7XHJcbiAgICAvLyBOZXcgYnJvd3NlcnMgdXNlIGBob3VyQ3ljbGVgLCBJRSBhbmQgQ2hyb21lIDw3MyBkb2VzIG5vdCBzdXBwb3J0IGl0IGFuZCB1c2VzIGBob3VyMTJgXHJcbiAgICB2YXIgdGVzdERhdGVGb3JtYXR0ZWQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZW4tVVMnLCB7XHJcbiAgICAgIGhvdXIxMjogZmFsc2UsXHJcbiAgICAgIHRpbWVab25lOiAnQW1lcmljYS9OZXdfWW9yaycsXHJcbiAgICAgIHllYXI6ICdudW1lcmljJyxcclxuICAgICAgbW9udGg6ICdudW1lcmljJyxcclxuICAgICAgZGF5OiAnMi1kaWdpdCcsXHJcbiAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcclxuICAgICAgbWludXRlOiAnMi1kaWdpdCcsXHJcbiAgICAgIHNlY29uZDogJzItZGlnaXQnLFxyXG4gICAgfSkuZm9ybWF0KG5ldyBEYXRlKCcyMDE0LTA2LTI1VDA0OjAwOjAwLjEyM1onKSlcclxuXHJcbiAgICB2YXIgaG91ckN5Y2xlU3VwcG9ydGVkID1cclxuICAgIHRlc3REYXRlRm9ybWF0dGVkID09PSAnMDYvMjUvMjAxNCwgMDA6MDA6MDAnIHx8XHJcbiAgICB0ZXN0RGF0ZUZvcm1hdHRlZCA9PT0gJzA2LzI1LzIwMTQgMDA6MDA6MDAnXHJcblxyXG4gICAgZHRmQ2FjaGVbdGltZVpvbmVdID0gaG91ckN5Y2xlU3VwcG9ydGVkXHJcbiAgICAgID8gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2VuLVVTJywge1xyXG4gICAgICAgICAgaG91cjEyOiBmYWxzZSxcclxuICAgICAgICAgIHRpbWVab25lOiB0aW1lWm9uZSxcclxuICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcclxuICAgICAgICAgIG1vbnRoOiAnbnVtZXJpYycsXHJcbiAgICAgICAgICBkYXk6ICcyLWRpZ2l0JyxcclxuICAgICAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcclxuICAgICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxyXG4gICAgICAgICAgc2Vjb25kOiAnMi1kaWdpdCcsXHJcbiAgICAgICAgfSlcclxuICAgICAgOiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZW4tVVMnLCB7XHJcbiAgICAgICAgICBob3VyQ3ljbGU6ICdoMjMnLFxyXG4gICAgICAgICAgdGltZVpvbmU6IHRpbWVab25lLFxyXG4gICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxyXG4gICAgICAgICAgbW9udGg6ICdudW1lcmljJyxcclxuICAgICAgICAgIGRheTogJzItZGlnaXQnLFxyXG4gICAgICAgICAgaG91cjogJzItZGlnaXQnLFxyXG4gICAgICAgICAgbWludXRlOiAnMi1kaWdpdCcsXHJcbiAgICAgICAgICBzZWNvbmQ6ICcyLWRpZ2l0JyxcclxuICAgICAgICB9KVxyXG4gIH1cclxuICByZXR1cm4gZHRmQ2FjaGVbdGltZVpvbmVdXHJcbn1cclxuXHJcblxyXG4iXX0=
@@ -0,0 +1,31 @@
1
+ /*
2
+ <file>
3
+ Project:
4
+ @osovitny/anatoly
5
+
6
+ Authors:
7
+ Vadim Osovitny vadim@osovitny.com
8
+ Anatoly Osovitny anatoly@osovitny.com
9
+
10
+ Created:
11
+ 10 Feb 2024
12
+
13
+ Source:
14
+ https://github.com/marnusw/date-fns-tz/blob/master/src/utcToZonedTime/index.js
15
+ https://github.com/marnusw/date-fns-tz/blob/master/src/_lib/tzParseTimezone/index.js
16
+
17
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
18
+ </file>
19
+ */
20
+ import { DateConvert } from "../../converts/dateConvert";
21
+ import { tzParseTimezone } from "./tzParseTimezone";
22
+ export function utcToZonedTime(dirtyDate, timeZone) {
23
+ let date = DateConvert.toDate(dirtyDate);
24
+ let offsetMilliseconds = tzParseTimezone(timeZone, date, true);
25
+ let d = new Date(date.getTime() - offsetMilliseconds);
26
+ let resultDate = new Date(0);
27
+ resultDate.setFullYear(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());
28
+ resultDate.setHours(d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds());
29
+ return resultDate;
30
+ }
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRjVG9ab25lZFRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9sb2NhbGl6YXRpb24vdHovdXRjVG9ab25lZFRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWtCRTtBQUVGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxTQUFTLEVBQUUsUUFBUTtJQUNoRCxJQUFJLElBQUksR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLElBQUksa0JBQWtCLEdBQUcsZUFBZSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFFOUQsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLGtCQUFrQixDQUFDLENBQUM7SUFDdEQsSUFBSSxVQUFVLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFN0IsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUVuRyxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDEwIEZlYiAyMDI0XHJcblxyXG4gIFNvdXJjZTpcclxuICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJudXN3L2RhdGUtZm5zLXR6L2Jsb2IvbWFzdGVyL3NyYy91dGNUb1pvbmVkVGltZS9pbmRleC5qc1xyXG4gICAgaHR0cHM6Ly9naXRodWIuY29tL21hcm51c3cvZGF0ZS1mbnMtdHovYmxvYi9tYXN0ZXIvc3JjL19saWIvdHpQYXJzZVRpbWV6b25lL2luZGV4LmpzXHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuaW1wb3J0IHsgRGF0ZUNvbnZlcnQgfSBmcm9tIFwiLi4vLi4vY29udmVydHMvZGF0ZUNvbnZlcnRcIjtcclxuaW1wb3J0IHsgdHpQYXJzZVRpbWV6b25lIH0gZnJvbSBcIi4vdHpQYXJzZVRpbWV6b25lXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdXRjVG9ab25lZFRpbWUoZGlydHlEYXRlLCB0aW1lWm9uZSkge1xyXG4gIGxldCBkYXRlID0gRGF0ZUNvbnZlcnQudG9EYXRlKGRpcnR5RGF0ZSk7XHJcbiAgbGV0IG9mZnNldE1pbGxpc2Vjb25kcyA9IHR6UGFyc2VUaW1lem9uZSh0aW1lWm9uZSwgZGF0ZSwgdHJ1ZSlcclxuXHJcbiAgbGV0IGQgPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSAtIG9mZnNldE1pbGxpc2Vjb25kcyk7XHJcbiAgbGV0IHJlc3VsdERhdGUgPSBuZXcgRGF0ZSgwKTtcclxuXHJcbiAgcmVzdWx0RGF0ZS5zZXRGdWxsWWVhcihkLmdldFVUQ0Z1bGxZZWFyKCksIGQuZ2V0VVRDTW9udGgoKSwgZC5nZXRVVENEYXRlKCkpO1xyXG4gIHJlc3VsdERhdGUuc2V0SG91cnMoZC5nZXRVVENIb3VycygpLCBkLmdldFVUQ01pbnV0ZXMoKSwgZC5nZXRVVENTZWNvbmRzKCksIGQuZ2V0VVRDTWlsbGlzZWNvbmRzKCkpO1xyXG5cclxuICByZXR1cm4gcmVzdWx0RGF0ZTtcclxufVxyXG5cclxuXHJcbiJdfQ==
@@ -13,7 +13,6 @@ import { BrowserUtils, EventType, InteractionStatus, InteractionType, Interactio
13
13
  import * as i1$2 from '@angular/common';
14
14
  import { LOCATION_INITIALIZED, DOCUMENT, CommonModule } from '@angular/common';
15
15
  import { format, formatDistance, formatDistanceToNow } from 'date-fns';
16
- import { utcToZonedTime } from 'date-fns-tz';
17
16
  import enUS from 'date-fns/locale/en-US';
18
17
  import * as i1$3 from '@ngx-translate/core';
19
18
  import { TranslateService, TranslateModule, TranslateLoader } from '@ngx-translate/core';
@@ -1740,6 +1739,257 @@ is = {
1740
1739
  };
1741
1740
  */
1742
1741
 
1742
+ /*
1743
+ <file>
1744
+ Project:
1745
+ @osovitny/anatoly
1746
+
1747
+ Authors:
1748
+ Vadim Osovitny vadim@osovitny.com
1749
+ Anatoly Osovitny anatoly@osovitny.com
1750
+
1751
+ Created:
1752
+ 10 Feb 2024
1753
+
1754
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1755
+ </file>
1756
+ */
1757
+ /**
1758
+ * Returns the [year, month, day, hour, minute, seconds] tokens of the provided
1759
+ * `date` as it will be rendered in the `timeZone`.
1760
+ */
1761
+ function tzTokenizeDate(date, timeZone) {
1762
+ var dtf = getDateTimeFormat(timeZone);
1763
+ return dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date);
1764
+ }
1765
+ var typeToPos = {
1766
+ year: 0,
1767
+ month: 1,
1768
+ day: 2,
1769
+ hour: 3,
1770
+ minute: 4,
1771
+ second: 5,
1772
+ };
1773
+ function partsOffset(dtf, date) {
1774
+ try {
1775
+ var formatted = dtf.formatToParts(date);
1776
+ var filled = [];
1777
+ for (var i = 0; i < formatted.length; i++) {
1778
+ var pos = typeToPos[formatted[i].type];
1779
+ if (pos >= 0) {
1780
+ filled[pos] = parseInt(formatted[i].value, 10);
1781
+ }
1782
+ }
1783
+ return filled;
1784
+ }
1785
+ catch (error) {
1786
+ if (error instanceof RangeError) {
1787
+ return [NaN];
1788
+ }
1789
+ throw error;
1790
+ }
1791
+ }
1792
+ function hackyOffset(dtf, date) {
1793
+ var formatted = dtf.format(date).replace(/\u200E/g, '');
1794
+ var parsed = /(\d+)\/(\d+)\/(\d+),? (\d+):(\d+):(\d+)/.exec(formatted);
1795
+ // var [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed
1796
+ // return [fYear, fMonth, fDay, fHour, fMinute, fSecond]
1797
+ return [parsed[3], parsed[1], parsed[2], parsed[4], parsed[5], parsed[6]];
1798
+ }
1799
+ // Get a cached Intl.DateTimeFormat instance for the IANA `timeZone`. This can be used
1800
+ // to get deterministic local date/time output according to the `en-US` locale which
1801
+ // can be used to extract local time parts as necessary.
1802
+ var dtfCache = {};
1803
+ function getDateTimeFormat(timeZone) {
1804
+ if (!dtfCache[timeZone]) {
1805
+ // New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12`
1806
+ var testDateFormatted = new Intl.DateTimeFormat('en-US', {
1807
+ hour12: false,
1808
+ timeZone: 'America/New_York',
1809
+ year: 'numeric',
1810
+ month: 'numeric',
1811
+ day: '2-digit',
1812
+ hour: '2-digit',
1813
+ minute: '2-digit',
1814
+ second: '2-digit',
1815
+ }).format(new Date('2014-06-25T04:00:00.123Z'));
1816
+ var hourCycleSupported = testDateFormatted === '06/25/2014, 00:00:00' ||
1817
+ testDateFormatted === '06/25/2014 00:00:00';
1818
+ dtfCache[timeZone] = hourCycleSupported
1819
+ ? new Intl.DateTimeFormat('en-US', {
1820
+ hour12: false,
1821
+ timeZone: timeZone,
1822
+ year: 'numeric',
1823
+ month: 'numeric',
1824
+ day: '2-digit',
1825
+ hour: '2-digit',
1826
+ minute: '2-digit',
1827
+ second: '2-digit',
1828
+ })
1829
+ : new Intl.DateTimeFormat('en-US', {
1830
+ hourCycle: 'h23',
1831
+ timeZone: timeZone,
1832
+ year: 'numeric',
1833
+ month: 'numeric',
1834
+ day: '2-digit',
1835
+ hour: '2-digit',
1836
+ minute: '2-digit',
1837
+ second: '2-digit',
1838
+ });
1839
+ }
1840
+ return dtfCache[timeZone];
1841
+ }
1842
+
1843
+ /*
1844
+ <file>
1845
+ Project:
1846
+ @osovitny/anatoly
1847
+
1848
+ Authors:
1849
+ Vadim Osovitny vadim@osovitny.com
1850
+ Anatoly Osovitny anatoly@osovitny.com
1851
+
1852
+ Created:
1853
+ 10 Feb 2024
1854
+
1855
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1856
+ </file>
1857
+ */
1858
+ function tzParseTimezone(timezoneString, date, isUtcDate) {
1859
+ var token;
1860
+ var absoluteOffset;
1861
+ // Empty string
1862
+ if (!timezoneString) {
1863
+ return 0;
1864
+ }
1865
+ // Z
1866
+ token = patterns.timezoneZ.exec(timezoneString);
1867
+ if (token) {
1868
+ return 0;
1869
+ }
1870
+ var hours;
1871
+ // ±hh
1872
+ token = patterns.timezoneHH.exec(timezoneString);
1873
+ if (token) {
1874
+ hours = parseInt(token[1], 10);
1875
+ if (!validateTimezone(hours)) {
1876
+ return NaN;
1877
+ }
1878
+ return -(hours * MILLISECONDS_IN_HOUR);
1879
+ }
1880
+ // ±hh:mm or ±hhmm
1881
+ token = patterns.timezoneHHMM.exec(timezoneString);
1882
+ if (token) {
1883
+ hours = parseInt(token[1], 10);
1884
+ var minutes = parseInt(token[2], 10);
1885
+ if (!validateTimezone(hours, minutes)) {
1886
+ return NaN;
1887
+ }
1888
+ absoluteOffset = Math.abs(hours) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE;
1889
+ return hours > 0 ? -absoluteOffset : absoluteOffset;
1890
+ }
1891
+ // IANA time zone
1892
+ if (isValidTimezoneIANAString(timezoneString)) {
1893
+ date = new Date(date || Date.now());
1894
+ var utcDate = isUtcDate ? date : toUtcDate(date);
1895
+ var offset = calcOffset(utcDate, timezoneString);
1896
+ var fixedOffset = isUtcDate ? offset : fixOffset(date, offset, timezoneString);
1897
+ return -fixedOffset;
1898
+ }
1899
+ return NaN;
1900
+ }
1901
+ var MILLISECONDS_IN_HOUR = 3600000;
1902
+ var MILLISECONDS_IN_MINUTE = 60000;
1903
+ var patterns = {
1904
+ timezone: /([Z+-].*)$/,
1905
+ timezoneZ: /^(Z)$/,
1906
+ timezoneHH: /^([+-]\d{2})$/,
1907
+ timezoneHHMM: /^([+-]\d{2}):?(\d{2})$/,
1908
+ };
1909
+ function newDateUTC(fullYear, month, day, hour, minute, second, millisecond) {
1910
+ var utcDate = new Date(0);
1911
+ utcDate.setUTCFullYear(fullYear, month, day);
1912
+ utcDate.setUTCHours(hour, minute, second, millisecond);
1913
+ return utcDate;
1914
+ }
1915
+ function toUtcDate(date) {
1916
+ return newDateUTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());
1917
+ }
1918
+ function calcOffset(date, timezoneString) {
1919
+ var tokens = tzTokenizeDate(date, timezoneString);
1920
+ // ms dropped because it's not provided by tzTokenizeDate
1921
+ var asUTC = newDateUTC(tokens[0], tokens[1] - 1, tokens[2], tokens[3] % 24, tokens[4], tokens[5], 0).getTime();
1922
+ var asTS = date.getTime();
1923
+ var over = asTS % 1000;
1924
+ asTS -= over >= 0 ? over : 1000 + over;
1925
+ return asUTC - asTS;
1926
+ }
1927
+ function fixOffset(date, offset, timezoneString) {
1928
+ var localTS = date.getTime();
1929
+ // Our UTC time is just a guess because our offset is just a guess
1930
+ var utcGuess = localTS - offset;
1931
+ // Test whether the zone matches the offset for this ts
1932
+ var o2 = calcOffset(new Date(utcGuess), timezoneString);
1933
+ // If so, offset didn't change, and we're done
1934
+ if (offset === o2) {
1935
+ return offset;
1936
+ }
1937
+ // If not, change the ts by the difference in the offset
1938
+ utcGuess -= o2 - offset;
1939
+ // If that gives us the local time we want, we're done
1940
+ var o3 = calcOffset(new Date(utcGuess), timezoneString);
1941
+ if (o2 === o3) {
1942
+ return o2;
1943
+ }
1944
+ // If it's different, we're in a hole time. The offset has changed, but we don't adjust the time
1945
+ return Math.max(o2, o3);
1946
+ }
1947
+ function validateTimezone(hours, minutes = null) {
1948
+ return -23 <= hours && hours <= 23 && (minutes == null || (0 <= minutes && minutes <= 59));
1949
+ }
1950
+ var validIANATimezoneCache = {};
1951
+ function isValidTimezoneIANAString(timeZoneString) {
1952
+ if (validIANATimezoneCache[timeZoneString])
1953
+ return true;
1954
+ try {
1955
+ new Intl.DateTimeFormat(undefined, { timeZone: timeZoneString });
1956
+ validIANATimezoneCache[timeZoneString] = true;
1957
+ return true;
1958
+ }
1959
+ catch (error) {
1960
+ return false;
1961
+ }
1962
+ }
1963
+
1964
+ /*
1965
+ <file>
1966
+ Project:
1967
+ @osovitny/anatoly
1968
+
1969
+ Authors:
1970
+ Vadim Osovitny vadim@osovitny.com
1971
+ Anatoly Osovitny anatoly@osovitny.com
1972
+
1973
+ Created:
1974
+ 10 Feb 2024
1975
+
1976
+ Source:
1977
+ https://github.com/marnusw/date-fns-tz/blob/master/src/utcToZonedTime/index.js
1978
+ https://github.com/marnusw/date-fns-tz/blob/master/src/_lib/tzParseTimezone/index.js
1979
+
1980
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1981
+ </file>
1982
+ */
1983
+ function utcToZonedTime(dirtyDate, timeZone) {
1984
+ let date = DateConvert.toDate(dirtyDate);
1985
+ let offsetMilliseconds = tzParseTimezone(timeZone, date, true);
1986
+ let d = new Date(date.getTime() - offsetMilliseconds);
1987
+ let resultDate = new Date(0);
1988
+ resultDate.setFullYear(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());
1989
+ resultDate.setHours(d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds());
1990
+ return resultDate;
1991
+ }
1992
+
1743
1993
  /*
1744
1994
  <file>
1745
1995
  Project: