@libs-ui/components-popover 0.2.306 → 0.2.307-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { TYPE_POPOVER_DIRECTION } from "../interfaces/popover.type";
1
+ import { TYPE_POPOVER_DIRECTION } from '../interfaces/popover.type';
2
2
  export declare const KEY_QUERY_POPOVER_TIMER_DESTROY = "popover-timer-destroy";
3
3
  export declare const getPopoverTimerDestroyInQueryUrl: () => number;
4
4
  export declare const getListdirections: (drirection: TYPE_POPOVER_DIRECTION) => Array<TYPE_POPOVER_DIRECTION>;
@@ -1,4 +1,4 @@
1
- import { get, UtilsUrlSearchParams } from "@libs-ui/utils";
1
+ import { get, UtilsUrlSearchParams } from '@libs-ui/utils';
2
2
  export const KEY_QUERY_POPOVER_TIMER_DESTROY = 'popover-timer-destroy';
3
3
  const timerDestroy = parseInt(new UtilsUrlSearchParams(location.href).get(KEY_QUERY_POPOVER_TIMER_DESTROY) || '0');
4
4
  export const getPopoverTimerDestroyInQueryUrl = () => {
@@ -12,4 +12,4 @@ export const getListdirections = (drirection) => {
12
12
  top: ['top', 'bottom', 'right', 'left'],
13
13
  }, drirection);
14
14
  };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmRlZmluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9wb3BvdmVyL3NyYy9kZWZpbmVzL2NvbnN0YW50cy5kZWZpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTNELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLHVCQUF1QixDQUFDO0FBRXZFLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsK0JBQStCLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUVuSCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxHQUFXLEVBQUU7SUFDM0QsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxVQUFrQyxFQUFpQyxFQUFFO0lBQ3JHLE9BQU8sR0FBRyxDQUFDO1FBQ1QsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDO1FBQzFDLEtBQUssRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQztRQUN6QyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUM7UUFDeEMsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDO0tBQ3hDLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDakIsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0LCBVdGlsc1VybFNlYXJjaFBhcmFtcyB9IGZyb20gXCJAbGlicy11aS91dGlsc1wiO1xuaW1wb3J0IHsgVFlQRV9QT1BPVkVSX0RJUkVDVElPTiB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL3BvcG92ZXIudHlwZVwiO1xuXG5cbmV4cG9ydCBjb25zdCBLRVlfUVVFUllfUE9QT1ZFUl9USU1FUl9ERVNUUk9ZID0gJ3BvcG92ZXItdGltZXItZGVzdHJveSc7XG5cbmNvbnN0IHRpbWVyRGVzdHJveSA9IHBhcnNlSW50KG5ldyBVdGlsc1VybFNlYXJjaFBhcmFtcyhsb2NhdGlvbi5ocmVmKS5nZXQoS0VZX1FVRVJZX1BPUE9WRVJfVElNRVJfREVTVFJPWSkgfHwgJzAnKTtcblxuZXhwb3J0IGNvbnN0IGdldFBvcG92ZXJUaW1lckRlc3Ryb3lJblF1ZXJ5VXJsID0gKCk6IG51bWJlciA9PiB7XG4gIHJldHVybiB0aW1lckRlc3Ryb3k7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGlzdGRpcmVjdGlvbnMgPSAoZHJpcmVjdGlvbjogVFlQRV9QT1BPVkVSX0RJUkVDVElPTik6IEFycmF5PFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04+ID0+IHtcbiAgcmV0dXJuIGdldCh7XG4gICAgYm90dG9tOiBbJ2JvdHRvbScsICd0b3AnLCAncmlnaHQnLCAnbGVmdCddLFxuICAgIHJpZ2h0OiBbJ3JpZ2h0JywgJ2xlZnQnLCAnYm90dG9tJywgJ3RvcCddLFxuICAgIGxlZnQ6IFsnbGVmdCcsICdyaWdodCcsICdib3R0b20nLCAndG9wJ10sXG4gICAgdG9wOiBbJ3RvcCcsICdib3R0b20nLCAncmlnaHQnLCAnbGVmdCddLFxuICB9LCBkcmlyZWN0aW9uKTtcbn0iXX0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmRlZmluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9wb3BvdmVyL3NyYy9kZWZpbmVzL2NvbnN0YW50cy5kZWZpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLHVCQUF1QixDQUFDO0FBRXZFLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsK0JBQStCLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUVuSCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxHQUFXLEVBQUU7SUFDM0QsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxVQUFrQyxFQUFpQyxFQUFFO0lBQ3JHLE9BQU8sR0FBRyxDQUNSO1FBQ0UsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDO1FBQzFDLEtBQUssRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQztRQUN6QyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUM7UUFDeEMsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDO0tBQ3hDLEVBQ0QsVUFBVSxDQUNYLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXQsIFV0aWxzVXJsU2VhcmNoUGFyYW1zIH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgVFlQRV9QT1BPVkVSX0RJUkVDVElPTiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9wb3Zlci50eXBlJztcblxuZXhwb3J0IGNvbnN0IEtFWV9RVUVSWV9QT1BPVkVSX1RJTUVSX0RFU1RST1kgPSAncG9wb3Zlci10aW1lci1kZXN0cm95JztcblxuY29uc3QgdGltZXJEZXN0cm95ID0gcGFyc2VJbnQobmV3IFV0aWxzVXJsU2VhcmNoUGFyYW1zKGxvY2F0aW9uLmhyZWYpLmdldChLRVlfUVVFUllfUE9QT1ZFUl9USU1FUl9ERVNUUk9ZKSB8fCAnMCcpO1xuXG5leHBvcnQgY29uc3QgZ2V0UG9wb3ZlclRpbWVyRGVzdHJveUluUXVlcnlVcmwgPSAoKTogbnVtYmVyID0+IHtcbiAgcmV0dXJuIHRpbWVyRGVzdHJveTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMaXN0ZGlyZWN0aW9ucyA9IChkcmlyZWN0aW9uOiBUWVBFX1BPUE9WRVJfRElSRUNUSU9OKTogQXJyYXk8VFlQRV9QT1BPVkVSX0RJUkVDVElPTj4gPT4ge1xuICByZXR1cm4gZ2V0KFxuICAgIHtcbiAgICAgIGJvdHRvbTogWydib3R0b20nLCAndG9wJywgJ3JpZ2h0JywgJ2xlZnQnXSxcbiAgICAgIHJpZ2h0OiBbJ3JpZ2h0JywgJ2xlZnQnLCAnYm90dG9tJywgJ3RvcCddLFxuICAgICAgbGVmdDogWydsZWZ0JywgJ3JpZ2h0JywgJ2JvdHRvbScsICd0b3AnXSxcbiAgICAgIHRvcDogWyd0b3AnLCAnYm90dG9tJywgJ3JpZ2h0JywgJ2xlZnQnXSxcbiAgICB9LFxuICAgIGRyaXJlY3Rpb25cbiAgKTtcbn07XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZy1tb3VzZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvaW50ZXJmYWNlcy9mbGFnLW1vdXNlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJRmxhZ01vdXNlIHtcbiAgaXNNb3VzZUVudGVyOiBib29sZWFuO1xuICBpc01vdXNlRW50ZXJDb250ZW50OiBib29sZWFuO1xuICBpc0NvbnRhaW5lckhhc1Njcm9sbD86IGJvb2xlYW5cbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZy1tb3VzZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvaW50ZXJmYWNlcy9mbGFnLW1vdXNlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJRmxhZ01vdXNlIHtcbiAgaXNNb3VzZUVudGVyOiBib29sZWFuO1xuICBpc01vdXNlRW50ZXJDb250ZW50OiBib29sZWFuO1xuICBpc0NvbnRhaW5lckhhc1Njcm9sbD86IGJvb2xlYW47XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tY29udHJvbC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvaW50ZXJmYWNlcy9mdW5jdGlvbi1jb250cm9sLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUJvdW5kaW5nQ2xpZW50UmVjdCB9IGZyb20gXCJAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCB7XG4gIHNob3dQb3BvdmVyOiAoZWxlbWVudFJlZj86IEhUTUxFbGVtZW50KSA9PiBQcm9taXNlPHZvaWQ+O1xuICB1cGRhdGVQb3BvdmVyT3ZlcmxheVBvc2l0aW9uOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZW1vdmVQb3BvdmVyT3ZlcmxheTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZ2V0UmVjdENvbnRhaW5lcjogKCkgPT4gUHJvbWlzZTxJQm91bmRpbmdDbGllbnRSZWN0PjtcbiAgZ2V0UmVjdENvbnRlbnQ6ICgpID0+IFByb21pc2U8SUJvdW5kaW5nQ2xpZW50UmVjdD47XG4gIHVwZGF0ZVBvcG92ZXJPdmVybGF5OiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xufSJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tY29udHJvbC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvaW50ZXJmYWNlcy9mdW5jdGlvbi1jb250cm9sLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUJvdW5kaW5nQ2xpZW50UmVjdCB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQge1xuICBzaG93UG9wb3ZlcjogKGVsZW1lbnRSZWY/OiBIVE1MRWxlbWVudCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgdXBkYXRlUG9wb3Zlck92ZXJsYXlQb3NpdGlvbjogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcmVtb3ZlUG9wb3Zlck92ZXJsYXk6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIGdldFJlY3RDb250YWluZXI6ICgpID0+IFByb21pc2U8SUJvdW5kaW5nQ2xpZW50UmVjdD47XG4gIGdldFJlY3RDb250ZW50OiAoKSA9PiBQcm9taXNlPElCb3VuZGluZ0NsaWVudFJlY3Q+O1xuICB1cGRhdGVQb3BvdmVyT3ZlcmxheTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbn1cbiJdfQ==
@@ -3,4 +3,4 @@ export * from './popover.type';
3
3
  export * from './overlay.interface';
4
4
  export * from './flag-mouse.interface';
5
5
  export * from './function-control.interface';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BvcG92ZXIuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcG9wb3Zlci50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vb3ZlcmxheS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9mbGFnLW1vdXNlLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2Z1bmN0aW9uLWNvbnRyb2wuaW50ZXJmYWNlJzsiXX0=
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BvcG92ZXIuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcG9wb3Zlci50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vb3ZlcmxheS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9mbGFnLW1vdXNlLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2Z1bmN0aW9uLWNvbnRyb2wuaW50ZXJmYWNlJztcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvaW50ZXJmYWNlcy9wb3BvdmVyLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElQb3BvdmVyT3ZlcmxheSB9IGZyb20gJy4vb3ZlcmxheS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVFlQRV9QT1BPVkVSX1RZUEUsIFRZUEVfUE9QT1ZFUl9NT0RFIH0gZnJvbSAnLi9wb3BvdmVyLnR5cGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQb3BvdmVyIHtcbiAgdHlwZT86IFRZUEVfUE9QT1ZFUl9UWVBFO1xuICBtb2RlPzogVFlQRV9QT1BPVkVSX01PREU7XG4gIGRhdGFWaWV3Pzogc3RyaW5nO1xuICBjb25maWc/OiBJUG9wb3Zlck92ZXJsYXkgfCB1bmRlZmluZWQ7XG4gIGNsYXNzSW5jbHVkZT86IHN0cmluZztcbiAgaWdub3JlU2hvd1BvcG92ZXI/OiBib29sZWFuO1xuICBpZ25vcmVIaWRkZW5Qb3BvdmVyQ29udGVudFdoZW5Nb3VzZUxlYXZlPzogYm9vbGVhbjtcbiAgZWxlbWVudFJlZkN1c3RvbT86IEhUTUxFbGVtZW50O1xuICBpc0FkZENvbnRlbnRUb1BhcmVudERvY3VtZW50PzogYm9vbGVhbjtcbiAgdGVtcGxhdGVDdXN0b21Db250ZW50PzogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcbn1cblxuXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvaW50ZXJmYWNlcy9wb3BvdmVyLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElQb3BvdmVyT3ZlcmxheSB9IGZyb20gJy4vb3ZlcmxheS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVFlQRV9QT1BPVkVSX1RZUEUsIFRZUEVfUE9QT1ZFUl9NT0RFIH0gZnJvbSAnLi9wb3BvdmVyLnR5cGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQb3BvdmVyIHtcbiAgdHlwZT86IFRZUEVfUE9QT1ZFUl9UWVBFO1xuICBtb2RlPzogVFlQRV9QT1BPVkVSX01PREU7XG4gIGRhdGFWaWV3Pzogc3RyaW5nO1xuICBjb25maWc/OiBJUG9wb3Zlck92ZXJsYXkgfCB1bmRlZmluZWQ7XG4gIGNsYXNzSW5jbHVkZT86IHN0cmluZztcbiAgaWdub3JlU2hvd1BvcG92ZXI/OiBib29sZWFuO1xuICBpZ25vcmVIaWRkZW5Qb3BvdmVyQ29udGVudFdoZW5Nb3VzZUxlYXZlPzogYm9vbGVhbjtcbiAgZWxlbWVudFJlZkN1c3RvbT86IEhUTUxFbGVtZW50O1xuICBpc0FkZENvbnRlbnRUb1BhcmVudERvY3VtZW50PzogYm9vbGVhbjtcbiAgdGVtcGxhdGVDdXN0b21Db250ZW50PzogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL3BvcG92ZXIvc3JjL2ludGVyZmFjZXMvcG9wb3Zlci50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBUWVBFX1BPUE9WRVJfVFlQRSA9ICd0ZXh0JyB8ICdvdGhlcic7XG5leHBvcnQgdHlwZSBUWVBFX1BPUE9WRVJfRElSRUNUSU9OID0gJ3RvcCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgfCAnbGVmdCc7XG5leHBvcnQgdHlwZSBUWVBFX1BPUE9WRVJfUE9TSVRJT05fTU9ERSA9ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xuZXhwb3J0IHR5cGUgVFlQRV9QT1BPVkVSX01PREUgPVxuICAnaG92ZXInIHxcbiAgJ2NsaWNrJyB8XG4gICdjbGljay10b2dnbGUnIHxcbiAgJ2NsaWNrX29wZW5fYW5kX2NsaWNrX3BhbmVsX2NvbnRlbnRfaGlkZGVuJztcblxuZXhwb3J0IHR5cGUgVFlQRV9QT1BPVkVSX0VWRU5UID0gJ3Nob3cnIHwgJ3JlbW92ZScgfCAnY2xpY2snIHwgJ21vdXNlZW50ZXItZWxlbWVudCcgfCAnbW91c2VsZWF2ZS1lbGVtZW50JyB8ICdtb3VzZWVudGVyLWNvbnRlbnQnIHwgJ21vdXNlbGVhdmUtY29udGVudCc7Il19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL3BvcG92ZXIvc3JjL2ludGVyZmFjZXMvcG9wb3Zlci50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBUWVBFX1BPUE9WRVJfVFlQRSA9ICd0ZXh0JyB8ICdvdGhlcic7XG5leHBvcnQgdHlwZSBUWVBFX1BPUE9WRVJfRElSRUNUSU9OID0gJ3RvcCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgfCAnbGVmdCc7XG5leHBvcnQgdHlwZSBUWVBFX1BPUE9WRVJfUE9TSVRJT05fTU9ERSA9ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xuZXhwb3J0IHR5cGUgVFlQRV9QT1BPVkVSX01PREUgPSAnaG92ZXInIHwgJ2NsaWNrJyB8ICdjbGljay10b2dnbGUnIHwgJ2NsaWNrX29wZW5fYW5kX2NsaWNrX3BhbmVsX2NvbnRlbnRfaGlkZGVuJztcblxuZXhwb3J0IHR5cGUgVFlQRV9QT1BPVkVSX0VWRU5UID0gJ3Nob3cnIHwgJ3JlbW92ZScgfCAnY2xpY2snIHwgJ21vdXNlZW50ZXItZWxlbWVudCcgfCAnbW91c2VsZWF2ZS1lbGVtZW50JyB8ICdtb3VzZWVudGVyLWNvbnRlbnQnIHwgJ21vdXNlbGVhdmUtY29udGVudCc7XG4iXX0=
@@ -37,7 +37,7 @@ export class LibsUiComponentsPopoverOverlayComponent {
37
37
  this.config.set(cloneDeep(config));
38
38
  this.container().nativeElement.style.opacity = 0;
39
39
  if (this.config().widthByParent) {
40
- this.config.update(config => ({ ...config, width: rectOrigin.width - (config?.parentBorderWidth || 0) * 2 }));
40
+ this.config.update((config) => ({ ...config, width: rectOrigin.width - (config?.parentBorderWidth || 0) * 2 }));
41
41
  }
42
42
  let viewPort = getViewport();
43
43
  let rectFrame = undefined;
@@ -52,7 +52,7 @@ export class LibsUiComponentsPopoverOverlayComponent {
52
52
  }
53
53
  }
