text: import { __decorate } from "tslib";
  import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
  import { NavigationEvent } from './datepicker-view-model';
  import { NgbDatepickerI18n } from './datepicker-i18n';
  import * as ɵngcc0 from '@angular/core';
  import * as ɵngcc1 from './datepicker-i18n';
  import * as ɵngcc2 from 'tslib';
  import * as ɵngcc3 from '@angular/common';
  import * as ɵngcc4 from './datepicker-navigation-select';
  
  function NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template(rf, ctx) { if (rf & 1) {
      var _r3 = ɵngcc0.ɵɵgetCurrentView();
      ɵngcc0.ɵɵelementStart(0, "ngb-datepicker-navigation-select", 7);
      ɵngcc0.ɵɵlistener("select", function NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template_ngb_datepicker_navigation_select_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); var ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.select.emit($event); });
      ɵngcc0.ɵɵelementEnd();
  } if (rf & 2) {
      var ctx_r0 = ɵngcc0.ɵɵnextContext();
      ɵngcc0.ɵɵproperty("date", ctx_r0.date)("disabled", ctx_r0.disabled)("months", ctx_r0.selectBoxes.months)("years", ctx_r0.selectBoxes.years);
  } }
  function NgbDatepickerNavigation_4_ng_template_0_div_0_Template(rf, ctx) { if (rf & 1) {
      ɵngcc0.ɵɵelement(0, "div", 0);
  } }
  function NgbDatepickerNavigation_4_ng_template_0_div_3_Template(rf, ctx) { if (rf & 1) {
      ɵngcc0.ɵɵelement(0, "div", 0);
  } }
  function NgbDatepickerNavigation_4_ng_template_0_Template(rf, ctx) { if (rf & 1) {
      ɵngcc0.ɵɵtemplate(0, NgbDatepickerNavigation_4_ng_template_0_div_0_Template, 1, 0, "div", 9);
      ɵngcc0.ɵɵelementStart(1, "div", 10);
      ɵngcc0.ɵɵtext(2);
      ɵngcc0.ɵɵelementEnd();
      ɵngcc0.ɵɵtemplate(3, NgbDatepickerNavigation_4_ng_template_0_div_3_Template, 1, 0, "div", 9);
  } if (rf & 2) {
      var month_r5 = ctx.$implicit;
      var i_r6 = ctx.index;
      var ctx_r4 = ɵngcc0.ɵɵnextContext(2);
      ɵngcc0.ɵɵproperty("ngIf", i_r6 > 0);
      ɵngcc0.ɵɵadvance(2);
      ɵngcc0.ɵɵtextInterpolate2(" ", ctx_r4.i18n.getMonthFullName(month_r5.number, month_r5.year), " ", ctx_r4.i18n.getYearNumerals(month_r5.year), " ");
      ɵngcc0.ɵɵadvance(1);
      ɵngcc0.ɵɵproperty("ngIf", i_r6 !== ctx_r4.months.length - 1);
  } }
  function NgbDatepickerNavigation_4_Template(rf, ctx) { if (rf & 1) {
      ɵngcc0.ɵɵtemplate(0, NgbDatepickerNavigation_4_ng_template_0_Template, 4, 4, "ng-template", 8);
  } if (rf & 2) {
      var ctx_r1 = ɵngcc0.ɵɵnextContext();
      ɵngcc0.ɵɵproperty("ngForOf", ctx_r1.months);
  } }
  var NgbDatepickerNavigation = /** @class */ (function () {
      function NgbDatepickerNavigation(i18n) {
          this.i18n = i18n;
          this.navigation = NavigationEvent;
          this.months = [];
          this.navigate = new EventEmitter();
          this.select = new EventEmitter();
      }
      NgbDatepickerNavigation.prototype.onClickPrev = function (event) {
          event.currentTarget.focus();
          this.navigate.emit(this.navigation.PREV);
      };
      NgbDatepickerNavigation.prototype.onClickNext = function (event) {
          event.currentTarget.focus();
          this.navigate.emit(this.navigation.NEXT);
      };
      NgbDatepickerNavigation.ctorParameters = function () { return [
          { type: NgbDatepickerI18n }
      ]; };
      __decorate([
          Input()
      ], NgbDatepickerNavigation.prototype, "date", void 0);
      __decorate([
          Input()
      ], NgbDatepickerNavigation.prototype, "disabled", void 0);
      __decorate([
          Input()
      ], NgbDatepickerNavigation.prototype, "months", void 0);
      __decorate([
          Input()
      ], NgbDatepickerNavigation.prototype, "showSelect", void 0);
      __decorate([
          Input()
      ], NgbDatepickerNavigation.prototype, "prevDisabled", void 0);
      __decorate([
          Input()
      ], NgbDatepickerNavigation.prototype, "nextDisabled", void 0);
      __decorate([
          Input()
      ], NgbDatepickerNavigation.prototype, "selectBoxes", void 0);
      __decorate([
          Output()
      ], NgbDatepickerNavigation.prototype, "navigate", void 0);
      __decorate([
          Output()
      ], NgbDatepickerNavigation.prototype, "select", void 0);
  NgbDatepickerNavigation.ɵfac = function NgbDatepickerNavigation_Factory(t) { return new (t || NgbDatepickerNavigation)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.NgbDatepickerI18n)); };
  NgbDatepickerNavigation.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerNavigation, selectors: [["ngb-datepicker-navigation"]], inputs: { months: "months", date: "date", disabled: "disabled", showSelect: "showSelect", prevDisabled: "prevDisabled", nextDisabled: "nextDisabled", selectBoxes: "selectBoxes" }, outputs: { navigate: "navigate", select: "select" }, decls: 8, vars: 4, consts: function () { var i18n_0; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
          var MSG_EXTERNAL_ngb_datepicker_previous_month$$ESM5_DATEPICKER_DATEPICKER_NAVIGATION_JS_1 = goog.getMsg("Previous month");
          i18n_0 = MSG_EXTERNAL_ngb_datepicker_previous_month$$ESM5_DATEPICKER_DATEPICKER_NAVIGATION_JS_1;
      }
      else {
          i18n_0 = $localize(ɵngcc2.__makeTemplateObject([":@@ngb.datepicker.previous-month\u241Fc3b08b07b5ab98e7cdcf18df39355690ab7d3884\u241F8586908745456864217:Previous month"], [":@@ngb.datepicker.previous-month\u241Fc3b08b07b5ab98e7cdcf18df39355690ab7d3884\u241F8586908745456864217:Previous month"]));
      } var i18n_2; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
          var MSG_EXTERNAL_ngb_datepicker_previous_month$$ESM5_DATEPICKER_DATEPICKER_NAVIGATION_JS_3 = goog.getMsg("Previous month");
          i18n_2 = MSG_EXTERNAL_ngb_datepicker_previous_month$$ESM5_DATEPICKER_DATEPICKER_NAVIGATION_JS_3;
      }
      else {
          i18n_2 = $localize(ɵngcc2.__makeTemplateObject([":@@ngb.datepicker.previous-month\u241Fc3b08b07b5ab98e7cdcf18df39355690ab7d3884\u241F8586908745456864217:Previous month"], [":@@ngb.datepicker.previous-month\u241Fc3b08b07b5ab98e7cdcf18df39355690ab7d3884\u241F8586908745456864217:Previous month"]));
      } var i18n_4; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
          var MSG_EXTERNAL_ngb_datepicker_next_month$$ESM5_DATEPICKER_DATEPICKER_NAVIGATION_JS_5 = goog.getMsg("Next month");
          i18n_4 = MSG_EXTERNAL_ngb_datepicker_next_month$$ESM5_DATEPICKER_DATEPICKER_NAVIGATION_JS_5;
      }
      else {
          i18n_4 = $localize(ɵngcc2.__makeTemplateObject([":@@ngb.datepicker.next-month\u241F4bd046985cfe13040d5ef0cd881edce0968a111a\u241F3628374603023447227:Next month"], [":@@ngb.datepicker.next-month\u241F4bd046985cfe13040d5ef0cd881edce0968a111a\u241F3628374603023447227:Next month"]));
      } var i18n_6; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
          var MSG_EXTERNAL_ngb_datepicker_next_month$$ESM5_DATEPICKER_DATEPICKER_NAVIGATION_JS_7 = goog.getMsg("Next month");
          i18n_6 = MSG_EXTERNAL_ngb_datepicker_next_month$$ESM5_DATEPICKER_DATEPICKER_NAVIGATION_JS_7;
      }
      else {
          i18n_6 = $localize(ɵngcc2.__makeTemplateObject([":@@ngb.datepicker.next-month\u241F4bd046985cfe13040d5ef0cd881edce0968a111a\u241F3628374603023447227:Next month"], [":@@ngb.datepicker.next-month\u241F4bd046985cfe13040d5ef0cd881edce0968a111a\u241F3628374603023447227:Next month"]));
      } return [[1, "ngb-dp-arrow"], ["type", "button", "aria-label", i18n_0, "title", i18n_2, 1, "btn", "btn-link", "ngb-dp-arrow-btn", 3, "disabled", "click"], [1, "ngb-dp-navigation-chevron"], ["class", "ngb-dp-navigation-select", 3, "date", "disabled", "months", "years", "select", 4, "ngIf"], [4, "ngIf"], [1, "ngb-dp-arrow", "right"], ["type", "button", "aria-label", i18n_4, "title", i18n_6, 1, "btn", "btn-link", "ngb-dp-arrow-btn", 3, "disabled", "click"], [1, "ngb-dp-navigation-select", 3, "date", "disabled", "months", "years", "select"], ["ngFor", "", 3, "ngForOf"], ["class", "ngb-dp-arrow", 4, "ngIf"], [1, "ngb-dp-month-name"]]; }, template: function NgbDatepickerNavigation_Template(rf, ctx) { if (rf & 1) {
          ɵngcc0.ɵɵelementStart(0, "div", 0);
          ɵngcc0.ɵɵelementStart(1, "button", 1);
          ɵngcc0.ɵɵlistener("click", function NgbDatepickerNavigation_Template_button_click_1_listener($event) { return ctx.onClickPrev($event); });
          ɵngcc0.ɵɵelement(2, "span", 2);
          ɵngcc0.ɵɵelementEnd();
          ɵngcc0.ɵɵelementEnd();
          ɵngcc0.ɵɵtemplate(3, NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template, 1, 4, "ngb-datepicker-navigation-select", 3);
          ɵngcc0.ɵɵtemplate(4, NgbDatepickerNavigation_4_Template, 1, 1, undefined, 4);
          ɵngcc0.ɵɵelementStart(5, "div", 5);
          ɵngcc0.ɵɵelementStart(6, "button", 6);
          ɵngcc0.ɵɵlistener("click", function NgbDatepickerNavigation_Template_button_click_6_listener($event) { return ctx.onClickNext($event); });
          ɵngcc0.ɵɵelement(7, "span", 2);
          ɵngcc0.ɵɵelementEnd();
          ɵngcc0.ɵɵelementEnd();
      } if (rf & 2) {
          ɵngcc0.ɵɵadvance(1);
          ɵngcc0.ɵɵproperty("disabled", ctx.prevDisabled);
          ɵngcc0.ɵɵadvance(2);
          ɵngcc0.ɵɵproperty("ngIf", ctx.showSelect);
          ɵngcc0.ɵɵadvance(1);
          ɵngcc0.ɵɵproperty("ngIf", !ctx.showSelect);
          ɵngcc0.ɵɵadvance(2);
          ɵngcc0.ɵɵproperty("disabled", ctx.nextDisabled);
      } }, directives: [ɵngcc3.NgIf, ɵngcc4.NgbDatepickerNavigationSelect, ɵngcc3.NgForOf], styles: ["ngb-datepicker-navigation{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;width:.75em;height:.75em;margin-left:.25em;margin-right:.15em;-webkit-transform:rotate(-135deg);transform:rotate(-135deg)}.right .ngb-dp-navigation-chevron{-webkit-transform:rotate(45deg);transform:rotate(45deg);margin-left:.15em;margin-right:.25em}.ngb-dp-arrow{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;padding-right:0;padding-left:0;margin:0;width:2rem;height:2rem}.ngb-dp-arrow.right{-ms-flex-pack:end;justify-content:flex-end}.ngb-dp-arrow-btn{padding:0 .25rem;margin:0 .5rem;border:none;background-color:transparent;z-index:1}.ngb-dp-arrow-btn:focus{outline-width:1px;outline-style:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:-ms-flexbox;display:flex;-ms-flex:1 1 9rem;flex:1 1 9rem}"], encapsulation: 2, changeDetection: 0 });
  /*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(NgbDatepickerNavigation, [{
          type: Component,
          args: [{
                  selector: 'ngb-datepicker-navigation',
                  changeDetection: ChangeDetectionStrategy.OnPush,
                  encapsulation: ViewEncapsulation.None,
                  template: "\n    <div class=\"ngb-dp-arrow\">\n      <button type=\"button\" class=\"btn btn-link ngb-dp-arrow-btn\" (click)=\"onClickPrev($event)\" [disabled]=\"prevDisabled\"\n              i18n-aria-label=\"@@ngb.datepicker.previous-month\" aria-label=\"Previous month\"\n              i18n-title=\"@@ngb.datepicker.previous-month\" title=\"Previous month\">\n        <span class=\"ngb-dp-navigation-chevron\"></span>\n      </button>\n    </div>\n    <ngb-datepicker-navigation-select *ngIf=\"showSelect\" class=\"ngb-dp-navigation-select\"\n      [date]=\"date\"\n      [disabled] = \"disabled\"\n      [months]=\"selectBoxes.months\"\n      [years]=\"selectBoxes.years\"\n      (select)=\"select.emit($event)\">\n    </ngb-datepicker-navigation-select>\n\n    <ng-template *ngIf=\"!showSelect\" ngFor let-month [ngForOf]=\"months\" let-i=\"index\">\n      <div class=\"ngb-dp-arrow\" *ngIf=\"i > 0\"></div>\n      <div class=\"ngb-dp-month-name\">\n        {{ i18n.getMonthFullName(month.number, month.year) }} {{ i18n.getYearNumerals(month.year) }}\n      </div>\n      <div class=\"ngb-dp-arrow\" *ngIf=\"i !== months.length - 1\"></div>\n    </ng-template>\n    <div class=\"ngb-dp-arrow right\">\n      <button type=\"button\" class=\"btn btn-link ngb-dp-arrow-btn\" (click)=\"onClickNext($event)\" [disabled]=\"nextDisabled\"\n              i18n-aria-label=\"@@ngb.datepicker.next-month\" aria-label=\"Next month\"\n              i18n-title=\"@@ngb.datepicker.next-month\" title=\"Next month\">\n        <span class=\"ngb-dp-navigation-chevron\"></span>\n      </button>\n    </div>\n    ",
                  styles: ["ngb-datepicker-navigation{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;width:.75em;height:.75em;margin-left:.25em;margin-right:.15em;-webkit-transform:rotate(-135deg);transform:rotate(-135deg)}.right .ngb-dp-navigation-chevron{-webkit-transform:rotate(45deg);transform:rotate(45deg);margin-left:.15em;margin-right:.25em}.ngb-dp-arrow{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;padding-right:0;padding-left:0;margin:0;width:2rem;height:2rem}.ngb-dp-arrow.right{-ms-flex-pack:end;justify-content:flex-end}.ngb-dp-arrow-btn{padding:0 .25rem;margin:0 .5rem;border:none;background-color:transparent;z-index:1}.ngb-dp-arrow-btn:focus{outline-width:1px;outline-style:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:-ms-flexbox;display:flex;-ms-flex:1 1 9rem;flex:1 1 9rem}"]
              }]
      }], function () { return [{ type: ɵngcc1.NgbDatepickerI18n }]; }, { months: [{
              type: Input
          }], navigate: [{
              type: Output
          }], select: [{
              type: Output
          }], date: [{
              type: Input
          }], disabled: [{
              type: Input
          }], showSelect: [{
              type: Input
          }], prevDisabled: [{
              type: Input
          }], nextDisabled: [{
              type: Input
          }], selectBoxes: [{
              type: Input
          }] }); })();
      return NgbDatepickerNavigation;
  }());
  export { NgbDatepickerNavigation };
  
  //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1uYXZpZ2F0aW9uLmpzIiwic291cmNlcyI6WyJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9kYXRlcGlja2VyL2RhdGVwaWNrZXItbmF2aWdhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUMsZUFBZSxFQUFpQixNQUFNLHlCQUF5QixDQUFDO0FBRXhFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVDcEQ7QUFDb0IsSUFhbEIsaUNBQW1CLElBQXVCO0FBQUksUUFBM0IsU0FBSSxHQUFKLElBQUksQ0FBbUI7QUFBQyxRQWIzQyxlQUFVLEdBQUcsZUFBZSxDQUFDO0FBQy9CLFFBR1csV0FBTSxHQUFxQixFQUFFLENBQUM7QUFDekMsUUFLWSxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7QUFDM0QsUUFBWSxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztBQUNqRCxJQUMrQyxDQUFDO0FBQ2hELElBQ0UsNkNBQVcsR0FBWCxVQUFZLEtBQWlCO0FBQy9CLFFBQUssS0FBSyxDQUFDLGFBQTZCLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDakQsUUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdDLElBQUUsQ0FBQztBQUVILElBQUUsNkNBQVcsR0FBWCxVQUFZLEtBQWlCO0FBQy9CLFFBQUssS0FBSyxDQUFDLGFBQTZCLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDakQsUUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdDLElBQUUsQ0FBQztBQUNGO0FBQ2tFLGdCQVp4QyxpQkFBaUI7QUFBRztBQUV4QyxJQWJJO0FBQWEsUUFBckIsS0FBSyxFQUFFO0FBQUMseURBQWM7QUFDeEIsSUFBVTtBQUFhLFFBQXJCLEtBQUssRUFBRTtBQUFDLDZEQUFrQjtBQUM1QixJQUFVO0FBQWEsUUFBckIsS0FBSyxFQUFFO0FBQUMsMkRBQThCO0FBQ3hDLElBQVU7QUFBYSxRQUFyQixLQUFLLEVBQUU7QUFBQywrREFBb0I7QUFDOUIsSUFBVTtBQUFhLFFBQXJCLEtBQUssRUFBRTtBQUFDLGlFQUFzQjtBQUNoQyxJQUFVO0FBQWEsUUFBckIsS0FBSyxFQUFFO0FBQUMsaUVBQXNCO0FBQ2hDLElBQVU7QUFBYSxRQUFyQixLQUFLLEVBQUU7QUFBQyxnRUFBaUQ7QUFFNUQsSUFBWTtBQUFhLFFBQXRCLE1BQU0sRUFBRTtBQUFDLDZEQUErQztBQUMxRCxJQUFXO0FBQWEsUUFBdEIsTUFBTSxFQUFFO0FBQUMsMkRBQXFDO0lBWnBDLHVCQUF1Qix3QkFyQ25DLFNBQVMsQ0FBQyxjQUNULFFBQVEsRUFBRSwyQkFBMkIsY0FDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07WUFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUksY0FFckMsUUFBUSxFQUFFOzs7Ozs7Ozs7OzttUkE4QlA7Ozs7Ozs7Ozs7OzsySkFDSixDQUFDLFFBQ1csdUJBQXVCLENBeUJuQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JBQ0Q7QUFBQyxJQURELDhCQUFDO0FBQ0EsQ0FEQSxBQXpCRCxJQXlCQztBQUNELFNBMUJhLHVCQUF1QjtBQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05hdmlnYXRpb25FdmVudCwgTW9udGhWaWV3TW9kZWx9IGZyb20gJy4vZGF0ZXBpY2tlci12aWV3LW1vZGVsJztcbmltcG9ydCB7TmdiRGF0ZX0gZnJvbSAnLi9uZ2ItZGF0ZSc7XG5pbXBvcnQge05nYkRhdGVwaWNrZXJJMThufSBmcm9tICcuL2RhdGVwaWNrZXItaTE4bic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nYi1kYXRlcGlja2VyLW5hdmlnYXRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZXBpY2tlci1uYXZpZ2F0aW9uLnNjc3MnXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwibmdiLWRwLWFycm93XCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGluayBuZ2ItZHAtYXJyb3ctYnRuXCIgKGNsaWNrKT1cIm9uQ2xpY2tQcmV2KCRldmVudClcIiBbZGlzYWJsZWRdPVwicHJldkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgaTE4bi1hcmlhLWxhYmVsPVwiQEBuZ2IuZGF0ZXBpY2tlci5wcmV2aW91cy1tb250aFwiIGFyaWEtbGFiZWw9XCJQcmV2aW91cyBtb250aFwiXG4gICAgICAgICAgICAgIGkxOG4tdGl0bGU9XCJAQG5nYi5kYXRlcGlja2VyLnByZXZpb3VzLW1vbnRoXCIgdGl0bGU9XCJQcmV2aW91cyBtb250aFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5nYi1kcC1uYXZpZ2F0aW9uLWNoZXZyb25cIj48L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8bmdiLWRhdGVwaWNrZXItbmF2aWdhdGlvbi1zZWxlY3QgKm5nSWY9XCJzaG93U2VsZWN0XCIgY2xhc3M9XCJuZ2ItZHAtbmF2aWdhdGlvbi1zZWxlY3RcIlxuICAgICAgW2RhdGVdPVwiZGF0ZVwiXG4gICAgICBbZGlzYWJsZWRdID0gXCJkaXNhYmxlZFwiXG4gICAgICBbbW9udGhzXT1cInNlbGVjdEJveGVzLm1vbnRoc1wiXG4gICAgICBbeWVhcnNdPVwic2VsZWN0Qm94ZXMueWVhcnNcIlxuICAgICAgKHNlbGVjdCk9XCJzZWxlY3QuZW1pdCgkZXZlbnQpXCI+XG4gICAgPC9uZ2ItZGF0ZXBpY2tlci1uYXZpZ2F0aW9uLXNlbGVjdD5cblxuICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIiFzaG93U2VsZWN0XCIgbmdGb3IgbGV0LW1vbnRoIFtuZ0Zvck9mXT1cIm1vbnRoc1wiIGxldC1pPVwiaW5kZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJuZ2ItZHAtYXJyb3dcIiAqbmdJZj1cImkgPiAwXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibmdiLWRwLW1vbnRoLW5hbWVcIj5cbiAgICAgICAge3sgaTE4bi5nZXRNb250aEZ1bGxOYW1lKG1vbnRoLm51bWJlciwgbW9udGgueWVhcikgfX0ge3sgaTE4bi5nZXRZZWFyTnVtZXJhbHMobW9udGgueWVhcikgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm5nYi1kcC1hcnJvd1wiICpuZ0lmPVwiaSAhPT0gbW9udGhzLmxlbmd0aCAtIDFcIj48L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJuZ2ItZHAtYXJyb3cgcmlnaHRcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saW5rIG5nYi1kcC1hcnJvdy1idG5cIiAoY2xpY2spPVwib25DbGlja05leHQoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJuZXh0RGlzYWJsZWRcIlxuICAgICAgICAgICAgICBpMThuLWFyaWEtbGFiZWw9XCJAQG5nYi5kYXRlcGlja2VyLm5leHQtbW9udGhcIiBhcmlhLWxhYmVsPVwiTmV4dCBtb250aFwiXG4gICAgICAgICAgICAgIGkxOG4tdGl0bGU9XCJAQG5nYi5kYXRlcGlja2VyLm5leHQtbW9udGhcIiB0aXRsZT1cIk5leHQgbW9udGhcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJuZ2ItZHAtbmF2aWdhdGlvbi1jaGV2cm9uXCI+PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBOZ2JEYXRlcGlja2VyTmF2aWdhdGlvbiB7XG4gIG5hdmlnYXRpb24gPSBOYXZpZ2F0aW9uRXZlbnQ7XG5cbiAgQElucHV0KCkgZGF0ZTogTmdiRGF0ZTtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG1vbnRoczogTW9udGhWaWV3TW9kZWxbXSA9IFtdO1xuICBASW5wdXQoKSBzaG93U2VsZWN0OiBib29sZWFuO1xuICBASW5wdXQoKSBwcmV2RGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG5leHREaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgc2VsZWN0Qm94ZXM6IHt5ZWFyczogbnVtYmVyW10sIG1vbnRoczogbnVtYmVyW119O1xuXG4gIEBPdXRwdXQoKSBuYXZpZ2F0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8TmF2aWdhdGlvbkV2ZW50PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxOZ2JEYXRlPigpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpMThuOiBOZ2JEYXRlcGlja2VySTE4bikge31cblxuICBvbkNsaWNrUHJldihldmVudDogTW91c2VFdmVudCkge1xuICAgIChldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5mb2N1cygpO1xuICAgIHRoaXMubmF2aWdhdGUuZW1pdCh0aGlzLm5hdmlnYXRpb24uUFJFVik7XG4gIH1cblxuICBvbkNsaWNrTmV4dChldmVudDogTW91c2VFdmVudCkge1xuICAgIChldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5mb2N1cygpO1xuICAgIHRoaXMubmF2aWdhdGUuZW1pdCh0aGlzLm5hdmlnYXRpb24uTkVYVCk7XG4gIH1cbn1cbiJdfQ==