@datarailsshared/datarailsshared 1.6.340 → 1.6.344

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,6 +1,6 @@
1
1
  @import '@angular/material/prebuilt-themes/deeppurple-amber.css';
2
2
  @import '@ng-select/ng-select/themes/default.theme.css';
3
- @import 'ngx-toastr/toastr';
3
+ @import 'ngx-toastr/toastr.css';
4
4
  @import '@ctrl/ngx-emoji-mart/picker';
5
5
 
6
6
  @import 'codemirror/lib/codemirror.css';
@@ -11,6 +11,10 @@ export class DrawerConfig {
11
11
  this.disableClose = false;
12
12
  /** Aria label to assign to the drawer element. */
13
13
  this.ariaLabel = null;
14
+ /** Aria role for the drawer container */
15
+ this.role = 'dialog';
16
+ /** Whether the drawer should be treated as a modal dialog */
17
+ this.isModal = true;
14
18
  /**
15
19
  * Whether the drawer should close when the user goes backwards/forwards in history.
16
20
  * Note that this usually doesn't include clicking on links (unless the user is using
@@ -32,6 +36,8 @@ export class DrawerConfig {
32
36
  this.position = 'bottom';
33
37
  /** Whether to render the drawer without default container styles and handle. */
34
38
  this.unstyled = false;
39
+ /** Drag behavior for bottom drawer. */
40
+ this.dragMode = 'dismiss';
35
41
  }
36
42
  }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyYXdlci9kcmF3ZXItY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUFBekI7UUFpQkksb0RBQW9EO1FBQ3BELFNBQUksR0FBYyxJQUFJLENBQUM7UUFFdkIseUNBQXlDO1FBQ3pDLGdCQUFXLEdBQWEsS0FBSyxDQUFDO1FBSzlCLCtFQUErRTtRQUMvRSxpQkFBWSxHQUFhLEtBQUssQ0FBQztRQUUvQixrREFBa0Q7UUFDbEQsY0FBUyxHQUFtQixJQUFJLENBQUM7UUFFakM7Ozs7V0FJRztRQUNILHNCQUFpQixHQUFhLElBQUksQ0FBQztRQUVuQzs7OztXQUlHO1FBQ0gsY0FBUyxHQUF3QyxnQkFBZ0IsQ0FBQztRQUVsRTs7O1dBR0c7UUFDSCxpQkFBWSxHQUFhLElBQUksQ0FBQztRQUs5Qiw4QkFBOEI7UUFDOUIsYUFBUSxHQUFvQixRQUFRLENBQUM7UUEwQnJDLGdGQUFnRjtRQUNoRixhQUFRLEdBQWEsS0FBSyxDQUFDO0lBQy9CLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IFNjcm9sbFN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgSW5qZWN0b3IsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqIE9wdGlvbnMgZm9yIHdoZXJlIHRvIHNldCBmb2N1cyB0byBhdXRvbWF0aWNhbGx5IG9uIGRpYWxvZyBvcGVuLiAqL1xuZXhwb3J0IHR5cGUgQXV0b0ZvY3VzVGFyZ2V0ID0gJ2RpYWxvZycgfCAnZmlyc3QtdGFiYmFibGUnIHwgJ2ZpcnN0LWhlYWRpbmcnO1xuXG4vKiogUG9zc2libGUgb3ZlcnJpZGVzIGZvciBhIGRyYXdlcidzIHBvc2l0aW9uLiAqL1xuZXhwb3J0IHR5cGUgRHJhd2VyUG9zaXRpb24gPSAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHVzZWQgd2hlbiBvcGVuaW5nIGEgZHJhd2VyLlxuICovXG5leHBvcnQgY2xhc3MgRHJhd2VyQ29uZmlnPEQgPSBhbnk+IHtcbiAgICAvKiogVGhlIHZpZXcgY29udGFpbmVyIHRvIHBsYWNlIHRoZSBvdmVybGF5IGZvciB0aGUgZHJhd2VyIGludG8uICovXG4gICAgdmlld0NvbnRhaW5lclJlZj86IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICAvKiogRWxlbWVudCB0byBvYnNlcnZlIGZvciByZXNpemUgY2hhbmdlcyB0byBhZGp1c3QgZHJhd2VyIHBvc2l0aW9uaW5nLlxuICAgICAqIFRoZSBkcmF3ZXIgd2lsbCBmaXQgd2l0aGluIHRoZSBib3VuZGFyaWVzIG9mIHRoaXMgZWxlbWVudC4gKi9cbiAgICBvYnNlcnZlZEVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcblxuICAgIC8qKiBJRCBmb3IgdGhlIGRyYXdlci4gSWYgb21pdHRlZCwgYSB1bmlxdWUgb25lIHdpbGwgYmUgZ2VuZXJhdGVkLiAqL1xuICAgIGlkPzogc3RyaW5nO1xuXG4gICAgLyoqIEV4dHJhIENTUyBjbGFzc2VzIHRvIGJlIGFkZGVkIHRvIHRoZSBkcmF3ZXIgY29udGFpbmVyLiAqL1xuICAgIHBhbmVsQ2xhc3M/OiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICAgIC8qKiBUZXh0IGxheW91dCBkaXJlY3Rpb24gZm9yIHRoZSBkcmF3ZXIuICovXG4gICAgZGlyZWN0aW9uPzogRGlyZWN0aW9uO1xuXG4gICAgLyoqIERhdGEgYmVpbmcgaW5qZWN0ZWQgaW50byB0aGUgY2hpbGQgY29tcG9uZW50LiAqL1xuICAgIGRhdGE/OiBEIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogV2hldGhlciB0aGUgZHJhd2VyIGhhcyBhIGJhY2tkcm9wLiAqL1xuICAgIGhhc0JhY2tkcm9wPzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEN1c3RvbSBjbGFzcyBmb3IgdGhlIGJhY2tkcm9wLiAqL1xuICAgIGJhY2tkcm9wQ2xhc3M/OiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdXNlciBjYW4gdXNlIGVzY2FwZSBvciBjbGlja2luZyBvdXRzaWRlIHRvIGNsb3NlIHRoZSBkcmF3ZXIuICovXG4gICAgZGlzYWJsZUNsb3NlPzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgdG8gYXNzaWduIHRvIHRoZSBkcmF3ZXIgZWxlbWVudC4gKi9cbiAgICBhcmlhTGFiZWw/OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGRyYXdlciBzaG91bGQgY2xvc2Ugd2hlbiB0aGUgdXNlciBnb2VzIGJhY2t3YXJkcy9mb3J3YXJkcyBpbiBoaXN0b3J5LlxuICAgICAqIE5vdGUgdGhhdCB0aGlzIHVzdWFsbHkgZG9lc24ndCBpbmNsdWRlIGNsaWNraW5nIG9uIGxpbmtzICh1bmxlc3MgdGhlIHVzZXIgaXMgdXNpbmdcbiAgICAgKiB0aGUgYEhhc2hMb2NhdGlvblN0cmF0ZWd5YCkuXG4gICAgICovXG4gICAgY2xvc2VPbk5hdmlnYXRpb24/OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXJlIHRoZSBkcmF3ZXIgc2hvdWxkIGZvY3VzIG9uIG9wZW4uXG4gICAgICogQGJyZWFraW5nLWNoYW5nZSAxNC4wLjAgUmVtb3ZlIGJvb2xlYW4gb3B0aW9uIGZyb20gYXV0b0ZvY3VzLiBVc2Ugc3RyaW5nIG9yXG4gICAgICogQXV0b0ZvY3VzVGFyZ2V0IGluc3RlYWQuXG4gICAgICovXG4gICAgYXV0b0ZvY3VzPzogQXV0b0ZvY3VzVGFyZ2V0IHwgc3RyaW5nIHwgYm9vbGVhbiA9ICdmaXJzdC10YWJiYWJsZSc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBkcmF3ZXIgc2hvdWxkIHJlc3RvcmUgZm9jdXMgdG8gdGhlXG4gICAgICogcHJldmlvdXNseS1mb2N1c2VkIGVsZW1lbnQsIGFmdGVyIGl0J3MgY2xvc2VkLlxuICAgICAqL1xuICAgIHJlc3RvcmVGb2N1cz86IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqIFNjcm9sbCBzdHJhdGVneSB0byBiZSB1c2VkIGZvciB0aGUgZHJhd2VyLiAqL1xuICAgIHNjcm9sbFN0cmF0ZWd5PzogU2Nyb2xsU3RyYXRlZ3k7XG5cbiAgICAvKiogUG9zaXRpb24gb2YgdGhlIGRyYXdlci4gKi9cbiAgICBwb3NpdGlvbj86IERyYXdlclBvc2l0aW9uID0gJ2JvdHRvbSc7XG5cbiAgICAvKiogV2lkdGggb2YgdGhlIGRyYXdlci4gKi9cbiAgICB3aWR0aD86IHN0cmluZztcblxuICAgIC8qKiBIZWlnaHQgb2YgdGhlIGRyYXdlci4gKi9cbiAgICBoZWlnaHQ/OiBzdHJpbmc7XG5cbiAgICAvKiogTWluLXdpZHRoIG9mIHRoZSBkcmF3ZXIuIElmIGEgbnVtYmVyIGlzIHByb3ZpZGVkLCBhc3N1bWVzIHBpeGVsIHVuaXRzLiAqL1xuICAgIG1pbldpZHRoPzogbnVtYmVyIHwgc3RyaW5nO1xuXG4gICAgLyoqIE1pbi1oZWlnaHQgb2YgdGhlIGRyYXdlci4gSWYgYSBudW1iZXIgaXMgcHJvdmlkZWQsIGFzc3VtZXMgcGl4ZWwgdW5pdHMuICovXG4gICAgbWluSGVpZ2h0PzogbnVtYmVyIHwgc3RyaW5nO1xuXG4gICAgLyoqIE1heC13aWR0aCBvZiB0aGUgZHJhd2VyLiBJZiBhIG51bWJlciBpcyBwcm92aWRlZCwgYXNzdW1lcyBwaXhlbCB1bml0cy4gKi9cbiAgICBtYXhXaWR0aD86IG51bWJlciB8IHN0cmluZztcblxuICAgIC8qKiBNYXgtaGVpZ2h0IG9mIHRoZSBkcmF3ZXIuIElmIGEgbnVtYmVyIGlzIHByb3ZpZGVkLCBhc3N1bWVzIHBpeGVsIHVuaXRzLiAqL1xuICAgIG1heEhlaWdodD86IG51bWJlciB8IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEluamVjdG9yIHVzZWQgZm9yIHRoZSBpbnN0YW50aWF0aW9uIG9mIHRoZSBjb21wb25lbnQgdG8gYmUgYXR0YWNoZWQuIElmIHByb3ZpZGVkLFxuICAgICAqIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB0aGUgaW5qZWN0b3IgaW5kaXJlY3RseSBwcm92aWRlZCBieSBgVmlld0NvbnRhaW5lclJlZmAuXG4gICAgICovXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvcjtcblxuICAgIC8qKiBXaGV0aGVyIHRvIHJlbmRlciB0aGUgZHJhd2VyIHdpdGhvdXQgZGVmYXVsdCBjb250YWluZXIgc3R5bGVzIGFuZCBoYW5kbGUuICovXG4gICAgdW5zdHlsZWQ/OiBib29sZWFuID0gZmFsc2U7XG59XG4iXX0=
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyYXdlci9kcmF3ZXItY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUFBekI7UUFpQkksb0RBQW9EO1FBQ3BELFNBQUksR0FBYyxJQUFJLENBQUM7UUFFdkIseUNBQXlDO1FBQ3pDLGdCQUFXLEdBQWEsS0FBSyxDQUFDO1FBSzlCLCtFQUErRTtRQUMvRSxpQkFBWSxHQUFhLEtBQUssQ0FBQztRQUUvQixrREFBa0Q7UUFDbEQsY0FBUyxHQUFtQixJQUFJLENBQUM7UUFFakMseUNBQXlDO1FBQ3pDLFNBQUksR0FBZ0IsUUFBUSxDQUFDO1FBRTdCLDZEQUE2RDtRQUM3RCxZQUFPLEdBQWEsSUFBSSxDQUFDO1FBRXpCOzs7O1dBSUc7UUFDSCxzQkFBaUIsR0FBYSxJQUFJLENBQUM7UUFFbkM7Ozs7V0FJRztRQUNILGNBQVMsR0FBd0MsZ0JBQWdCLENBQUM7UUFFbEU7OztXQUdHO1FBQ0gsaUJBQVksR0FBYSxJQUFJLENBQUM7UUFLOUIsOEJBQThCO1FBQzlCLGFBQVEsR0FBb0IsUUFBUSxDQUFDO1FBMEJyQyxnRkFBZ0Y7UUFDaEYsYUFBUSxHQUFhLEtBQUssQ0FBQztRQUUzQix1Q0FBdUM7UUFDdkMsYUFBUSxHQUFvQixTQUFTLENBQUM7SUFDMUMsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgRGlhbG9nUm9sZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kaWFsb2cnO1xuaW1wb3J0IHsgU2Nyb2xsU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBJbmplY3RvciwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKiogT3B0aW9ucyBmb3Igd2hlcmUgdG8gc2V0IGZvY3VzIHRvIGF1dG9tYXRpY2FsbHkgb24gZGlhbG9nIG9wZW4uICovXG5leHBvcnQgdHlwZSBBdXRvRm9jdXNUYXJnZXQgPSAnZGlhbG9nJyB8ICdmaXJzdC10YWJiYWJsZScgfCAnZmlyc3QtaGVhZGluZyc7XG5cbi8qKiBQb3NzaWJsZSBvdmVycmlkZXMgZm9yIGEgZHJhd2VyJ3MgcG9zaXRpb24uICovXG5leHBvcnQgdHlwZSBEcmF3ZXJQb3NpdGlvbiA9ICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnO1xuXG4vKiogUG9zc2libGUgZHJhZyBiZWhhdmlvcnMgZm9yIGEgYm90dG9tLXBvc2l0aW9uZWQgZHJhd2VyLiAqL1xuZXhwb3J0IHR5cGUgRHJhd2VyRHJhZ01vZGUgPSAnZGlzbWlzcycgfCAncmVzaXplJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHVzZWQgd2hlbiBvcGVuaW5nIGEgZHJhd2VyLlxuICovXG5leHBvcnQgY2xhc3MgRHJhd2VyQ29uZmlnPEQgPSBhbnk+IHtcbiAgICAvKiogVGhlIHZpZXcgY29udGFpbmVyIHRvIHBsYWNlIHRoZSBvdmVybGF5IGZvciB0aGUgZHJhd2VyIGludG8uICovXG4gICAgdmlld0NvbnRhaW5lclJlZj86IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICAvKiogRWxlbWVudCB0byBvYnNlcnZlIGZvciByZXNpemUgY2hhbmdlcyB0byBhZGp1c3QgZHJhd2VyIHBvc2l0aW9uaW5nLlxuICAgICAqIFRoZSBkcmF3ZXIgd2lsbCBmaXQgd2l0aGluIHRoZSBib3VuZGFyaWVzIG9mIHRoaXMgZWxlbWVudC4gKi9cbiAgICBvYnNlcnZlZEVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcblxuICAgIC8qKiBJRCBmb3IgdGhlIGRyYXdlci4gSWYgb21pdHRlZCwgYSB1bmlxdWUgb25lIHdpbGwgYmUgZ2VuZXJhdGVkLiAqL1xuICAgIGlkPzogc3RyaW5nO1xuXG4gICAgLyoqIEV4dHJhIENTUyBjbGFzc2VzIHRvIGJlIGFkZGVkIHRvIHRoZSBkcmF3ZXIgY29udGFpbmVyLiAqL1xuICAgIHBhbmVsQ2xhc3M/OiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICAgIC8qKiBUZXh0IGxheW91dCBkaXJlY3Rpb24gZm9yIHRoZSBkcmF3ZXIuICovXG4gICAgZGlyZWN0aW9uPzogRGlyZWN0aW9uO1xuXG4gICAgLyoqIERhdGEgYmVpbmcgaW5qZWN0ZWQgaW50byB0aGUgY2hpbGQgY29tcG9uZW50LiAqL1xuICAgIGRhdGE/OiBEIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogV2hldGhlciB0aGUgZHJhd2VyIGhhcyBhIGJhY2tkcm9wLiAqL1xuICAgIGhhc0JhY2tkcm9wPzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEN1c3RvbSBjbGFzcyBmb3IgdGhlIGJhY2tkcm9wLiAqL1xuICAgIGJhY2tkcm9wQ2xhc3M/OiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdXNlciBjYW4gdXNlIGVzY2FwZSBvciBjbGlja2luZyBvdXRzaWRlIHRvIGNsb3NlIHRoZSBkcmF3ZXIuICovXG4gICAgZGlzYWJsZUNsb3NlPzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgdG8gYXNzaWduIHRvIHRoZSBkcmF3ZXIgZWxlbWVudC4gKi9cbiAgICBhcmlhTGFiZWw/OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBBcmlhIHJvbGUgZm9yIHRoZSBkcmF3ZXIgY29udGFpbmVyICovXG4gICAgcm9sZT86IERpYWxvZ1JvbGUgPSAnZGlhbG9nJztcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBkcmF3ZXIgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYSBtb2RhbCBkaWFsb2cgKi9cbiAgICBpc01vZGFsPzogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBkcmF3ZXIgc2hvdWxkIGNsb3NlIHdoZW4gdGhlIHVzZXIgZ29lcyBiYWNrd2FyZHMvZm9yd2FyZHMgaW4gaGlzdG9yeS5cbiAgICAgKiBOb3RlIHRoYXQgdGhpcyB1c3VhbGx5IGRvZXNuJ3QgaW5jbHVkZSBjbGlja2luZyBvbiBsaW5rcyAodW5sZXNzIHRoZSB1c2VyIGlzIHVzaW5nXG4gICAgICogdGhlIGBIYXNoTG9jYXRpb25TdHJhdGVneWApLlxuICAgICAqL1xuICAgIGNsb3NlT25OYXZpZ2F0aW9uPzogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBXaGVyZSB0aGUgZHJhd2VyIHNob3VsZCBmb2N1cyBvbiBvcGVuLlxuICAgICAqIEBicmVha2luZy1jaGFuZ2UgMTQuMC4wIFJlbW92ZSBib29sZWFuIG9wdGlvbiBmcm9tIGF1dG9Gb2N1cy4gVXNlIHN0cmluZyBvclxuICAgICAqIEF1dG9Gb2N1c1RhcmdldCBpbnN0ZWFkLlxuICAgICAqL1xuICAgIGF1dG9Gb2N1cz86IEF1dG9Gb2N1c1RhcmdldCB8IHN0cmluZyB8IGJvb2xlYW4gPSAnZmlyc3QtdGFiYmFibGUnO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgZHJhd2VyIHNob3VsZCByZXN0b3JlIGZvY3VzIHRvIHRoZVxuICAgICAqIHByZXZpb3VzbHktZm9jdXNlZCBlbGVtZW50LCBhZnRlciBpdCdzIGNsb3NlZC5cbiAgICAgKi9cbiAgICByZXN0b3JlRm9jdXM/OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKiBTY3JvbGwgc3RyYXRlZ3kgdG8gYmUgdXNlZCBmb3IgdGhlIGRyYXdlci4gKi9cbiAgICBzY3JvbGxTdHJhdGVneT86IFNjcm9sbFN0cmF0ZWd5O1xuXG4gICAgLyoqIFBvc2l0aW9uIG9mIHRoZSBkcmF3ZXIuICovXG4gICAgcG9zaXRpb24/OiBEcmF3ZXJQb3NpdGlvbiA9ICdib3R0b20nO1xuXG4gICAgLyoqIFdpZHRoIG9mIHRoZSBkcmF3ZXIuICovXG4gICAgd2lkdGg/OiBzdHJpbmc7XG5cbiAgICAvKiogSGVpZ2h0IG9mIHRoZSBkcmF3ZXIuICovXG4gICAgaGVpZ2h0Pzogc3RyaW5nO1xuXG4gICAgLyoqIE1pbi13aWR0aCBvZiB0aGUgZHJhd2VyLiBJZiBhIG51bWJlciBpcyBwcm92aWRlZCwgYXNzdW1lcyBwaXhlbCB1bml0cy4gKi9cbiAgICBtaW5XaWR0aD86IG51bWJlciB8IHN0cmluZztcblxuICAgIC8qKiBNaW4taGVpZ2h0IG9mIHRoZSBkcmF3ZXIuIElmIGEgbnVtYmVyIGlzIHByb3ZpZGVkLCBhc3N1bWVzIHBpeGVsIHVuaXRzLiAqL1xuICAgIG1pbkhlaWdodD86IG51bWJlciB8IHN0cmluZztcblxuICAgIC8qKiBNYXgtd2lkdGggb2YgdGhlIGRyYXdlci4gSWYgYSBudW1iZXIgaXMgcHJvdmlkZWQsIGFzc3VtZXMgcGl4ZWwgdW5pdHMuICovXG4gICAgbWF4V2lkdGg/OiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgICAvKiogTWF4LWhlaWdodCBvZiB0aGUgZHJhd2VyLiBJZiBhIG51bWJlciBpcyBwcm92aWRlZCwgYXNzdW1lcyBwaXhlbCB1bml0cy4gKi9cbiAgICBtYXhIZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBJbmplY3RvciB1c2VkIGZvciB0aGUgaW5zdGFudGlhdGlvbiBvZiB0aGUgY29tcG9uZW50IHRvIGJlIGF0dGFjaGVkLiBJZiBwcm92aWRlZCxcbiAgICAgKiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhlIGluamVjdG9yIGluZGlyZWN0bHkgcHJvdmlkZWQgYnkgYFZpZXdDb250YWluZXJSZWZgLlxuICAgICAqL1xuICAgIGluamVjdG9yPzogSW5qZWN0b3I7XG5cbiAgICAvKiogV2hldGhlciB0byByZW5kZXIgdGhlIGRyYXdlciB3aXRob3V0IGRlZmF1bHQgY29udGFpbmVyIHN0eWxlcyBhbmQgaGFuZGxlLiAqL1xuICAgIHVuc3R5bGVkPzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIERyYWcgYmVoYXZpb3IgZm9yIGJvdHRvbSBkcmF3ZXIuICovXG4gICAgZHJhZ01vZGU/OiBEcmF3ZXJEcmFnTW9kZSA9ICdkaXNtaXNzJztcbn1cbiJdfQ==
@@ -3,12 +3,12 @@ import { CdkDialogContainer, DialogModule } from '@angular/cdk/dialog';
3
3
  import { OverlayRef } from '@angular/cdk/overlay';
