@snabcentr/client-ui 3.41.6 → 3.42.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/accordion/sc-accordion.component.mjs +2 -2
 - package/esm2022/banner/sc-banner.component.mjs +4 -3
 - package/esm2022/pages/privacy-policy/sc-privacy-policy.component.mjs +3 -3
 - package/esm2022/providers/index.mjs +2 -1
 - package/esm2022/providers/sc-banner-duration.mjs +6 -0
 - package/esm2022/schemas/sc-json-ld-category/sc-json-ld-category.component.mjs +7 -2
 - package/fesm2022/snabcentr-client-ui.mjs +81 -71
 - package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
 - package/package.json +1 -1
 - package/providers/index.d.ts +1 -0
 - package/providers/sc-banner-duration.d.ts +5 -0
 - package/release_notes.tmp +1 -1
 
| 
         @@ -51,11 +51,11 @@ export class ScAccordionComponent { 
     | 
|
| 
       51 
51 
     | 
    
         
             
                    this.accordion?.close();
         
     | 
| 
       52 
52 
     | 
    
         
             
                }
         
     | 
| 
       53 
53 
     | 
    
         
             
                static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
         
     | 
| 
       54 
     | 
    
         
            -
                static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: ScAccordionComponent, selector: "sc-accordion", inputs: { showAddButton: { classPropertyName: "showAddButton", publicName: "showAddButton", isSignal: false, isRequired: false, transformFunction: null }, showDeleteButton: { classPropertyName: "showDeleteButton", publicName: "showDeleteButton", isSignal: false, isRequired: false, transformFunction: null }, showArrow: { classPropertyName: "showArrow", publicName: "showArrow", isSignal: false, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null }, disabledButtons: { classPropertyName: "disabledButtons", publicName: "disabledButtons", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { addButtonClick: "addButtonClick", deleteButtonClick: "deleteButtonClick" }, host: { properties: { "class._has-add-button": "this.showAddButton", "class._has-delete-button": "this.showDeleteButton", "class._has-arrow": "this.showArrow", "attr.data-size": "this.size" } }, queries: [{ propertyName: "content", first: true, predicate: ScAccordionContentDirective, descendants: true }], viewQueries: [{ propertyName: "accordion", first: true, predicate: TuiAccordionItem, descendants: true }], ngImport: i0, template: "<tui-accordion [rounded]=\"false\">\n    <tui-accordion-item\n        #accordion\n        [size]=\"size\"\n        [borders]=\"null\"\n        [showArrow]=\"showArrow\"\n        [open]=\"open\"\n    >\n        <div class=\"flex grow justify-between\">\n            <div class=\"self-center font-bold\">\n                <ng-content></ng-content>\n            </div>\n            <div\n                *ngIf=\"showAddButton || showDeleteButton\"\n                class=\"flex\"\n            >\n                <ng-container *ngIf=\"showDeleteButton\">\n                    <button\n                        tuiIconButton\n                        size=\"m\"\n                        type=\"button\"\n                        [disabled]=\"disabledButtons()\"\n                        iconStart=\"@tui.trash-2\"\n                        appearance=\"secondary\"\n                        (click)=\"$event.stopPropagation(); deleteButtonClick.emit()\"\n                    ></button>\n                </ng-container>\n                <ng-container *ngIf=\"showAddButton\">\n                    <button\n                        tuiIconButton\n                        size=\"m\"\n                        type=\"button\"\n                        [disabled]=\"disabledButtons()\"\n                        iconStart=\"@tui.plus\"\n                        appearance=\"secondary\"\n                        (click)=\"$event.stopPropagation(); addButtonClick.emit()\"\n                    ></button>\n                </ng-container>\n            </div>\n        </div>\n        <ng-template tuiAccordionItemContent>\n            <tui-elastic-container *ngIf=\"content\">\n                <ng-container *polymorpheusOutlet=\"content as text\">\n                    {{ text }}\n                </ng-container>\n            </tui-elastic-container>\n        </ng-template>\n    </tui-accordion-item>\n</tui-accordion>\n", styles: ["::ng-deep tui-accordion-item>.t-wrapper .t-header{border-radius:.75rem;flex-direction:row-reverse;min-height:var(--tui-height-m);font:var(--tui-font-text-m);padding:0 .5rem 0 1rem;gap:.75rem;background:var(--tui-background-base-alt)}:host[data-size=s] ::ng-deep tui-accordion-item>.t-wrapper .t-header{padding:0 .5rem 0 1rem;font:var(--tui-font-text-s)}:host._has-arrow ::ng-deep tui-accordion-item>.t-wrapper .t-header{padding-left:.75rem}:host._has-add-button ::ng-deep tui-accordion-item>.t-wrapper .t-header,:host._has-delete-button ::ng-deep tui-accordion-item>.t-wrapper .t-header{padding-right:0}::ng-deep tui-accordion-item>.t-wrapper .t-header_hoverable:hover:not([data-mode]){background:var(--tui-background-neutral-1-hover)!important}::ng-deep tui-accordion-item>.t-wrapper .t-header .t-icon{color:var(--tui-text-action)}:host:hover:not([data-mode]) ::ng-deep tui-accordion-item>.t-wrapper .t-header .t-icon{color:var(--tui-text-action)}::ng-deep tui-accordion-item>.t-wrapper .t-title{white-space:normal}:host._has-arrow ::ng-deep tui-accordion-item>.t-wrapper .t-title{margin-right:0}::ng-deep tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content{padding-inline:0!important;padding-block:1rem}:host._has-arrow ::ng-deep tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content,:host[data-size=s]:host._has-arrow ::ng-deep tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content{padding-left:1rem!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: i3.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i4.TuiAccordionItem, selector: "tui-accordion-item", inputs: ["noPadding", "showArrow", "borders", "size", "disabled", "disableHover", "open", "async"], outputs: ["openChange"] }, { kind: "directive", type: i4.TuiAccordionDirective, selector: "tui-accordion", inputs: ["closeOthers"] }, { kind: "directive", type: i4.TuiAccordionItemContent, selector: "ng-template[tuiAccordionItemContent]" }, { kind: "component", type: i4.TuiElasticContainer, selector: "tui-elastic-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
         
     | 
| 
      
 54 
     | 
    
         
            +
                static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: ScAccordionComponent, selector: "sc-accordion", inputs: { showAddButton: { classPropertyName: "showAddButton", publicName: "showAddButton", isSignal: false, isRequired: false, transformFunction: null }, showDeleteButton: { classPropertyName: "showDeleteButton", publicName: "showDeleteButton", isSignal: false, isRequired: false, transformFunction: null }, showArrow: { classPropertyName: "showArrow", publicName: "showArrow", isSignal: false, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null }, disabledButtons: { classPropertyName: "disabledButtons", publicName: "disabledButtons", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { addButtonClick: "addButtonClick", deleteButtonClick: "deleteButtonClick" }, host: { properties: { "class._has-add-button": "this.showAddButton", "class._has-delete-button": "this.showDeleteButton", "class._has-arrow": "this.showArrow", "attr.data-size": "this.size" } }, queries: [{ propertyName: "content", first: true, predicate: ScAccordionContentDirective, descendants: true }], viewQueries: [{ propertyName: "accordion", first: true, predicate: TuiAccordionItem, descendants: true }], ngImport: i0, template: "<tui-accordion [rounded]=\"false\">\n    <tui-accordion-item\n        #accordion\n        [size]=\"size\"\n        [borders]=\"null\"\n        [showArrow]=\"showArrow\"\n        [open]=\"open\"\n    >\n        <div class=\"flex grow justify-between\">\n            <div class=\"self-center font-bold\">\n                <ng-content></ng-content>\n            </div>\n            <div\n                *ngIf=\"showAddButton || showDeleteButton\"\n                class=\"flex\"\n            >\n                <ng-container *ngIf=\"showDeleteButton\">\n                    <button\n                        tuiIconButton\n                        size=\"m\"\n                        type=\"button\"\n                        [disabled]=\"disabledButtons()\"\n                        iconStart=\"@tui.trash-2\"\n                        appearance=\"secondary\"\n                        (click)=\"$event.stopPropagation(); deleteButtonClick.emit()\"\n                    ></button>\n                </ng-container>\n                <ng-container *ngIf=\"showAddButton\">\n                    <button\n                        tuiIconButton\n                        size=\"m\"\n                        type=\"button\"\n                        [disabled]=\"disabledButtons()\"\n                        iconStart=\"@tui.plus\"\n                        appearance=\"secondary\"\n                        (click)=\"$event.stopPropagation(); addButtonClick.emit()\"\n                    ></button>\n                </ng-container>\n            </div>\n        </div>\n        <ng-template tuiAccordionItemContent>\n            <tui-elastic-container *ngIf=\"content\">\n                <ng-container *polymorpheusOutlet=\"content as text\">\n                    {{ text }}\n                </ng-container>\n            </tui-elastic-container>\n        </ng-template>\n    </tui-accordion-item>\n</tui-accordion>\n", styles: ["::ng-deep sc-accordion tui-accordion-item>.t-wrapper .t-header{border-radius:.75rem;flex-direction:row-reverse;min-height:var(--tui-height-m);font:var(--tui-font-text-m);padding:0 .5rem 0 1rem;gap:.75rem;background:var(--tui-background-base-alt)}:host[data-size=s] ::ng-deep sc-accordion tui-accordion-item>.t-wrapper .t-header{padding:0 .5rem 0 1rem;font:var(--tui-font-text-s)}:host._has-arrow ::ng-deep sc-accordion tui-accordion-item>.t-wrapper .t-header{padding-left:.75rem}:host._has-add-button ::ng-deep sc-accordion tui-accordion-item>.t-wrapper .t-header,:host._has-delete-button ::ng-deep sc-accordion tui-accordion-item>.t-wrapper .t-header{padding-right:0}::ng-deep sc-accordion tui-accordion-item>.t-wrapper .t-header_hoverable:hover:not([data-mode]){background:var(--tui-background-neutral-1-hover)!important}::ng-deep sc-accordion tui-accordion-item>.t-wrapper .t-header .t-icon{color:var(--tui-text-action)}:host:hover:not([data-mode]) ::ng-deep sc-accordion tui-accordion-item>.t-wrapper .t-header .t-icon{color:var(--tui-text-action)}::ng-deep sc-accordion tui-accordion-item>.t-wrapper .t-title{white-space:normal}:host._has-arrow ::ng-deep sc-accordion tui-accordion-item>.t-wrapper .t-title{margin-right:0}::ng-deep sc-accordion tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content{padding-inline:0!important;padding-block:1rem}:host._has-arrow ::ng-deep sc-accordion tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content,:host[data-size=s]:host._has-arrow ::ng-deep sc-accordion tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content{padding-left:1rem!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: i3.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i4.TuiAccordionItem, selector: "tui-accordion-item", inputs: ["noPadding", "showArrow", "borders", "size", "disabled", "disableHover", "open", "async"], outputs: ["openChange"] }, { kind: "directive", type: i4.TuiAccordionDirective, selector: "tui-accordion", inputs: ["closeOthers"] }, { kind: "directive", type: i4.TuiAccordionItemContent, selector: "ng-template[tuiAccordionItemContent]" }, { kind: "component", type: i4.TuiElasticContainer, selector: "tui-elastic-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
         
     | 
| 
       55 
55 
     | 
    
         
             
            }
         
     | 
| 
       56 
56 
     | 
    
         
             
            i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScAccordionComponent, decorators: [{
         
     | 
| 
       57 
57 
     | 
    
         
             
                        type: Component,
         
     | 
| 
       58 
     | 
    
         
            -
                        args: [{ selector: 'sc-accordion', changeDetection: ChangeDetectionStrategy.OnPush, template: "<tui-accordion [rounded]=\"false\">\n    <tui-accordion-item\n        #accordion\n        [size]=\"size\"\n        [borders]=\"null\"\n        [showArrow]=\"showArrow\"\n        [open]=\"open\"\n    >\n        <div class=\"flex grow justify-between\">\n            <div class=\"self-center font-bold\">\n                <ng-content></ng-content>\n            </div>\n            <div\n                *ngIf=\"showAddButton || showDeleteButton\"\n                class=\"flex\"\n            >\n                <ng-container *ngIf=\"showDeleteButton\">\n                    <button\n                        tuiIconButton\n                        size=\"m\"\n                        type=\"button\"\n                        [disabled]=\"disabledButtons()\"\n                        iconStart=\"@tui.trash-2\"\n                        appearance=\"secondary\"\n                        (click)=\"$event.stopPropagation(); deleteButtonClick.emit()\"\n                    ></button>\n                </ng-container>\n                <ng-container *ngIf=\"showAddButton\">\n                    <button\n                        tuiIconButton\n                        size=\"m\"\n                        type=\"button\"\n                        [disabled]=\"disabledButtons()\"\n                        iconStart=\"@tui.plus\"\n                        appearance=\"secondary\"\n                        (click)=\"$event.stopPropagation(); addButtonClick.emit()\"\n                    ></button>\n                </ng-container>\n            </div>\n        </div>\n        <ng-template tuiAccordionItemContent>\n            <tui-elastic-container *ngIf=\"content\">\n                <ng-container *polymorpheusOutlet=\"content as text\">\n                    {{ text }}\n                </ng-container>\n            </tui-elastic-container>\n        </ng-template>\n    </tui-accordion-item>\n</tui-accordion>\n", styles: ["::ng-deep tui-accordion-item>.t-wrapper .t-header{border-radius:.75rem;flex-direction:row-reverse;min-height:var(--tui-height-m);font:var(--tui-font-text-m);padding:0 .5rem 0 1rem;gap:.75rem;background:var(--tui-background-base-alt)}:host[data-size=s] ::ng-deep tui-accordion-item>.t-wrapper .t-header{padding:0 .5rem 0 1rem;font:var(--tui-font-text-s)}:host._has-arrow ::ng-deep tui-accordion-item>.t-wrapper .t-header{padding-left:.75rem}:host._has-add-button ::ng-deep tui-accordion-item>.t-wrapper .t-header,:host._has-delete-button ::ng-deep tui-accordion-item>.t-wrapper .t-header{padding-right:0}::ng-deep tui-accordion-item>.t-wrapper .t-header_hoverable:hover:not([data-mode]){background:var(--tui-background-neutral-1-hover)!important}::ng-deep tui-accordion-item>.t-wrapper .t-header .t-icon{color:var(--tui-text-action)}:host:hover:not([data-mode]) ::ng-deep tui-accordion-item>.t-wrapper .t-header .t-icon{color:var(--tui-text-action)}::ng-deep tui-accordion-item>.t-wrapper .t-title{white-space:normal}:host._has-arrow ::ng-deep tui-accordion-item>.t-wrapper .t-title{margin-right:0}::ng-deep tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content{padding-inline:0!important;padding-block:1rem}:host._has-arrow ::ng-deep tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content,:host[data-size=s]:host._has-arrow ::ng-deep tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content{padding-left:1rem!important}\n"] }]
         
     | 
| 
      
 58 
     | 
    
         
            +
                        args: [{ selector: 'sc-accordion', changeDetection: ChangeDetectionStrategy.OnPush, template: "<tui-accordion [rounded]=\"false\">\n    <tui-accordion-item\n        #accordion\n        [size]=\"size\"\n        [borders]=\"null\"\n        [showArrow]=\"showArrow\"\n        [open]=\"open\"\n    >\n        <div class=\"flex grow justify-between\">\n            <div class=\"self-center font-bold\">\n                <ng-content></ng-content>\n            </div>\n            <div\n                *ngIf=\"showAddButton || showDeleteButton\"\n                class=\"flex\"\n            >\n                <ng-container *ngIf=\"showDeleteButton\">\n                    <button\n                        tuiIconButton\n                        size=\"m\"\n                        type=\"button\"\n                        [disabled]=\"disabledButtons()\"\n                        iconStart=\"@tui.trash-2\"\n                        appearance=\"secondary\"\n                        (click)=\"$event.stopPropagation(); deleteButtonClick.emit()\"\n                    ></button>\n                </ng-container>\n                <ng-container *ngIf=\"showAddButton\">\n                    <button\n                        tuiIconButton\n                        size=\"m\"\n                        type=\"button\"\n                        [disabled]=\"disabledButtons()\"\n                        iconStart=\"@tui.plus\"\n                        appearance=\"secondary\"\n                        (click)=\"$event.stopPropagation(); addButtonClick.emit()\"\n                    ></button>\n                </ng-container>\n            </div>\n        </div>\n        <ng-template tuiAccordionItemContent>\n            <tui-elastic-container *ngIf=\"content\">\n                <ng-container *polymorpheusOutlet=\"content as text\">\n                    {{ text }}\n                </ng-container>\n            </tui-elastic-container>\n        </ng-template>\n    </tui-accordion-item>\n</tui-accordion>\n", styles: ["::ng-deep sc-accordion tui-accordion-item>.t-wrapper .t-header{border-radius:.75rem;flex-direction:row-reverse;min-height:var(--tui-height-m);font:var(--tui-font-text-m);padding:0 .5rem 0 1rem;gap:.75rem;background:var(--tui-background-base-alt)}:host[data-size=s] ::ng-deep sc-accordion tui-accordion-item>.t-wrapper .t-header{padding:0 .5rem 0 1rem;font:var(--tui-font-text-s)}:host._has-arrow ::ng-deep sc-accordion tui-accordion-item>.t-wrapper .t-header{padding-left:.75rem}:host._has-add-button ::ng-deep sc-accordion tui-accordion-item>.t-wrapper .t-header,:host._has-delete-button ::ng-deep sc-accordion tui-accordion-item>.t-wrapper .t-header{padding-right:0}::ng-deep sc-accordion tui-accordion-item>.t-wrapper .t-header_hoverable:hover:not([data-mode]){background:var(--tui-background-neutral-1-hover)!important}::ng-deep sc-accordion tui-accordion-item>.t-wrapper .t-header .t-icon{color:var(--tui-text-action)}:host:hover:not([data-mode]) ::ng-deep sc-accordion tui-accordion-item>.t-wrapper .t-header .t-icon{color:var(--tui-text-action)}::ng-deep sc-accordion tui-accordion-item>.t-wrapper .t-title{white-space:normal}:host._has-arrow ::ng-deep sc-accordion tui-accordion-item>.t-wrapper .t-title{margin-right:0}::ng-deep sc-accordion tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content{padding-inline:0!important;padding-block:1rem}:host._has-arrow ::ng-deep sc-accordion tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content,:host[data-size=s]:host._has-arrow ::ng-deep sc-accordion tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content{padding-left:1rem!important}\n"] }]
         
     | 
| 
       59 
59 
     | 
    
         
             
                    }], propDecorators: { showAddButton: [{
         
     | 
| 
       60 
60 
     | 
    
         
             
                            type: Input
         
     | 
| 
       61 
61 
     | 
    
         
             
                        }, {
         
     | 
| 
         @@ -1,7 +1,8 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import { ChangeDetectionStrategy, Component, ContentChildren, ElementRef, EventEmitter, HostBinding, Inject, Input, Output, } from '@angular/core';
         
     | 
| 
      
 1 
     | 
    
         
            +
            import { ChangeDetectionStrategy, Component, ContentChildren, ElementRef, EventEmitter, HostBinding, Inject, inject, Input, Output, } from '@angular/core';
         
     | 
| 
       2 
2 
     | 
    
         
             
            import { IntersectionObserverService } from '@ng-web-apis/intersection-observer';
         
     | 
| 
       3 
3 
     | 
    
         
             
            import { ScUserMetrikaGoalsEnum } from '@snabcentr/client-core';
         
     | 
| 
       4 
4 
     | 
    
         
             
            import { map, shareReplay, Subject, tap } from 'rxjs';
         
     | 
| 
      
 5 
     | 
    
         
            +
            import { SC_BANNER_DURATION } from '../providers';
         
     | 
| 
       5 
6 
     | 
    
         
             
            import * as i0 from "@angular/core";
         
     | 
| 
       6 
7 
     | 
    
         
             
            import * as i1 from "@snabcentr/client-core";
         
     | 
| 
       7 
8 
     | 
    
         
             
            import * as i2 from "../helpers";
         
     | 
| 
         @@ -39,7 +40,7 @@ export class ScBannerComponent { 
     | 
|
| 
       39 
40 
     | 
    
         
             
                    /**
         
     | 
| 
       40 
41 
     | 
    
         
             
                     * Интервал автоматической смены слайдов в миллисекундах (используйте 0, чтобы отключить автоматическую смену слайда).
         
     | 
| 
       41 
42 
     | 
    
         
             
                     */
         
     | 
| 
       42 
     | 
    
         
            -
                    this.duration =  
     | 
| 
      
 43 
     | 
    
         
            +
                    this.duration = inject(SC_BANNER_DURATION);
         
     | 
| 
       43 
44 
     | 
    
         
             
                    /**
         
     | 
| 
       44 
45 
     | 
    
         
             
                     * Признак, что компонент должен растягиваться.
         
     | 
| 
       45 
46 
     | 
    
         
             
                     */
         
     | 
| 
         @@ -140,4 +141,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo 
     | 
|
| 
       140 
141 
     | 
    
         
             
                            type: HostBinding,
         
     | 
| 
       141 
142 
     | 
    
         
             
                            args: ['class.!hidden']
         
     | 
| 
       142 
143 
     | 
    
         
             
                        }] } });
         
     | 
| 
       143 
     | 
    
         
            -
            //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYmFubmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9iYW5uZXIvc2MtYmFubmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9iYW5uZXIvc2MtYmFubmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FHVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNqRixPQUFPLEVBQTZCLHNCQUFzQixFQUF3QixNQUFNLHdCQUF3QixDQUFDO0FBQ2pILE9BQU8sRUFBRSxHQUFHLEVBQWMsV0FBVyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFJbEU7O0dBRUc7QUFTSCxNQUFNLE9BQU8saUJBQWlCO0lBc0YxQjs7Ozs7Ozs7O09BU0c7SUFDSCxZQUNxQixHQUFzQixFQUN0QixhQUE4QixFQUNPLFFBQXFDLEVBQ3RELE9BQTRCLEVBQ3pELFdBQTBCLEVBQ2pCLGtCQUF3QztRQUx4QyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDTyxhQUFRLEdBQVIsUUFBUSxDQUE2QjtRQUN0RCxZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUN6RCxnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUNqQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXNCO1FBckc3RDs7V0FFRztRQUVJLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBRXRDOztXQUVHO1FBRUksYUFBUSxHQUFXLElBQUksQ0FBQztRQVEvQjs7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LE1BQU07Z0JBUUEsY0FBYztzQkFGcEIsZUFBZTt1QkFBQyxRQUFRO2dCQTRDbEIsV0FBVztzQkFEakIsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBMEJyQixRQUFRO3NCQURuQixXQUFXO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnQG5nLXdlYi1hcGlzL2ludGVyc2VjdGlvbi1vYnNlcnZlcic7XG5pbXBvcnQgeyBTY0Jhbm5lciwgU2NCYW5uZXJTZXJ2aWNlLCBTY1VzZXJNZXRyaWthR29hbHNFbnVtLCBTY1VzZXJNZXRyaWthU2VydmljZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgU3ViamVjdCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjUHhDb252ZXJ0ZXIgfSBmcm9tICcuLi9oZWxwZXJzJztcblxuLyoqXG4gKiDQkdCw0L3QvdC10YAg0YEg0L/RgNC+0LrRgNGD0YLQutC+0Lkg0L/QtdGA0LXQtNCw0L3QvdGL0YUge0BsaW5rIFRlbXBsYXRlUmVmfSDRjdC70LXQvNC10L3RgtC+0LIsINC4INCx0LDQvdC90LXRgNC+0LIg0LvQvtC60LDRhtC40LguXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtYmFubmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtYmFubmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zYy1iYW5uZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtJbnRlcnNlY3Rpb25PYnNlcnZlclNlcnZpY2VdLFxuICAgIGhvc3Q6IHsgbmdTa2lwSHlkcmF0aW9uOiAndHJ1ZScgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NCYW5uZXJDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0L/QvtC60LDQt9GL0LLQsNGC0Ywg0LrQvdC+0L/QutC4INC90LDQstC40LPQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBuYXZpZ2F0ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90YLQtdGA0LLQsNC7INCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC+0Lkg0YHQvNC10L3RiyDRgdC70LDQudC00L7QsiDQsiDQvNC40LvQu9C40YHQtdC60YPQvdC00LDRhSAo0LjRgdC/0L7Qu9GM0LfRg9C50YLQtSAwLCDRh9GC0L7QsdGLINC+0YLQutC70Y7Rh9C40YLRjCDQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrRg9GOINGB0LzQtdC90YMg0YHQu9Cw0LnQtNCwKS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkdXJhdGlvbjogbnVtYmVyID0gNTAwMDtcblxuICAgIC8qKlxuICAgICAqINCc0LXRgdGC0L7Qv9C+0LvQvtC20LXQvdC40LUg0LHQsNC90L3QtdGA0LAuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYmFubmVyTG9jYXRpb24/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INC60L7QvNC/0L7QvdC10L3RgiDQtNC+0LvQttC10L0g0YDQsNGB0YLRj9Cz0LjQstCw0YLRjNGB0Y8uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVzaXphYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQt9Cw0LPRgNGD0LfQutC4INCx0LDQvdC90LXRgNC+0LIg0YEg0LrQvtC70LjRh9C10YHRgtCy0L7QvCDQv9C+0LvRg9GH0LXQvdC90YvRhSDQsdCw0L3QvdC10YDQvtCyLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBsb2FkQmFubmVyc0V2ZW50OiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQuNC30L7QsdGA0LDQttC10L3QuNC1INCx0LDQvdC90LXRgNCwLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbGlja0Jhbm5lckV2ZW50OiBFdmVudEVtaXR0ZXI8U2NCYW5uZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxTY0Jhbm5lcj4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L3QsCDRjdC70LXQvNC10L3RgiDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQuSDRiNCw0LHQu9C+0L3QvtCyLlxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oJ2Jhbm5lcicpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgYmFubmVyc0xpc3RSZWY6IFF1ZXJ5TGlzdDxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIC8qKlxuICAgICAqINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGC0LXQutGD0YnQtdCz0L4g0LHQsNC90L3QtdGA0LAuXG4gICAgICovXG4gICAgcHVibGljIGN1cnJlbnRCYW5uZXJJZDogbnVtYmVyID0gMDtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBTdWJqZWN0fSDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNGPINGC0LDQudC80LXRgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSB0b2dnbGVUaW1lciQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC+0LHQvdC+0LLQu9C10L3QuNGPINGB0L/QuNGB0LrQsCDQsdCw0L3QvdC10YDQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBiYW5uZXJzJDogT2JzZXJ2YWJsZTxTY0Jhbm5lcltdPiA9IHRoaXMuYmFubmVyU2VydmljZS5iYW5uZXJzJC5waXBlKFxuICAgICAgICBtYXAoKGJhbm5lcnMpID0+IGJhbm5lcnMuZmlsdGVyKChiYW5uZXIpID0+IGJhbm5lci5sb2NhdGlvbiA9PT0gdGhpcy5iYW5uZXJMb2NhdGlvbikucmV2ZXJzZSgpKSxcbiAgICAgICAgdGFwKChiYW5uZXJzKSA9PiB7XG4gICAgICAgICAgICBpZiAoYmFubmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnJlc2l6YWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFzcGVjdFJhdGlvID0gYCR7YmFubmVyc1swXS53aWR0aH0gLyAke2Jhbm5lcnNbMF0uaGVpZ2h0fWA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5iYW5uZXJzID0gYmFubmVycztcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVRpbWVyJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmxvYWRCYW5uZXJzRXZlbnQuZW1pdChiYW5uZXJzLmxlbmd0aCk7XG4gICAgICAgIH0pLFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy9uby1zaGFyZXJlcGxheVxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0LHQsNC90L3QtdGA0L7Qsi5cbiAgICAgKi9cbiAgICBwdWJsaWMgYmFubmVycz86IFNjQmFubmVyW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqINCh0LLQvtC50YHRgtCy0L4sINC+0YIg0LrQvtGC0L7RgNC+0LPQviDQt9Cw0LLQuNGB0LjRgiDRgdC+0L7RgtC90L7RiNC10L3QuNC1IGA6aG9zdGAg0LrQvtC80L/QvtC90LXQvdGC0LAuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5hc3BlY3QtcmF0aW8nKVxuICAgIHB1YmxpYyBhc3BlY3RSYXRpbzogc3RyaW5nID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjQmFubmVyQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjZHIg0J7QsdGK0LXQutGCINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0L7QsdC90LDRgNGD0LbQtdC90LjQtdC8INC40LfQvNC10L3QtdC90LjQuS5cbiAgICAgKiBAcGFyYW0gYmFubmVyU2VydmljZSDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQsdCw0L3QvdC10YDQsNC80LguXG4gICAgICogQHBhcmFtIGVudHJpZXMkIEludGVyc2VjdGlvbiBPYnNlcnZlciBTZXJ2aWNlLlxuICAgICAqIEBwYXJhbSBlbGVtZW50INCt0LvQtdC80LXQvdGCINCx0LDQvdC90LXRgNCwLlxuICAgICAqIEBwYXJhbSBweENvbnZlcnRlciDQrdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwLdC/0L7QvNC+0YnQvdC40LrQsCDQtNC70Y8g0LrQvtC90LLQtdGA0YLQsNGG0LjQuCDQv9C40LrRgdC10LvQtdC5LlxuICAgICAqIEBwYXJhbSB1c2VyTWV0cmlrYVNlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LvRjyDRgdCx0L7RgNCwINC80LXRgtGA0LjQuiDQviDQtNC10LnRgdGC0LLQuNGP0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYmFubmVyU2VydmljZTogU2NCYW5uZXJTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KEludGVyc2VjdGlvbk9ic2VydmVyU2VydmljZSkgcHJpdmF0ZSByZWFkb25seSBlbnRyaWVzJDogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudDogRWxlbWVudFJlZjxFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSBweENvbnZlcnRlcjogU2NQeENvbnZlcnRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1c2VyTWV0cmlrYVNlcnZpY2U6IFNjVXNlck1ldHJpa2FTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLyoqXG4gICAgICog0KHQstC+0LnRgdGC0LLQviwg0L7RgiDQutC+0YLQvtGA0L7Qs9C+INC30LDQstC40YHQuNGCINC90LDQu9C40YfQuNC1INC60LvQsNGB0YHQsCBgIWhpZGRlbmAg0YMgYDpob3N0YCDQutC+0LzQv9C+0L3QtdC90YLQsC5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLiFoaWRkZW4nKVxuICAgIHByaXZhdGUgZ2V0IGlzSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuYmFubmVycyB8fCB0aGlzLmJhbm5lcnNMaXN0UmVmLmxlbmd0aCArIHRoaXMuYmFubmVycy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7QsdGA0LDQsdC+0YLRh9C40Log0L3QsNC20LDRgtC40Y8g0L3QsCDQsdCw0L3QvdC10YAsINCz0LXQvdC10YDQuNGA0YPRjtGJ0LjQuSDRgdC+0LHRi9GC0LjQtSB7QGxpbmsgY2xpY2tCYW5uZXJJbWdFdmVudH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYmFubmVyINCR0LDQvdC90LXRgCwg0L/QviDRgdGB0YvQu9C60LUg0LrQvtGC0L7RgNC+0LPQviDRgdC+0LLQtdGA0YjRkdC9INC/0LXRgNC10YXQvtC0LlxuICAgICAqL1xuICAgIHB1YmxpYyBvbkNsaWNrKGJhbm5lcjogU2NCYW5uZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLmJhbm5lckNsaWNrLFxuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgYmFubmVyX2lkOiBiYW5uZXIuaWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoYmFubmVyLnVybCkge1xuICAgICAgICAgICAgdGhpcy5jbGlja0Jhbm5lckV2ZW50LmVtaXQoYmFubmVyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKnR1aUxldD1cImJhbm5lcnMkIHwgYXN5bmNcIj5cbiAgICA8dHVpLWNhcm91c2VsXG4gICAgICAgIFtkdXJhdGlvbl09XCJkdXJhdGlvblwiXG4gICAgICAgICNjYXJvdXNlbFxuICAgICAgICBbYXR0ci5yZXNpemFibGVdPVwicmVzaXphYmxlXCJcbiAgICAgICAgY2xhc3M9XCJzaXplLWZ1bGwgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQteGwgYmctd2hpdGVcIlxuICAgICAgICBbKGluZGV4KV09XCJjdXJyZW50QmFubmVySWRcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYmFubmVyIG9mIGJhbm5lcnM7IGxldCBpbmRleCA9IGluZGV4XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJiYW5uZXIubWVkaWFUeXBlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ltYWdlJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgKnR1aUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrKGJhbm5lcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJiYW5uZXIudGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmFzcGVjdC1yYXRpb109XCJhc3BlY3RSYXRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5ocmVmXT1cImJhbm5lci51cmwgPyBiYW5uZXIudXJsIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNpemUtZnVsbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwaWN0dXJlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYmFubmVyLm1lZGlhRmlsZVdlYnApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImltYWdlL3dlYnBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY3NldF09XCJiYW5uZXIubWVkaWFGaWxlV2VicCB8IHNjTWVkaWFJbWFnZVRyYW5zZm9ybWVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImJhbm5lci5tZWRpYUZpbGUgfCBzY01lZGlhSW1hZ2VUcmFuc2Zvcm1lcjogdHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiYmFubmVyLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaXplLWZ1bGwgb2JqZWN0LWNvdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9waWN0dXJlPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYmFubmVyc0xpc3RSZWZcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqdHVpSXRlbVxuICAgICAgICAgICAgICAgIFtzdHlsZS5hc3BlY3QtcmF0aW9dPVwiYXNwZWN0UmF0aW9cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2l6ZS1mdWxsIG92ZXJmbG93LWhpZGRlblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC90dWktY2Fyb3VzZWw+XG5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwibmF2aWdhdGVCdXR0b24gJiYgZHVyYXRpb24gJiYgdGhpcy5iYW5uZXJzICYmIHRoaXMuYmFubmVyc0xpc3RSZWYubGVuZ3RoICsgdGhpcy5iYW5uZXJzLmxlbmd0aCA+IDFcIlxuICAgICAgICB0dWlUaGVtZT1cImxpZ2h0XCJcbiAgICAgICAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiXG4gICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLmNoZXZyb24tbGVmdFwiXG4gICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyLXJhZGl1cy4lXT1cIjEwMFwiXG4gICAgICAgICAgICBhcHBlYXJhbmNlPVwiZmxhdFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2Fyb3VzZWwucHJldigpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiIWFic29sdXRlIGxlZnQtMlwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5jaGV2cm9uLXJpZ2h0XCJcbiAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgIFtzdHlsZS5ib3JkZXItcmFkaXVzLiVdPVwiMTAwXCJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJmbGF0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJjYXJvdXNlbC5uZXh0KClcIlxuICAgICAgICAgICAgY2xhc3M9XCIhYWJzb2x1dGUgcmlnaHQtMlwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
         
     | 
| 
      
 144 
     | 
    
         
            +
            //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYmFubmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9iYW5uZXIvc2MtYmFubmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9iYW5uZXIvc2MtYmFubmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEdBR1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDakYsT0FBTyxFQUE2QixzQkFBc0IsRUFBd0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNqSCxPQUFPLEVBQUUsR0FBRyxFQUFjLFdBQVcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7OztBQUVsRDs7R0FFRztBQVNILE1BQU0sT0FBTyxpQkFBaUI7SUFzRjFCOzs7Ozs7Ozs7T0FTRztJQUNILFlBQ3FCLEdBQXNCLEVBQ3RCLGFBQThCLEVBQ08sUUFBcUMsRUFDdEQsT0FBNEIsRUFDekQsV0FBMEIsRUFDakIsa0JBQXdDO1FBTHhDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUNPLGFBQVEsR0FBUixRQUFRLENBQTZCO1FBQ3RELFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQ3pELGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBQ2pCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBc0I7UUFyRzdEOztXQUVHO1FBRUksbUJBQWMsR0FBWSxJ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QUFLO2dCQU9DLFNBQVM7c0JBRGYsS0FBSztnQkFPQyxnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBT0EsZ0JBQWdCO3NCQUR0QixNQUFNO2dCQVFBLGNBQWM7c0JBRnBCLGVBQWU7dUJBQUMsUUFBUTtnQkE0Q2xCLFdBQVc7c0JBRGpCLFdBQVc7dUJBQUMsb0JBQW9CO2dCQTBCckIsUUFBUTtzQkFEbkIsV0FBVzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbnRlcnNlY3Rpb25PYnNlcnZlclNlcnZpY2UgfSBmcm9tICdAbmctd2ViLWFwaXMvaW50ZXJzZWN0aW9uLW9ic2VydmVyJztcbmltcG9ydCB7IFNjQmFubmVyLCBTY0Jhbm5lclNlcnZpY2UsIFNjVXNlck1ldHJpa2FHb2Fsc0VudW0sIFNjVXNlck1ldHJpa2FTZXJ2aWNlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBTdWJqZWN0LCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NQeENvbnZlcnRlciB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgU0NfQkFOTkVSX0RVUkFUSU9OIH0gZnJvbSAnLi4vcHJvdmlkZXJzJztcblxuLyoqXG4gKiDQkdCw0L3QvdC10YAg0YEg0L/RgNC+0LrRgNGD0YLQutC+0Lkg0L/QtdGA0LXQtNCw0L3QvdGL0YUge0BsaW5rIFRlbXBsYXRlUmVmfSDRjdC70LXQvNC10L3RgtC+0LIsINC4INCx0LDQvdC90LXRgNC+0LIg0LvQvtC60LDRhtC40LguXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtYmFubmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtYmFubmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zYy1iYW5uZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtJbnRlcnNlY3Rpb25PYnNlcnZlclNlcnZpY2VdLFxuICAgIGhvc3Q6IHsgbmdTa2lwSHlkcmF0aW9uOiAndHJ1ZScgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NCYW5uZXJDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0L/QvtC60LDQt9GL0LLQsNGC0Ywg0LrQvdC+0L/QutC4INC90LDQstC40LPQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBuYXZpZ2F0ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90YLQtdGA0LLQsNC7INCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC+0Lkg0YHQvNC10L3RiyDRgdC70LDQudC00L7QsiDQsiDQvNC40LvQu9C40YHQtdC60YPQvdC00LDRhSAo0LjRgdC/0L7Qu9GM0LfRg9C50YLQtSAwLCDRh9GC0L7QsdGLINC+0YLQutC70Y7Rh9C40YLRjCDQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrRg9GOINGB0LzQtdC90YMg0YHQu9Cw0LnQtNCwKS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkdXJhdGlvbjogbnVtYmVyID0gaW5qZWN0KFNDX0JBTk5FUl9EVVJBVElPTik7XG5cbiAgICAvKipcbiAgICAgKiDQnNC10YHRgtC+0L/QvtC70L7QttC10L3QuNC1INCx0LDQvdC90LXRgNCwLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGJhbm5lckxvY2F0aW9uPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQutC+0LzQv9C+0L3QtdC90YIg0LTQvtC70LbQtdC9INGA0LDRgdGC0Y/Qs9C40LLQsNGC0YzRgdGPLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlc2l6YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0LfQsNCz0YDRg9C30LrQuCDQsdCw0L3QvdC10YDQvtCyINGBINC60L7Qu9C40YfQtdGB0YLQstC+0Lwg0L/QvtC70YPRh9C10L3QvdGL0YUg0LHQsNC90L3QtdGA0L7Qsi5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgbG9hZEJhbm5lcnNFdmVudDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LjQt9C+0LHRgNCw0LbQtdC90LjQtSDQsdCw0L3QvdC10YDQsC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xpY2tCYW5uZXJFdmVudDogRXZlbnRFbWl0dGVyPFNjQmFubmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8U2NCYW5uZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0YHRgdGL0LvQvtC6INC90LAg0Y3Qu9C10LzQtdC90YIg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Lkg0YjQsNCx0LvQvtC90L7Qsi5cbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkcmVuKCdiYW5uZXInKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGJhbm5lcnNMaXN0UmVmOiBRdWVyeUxpc3Q8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICAvKipcbiAgICAgKiDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRgtC10LrRg9GJ0LXQs9C+INCx0LDQvdC90LXRgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBjdXJyZW50QmFubmVySWQ6IG51bWJlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgU3ViamVjdH0g0LjQt9C80LXQvdC10L3QuNGPINGB0L7RgdGC0L7Rj9C90LjRjyDRgtCw0LnQvNC10YDQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9nZ2xlVGltZXIkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQvtCx0L3QvtCy0LvQtdC90LjRjyDRgdC/0LjRgdC60LAg0LHQsNC90L3QtdGA0L7Qsi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgYmFubmVycyQ6IE9ic2VydmFibGU8U2NCYW5uZXJbXT4gPSB0aGlzLmJhbm5lclNlcnZpY2UuYmFubmVycyQucGlwZShcbiAgICAgICAgbWFwKChiYW5uZXJzKSA9PiBiYW5uZXJzLmZpbHRlcigoYmFubmVyKSA9PiBiYW5uZXIubG9jYXRpb24gPT09IHRoaXMuYmFubmVyTG9jYXRpb24pLnJldmVyc2UoKSksXG4gICAgICAgIHRhcCgoYmFubmVycykgPT4ge1xuICAgICAgICAgICAgaWYgKGJhbm5lcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5yZXNpemFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hc3BlY3RSYXRpbyA9IGAke2Jhbm5lcnNbMF0ud2lkdGh9IC8gJHtiYW5uZXJzWzBdLmhlaWdodH1gO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuYmFubmVycyA9IGJhbm5lcnM7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVUaW1lciQubmV4dCh0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5sb2FkQmFubmVyc0V2ZW50LmVtaXQoYmFubmVycy5sZW5ndGgpO1xuICAgICAgICB9KSxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMvbm8tc2hhcmVyZXBsYXlcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INCx0LDQvdC90LXRgNC+0LIuXG4gICAgICovXG4gICAgcHVibGljIGJhbm5lcnM/OiBTY0Jhbm5lcltdID0gW107XG5cbiAgICAvKipcbiAgICAgKiDQodCy0L7QudGB0YLQstC+LCDQvtGCINC60L7RgtC+0YDQvtCz0L4g0LfQsNCy0LjRgdC40YIg0YHQvtC+0YLQvdC+0YjQtdC90LjQtSBgOmhvc3RgINC60L7QvNC/0L7QvdC10L3RgtCwLlxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUuYXNwZWN0LXJhdGlvJylcbiAgICBwdWJsaWMgYXNwZWN0UmF0aW86IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY0Jhbm5lckNvbXBvbmVudH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2RyINCe0LHRitC10LrRgiDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC+0LHQvdCw0YDRg9C20LXQvdC40LXQvCDQuNC30LzQtdC90LXQvdC40LkuXG4gICAgICogQHBhcmFtIGJhbm5lclNlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0LHQsNC90L3QtdGA0LDQvNC4LlxuICAgICAqIEBwYXJhbSBlbnRyaWVzJCBJbnRlcnNlY3Rpb24gT2JzZXJ2ZXIgU2VydmljZS5cbiAgICAgKiBAcGFyYW0gZWxlbWVudCDQrdC70LXQvNC10L3RgiDQsdCw0L3QvdC10YDQsC5cbiAgICAgKiBAcGFyYW0gcHhDb252ZXJ0ZXIg0K3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsC3Qv9C+0LzQvtGJ0L3QuNC60LAg0LTQu9GPINC60L7QvdCy0LXRgNGC0LDRhtC40Lgg0L/QuNC60YHQtdC70LXQuS5cbiAgICAgKiBAcGFyYW0gdXNlck1ldHJpa2FTZXJ2aWNlINCh0LXRgNCy0LjRgSDQtNC70Y8g0YHQsdC+0YDQsCDQvNC10YLRgNC40Log0L4g0LTQtdC50YHRgtCy0LjRj9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGJhbm5lclNlcnZpY2U6IFNjQmFubmVyU2VydmljZSxcbiAgICAgICAgQEluamVjdChJbnRlcnNlY3Rpb25PYnNlcnZlclNlcnZpY2UpIHByaXZhdGUgcmVhZG9ubHkgZW50cmllcyQ6IEludGVyc2VjdGlvbk9ic2VydmVyU2VydmljZSxcbiAgICAgICAgQEluamVjdChFbGVtZW50UmVmKSBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQ6IEVsZW1lbnRSZWY8RWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgcHhDb252ZXJ0ZXI6IFNjUHhDb252ZXJ0ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlck1ldHJpa2FTZXJ2aWNlOiBTY1VzZXJNZXRyaWthU2VydmljZVxuICAgICkge31cblxuICAgIC8qKlxuICAgICAqINCh0LLQvtC50YHRgtCy0L4sINC+0YIg0LrQvtGC0L7RgNC+0LPQviDQt9Cw0LLQuNGB0LjRgiDQvdCw0LvQuNGH0LjQtSDQutC70LDRgdGB0LAgYCFoaWRkZW5gINGDIGA6aG9zdGAg0LrQvtC80L/QvtC90LXQvdGC0LAuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy4haGlkZGVuJylcbiAgICBwcml2YXRlIGdldCBpc0hpZGRlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmJhbm5lcnMgfHwgdGhpcy5iYW5uZXJzTGlzdFJlZi5sZW5ndGggKyB0aGlzLmJhbm5lcnMubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQvtGC0YfQuNC6INC90LDQttCw0YLQuNGPINC90LAg0LHQsNC90L3QtdGALCDQs9C10L3QtdGA0LjRgNGD0Y7RidC40Lkg0YHQvtCx0YvRgtC40LUge0BsaW5rIGNsaWNrQmFubmVySW1nRXZlbnR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIGJhbm5lciDQkdCw0L3QvdC10YAsINC/0L4g0YHRgdGL0LvQutC1INC60L7RgtC+0YDQvtCz0L4g0YHQvtCy0LXRgNGI0ZHQvSDQv9C10YDQtdGF0L7QtC5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25DbGljayhiYW5uZXI6IFNjQmFubmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5iYW5uZXJDbGljayxcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgIGJhbm5lcl9pZDogYmFubmVyLmlkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGJhbm5lci51cmwpIHtcbiAgICAgICAgICAgIHRoaXMuY2xpY2tCYW5uZXJFdmVudC5lbWl0KGJhbm5lcik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICp0dWlMZXQ9XCJiYW5uZXJzJCB8IGFzeW5jXCI+XG4gICAgPHR1aS1jYXJvdXNlbFxuICAgICAgICBbZHVyYXRpb25dPVwiZHVyYXRpb25cIlxuICAgICAgICAjY2Fyb3VzZWxcbiAgICAgICAgW2F0dHIucmVzaXphYmxlXT1cInJlc2l6YWJsZVwiXG4gICAgICAgIGNsYXNzPVwic2l6ZS1mdWxsIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLXhsIGJnLXdoaXRlXCJcbiAgICAgICAgWyhpbmRleCldPVwiY3VycmVudEJhbm5lcklkXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJhbm5lciBvZiBiYW5uZXJzOyBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiYmFubmVyLm1lZGlhVHlwZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpbWFnZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICp0dWlJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGljayhiYW5uZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiYmFubmVyLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5hc3BlY3QtcmF0aW9dPVwiYXNwZWN0UmF0aW9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuaHJlZl09XCJiYW5uZXIudXJsID8gYmFubmVyLnVybCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaXplLWZ1bGxcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGljdHVyZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGJhbm5lci5tZWRpYUZpbGVXZWJwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJpbWFnZS93ZWJwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNzZXRdPVwiYmFubmVyLm1lZGlhRmlsZVdlYnAgfCBzY01lZGlhSW1hZ2VUcmFuc2Zvcm1lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJiYW5uZXIubWVkaWFGaWxlIHwgc2NNZWRpYUltYWdlVHJhbnNmb3JtZXI6IHRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cImJhbm5lci50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2l6ZS1mdWxsIG9iamVjdC1jb3ZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGljdHVyZT5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGJhbm5lcnNMaXN0UmVmXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKnR1aUl0ZW1cbiAgICAgICAgICAgICAgICBbc3R5bGUuYXNwZWN0LXJhdGlvXT1cImFzcGVjdFJhdGlvXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNpemUtZnVsbCBvdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdHVpLWNhcm91c2VsPlxuXG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cIm5hdmlnYXRlQnV0dG9uICYmIGR1cmF0aW9uICYmIHRoaXMuYmFubmVycyAmJiB0aGlzLmJhbm5lcnNMaXN0UmVmLmxlbmd0aCArIHRoaXMuYmFubmVycy5sZW5ndGggPiAxXCJcbiAgICAgICAgdHVpVGhlbWU9XCJsaWdodFwiXG4gICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIlxuICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5jaGV2cm9uLWxlZnRcIlxuICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlci1yYWRpdXMuJV09XCIxMDBcIlxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cImZsYXRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNhcm91c2VsLnByZXYoKVwiXG4gICAgICAgICAgICBjbGFzcz1cIiFhYnNvbHV0ZSBsZWZ0LTJcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkuY2hldnJvbi1yaWdodFwiXG4gICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyLXJhZGl1cy4lXT1cIjEwMFwiXG4gICAgICAgICAgICBhcHBlYXJhbmNlPVwiZmxhdFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2Fyb3VzZWwubmV4dCgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiIWFic29sdXRlIHJpZ2h0LTJcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
         
     |