54
54
  if (this.config().maxHeight === null) {
55
- this.config.update(config => ({ ...config, maxHeight: viewPort.height - rectOrigin.top - 44 }));
55
+ this.config.update((config) => ({ ...config, maxHeight: viewPort.height - rectOrigin.top - 44 }));
56
56
  }
57
57
  clearTimeout(this.timeout());
58
58
  this.setVariableCss();
@@ -62,7 +62,9 @@ export class LibsUiComponentsPopoverOverlayComponent {
62
62
  rectContent.top += rectFrame.top;
63
63
  rectContent.left += rectFrame.left;
64
64
  }
65
- interval(250).pipe(take(4), takeUntil(this.onDestroy)).subscribe(() => {
65
+ interval(250)
66
+ .pipe(take(4), takeUntil(this.onDestroy))
67
+ .subscribe(() => {
66
68
  const rect = cloneIBoundingClientRect(this.container().nativeElement.getBoundingClientRect());
67
69
  if (rectFrame) {
68
70
  rect.top += rectFrame.top;
@@ -92,7 +94,7 @@ export class LibsUiComponentsPopoverOverlayComponent {
92
94
  }, 50));
93
95
  }
94
96
  loopDirection(rectOrigin, rectContent, direction, isLast, viewPort) {
95
- return new Promise(resolve => {
97
+ return new Promise((resolve) => {
96
98
  const positionMode = this.config().position?.mode || 'start';
97
99
  const { position } = this.config();
98
100
  let result = this.setPosition(direction, rectOrigin, rectContent, viewPort, isLast);
@@ -102,21 +104,21 @@ export class LibsUiComponentsPopoverOverlayComponent {
102
104
  if (!this.config().ignoreArrow && position.autoUpdatePosition) {
103
105
  position.distance = position.mode === 'end' ? position.autoUpdatePosition.endDistance : position.autoUpdatePosition.startDistance;
104
106
  }
105
- this.config.update(config => ({ ...config }));
107
+ this.config.update((config) => ({ ...config }));
106
108
  }
107
109
  result = this.setPosition(direction, rectOrigin, rectContent, viewPort, isLast);
108
110
  }
109
111
  if (!result && positionMode === 'center') {
110
112
  if (position) {
111
113
  position.mode = position.mode === 'start' ? 'end' : 'start';
112
- this.config.update(config => ({ ...config }));
114
+ this.config.update((config) => ({ ...config }));
113
115
  }
114
116
  result = this.setPosition(direction, rectOrigin, rectContent, viewPort, isLast);
115
117
  }
116
118
  if (!result) {
117
119
  if (position) {
118
120
  position.mode = positionMode;
119
- this.config.update(config => ({ ...config }));
121
+ this.config.update((config) => ({ ...config }));
120
122
  }
121
123
  return resolve(false);
122
124
  }
@@ -153,7 +155,7 @@ export class LibsUiComponentsPopoverOverlayComponent {
153
155
  if (configValue.position?.mode === 'end') {
154
156
  left = rectOrigin.left + rectOrigin.width - rectContent.width + (configValue.position.distance || 0);
155
157
  }
156
- left += (configValue.parentBorderWidth || 0);
158
+ left += configValue.parentBorderWidth || 0;
157
159
  this.arrowLeft.set(positionLeft - left);
158
160
  this.arrowTop.set(-6);
159
161
  this.top.set(top);
@@ -163,7 +165,7 @@ export class LibsUiComponentsPopoverOverlayComponent {
163
165
  }
164
166
  if (isLast) {
165
167
  if (this.config) {
166
- this.config.update(config => ({ ...config, maxHeight: viewPort.height - rectOrigin.top - rectOrigin.height }));
168
+ this.config.update((config) => ({ ...config, maxHeight: viewPort.height - rectOrigin.top - rectOrigin.height }));
167
169
  }
168
170
  this.left.set(this.getLeftPositionIsLast(isLast, left >= 0 ? left : 0, viewPort, rectOrigin, rectContent, halfSquare));
169
171
  return true;
@@ -197,7 +199,7 @@ export class LibsUiComponentsPopoverOverlayComponent {
197
199
  }
198
200
  if (isLast) {
199
201
  if (this.config) {
200
- this.config.update(config => ({ ...config, maxHeight: viewPort.height }));
202
+ this.config.update((config) => ({ ...config, maxHeight: viewPort.height }));
201
203
  }
202
204
  this.left.set(this.getLeftPositionIsLast(isLast, left >= 0 ? left : 0, viewPort, rectOrigin, rectContent, halfSquare));
203
205
  return true;
@@ -205,7 +207,7 @@ export class LibsUiComponentsPopoverOverlayComponent {
205
207
  return false;
206
208
  case 'left':
207
209
  positionTop = rectOrigin.top + rectOrigin.height / 2 - halfSquare;
208
- positionLeft = rectOrigin.left - (halfSquare * 2) - distanceArrow;
210
+ positionLeft = rectOrigin.left - halfSquare * 2 - distanceArrow;
209
211
  top = positionTop - rectContent.height / 2 + halfSquare;
210
212
  left = positionLeft - rectContent.width + halfSquare;
211
213
  if (configValue.ignoreArrow) {
@@ -231,14 +233,14 @@ export class LibsUiComponentsPopoverOverlayComponent {
231
233
  }
232
234
  if (isLast) {
233
235
  if (this.config) {
234
- this.config.update(config => ({ ...config, maxHeight: viewPort.height }));
236
+ this.config.update((config) => ({ ...config, maxHeight: viewPort.height }));
235
237
  }
236
238
  this.left.set(this.getLeftPositionIsLast(isLast, left >= 0 ? left : 0, viewPort, rectOrigin, rectContent, halfSquare));
237
239
  return true;
238
240
  }
239
241
  return false;
240
242
  case 'top':
241
- positionTop = rectOrigin.top - (halfSquare * 2) - distanceArrow;
243
+ positionTop = rectOrigin.top - halfSquare * 2 - distanceArrow;
242
244
  positionLeft = rectOrigin.left + rectOrigin.width / 2 - halfSquare;
243
245
  top = positionTop - rectContent.height + halfSquare;
244
246
  left = positionLeft - rectContent.width / 2 + halfSquare;
@@ -252,7 +254,7 @@ export class LibsUiComponentsPopoverOverlayComponent {
252
254
  if (configValue.position && configValue.position?.mode === 'end') {
253
255
  left = rectOrigin.left + rectOrigin.width - rectContent.width + (configValue.position.distance || 0);
254
256
  }
255
- left += (configValue.parentBorderWidth || 0);
257
+ left += configValue.parentBorderWidth || 0;
256
258
  this.arrowLeft.set(positionLeft - left);
257
259
  this.arrowTop.set(rectContent.height);
258
260
  this.top.set(top);
@@ -261,7 +263,7 @@ export class LibsUiComponentsPopoverOverlayComponent {
261
263
  return true;
262
264
  }
263
265
  if (isLast) {
264
- this.config.update(config => ({ ...config, maxHeight: viewPort.height - (viewPort.height - rectOrigin.top) }));
266
+ this.config.update((config) => ({ ...config, maxHeight: viewPort.height - (viewPort.height - rectOrigin.top) }));
265
267
  top = 0;
266
268
  this.left.set(this.getLeftPositionIsLast(isLast, left >= 0 ? left : 0, viewPort, rectOrigin, rectContent, halfSquare));
267
269
  return true;
@@ -283,7 +285,7 @@ export class LibsUiComponentsPopoverOverlayComponent {
283
285
  }
284
286
  setVariableCss() {
285
287
  const configValue = this.config();
286
- this.ContainerElement.style.setProperty('--libs-ui-popover-overlay-time-animation-time', `${configValue.animationConfig?.time || .4}s`);
288
+ this.ContainerElement.style.setProperty('--libs-ui-popover-overlay-time-animation-time', `${configValue.animationConfig?.time || 0.4}s`);
287
289
  this.ContainerElement.style.setProperty('--libs-ui-popover-overlay-time-animation-distance', `${this.currentDirection() === 'top' ? '-' : ''}${configValue.animationConfig?.distance || 12}px`);
288
290
  }
289
291
  getLeftPositionIsLast(isLast, currentLeft, viewPort, rectOrigin, rectContent, halfSquare) {
@@ -298,10 +300,10 @@ export class LibsUiComponentsPopoverOverlayComponent {
298
300
  this.onDestroy.complete();
299
301
  }
300
302
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsPopoverOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
301
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsPopoverOverlayComponent, isStandalone: true, selector: "libs_ui-components-popover-overlay", viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #container\n class=\"libs-ui-popover-overlay {{ config().classInclude || '' }}\"\n [class.libs-ui-popover-overlay-white-theme]=\"config().whiteTheme\"\n [class.libs-ui-popover-overlay-animation-move]=\"config().animationConfig\"\n [ngStyle]=\"config().ngStyles || {}\"\n [style.width]=\"config().width ? config().width + 'px' : 'auto'\"\n [style.maxWidth.px]=\"config().maxWidth\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n [style.zIndex]=\"config().zIndex || 10\">\n @if (config()) {\n @if (!config().ignoreArrow) {\n <div class='relative'>\n <svg\n [class]=\"'libs-ui-popover-overlay-arrow '+ arrowClass() + ( config().whiteTheme ? ' libs-ui-popover-overlay-white-theme ' : '')\"\n [style.top.px]=\"arrowTop()\"\n [style.left.px]=\"arrowLeft()\"\n [attr.direction]='outEvent | async'>\n <polygon points=\"0,0 6,6 12,0\" />\n Sorry, your browser does not support inline SVG.\n </svg>\n </div>\n }\n @if (config().template; as templateConfig) {\n <div LibsUiComponentsScrollOverlayDirective\n class=\"libs-ui-popover-overlay-body {{ config().classIncludeOverlayBody || '' }}\"\n [attr.isTemplate]=\"true\"\n [style.max-height]=\"(config().maxHeight)+'px'\">\n <ng-container *ngTemplateOutlet=\"templateConfig;context:{itemContext:config().itemContext}\" />\n </div>\n } @else {\n <div class=\"libs-ui-popover-overlay-body libs-ui-font-h7r {{ config().classIncludeOverlayBody || '' }}\"\n LibsUiComponentsScrollOverlayDirective\n [options]=\"config().scrollOverlayOptions\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.paddingTop.px]=\"config().paddingTop ?? 8\"\n [style.paddingRight.px]=\"config().paddingRight ?? 8\"\n [style.paddingLeft.px]=\"config().paddingLeft ?? 8\"\n [style.paddingBottom.px]=\"config().paddingBottom ?? 8\"\n [innerHtml]=\"(config().content || ' ') | translate\">\n </div>\n }\n }\n\n</div>\n", styles: ["@-webkit-keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}@keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}.libs-ui-popover-overlay{position:fixed;background-color:#071631;border-radius:8px;z-index:1000;top:-10000px;left:-10000px}.libs-ui-popover-overlay-animation-move{animation:animation-move ease var(--libs-ui-popover-overlay-time-animation-time)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow{position:absolute;width:12px;height:6px;fill:#071631}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=bottom]{transform:rotate(180deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=left]{transform:rotate(270deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=right]{transform:rotate(90deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-white-theme{fill:#fff}.libs-ui-popover-overlay .libs-ui-popover-overlay-body{color:#fff;word-break:break-word}.libs-ui-popover-overlay .libs-ui-popover-overlay-body[isTemplate=true]{font-size:inherit}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme{background-color:#fff;box-shadow:0 1px 1px #00143305,0 4px 16px #0014331a}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme .libs-ui-popover-overlay-body{color:#071631}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: LibsUiComponentsScrollOverlayDirective, selector: "[LibsUiComponentsScrollOverlayDirective]", inputs: ["debugMode", "ignoreInit", "classContainer", "options", "elementCheckScrollX", "elementCheckScrollY", "elementScroll"], outputs: ["outScroll", "outScrollX", "outScrollY", "outScrollTop", "outScrollBottom"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
303
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsPopoverOverlayComponent, isStandalone: true, selector: "libs_ui-components-popover-overlay", viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n #container\n class=\"libs-ui-popover-overlay {{ config().classInclude || '' }}\"\n [class.libs-ui-popover-overlay-white-theme]=\"config().whiteTheme\"\n [class.libs-ui-popover-overlay-animation-move]=\"config().animationConfig\"\n [ngStyle]=\"config().ngStyles || {}\"\n [style.width]=\"config().width ? config().width + 'px' : 'auto'\"\n [style.maxWidth.px]=\"config().maxWidth\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n [style.zIndex]=\"config().zIndex || 10\">\n @if (config()) {\n @if (!config().ignoreArrow) {\n <div class=\"relative\">\n <svg\n [class]=\"'libs-ui-popover-overlay-arrow ' + arrowClass() + (config().whiteTheme ? ' libs-ui-popover-overlay-white-theme ' : '')\"\n [style.top.px]=\"arrowTop()\"\n [style.left.px]=\"arrowLeft()\"\n [attr.direction]=\"outEvent | async\">\n <polygon points=\"0,0 6,6 12,0\" />\n Sorry, your browser does not support inline SVG.\n </svg>\n </div>\n }\n @if (config().template; as templateConfig) {\n <div\n LibsUiComponentsScrollOverlayDirective\n class=\"libs-ui-popover-overlay-body {{ config().classIncludeOverlayBody || '' }}\"\n [attr.isTemplate]=\"true\"\n [style.max-height]=\"config().maxHeight + 'px'\">\n <ng-container *ngTemplateOutlet=\"templateConfig; context: { itemContext: config().itemContext }\" />\n </div>\n } @else {\n <div\n class=\"libs-ui-popover-overlay-body libs-ui-font-h7r {{ config().classIncludeOverlayBody || '' }}\"\n LibsUiComponentsScrollOverlayDirective\n [options]=\"config().scrollOverlayOptions\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.paddingTop.px]=\"config().paddingTop ?? 8\"\n [style.paddingRight.px]=\"config().paddingRight ?? 8\"\n [style.paddingLeft.px]=\"config().paddingLeft ?? 8\"\n [style.paddingBottom.px]=\"config().paddingBottom ?? 8\"\n [innerHtml]=\"config().content || ' ' | translate\"></div>\n }\n }\n</div>\n", styles: ["@-webkit-keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}@keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}.libs-ui-popover-overlay{position:fixed;background-color:#071631;border-radius:8px;z-index:1000;top:-10000px;left:-10000px}.libs-ui-popover-overlay-animation-move{animation:animation-move ease var(--libs-ui-popover-overlay-time-animation-time)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow{position:absolute;width:12px;height:6px;fill:#071631}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=bottom]{transform:rotate(180deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=left]{transform:rotate(270deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=right]{transform:rotate(90deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-white-theme{fill:#fff}.libs-ui-popover-overlay .libs-ui-popover-overlay-body{color:#fff;word-break:break-word}.libs-ui-popover-overlay .libs-ui-popover-overlay-body[isTemplate=true]{font-size:inherit}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme{background-color:#fff;box-shadow:0 1px 1px #00143305,0 4px 16px #0014331a}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme .libs-ui-popover-overlay-body{color:#071631}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: LibsUiComponentsScrollOverlayDirective, selector: "[LibsUiComponentsScrollOverlayDirective]", inputs: ["debugMode", "ignoreInit", "classContainer", "options", "elementCheckScrollX", "elementCheckScrollY", "elementScroll"], outputs: ["outScroll", "outScrollX", "outScrollY", "outScrollTop", "outScrollBottom"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
302
304
  }
303
305
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsPopoverOverlayComponent, decorators: [{
304
306
  type: Component,
305
- args: [{ selector: 'libs_ui-components-popover-overlay', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, NgStyle, AsyncPipe, LibsUiComponentsScrollOverlayDirective, NgTemplateOutlet], template: "<div #container\n class=\"libs-ui-popover-overlay {{ config().classInclude || '' }}\"\n [class.libs-ui-popover-overlay-white-theme]=\"config().whiteTheme\"\n [class.libs-ui-popover-overlay-animation-move]=\"config().animationConfig\"\n [ngStyle]=\"config().ngStyles || {}\"\n [style.width]=\"config().width ? config().width + 'px' : 'auto'\"\n [style.maxWidth.px]=\"config().maxWidth\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n [style.zIndex]=\"config().zIndex || 10\">\n @if (config()) {\n @if (!config().ignoreArrow) {\n <div class='relative'>\n <svg\n [class]=\"'libs-ui-popover-overlay-arrow '+ arrowClass() + ( config().whiteTheme ? ' libs-ui-popover-overlay-white-theme ' : '')\"\n [style.top.px]=\"arrowTop()\"\n [style.left.px]=\"arrowLeft()\"\n [attr.direction]='outEvent | async'>\n <polygon points=\"0,0 6,6 12,0\" />\n Sorry, your browser does not support inline SVG.\n </svg>\n </div>\n }\n @if (config().template; as templateConfig) {\n <div LibsUiComponentsScrollOverlayDirective\n class=\"libs-ui-popover-overlay-body {{ config().classIncludeOverlayBody || '' }}\"\n [attr.isTemplate]=\"true\"\n [style.max-height]=\"(config().maxHeight)+'px'\">\n <ng-container *ngTemplateOutlet=\"templateConfig;context:{itemContext:config().itemContext}\" />\n </div>\n } @else {\n <div class=\"libs-ui-popover-overlay-body libs-ui-font-h7r {{ config().classIncludeOverlayBody || '' }}\"\n LibsUiComponentsScrollOverlayDirective\n [options]=\"config().scrollOverlayOptions\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.paddingTop.px]=\"config().paddingTop ?? 8\"\n [style.paddingRight.px]=\"config().paddingRight ?? 8\"\n [style.paddingLeft.px]=\"config().paddingLeft ?? 8\"\n [style.paddingBottom.px]=\"config().paddingBottom ?? 8\"\n [innerHtml]=\"(config().content || ' ') | translate\">\n </div>\n }\n }\n\n</div>\n", styles: ["@-webkit-keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}@keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}.libs-ui-popover-overlay{position:fixed;background-color:#071631;border-radius:8px;z-index:1000;top:-10000px;left:-10000px}.libs-ui-popover-overlay-animation-move{animation:animation-move ease var(--libs-ui-popover-overlay-time-animation-time)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow{position:absolute;width:12px;height:6px;fill:#071631}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=bottom]{transform:rotate(180deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=left]{transform:rotate(270deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=right]{transform:rotate(90deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-white-theme{fill:#fff}.libs-ui-popover-overlay .libs-ui-popover-overlay-body{color:#fff;word-break:break-word}.libs-ui-popover-overlay .libs-ui-popover-overlay-body[isTemplate=true]{font-size:inherit}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme{background-color:#fff;box-shadow:0 1px 1px #00143305,0 4px 16px #0014331a}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme .libs-ui-popover-overlay-body{color:#071631}\n"] }]
307
+ args: [{ selector: 'libs_ui-components-popover-overlay', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, NgStyle, AsyncPipe, LibsUiComponentsScrollOverlayDirective, NgTemplateOutlet], template: "<div\n #container\n class=\"libs-ui-popover-overlay {{ config().classInclude || '' }}\"\n [class.libs-ui-popover-overlay-white-theme]=\"config().whiteTheme\"\n [class.libs-ui-popover-overlay-animation-move]=\"config().animationConfig\"\n [ngStyle]=\"config().ngStyles || {}\"\n [style.width]=\"config().width ? config().width + 'px' : 'auto'\"\n [style.maxWidth.px]=\"config().maxWidth\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n [style.zIndex]=\"config().zIndex || 10\">\n @if (config()) {\n @if (!config().ignoreArrow) {\n <div class=\"relative\">\n <svg\n [class]=\"'libs-ui-popover-overlay-arrow ' + arrowClass() + (config().whiteTheme ? ' libs-ui-popover-overlay-white-theme ' : '')\"\n [style.top.px]=\"arrowTop()\"\n [style.left.px]=\"arrowLeft()\"\n [attr.direction]=\"outEvent | async\">\n <polygon points=\"0,0 6,6 12,0\" />\n Sorry, your browser does not support inline SVG.\n </svg>\n </div>\n }\n @if (config().template; as templateConfig) {\n <div\n LibsUiComponentsScrollOverlayDirective\n class=\"libs-ui-popover-overlay-body {{ config().classIncludeOverlayBody || '' }}\"\n [attr.isTemplate]=\"true\"\n [style.max-height]=\"config().maxHeight + 'px'\">\n <ng-container *ngTemplateOutlet=\"templateConfig; context: { itemContext: config().itemContext }\" />\n </div>\n } @else {\n <div\n class=\"libs-ui-popover-overlay-body libs-ui-font-h7r {{ config().classIncludeOverlayBody || '' }}\"\n LibsUiComponentsScrollOverlayDirective\n [options]=\"config().scrollOverlayOptions\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.paddingTop.px]=\"config().paddingTop ?? 8\"\n [style.paddingRight.px]=\"config().paddingRight ?? 8\"\n [style.paddingLeft.px]=\"config().paddingLeft ?? 8\"\n [style.paddingBottom.px]=\"config().paddingBottom ?? 8\"\n [innerHtml]=\"config().content || ' ' | translate\"></div>\n }\n }\n</div>\n", styles: ["@-webkit-keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}@keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}.libs-ui-popover-overlay{position:fixed;background-color:#071631;border-radius:8px;z-index:1000;top:-10000px;left:-10000px}.libs-ui-popover-overlay-animation-move{animation:animation-move ease var(--libs-ui-popover-overlay-time-animation-time)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow{position:absolute;width:12px;height:6px;fill:#071631}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=bottom]{transform:rotate(180deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=left]{transform:rotate(270deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=right]{transform:rotate(90deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-white-theme{fill:#fff}.libs-ui-popover-overlay .libs-ui-popover-overlay-body{color:#fff;word-break:break-word}.libs-ui-popover-overlay .libs-ui-popover-overlay-body[isTemplate=true]{font-size:inherit}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme{background-color:#fff;box-shadow:0 1px 1px #00143305,0 4px 16px #0014331a}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme .libs-ui-popover-overlay-body{color:#071631}\n"] }]
306
308
  }] });
307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvb3ZlcmxheS9vdmVybGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9wb3BvdmVyL3NyYy9vdmVybGF5L292ZXJsYXkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBYSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySCxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUU1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFVaEUsTUFBTSxPQUFPLHVDQUF1QztJQUNsRCxnQkFBZ0I7SUFDTixnQkFBZ0IsR0FBRyxNQUFNLENBQXlCLFFBQVEsQ0FBQyxDQUFDO0lBQzVELFVBQVUsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDaEMsR0FBRyxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUN4QixJQUFJLEdBQUcsTUFBTSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lB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VUFBVSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDL0YsT0FBTyxVQUFVLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDO1FBQ3pELENBQUM7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVztRQUNULFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQzt3R0EvVlUsdUNBQXVDOzRGQUF2Qyx1Q0FBdUMsc05DbkJwRCx5akVBOENBLCs3Q0Q3QlksZUFBZSw0RkFBRSxPQUFPLHNFQUFFLFNBQVMsOENBQUUsc0NBQXNDLDZTQUFFLGdCQUFnQjs7NEZBRTVGLHVDQUF1QztrQkFUbkQsU0FBUzsrQkFFRSxvQ0FBb0MsY0FHbEMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0NBQXNDLEVBQUUsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBpbmplY3QsIHNpZ25hbCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZSB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtc2Nyb2xsLW92ZXJsYXknO1xuaW1wb3J0IHsgSUJvdW5kaW5nQ2xpZW50UmVjdCB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgVXRpbHNVcmxTZWFyY2hQYXJhbXMsIGNsb25lRGVlcCwgY2xvbmVJQm91bmRpbmdDbGllbnRSZWN0LCBnZXRWaWV3cG9ydCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgaW50ZXJ2YWwsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSVBvcG92ZXJPdmVybGF5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9vdmVybGF5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBUWVBFX1BPUE9WRVJfRElSRUNUSU9OIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb3BvdmVyLnR5cGUnO1xuaW1wb3J0IHsgZ2V0TGlzdGRpcmVjdGlvbnMgfSBmcm9tICcuLi9kZWZpbmVzL2NvbnN0YW50cy5kZWZpbmUnO1xuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLXBvcG92ZXItb3ZlcmxheScsXG4gIHRlbXBsYXRlVXJsOiAnLi9vdmVybGF5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb3ZlcmxheS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZSwgTmdTdHlsZSwgQXN5bmNQaXBlLCBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZSwgTmdUZW1wbGF0ZU91dGxldF1cbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJPdmVybGF5Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyogUFJPUEVSVElFUyAqL1xuICBwcm90ZWN0ZWQgY3VycmVudERpcmVjdGlvbiA9IHNpZ25hbDxUWVBFX1BPUE9WRVJfRElSRUNUSU9OPignYm90dG9tJyk7XG4gIHByb3RlY3RlZCBhcnJvd0NsYXNzID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBwcm90ZWN0ZWQgdG9wID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCBsZWZ0ID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCBhcnJvd0xlZnQgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIGFycm93VG9wID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCBjb25maWcgPSBzaWduYWw8SVBvcG92ZXJPdmVybGF5Pih7fSk7XG4gIHByaXZhdGUgdGltZW91dCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcml2YXRlIG9uRGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLy8gI3JlZ2lvbiBPVVRQVVRcbiAgcmVhZG9ubHkgb3V0RXZlbnQ6IFN1YmplY3Q8VFlQRV9QT1BPVkVSX0RJUkVDVElPTj4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIC8qIFZJRVcgQ0hJTEQgKi9cbiAgcHJpdmF0ZSBjb250YWluZXIgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZj4oJ2NvbnRhaW5lcicpO1xuXG4gIC8vICNyZWdpb24gSU5KRUNUXG4gIHByaXZhdGUgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICAvLyAjcmVnaW9uIEZVTkNUSU9OU1xuICBwdWJsaWMgZ2V0IEVsZW1lbnRSZWYoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgQ29udGFpbmVyRWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250YWluZXIoKS5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHVibGljIHNldENvbmZpZyhyZWN0T3JpZ2luOiBJQm91bmRpbmdDbGllbnRSZWN0LCBjb25maWc6IElQb3BvdmVyT3ZlcmxheSwgaXNBZGRDb250ZW50VG9QYXJlbnREb2N1bWVudD86IGJvb2xlYW4pIHtcbiAgICBpc0FkZENvbnRlbnRUb1BhcmVudERvY3VtZW50ID0gaXNBZGRDb250ZW50VG9QYXJlbnREb2N1bWVudCB8fCBjb25maWcuaXNBZGRDb250ZW50VG9QYXJlbnREb2N1bWVudDtcbiAgICByZWN0T3JpZ2luID0gY2xvbmVJQm91bmRpbmdDbGllbnRSZWN0KHJlY3RPcmlnaW4pO1xuICAgIHRoaXMuY29uZmlnLnNldChjbG9uZURlZXAoY29uZmlnKSk7XG5cbiAgICB0aGlzLmNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuc3R5bGUub3BhY2l0eSA9IDA7XG4gICAgaWYgKHRoaXMuY29uZmlnKCkud2lkdGhCeVBhcmVudCkge1xuICAgICAgdGhpcy5jb25maWcudXBkYXRlKGNvbmZpZyA9PiAoeyAuLi5jb25maWcsIHdpZHRoOiByZWN0T3JpZ2luLndpZHRoIC0gKGNvbmZpZz8ucGFyZW50Qm9yZGVyV2lkdGggfHwgMCkgKiAyIH0pKTtcbiAgICB9XG4gICAgbGV0IHZpZXdQb3J0ID0gZ2V0Vmlld3BvcnQoKTtcbiAgICBsZXQgcmVjdEZyYW1lOiBJQm91bmRpbmdDbGllbnRSZWN0IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgaWYgKGlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQpIHtcbiAgICAgIHZpZXdQb3J0ID0gZ2V0Vmlld3BvcnQod2luZG93LnBhcmVudCk7XG4gICAgICBjb25zdCB1cmwgPSBuZXcgVXRpbHNVcmxTZWFyY2hQYXJhbXMobG9jYXRpb24uaHJlZik7XG4gICAgICBjb25zdCBpZnJhbWVJZCA9IHVybC5nZXQoJ2lmcmFtZUlkJyk7XG5cbiAgICAgIHJlY3RGcmFtZSA9IHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYGlmcmFtZS0ke2lmcmFtZUlkfWApPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGlmIChyZWN0RnJhbWUpIHtcbiAgICAgICAgcmVjdE9yaWdpbi50b3AgKz0gcmVjdEZyYW1lLnRvcDtcbiAgICAgICAgcmVjdE9yaWdpbi5sZWZ0ICs9IHJlY3RGcmFtZS5sZWZ0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZygpLm1heEhlaWdodCA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5jb25maWcudXBkYXRlKGNvbmZpZyA9PiAoeyAuLi5jb25maWcsIG1heEhlaWdodDogdmlld1BvcnQuaGVpZ2h0IC0gcmVjdE9yaWdpbi50b3AgLSA0NCB9KSk7XG4gICAgfVxuXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCgpKTtcbiAgICB0aGlzLnNldFZhcmlhYmxlQ3NzKCk7XG4gICAgdGhpcy5zZXREaXJlY3Rpb25zKHJlY3RPcmlnaW4sIHZpZXdQb3J0LCByZWN0RnJhbWUpO1xuICAgIGxldCByZWN0Q29udGVudCA9IGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdCh0aGlzLmNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gICAgaWYgKHJlY3RGcmFtZSkge1xuICAgICAgcmVjdENvbnRlbnQudG9wICs9IHJlY3RGcmFtZS50b3A7XG4gICAgICByZWN0Q29udGVudC5sZWZ0ICs9IHJlY3RGcmFtZS5sZWZ0O1xuICAgIH1cblxuICAgIGludGVydmFsKDI1MCkucGlwZSh0YWtlKDQpLCB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgcmVjdCA9IGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdCh0aGlzLmNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gICAgICBpZiAocmVjdEZyYW1lKSB7XG4gICAgICAgIHJlY3QudG9wICs9IHJlY3RGcmFtZS50b3A7XG4gICAgICAgIHJlY3QubGVmdCArPSByZWN0RnJhbWUubGVmdDtcbiAgICAgIH1cbiAgICAgIGlmIChyZWN0LndpZHRoICE9PSByZWN0Q29udGVudC53aWR0aCB8fCByZWN0LmhlaWdodCAhPT0gcmVjdENvbnRlbnQuaGVpZ2h0IHx8IHJlY3QudG9wICE9PSByZWN0Q29udGVudC50b3AgfHwgcmVjdC5sZWZ0ICE9PSByZWN0Q29udGVudC5sZWZ0KSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQoKSk7XG4gICAgICAgIHRoaXMuc2V0RGlyZWN0aW9ucyhyZWN0T3JpZ2luLCB2aWV3UG9ydCwgcmVjdEZyYW1lKTtcbiAgICAgICAgcmVjdENvbnRlbnQgPSByZWN0O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREaXJlY3Rpb25zKHJlY3RPcmlnaW46IElCb3VuZGluZ0NsaWVudFJlY3QsIHZpZXdQb3J0OiB7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH0sIHJlY3RGcmFtZT86IElCb3VuZGluZ0NsaWVudFJlY3QpIHtcbiAgICBjb25zdCBkaXJlY3Rpb25zID0gZ2V0TGlzdGRpcmVjdGlvbnModGhpcy5jb25maWcoKS5kaXJlY3Rpb24gfHwgJ2JvdHRvbScpO1xuICAgIGNvbnN0IHBvc2l0aW9uTGFzdCA9IGRpcmVjdGlvbnMubGVuZ3RoIC0gMTtcblxuICAgIHRoaXMudGltZW91dC5zZXQoc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZWN0Q29udGVudCA9IGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdCh0aGlzLmNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gICAgICBpZiAocmVjdEZyYW1lKSB7XG4gICAgICAgIHJlY3RDb250ZW50LnRvcCArPSByZWN0RnJhbWUudG9wO1xuICAgICAgICByZWN0Q29udGVudC5sZWZ0ICs9IHJlY3RGcmFtZS5sZWZ0O1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBpbmRleCBpbiBkaXJlY3Rpb25zKSB7XG4gICAgICAgIGlmIChhd2FpdCB0aGlzLmxvb3BEaXJlY3Rpb24ocmVjdE9yaWdpbiwgcmVjdENvbnRlbnQsIGRpcmVjdGlvbnNbaW5kZXhdLCBwb3NpdGlvbkxhc3QgPT09ICtpbmRleCwgdmlld1BvcnQpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgNTApKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9vcERpcmVjdGlvbihyZWN0T3JpZ2luOiBJQm91bmRpbmdDbGllbnRSZWN0LCByZWN0Q29udGVudDogSUJvdW5kaW5nQ2xpZW50UmVjdCwgZGlyZWN0aW9uOiBUWVBFX1BPUE9WRVJfRElSRUNUSU9OLCBpc0xhc3Q6IGJvb2xlYW4sIHZpZXdQb3J0OiB7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBjb25zdCBwb3NpdGlvbk1vZGUgPSB0aGlzLmNvbmZpZygpLnBvc2l0aW9uPy5tb2RlIHx8ICdzdGFydCc7XG4gICAgICBjb25zdCB7IHBvc2l0aW9uIH0gPSB0aGlzLmNvbmZpZygpO1xuICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuc2V0UG9zaXRpb24oZGlyZWN0aW9uLCByZWN0T3JpZ2luLCAocmVjdENvbnRlbnQgYXMgSUJvdW5kaW5nQ2xpZW50UmVjdCksIHZpZXdQb3J0LCBpc0xhc3QpO1xuXG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICBpZiAocG9zaXRpb24pIHtcbiAgICAgICAgICBwb3NpdGlvbi5tb2RlID0gcG9zaXRpb25Nb2RlID09PSAnY2VudGVyJyB8fCBwb3NpdGlvbk1vZGUgPT09ICdzdGFydCcgPyAnZW5kJyA6ICdzdGFydCc7XG4gICAgICAgICAgaWYgKCF0aGlzLmNvbmZpZygpLmlnbm9yZUFycm93ICYmIHBvc2l0aW9uLmF1dG9VcGRhdGVQb3NpdGlvbikge1xuICAgICAgICAgICAgcG9zaXRpb24uZGlzdGFuY2UgPSBwb3NpdGlvbi5tb2RlID09PSAnZW5kJyA/IHBvc2l0aW9uLmF1dG9VcGRhdGVQb3NpdGlvbi5lbmREaXN0YW5jZSA6IHBvc2l0aW9uLmF1dG9VcGRhdGVQb3NpdGlvbi5zdGFydERpc3RhbmNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNvbmZpZy51cGRhdGUoY29uZmlnID0+ICh7IC4uLmNvbmZpZyB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gdGhpcy5zZXRQb3NpdGlvbihkaXJlY3Rpb24sIHJlY3RPcmlnaW4sIChyZWN0Q29udGVudCBhcyBJQm91bmRpbmdDbGllbnRSZWN0KSwgdmlld1BvcnQsIGlzTGFzdCk7XG4gICAgICB9XG4gICAgICBpZiAoIXJlc3VsdCAmJiBwb3NpdGlvbk1vZGUgPT09ICdjZW50ZXInKSB7XG4gICAgICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgICAgIHBvc2l0aW9uLm1vZGUgPSBwb3NpdGlvbi5tb2RlID09PSAnc3RhcnQnID8gJ2VuZCcgOiAnc3RhcnQnO1xuICAgICAgICAgIHRoaXMuY29uZmlnLnVwZGF0ZShjb25maWcgPT4gKHsgLi4uY29uZmlnIH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSB0aGlzLnNldFBvc2l0aW9uKGRpcmVjdGlvbiwgcmVjdE9yaWdpbiwgKHJlY3RDb250ZW50IGFzIElCb3VuZGluZ0NsaWVudFJlY3QpLCB2aWV3UG9ydCwgaXNMYXN0KTtcbiAgICAgIH1cbiAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgICAgIHBvc2l0aW9uLm1vZGUgPSBwb3NpdGlvbk1vZGU7XG4gICAgICAgICAgdGhpcy5jb25maWcudXBkYXRlKGNvbmZpZyA9PiAoeyAuLi5jb25maWcgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc29sdmUoZmFsc2UpO1xuICAgICAgfVxuICAgICAgdGhpcy5jdXJyZW50RGlyZWN0aW9uLnNldChkaXJlY3Rpb24pO1xuICAgICAgdGhpcy5zZXRWYXJpYWJsZUNzcygpO1xuICAgICAgdGhpcy5zZXRDbGFzc0Fycm93KGRpcmVjdGlvbik7XG4gICAgICB0aGlzLmNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuc3R5bGUub3BhY2l0eSA9IDE7XG4gICAgICB0aGlzLm91dEV2ZW50Lm5leHQoZGlyZWN0aW9uKTtcblxuICAgICAgcmV0dXJuIHJlc29sdmUodHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFBvc2l0aW9uKGRpcmVjdGlvbjogVFlQRV9QT1BPVkVSX0RJUkVDVElPTiwgcmVjdE9yaWdpbjogSUJvdW5kaW5nQ2xpZW50UmVjdCwgcmVjdENvbnRlbnQ6IElCb3VuZGluZ0NsaWVudFJlY3QsIHZpZXdQb3J0OiB7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH0sIGlzTGFzdDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGhhbGZTcXVhcmUgPSA2O1xuICAgIGNvbnN0IGRpc3RhbmNlQXJyb3cgPSA0O1xuICAgIGxldCBib3R0b21Qb3NpdGlvblJlY3RDb250ZW50ID0gMDtcbiAgICBsZXQgcG9zaXRpb25Ub3AgPSAwO1xuICAgIGxldCBwb3NpdGlvbkxlZnQgPSAwO1xuICAgIGxldCB0b3AgPSAwO1xuICAgIGxldCBsZWZ0ID0gMDtcbiAgICBjb25zdCBjb25maWdWYWx1ZSA9IHRoaXMuY29uZmlnKCk7XG5cbiAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgcG9zaXRpb25Ub3AgPSByZWN0T3JpZ2luLnRvcCArIHJlY3RPcmlnaW4uaGVpZ2h0ICsgZGlzdGFuY2VBcnJvdztcbiAgICAgICAgcG9zaXRpb25MZWZ0ID0gcmVjdE9yaWdpbi5sZWZ0ICsgcmVjdE9yaWdpbi53aWR0aCAvIDIgLSBoYWxmU3F1YXJlO1xuICAgICAgICB0b3AgPSBwb3NpdGlvblRvcCArIGhhbGZTcXVhcmU7XG4gICAgICAgIGxlZnQgPSBwb3NpdGlvbkxlZnQgLSByZWN0Q29udGVudC53aWR0aCAvIDIgKyBoYWxmU3F1YXJlO1xuICAgICAgICBpZiAoY29uZmlnVmFsdWUuaWdub3JlQXJyb3cpIHtcbiAgICAgICAgICB0b3AgPSB0b3AgLSBoYWxmU3F1YXJlIC0gZGlzdGFuY2VBcnJvdztcbiAgICAgICAgfVxuICAgICAgICB0b3AgKz0gY29uZmlnVmFsdWUuZGlyZWN0aW9uRGlzdGFuY2UgfHwgMDtcbiAgICAgICAgaWYgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uPy5tb2RlID09PSAnc3RhcnQnKSB7XG4gICAgICAgICAgbGVmdCA9IHJlY3RPcmlnaW4ubGVmdCArIChjb25maWdWYWx1ZS5wb3NpdGlvbi5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZmlnVmFsdWUucG9zaXRpb24/Lm1vZGUgPT09ICdlbmQnKSB7XG4gICAgICAgICAgbGVmdCA9IHJlY3RPcmlnaW4ubGVmdCArIHJlY3RPcmlnaW4ud2lkdGggLSByZWN0Q29udGVudC53aWR0aCArIChjb25maWdWYWx1ZS5wb3NpdGlvbi5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuICAgICAgICBsZWZ0ICs9IChjb25maWdWYWx1ZS5wYXJlbnRCb3JkZXJXaWR0aCB8fCAwKTtcblxuICAgICAgICB0aGlzLmFycm93TGVmdC5zZXQocG9zaXRpb25MZWZ0IC0gbGVmdCk7XG4gICAgICAgIHRoaXMuYXJyb3dUb3Auc2V0KC02KTtcbiAgICAgICAgdGhpcy50b3Auc2V0KHRvcCk7XG4gICAgICAgIHRoaXMubGVmdC5zZXQobGVmdCk7XG5cbiAgICAgICAgaWYgKHRvcCArIHJlY3RDb250ZW50LmhlaWdodCA8IHZpZXdQb3J0LmhlaWdodCAmJiBsZWZ0ID49IDAgJiYgbGVmdCArIHJlY3RDb250ZW50LndpZHRoIDwgdmlld1BvcnQud2lkdGgpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNMYXN0KSB7XG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy51cGRhdGUoY29uZmlnID0+ICh7IC4uLmNvbmZpZywgbWF4SGVpZ2h0OiB2aWV3UG9ydC5oZWlnaHQgLSByZWN0T3JpZ2luLnRvcCAtIHJlY3RPcmlnaW4uaGVpZ2h0IH0pKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5sZWZ0LnNldCh0aGlzLmdldExlZnRQb3NpdGlvbklzTGFzdChpc0xhc3QsIGxlZnQgPj0gMCA/IGxlZnQgOiAwLCB2aWV3UG9ydCwgcmVjdE9yaWdpbiwgcmVjdENvbnRlbnQsIGhhbGZTcXVhcmUpKTtcblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIHBvc2l0aW9uVG9wID0gcmVjdE9yaWdpbi50b3AgKyByZWN0T3JpZ2luLmhlaWdodCAvIDIgLSBoYWxmU3F1YXJlO1xuICAgICAgICBwb3NpdGlvbkxlZnQgPSByZWN0T3JpZ2luLmxlZnQgKyByZWN0T3JpZ2luLndpZHRoICsgZGlzdGFuY2VBcnJvdztcbiAgICAgICAgdG9wID0gcG9zaXRpb25Ub3AgLSByZWN0Q29udGVudC5oZWlnaHQgLyAyICsgaGFsZlNxdWFyZTtcbiAgICAgICAgbGVmdCA9IHBvc2l0aW9uTGVmdCArIGhhbGZTcXVhcmU7XG5cbiAgICAgICAgaWYgKGNvbmZpZ1ZhbHVlLmlnbm9yZUFycm93KSB7XG4gICAgICAgICAgbGVmdCA9IHBvc2l0aW9uTGVmdCAtIGRpc3RhbmNlQXJyb3c7XG4gICAgICAgIH1cblxuICAgICAgICBsZWZ0ICs9IGNvbmZpZ1ZhbHVlLmRpcmVjdGlvbkRpc3RhbmNlIHx8IDA7XG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgIHRvcCA9IHJlY3RPcmlnaW4udG9wICsgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uPy5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICB0b3AgPSByZWN0T3JpZ2luLnRvcCArIHJlY3RPcmlnaW4uaGVpZ2h0IC0gcmVjdENvbnRlbnQuaGVpZ2h0ICsgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uLmRpc3RhbmNlIHx8IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgYm90dG9tUG9zaXRpb25SZWN0Q29udGVudCA9IHRvcCArIHJlY3RDb250ZW50LmhlaWdodDtcblxuICAgICAgICBpZiAoYm90dG9tUG9zaXRpb25SZWN0Q29udGVudCA+IHZpZXdQb3J0LmhlaWdodCkge1xuICAgICAgICAgIHRvcCA9IHRvcCAtIChib3R0b21Qb3NpdGlvblJlY3RDb250ZW50IC0gdmlld1BvcnQuaGVpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXJyb3dUb3Auc2V0KHBvc2l0aW9uVG9wIC0gdG9wICsgMik7XG4gICAgICAgIHRoaXMuYXJyb3dMZWZ0LnNldCgtOSk7XG5cbiAgICAgICAgdGhpcy50b3Auc2V0KHRvcCk7XG4gICAgICAgIHRoaXMubGVmdC5zZXQobGVmdCk7XG4gICAgICAgIGlmICh0b3AgPiAwICYmIGxlZnQgKyByZWN0Q29udGVudC53aWR0aCA8IHZpZXdQb3J0LndpZHRoKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTGFzdCkge1xuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZykge1xuICAgICAgICAgICAgdGhpcy5jb25maWcudXBkYXRlKGNvbmZpZyA9PiAoeyAuLi5jb25maWcsIG1heEhlaWdodDogdmlld1BvcnQuaGVpZ2h0IH0pKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5sZWZ0LnNldCh0aGlzLmdldExlZnRQb3NpdGlvbklzTGFzdChpc0xhc3QsIGxlZnQgPj0gMCA/IGxlZnQgOiAwLCB2aWV3UG9ydCwgcmVjdE9yaWdpbiwgcmVjdENvbnRlbnQsIGhhbGZTcXVhcmUpKTtcblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICBwb3NpdGlvblRvcCA9IHJlY3RPcmlnaW4udG9wICsgcmVjdE9yaWdpbi5oZWlnaHQgLyAyIC0gaGFsZlNxdWFyZTtcbiAgICAgICAgcG9zaXRpb25MZWZ0ID0gcmVjdE9yaWdpbi5sZWZ0IC0gKGhhbGZTcXVhcmUgKiAyKSAtIGRpc3RhbmNlQXJyb3c7XG4gICAgICAgIHRvcCA9IHBvc2l0aW9uVG9wIC0gcmVjdENvbnRlbnQuaGVpZ2h0IC8gMiArIGhhbGZTcXVhcmU7XG4gICAgICAgIGxlZnQgPSBwb3NpdGlvbkxlZnQgLSByZWN0Q29udGVudC53aWR0aCArIGhhbGZTcXVhcmU7XG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5pZ25vcmVBcnJvdykge1xuICAgICAgICAgIGxlZnQgPSBsZWZ0ICsgaGFsZlNxdWFyZSArIGRpc3RhbmNlQXJyb3c7XG4gICAgICAgIH1cblxuICAgICAgICBsZWZ0IC09IGNvbmZpZ1ZhbHVlPy5kaXJlY3Rpb25EaXN0YW5jZSB8fCAwO1xuICAgICAgICBpZiAoY29uZmlnVmFsdWUucG9zaXRpb24/Lm1vZGUgPT09ICdzdGFydCcpIHtcbiAgICAgICAgICB0b3AgPSByZWN0T3JpZ2luLnRvcCArIChjb25maWdWYWx1ZS5wb3NpdGlvbi5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICB0b3AgPSByZWN0T3JpZ2luLnRvcCArIHJlY3RPcmlnaW4uaGVpZ2h0IC0gcmVjdENvbnRlbnQuaGVpZ2h0ICsgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uLmRpc3RhbmNlIHx8IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgYm90dG9tUG9zaXRpb25SZWN0Q29udGVudCA9IHRvcCArIHJlY3RDb250ZW50LmhlaWdodDtcblxuICAgICAgICBpZiAoYm90dG9tUG9zaXRpb25SZWN0Q29udGVudCA+IHZpZXdQb3J0LmhlaWdodCkge1xuICAgICAgICAgIHRvcCA9IHRvcCAtIChib3R0b21Qb3NpdGlvblJlY3RDb250ZW50IC0gdmlld1BvcnQuaGVpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXJyb3dUb3Auc2V0KHBvc2l0aW9uVG9wIC0gdG9wICsgMik7XG4gICAgICAgIHRoaXMuYXJyb3dMZWZ0LnNldChyZWN0Q29udGVudC53aWR0aCAtIDMpO1xuXG4gICAgICAgIHRoaXMudG9wLnNldCh0b3ApO1xuICAgICAgICB0aGlzLmxlZnQuc2V0KGxlZnQpO1xuICAgICAgICBpZiAobGVmdCA+IDAgJiYgdG9wID4gMCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTGFzdCkge1xuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZykge1xuICAgICAgICAgICAgdGhpcy5jb25maWcudXBkYXRlKGNvbmZpZyA9PiAoeyAuLi5jb25maWcsIG1heEhlaWdodDogdmlld1BvcnQuaGVpZ2h0IH0pKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5sZWZ0LnNldCh0aGlzLmdldExlZnRQb3NpdGlvbklzTGFzdChpc0xhc3QsIGxlZnQgPj0gMCA/IGxlZnQgOiAwLCB2aWV3UG9ydCwgcmVjdE9yaWdpbiwgcmVjdENvbnRlbnQsIGhhbGZTcXVhcmUpKTtcblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBwb3NpdGlvblRvcCA9IHJlY3RPcmlnaW4udG9wIC0gKGhhbGZTcXVhcmUgKiAyKSAtIGRpc3RhbmNlQXJyb3c7XG4gICAgICAgIHBvc2l0aW9uTGVmdCA9IHJlY3RPcmlnaW4ubGVmdCArIHJlY3RPcmlnaW4ud2lkdGggLyAyIC0gaGFsZlNxdWFyZTtcbiAgICAgICAgdG9wID0gcG9zaXRpb25Ub3AgLSByZWN0Q29udGVudC5oZWlnaHQgKyBoYWxmU3F1YXJlO1xuICAgICAgICBsZWZ0ID0gcG9zaXRpb25MZWZ0IC0gcmVjdENvbnRlbnQud2lkdGggLyAyICsgaGFsZlNxdWFyZTtcblxuICAgICAgICBpZiAoY29uZmlnVmFsdWUuaWdub3JlQXJyb3cpIHtcbiAgICAgICAgICB0b3AgPSB0b3AgKyBoYWxmU3F1YXJlICsgZGlzdGFuY2VBcnJvdztcbiAgICAgICAgfVxuXG4gICAgICAgIHRvcCAtPSBjb25maWdWYWx1ZS5kaXJlY3Rpb25EaXN0YW5jZSB8fCAwO1xuXG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbiAmJiBjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgIGxlZnQgPSByZWN0T3JpZ2luLmxlZnQgKyAoY29uZmlnVmFsdWUucG9zaXRpb24uZGlzdGFuY2UgfHwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnVmFsdWUucG9zaXRpb24gJiYgY29uZmlnVmFsdWUucG9zaXRpb24/Lm1vZGUgPT09ICdlbmQnKSB7XG4gICAgICAgICAgbGVmdCA9IHJlY3RPcmlnaW4ubGVmdCArIHJlY3RPcmlnaW4ud2lkdGggLSByZWN0Q29udGVudC53aWR0aCArIChjb25maWdWYWx1ZS5wb3NpdGlvbi5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxlZnQgKz0gKGNvbmZpZ1ZhbHVlLnBhcmVudEJvcmRlcldpZHRoIHx8IDApO1xuICAgICAgICB0aGlzLmFycm93TGVmdC5zZXQocG9zaXRpb25MZWZ0IC0gbGVmdCk7XG4gICAgICAgIHRoaXMuYXJyb3dUb3Auc2V0KHJlY3RDb250ZW50LmhlaWdodCk7XG4gICAgICAgIHRoaXMudG9wLnNldCh0b3ApO1xuICAgICAgICB0aGlzLmxlZnQuc2V0KGxlZnQpO1xuICAgICAgICBpZiAodG9wID4gMCAmJiBsZWZ0ID49IDAgJiYgbGVmdCArIHJlY3RDb250ZW50LndpZHRoIDwgdmlld1BvcnQud2lkdGgpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0xhc3QpIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZy51cGRhdGUoY29uZmlnID0+ICh7IC4uLmNvbmZpZywgbWF4SGVpZ2h0OiB2aWV3UG9ydC5oZWlnaHQgLSAodmlld1BvcnQuaGVpZ2h0IC0gcmVjdE9yaWdpbi50b3ApIH0pKTtcbiAgICAgICAgICB0b3AgPSAwO1xuICAgICAgICAgIHRoaXMubGVmdC5zZXQodGhpcy5nZXRMZWZ0UG9zaXRpb25Jc0xhc3QoaXNMYXN0LCBsZWZ0ID49IDAgPyBsZWZ0IDogMCwgdmlld1BvcnQsIHJlY3RPcmlnaW4sIHJlY3RDb250ZW50LCBoYWxmU3F1YXJlKSk7XG5cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldENsYXNzQXJyb3coZGlyZWN0aW9uOiBUWVBFX1BPUE9WRVJfRElSRUNUSU9OKSB7XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuYXJyb3dDbGFzcy5zZXQoJ2xpYnMtdWktcG9wb3Zlci1vdmVybGF5LWFycm93LXJpZ2h0Jyk7XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb24gPT09ICdsZWZ0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuYXJyb3dDbGFzcy5zZXQoJ2xpYnMtdWktcG9wb3Zlci1vdmVybGF5LWFycm93LWxlZnQnKTtcbiAgICB9XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3RvcCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmFycm93Q2xhc3Muc2V0KCdsaWJzLXVpLXBvcG92ZXItb3ZlcmxheS1hcnJvdy1kb3duJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXJyb3dDbGFzcy5zZXQoJ2xpYnMtdWktcG9wb3Zlci1vdmVybGF5LWFycm93LXVwJyk7XG4gIH1cblxuICBwcml2YXRlIHNldFZhcmlhYmxlQ3NzKCkge1xuICAgIGNvbnN0IGNvbmZpZ1ZhbHVlID0gdGhpcy5jb25maWcoKTtcbiAgICB0aGlzLkNvbnRhaW5lckVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tbGlicy11aS1wb3BvdmVyLW92ZXJsYXktdGltZS1hbmltYXRpb24tdGltZScsIGAke2NvbmZpZ1ZhbHVlLmFuaW1hdGlvbkNvbmZpZz8udGltZSB8fCAuNH1zYCk7XG4gICAgdGhpcy5Db250YWluZXJFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWxpYnMtdWktcG9wb3Zlci1vdmVybGF5LXRpbWUtYW5pbWF0aW9uLWRpc3RhbmNlJywgYCR7dGhpcy5jdXJyZW50RGlyZWN0aW9uKCkgPT09ICd0b3AnID8gJy0nIDogJyd9JHtjb25maWdWYWx1ZS5hbmltYXRpb25Db25maWc/LmRpc3RhbmNlIHx8IDEyfXB4YCk7XG4gIH1cblxuICBwcml2YXRlIGdldExlZnRQb3NpdGlvbklzTGFzdChpc0xhc3Q6IGJvb2xlYW4sIGN1cnJlbnRMZWZ0OiBudW1iZXIsIHZpZXdQb3J0OiB7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH0sIHJlY3RPcmlnaW46IElCb3VuZGluZ0NsaWVudFJlY3QsIHJlY3RDb250ZW50OiBJQm91bmRpbmdDbGllbnRSZWN0LCBoYWxmU3F1YXJlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICh2aWV3UG9ydC53aWR0aCAtIChyZWN0T3JpZ2luLmxlZnQgKyByZWN0T3JpZ2luLndpZHRoICsgcmVjdENvbnRlbnQud2lkdGggKyBoYWxmU3F1YXJlKSA+IDApIHtcbiAgICAgIHJldHVybiByZWN0T3JpZ2luLmxlZnQgKyByZWN0T3JpZ2luLndpZHRoICsgaGFsZlNxdWFyZTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRMZWZ0O1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCgpKTtcbiAgICB0aGlzLm9uRGVzdHJveS5uZXh0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxuXG59XG4iLCI8ZGl2ICNjb250YWluZXJcbiAgY2xhc3M9XCJsaWJzLXVpLXBvcG92ZXItb3ZlcmxheSB7eyBjb25maWcoKS5jbGFzc0luY2x1ZGUgfHwgJycgfX1cIlxuICBbY2xhc3MubGlicy11aS1wb3BvdmVyLW92ZXJsYXktd2hpdGUtdGhlbWVdPVwiY29uZmlnKCkud2hpdGVUaGVtZVwiXG4gIFtjbGFzcy5saWJzLXVpLXBvcG92ZXItb3ZlcmxheS1hbmltYXRpb24tbW92ZV09XCJjb25maWcoKS5hbmltYXRpb25Db25maWdcIlxuICBbbmdTdHlsZV09XCJjb25maWcoKS5uZ1N0eWxlcyB8fCB7fVwiXG4gIFtzdHlsZS53aWR0aF09XCJjb25maWcoKS53aWR0aCA/IGNvbmZpZygpLndpZHRoICsgJ3B4JyA6ICdhdXRvJ1wiXG4gIFtzdHlsZS5tYXhXaWR0aC5weF09XCJjb25maWcoKS5tYXhXaWR0aFwiXG4gIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiY29uZmlnKCkubWF4SGVpZ2h0XCJcbiAgW3N0eWxlLnRvcC5weF09XCJ0b3AoKVwiXG4gIFtzdHlsZS5sZWZ0LnB4XT1cImxlZnQoKVwiXG4gIFtzdHlsZS56SW5kZXhdPVwiY29uZmlnKCkuekluZGV4IHx8IDEwXCI+XG4gIEBpZiAoY29uZmlnKCkpIHtcbiAgICBAaWYgKCFjb25maWcoKS5pZ25vcmVBcnJvdykge1xuICAgICAgPGRpdiBjbGFzcz0ncmVsYXRpdmUnPlxuICAgICAgICA8c3ZnXG4gICAgICAgICAgW2NsYXNzXT1cIidsaWJzLXVpLXBvcG92ZXItb3ZlcmxheS1hcnJvdyAnKyBhcnJvd0NsYXNzKCkgKyAoIGNvbmZpZygpLndoaXRlVGhlbWUgPyAnIGxpYnMtdWktcG9wb3Zlci1vdmVybGF5LXdoaXRlLXRoZW1lICcgOiAnJylcIlxuICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiYXJyb3dUb3AoKVwiXG4gICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiYXJyb3dMZWZ0KClcIlxuICAgICAgICAgIFthdHRyLmRpcmVjdGlvbl09J291dEV2ZW50IHwgYXN5bmMnPlxuICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz1cIjAsMCA2LDYgMTIsMFwiIC8+XG4gICAgICAgICAgU29ycnksIHlvdXIgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBTVkcuXG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoY29uZmlnKCkudGVtcGxhdGU7IGFzIHRlbXBsYXRlQ29uZmlnKSB7XG4gICAgICA8ZGl2IExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlXG4gICAgICAgIGNsYXNzPVwibGlicy11aS1wb3BvdmVyLW92ZXJsYXktYm9keSB7eyBjb25maWcoKS5jbGFzc0luY2x1ZGVPdmVybGF5Qm9keSB8fCAnJyB9fVwiXG4gICAgICAgIFthdHRyLmlzVGVtcGxhdGVdPVwidHJ1ZVwiXG4gICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0XT1cIihjb25maWcoKS5tYXhIZWlnaHQpKydweCdcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlQ29uZmlnO2NvbnRleHQ6e2l0ZW1Db250ZXh0OmNvbmZpZygpLml0ZW1Db250ZXh0fVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJsaWJzLXVpLXBvcG92ZXItb3ZlcmxheS1ib2R5IGxpYnMtdWktZm9udC1oN3Ige3sgY29uZmlnKCkuY2xhc3NJbmNsdWRlT3ZlcmxheUJvZHkgfHwgJycgfX1cIlxuICAgICAgICBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZVxuICAgICAgICBbb3B0aW9uc109XCJjb25maWcoKS5zY3JvbGxPdmVybGF5T3B0aW9uc1wiXG4gICAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiY29uZmlnKCkubWF4SGVpZ2h0XCJcbiAgICAgICAgW3N0eWxlLnBhZGRpbmdUb3AucHhdPVwiY29uZmlnKCkucGFkZGluZ1RvcCA/PyA4XCJcbiAgICAgICAgW3N0eWxlLnBhZGRpbmdSaWdodC5weF09XCJjb25maWcoKS5wYWRkaW5nUmlnaHQgPz8gOFwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nTGVmdC5weF09XCJjb25maWcoKS5wYWRkaW5nTGVmdCA/PyA4XCJcbiAgICAgICAgW3N0eWxlLnBhZGRpbmdCb3R0b20ucHhdPVwiY29uZmlnKCkucGFkZGluZ0JvdHRvbSA/PyA4XCJcbiAgICAgICAgW2lubmVySHRtbF09XCIoY29uZmlnKCkuY29udGVudCB8fCAnICcpIHwgdHJhbnNsYXRlXCI+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIH1cblxuPC9kaXY+XG4iXX0=
309
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvb3ZlcmxheS9vdmVybGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9wb3BvdmVyL3NyYy9vdmVybGF5L292ZXJsYXkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBYSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySCxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUU1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFVaEUsTUFBTSxPQUFPLHVDQUF1QztJQUNsRCxnQkFBZ0I7SUFDTixnQkFBZ0IsR0FBRyxNQUFNLENBQXlCLFFBQVEsQ0FBQyxDQUFDO0lBQzVELFVBQVUsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDaEMsR0FBRyxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUN4QixJQUFJLEdBQUcsTUFBTSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lB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R0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQy9GLE9BQU8sVUFBVSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQztRQUN6RCxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVc7UUFDVCxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7d0dBbFdVLHVDQUF1Qzs0RkFBdkMsdUNBQXVDLHNOQ25CcEQsMmtFQStDQSwrN0NEOUJZLGVBQWUsNEZBQUUsT0FBTyxzRUFBRSxTQUFTLDhDQUFFLHNDQUFzQyw2U0FBRSxnQkFBZ0I7OzRGQUU1Rix1Q0FBdUM7a0JBVG5ELFNBQVM7K0JBRUUsb0NBQW9DLGNBR2xDLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ1N0eWxlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgaW5qZWN0LCBzaWduYWwsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1Njcm9sbE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXNjcm9sbC1vdmVybGF5JztcbmltcG9ydCB7IElCb3VuZGluZ0NsaWVudFJlY3QgfSBmcm9tICdAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzJztcbmltcG9ydCB7IFV0aWxzVXJsU2VhcmNoUGFyYW1zLCBjbG9uZURlZXAsIGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdCwgZ2V0Vmlld3BvcnQgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIGludGVydmFsLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElQb3BvdmVyT3ZlcmxheSB9IGZyb20gJy4uL2ludGVyZmFjZXMvb3ZlcmxheS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVFlQRV9QT1BPVkVSX0RJUkVDVElPTiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9wb3Zlci50eXBlJztcbmltcG9ydCB7IGdldExpc3RkaXJlY3Rpb25zIH0gZnJvbSAnLi4vZGVmaW5lcy9jb25zdGFudHMuZGVmaW5lJztcbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyLW92ZXJsYXknLFxuICB0ZW1wbGF0ZVVybDogJy4vb3ZlcmxheS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL292ZXJsYXkuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtUcmFuc2xhdGVNb2R1bGUsIE5nU3R5bGUsIEFzeW5jUGlwZSwgTGlic1VpQ29tcG9uZW50c1Njcm9sbE92ZXJsYXlEaXJlY3RpdmUsIE5nVGVtcGxhdGVPdXRsZXRdLFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzUG9wb3Zlck92ZXJsYXlDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvKiBQUk9QRVJUSUVTICovXG4gIHByb3RlY3RlZCBjdXJyZW50RGlyZWN0aW9uID0gc2lnbmFsPFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04+KCdib3R0b20nKTtcbiAgcHJvdGVjdGVkIGFycm93Q2xhc3MgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIHByb3RlY3RlZCB0b3AgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIGxlZnQgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIGFycm93TGVmdCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgYXJyb3dUb3AgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIGNvbmZpZyA9IHNpZ25hbDxJUG9wb3Zlck92ZXJsYXk+KHt9KTtcbiAgcHJpdmF0ZSB0aW1lb3V0ID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByaXZhdGUgb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvLyAjcmVnaW9uIE9VVFBVVFxuICByZWFkb25seSBvdXRFdmVudDogU3ViamVjdDxUWVBFX1BPUE9WRVJfRElSRUNUSU9OPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgLyogVklFVyBDSElMRCAqL1xuICBwcml2YXRlIGNvbnRhaW5lciA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPignY29udGFpbmVyJyk7XG5cbiAgLy8gI3JlZ2lvbiBJTkpFQ1RcbiAgcHJpdmF0ZSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIC8vICNyZWdpb24gRlVOQ1RJT05TXG4gIHB1YmxpYyBnZXQgRWxlbWVudFJlZigpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmO1xuICB9XG5cbiAgcHVibGljIGdldCBDb250YWluZXJFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29uZmlnKHJlY3RPcmlnaW46IElCb3VuZGluZ0NsaWVudFJlY3QsIGNvbmZpZzogSVBvcG92ZXJPdmVybGF5LCBpc0FkZENvbnRlbnRUb1BhcmVudERvY3VtZW50PzogYm9vbGVhbikge1xuICAgIGlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQgPSBpc0FkZENvbnRlbnRUb1BhcmVudERvY3VtZW50IHx8IGNvbmZpZy5pc0FkZENvbnRlbnRUb1BhcmVudERvY3VtZW50O1xuICAgIHJlY3RPcmlnaW4gPSBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QocmVjdE9yaWdpbik7XG4gICAgdGhpcy5jb25maWcuc2V0KGNsb25lRGVlcChjb25maWcpKTtcblxuICAgIHRoaXMuY29udGFpbmVyKCkubmF0aXZlRWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gMDtcbiAgICBpZiAodGhpcy5jb25maWcoKS53aWR0aEJ5UGFyZW50KSB7XG4gICAgICB0aGlzLmNvbmZpZy51cGRhdGUoKGNvbmZpZykgPT4gKHsgLi4uY29uZmlnLCB3aWR0aDogcmVjdE9yaWdpbi53aWR0aCAtIChjb25maWc/LnBhcmVudEJvcmRlcldpZHRoIHx8IDApICogMiB9KSk7XG4gICAgfVxuICAgIGxldCB2aWV3UG9ydCA9IGdldFZpZXdwb3J0KCk7XG4gICAgbGV0IHJlY3RGcmFtZTogSUJvdW5kaW5nQ2xpZW50UmVjdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIGlmIChpc0FkZENvbnRlbnRUb1BhcmVudERvY3VtZW50KSB7XG4gICAgICB2aWV3UG9ydCA9IGdldFZpZXdwb3J0KHdpbmRvdy5wYXJlbnQpO1xuICAgICAgY29uc3QgdXJsID0gbmV3IFV0aWxzVXJsU2VhcmNoUGFyYW1zKGxvY2F0aW9uLmhyZWYpO1xuICAgICAgY29uc3QgaWZyYW1lSWQgPSB1cmwuZ2V0KCdpZnJhbWVJZCcpO1xuXG4gICAgICByZWN0RnJhbWUgPSB3aW5kb3cucGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBpZnJhbWUtJHtpZnJhbWVJZH1gKT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBpZiAocmVjdEZyYW1lKSB7XG4gICAgICAgIHJlY3RPcmlnaW4udG9wICs9IHJlY3RGcmFtZS50b3A7XG4gICAgICAgIHJlY3RPcmlnaW4ubGVmdCArPSByZWN0RnJhbWUubGVmdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcoKS5tYXhIZWlnaHQgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuY29uZmlnLnVwZGF0ZSgoY29uZmlnKSA9PiAoeyAuLi5jb25maWcsIG1heEhlaWdodDogdmlld1BvcnQuaGVpZ2h0IC0gcmVjdE9yaWdpbi50b3AgLSA0NCB9KSk7XG4gICAgfVxuXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCgpKTtcbiAgICB0aGlzLnNldFZhcmlhYmxlQ3NzKCk7XG4gICAgdGhpcy5zZXREaXJlY3Rpb25zKHJlY3RPcmlnaW4sIHZpZXdQb3J0LCByZWN0RnJhbWUpO1xuICAgIGxldCByZWN0Q29udGVudCA9IGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdCh0aGlzLmNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gICAgaWYgKHJlY3RGcmFtZSkge1xuICAgICAgcmVjdENvbnRlbnQudG9wICs9IHJlY3RGcmFtZS50b3A7XG4gICAgICByZWN0Q29udGVudC5sZWZ0ICs9IHJlY3RGcmFtZS5sZWZ0O1xuICAgIH1cblxuICAgIGludGVydmFsKDI1MClcbiAgICAgIC5waXBlKHRha2UoNCksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgcmVjdCA9IGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdCh0aGlzLmNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gICAgICAgIGlmIChyZWN0RnJhbWUpIHtcbiAgICAgICAgICByZWN0LnRvcCArPSByZWN0RnJhbWUudG9wO1xuICAgICAgICAgIHJlY3QubGVmdCArPSByZWN0RnJhbWUubGVmdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVjdC53aWR0aCAhPT0gcmVjdENvbnRlbnQud2lkdGggfHwgcmVjdC5oZWlnaHQgIT09IHJlY3RDb250ZW50LmhlaWdodCB8fCByZWN0LnRvcCAhPT0gcmVjdENvbnRlbnQudG9wIHx8IHJlY3QubGVmdCAhPT0gcmVjdENvbnRlbnQubGVmdCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQoKSk7XG4gICAgICAgICAgdGhpcy5zZXREaXJlY3Rpb25zKHJlY3RPcmlnaW4sIHZpZXdQb3J0LCByZWN0RnJhbWUpO1xuICAgICAgICAgIHJlY3RDb250ZW50ID0gcmVjdDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldERpcmVjdGlvbnMocmVjdE9yaWdpbjogSUJvdW5kaW5nQ2xpZW50UmVjdCwgdmlld1BvcnQ6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSwgcmVjdEZyYW1lPzogSUJvdW5kaW5nQ2xpZW50UmVjdCkge1xuICAgIGNvbnN0IGRpcmVjdGlvbnMgPSBnZXRMaXN0ZGlyZWN0aW9ucyh0aGlzLmNvbmZpZygpLmRpcmVjdGlvbiB8fCAnYm90dG9tJyk7XG4gICAgY29uc3QgcG9zaXRpb25MYXN0ID0gZGlyZWN0aW9ucy5sZW5ndGggLSAxO1xuXG4gICAgdGhpcy50aW1lb3V0LnNldChcbiAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCByZWN0Q29udGVudCA9IGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdCh0aGlzLmNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gICAgICAgIGlmIChyZWN0RnJhbWUpIHtcbiAgICAgICAgICByZWN0Q29udGVudC50b3AgKz0gcmVjdEZyYW1lLnRvcDtcbiAgICAgICAgICByZWN0Q29udGVudC5sZWZ0ICs9IHJlY3RGcmFtZS5sZWZ0O1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgaW5kZXggaW4gZGlyZWN0aW9ucykge1xuICAgICAgICAgIGlmIChhd2FpdCB0aGlzLmxvb3BEaXJlY3Rpb24ocmVjdE9yaWdpbiwgcmVjdENvbnRlbnQsIGRpcmVjdGlvbnNbaW5kZXhdLCBwb3NpdGlvbkxhc3QgPT09ICtpbmRleCwgdmlld1BvcnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCA1MClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBsb29wRGlyZWN0aW9uKHJlY3RPcmlnaW46IElCb3VuZGluZ0NsaWVudFJlY3QsIHJlY3RDb250ZW50OiBJQm91bmRpbmdDbGllbnRSZWN0LCBkaXJlY3Rpb246IFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04sIGlzTGFzdDogYm9vbGVhbiwgdmlld1BvcnQ6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgY29uc3QgcG9zaXRpb25Nb2RlID0gdGhpcy5jb25maWcoKS5wb3NpdGlvbj8ubW9kZSB8fCAnc3RhcnQnO1xuICAgICAgY29uc3QgeyBwb3NpdGlvbiB9ID0gdGhpcy5jb25maWcoKTtcbiAgICAgIGxldCByZXN1bHQgPSB0aGlzLnNldFBvc2l0aW9uKGRpcmVjdGlvbiwgcmVjdE9yaWdpbiwgcmVjdENvbnRlbnQgYXMgSUJvdW5kaW5nQ2xpZW50UmVjdCwgdmlld1BvcnQsIGlzTGFzdCk7XG5cbiAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgICAgIHBvc2l0aW9uLm1vZGUgPSBwb3NpdGlvbk1vZGUgPT09ICdjZW50ZXInIHx8IHBvc2l0aW9uTW9kZSA9PT0gJ3N0YXJ0JyA/ICdlbmQnIDogJ3N0YXJ0JztcbiAgICAgICAgICBpZiAoIXRoaXMuY29uZmlnKCkuaWdub3JlQXJyb3cgJiYgcG9zaXRpb24uYXV0b1VwZGF0ZVBvc2l0aW9uKSB7XG4gICAgICAgICAgICBwb3NpdGlvbi5kaXN0YW5jZSA9IHBvc2l0aW9uLm1vZGUgPT09ICdlbmQnID8gcG9zaXRpb24uYXV0b1VwZGF0ZVBvc2l0aW9uLmVuZERpc3RhbmNlIDogcG9zaXRpb24uYXV0b1VwZGF0ZVBvc2l0aW9uLnN0YXJ0RGlzdGFuY2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY29uZmlnLnVwZGF0ZSgoY29uZmlnKSA9PiAoeyAuLi5jb25maWcgfSkpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IHRoaXMuc2V0UG9zaXRpb24oZGlyZWN0aW9uLCByZWN0T3JpZ2luLCByZWN0Q29udGVudCBhcyBJQm91bmRpbmdDbGllbnRSZWN0LCB2aWV3UG9ydCwgaXNMYXN0KTtcbiAgICAgIH1cbiAgICAgIGlmICghcmVzdWx0ICYmIHBvc2l0aW9uTW9kZSA9PT0gJ2NlbnRlcicpIHtcbiAgICAgICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICAgICAgcG9zaXRpb24ubW9kZSA9IHBvc2l0aW9uLm1vZGUgPT09ICdzdGFydCcgPyAnZW5kJyA6ICdzdGFydCc7XG4gICAgICAgICAgdGhpcy5jb25maWcudXBkYXRlKChjb25maWcpID0+ICh7IC4uLmNvbmZpZyB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gdGhpcy5zZXRQb3NpdGlvbihkaXJlY3Rpb24sIHJlY3RPcmlnaW4sIHJlY3RDb250ZW50IGFzIElCb3VuZGluZ0NsaWVudFJlY3QsIHZpZXdQb3J0LCBpc0xhc3QpO1xuICAgICAgfVxuICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICAgICAgcG9zaXRpb24ubW9kZSA9IHBvc2l0aW9uTW9kZTtcbiAgICAgICAgICB0aGlzLmNvbmZpZy51cGRhdGUoKGNvbmZpZykgPT4gKHsgLi4uY29uZmlnIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXNvbHZlKGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY3VycmVudERpcmVjdGlvbi5zZXQoZGlyZWN0aW9uKTtcbiAgICAgIHRoaXMuc2V0VmFyaWFibGVDc3MoKTtcbiAgICAgIHRoaXMuc2V0Q2xhc3NBcnJvdyhkaXJlY3Rpb24pO1xuICAgICAgdGhpcy5jb250YWluZXIoKS5uYXRpdmVFbGVtZW50LnN0eWxlLm9wYWNpdHkgPSAxO1xuICAgICAgdGhpcy5vdXRFdmVudC5uZXh0KGRpcmVjdGlvbik7XG5cbiAgICAgIHJldHVybiByZXNvbHZlKHRydWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRQb3NpdGlvbihkaXJlY3Rpb246IFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04sIHJlY3RPcmlnaW46IElCb3VuZGluZ0NsaWVudFJlY3QsIHJlY3RDb250ZW50OiBJQm91bmRpbmdDbGllbnRSZWN0LCB2aWV3UG9ydDogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9LCBpc0xhc3Q6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBjb25zdCBoYWxmU3F1YXJlID0gNjtcbiAgICBjb25zdCBkaXN0YW5jZUFycm93ID0gNDtcbiAgICBsZXQgYm90dG9tUG9zaXRpb25SZWN0Q29udGVudCA9IDA7XG4gICAgbGV0IHBvc2l0aW9uVG9wID0gMDtcbiAgICBsZXQgcG9zaXRpb25MZWZ0ID0gMDtcbiAgICBsZXQgdG9wID0gMDtcbiAgICBsZXQgbGVmdCA9IDA7XG4gICAgY29uc3QgY29uZmlnVmFsdWUgPSB0aGlzLmNvbmZpZygpO1xuXG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHBvc2l0aW9uVG9wID0gcmVjdE9yaWdpbi50b3AgKyByZWN0T3JpZ2luLmhlaWdodCArIGRpc3RhbmNlQXJyb3c7XG4gICAgICAgIHBvc2l0aW9uTGVmdCA9IHJlY3RPcmlnaW4ubGVmdCArIHJlY3RPcmlnaW4ud2lkdGggLyAyIC0gaGFsZlNxdWFyZTtcbiAgICAgICAgdG9wID0gcG9zaXRpb25Ub3AgKyBoYWxmU3F1YXJlO1xuICAgICAgICBsZWZ0ID0gcG9zaXRpb25MZWZ0IC0gcmVjdENvbnRlbnQud2lkdGggLyAyICsgaGFsZlNxdWFyZTtcbiAgICAgICAgaWYgKGNvbmZpZ1ZhbHVlLmlnbm9yZUFycm93KSB7XG4gICAgICAgICAgdG9wID0gdG9wIC0gaGFsZlNxdWFyZSAtIGRpc3RhbmNlQXJyb3c7XG4gICAgICAgIH1cbiAgICAgICAgdG9wICs9IGNvbmZpZ1ZhbHVlLmRpcmVjdGlvbkRpc3RhbmNlIHx8IDA7XG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgIGxlZnQgPSByZWN0T3JpZ2luLmxlZnQgKyAoY29uZmlnVmFsdWUucG9zaXRpb24uZGlzdGFuY2UgfHwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uPy5tb2RlID09PSAnZW5kJykge1xuICAgICAgICAgIGxlZnQgPSByZWN0T3JpZ2luLmxlZnQgKyByZWN0T3JpZ2luLndpZHRoIC0gcmVjdENvbnRlbnQud2lkdGggKyAoY29uZmlnVmFsdWUucG9zaXRpb24uZGlzdGFuY2UgfHwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgbGVmdCArPSBjb25maWdWYWx1ZS5wYXJlbnRCb3JkZXJXaWR0aCB8fCAwO1xuXG4gICAgICAgIHRoaXMuYXJyb3dMZWZ0LnNldChwb3NpdGlvbkxlZnQgLSBsZWZ0KTtcbiAgICAgICAgdGhpcy5hcnJvd1RvcC5zZXQoLTYpO1xuICAgICAgICB0aGlzLnRvcC5zZXQodG9wKTtcbiAgICAgICAgdGhpcy5sZWZ0LnNldChsZWZ0KTtcblxuICAgICAgICBpZiAodG9wICsgcmVjdENvbnRlbnQuaGVpZ2h0IDwgdmlld1BvcnQuaGVpZ2h0ICYmIGxlZnQgPj0gMCAmJiBsZWZ0ICsgcmVjdENvbnRlbnQud2lkdGggPCB2aWV3UG9ydC53aWR0aCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0xhc3QpIHtcbiAgICAgICAgICBpZiAodGhpcy5jb25maWcpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnVwZGF0ZSgoY29uZmlnKSA9PiAoeyAuLi5jb25maWcsIG1heEhlaWdodDogdmlld1BvcnQuaGVpZ2h0IC0gcmVjdE9yaWdpbi50b3AgLSByZWN0T3JpZ2luLmhlaWdodCB9KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubGVmdC5zZXQodGhpcy5nZXRMZWZ0UG9zaXRpb25Jc0xhc3QoaXNMYXN0LCBsZWZ0ID49IDAgPyBsZWZ0IDogMCwgdmlld1BvcnQsIHJlY3RPcmlnaW4sIHJlY3RDb250ZW50LCBoYWxmU3F1YXJlKSk7XG5cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICBwb3NpdGlvblRvcCA9IHJlY3RPcmlnaW4udG9wICsgcmVjdE9yaWdpbi5oZWlnaHQgLyAyIC0gaGFsZlNxdWFyZTtcbiAgICAgICAgcG9zaXRpb25MZWZ0ID0gcmVjdE9yaWdpbi5sZWZ0ICsgcmVjdE9yaWdpbi53aWR0aCArIGRpc3RhbmNlQXJyb3c7XG4gICAgICAgIHRvcCA9IHBvc2l0aW9uVG9wIC0gcmVjdENvbnRlbnQuaGVpZ2h0IC8gMiArIGhhbGZTcXVhcmU7XG4gICAgICAgIGxlZnQgPSBwb3NpdGlvbkxlZnQgKyBoYWxmU3F1YXJlO1xuXG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5pZ25vcmVBcnJvdykge1xuICAgICAgICAgIGxlZnQgPSBwb3NpdGlvbkxlZnQgLSBkaXN0YW5jZUFycm93O1xuICAgICAgICB9XG5cbiAgICAgICAgbGVmdCArPSBjb25maWdWYWx1ZS5kaXJlY3Rpb25EaXN0YW5jZSB8fCAwO1xuICAgICAgICBpZiAoY29uZmlnVmFsdWUucG9zaXRpb24/Lm1vZGUgPT09ICdzdGFydCcpIHtcbiAgICAgICAgICB0b3AgPSByZWN0T3JpZ2luLnRvcCArIChjb25maWdWYWx1ZS5wb3NpdGlvbj8uZGlzdGFuY2UgfHwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnVmFsdWUucG9zaXRpb24/Lm1vZGUgPT09ICdlbmQnKSB7XG4gICAgICAgICAgdG9wID0gcmVjdE9yaWdpbi50b3AgKyByZWN0T3JpZ2luLmhlaWdodCAtIHJlY3RDb250ZW50LmhlaWdodCArIChjb25maWdWYWx1ZS5wb3NpdGlvbi5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJvdHRvbVBvc2l0aW9uUmVjdENvbnRlbnQgPSB0b3AgKyByZWN0Q29udGVudC5oZWlnaHQ7XG5cbiAgICAgICAgaWYgKGJvdHRvbVBvc2l0aW9uUmVjdENvbnRlbnQgPiB2aWV3UG9ydC5oZWlnaHQpIHtcbiAgICAgICAgICB0b3AgPSB0b3AgLSAoYm90dG9tUG9zaXRpb25SZWN0Q29udGVudCAtIHZpZXdQb3J0LmhlaWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFycm93VG9wLnNldChwb3NpdGlvblRvcCAtIHRvcCArIDIpO1xuICAgICAgICB0aGlzLmFycm93TGVmdC5zZXQoLTkpO1xuXG4gICAgICAgIHRoaXMudG9wLnNldCh0b3ApO1xuICAgICAgICB0aGlzLmxlZnQuc2V0KGxlZnQpO1xuICAgICAgICBpZiAodG9wID4gMCAmJiBsZWZ0ICsgcmVjdENvbnRlbnQud2lkdGggPCB2aWV3UG9ydC53aWR0aCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0xhc3QpIHtcbiAgICAgICAgICBpZiAodGhpcy5jb25maWcpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnVwZGF0ZSgoY29uZmlnKSA9PiAoeyAuLi5jb25maWcsIG1heEhlaWdodDogdmlld1BvcnQuaGVpZ2h0IH0pKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5sZWZ0LnNldCh0aGlzLmdldExlZnRQb3NpdGlvbklzTGFzdChpc0xhc3QsIGxlZnQgPj0gMCA/IGxlZnQgOiAwLCB2aWV3UG9ydCwgcmVjdE9yaWdpbiwgcmVjdENvbnRlbnQsIGhhbGZTcXVhcmUpKTtcblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgcG9zaXRpb25Ub3AgPSByZWN0T3JpZ2luLnRvcCArIHJlY3RPcmlnaW4uaGVpZ2h0IC8gMiAtIGhhbGZTcXVhcmU7XG4gICAgICAgIHBvc2l0aW9uTGVmdCA9IHJlY3RPcmlnaW4ubGVmdCAtIGhhbGZTcXVhcmUgKiAyIC0gZGlzdGFuY2VBcnJvdztcbiAgICAgICAgdG9wID0gcG9zaXRpb25Ub3AgLSByZWN0Q29udGVudC5oZWlnaHQgLyAyICsgaGFsZlNxdWFyZTtcbiAgICAgICAgbGVmdCA9IHBvc2l0aW9uTGVmdCAtIHJlY3RDb250ZW50LndpZHRoICsgaGFsZlNxdWFyZTtcbiAgICAgICAgaWYgKGNvbmZpZ1ZhbHVlLmlnbm9yZUFycm93KSB7XG4gICAgICAgICAgbGVmdCA9IGxlZnQgKyBoYWxmU3F1YXJlICsgZGlzdGFuY2VBcnJvdztcbiAgICAgICAgfVxuXG4gICAgICAgIGxlZnQgLT0gY29uZmlnVmFsdWU/LmRpcmVjdGlvbkRpc3RhbmNlIHx8IDA7XG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgIHRvcCA9IHJlY3RPcmlnaW4udG9wICsgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uLmRpc3RhbmNlIHx8IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uPy5tb2RlID09PSAnZW5kJykge1xuICAgICAgICAgIHRvcCA9IHJlY3RPcmlnaW4udG9wICsgcmVjdE9yaWdpbi5oZWlnaHQgLSByZWN0Q29udGVudC5oZWlnaHQgKyAoY29uZmlnVmFsdWUucG9zaXRpb24uZGlzdGFuY2UgfHwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICBib3R0b21Qb3NpdGlvblJlY3RDb250ZW50ID0gdG9wICsgcmVjdENvbnRlbnQuaGVpZ2h0O1xuXG4gICAgICAgIGlmIChib3R0b21Qb3NpdGlvblJlY3RDb250ZW50ID4gdmlld1BvcnQuaGVpZ2h0KSB7XG4gICAgICAgICAgdG9wID0gdG9wIC0gKGJvdHRvbVBvc2l0aW9uUmVjdENvbnRlbnQgLSB2aWV3UG9ydC5oZWlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hcnJvd1RvcC5zZXQocG9zaXRpb25Ub3AgLSB0b3AgKyAyKTtcbiAgICAgICAgdGhpcy5hcnJvd0xlZnQuc2V0KHJlY3RDb250ZW50LndpZHRoIC0gMyk7XG5cbiAgICAgICAgdGhpcy50b3Auc2V0KHRvcCk7XG4gICAgICAgIHRoaXMubGVmdC5zZXQobGVmdCk7XG4gICAgICAgIGlmIChsZWZ0ID4gMCAmJiB0b3AgPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNMYXN0KSB7XG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy51cGRhdGUoKGNvbmZpZykgPT4gKHsgLi4uY29uZmlnLCBtYXhIZWlnaHQ6IHZpZXdQb3J0LmhlaWdodCB9KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubGVmdC5zZXQodGhpcy5nZXRMZWZ0UG9zaXRpb25Jc0xhc3QoaXNMYXN0LCBsZWZ0ID49IDAgPyBsZWZ0IDogMCwgdmlld1BvcnQsIHJlY3RPcmlnaW4sIHJlY3RDb250ZW50LCBoYWxmU3F1YXJlKSk7XG5cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgcG9zaXRpb25Ub3AgPSByZWN0T3JpZ2luLnRvcCAtIGhhbGZTcXVhcmUgKiAyIC0gZGlzdGFuY2VBcnJvdztcbiAgICAgICAgcG9zaXRpb25MZWZ0ID0gcmVjdE9yaWdpbi5sZWZ0ICsgcmVjdE9yaWdpbi53aWR0aCAvIDIgLSBoYWxmU3F1YXJlO1xuICAgICAgICB0b3AgPSBwb3NpdGlvblRvcCAtIHJlY3RDb250ZW50LmhlaWdodCArIGhhbGZTcXVhcmU7XG4gICAgICAgIGxlZnQgPSBwb3NpdGlvbkxlZnQgLSByZWN0Q29udGVudC53aWR0aCAvIDIgKyBoYWxmU3F1YXJlO1xuXG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5pZ25vcmVBcnJvdykge1xuICAgICAgICAgIHRvcCA9IHRvcCArIGhhbGZTcXVhcmUgKyBkaXN0YW5jZUFycm93O1xuICAgICAgICB9XG5cbiAgICAgICAgdG9wIC09IGNvbmZpZ1ZhbHVlLmRpcmVjdGlvbkRpc3RhbmNlIHx8IDA7XG5cbiAgICAgICAgaWYgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uICYmIGNvbmZpZ1ZhbHVlLnBvc2l0aW9uPy5tb2RlID09PSAnc3RhcnQnKSB7XG4gICAgICAgICAgbGVmdCA9IHJlY3RPcmlnaW4ubGVmdCArIChjb25maWdWYWx1ZS5wb3NpdGlvbi5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbiAmJiBjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICBsZWZ0ID0gcmVjdE9yaWdpbi5sZWZ0ICsgcmVjdE9yaWdpbi53aWR0aCAtIHJlY3RDb250ZW50LndpZHRoICsgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uLmRpc3RhbmNlIHx8IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgbGVmdCArPSBjb25maWdWYWx1ZS5wYXJlbnRCb3JkZXJXaWR0aCB8fCAwO1xuICAgICAgICB0aGlzLmFycm93TGVmdC5zZXQocG9zaXRpb25MZWZ0IC0gbGVmdCk7XG4gICAgICAgIHRoaXMuYXJyb3dUb3Auc2V0KHJlY3RDb250ZW50LmhlaWdodCk7XG4gICAgICAgIHRoaXMudG9wLnNldCh0b3ApO1xuICAgICAgICB0aGlzLmxlZnQuc2V0KGxlZnQpO1xuICAgICAgICBpZiAodG9wID4gMCAmJiBsZWZ0ID49IDAgJiYgbGVmdCArIHJlY3RDb250ZW50LndpZHRoIDwgdmlld1BvcnQud2lkdGgpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0xhc3QpIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZy51cGRhdGUoKGNvbmZpZykgPT4gKHsgLi4uY29uZmlnLCBtYXhIZWlnaHQ6IHZpZXdQb3J0LmhlaWdodCAtICh2aWV3UG9ydC5oZWlnaHQgLSByZWN0T3JpZ2luLnRvcCkgfSkpO1xuICAgICAgICAgIHRvcCA9IDA7XG4gICAgICAgICAgdGhpcy5sZWZ0LnNldCh0aGlzLmdldExlZnRQb3NpdGlvbklzTGFzdChpc0xhc3QsIGxlZnQgPj0gMCA/IGxlZnQgOiAwLCB2aWV3UG9ydCwgcmVjdE9yaWdpbiwgcmVjdENvbnRlbnQsIGhhbGZTcXVhcmUpKTtcblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2xhc3NBcnJvdyhkaXJlY3Rpb246IFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04pIHtcbiAgICBpZiAoZGlyZWN0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5hcnJvd0NsYXNzLnNldCgnbGlicy11aS1wb3BvdmVyLW92ZXJsYXktYXJyb3ctcmlnaHQnKTtcbiAgICB9XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5hcnJvd0NsYXNzLnNldCgnbGlicy11aS1wb3BvdmVyLW92ZXJsYXktYXJyb3ctbGVmdCcpO1xuICAgIH1cbiAgICBpZiAoZGlyZWN0aW9uID09PSAndG9wJykge1xuICAgICAgcmV0dXJuIHRoaXMuYXJyb3dDbGFzcy5zZXQoJ2xpYnMtdWktcG9wb3Zlci1vdmVybGF5LWFycm93LWRvd24nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcnJvd0NsYXNzLnNldCgnbGlicy11aS1wb3BvdmVyLW92ZXJsYXktYXJyb3ctdXAnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFyaWFibGVDc3MoKSB7XG4gICAgY29uc3QgY29uZmlnVmFsdWUgPSB0aGlzLmNvbmZpZygpO1xuICAgIHRoaXMuQ29udGFpbmVyRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1saWJzLXVpLXBvcG92ZXItb3ZlcmxheS10aW1lLWFuaW1hdGlvbi10aW1lJywgYCR7Y29uZmlnVmFsdWUuYW5pbWF0aW9uQ29uZmlnPy50aW1lIHx8IDAuNH1zYCk7XG4gICAgdGhpcy5Db250YWluZXJFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWxpYnMtdWktcG9wb3Zlci1vdmVybGF5LXRpbWUtYW5pbWF0aW9uLWRpc3RhbmNlJywgYCR7dGhpcy5jdXJyZW50RGlyZWN0aW9uKCkgPT09ICd0b3AnID8gJy0nIDogJyd9JHtjb25maWdWYWx1ZS5hbmltYXRpb25Db25maWc/LmRpc3RhbmNlIHx8IDEyfXB4YCk7XG4gIH1cblxuICBwcml2YXRlIGdldExlZnRQb3NpdGlvbklzTGFzdChpc0xhc3Q6IGJvb2xlYW4sIGN1cnJlbnRMZWZ0OiBudW1iZXIsIHZpZXdQb3J0OiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0sIHJlY3RPcmlnaW46IElCb3VuZGluZ0NsaWVudFJlY3QsIHJlY3RDb250ZW50OiBJQm91bmRpbmdDbGllbnRSZWN0LCBoYWxmU3F1YXJlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICh2aWV3UG9ydC53aWR0aCAtIChyZWN0T3JpZ2luLmxlZnQgKyByZWN0T3JpZ2luLndpZHRoICsgcmVjdENvbnRlbnQud2lkdGggKyBoYWxmU3F1YXJlKSA+IDApIHtcbiAgICAgIHJldHVybiByZWN0T3JpZ2luLmxlZnQgKyByZWN0T3JpZ2luLndpZHRoICsgaGFsZlNxdWFyZTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRMZWZ0O1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCgpKTtcbiAgICB0aGlzLm9uRGVzdHJveS5uZXh0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGRpdlxuICAjY29udGFpbmVyXG4gIGNsYXNzPVwibGlicy11aS1wb3BvdmVyLW92ZXJsYXkge3sgY29uZmlnKCkuY2xhc3NJbmNsdWRlIHx8ICcnIH19XCJcbiAgW2NsYXNzLmxpYnMtdWktcG9wb3Zlci1vdmVybGF5LXdoaXRlLXRoZW1lXT1cImNvbmZpZygpLndoaXRlVGhlbWVcIlxuICBbY2xhc3MubGlicy11aS1wb3BvdmVyLW92ZXJsYXktYW5pbWF0aW9uLW1vdmVdPVwiY29uZmlnKCkuYW5pbWF0aW9uQ29uZmlnXCJcbiAgW25nU3R5bGVdPVwiY29uZmlnKCkubmdTdHlsZXMgfHwge31cIlxuICBbc3R5bGUud2lkdGhdPVwiY29uZmlnKCkud2lkdGggPyBjb25maWcoKS53aWR0aCArICdweCcgOiAnYXV0bydcIlxuICBbc3R5bGUubWF4V2lkdGgucHhdPVwiY29uZmlnKCkubWF4V2lkdGhcIlxuICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImNvbmZpZygpLm1heEhlaWdodFwiXG4gIFtzdHlsZS50b3AucHhdPVwidG9wKClcIlxuICBbc3R5bGUubGVmdC5weF09XCJsZWZ0KClcIlxuICBbc3R5bGUuekluZGV4XT1cImNvbmZpZygpLnpJbmRleCB8fCAxMFwiPlxuICBAaWYgKGNvbmZpZygpKSB7XG4gICAgQGlmICghY29uZmlnKCkuaWdub3JlQXJyb3cpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxuICAgICAgICA8c3ZnXG4gICAgICAgICAgW2NsYXNzXT1cIidsaWJzLXVpLXBvcG92ZXItb3ZlcmxheS1hcnJvdyAnICsgYXJyb3dDbGFzcygpICsgKGNvbmZpZygpLndoaXRlVGhlbWUgPyAnIGxpYnMtdWktcG9wb3Zlci1vdmVybGF5LXdoaXRlLXRoZW1lICcgOiAnJylcIlxuICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiYXJyb3dUb3AoKVwiXG4gICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiYXJyb3dMZWZ0KClcIlxuICAgICAgICAgIFthdHRyLmRpcmVjdGlvbl09XCJvdXRFdmVudCB8IGFzeW5jXCI+XG4gICAgICAgICAgPHBvbHlnb24gcG9pbnRzPVwiMCwwIDYsNiAxMiwwXCIgLz5cbiAgICAgICAgICBTb3JyeSwgeW91ciBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgaW5saW5lIFNWRy5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGlmIChjb25maWcoKS50ZW1wbGF0ZTsgYXMgdGVtcGxhdGVDb25maWcpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgTGlic1VpQ29tcG9uZW50c1Njcm9sbE92ZXJsYXlEaXJlY3RpdmVcbiAgICAgICAgY2xhc3M9XCJsaWJzLXVpLXBvcG92ZXItb3ZlcmxheS1ib2R5IHt7IGNvbmZpZygpLmNsYXNzSW5jbHVkZU92ZXJsYXlCb2R5IHx8ICcnIH19XCJcbiAgICAgICAgW2F0dHIuaXNUZW1wbGF0ZV09XCJ0cnVlXCJcbiAgICAgICAgW3N0eWxlLm1heC1oZWlnaHRdPVwiY29uZmlnKCkubWF4SGVpZ2h0ICsgJ3B4J1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVDb25maWc7IGNvbnRleHQ6IHsgaXRlbUNvbnRleHQ6IGNvbmZpZygpLml0ZW1Db250ZXh0IH1cIiAvPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibGlicy11aS1wb3BvdmVyLW92ZXJsYXktYm9keSBsaWJzLXVpLWZvbnQtaDdyIHt7IGNvbmZpZygpLmNsYXNzSW5jbHVkZU92ZXJsYXlCb2R5IHx8ICcnIH19XCJcbiAgICAgICAgTGlic1VpQ29tcG9uZW50c1Njcm9sbE92ZXJsYXlEaXJlY3RpdmVcbiAgICAgICAgW29wdGlvbnNdPVwiY29uZmlnKCkuc2Nyb2xsT3ZlcmxheU9wdGlvbnNcIlxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImNvbmZpZygpLm1heEhlaWdodFwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nVG9wLnB4XT1cImNvbmZpZygpLnBhZGRpbmdUb3AgPz8gOFwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nUmlnaHQucHhdPVwiY29uZmlnKCkucGFkZGluZ1JpZ2h0ID8/IDhcIlxuICAgICAgICBbc3R5bGUucGFkZGluZ0xlZnQucHhdPVwiY29uZmlnKCkucGFkZGluZ0xlZnQgPz8gOFwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nQm90dG9tLnB4XT1cImNvbmZpZygpLnBhZGRpbmdCb3R0b20gPz8gOFwiXG4gICAgICAgIFtpbm5lckh0bWxdPVwiY29uZmlnKCkuY29udGVudCB8fCAnICcgfCB0cmFuc2xhdGVcIj48L2Rpdj5cbiAgICB9XG4gIH1cbjwvZGl2PlxuIl19