4
4
  import { CdkPortalOutlet, PortalModule } from '@angular/cdk/portal';
5
5
  import { CommonModule, DOCUMENT } from '@angular/common';
6
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, inject, Inject, NgZone, Optional, ViewChild, ViewEncapsulation, } from '@angular/core';
6
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, inject, Inject, NgZone, Optional, Output, ViewChild, ViewEncapsulation, } from '@angular/core';
7
7
  import { MatCommonModule } from '@angular/material/core';
8
8
  import { distinctUntilChanged, finalize, fromEvent, map, Subject, switchMap, takeUntil, tap } from 'rxjs';
9
9
  import { drDrawerAnimations } from './drawer-animation';
10
10
  import { DrawerConfig } from './drawer-config';
11
- import { BottomPositionStrategy } from './drawer-position-strategy';
11
+ import { BottomDismissPositionStrategy, BottomResizePositionStrategy } from './drawer-position-strategy';
12
12
  import * as i0 from "@angular/core";
13
13
  import * as i1 from "@angular/cdk/a11y";
14
14
  import * as i2 from "./drawer-config";
@@ -18,6 +18,9 @@ import * as i5 from "@angular/common";
18
18
  const _c0 = ["handleRef"];
19
19
  function DrawerContainer_div_0_Template(rf, ctx) { if (rf & 1) {
20
20
  i0.ɵɵelement(0, "div", 3, 4);
21
+ } if (rf & 2) {
22
+ const ctx_r0 = i0.ɵɵnextContext();
23
+ i0.ɵɵclassProp("handle--resize", ctx_r0._config.dragMode === "resize")("handle--dismiss", ctx_r0._config.dragMode === "dismiss");
21
24
  } }
22
25
  function DrawerContainer_ng_template_2_Template(rf, ctx) { }
23
26
  /**
@@ -31,6 +34,8 @@ export class DrawerContainer extends CdkDialogContainer {
31
34
  constructor(elementRef, focusTrapFactory, document, config, checker, ngZone, overlayRef, focusMonitor) {
32
35
  super(elementRef, focusTrapFactory, document, config, checker, ngZone, overlayRef, focusMonitor);
33
36
  this.overlayRef = overlayRef;
37
+ /** Emits final height (px) after resize. Available only in resize mode. */
38
+ this.afterResized = new EventEmitter();
34
39
  /** The state of the drawer animations. */
35
40
  this._animationState = 'void';
36
41
  /** Emits whenever the state of the animation changes. */
@@ -71,45 +76,35 @@ export class DrawerContainer extends CdkDialogContainer {
71
76
  resolvePositionStrategy() {
72
77
  switch (this._config.position) {
73
78
  case 'bottom':
74
- return new BottomPositionStrategy();
79
+ return this._config.dragMode === 'resize'
80
+ ? new BottomResizePositionStrategy(this._config)
81
+ : new BottomDismissPositionStrategy();
82
+ default:
83
+ return undefined;
75
84
  }
76
85
  }
77
86
  setupDragListener() {
87
+ const strategy = this.positionStrategy;
88
+ if (!strategy)
89
+ return;
78
90
  const mousedown$ = fromEvent(this._handleRef.nativeElement, 'mousedown');
79
91
  const mousemove$ = fromEvent(document, 'mousemove');
80
92
  const mouseup$ = fromEvent(document, 'mouseup');
81
- let lastPosition = 0;
82
- let initPosition = 0;
83
- let currentPosition = 0;
84
93
  const container = this._elementRef.nativeElement;
85
- setTimeout(() => {
86
- lastPosition = this.getContainerPosition(container);
87
- initPosition = lastPosition;
88
- });
94
+ const overlayElement = this.overlayRef.overlayElement;
89
95
  mousedown$
90
- .pipe(switchMap(() => mousemove$.pipe(finalize(() => {
91
- const container = this._elementRef.nativeElement;
92
- if (this.positionStrategy.shouldClose(currentPosition, initPosition, lastPosition)) {
96
+ .pipe(tap(() => strategy.onDragStart(container, overlayElement)), switchMap(() => mousemove$.pipe(takeUntil(mouseup$), finalize(() => {
97
+ const result = strategy.onDragEnd(container, overlayElement);
98
+ if (result.shouldClose) {
93
99
  this.overlayRef.dispose();
94
100
  return;
95
101
  }
96
- container.style.transition = 'transform 0.5s cubic-bezier(0.32, 0.72, 0, 1)';
97
- container.style.transform = `translate3d(0px, 0px, 0px)`;
98
- }), takeUntil(mouseup$))), map((event) => this.positionStrategy.extractMousePosition(event)), distinctUntilChanged(), tap((position) => {
99
- let containerPosition = this.getContainerPosition(container);
100
- containerPosition = Math.min(containerPosition, lastPosition);
101
- lastPosition = Math.min(containerPosition, lastPosition);
102
- currentPosition = position;
103
- container.style.transition = 'none';
104
- container.style.transform = this.positionStrategy.calculateTransform(position, containerPosition);
105
- }), takeUntil(this.destroy$))
102
+ if (result.height !== undefined) {
103
+ this.afterResized.emit(result.height);
104
+ }
105
+ }))), map((event) => strategy.extractMousePosition(event)), distinctUntilChanged(), tap((position) => strategy.onDragMove(position, container, overlayElement)), takeUntil(this.destroy$))
106
106
  .subscribe();
107
107
  }
108
- getContainerPosition(container) {
109
- return this._config.position === 'bottom' || this._config.position === 'top'
110
- ? container.getBoundingClientRect().top
111
- : container.getBoundingClientRect().left;
112
- }
113
108
  ngOnDestroy() {
114
109
  super.ngOnDestroy();
115
110
  this.destroy$.next();
@@ -142,8 +137,8 @@ export class DrawerContainer extends CdkDialogContainer {
142
137
  i0.ɵɵsyntheticHostProperty("@state", ctx._animationState);
143
138
  i0.ɵɵclassMap(ctx._drawerPosition);
144
139
  i0.ɵɵclassProp("dr-drawer-container", !ctx._config.unstyled);
145
- } }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 3, vars: 3, consts: [["class", "handle", 4, "ngIf"], [1, "dr-drawer-container__wrapper"], ["cdkPortalOutlet", ""], [1, "handle"], ["handleRef", ""]], template: function DrawerContainer_Template(rf, ctx) { if (rf & 1) {
146
- i0.ɵɵtemplate(0, DrawerContainer_div_0_Template, 2, 0, "div", 0);
140
+ } }, outputs: { afterResized: "afterResized" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 3, vars: 3, consts: [["class", "handle", 3, "handle--resize", "handle--dismiss", 4, "ngIf"], [1, "dr-drawer-container__wrapper"], ["cdkPortalOutlet", ""], [1, "handle"], ["handleRef", ""]], template: function DrawerContainer_Template(rf, ctx) { if (rf & 1) {
141
+ i0.ɵɵtemplate(0, DrawerContainer_div_0_Template, 2, 4, "div", 0);
147
142
  i0.ɵɵelementStart(1, "div", 1);
148
143
  i0.ɵɵtemplate(2, DrawerContainer_ng_template_2_Template, 0, 0, "ng-template", 2);
149
144
  i0.ɵɵelementEnd();
@@ -151,7 +146,7 @@ export class DrawerContainer extends CdkDialogContainer {
151
146
  i0.ɵɵproperty("ngIf", ctx._config.position === "bottom" && !ctx._config.unstyled);
152
147
  i0.ɵɵadvance(1);
153
148
  i0.ɵɵclassProp("unstyled-wrapper", ctx._config.unstyled);
154
- } }, dependencies: [PortalModule, i4.CdkPortalOutlet, DialogModule, MatCommonModule, CommonModule, i5.NgIf], styles: [".dr-drawer-container{display:flex;flex-direction:column;width:100%;overflow:auto;outline:0;box-sizing:border-box;background-color:#fff;box-shadow:0 4px 14px #d8d9de80}.dr-drawer-container__wrapper{flex:1;overflow:auto}.dr-drawer-container__wrapper.unstyled-wrapper{flex:unset;overflow:unset}.cdk-high-contrast-active .dr-drawer-container{outline:1px solid}.handle{position:relative;height:24px;cursor:pointer}.handle:after{content:\"\";position:absolute;top:16px;left:50%;transform:translate(-50%,-50%);background-color:#dfe0e3;height:4px;width:64px;border-radius:16px}.dr-drawer-right{transform:translate(100%);border-top-left-radius:16px;border-bottom-left-radius:16px}.dr-drawer-left{transform:translate(-100%);border-top-right-radius:16px;border-bottom-right-radius:16px}.dr-drawer-bottom{transform:translateY(100%);border-top-left-radius:16px;border-top-right-radius:16px}.dr-drawer-top{transform:translateY(-100%);border-bottom-left-radius:16px;border-bottom-right-radius:16px}\n"], encapsulation: 2, data: { animation: [drDrawerAnimations.drawerState] } }); }
149
+ } }, dependencies: [PortalModule, i4.CdkPortalOutlet, DialogModule, MatCommonModule, CommonModule, i5.NgIf], styles: [".dr-drawer-container{display:flex;flex-direction:column;width:100%;height:100%;overflow:auto;outline:0;box-sizing:border-box;background-color:#fff;box-shadow:0 4px 14px #d8d9de80}.dr-drawer-container__wrapper{flex:1;overflow:auto}.dr-drawer-container__wrapper.unstyled-wrapper{flex:unset;overflow:unset}.cdk-high-contrast-active .dr-drawer-container{outline:1px solid}.handle{position:relative;height:24px;user-select:none;-webkit-user-select:none;flex-shrink:0}.handle--resize{cursor:ns-resize}.handle--dismiss{cursor:pointer}.handle:after{content:\"\";position:absolute;top:16px;left:50%;transform:translate(-50%,-50%);background-color:#dfe0e3;height:4px;width:64px;border-radius:16px;transition:background-color .2s ease}.handle:hover:after{background-color:#b6b8bf}.handle:active:after{background-color:#9b9ea8}.dr-drawer-right{transform:translate(100%);border-top-left-radius:16px;border-bottom-left-radius:16px}.dr-drawer-left{transform:translate(-100%);border-top-right-radius:16px;border-bottom-right-radius:16px}.dr-drawer-bottom{transform:translateY(100%);border-top-left-radius:16px;border-top-right-radius:16px}.dr-drawer-top{transform:translateY(-100%);border-bottom-left-radius:16px;border-bottom-right-radius:16px}\n"], encapsulation: 2, data: { animation: [drDrawerAnimations.drawerState] } }); }
155
150
  }
156
151
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrawerContainer, [{
157
152
  type: Component,
@@ -166,7 +161,7 @@ export class DrawerContainer extends CdkDialogContainer {
166
161
  '[@state]': '_animationState',
167
162
  '(@state.start)': '_onAnimationStart($event)',
168
163
  '(@state.done)': '_onAnimationDone($event)',
169
- }, standalone: true, imports: [PortalModule, DialogModule, MatCommonModule, CommonModule], template: "<div *ngIf=\"_config.position === 'bottom' && !_config.unstyled\" #handleRef class=\"handle\"></div>\n<div class=\"dr-drawer-container__wrapper\" [class.unstyled-wrapper]=\"_config.unstyled\">\n <ng-template cdkPortalOutlet></ng-template>\n</div>\n", styles: [".dr-drawer-container{display:flex;flex-direction:column;width:100%;overflow:auto;outline:0;box-sizing:border-box;background-color:#fff;box-shadow:0 4px 14px #d8d9de80}.dr-drawer-container__wrapper{flex:1;overflow:auto}.dr-drawer-container__wrapper.unstyled-wrapper{flex:unset;overflow:unset}.cdk-high-contrast-active .dr-drawer-container{outline:1px solid}.handle{position:relative;height:24px;cursor:pointer}.handle:after{content:\"\";position:absolute;top:16px;left:50%;transform:translate(-50%,-50%);background-color:#dfe0e3;height:4px;width:64px;border-radius:16px}.dr-drawer-right{transform:translate(100%);border-top-left-radius:16px;border-bottom-left-radius:16px}.dr-drawer-left{transform:translate(-100%);border-top-right-radius:16px;border-bottom-right-radius:16px}.dr-drawer-bottom{transform:translateY(100%);border-top-left-radius:16px;border-top-right-radius:16px}.dr-drawer-top{transform:translateY(-100%);border-bottom-left-radius:16px;border-bottom-right-radius:16px}\n"] }]
164
+ }, standalone: true, imports: [PortalModule, DialogModule, MatCommonModule, CommonModule], template: "<div\n *ngIf=\"_config.position === 'bottom' && !_config.unstyled\"\n #handleRef\n class=\"handle\"\n [class.handle--resize]=\"_config.dragMode === 'resize'\"\n [class.handle--dismiss]=\"_config.dragMode === 'dismiss'\"></div>\n<div class=\"dr-drawer-container__wrapper\" [class.unstyled-wrapper]=\"_config.unstyled\">\n <ng-template cdkPortalOutlet></ng-template>\n</div>\n", styles: [".dr-drawer-container{display:flex;flex-direction:column;width:100%;height:100%;overflow:auto;outline:0;box-sizing:border-box;background-color:#fff;box-shadow:0 4px 14px #d8d9de80}.dr-drawer-container__wrapper{flex:1;overflow:auto}.dr-drawer-container__wrapper.unstyled-wrapper{flex:unset;overflow:unset}.cdk-high-contrast-active .dr-drawer-container{outline:1px solid}.handle{position:relative;height:24px;user-select:none;-webkit-user-select:none;flex-shrink:0}.handle--resize{cursor:ns-resize}.handle--dismiss{cursor:pointer}.handle:after{content:\"\";position:absolute;top:16px;left:50%;transform:translate(-50%,-50%);background-color:#dfe0e3;height:4px;width:64px;border-radius:16px;transition:background-color .2s ease}.handle:hover:after{background-color:#b6b8bf}.handle:active:after{background-color:#9b9ea8}.dr-drawer-right{transform:translate(100%);border-top-left-radius:16px;border-bottom-left-radius:16px}.dr-drawer-left{transform:translate(-100%);border-top-right-radius:16px;border-bottom-right-radius:16px}.dr-drawer-bottom{transform:translateY(100%);border-top-left-radius:16px;border-top-right-radius:16px}.dr-drawer-top{transform:translateY(-100%);border-bottom-left-radius:16px;border-bottom-right-radius:16px}\n"] }]
170
165
  }], function () { return [{ type: i0.ElementRef }, { type: i1.FocusTrapFactory }, { type: Document, decorators: [{
171
166
  type: Optional
172
167
  }, {
@@ -178,5 +173,7 @@ export class DrawerContainer extends CdkDialogContainer {
178
173
  }], _handleRef: [{
179
174
  type: ViewChild,
180
175
  args: ['handleRef']
176
+ }], afterResized: [{
177
+ type: Output
181
178
  }] }); })();
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kcmF3ZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kcmF3ZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBRU4sUUFBUSxFQUNSLFNBQVMsRUFDVCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7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QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBSTVDLFVBQVU7a0JBRFQsU0FBUzttQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5pbWF0aW9uRXZlbnQgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IEZvY3VzTW9uaXRvciwgRm9jdXNUcmFwRmFjdG9yeSwgSW50ZXJhY3Rpdml0eUNoZWNrZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDZGtEaWFsb2dDb250YWluZXIsIERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kaWFsb2cnO1xuaW1wb3J0IHsgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENka1BvcnRhbE91dGxldCwgUG9ydGFsTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaW5hbGl6ZSwgZnJvbUV2ZW50LCBtYXAsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRyRHJhd2VyQW5pbWF0aW9ucyB9IGZyb20gJy4vZHJhd2VyLWFuaW1hdGlvbic7XG5pbXBvcnQgeyBEcmF3ZXJDb25maWcgfSBmcm9tICcuL2RyYXdlci1jb25maWcnO1xuaW1wb3J0IHsgQm90dG9tUG9zaXRpb25TdHJhdGVneSwgRHJhd2VyUG9zaXRpb25TdHJhdGVneSB9IGZyb20gJy4vZHJhd2VyLXBvc2l0aW9uLXN0cmF0ZWd5JztcblxuLyoqXG4gKiBJbnRlcm5hbCBjb21wb25lbnQgdGhhdCB3cmFwcyB1c2VyLXByb3ZpZGVkIGRyYXdlciBjb250ZW50LlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RyLWRyYXdlci1jb250YWluZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ2RyYXdlci1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICAvLyBJbiBJdnkgZW1iZWRkZWQgdmlld3Mgd2lsbCBiZSBjaGFuZ2UgZGV0ZWN0ZWQgZnJvbSB0aGVpciBkZWNsYXJhdGlvbiBwbGFjZSwgcmF0aGVyIHRoYW4gd2hlcmVcbiAgICAvLyB0aGV5IHdlcmUgc3RhbXBlZCBvdXQuIFRoaXMgbWVhbnMgdGhhdCB3ZSBjYW4ndCBoYXZlIHRoZSBkcmF3ZXIgY29udGFpbmVyIGJlIE9uUHVzaCxcbiAgICAvLyBiZWNhdXNlIGl0IG1pZ2h0IGNhdXNlIHRoZSBzaGVldHMgdGhhdCB3ZXJlIG9wZW5lZCBmcm9tIGEgdGVtcGxhdGUgbm90IHRvIGJlIG91dCBvZiBkYXRlLlxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGFuaW1hdGlvbnM6IFtkckRyYXdlckFuaW1hdGlvbnMuZHJhd2VyU3RhdGVdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5kci1kcmF3ZXItY29udGFpbmVyXSc6ICchX2NvbmZpZy51bnN0eWxlZCcsXG4gICAgICAgICdbY2xhc3NdJzogJ19kcmF3ZXJQb3NpdGlvbicsXG4gICAgICAgIHRhYmluZGV4OiAnLTEnLFxuICAgICAgICAnW2lkXSc6ICdfY29uZmlnLmlkJyxcbiAgICAgICAgJ1thdHRyLnJvbGVdJzogJ19jb25maWcucm9sZScsXG4gICAgICAgICdbYXR0ci5hcmlhLW1vZGFsXSc6ICdfY29uZmlnLmlzTW9kYWwnLFxuICAgICAgICAnW2F0dHIuYXJpYS1sYWJlbF0nOiAnX2NvbmZpZy5hcmlhTGFiZWwnLFxuICAgICAgICAnW0BzdGF0ZV0nOiAnX2FuaW1hdGlvblN0YXRlJyxcbiAgICAgICAgJyhAc3RhdGUuc3RhcnQpJzogJ19vbkFuaW1hdGlvblN0YXJ0KCRldmVudCknLFxuICAgICAgICAnKEBzdGF0ZS5kb25lKSc6ICdfb25BbmltYXRpb25Eb25lKCRldmVudCknLFxuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbUG9ydGFsTW9kdWxlLCBEaWFsb2dNb2R1bGUsIE1hdENvbW1vbk1vZHVsZSwgQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgRHJhd2VyQ29udGFpbmVyIGV4dGVuZHMgQ2RrRGlhbG9nQ29udGFpbmVyPERyYXdlckNvbmZpZz4gaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICAgIC8qKiBUaGUgcG9ydGFsIG91dGxldCBpbnNpZGUgb2YgdGhpcyBjb250YWluZXIgaW50byB3aGljaCB0aGUgY29udGVudCB3aWxsIGJlIGxvYWRlZC4gKi9cbiAgICBAVmlld0NoaWxkKENka1BvcnRhbE91dGxldCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBfcG9ydGFsT3V0bGV0ITogQ2RrUG9ydGFsT3V0bGV0O1xuXG4gICAgQFZpZXdDaGlsZCgnaGFuZGxlUmVmJylcbiAgICBfaGFuZGxlUmVmPzogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICAvKiogVGhlIHN0YXRlIG9mIHRoZSBkcmF3ZXIgYW5pbWF0aW9ucy4gKi9cbiAgICBfYW5pbWF0aW9uU3RhdGU6ICd2b2lkJyB8ICd2aXNpYmxlJyB8ICdoaWRkZW4nID0gJ3ZvaWQnO1xuXG4gICAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSBzdGF0ZSBvZiB0aGUgYW5pbWF0aW9uIGNoYW5nZXMuICovXG4gICAgcmVhZG9ubHkgX2FuaW1hdGlvblN0YXRlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QW5pbWF0aW9uRXZlbnQ+KCk7XG5cbiAgICAvKiogV2hldGhlciB0aGUgY29tcG9uZW50IGhhcyBiZWVuIGRlc3Ryb3llZC4gKi9cbiAgICBwcml2YXRlIF9kZXN0cm95ZWQgPSBmYWxzZTtcblxuICAgIGdldCBfZHJhd2VyUG9zaXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maWcudW5zdHlsZWQgPyAnJyA6IGBkci1kcmF3ZXItJHt0aGlzLl9jb25maWcucG9zaXRpb259YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHBvc2l0aW9uU3RyYXRlZ3khOiBEcmF3ZXJQb3NpdGlvblN0cmF0ZWd5O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBmb2N1c1RyYXBGYWN0b3J5OiBGb2N1c1RyYXBGYWN0b3J5LFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERPQ1VNRU5UKSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgICAgIGNvbmZpZzogRHJhd2VyQ29uZmlnLFxuICAgICAgICBjaGVja2VyOiBJbnRlcmFjdGl2aXR5Q2hlY2tlcixcbiAgICAgICAgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZixcbiAgICAgICAgZm9jdXNNb25pdG9yPzogRm9jdXNNb25pdG9yLFxuICAgICkge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBmb2N1c1RyYXBGYWN0b3J5LCBkb2N1bWVudCwgY29uZmlnLCBjaGVja2VyLCBuZ1pvbmUsIG92ZXJsYXlSZWYsIGZvY3VzTW9uaXRvcik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF9jb250ZW50QXR0YWNoZWQoKTogdm9pZCB7XG4gICAgICAgIC8vIERlbGVnYXRlIHRvIHRoZSBvcmlnaW5hbCBkaWFsb2ctY29udGFpbmVyIGluaXRpYWxpemF0aW9uIChpLmUuIHNhdmluZyB0aGVcbiAgICAgICAgLy8gcHJldmlvdXMgZWxlbWVudCwgc2V0dGluZyB1cCB0aGUgZm9jdXMgdHJhcCBhbmQgbW92aW5nIGZvY3VzIHRvIHRoZSBjb250YWluZXIpLlxuICAgICAgICBzdXBlci5fY29udGVudEF0dGFjaGVkKCk7XG5cbiAgICAgICAgdGhpcy5lbnRlcigpO1xuICAgIH1cblxuICAgIC8qKiBCZWdpbiBhbmltYXRpb24gb2YgYm90dG9tIHNoZWV0IGVudHJhbmNlIGludG8gdmlldy4gKi9cbiAgICBlbnRlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2FuaW1hdGlvblN0YXRlID0gJ3Zpc2libGUnO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQmVnaW4gYW5pbWF0aW9uIG9mIHRoZSBib3R0b20gc2hlZXQgZXhpdGluZyBmcm9tIHZpZXcuICovXG4gICAgZXhpdCgpOiB2b2lkIHtcbiAgICAgICAgKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuc3R5bGUudHJhbnNpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKCF0aGlzLl9kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2FuaW1hdGlvblN0YXRlID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5yZXNvbHZlUG9zaXRpb25TdHJhdGVneSgpO1xuICAgICAgICBpZiAodGhpcy5wb3NpdGlvblN0cmF0ZWd5ICYmICF0aGlzLl9jb25maWcudW5zdHlsZWQgJiYgdGhpcy5faGFuZGxlUmVmKSB7XG4gICAgICAgICAgICB0aGlzLnNldHVwRHJhZ0xpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc29sdmVQb3NpdGlvblN0cmF0ZWd5KCk6IERyYXdlclBvc2l0aW9uU3RyYXRlZ3kge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuX2NvbmZpZy5wb3NpdGlvbikge1xuICAgICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJvdHRvbVBvc2l0aW9uU3RyYXRlZ3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBEcmFnTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1vdXNlZG93biQgPSBmcm9tRXZlbnQodGhpcy5faGFuZGxlUmVmLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWRvd24nKTtcbiAgICAgICAgY29uc3QgbW91c2Vtb3ZlJCA9IGZyb21FdmVudChkb2N1bWVudCwgJ21vdXNlbW92ZScpO1xuICAgICAgICBjb25zdCBtb3VzZXVwJCA9IGZyb21FdmVudChkb2N1bWVudCwgJ21vdXNldXAnKTtcblxuICAgICAgICBsZXQgbGFzdFBvc2l0aW9uID0gMDtcbiAgICAgICAgbGV0IGluaXRQb3NpdGlvbiA9IDA7XG4gICAgICAgIGxldCBjdXJyZW50UG9zaXRpb24gPSAwO1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBsYXN0UG9zaXRpb24gPSB0aGlzLmdldENvbnRhaW5lclBvc2l0aW9uKGNvbnRhaW5lcik7XG4gICAgICAgICAgICBpbml0UG9zaXRpb24gPSBsYXN0UG9zaXRpb247XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG1vdXNlZG93biRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgICAgICBtb3VzZW1vdmUkLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBvc2l0aW9uU3RyYXRlZ3kuc2hvdWxkQ2xvc2UoY3VycmVudFBvc2l0aW9uLCBpbml0UG9zaXRpb24sIGxhc3RQb3NpdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuc3R5bGUudHJhbnNpdGlvbiA9ICd0cmFuc2Zvcm0gMC41cyBjdWJpYy1iZXppZXIoMC4zMiwgMC43MiwgMCwgMSknO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoMHB4LCAwcHgsIDBweClgO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwobW91c2V1cCQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbWFwKChldmVudDogTW91c2VFdmVudCkgPT4gdGhpcy5wb3NpdGlvblN0cmF0ZWd5LmV4dHJhY3RNb3VzZVBvc2l0aW9uKGV2ZW50KSksXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICB0YXAoKHBvc2l0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjb250YWluZXJQb3NpdGlvbiA9IHRoaXMuZ2V0Q29udGFpbmVyUG9zaXRpb24oY29udGFpbmVyKTtcblxuICAgICAgICAgICAgICAgICAgICBjb250YWluZXJQb3NpdGlvbiA9IE1hdGgubWluKGNvbnRhaW5lclBvc2l0aW9uLCBsYXN0UG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBsYXN0UG9zaXRpb24gPSBNYXRoLm1pbihjb250YWluZXJQb3NpdGlvbiwgbGFzdFBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb247XG5cbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS50cmFuc2Zvcm0gPSB0aGlzLnBvc2l0aW9uU3RyYXRlZ3kuY2FsY3VsYXRlVHJhbnNmb3JtKHBvc2l0aW9uLCBjb250YWluZXJQb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29udGFpbmVyUG9zaXRpb24oY29udGFpbmVyOiBIVE1MRWxlbWVudCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maWcucG9zaXRpb24gPT09ICdib3R0b20nIHx8IHRoaXMuX2NvbmZpZy5wb3NpdGlvbiA9PT0gJ3RvcCdcbiAgICAgICAgICAgID8gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcFxuICAgICAgICAgICAgOiBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcblxuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9kZXN0cm95ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIF9vbkFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC50b1N0YXRlID09PSAndmlzaWJsZScpIHtcbiAgICAgICAgICAgIHRoaXMuX3RyYXBGb2N1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIF9vbkFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgICAgICB0aGlzLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF9jYXB0dXJlSW5pdGlhbEZvY3VzKCk6IHZvaWQge31cbn1cbiIsIjxkaXYgKm5nSWY9XCJfY29uZmlnLnBvc2l0aW9uID09PSAnYm90dG9tJyAmJiAhX2NvbmZpZy51bnN0eWxlZFwiICNoYW5kbGVSZWYgY2xhc3M9XCJoYW5kbGVcIj48L2Rpdj5cbjxkaXYgY2xhc3M9XCJkci1kcmF3ZXItY29udGFpbmVyX193cmFwcGVyXCIgW2NsYXNzLnVuc3R5bGVkLXdyYXBwZXJdPVwiX2NvbmZpZy51bnN0eWxlZFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBjZGtQb3J0YWxPdXRsZXQ+PC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kcmF3ZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kcmF3ZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBRU4sUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9C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LGVBQWUsRUFBRSxZQUFZLDh3Q0FkdkQsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUM7O3VGQWdCbkMsZUFBZTtjQXpCM0IsU0FBUzsyQkFDSSxxQkFBcUIsbUJBTWQsdUJBQXVCLENBQUMsT0FBTyxpQkFDakMsaUJBQWlCLENBQUMsSUFBSSxjQUN6QixDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxRQUN0QztvQkFDRiw2QkFBNkIsRUFBRSxtQkFBbUI7b0JBQ2xELFNBQVMsRUFBRSxpQkFBaUI7b0JBQzVCLFFBQVEsRUFBRSxJQUFJO29CQUNkLE1BQU0sRUFBRSxZQUFZO29CQUNwQixhQUFhLEVBQUUsY0FBYztvQkFDN0IsbUJBQW1CLEVBQUUsaUJBQWlCO29CQUN0QyxtQkFBbUIsRUFBRSxtQkFBbUI7b0JBQ3hDLFVBQVUsRUFBRSxpQkFBaUI7b0JBQzdCLGdCQUFnQixFQUFFLDJCQUEyQjtvQkFDN0MsZUFBZSxFQUFFLDBCQUEwQjtpQkFDOUMsY0FDVyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxZQUFZLENBQUM7O3NCQW1DL0QsUUFBUTs7c0JBQUksTUFBTTt1QkFBQyxRQUFROytKQTlCaEMsYUFBYTtrQkFEWixTQUFTO21CQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFJNUMsVUFBVTtrQkFEVCxTQUFTO21CQUFDLFdBQVc7WUFJWixZQUFZO2tCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5pbWF0aW9uRXZlbnQgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IEZvY3VzTW9uaXRvciwgRm9jdXNUcmFwRmFjdG9yeSwgSW50ZXJhY3Rpdml0eUNoZWNrZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDZGtEaWFsb2dDb250YWluZXIsIERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kaWFsb2cnO1xuaW1wb3J0IHsgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENka1BvcnRhbE91dGxldCwgUG9ydGFsTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmluYWxpemUsIGZyb21FdmVudCwgbWFwLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkckRyYXdlckFuaW1hdGlvbnMgfSBmcm9tICcuL2RyYXdlci1hbmltYXRpb24nO1xuaW1wb3J0IHsgRHJhd2VyQ29uZmlnIH0gZnJvbSAnLi9kcmF3ZXItY29uZmlnJztcbmltcG9ydCB7IEJvdHRvbURpc21pc3NQb3NpdGlvblN0cmF0ZWd5LCBCb3R0b21SZXNpemVQb3NpdGlvblN0cmF0ZWd5LCBEcmF3ZXJQb3NpdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9kcmF3ZXItcG9zaXRpb24tc3RyYXRlZ3knO1xuXG4vKipcbiAqIEludGVybmFsIGNvbXBvbmVudCB0aGF0IHdyYXBzIHVzZXItcHJvdmlkZWQgZHJhd2VyIGNvbnRlbnQuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHItZHJhd2VyLWNvbnRhaW5lcicsXG4gICAgdGVtcGxhdGVVcmw6ICdkcmF3ZXItY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddLFxuICAgIC8vIEluIEl2eSBlbWJlZGRlZCB2aWV3cyB3aWxsIGJlIGNoYW5nZSBkZXRlY3RlZCBmcm9tIHRoZWlyIGRlY2xhcmF0aW9uIHBsYWNlLCByYXRoZXIgdGhhbiB3aGVyZVxuICAgIC8vIHRoZXkgd2VyZSBzdGFtcGVkIG91dC4gVGhpcyBtZWFucyB0aGF0IHdlIGNhbid0IGhhdmUgdGhlIGRyYXdlciBjb250YWluZXIgYmUgT25QdXNoLFxuICAgIC8vIGJlY2F1c2UgaXQgbWlnaHQgY2F1c2UgdGhlIHNoZWV0cyB0aGF0IHdlcmUgb3BlbmVkIGZyb20gYSB0ZW1wbGF0ZSBub3QgdG8gYmUgb3V0IG9mIGRhdGUuXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgYW5pbWF0aW9uczogW2RyRHJhd2VyQW5pbWF0aW9ucy5kcmF3ZXJTdGF0ZV0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLmRyLWRyYXdlci1jb250YWluZXJdJzogJyFfY29uZmlnLnVuc3R5bGVkJyxcbiAgICAgICAgJ1tjbGFzc10nOiAnX2RyYXdlclBvc2l0aW9uJyxcbiAgICAgICAgdGFiaW5kZXg6ICctMScsXG4gICAgICAgICdbaWRdJzogJ19jb25maWcuaWQnLFxuICAgICAgICAnW2F0dHIucm9sZV0nOiAnX2NvbmZpZy5yb2xlJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtbW9kYWxdJzogJ19jb25maWcuaXNNb2RhbCcsXG4gICAgICAgICdbYXR0ci5hcmlhLWxhYmVsXSc6ICdfY29uZmlnLmFyaWFMYWJlbCcsXG4gICAgICAgICdbQHN0YXRlXSc6ICdfYW5pbWF0aW9uU3RhdGUnLFxuICAgICAgICAnKEBzdGF0ZS5zdGFydCknOiAnX29uQW5pbWF0aW9uU3RhcnQoJGV2ZW50KScsXG4gICAgICAgICcoQHN0YXRlLmRvbmUpJzogJ19vbkFuaW1hdGlvbkRvbmUoJGV2ZW50KScsXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtQb3J0YWxNb2R1bGUsIERpYWxvZ01vZHVsZSwgTWF0Q29tbW9uTW9kdWxlLCBDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBEcmF3ZXJDb250YWluZXIgZXh0ZW5kcyBDZGtEaWFsb2dDb250YWluZXI8RHJhd2VyQ29uZmlnPiBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqIFRoZSBwb3J0YWwgb3V0bGV0IGluc2lkZSBvZiB0aGlzIGNvbnRhaW5lciBpbnRvIHdoaWNoIHRoZSBjb250ZW50IHdpbGwgYmUgbG9hZGVkLiAqL1xuICAgIEBWaWV3Q2hpbGQoQ2RrUG9ydGFsT3V0bGV0LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIF9wb3J0YWxPdXRsZXQhOiBDZGtQb3J0YWxPdXRsZXQ7XG5cbiAgICBAVmlld0NoaWxkKCdoYW5kbGVSZWYnKVxuICAgIF9oYW5kbGVSZWY/OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIC8qKiBFbWl0cyBmaW5hbCBoZWlnaHQgKHB4KSBhZnRlciByZXNpemUuIEF2YWlsYWJsZSBvbmx5IGluIHJlc2l6ZSBtb2RlLiAqL1xuICAgIEBPdXRwdXQoKSBhZnRlclJlc2l6ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKiBUaGUgc3RhdGUgb2YgdGhlIGRyYXdlciBhbmltYXRpb25zLiAqL1xuICAgIF9hbmltYXRpb25TdGF0ZTogJ3ZvaWQnIHwgJ3Zpc2libGUnIHwgJ2hpZGRlbicgPSAndm9pZCc7XG5cbiAgICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIHN0YXRlIG9mIHRoZSBhbmltYXRpb24gY2hhbmdlcy4gKi9cbiAgICByZWFkb25seSBfYW5pbWF0aW9uU3RhdGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxBbmltYXRpb25FdmVudD4oKTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjb21wb25lbnQgaGFzIGJlZW4gZGVzdHJveWVkLiAqL1xuICAgIHByaXZhdGUgX2Rlc3Ryb3llZCA9IGZhbHNlO1xuXG4gICAgZ2V0IF9kcmF3ZXJQb3NpdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy51bnN0eWxlZCA/ICcnIDogYGRyLWRyYXdlci0ke3RoaXMuX2NvbmZpZy5wb3NpdGlvbn1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcG9zaXRpb25TdHJhdGVneT86IERyYXdlclBvc2l0aW9uU3RyYXRlZ3k7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIGZvY3VzVHJhcEZhY3Rvcnk6IEZvY3VzVHJhcEZhY3RvcnksXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgY29uZmlnOiBEcmF3ZXJDb25maWcsXG4gICAgICAgIGNoZWNrZXI6IEludGVyYWN0aXZpdHlDaGVja2VyLFxuICAgICAgICBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmLFxuICAgICAgICBmb2N1c01vbml0b3I/OiBGb2N1c01vbml0b3IsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGZvY3VzVHJhcEZhY3RvcnksIGRvY3VtZW50LCBjb25maWcsIGNoZWNrZXIsIG5nWm9uZSwgb3ZlcmxheVJlZiwgZm9jdXNNb25pdG9yKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX2NvbnRlbnRBdHRhY2hlZCgpOiB2b2lkIHtcbiAgICAgICAgLy8gRGVsZWdhdGUgdG8gdGhlIG9yaWdpbmFsIGRpYWxvZy1jb250YWluZXIgaW5pdGlhbGl6YXRpb24gKGkuZS4gc2F2aW5nIHRoZVxuICAgICAgICAvLyBwcmV2aW91cyBlbGVtZW50LCBzZXR0aW5nIHVwIHRoZSBmb2N1cyB0cmFwIGFuZCBtb3ZpbmcgZm9jdXMgdG8gdGhlIGNvbnRhaW5lcikuXG4gICAgICAgIHN1cGVyLl9jb250ZW50QXR0YWNoZWQoKTtcblxuICAgICAgICB0aGlzLmVudGVyKCk7XG4gICAgfVxuXG4gICAgLyoqIEJlZ2luIGFuaW1hdGlvbiBvZiBib3R0b20gc2hlZXQgZW50cmFuY2UgaW50byB2aWV3LiAqL1xuICAgIGVudGVyKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2Rlc3Ryb3llZCkge1xuICAgICAgICAgICAgdGhpcy5fYW5pbWF0aW9uU3RhdGUgPSAndmlzaWJsZSc7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBCZWdpbiBhbmltYXRpb24gb2YgdGhlIGJvdHRvbSBzaGVldCBleGl0aW5nIGZyb20gdmlldy4gKi9cbiAgICBleGl0KCk6IHZvaWQge1xuICAgICAgICAodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5zdHlsZS50cmFuc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoIXRoaXMuX2Rlc3Ryb3llZCkge1xuICAgICAgICAgICAgdGhpcy5fYW5pbWF0aW9uU3RhdGUgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLnJlc29sdmVQb3NpdGlvblN0cmF0ZWd5KCk7XG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9uU3RyYXRlZ3kgJiYgIXRoaXMuX2NvbmZpZy51bnN0eWxlZCAmJiB0aGlzLl9oYW5kbGVSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0dXBEcmFnTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVzb2x2ZVBvc2l0aW9uU3RyYXRlZ3koKTogRHJhd2VyUG9zaXRpb25TdHJhdGVneSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5fY29uZmlnLnBvc2l0aW9uKSB7XG4gICAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb25maWcuZHJhZ01vZGUgPT09ICdyZXNpemUnXG4gICAgICAgICAgICAgICAgICAgID8gbmV3IEJvdHRvbVJlc2l6ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5fY29uZmlnKVxuICAgICAgICAgICAgICAgICAgICA6IG5ldyBCb3R0b21EaXNtaXNzUG9zaXRpb25TdHJhdGVneSgpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXR1cERyYWdMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3RyYXRlZ3kgPSB0aGlzLnBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgICAgIGlmICghc3RyYXRlZ3kpIHJldHVybjtcblxuICAgICAgICBjb25zdCBtb3VzZWRvd24kID0gZnJvbUV2ZW50KHRoaXMuX2hhbmRsZVJlZiEubmF0aXZlRWxlbWVudCwgJ21vdXNlZG93bicpO1xuICAgICAgICBjb25zdCBtb3VzZW1vdmUkID0gZnJvbUV2ZW50KGRvY3VtZW50LCAnbW91c2Vtb3ZlJyk7XG4gICAgICAgIGNvbnN0IG1vdXNldXAkID0gZnJvbUV2ZW50KGRvY3VtZW50LCAnbW91c2V1cCcpO1xuXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3Qgb3ZlcmxheUVsZW1lbnQgPSB0aGlzLm92ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQ7XG5cbiAgICAgICAgbW91c2Vkb3duJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHN0cmF0ZWd5Lm9uRHJhZ1N0YXJ0KGNvbnRhaW5lciwgb3ZlcmxheUVsZW1lbnQpKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgbW91c2Vtb3ZlJC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKG1vdXNldXAkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBzdHJhdGVneS5vbkRyYWdFbmQoY29udGFpbmVyLCBvdmVybGF5RWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnNob3VsZENsb3NlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmhlaWdodCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJSZXNpemVkLmVtaXQocmVzdWx0LmhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBtYXAoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiBzdHJhdGVneS5leHRyYWN0TW91c2VQb3NpdGlvbihldmVudCkpLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgdGFwKChwb3NpdGlvbikgPT4gc3RyYXRlZ3kub25EcmFnTW92ZShwb3NpdGlvbiwgY29udGFpbmVyLCBvdmVybGF5RWxlbWVudCkpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcblxuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9kZXN0cm95ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIF9vbkFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC50b1N0YXRlID09PSAndmlzaWJsZScpIHtcbiAgICAgICAgICAgIHRoaXMuX3RyYXBGb2N1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIF9vbkFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgICAgICB0aGlzLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF9jYXB0dXJlSW5pdGlhbEZvY3VzKCk6IHZvaWQge31cbn1cbiIsIjxkaXZcbiAgICAqbmdJZj1cIl9jb25maWcucG9zaXRpb24gPT09ICdib3R0b20nICYmICFfY29uZmlnLnVuc3R5bGVkXCJcbiAgICAjaGFuZGxlUmVmXG4gICAgY2xhc3M9XCJoYW5kbGVcIlxuICAgIFtjbGFzcy5oYW5kbGUtLXJlc2l6ZV09XCJfY29uZmlnLmRyYWdNb2RlID09PSAncmVzaXplJ1wiXG4gICAgW2NsYXNzLmhhbmRsZS0tZGlzbWlzc109XCJfY29uZmlnLmRyYWdNb2RlID09PSAnZGlzbWlzcydcIj48L2Rpdj5cbjxkaXYgY2xhc3M9XCJkci1kcmF3ZXItY29udGFpbmVyX193cmFwcGVyXCIgW2NsYXNzLnVuc3R5bGVkLXdyYXBwZXJdPVwiX2NvbmZpZy51bnN0eWxlZFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBjZGtQb3J0YWxPdXRsZXQ+PC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
@@ -1,14 +1,100 @@
1
- export class BottomPositionStrategy {
1
+ export class BottomDismissPositionStrategy {
2
+ constructor() {
3
+ this.startMouseY = null;
4
+ this.deltaY = 0;
5
+ }
2
6
  extractMousePosition(event) {
3
7
  return event.clientY;
4
8
  }
5
- calculateTransform(currentPosition, containerPosition) {
6
- return currentPosition > containerPosition
7
- ? `translate3d(0px, ${currentPosition - containerPosition}px, 0px)`
8
- : `translate3d(0px, 0px, 0px)`;
9
+ onDragStart(container) {
10
+ this.startMouseY = null;
11
+ this.deltaY = 0;
12
+ }
13
+ onDragMove(mouseY, container) {
14
+ if (this.startMouseY === null) {
15
+ this.startMouseY = mouseY;
16
+ return;
17
+ }
18
+ this.deltaY = mouseY - this.startMouseY;
19
+ if (this.deltaY < 0) {
20
+ this.deltaY = 0;
21
+ }
22
+ container.style.transition = 'none';
23
+ container.style.transform = `translate3d(0px, ${this.deltaY}px, 0px)`;
24
+ }
25
+ onDragEnd(container) {
26
+ const containerHeight = container.getBoundingClientRect().height;
27
+ const shouldClose = this.deltaY > containerHeight / 2;
28
+ if (!shouldClose) {
29
+ container.style.transition = 'transform 0.5s cubic-bezier(0.32, 0.72, 0, 1)';
30
+ container.style.transform = `translate3d(0px, 0px, 0px)`;
31
+ }
32
+ return { shouldClose };
33
+ }
34
+ }
35
+ export class BottomResizePositionStrategy {
36
+ constructor(config) {
37
+ this.config = config;
38
+ this.startMouseY = null;
39
+ this.startHeightPx = 0;
40
+ this.currentHeightPx = 0;
41
+ const viewportH = window.innerHeight;
42
+ this.minHeightPx = this.toPx(config.minHeight ?? '10vh', viewportH);
43
+ this.maxHeightPx = this.toPx(config.maxHeight ?? '90vh', viewportH);
44
+ this.minHeightPx = Math.max(0, this.minHeightPx);
45
+ this.maxHeightPx = Math.max(this.minHeightPx, this.maxHeightPx);
46
+ }
47
+ extractMousePosition(event) {
48
+ return event.clientY;
49
+ }
50
+ onDragStart(container, overlayElement) {
51
+ this.startMouseY = null;
52
+ const rect = overlayElement.getBoundingClientRect();
53
+ this.startHeightPx = rect.height;
54
+ this.currentHeightPx = this.startHeightPx;
55
+ overlayElement.style.transition = 'none';
56
+ overlayElement.style.height = `${this.startHeightPx}px`;
57
+ overlayElement.style.maxHeight = 'none';
58
+ container.style.height = '100%';
59
+ }
60
+ onDragMove(mouseY, container, overlayElement) {
61
+ if (this.startMouseY === null) {
62
+ this.startMouseY = mouseY;
63
+ return;
64
+ }
65
+ const delta = this.startMouseY - mouseY;
66
+ let nextHeight = this.startHeightPx + delta;
67
+ nextHeight = Math.max(this.minHeightPx, Math.min(this.maxHeightPx, nextHeight));
68
+ this.currentHeightPx = nextHeight;
69
+ overlayElement.style.height = `${nextHeight}px`;
70
+ }
71
+ onDragEnd(container, overlayElement) {
72
+ let height = this.currentHeightPx || overlayElement.getBoundingClientRect().height;
73
+ height = Math.max(this.minHeightPx, Math.min(this.maxHeightPx, height));
74
+ overlayElement.style.transition = 'height 200ms cubic-bezier(0.32, 0.72, 0, 1)';
75
+ overlayElement.style.height = `${height}px`;
76
+ this.startMouseY = NaN;
77
+ this.currentHeightPx = height;
78
+ return { shouldClose: false, height };
9
79
  }
10
- shouldClose(currentPosition, initPosition, lastPosition) {
11
- return Math.abs(currentPosition - initPosition) <= currentPosition - lastPosition;
80
+ toPx(value, viewportH) {
81
+ if (typeof value === 'number') {
82
+ return value;
83
+ }
84
+ const raw = String(value).trim();
85
+ if (!raw) {
86
+ return 0;
87
+ }
88
+ if (raw.endsWith('vh')) {
89
+ const n = parseFloat(raw);
90
+ return Number.isFinite(n) ? (n / 100) * viewportH : 0;
91
+ }
92
+ if (raw.endsWith('px')) {
93
+ const n = parseFloat(raw);
94
+ return Number.isFinite(n) ? n : 0;
95
+ }
96
+ const asNumber = parseFloat(raw);
97
+ return Number.isFinite(asNumber) ? asNumber : 0;
12
98
  }
13
99
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLXBvc2l0aW9uLXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHJhd2VyL2RyYXdlci1wb3NpdGlvbi1zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLE9BQU8sc0JBQXNCO0lBQy9CLG9CQUFvQixDQUFDLEtBQWlCO1FBQ2xDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQsa0JBQWtCLENBQUMsZUFBdUIsRUFBRSxpQkFBeUI7UUFDakUsT0FBTyxlQUFlLEdBQUcsaUJBQWlCO1lBQ3RDLENBQUMsQ0FBQyxvQkFBb0IsZUFBZSxHQUFHLGlCQUFpQixVQUFVO1lBQ25FLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQztJQUN2QyxDQUFDO0lBRUQsV0FBVyxDQUFDLGVBQXVCLEVBQUUsWUFBb0IsRUFBRSxZQUFvQjtRQUMzRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxHQUFHLFlBQVksQ0FBQyxJQUFJLGVBQWUsR0FBRyxZQUFZLENBQUM7SUFDdEYsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEcmF3ZXJQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICBleHRyYWN0TW91c2VQb3NpdGlvbihldmVudDogTW91c2VFdmVudCk6IG51bWJlcjtcbiAgICBjYWxjdWxhdGVUcmFuc2Zvcm0oY3VycmVudFBvc2l0aW9uOiBudW1iZXIsIGNvbnRhaW5lclBvc2l0aW9uOiBudW1iZXIpOiBzdHJpbmc7XG4gICAgc2hvdWxkQ2xvc2UoY3VycmVudFBvc2l0aW9uOiBudW1iZXIsIGluaXRQb3NpdGlvbjogbnVtYmVyLCBsYXN0UG9zaXRpb246IG51bWJlcik6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBCb3R0b21Qb3NpdGlvblN0cmF0ZWd5IGltcGxlbWVudHMgRHJhd2VyUG9zaXRpb25TdHJhdGVneSB7XG4gICAgZXh0cmFjdE1vdXNlUG9zaXRpb24oZXZlbnQ6IE1vdXNlRXZlbnQpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZXZlbnQuY2xpZW50WTtcbiAgICB9XG5cbiAgICBjYWxjdWxhdGVUcmFuc2Zvcm0oY3VycmVudFBvc2l0aW9uOiBudW1iZXIsIGNvbnRhaW5lclBvc2l0aW9uOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gY3VycmVudFBvc2l0aW9uID4gY29udGFpbmVyUG9zaXRpb25cbiAgICAgICAgICAgID8gYHRyYW5zbGF0ZTNkKDBweCwgJHtjdXJyZW50UG9zaXRpb24gLSBjb250YWluZXJQb3NpdGlvbn1weCwgMHB4KWBcbiAgICAgICAgICAgIDogYHRyYW5zbGF0ZTNkKDBweCwgMHB4LCAwcHgpYDtcbiAgICB9XG5cbiAgICBzaG91bGRDbG9zZShjdXJyZW50UG9zaXRpb246IG51bWJlciwgaW5pdFBvc2l0aW9uOiBudW1iZXIsIGxhc3RQb3NpdGlvbjogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBNYXRoLmFicyhjdXJyZW50UG9zaXRpb24gLSBpbml0UG9zaXRpb24pIDw9IGN1cnJlbnRQb3NpdGlvbiAtIGxhc3RQb3NpdGlvbjtcbiAgICB9XG59XG4iXX0=
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLXBvc2l0aW9uLXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHJhd2VyL2RyYXdlci1wb3NpdGlvbi1zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxNQUFNLE9BQU8sNkJBQTZCO0lBQTFDO1FBQ1ksZ0JBQVcsR0FBa0IsSUFBSSxDQUFDO1FBQ2xDLFdBQU0sR0FBVyxDQUFDLENBQUM7SUFzQy9CLENBQUM7SUFwQ0csb0JBQW9CLENBQUMsS0FBaUI7UUFDbEMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXLENBQUMsU0FBc0I7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFjLEVBQUUsU0FBc0I7UUFDN0MsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRTtZQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztZQUMxQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRXhDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDbkI7UUFFRCxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDcEMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsb0JBQW9CLElBQUksQ0FBQyxNQUFNLFVBQVUsQ0FBQztJQUMxRSxDQUFDO0lBRUQsU0FBUyxDQUFDLFNBQXNCO1FBQzVCLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNqRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFFdEQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNkLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLCtDQUErQyxDQUFDO1lBQzdFLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLDRCQUE0QixDQUFDO1NBQzVEO1FBRUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyw0QkFBNEI7SUFRckMsWUFBNkIsTUFBb0I7UUFBcEIsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQVB6QyxnQkFBVyxHQUFrQixJQUFJLENBQUM7UUFDbEMsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFDMUIsb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFNaEMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUVyQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRXBFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBaUI7UUFDbEMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXLENBQUMsU0FBc0IsRUFBRSxjQUEyQjtRQUMzRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUV4QixNQUFNLElBQUksR0FBRyxjQUFjLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDakMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRTFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUN6QyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQztRQUN4RCxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7UUFFeEMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxVQUFVLENBQUMsTUFBYyxFQUFFLFNBQXNCLEVBQUUsY0FBMkI7UUFDMUUsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRTtZQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztZQUMxQixPQUFPO1NBQ1Y7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztRQUN4QyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUU1QyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxlQUFlLEdBQUcsVUFBVSxDQUFDO1FBRWxDLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsVUFBVSxJQUFJLENBQUM7SUFDcEQsQ0FBQztJQUVELFNBQVMsQ0FBQyxTQUFzQixFQUFFLGNBQTJCO1FBQ3pELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksY0FBYyxDQUFDLHFCQUFxQixFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ25GLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFeEUsY0FBYyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsNkNBQTZDLENBQUM7UUFDaEYsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQztRQUU1QyxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQztRQUU5QixPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU8sSUFBSSxDQUFDLEtBQXNCLEVBQUUsU0FBaUI7UUFDbEQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDM0IsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFakMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNOLE9BQU8sQ0FBQyxDQUFDO1NBQ1o7UUFFRCxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEIsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFCLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekQ7UUFFRCxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEIsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFCLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDckM7UUFFRCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEcmF3ZXJDb25maWcgfSBmcm9tICcuL2RyYXdlci1jb25maWcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERyYXdlclBvc2l0aW9uU3RyYXRlZ3kge1xuICAgIGV4dHJhY3RNb3VzZVBvc2l0aW9uKGV2ZW50OiBNb3VzZUV2ZW50KTogbnVtYmVyO1xuICAgIG9uRHJhZ1N0YXJ0KGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIG92ZXJsYXlFbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQ7XG4gICAgb25EcmFnTW92ZShjdXJyZW50UG9zaXRpb246IG51bWJlciwgY29udGFpbmVyOiBIVE1MRWxlbWVudCwgb3ZlcmxheUVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZDtcbiAgICBvbkRyYWdFbmQoY29udGFpbmVyOiBIVE1MRWxlbWVudCwgb3ZlcmxheUVsZW1lbnQ6IEhUTUxFbGVtZW50KTogeyBzaG91bGRDbG9zZTogYm9vbGVhbjsgaGVpZ2h0PzogbnVtYmVyIH07XG59XG5cbmV4cG9ydCBjbGFzcyBCb3R0b21EaXNtaXNzUG9zaXRpb25TdHJhdGVneSBpbXBsZW1lbnRzIERyYXdlclBvc2l0aW9uU3RyYXRlZ3kge1xuICAgIHByaXZhdGUgc3RhcnRNb3VzZVk6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgZGVsdGFZOiBudW1iZXIgPSAwO1xuXG4gICAgZXh0cmFjdE1vdXNlUG9zaXRpb24oZXZlbnQ6IE1vdXNlRXZlbnQpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZXZlbnQuY2xpZW50WTtcbiAgICB9XG5cbiAgICBvbkRyYWdTdGFydChjb250YWluZXI6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RhcnRNb3VzZVkgPSBudWxsO1xuICAgICAgICB0aGlzLmRlbHRhWSA9IDA7XG4gICAgfVxuXG4gICAgb25EcmFnTW92ZShtb3VzZVk6IG51bWJlciwgY29udGFpbmVyOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdGFydE1vdXNlWSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zdGFydE1vdXNlWSA9IG1vdXNlWTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGVsdGFZID0gbW91c2VZIC0gdGhpcy5zdGFydE1vdXNlWTtcblxuICAgICAgICBpZiAodGhpcy5kZWx0YVkgPCAwKSB7XG4gICAgICAgICAgICB0aGlzLmRlbHRhWSA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBjb250YWluZXIuc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcbiAgICAgICAgY29udGFpbmVyLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgwcHgsICR7dGhpcy5kZWx0YVl9cHgsIDBweClgO1xuICAgIH1cblxuICAgIG9uRHJhZ0VuZChjb250YWluZXI6IEhUTUxFbGVtZW50KTogeyBzaG91bGRDbG9zZTogYm9vbGVhbiB9IHtcbiAgICAgICAgY29uc3QgY29udGFpbmVySGVpZ2h0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICAgICAgY29uc3Qgc2hvdWxkQ2xvc2UgPSB0aGlzLmRlbHRhWSA+IGNvbnRhaW5lckhlaWdodCAvIDI7XG5cbiAgICAgICAgaWYgKCFzaG91bGRDbG9zZSkge1xuICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLnRyYW5zaXRpb24gPSAndHJhbnNmb3JtIDAuNXMgY3ViaWMtYmV6aWVyKDAuMzIsIDAuNzIsIDAsIDEpJztcbiAgICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoMHB4LCAwcHgsIDBweClgO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgc2hvdWxkQ2xvc2UgfTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCb3R0b21SZXNpemVQb3NpdGlvblN0cmF0ZWd5IGltcGxlbWVudHMgRHJhd2VyUG9zaXRpb25TdHJhdGVneSB7XG4gICAgcHJpdmF0ZSBzdGFydE1vdXNlWTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBzdGFydEhlaWdodFB4OiBudW1iZXIgPSAwO1xuICAgIHByaXZhdGUgY3VycmVudEhlaWdodFB4OiBudW1iZXIgPSAwO1xuXG4gICAgcHJpdmF0ZSBtaW5IZWlnaHRQeDogbnVtYmVyO1xuICAgIHByaXZhdGUgbWF4SGVpZ2h0UHg6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBEcmF3ZXJDb25maWcpIHtcbiAgICAgICAgY29uc3Qgdmlld3BvcnRIID0gd2luZG93LmlubmVySGVpZ2h0O1xuXG4gICAgICAgIHRoaXMubWluSGVpZ2h0UHggPSB0aGlzLnRvUHgoY29uZmlnLm1pbkhlaWdodCA/PyAnMTB2aCcsIHZpZXdwb3J0SCk7XG4gICAgICAgIHRoaXMubWF4SGVpZ2h0UHggPSB0aGlzLnRvUHgoY29uZmlnLm1heEhlaWdodCA/PyAnOTB2aCcsIHZpZXdwb3J0SCk7XG5cbiAgICAgICAgdGhpcy5taW5IZWlnaHRQeCA9IE1hdGgubWF4KDAsIHRoaXMubWluSGVpZ2h0UHgpO1xuICAgICAgICB0aGlzLm1heEhlaWdodFB4ID0gTWF0aC5tYXgodGhpcy5taW5IZWlnaHRQeCwgdGhpcy5tYXhIZWlnaHRQeCk7XG4gICAgfVxuXG4gICAgZXh0cmFjdE1vdXNlUG9zaXRpb24oZXZlbnQ6IE1vdXNlRXZlbnQpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZXZlbnQuY2xpZW50WTtcbiAgICB9XG5cbiAgICBvbkRyYWdTdGFydChjb250YWluZXI6IEhUTUxFbGVtZW50LCBvdmVybGF5RWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGFydE1vdXNlWSA9IG51bGw7XG5cbiAgICAgICAgY29uc3QgcmVjdCA9IG92ZXJsYXlFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLnN0YXJ0SGVpZ2h0UHggPSByZWN0LmhlaWdodDtcbiAgICAgICAgdGhpcy5jdXJyZW50SGVpZ2h0UHggPSB0aGlzLnN0YXJ0SGVpZ2h0UHg7XG5cbiAgICAgICAgb3ZlcmxheUVsZW1lbnQuc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcbiAgICAgICAgb3ZlcmxheUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7dGhpcy5zdGFydEhlaWdodFB4fXB4YDtcbiAgICAgICAgb3ZlcmxheUVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID0gJ25vbmUnO1xuXG4gICAgICAgIGNvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgfVxuXG4gICAgb25EcmFnTW92ZShtb3VzZVk6IG51bWJlciwgY29udGFpbmVyOiBIVE1MRWxlbWVudCwgb3ZlcmxheUVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnN0YXJ0TW91c2VZID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0TW91c2VZID0gbW91c2VZO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVsdGEgPSB0aGlzLnN0YXJ0TW91c2VZIC0gbW91c2VZO1xuICAgICAgICBsZXQgbmV4dEhlaWdodCA9IHRoaXMuc3RhcnRIZWlnaHRQeCArIGRlbHRhO1xuXG4gICAgICAgIG5leHRIZWlnaHQgPSBNYXRoLm1heCh0aGlzLm1pbkhlaWdodFB4LCBNYXRoLm1pbih0aGlzLm1heEhlaWdodFB4LCBuZXh0SGVpZ2h0KSk7XG4gICAgICAgIHRoaXMuY3VycmVudEhlaWdodFB4ID0gbmV4dEhlaWdodDtcblxuICAgICAgICBvdmVybGF5RWxlbWVudC5zdHlsZS5oZWlnaHQgPSBgJHtuZXh0SGVpZ2h0fXB4YDtcbiAgICB9XG5cbiAgICBvbkRyYWdFbmQoY29udGFpbmVyOiBIVE1MRWxlbWVudCwgb3ZlcmxheUVsZW1lbnQ6IEhUTUxFbGVtZW50KTogeyBzaG91bGRDbG9zZTogYm9vbGVhbjsgaGVpZ2h0OiBudW1iZXIgfSB7XG4gICAgICAgIGxldCBoZWlnaHQgPSB0aGlzLmN1cnJlbnRIZWlnaHRQeCB8fCBvdmVybGF5RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgICAgIGhlaWdodCA9IE1hdGgubWF4KHRoaXMubWluSGVpZ2h0UHgsIE1hdGgubWluKHRoaXMubWF4SGVpZ2h0UHgsIGhlaWdodCkpO1xuXG4gICAgICAgIG92ZXJsYXlFbGVtZW50LnN0eWxlLnRyYW5zaXRpb24gPSAnaGVpZ2h0IDIwMG1zIGN1YmljLWJlemllcigwLjMyLCAwLjcyLCAwLCAxKSc7XG4gICAgICAgIG92ZXJsYXlFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGA7XG5cbiAgICAgICAgdGhpcy5zdGFydE1vdXNlWSA9IE5hTjtcbiAgICAgICAgdGhpcy5jdXJyZW50SGVpZ2h0UHggPSBoZWlnaHQ7XG5cbiAgICAgICAgcmV0dXJuIHsgc2hvdWxkQ2xvc2U6IGZhbHNlLCBoZWlnaHQgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvUHgodmFsdWU6IG51bWJlciB8IHN0cmluZywgdmlld3BvcnRIOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmF3ID0gU3RyaW5nKHZhbHVlKS50cmltKCk7XG5cbiAgICAgICAgaWYgKCFyYXcpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJhdy5lbmRzV2l0aCgndmgnKSkge1xuICAgICAgICAgICAgY29uc3QgbiA9IHBhcnNlRmxvYXQocmF3KTtcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUobikgPyAobiAvIDEwMCkgKiB2aWV3cG9ydEggOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJhdy5lbmRzV2l0aCgncHgnKSkge1xuICAgICAgICAgICAgY29uc3QgbiA9IHBhcnNlRmxvYXQocmF3KTtcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUobikgPyBuIDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFzTnVtYmVyID0gcGFyc2VGbG9hdChyYXcpO1xuICAgICAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKGFzTnVtYmVyKSA/IGFzTnVtYmVyIDogMDtcbiAgICB9XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';
2
- import { merge, Subject } from 'rxjs';
2
+ import { EMPTY, merge, Subject } from 'rxjs';
3
3
  import { filter, take } from 'rxjs/operators';
4
4
  /**
5
5
  * Reference to a drawer dispatched from the drawer service.
@@ -54,6 +54,7 @@ export class DrawerRef {
54
54
  this.dismiss();
55
55
  }
56
56
  });
57
+ this._afterResized$ = containerInstance?.afterResized?.asObservable() ?? EMPTY;
57
58
  }
58
59
  /**
59
60
  * Dismisses the drawer.
@@ -94,6 +95,10 @@ export class DrawerRef {
94
95
  afterOpened() {
95
96
  return this._afterOpened;
96
97
  }
98
+ /** Gets an observable that emits the final height (px) after resize. Available only in resize mode. */
99
+ afterResized() {
100
+ return this._afterResized$;
101
+ }
97
102
  /**
98
103
  * Gets an observable that emits when the overlay's backdrop has been clicked.
99
104
  */
@@ -107,4 +112,4 @@ export class DrawerRef {
107
112
  return this._ref.keydownEvents;
108
113
  }
109
114
  }
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyYXdlci9kcmF3ZXItcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUs5Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBQ2xCLHFFQUFxRTtJQUNyRSxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWtCLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDbEMsQ0FBQztJQWNELCtDQUErQztJQUMvQyxJQUFJLGNBQWM7UUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQztJQUMvQyxDQUFDO0lBY0QsWUFDWSxJQUFxQixFQUM3QixNQUFvQixFQUNwQixpQkFBa0M7UUFGMUIsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFiakMseUVBQXlFO1FBQ3hELG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQWlCLENBQUM7UUFFaEUsOEVBQThFO1FBQzdELGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQWFoRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUVs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LEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2xDLENBQUMsRUFBRSxLQUFLLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUUxQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMxQyxDQUFDLENBQUMsQ0FBQztZQUVQLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSyxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQztJQUVELHdFQUF3RTtJQUN4RSxjQUFjO1FBQ1YsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsV0FBVztRQUNQLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDNUIsQ0FBQztJQUVELG1GQUFtRjtJQUNuRixXQUFXO1FBQ1AsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ25DLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kaWFsb2cnO1xuaW1wb3J0IHsgRVNDQVBFLCBoYXNNb2RpZmllcktleSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBtZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRHJhd2VyQ29uZmlnIH0gZnJvbSAnLi9kcmF3ZXItY29uZmlnJztcbmltcG9ydCB7IERyYXdlckNvbnRhaW5lciB9IGZyb20gJy4vZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogUmVmZXJlbmNlIHRvIGEgZHJhd2VyIGRpc3BhdGNoZWQgZnJvbSB0aGUgZHJhd2VyIHNlcnZpY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBEcmF3ZXJSZWY8VCA9IGFueSwgUiA9IGFueT4ge1xuICAgIC8qKiBJbnN0YW5jZSBvZiB0aGUgY29tcG9uZW50IG1ha2luZyB1cCB0aGUgY29udGVudCBvZiB0aGUgZHJhd2VyLiAqL1xuICAgIGdldCBpbnN0YW5jZSgpOiBUIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZi5jb21wb25lbnRJbnN0YW5jZSE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYENvbXBvbmVudFJlZmAgb2YgdGhlIGNvbXBvbmVudCBvcGVuZWQgaW50byB0aGUgZHJhd2VyLiBXaWxsIGJlXG4gICAgICogbnVsbCB3aGVuIHRoZSBkcmF3ZXIgaXMgb3BlbmVkIHVzaW5nIGEgYFRlbXBsYXRlUmVmYC5cbiAgICAgKi9cbiAgICBnZXQgY29tcG9uZW50UmVmKCk6IENvbXBvbmVudFJlZjxUPiB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVmLmNvbXBvbmVudFJlZjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnN0YW5jZSBvZiB0aGUgY29tcG9uZW50IGludG8gd2hpY2ggdGhlIGRyYXdlciBjb250ZW50IGlzIHByb2plY3RlZC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgY29udGFpbmVySW5zdGFuY2U6IERyYXdlckNvbnRhaW5lcjtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSB1c2VyIGlzIGFsbG93ZWQgdG8gY2xvc2UgdGhlIGRyYXdlci4gKi9cbiAgICBkaXNhYmxlQ2xvc2U6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogVW5pcXVlIElEIGZvciB0aGUgZHJhd2VyLiAqL1xuICAgIGlkOiBzdHJpbmc7XG5cbiAgICAvKiogR2V0cyB0aGUgb3ZlcmxheSBlbGVtZW50IGZvciB0aGUgZHJhd2VyLiAqL1xuICAgIGdldCBvdmVybGF5RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWYub3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudDtcbiAgICB9XG5cbiAgICAvKiogU3ViamVjdCBmb3Igbm90aWZ5aW5nIHRoZSB1c2VyIHRoYXQgdGhlIGRyYXdlciBoYXMgYmVlbiBkaXNtaXNzZWQuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfYWZ0ZXJEaXNtaXNzZWQgPSBuZXcgU3ViamVjdDxSIHwgdW5kZWZpbmVkPigpO1xuXG4gICAgLyoqIFN1YmplY3QgZm9yIG5vdGlmeWluZyB0aGUgdXNlciB0aGF0IHRoZSBkcmF3ZXIgaGFzIG9wZW5lZCBhbmQgYXBwZWFyZWQuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfYWZ0ZXJPcGVuZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIFJlc3VsdCB0byBiZSBwYXNzZWQgZG93biB0byB0aGUgYGFmdGVyRGlzbWlzc2VkYCBzdHJlYW0uICovXG4gICAgcHJpdmF0ZSBfcmVzdWx0OiBSIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIEhhbmRsZSB0byB0aGUgdGltZW91dCB0aGF0J3MgcnVubmluZyBhcyBhIGZhbGxiYWNrIGluIGNhc2UgdGhlIGV4aXQgYW5pbWF0aW9uIGRvZXNuJ3QgZmlyZS4gKi9cbiAgICBwcml2YXRlIF9jbG9zZUZhbGxiYWNrVGltZW91dDogYW55O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX3JlZjogRGlhbG9nUmVmPFIsIFQ+LFxuICAgICAgICBjb25maWc6IERyYXdlckNvbmZpZyxcbiAgICAgICAgY29udGFpbmVySW5zdGFuY2U6IERyYXdlckNvbnRhaW5lcixcbiAgICApIHtcbiAgICAgICAgdGhpcy5jb250YWluZXJJbnN0YW5jZSA9IGNvbnRhaW5lckluc3RhbmNlO1xuICAgICAgICB0aGlzLmRpc2FibGVDbG9zZSA9IGNvbmZpZy5kaXNhYmxlQ2xvc2U7XG4gICAgICAgIHRoaXMuaWQgPSBfcmVmLmlkO1xuXG4gICAgICAgIC8vIEVtaXQgd2hlbiBvcGVuaW5nIGFuaW1hdGlvbiBjb21wbGV0ZXNcbiAgICAgICAgY29udGFpbmVySW5zdGFuY2UuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQucGhhc2VOYW1lID09PSAnZG9uZScgJiYgZXZlbnQudG9TdGF0ZSA9PT0gJ3Zpc2libGUnKSxcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWZ0ZXJPcGVuZWQubmV4dCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2FmdGVyT3BlbmVkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAvLyBEaXNwb3NlIG92ZXJsYXkgd2hlbiBjbG9zaW5nIGFuaW1hdGlvbiBpcyBjb21wbGV0ZVxuICAgICAgICBjb250YWluZXJJbnN0YW5jZS5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudC5waGFzZU5hbWUgPT09ICdkb25lJyAmJiBldmVudC50b1N0YXRlID09PSAnaGlkZGVuJyksXG4gICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9jbG9zZUZhbGxiYWNrVGltZW91dCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVmLmNsb3NlKHRoaXMuX3Jlc3VsdCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBfcmVmLm92ZXJsYXlSZWYuZGV0YWNobWVudHMoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVmLmNsb3NlKHRoaXMuX3Jlc3VsdCk7XG4gICAgICAgICAgICB0aGlzLl9hZnRlckRpc21pc3NlZC5uZXh0KHRoaXMuX3Jlc3VsdCk7XG4gICAgICAgICAgICB0aGlzLl9hZnRlckRpc21pc3NlZC5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBtZXJnZSh0aGlzLmJhY2tkcm9wQ2xpY2soKSwgdGhpcy5rZXlkb3duRXZlbnRzKCkucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudC5rZXlDb2RlID09PSBFU0NBUEUpKSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVDbG9zZSAmJiAoZXZlbnQudHlwZSAhPT0gJ2tleWRvd24nIHx8ICFoYXNNb2RpZmllcktleShldmVudCBhcyBLZXlib2FyZEV2ZW50KSkpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzbWlzcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNtaXNzZXMgdGhlIGRyYXdlci5cbiAgICAgKiBAcGFyYW0gcmVzdWx0IERhdGEgdG8gYmUgcGFzc2VkIGJhY2sgdG8gdGhlIGRyYXdlciBvcGVuZXIuXG4gICAgICovXG4gICAgZGlzbWlzcyhyZXN1bHQ/OiBSKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FmdGVyRGlzbWlzc2VkLm5leHQocmVzdWx0KTtcbiAgICAgICAgdGhpcy5fYWZ0ZXJEaXNtaXNzZWQuY29tcGxldGUoKTtcblxuICAgICAgICBpZiAodGhpcy5jb250YWluZXJJbnN0YW5jZSAmJiAhdGhpcy5fYWZ0ZXJEaXNtaXNzZWQuY2xvc2VkKSB7XG4gICAgICAgICAgICAvLyBUcmFuc2l0aW9uIHRoZSBiYWNrZHJvcCBpbiBwYXJhbGxlbCB0byB0aGUgZHJhd2VyLlxuICAgICAgICAgICAgdGhpcy5jb250YWluZXJJbnN0YW5jZS5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50LnBoYXNlTmFtZSA9PT0gJ3N0YXJ0JyksXG4gICAgICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBsb2dpYyB0aGF0IGRpc3Bvc2VzIG9mIHRoZSBvdmVybGF5IGRlcGVuZHMgb24gdGhlIGV4aXQgYW5pbWF0aW9uIGNvbXBsZXRpbmcsIGhvd2V2ZXJcbiAgICAgICAgICAgICAgICAgICAgLy8gaXQgaXNuJ3QgZ3VhcmFudGVlZCBpZiB0aGUgcGFyZW50IHZpZXcgaXMgZGVzdHJveWVkIHdoaWxlIGl0J3MgcnVubmluZy4gQWRkIGEgZmFsbGJhY2tcbiAgICAgICAgICAgICAgICAgICAgLy8gdGltZW91dCB3aGljaCB3aWxsIGNsZWFuIGV2ZXJ5dGhpbmcgdXAgaWYgdGhlIGFuaW1hdGlvbiBoYXNuJ3QgZmlyZWQgd2l0aGluIHRoZSBzcGVjaWZpZWRcbiAgICAgICAgICAgICAgICAgICAgLy8gYW1vdW50IG9mIHRpbWUgcGx1cyAxMDBtcy4gV2UgZG9uJ3QgbmVlZCB0byBydW4gdGhpcyBvdXRzaWRlIHRoZSBOZ1pvbmUsIGJlY2F1c2UgZm9yIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyB2YXN0IG1ham9yaXR5IG9mIGNhc2VzIHRoZSB0aW1lb3V0IHdpbGwgaGF2ZSBiZWVuIGNsZWFyZWQgYmVmb3JlIGl0IGhhcyBmaXJlZC5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2xvc2VGYWxsYmFja1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlZi5jbG9zZSh0aGlzLl9yZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICB9LCBldmVudC50b3RhbFRpbWUgKyAxMDApO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlZi5vdmVybGF5UmVmLmRldGFjaEJhY2tkcm9wKCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuX3Jlc3VsdCA9IHJlc3VsdDtcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVySW5zdGFuY2UuZXhpdCgpO1xuICAgICAgICAgICAgdGhpcy5jb250YWluZXJJbnN0YW5jZSA9IG51bGwhO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEdldHMgYW4gb2JzZXJ2YWJsZSB0aGF0IGlzIG5vdGlmaWVkIHdoZW4gdGhlIGRyYXdlciBpcyBkaXNtaXNzZWQuICovXG4gICAgYWZ0ZXJEaXNtaXNzZWQoKTogT2JzZXJ2YWJsZTxSIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZnRlckRpc21pc3NlZDtcbiAgICB9XG5cbiAgICAvKiogR2V0cyBhbiBvYnNlcnZhYmxlIHRoYXQgaXMgbm90aWZpZWQgd2hlbiB0aGUgZHJhd2VyIGlzIGZpbmlzaGVkIGNsb3NpbmcuICovXG4gICAgYWZ0ZXJDbG9zZWQoKTogT2JzZXJ2YWJsZTxSIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWYuY2xvc2VkO1xuICAgIH1cblxuICAgIC8qKiBHZXRzIGFuIG9ic2VydmFibGUgdGhhdCBpcyBub3RpZmllZCB3aGVuIHRoZSBkcmF3ZXIgaGFzIG9wZW5lZCBhbmQgYXBwZWFyZWQuICovXG4gICAgYWZ0ZXJPcGVuZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZnRlck9wZW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIHRoZSBvdmVybGF5J3MgYmFja2Ryb3AgaGFzIGJlZW4gY2xpY2tlZC5cbiAgICAgKi9cbiAgICBiYWNrZHJvcENsaWNrKCk6IE9ic2VydmFibGU8TW91c2VFdmVudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVmLmJhY2tkcm9wQ2xpY2s7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiBrZXlkb3duIGV2ZW50cyBhcmUgdGFyZ2V0ZWQgb24gdGhlIG92ZXJsYXkuXG4gICAgICovXG4gICAga2V5ZG93bkV2ZW50cygpOiBPYnNlcnZhYmxlPEtleWJvYXJkRXZlbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZi5rZXlkb3duRXZlbnRzO1xuICAgIH1cbn1cbiJdfQ==
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyYXdlci9kcmF3ZXItcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLOUM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sU0FBUztJQUNsQixxRUFBcUU7SUFDckUsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFrQixDQUFDO0lBQ3hDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ2xDLENBQUM7SUFjRCwrQ0FBK0M7SUFDL0MsSUFBSSxjQUFjO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7SUFDL0MsQ0FBQztJQWlCRCxZQUNZLElBQXFCLEVBQzdCLE1BQW9CLEVBQ3BCLGlCQUFrQztRQUYxQixTQUFJLEdBQUosSUFBSSxDQUFpQjtRQWhCakMseUVBQXlFO1FBQ3hELG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQWlCLENBQUM7UUFFaEUsOEVBQThFO1FBQzdELGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQWdCaEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUN4QyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxF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QzNGLGlGQUFpRjtnQkFDakYsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbEMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUM7Z0JBRTFCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzFDLENBQUMsQ0FBQyxDQUFDO1lBRVAsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDdEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFLLENBQUM7U0FDbEM7SUFDTCxDQUFDO0lBRUQsd0VBQXdFO0lBQ3hFLGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDaEMsQ0FBQztJQUVELCtFQUErRTtJQUMvRSxXQUFXO1FBQ1AsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUM1QixDQUFDO0lBRUQsbUZBQW1GO0lBQ25GLFdBQVc7UUFDUCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELHVHQUF1RztJQUN2RyxZQUFZO1FBQ1IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ25DLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kaWFsb2cnO1xuaW1wb3J0IHsgRVNDQVBFLCBoYXNNb2RpZmllcktleSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBFTVBUWSwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERyYXdlckNvbmZpZyB9IGZyb20gJy4vZHJhd2VyLWNvbmZpZyc7XG5pbXBvcnQgeyBEcmF3ZXJDb250YWluZXIgfSBmcm9tICcuL2RyYXdlci1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFJlZmVyZW5jZSB0byBhIGRyYXdlciBkaXNwYXRjaGVkIGZyb20gdGhlIGRyYXdlciBzZXJ2aWNlLlxuICovXG5leHBvcnQgY2xhc3MgRHJhd2VyUmVmPFQgPSBhbnksIFIgPSBhbnk+IHtcbiAgICAvKiogSW5zdGFuY2Ugb2YgdGhlIGNvbXBvbmVudCBtYWtpbmcgdXAgdGhlIGNvbnRlbnQgb2YgdGhlIGRyYXdlci4gKi9cbiAgICBnZXQgaW5zdGFuY2UoKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWYuY29tcG9uZW50SW5zdGFuY2UhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGBDb21wb25lbnRSZWZgIG9mIHRoZSBjb21wb25lbnQgb3BlbmVkIGludG8gdGhlIGRyYXdlci4gV2lsbCBiZVxuICAgICAqIG51bGwgd2hlbiB0aGUgZHJhd2VyIGlzIG9wZW5lZCB1c2luZyBhIGBUZW1wbGF0ZVJlZmAuXG4gICAgICovXG4gICAgZ2V0IGNvbXBvbmVudFJlZigpOiBDb21wb25lbnRSZWY8VD4gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZi5jb21wb25lbnRSZWY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5zdGFuY2Ugb2YgdGhlIGNvbXBvbmVudCBpbnRvIHdoaWNoIHRoZSBkcmF3ZXIgY29udGVudCBpcyBwcm9qZWN0ZWQuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIGNvbnRhaW5lckluc3RhbmNlOiBEcmF3ZXJDb250YWluZXI7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdXNlciBpcyBhbGxvd2VkIHRvIGNsb3NlIHRoZSBkcmF3ZXIuICovXG4gICAgZGlzYWJsZUNsb3NlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIFVuaXF1ZSBJRCBmb3IgdGhlIGRyYXdlci4gKi9cbiAgICBpZDogc3RyaW5nO1xuXG4gICAgLyoqIEdldHMgdGhlIG92ZXJsYXkgZWxlbWVudCBmb3IgdGhlIGRyYXdlci4gKi9cbiAgICBnZXQgb3ZlcmxheUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVmLm92ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqIFN1YmplY3QgZm9yIG5vdGlmeWluZyB0aGUgdXNlciB0aGF0IHRoZSBkcmF3ZXIgaGFzIGJlZW4gZGlzbWlzc2VkLiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2FmdGVyRGlzbWlzc2VkID0gbmV3IFN1YmplY3Q8UiB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKiBTdWJqZWN0IGZvciBub3RpZnlpbmcgdGhlIHVzZXIgdGhhdCB0aGUgZHJhd2VyIGhhcyBvcGVuZWQgYW5kIGFwcGVhcmVkLiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2FmdGVyT3BlbmVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBSZXN1bHQgdG8gYmUgcGFzc2VkIGRvd24gdG8gdGhlIGBhZnRlckRpc21pc3NlZGAgc3RyZWFtLiAqL1xuICAgIHByaXZhdGUgX3Jlc3VsdDogUiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBIYW5kbGUgdG8gdGhlIHRpbWVvdXQgdGhhdCdzIHJ1bm5pbmcgYXMgYSBmYWxsYmFjayBpbiBjYXNlIHRoZSBleGl0IGFuaW1hdGlvbiBkb2Vzbid0IGZpcmUuICovXG4gICAgcHJpdmF0ZSBfY2xvc2VGYWxsYmFja1RpbWVvdXQ6IGFueTtcblxuICAgIC8qKiBTdWJqZWN0IGZvciBub3RpZnlpbmcgdGhlIHVzZXIgdGhhdCB0aGUgZHJhd2VyIGhhcyBiZWVuIHJlc2l6ZWQuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfYWZ0ZXJSZXNpemVkJDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX3JlZjogRGlhbG9nUmVmPFIsIFQ+LFxuICAgICAgICBjb25maWc6IERyYXdlckNvbmZpZyxcbiAgICAgICAgY29udGFpbmVySW5zdGFuY2U6IERyYXdlckNvbnRhaW5lcixcbiAgICApIHtcbiAgICAgICAgdGhpcy5jb250YWluZXJJbnN0YW5jZSA9IGNvbnRhaW5lckluc3RhbmNlO1xuICAgICAgICB0aGlzLmRpc2FibGVDbG9zZSA9IGNvbmZpZy5kaXNhYmxlQ2xvc2U7XG4gICAgICAgIHRoaXMuaWQgPSBfcmVmLmlkO1xuXG4gICAgICAgIC8vIEVtaXQgd2hlbiBvcGVuaW5nIGFuaW1hdGlvbiBjb21wbGV0ZXNcbiAgICAgICAgY29udGFpbmVySW5zdGFuY2UuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQucGhhc2VOYW1lID09PSAnZG9uZScgJiYgZXZlbnQudG9TdGF0ZSA9PT0gJ3Zpc2libGUnKSxcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWZ0ZXJPcGVuZWQubmV4dCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2FmdGVyT3BlbmVkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAvLyBEaXNwb3NlIG92ZXJsYXkgd2hlbiBjbG9zaW5nIGFuaW1hdGlvbiBpcyBjb21wbGV0ZVxuICAgICAgICBjb250YWluZXJJbnN0YW5jZS5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudC5waGFzZU5hbWUgPT09ICdkb25lJyAmJiBldmVudC50b1N0YXRlID09PSAnaGlkZGVuJyksXG4gICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9jbG9zZUZhbGxiYWNrVGltZW91dCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVmLmNsb3NlKHRoaXMuX3Jlc3VsdCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBfcmVmLm92ZXJsYXlSZWYuZGV0YWNobWVudHMoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVmLmNsb3NlKHRoaXMuX3Jlc3VsdCk7XG4gICAgICAgICAgICB0aGlzLl9hZnRlckRpc21pc3NlZC5uZXh0KHRoaXMuX3Jlc3VsdCk7XG4gICAgICAgICAgICB0aGlzLl9hZnRlckRpc21pc3NlZC5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBtZXJnZSh0aGlzLmJhY2tkcm9wQ2xpY2soKSwgdGhpcy5rZXlkb3duRXZlbnRzKCkucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudC5rZXlDb2RlID09PSBFU0NBUEUpKSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVDbG9zZSAmJiAoZXZlbnQudHlwZSAhPT0gJ2tleWRvd24nIHx8ICFoYXNNb2RpZmllcktleShldmVudCBhcyBLZXlib2FyZEV2ZW50KSkpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzbWlzcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9hZnRlclJlc2l6ZWQkID0gY29udGFpbmVySW5zdGFuY2U/LmFmdGVyUmVzaXplZD8uYXNPYnNlcnZhYmxlKCkgPz8gRU1QVFk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzbWlzc2VzIHRoZSBkcmF3ZXIuXG4gICAgICogQHBhcmFtIHJlc3VsdCBEYXRhIHRvIGJlIHBhc3NlZCBiYWNrIHRvIHRoZSBkcmF3ZXIgb3BlbmVyLlxuICAgICAqL1xuICAgIGRpc21pc3MocmVzdWx0PzogUik6IHZvaWQge1xuICAgICAgICB0aGlzLl9hZnRlckRpc21pc3NlZC5uZXh0KHJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2FmdGVyRGlzbWlzc2VkLmNvbXBsZXRlKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29udGFpbmVySW5zdGFuY2UgJiYgIXRoaXMuX2FmdGVyRGlzbWlzc2VkLmNsb3NlZCkge1xuICAgICAgICAgICAgLy8gVHJhbnNpdGlvbiB0aGUgYmFja2Ryb3AgaW4gcGFyYWxsZWwgdG8gdGhlIGRyYXdlci5cbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVySW5zdGFuY2UuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZFxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudC5waGFzZU5hbWUgPT09ICdzdGFydCcpLFxuICAgICAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgbG9naWMgdGhhdCBkaXNwb3NlcyBvZiB0aGUgb3ZlcmxheSBkZXBlbmRzIG9uIHRoZSBleGl0IGFuaW1hdGlvbiBjb21wbGV0aW5nLCBob3dldmVyXG4gICAgICAgICAgICAgICAgICAgIC8vIGl0IGlzbid0IGd1YXJhbnRlZWQgaWYgdGhlIHBhcmVudCB2aWV3IGlzIGRlc3Ryb3llZCB3aGlsZSBpdCdzIHJ1bm5pbmcuIEFkZCBhIGZhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgIC8vIHRpbWVvdXQgd2hpY2ggd2lsbCBjbGVhbiBldmVyeXRoaW5nIHVwIGlmIHRoZSBhbmltYXRpb24gaGFzbid0IGZpcmVkIHdpdGhpbiB0aGUgc3BlY2lmaWVkXG4gICAgICAgICAgICAgICAgICAgIC8vIGFtb3VudCBvZiB0aW1lIHBsdXMgMTAwbXMuIFdlIGRvbid0IG5lZWQgdG8gcnVuIHRoaXMgb3V0c2lkZSB0aGUgTmdab25lLCBiZWNhdXNlIGZvciB0aGVcbiAgICAgICAgICAgICAgICAgICAgLy8gdmFzdCBtYWpvcml0eSBvZiBjYXNlcyB0aGUgdGltZW91dCB3aWxsIGhhdmUgYmVlbiBjbGVhcmVkIGJlZm9yZSBpdCBoYXMgZmlyZWQuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Nsb3NlRmFsbGJhY2tUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZWYuY2xvc2UodGhpcy5fcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfSwgZXZlbnQudG90YWxUaW1lICsgMTAwKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZWYub3ZlcmxheVJlZi5kZXRhY2hCYWNrZHJvcCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLl9yZXN1bHQgPSByZXN1bHQ7XG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lckluc3RhbmNlLmV4aXQoKTtcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVySW5zdGFuY2UgPSBudWxsITtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBHZXRzIGFuIG9ic2VydmFibGUgdGhhdCBpcyBub3RpZmllZCB3aGVuIHRoZSBkcmF3ZXIgaXMgZGlzbWlzc2VkLiAqL1xuICAgIGFmdGVyRGlzbWlzc2VkKCk6IE9ic2VydmFibGU8UiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWZ0ZXJEaXNtaXNzZWQ7XG4gICAgfVxuXG4gICAgLyoqIEdldHMgYW4gb2JzZXJ2YWJsZSB0aGF0IGlzIG5vdGlmaWVkIHdoZW4gdGhlIGRyYXdlciBpcyBmaW5pc2hlZCBjbG9zaW5nLiAqL1xuICAgIGFmdGVyQ2xvc2VkKCk6IE9ic2VydmFibGU8UiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVmLmNsb3NlZDtcbiAgICB9XG5cbiAgICAvKiogR2V0cyBhbiBvYnNlcnZhYmxlIHRoYXQgaXMgbm90aWZpZWQgd2hlbiB0aGUgZHJhd2VyIGhhcyBvcGVuZWQgYW5kIGFwcGVhcmVkLiAqL1xuICAgIGFmdGVyT3BlbmVkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWZ0ZXJPcGVuZWQ7XG4gICAgfVxuXG4gICAgLyoqIEdldHMgYW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBmaW5hbCBoZWlnaHQgKHB4KSBhZnRlciByZXNpemUuIEF2YWlsYWJsZSBvbmx5IGluIHJlc2l6ZSBtb2RlLiAqL1xuICAgIGFmdGVyUmVzaXplZCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWZ0ZXJSZXNpemVkJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIHRoZSBvdmVybGF5J3MgYmFja2Ryb3AgaGFzIGJlZW4gY2xpY2tlZC5cbiAgICAgKi9cbiAgICBiYWNrZHJvcENsaWNrKCk6IE9ic2VydmFibGU8TW91c2VFdmVudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVmLmJhY2tkcm9wQ2xpY2s7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiBrZXlkb3duIGV2ZW50cyBhcmUgdGFyZ2V0ZWQgb24gdGhlIG92ZXJsYXkuXG4gICAgICovXG4gICAga2V5ZG93bkV2ZW50cygpOiBPYnNlcnZhYmxlPEtleWJvYXJkRXZlbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZi5rZXlkb3duRXZlbnRzO1xuICAgIH1cbn1cbiJdfQ==