{"version":3,"sources":["webpack:///./node_modules/moment/locale/nl.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToArray.js.pre-build-optimizer.js","webpack:///./src/app/providers/services/datepicker/datepicker.service.ts","webpack:///./node_modules/rxjs/_esm5/internal/util/noop.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/se.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isNumeric.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/withLatestFrom.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isPromise.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/x-pseudo.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/from.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/bo.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/pt-br.js.pre-build-optimizer.js","webpack:///./src/app/providers/services/plan/planInvestments.service.ts","webpack:///./node_modules/rxjs/_esm5/internal/operators/switchMap.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/canReportError.js.pre-build-optimizer.js","webpack:///./src/app/providers/services/spreadsheet-file/spreadsheet-file.service.ts","webpack:///./node_modules/moment/locale/fil.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/hy-am.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ca.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/BehaviorSubject.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isFunction.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/finalize.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isArrayLike.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/fr-ca.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/nl-be.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/hi.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/TimeoutError.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/EmptyError.js.pre-build-optimizer.js","webpack:///./node_modules/@ng-bootstrap/ng-bootstrap/fesm5/ng-bootstrap.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/gu.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/en-ie.js.pre-build-optimizer.js","webpack:///./src/app/providers/services/utility/utility.service.ts","webpack:///./node_modules/moment/locale/ms.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/Notification.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/map.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/km.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/Observer.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/Observable.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/toSubscriber.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/et.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/en-in.js.pre-build-optimizer.js","webpack:///./node_modules/primeng/components/common/shared.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/using.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/si.js.pre-build-optimizer.js","webpack:///./src/app/providers/providers.module.ts","webpack:///./node_modules/moment/locale/pa-in.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/pt.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/zip.js.pre-build-optimizer.js","webpack:///./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.ngfactory.js.pre-build-optimizer.js","webpack:///./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.NgbAlert.html","webpack:///./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.ɵc.html","webpack:///./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.ɵd.html","webpack:///./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.ɵe.html","webpack:///./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.ɵf.html","webpack:///./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.NgbDatepicker.html","webpack:///./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.ɵn.html","webpack:///./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.ɵq.html","webpack:///./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.ɵr.html","webpack:///./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.NgbHighlight.html","webpack:///./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.ɵv.html","webpack:///./node_modules/rxjs/_esm5/internal/operators/catchError.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/gd.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/cv.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/uz-latn.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ml.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/takeLast.js.pre-build-optimizer.js","webpack:///./src/environments/environment.ts","webpack:///./node_modules/moment/locale/ja.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/is.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/fo.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/core/fesm5/core.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/es-do.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ar-ma.js.pre-build-optimizer.js","webpack:///./node_modules/primeng/components/table/table.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/eu.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/hostReportError.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/gom-latn.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/fr-ch.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/en-au.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/tr.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/VirtualTimeScheduler.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isObservable.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/partition.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/index.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/da.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/tl-ph.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/sr-cyrl.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/onErrorResumeNext.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/th.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/pairs.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/symbol/iterator.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/of.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/Subscriber.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/oc-lnc.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeTo.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/mt.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/empty.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/never.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/generate.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/be.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ar-ly.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ka.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/fromArray.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/common/fesm5/common.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ko.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/groupBy.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ku.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduled/scheduleArray.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/bs.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/lt.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/af.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/Subject.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/Immediate.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AsapAction.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AsapScheduler.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/asap.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/vi.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/me.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/uz.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/OuterSubscriber.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isObject.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/en-ca.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/en-gb.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/mr.js.pre-build-optimizer.js","webpack:///./src/app/pages/system/notfound/notfound.component.ts","webpack:///./node_modules/moment/locale/ne.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/zh-mo.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/tg.js.pre-build-optimizer.js","webpack:///./node_modules/primeng/components/utils/objectutils.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/first.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/cs.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ta.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/concatMap.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/kn.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/reduce.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ar-kw.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/lb.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./node_modules/rxjs/_esm5/internal/operators/share.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/ReplaySubject.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/hr.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/az.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/zh-hk.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/async.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/concatAll.js.pre-build-optimizer.js","webpack:///./src/app/providers/pipes/truncatecurrency/truncatecurrency.pipe.ts","webpack:///./node_modules/moment/locale/id.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ga.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ur.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ss.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/tet.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isDate.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/forkJoin.js.pre-build-optimizer.js","webpack:///./node_modules/primeng/components/button/button.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/es-us.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/filter.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/race.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/dv.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/tk.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/hu.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/sv.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/zh-cn.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/te.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/throwError.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ug-cn.js.pre-build-optimizer.js","webpack:///(webpack)/buildin/module.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/sd.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ms-my.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/router/fesm5/router.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/platform-browser/fesm5/platform-browser.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/eo.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/mergeAll.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/br.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/mi.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/mk.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/en-nz.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/nb.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/kk.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ar-tn.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/fromEvent.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/it.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/it-ch.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/fy.js.pre-build-optimizer.js","webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./node_modules/moment/locale/en-il.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/scan.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/concat.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/sw.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/combineLatest.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/sk.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/bindNodeCallback.js.pre-build-optimizer.js","webpack:///./src/app/providers/pipes/keephtml/keephtml.pipe.ts","webpack:///./node_modules/moment/locale/yo.js.pre-build-optimizer.js","webpack:///./src/app/pages/system/notfound/notfound.component.ngfactory.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/timer.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/forms/fesm5/forms.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/sl.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/fi.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ar-sa.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/Action.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/bg.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/my.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduled/scheduled.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isInteropObservable.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduled/scheduleObservable.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduled/schedulePromise.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isIterable.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduled/scheduleIterable.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/gl.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/config.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/es.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/animations/fesm5/animations.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isArray.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/http/fesm5/http.js.pre-build-optimizer.js","webpack:///./src/app/providers/models/user.model.ts","webpack:///./src/app/providers/services/user/user.service.ts","webpack:///./node_modules/rxjs/_esm5/internal/util/not.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/el.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/pl.js.pre-build-optimizer.js","webpack:///./src/app/providers/pipes/nullablecurrency/nullablecurrency.pipe.ts","webpack:///./node_modules/moment/locale/fa.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ar.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/bn.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/fromEventPattern.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/zh-tw.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/cy.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ru.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/defer.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/mn.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ky.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/bn-bd.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ro.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/identity.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/iif.js.pre-build-optimizer.js","webpack:///./node_modules/primeng/components/paginator/paginator.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/observeOn.js.pre-build-optimizer.js","webpack:///./node_modules/tslib/tslib.es6.js.pre-build-optimizer.js","webpack:///./node_modules/primeng/components/dropdown/dropdown.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isScheduler.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/takeUntil.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/fr.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/ar-dz.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/bm.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/startWith.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/merge.js.pre-build-optimizer.js","webpack:///./src/app/pages/system/index.ts","webpack:///./node_modules/@angular/router/router.ngfactory.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/router/router.d.ts.ɵEmptyOutletComponent.html","webpack:///./node_modules/rxjs/_esm5/internal/observable/bindCallback.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/mergeMap.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/Subscription.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/gom-deva.js.pre-build-optimizer.js","webpack:///./src/app/providers/services/participant/participant.service.ts","webpack:///./node_modules/moment/locale/uk.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/de-at.js.pre-build-optimizer.js","webpack:///./node_modules/primeng/components/dom/domhandler.js.pre-build-optimizer.js","webpack:///./src/app/providers/services/modal/modal.service.ts","webpack:///./node_modules/rxjs/_esm5/internal/Scheduler.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/lo.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/AsyncSubject.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/en-sg.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/common/fesm5/http.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/take.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/de.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameAction.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameScheduler.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/animationFrame.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/throwIfEmpty.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/tzm-latn.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/jv.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/es-mx.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/de-ch.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/nn.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/SubjectSubscription.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/lv.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/range.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/delay.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/last.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/tzm.js.pre-build-optimizer.js","webpack:///./node_modules/moment/moment.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/he.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/tap.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/symbol/observable.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/interval.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/multicast.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/pipe.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/refCount.js.pre-build-optimizer.js","webpack:///./node_modules/hammerjs/hammer.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/sq.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/tzl.js.pre-build-optimizer.js","webpack:///./node_modules/moment/locale/tlh.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/innerSubscribe.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/every.js.pre-build-optimizer.js","webpack:///./src/app/app.module.ts","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/app.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/app.component.html","webpack:///./node_modules/@angular/animations/fesm5/browser.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/platform-browser/fesm5/animations.js.pre-build-optimizer.js","webpack:///./node_modules/ng2-dnd/ng2-dnd.es5.js.pre-build-optimizer.js","webpack:///./src/app/app-routing/app-routing.module.ts","webpack:///./src/app/app.module.ngfactory.js.pre-build-optimizer.js","webpack:///./src/main.ts","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/QueueAction.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/QueueScheduler.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/queue.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/InnerSubscriber.js.pre-build-optimizer.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js.pre-build-optimizer.js","webpack:///./src/app/providers/services/plan/plan.service.ts","webpack:///./node_modules/moment/locale/sr.js.pre-build-optimizer.js"],"names":["moment","monthsShortWithDots","split","monthsShortWithoutDots","monthsParse","monthsRegex","defineLocale","months","monthsShort","m","format","test","month","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","weekdays","weekdaysShort","weekdaysMin","weekdaysParseExact","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","s","ss","mm","h","hh","d","dd","w","ww","M","MM","y","yy","dayOfMonthOrdinalParse","ordinal","number","week","dow","doy","factory","subscribeToArray","array","subscriber","i","len","length","closed","next","complete","datepipe","today","Date","ValidateSelection","_startDate","_endDate","earliestBeginDate","minDate","maxDate","isContractorStm","errorCondition","this","checkErrorCondition","result","isError","errorMessage","parseErrorMessage","console","log","condition","beginDate","transform","getFormattedDate","date","dateString","toDateString","dateArray","substring","indexOf","SetStartDate","selectedDate","detailedAsofdate","participationDate","theStartDate","toString","theDetailedAsofDate","theParticipationDate","startDate","SetDate","endDate","daysBack","latestEndDate","ParseDate","toDate","undefined","setMonth","getUTCMonth","setUTCDate","getUTCDate","dateStr","stripedDateStr","replace","dateInt","parseInt","toLocaleDateString","noop","isNumeric","val","parseFloat","withLatestFrom","args","_i","arguments","source","project","pop","lift","WithLatestFromOperator","observables","prototype","call","subscribe","WithLatestFromSubscriber","_super","destination","_this","toRespond","values","Array","push","observable","add","notifyNext","_outerValue","innerValue","outerIndex","found","splice","notifyComplete","_next","value","concat","_tryProject","apply","err","error","isPromise","then","monthsParseExact","b","from","input","scheduler","symbolMap","1","2","3","4","5","6","7","8","9","0","numberMap","preparse","string","match","postformat","meridiemParse","meridiemHour","hour","meridiem","minute","isLower","day","invalidDate","fromObject","origin","http","getInvestmentSummaryForFundInfo","asOfDate","post","pipe","response","getPlanFundLifeStyles","switchMap","resultSelector","a","ii","SwitchMapOperator","SwitchMapSubscriber","index","_innerSub","innerSubscription","unsubscribe","innerSubscriber","_complete","_unsubscribe","isStopped","canReportError","observer","newFileUploaded","newFile","uploadedFile","removeUploadedFile","getUploadedFile","standalone","isPM","period","isFormat","ll","lll","llll","hours","output","BehaviorSubject","_value","Object","defineProperty","get","getValue","enumerable","configurable","_subscribe","subscription","hasError","thrownError","isFunction","x","finalize","callback","FinallyOperator","FinallySubscriber","isArrayLike","TimeoutError","TimeoutErrorImpl","Error","message","name","create","EmptyError","EmptyErrorImpl","toInteger","getValueInRange","max","min","Math","isString","isNumber","isNaN","isInteger","isFinite","floor","isDefined","padNumber","slice","hasClassName","element","className","Element","closest","matches","msMatchesSelector","webkitMatchesSelector","el","document","documentElement","contains","parentElement","parentNode","nodeType","NgbAccordionConfig","closeOthers","ngInjectableDef","token","providedIn","NgbPanelToggle","accordion","panel","set","NgbPanelHeader","templateRef","NgbAccordion","config","activeIds","destroyOnHide","panelChange","type","closeOtherPanels","isExpanded","panelId","expand","_changeOpenState","_findPanelById","expandAll","panels","first","forEach","collapse","collapseAll","toggle","isOpen","ngAfterContentChecked","disabled","id","_closeOthers","_updateActiveIds","nextState","defaultPrevented_1","emit","preventDefault","find","p","filter","map","NgbAccordionModule","forRoot","ngModule","NgbAlertConfig","dismissible","NgbAlert","_renderer","_element","close","closeHandler","ngOnChanges","changes","typeChange","firstChange","removeClass","nativeElement","previousValue","addClass","currentValue","ngOnInit","NgbAlertModule","NgbButtonsModule","NgbCarouselConfig","interval","wrap","keyboard","pauseOnHover","showNavigationArrows","showNavigationIndicators","NgbCarousel","_platformId","_ngZone","_cd","_destroy$","_start$","_stop$","slide","ngAfterContentInit","runOutsideAngular","slides","run","markForCheck","activeSlide","_getSlideById","activeId","ngOnDestroy","isFirstChange","select","slideId","_cycleToSelected","_getSlideEventDirection","prev","_getPrevSlide","NgbSlideEventDirection","RIGHT","_getNextSlide","LEFT","pause","cycle","slideIdx","direction","selectedSlide","current","currentActiveSlideId","nextActiveSlideId","_getSlideIdxById","toArray","currentSlideId","slideArr","currentSlideIdx","NgbCarouselModule","NgbCollapse","collapsed","NgbCollapseModule","NgbDate","year","equals","other","before","after","fromJSDate","jsDate","getFullYear","getMonth","getDate","toJSDate","getTime","setFullYear","NGB_DATEPICKER_CALENDAR_FACTORY","NgbCalendarGregorian","NgbCalendar","getDaysPerWeek","getMonths","getWeeksPerMonth","getNext","setDate","getPrev","getWeekday","getDay","getWeekNumber","firstDayOfWeek","time","round","getToday","isValid","isChangedDate","dateComparator","isChangedMonth","checkDateInRange","isDateSelectable","state","markDisabled","NgbDatepickerI18n","getDayNumerals","getWeekNumerals","weekNumber","getYearNumerals","locale","NgbDatepickerI18nDefault","_locale","weekdaysStartingOnSunday","Standalone","Short","_weekdaysShort","_monthsShort","Abbreviated","_monthsFull","Wide","getWeekdayShortName","weekday","getMonthShortName","getMonthFullName","getDayAriaLabel","NgbDatepickerService","_calendar","_i18n","_model$","_select$","_state","displayMonths","focusVisible","navigation","outsideDays","prevDisabled","nextDisabled","selectBoxes","years","model","dayTemplateData","_nextState","toValidDate","focus","focusDate","focusMove","focusSelect","emitEvent","open","firstDate","options","defaultValue","ngbDate","patch","newState","_updateState","_patchContexts","weeks","days","context","focused","tabindex","selected","hidden","lastDate","prevDate","assign","checkMinBeforeMax","i18n","force","monthsToReuse","_","reusedIndex","findIndex","calendarToday","daysPerWeek","firstMonthDate","dayOfWeek","getFirstViewDate","weekObject","newDate","nextDate","ariaLabel","contextUserData","dayObject","$implicit","data","currentMonth","buildMonth","shift","buildMonths","yearChanged","monthChanged","start","e","generateSelectBoxYears","generateSelectBoxMonths","nextMonthDisabled","Key","Tab","Enter","Escape","Space","PageUp","PageDown","End","Home","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","NgbDatepickerKeyMapService","_service","model$","_minDate","_maxDate","_firstViewDate","_lastViewDate","processKey","event","which","shiftKey","stopPropagation","NavigationEvent","PREV","NEXT","NgbDatepickerConfig","showWeekdays","showWeekNumbers","NGB_DATEPICKER_DATE_ADAPTER_FACTORY","NgbDateStructAdapter","NgbDateAdapter","fromModel","toModel","NgbDatepicker","_keyMapService","_elementRef","_ngbDateAdapter","_destroyed$","navigate","onChange","onTouched","select$","oldDate","navigationPrevented","newSelectedDate","newFocusedDate","oldFocusedDate","_controlValue","onStable","asObservable","elementToFocus","querySelector","navigateTo","ngAfterViewInit","focusIns$","_monthsEl","focusOuts$","_a","relatedTarget","target","onDateSelect","onKeyDown","onNavigateDateSelect","onNavigateEvent","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","writeValue","NgbDatepickerMonthView","doSelect","NgbDatepickerNavigation","isContainedIn","some","item","matchesSelectorIfAny","selector","iOS","ngbAutoClose","zone","closed$","insideElements","ignoreElements","insideSelector","escapes$","mouseDowns$","MouseEvent","button","closeableClicks$","navigator","userAgent","FOCUSABLE_ELEMENTS_SELECTOR","join","getFocusableBoundaryElements","list","querySelectorAll","tabIndex","placementSeparator","positionService","Positioning","getAllStyles","window","getComputedStyle","getStyle","prop","isStaticPositioned","offsetParent","offsetParentEl","position","elPosition","parentOffset","width","height","top","bottom","left","right","getBoundingClientRect","offset","clientTop","clientLeft","elBcr","viewportOffset","pageYOffset","pageXOffset","elOffset","offsetHeight","offsetWidth","positionElements","hostElement","targetElement","placement","appendToBody","_b","placementPrimary","_c","placementSecondary","hostElPosition","targetElStyles","marginTop","marginBottom","marginLeft","marginRight","topPosition","leftPosition","style","targetElBCR","html","windowHeight","innerHeight","clientHeight","windowWidth","innerWidth","clientWidth","baseClass","e_1","placementVals","isArray","allowedPlacements","classList","addClassesToTarget","targetPlacement","primary","secondary","classes","classname","placementToRemove","remove","hasAuto","obj","search","testPlacement","isInViewport","placementVals_1","placementVals_1_1","done","addedClasses","e_1_1","return","NgbDatepickerDayView","isMuted","NgbDatepickerNavigationSelect","changeMonth","changeYear","NgbDateNativeAdapter","_fromNativeDate","_toNativeDate","NgbDatepickerModule","NgbDropdownModule","NgbModalConfig","backdrop","ContentRef","nodes","viewRef","componentRef","PopupService","_type","_injector","_viewContainerRef","_componentFactoryResolver","_applicationRef","content","_windowRef","_contentRef","_getContentRef","createComponent","resolveComponentFactory","hostView","detachView","destroy","createEmbeddedView","attachView","rootNodes","createText","ScrollBar","_document","compensate","_isPresent","_adjustBody","_getWidth","body","userSetPadding","paddingRight","paddingAmount","rect","measurer","createElement","appendChild","removeChild","NgbModalBackdrop","NgbActiveModal","dismiss","reason","NgbModalRef","_windowCmptRef","_backdropCmptRef","_beforeDismiss","instance","dismissEvent","Promise","resolve","reject","_resolve","_reject","_removeModalElements","_dismiss","windowNativeEl","location","backdropNativeEl","ModalDismissReasons","BACKDROP_CLICK","ESC","NgbModalWindow","_elRef","backdropClick","$event","escKey","defaultPrevented","_elWithFocus","activeElement","autoFocusable","firstFocusable","elWithFocus","NgbModalStack","_scrollBar","_rendererFactory","_activeWindowCmptHasChanged","_ariaHiddenValues","Map","_backdropAttributes","_modalRefs","_windowAttributes","_windowCmpts","activeWindowCmpt","stopFocusTrap$","refocusOnClick","lastFocusedElement$","tabEvent","focusedElement","last","arr","lastFocusedElement","ngbFocusTrap","_revertAriaHidden","_setAriaHidden","moduleCFR","contentInjector","containerEl","container","renderer","createRenderer","revertPaddingForScrollBar","removeBodyClass","activeModal","contentRef","injector","backdropCmptRef","_attachBackdrop","windowCmptRef","_attachWindowComponent","ngbModalRef","beforeDismiss","_registerModalRef","_registerWindowCmpt","_applyWindowOptions","_applyBackdropOptions","dismissAll","hasOpenModals","windowInstance","optionName","backdropInstance","_createFromTemplateRef","_createFromString","_createFromComponent","component","createTextNode","contentCmptFactory","modalContentInjector","providers","provide","useValue","parent","children","sibling","nodeName","getAttribute","setAttribute","removeAttribute","clear","unregisterModalRef","ngbWindowCmpt","onDestroy","NgbModal","_moduleCFR","_modalStack","_config","combinedOptions","NgbModalModule","NgbPaginationConfig","boundaryLinks","directionLinks","ellipses","maxSize","pageSize","rotate","NgbPagination","pageCount","pages","page","pageChange","size","hasPrevious","hasNext","previousDisabled","selectPage","pageNumber","_updatePages","isEllipsis","_applyEllipses","end","unshift","_applyRotation","leftOffset","_applyPagination","ceil","_setPageInRange","newPageNo","prevPageNo","collectionSize","newPage","NgbPaginationModule","Trigger","isManual","DEFAULT_ALIASES","delayOrNoop","NgbPopoverConfig","autoClose","triggers","disablePopover","openDelay","closeDelay","nextId$3","NgbPopoverWindow","isTitleTemplate","title","NgbPopover","componentFactoryResolver","viewContainerRef","_changeDetector","shown","_ngbPopoverWindowId","popoverClass","_popupService","_zoneSubscription","_isDisabled","ngbPopover","popoverTitle","changeDetectorRef","detectChanges","_unregisterListenersFn","isOpenedFn","openFn","closeFn","parsedTriggers","aliases","trimmedTriggers","trim","trigger","triggerPair","alias","manualTriggers","parseTriggers","listeners","toggleFn","listen","unsubscribeFn","observeTriggers","input$","pending","filteredInput$","currentlyOpen","delayedOpen$","delayedClose$","triggerDelay","listenToTriggers","bind","NgbPopoverModule","NgbProgressbarConfig","animated","striped","showValue","NgbProgressbar","getPercentValue","NgbProgressbarModule","NgbRatingConfig","readonly","resettable","NgbRating","_changeDetectorRef","contexts","hover","leave","rateChange","ariaValueText","nextRate","enter","handleBlur","handleClick","update","rate","handleKeyDown","v","k","fill","reset","internalChange","newRate","_getFillValue","diff","toFixed","nextValue","NgbRatingModule","NgbTabsetConfig","justify","orientation","NgbTabset","tabChange","justifyClass","tabId","selectedTab","_getTabById","nextId","activeTab","tabs","tabsWithId","tab","NgbTabsetModule","NgbTime","second","changeHour","step","updateHour","NaN","changeMinute","updateMinute","changeSecond","updateSecond","checkSecs","NgbTimepickerConfig","meridian","spinners","seconds","hourStep","minuteStep","secondStep","readonlyInputs","NGB_DATEPICKER_TIME_ADAPTER_FACTORY","NgbTimeStructAdapter","NgbTimeAdapter","NgbTimepicker","_ngbTimeAdapter","_hourStep","_minuteStep","_secondStep","structValue","propagateModelChange","newVal","enteredHour","toggleMeridian","formatHour","formatMinSec","touched","NgbTimepickerModule","NgbTooltipWindow","NgbTooltipModule","NgbHighlight","highlightClass","resultStr","resultTerms","term","regexStr","parts","RegExp","NgbTypeaheadWindow","activeIdx","focusFirst","formatter","selectEvent","activeChangeEvent","hasActive","results","getActive","markActive","_activeChanged","resetActive","ARIA_LIVE_DELAY","getLiveElement","lazyCreate","Live","_delay","say","delay$$1","textContent","setText","setTimeout","NgbTypeaheadConfig","editable","showHint","nextWindowId","NgbTypeahead","ngZone","_live","_closed$","autocomplete","selectItem","popupId","_onTouched","_onChange","_valueChanges","_resubscribeTypeahead","isPopupOpen","processedResults$","_inputValueBackup","ngbTypeahead","userInput$","_subscription","_subscribeToUserInput","_closePopup","_unsubscribeFromUserInput","_writeInputValue","_formatItemForInput","setProperty","dismissPopup","_showHint","_selectResult","_openPopup","_selectResultClosePopup","activeDescendant","userInputLowerCase","toLowerCase","formattedVal","substr","inputFormatter","resultFormatter","resultTemplate","count","NgbTypeaheadModule","NgbModule","analytics","currentPlan","pageTitle","participantWeb","sponserWeb","requestUrl","eventAction","CurrentPlan","PageTitle","ParticipantWeb","SponsorWeb","RequestUrl","EventAction","GetRateOfReturnFAQs","minutes","NotificationKind","Notification","kind","hasValue","observe","do","accept","nextOrObserver","toObservable","createNext","undefinedValueNotification","createError","createComplete","completeNotification","thisArg","TypeError","MapOperator","MapSubscriber","empty","useDeprecatedSynchronousErrorHandling","Observable","_isScalar","operator","observerOrNext","sink","Subscriber","rxSubscriber","toSubscriber","syncErrorThrowable","_trySubscribe","syncErrorThrown","syncErrorValue","warn","promiseCtor","getPromiseCtor","operations","toPromise","processRelativeTime","withoutSuffix","key","isFuture","exports","core_1","common_1","core_2","Header","__decorate","Component","template","Footer","PrimeTemplate","getType","Input","__metadata","String","Directive","host","Column","filterType","exportable","resizable","sortFunction","EventEmitter","templates","headerTemplate","bodyTemplate","footerTemplate","filterTemplate","editorTemplate","Boolean","Number","Output","ContentChildren","QueryList","ContentChild","TemplateRef","Row","HeaderColumnGroup","FooterColumnGroup","SharedModule","NgModule","imports","CommonModule","declarations","using","resourceFactory","observableFactory","resource","ProvidersModule","ObjectUnsubscribedError","ObjectUnsubscribedErrorImpl","zip","ZipOperator","ZipSubscriber","iterators","active","StaticArrayIterator","StaticIterator","ZipBufferIterator","iterator","stillUnsubscribed","notifyInactive","checkIterators","shouldComplete","hasCompleted","_tryresultSelector","nextResult","buffer","isComplete","RenderType_NgbAlert","encapsulation","styles","View_NgbAlert_1","_l","ad","View_NgbAlert_0","View_NgbAlert_Host_0","_ck","_v","NgbAlertNgFactory","RenderType_ɵc","View_ɵc_2","View_ɵc_3","View_ɵc_1","View_ɵc_6","View_ɵc_9","View_ɵc_8","View_ɵc_7","View_ɵc_5","View_ɵc_4","View_ɵc_0","RenderType_ɵd","View_ɵd_0","RenderType_ɵe","View_ɵe_1","View_ɵe_4","View_ɵe_5","View_ɵe_3","View_ɵe_2","View_ɵe_0","_co","RenderType_ɵf","View_ɵf_1","View_ɵf_2","View_ɵf_0","RenderType_NgbDatepicker","View_NgbDatepicker_1","View_NgbDatepicker_2","View_NgbDatepicker_4","View_NgbDatepicker_3","View_NgbDatepicker_5","View_NgbDatepicker_0","View_NgbDatepicker_Host_0","p0_0","NgbDatepickerNgFactory","dayTemplate","RenderType_ɵn","View_ɵn_2","View_ɵn_3","View_ɵn_1","View_ɵn_0","View_ɵn_Host_0","ɵnNgFactory","RenderType_ɵq","View_ɵq_0","View_ɵq_Host_0","tooltipClass","ɵqNgFactory","RenderType_ɵr","View_ɵr_1","View_ɵr_3","View_ɵr_2","View_ɵr_0","View_ɵr_Host_0","en","ɵrNgFactory","RenderType_NgbHighlight","View_NgbHighlight_2","View_NgbHighlight_3","View_NgbHighlight_1","View_NgbHighlight_0","RenderType_ɵu","View_ɵu_0","View_ɵu_Host_0","backdropClass","ɵuNgFactory","RenderType_ɵv","View_ɵv_0","View_ɵv_Host_0","windowClass","ariaLabelledBy","ɵvNgFactory","centered","catchError","CatchOperator","caught","CatchSubscriber","err2","_unsubscribeAndRecycle","exec","takeLast","TakeLastOperator","total","TakeLastSubscriber","ring","idx","environment","production","apiBaseURL","eras","since","narrow","abbr","until","eraYearOrdinalRegex","eraYearOrdinalParse","l","now","plural","n","translate","AsyncScheduler","SchedulerAction","delegate","actions","scheduled","schedule","work","delay","flush","action","execute","getClosureSafeProperty","objWithPropertyToExtract","fillProperties","hasOwnProperty","NG_COMPONENT_DEF","ngComponentDef","NG_DIRECTIVE_DEF","ngDirectiveDef","NG_INJECTABLE_DEF","NG_INJECTOR_DEF","ngInjectorDef","NG_PIPE_DEF","ngPipeDef","NG_MODULE_DEF","ngModuleDef","NG_BASE_DEF","ngBaseDef","NG_ELEMENT_ID","__NG_ELEMENT_ID__","defineInjectable","opts","defineInjector","getInjectableDef","getInjectorDef","InjectionToken","_desc","ngMetadataName","ANNOTATIONS","PARAMETERS","PROP_METADATA","makeDecorator","props","parentClass","additionalProcessing","typeFn","metaCtor","makeMetadataCtor","DecoratorFactory","annotationInstance","cls","annotationCls","propName","makeParamDecorator","ParamDecoratorFactory","ParamDecorator","annotation","unusedKey","parameters","makePropDecorator","PropDecoratorFactory","decoratorInstance","PropDecorator","constructor","meta","ANALYZE_FOR_ENTRY_COMPONENTS","Attribute","attributeName","Query","isViewQuery","descendants","ViewChildren","ViewChild","ChangeDetectionStrategy","ChangeDetectorStatus","isDefaultChangeDetectionStrategy","changeDetectionStrategy","Default","__window","__self","self","WorkerGlobalScope","_global","global","promise","_symbolIterator","getSymbolIterator","Symbol_1","keys","getOwnPropertyNames","scheduleMicroTask","Zone","looseIdentical","stringify","overriddenName","res","newLineIndex","__forward_ref__","forwardRef","forwardRefFn","resolveForwardRef","resolveComponentResources","resourceResolver","urlFetches","urlMap","cachedResourceResolve","url","resp","unwrapResponse","componentResourceResolutionQueue","templateUrl","styleUrls","styleOffset","styleUrl","all","Set","componentNeedsResolution","text","ViewEncapsulation","EMPTY_OBJ","EMPTY_ARRAY","_renderCompCount","defineComponent","componentDefinition","typePrototype","declaredInputs","def","providersResolver","consts","vars","hostBindings","contentQueries","contentQueriesRefresh","attributes","inputs","outputs","exportAs","onInit","doCheck","ngDoCheck","afterContentInit","afterContentChecked","afterViewInit","afterViewChecked","ngAfterViewChecked","onPush","changeDetection","OnPush","directiveDefs","pipeDefs","selectors","viewQuery","features","Emulated","directiveTypes","directives","feature","pipeTypes","pipes","invertObject","extractDirectiveDef","extractPipeDef","getComponentDef","getDirectiveDef","getPipeDef","defineNgModule","bootstrap","transitiveCompileScopes","newLookup","minifiedKey","publicName","declaredName","defineBase","baseDefinition","defineDirective","definePipe","pipeDef","pure","getNgModuleDef","throwNotFound","NodeInjectorFactory","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","FactoryPrototype","stringify$1","loadInternal","view","readElementValue","getNativeByIndex","lView","getNativeByTNode","tNode","getTNode","getComponentViewByIndex","nodeIndex","slotValue","isContentQueryHost","flags","isComponent","isComponentDef","isLContainer","isRootView","getRootView","readPatchedLView","getRootContext","viewOrComponent","readPatchedData","hasParentInjector","parentLocation","getParentInjectorIndex","getParentInjectorViewOffset","getParentInjectorView","startView","viewOffset","parentView","defaultScheduler","requestAnimationFrame","addAllToArray","items","findComponentView","rootTNode","getCompilerFacade","globalNg","ɵcompilerFacade","_injectImplementation","elementDepthCount","Inject","Optional","Self","SkipSelf","Host","InjectFlags","_currentInjector","setCurrentInjector","former","setInjectImplementation","impl","previous","injectInjectorOnly","injectRootLimpMode","inject","notFoundValue","injectableDef","injectArgs","types","arg","j","queueInitHooks","tView","initHooks","checkHooks","queueLifecycleHooks","firstTemplatePass","directiveStart","directiveEnd","queueContentHooks","queueViewHooks","queueDestroyHooks","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","executeInitHooks","currentView","checkNoChangesMode","executeHooks","allHooks","hooksToCall","callHooks","bindingsEnabled","previousOrParentTNode","isParent","currentDirectiveDef","setCurrentDirectiveDef","enableBindings","disableBindings","getLView","restoreView","viewToRestore","contextLView","getPreviousOrParentTNode","setPreviousOrParentTNode","setTNodeAndViewData","getIsParent","setIsParent","isCreationMode","getCheckNoChangesMode","setCheckNoChangesMode","mode","getFirstTemplatePass","setFirstTemplatePass","bindingRootIndex","getBindingRoot","setBindingRoot","enterView","newView","hostTNode","oldView","bindingStartIndex","nextContextImpl","level","nestingLevel","walkUpViews","leaveView","includeViewProviders","setIncludeViewProviders","oldValue","nextNgElementId","getOrCreateNodeInjectorForNode","existingInjectorIndex","getInjectorIndex","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","parentIndex","parentLView","parentData","footer","diPublicInInjector","charCodeAt","bloomBit","BLOOM_SIZE","mask","b6","b5","tData","bloomAdd","injectAttributeImpl","attrNameToInject","attrs","attrName","getOrCreateInjectable","bloomHash","tokenId","bloomHashBitOrFactory","savePreviousOrParentTNode","saveLView","previousTView","hostTElementNode","shouldSearchParent","bloomHasToken","searchTokensOnInjector","NOT_FOUND","moduleInjector","currentTView","injectableIdx","locateDirectiveOrProvider","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","endIndex","providerTokenOrDef","dirDef","lData","getPrototypeOf","previousIncludeViewProviders","previousInjectImplementation","injectorView","isFirstHostTNode","NodeInjector","_tNode","_lView","getFactoryOf","typeAny","getInheritedFactory","t","getLContext","mpValue","findViaComponent","isDirectiveInstance","directiveInstance","firstChild","directiveIndexEnd","traverseNextElement","findViaDirective","getDirectivesAtNodeIndex","findViaNativeElement","existingCtx","native","createLContext","attachPatchData","rElement","parent_1","parentContext","localRefs","getComponentViewByInstance","componentInstance","child","componentIndices","components","elementComponentIndex","includeComponents","directiveStartIndex","getComponent","loadLContextFromNode","getComponentAtNodeIndex","getContext","getViewComponent","loadLContext","getRootContext$1","componentOrView","getRootView$1","getRootComponents","getInjector","getDirectives","throwOnNotFound","getHostElement","directive","node","Node","isBrowserEvents","listener","useCapture","getListeners","lCleanup","tCleanup","cleanup","firstParam","secondParam","name_1","listenerElement","useCaptureOrIndx","sort","sortListeners","CAMEL_CASE_REGEXP","normalizeDebugBindingValue","devModeEqual","isListLikeIterableA","isListLikeIterable","isListLikeIterableB","comparator","iterator1","iterator2","item1","item2","areIterablesEqual","WrappedValue","wrapped","unwrap","isWrapped","SimpleChange","isJsObject","o","throwMultipleComponentError","tagName","NO_CHANGE","updateBinding","bindingIndex","getBinding","bindingUpdated","bindingUpdated2","exp1","exp2","different","bindingUpdated3","exp3","bindingUpdated4","exp4","RendererStyleFlags3","isProceduralRenderer","domRendererFactory3","rendererType","getParentNative","getHostNative","getFirstParentNative","getLContainer","embeddedView","containerHostIndex","getContainerRenderParent","tViewNode","projectionNodeStack","walkTNodeTree","viewToWalk","renderParent","beforeNode","projectionNodeIndex","nextTNode","executeNodeAction","nodeOrContainer","lContainer","componentView","head","projection","insertBefore","destroyNode","addRemoveViewFromContainer","insertMode","insertView","containerIndex","views","removeIndex","detached","viewToDetach","removeView","containerHost","destroyLView","getLViewChild","childIndex","rootView","cleanUpView","viewOrContainer","getParentState","destroyViewTree","executeOnDestroys","pipeDestroyHooks","executePipeOnDestroys","useCaptureOrSubIdx","removeEventListener","cleanupFn","removeListeners","getRenderParent","canInsertNativeNode","nativeParentNode","tNodeParent","getHighestElementContainer","currentNode","viewTNode","canInsertNativeChildOfView","canInsertNativeChildOfElement","nativeInsertBefore","childEl","childTNode","parentEl","parentTNode","getBeforeNodeForView","ngContainer","containerNative","parentNative","appendProjectedNode","projectedTNode","tProjectionNode","projectionView","ngContainerChildTNode","hasTagAndTypeMatch","currentSelector","isProjectionMode","isNodeMatchingSelector","nodeClassAttrVal","cssClassToMatch","nodeClassesLen","matchIndex","matchEndIdx","nodeAttrs","selectOnlyMarkerIdx","skipToNextSelector","isPositive","attrIndexInNode","findAttrIndexInNode","nodeAttrValue","selectorAttrValue","selectOnlyMode","maybeAttrName","isNodeMatchingSelectorList","matchingSelectorIndex","textSelectors","ngProjectAsAttrVal","ngProjectAsAttrIdx","getProjectAsAttrValue","bindPlayerFactory","factoryFn","BoundPlayerFactory","CorePlayerHandler","_players","flushPlayers","player","play","queuePlayer","createEmptyStylingContext","sanitizer","initialStyles","initialClasses","getStylingContext","viewData","storageIndex","wrapper","stylingTemplate","templateStyleContext","allocStylingContext","isAnimationProp","addPlayerInternal","playerContext","rootContext","playerContextIndex","ref","addEventListener","playerHandler","getPlayerContext","stylingContext","allocPlayerContext","hasClassInput","initializeStaticContext","attr","patchInitialStylingValue","initialStyling","existingValue","renderInitialStylingValues","initialStylingValues","isEntryClassBased","setClass","setStyle","getMatchingBindingIndex","bindingName","getProp","_updateSingleStylingValue","isClassBased","directiveRef","currentDirectiveOwner","newDirectiveOwner","directiveIndex","getDirectiveIndexFromRegistry","singleIndex","singlePropOffsetRegistryIndex","offsets","getSinglePropIndexValue","currValue","currFlag","getPointers","currDirective","getDirectiveIndexFromEntry","hasValueChanged","isClassBased_1","playerBuilder","ClassAndStylePlayerBuilder","value_1","currPlayerIndex","getPlayerBuilderIndex","playerBuildersAreDirty","playerBuilderIndex","hasPlayerBuilderChanged","newIndex","setPlayerBuilder","setPlayerBuilderIndex","getStyleSanitizer","sanitizeYes","setSanitizeFlag","setValue","indexForMulti","getMultiOrSingleIndex","valueForMulti","multiDirty","singleDirty","valueExists","setDirty","setDirectiveDirty","setContextDirty","setContextPlayersDirty","store","DashCase","removeStyle","removeProperty","isDirtyYes","adjustedIndex","isDirty","isClassBasedValue","isSanitizable","pointers","configFlag","staticIndex","dynamicIndex","getInitialValue","flag","getInitialIndex","getMultiStartIndex","setProp","builder","insertionIndex","playerIndex","directiveOwnerPointers","getPlayerBuilder","setFlag","limitToSingleClasses","findEntryPositionByProp","startIndex","swapMultiContextEntries","indexA","indexB","tmpValue","tmpProp","tmpFlag","tmpPlayerBuilderIndex","flagA","flagB","singleIndexA","_flag","singleIndexB","insertNewMultiProperty","classBased","doShift","indexStartPosition","initialIndexForSingle","updateSinglePointerValues","prepareInitialFlag","entryIsClassBased","initialIndex","getInitialStylingValuesIndexOf","_values","_dirty","_factory","buildPlayer","currentPlayer","isFirstRender","getDirectiveRegistryValuesIndexOf","keyValues","dirs","dirtyYes","getInitialClassNameValue","initialClassValues","_CLEAN_PROMISE","refreshDescendantViews","container_1","dynamicViewData","renderEmbeddedTemplate","refreshDynamicEmbeddedViews","directiveDefIdx","refreshContentQueries","expandoInstructions","expandoStartIndex","currentDirectiveIndex","currentElementIndex","instruction","setHostBindings","componentTView","syncViewWithBlueprint","checkView","refreshChildComponents","createLView","rendererFactory","createNodeAtIndex","createTNode","createViewNode","allocExpando","viewToRender","_isParent","_previousOrParentTNode","tickRootContext","namespaceHTML","getRenderFlags","nextContext","renderComponentOrTemplate","templateFn","normalExecutionPath","begin","_currentNamespace","namespaceSVG","namespaceMathML","elementStart","elementEnd","elementContainerStart","createComment","createDirectivesAndLocals","elementContainerEnd","currentQueries","addNode","elementCreate","hasStyling","setUpAttributes","inputData","initializeTNodeInputs","renderInitialStylesAndClasses","overriddenRenderer","rendererToUse","createElementNS","localRefExtractor","exportsMap","initNodeFlags","generateExpandoInstructionBlock","baseResolveDirective","saveNameToExportMap","localNames","cacheMatchingLocalNames","resolveDirectives","registry","directiveRegistry","findDirectiveMatches","addComponentLogic","postProcessDirective","instantiateAllDirectives","expando","previousExpandoLength","invokeDirectivesHostBindings","localIndex","saveResolvedLocalsInData","getOrCreateTView","ngPrivateData","createTView","viewIndex","initialViewLength","createViewBlueprint","pipeRegistry","isProc","namespaceURI","attrName_1","attrVal","setAttributeNS","locateHostElement","elementOrSelector","defaultRenderer","selectRootElement","eventName","listenerFn","lCleanupIndex","getCleanup","wrappedListener","returnValue","wrapListenerWithPreventDefault","generatePropertyAliases","propsLength","setInputsForProperty","elementAttribute","element_1","strValue","elementProperty","nativeOnly","elementPropertyInternal","componentHostSyntheticProperty","loadComponentRenderer","loadRendererFn","dataValue","childComponentLView","markDirtyIfOnPush","tViews","tParent","initialInputs","propStore","isInput","defs","directiveDef","propertyAliasMap","internalName","elementStyling","classBindingNames","styleBindingNames","styleSanitizer","onlyProcessSingleClasses","directiveRefs","nextOffsetInsertionIndex","detectedIndex","findOrPatchDirectiveIntoRegistry","singlePropOffsetValues","totalCurrentClassBindings","totalCurrentStyleBindings","stylesOffset","singleClassesStartIndex","multiStylesStartIndex","multiClassesStartIndex","currentSinglePropsLength","insertionOffset","filteredStyleBindingNames","i_1","singlePropIndex","filteredClassBindingNames","i_2","name_2","totalStyles","totalClasses","totalNewEntries","i_3","isMultiBased","singleOrMultiIndex","i_4","i_5","i_6","multiIndex","initialValuesToLookup","indexForInitial","initialFlag","updateContextWithBindings","elementHostAttrs","patchContextWithStaticAttrs","elementStylingApply","rootOrView","classesStore","stylesStore","totalPlayersQueued","targetDirectiveIndex","isContextDirty","isDirectiveDirty","flushPlayerBuilders","multiStartIndex","onlySingleClasses","stillDirty","readInitialValue","valueToApply","playersStartIndex","playerInsertionIndex","oldPlayer","renderStyling","scheduleTick","elementStyleProp","styleIndex","suffix","valueToAdd","elementClassProp","classIndex","onOrOffClassValue","elementStylingMap","hackImplementationOfElementStylingMap","classesInput","stylesInput","classesPlayerBuilder","stylesPlayerBuilder","classesValue","stylesValue","ignoreAllClassUpdates","ignoreAllStyleUpdates","classNames","applyAllClasses","classesPlayerBuilderIndex","stylesPlayerBuilderIndex","styleProps","classesStartIndex","dirty","ctxIndex","propIndex","propLimit","adjustedPropIndex","newProp","newValue","initialValue","indexOfEntry","valueToCompare","flagToCompare","ctxIndex_1","updateStylingMap","textNative","textBinding","element_2","directiveCount","elementIndex","providerCount","postProcessBaseDirective","initialInputData","minifiedInputName","attrValue","generateInitialInputs","setInputsFromAttrs","queueComponentIndexForCheck","numberOfDirectives","directiveFactory","nodeInjectorFactory","addToViewTree","createLContainer","hostNative","isForViewContainerRef","containerInternal","comment","containerRefreshStart","containerRefreshEnd","nextIndex","embeddedViewStart","viewBlockId","containerTNode","tContainerNode","startIdx","viewAtPositionId","scanForView","containerTViews","getOrCreateEmbeddedTView","createView","embeddedViewEnd","viewHost","projectionDef","componentNode","pData","tails","componentChild","bucketIndex","nextNode","projectionNodeStack$1","selectorIndex","nodeToProject","projectedView","currentComponentView","firstProjectedNode","adjustedHostIndex","markViewDirty","res_1","nothingScheduled","clean","r","rootComponent","detectChangesInternal","detectChangesInRootView","hostTView","createViewQuery","updateViewQuery","markDirty","allocHostVars","hostVars","queueHostBindingForCheck","totalHostVars","prefillHostVars","interpolationV","interpolation1","prefix","v0","interpolation2","i0","v1","interpolation3","i1","v2","interpolation4","i2","v3","interpolation5","i3","v4","interpolation6","i4","v5","interpolation7","i5","v6","interpolation8","i6","v7","reference","loadQueryList","queryListIdx","load","directiveInject","injectAttribute","registerContentQuery","queryList","savedContentQueriesLength","tViewContentQueries","CLEAN_PROMISE","getCurrentView","getTViewCleanup","addPlayer","element$$1","getOrCreatePlayerContext","getPlayers","players","nonFactoryPlayersStart","getPlayersInternal","_published","publishDefaultGlobalUtils","publishGlobalUtil","renderComponent","componentType","componentDef","hostRNode","rootFlags","createRootContext","createRootComponent","createRootComponentView","hostFeatures","rNode","instantiateRootComponent","LifecycleHooksFeature","rootTView","dirIndex","whenRendered","getRootContext$2","isComponentDef$1","definition","InheritDefinitionFeature","superType","_loop_1","superDef","baseDef","writeableDef","maybeUnwrapEmpty","prevHostBindings_1","superHostBindings_1","rf","ctx","prevViewQuery_1","superViewQuery_1","prevContentQueries_1","superContentQueries_1","prevContentQueriesRefresh_1","superContentQueriesRefresh_1","queryIndex","features_1","features_1_1","ngInherit","superPrototype","NgOnChangesFeature","publicToDeclaredInputs","publicToMinifiedInputs","proto","declaredKey_1","privateMinKey_1","originalProperty","checkProto","getOwnPropertyDescriptor","setter_1","simpleChanges","writable","currentChange","onChangesWrapper","delegateHook","_THROW_IF_NOT_FOUND","THROW_IF_NOT_FOUND","INJECTOR$1","NullInjector","Injector","StaticInjector","NULL","SWITCH_INJECTOR_FACTORY","SWITCH_INJECTOR_FACTORY__POST_R3__","IDENT","EMPTY","CIRCULAR","MULTI_PROVIDER_FN","USE_VALUE","NULL_INJECTOR$1","NEW_LINE","records","_records","deps","useNew","recursivelyProcessProviders","provider","staticError","resolvedProvider","providerDeps","annotations","useExisting","computeDeps","useFactory","useClass","resolveProvider","multi","multiProvider","multiProviderMixError","record","tryResolveToken","NO_NEW_LINE","depRecords","depRecord","childRecord","resolveToken","tokenPath","formatError","tokens","charAt","JSON","APP_ROOT","NOT_YET","CIRCULAR$1","EMPTY_ARRAY$1","NULL_INJECTOR$2","getNullInjector","createInjector","defType","additionalProviders","R3Injector","injectorDefTypes","destroyed","dedupStack","deepForEach","injectorDef","processInjectorType","processProvider","makeRecord","isRootInjector","has","assertNotDestroyed","service","previousInjector","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","defOrWrappedDef","parents","isDuplicate","imported","defProviders","injectorType_1","ngModuleType","isTypeProvider","providerToFactory","isValueProvider","providerToRecord","existing","multiRecord_1","Function","paramLength","isFactoryProvider","classRef_1","ngModuleDetail","hasDeps","resolveProvider$1","lInjectablesBlueprint","isComponent$$1","providerFactory","beginIndex","existingFactoryIndex","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesViewProvidersFactoryExist","f","componentProviders","multiFactoryAdd","multiFactory","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","isComponentProvider","multiResolve","factories","componentCount","multiProviders","ProvidersFeature","viewProviders","ComponentRef","ComponentFactory","noComponentFactoryError","ERROR_COMPONENT","R3ElementRef","R3TemplateRef","R3ViewContainerRef","_NullComponentFactoryResolver","ComponentFactoryResolver","CodegenComponentFactoryResolver","_parent","_ngModule","_factories","ComponentFactoryBoundToModule","ngContentSelectors","projectableNodes","rootSelectorOrNode","NgModuleRef","NgModuleFactory","ViewRef","_context","_componentIndex","_appRef","_tViewNode","collectNativeNodes","tNodeChild","_lookUpContext","detach","reattach","checkNoChanges","attachToViewContainerRef","vcRef","detachFromAppRef","attachToAppRef","appRef","RootViewRef","_view","checkNoChangesInRootView","createElementRef","ElementRefToken","ElementRef_","createTemplateRef","TemplateRefToken","TemplateRef_","_declarationParentView","elementRef","_tView","_queries","_injectorIndex","container$$1","declarationView","queries","createEmbeddedViewAndNode","hostContainer","createViewRef","componentIndex","hostComponentView","ElementRef","SWITCH_ELEMENT_REF_FACTORY","SWITCH_ELEMENT_REF_FACTORY__POST_R3__","RenderComponentType","slotCount","animations","RenderDebugInfo","Renderer","RootRenderer","RendererFactory2","RendererStyleFlags2","Renderer2","SWITCH_RENDERER2_FACTORY","SWITCH_RENDERER2_FACTORY__POST_R3__","getOrCreateRenderer2","SecurityContext","Sanitizer","Version","full","major","minor","VERSION","ComponentFactoryResolver$1","ComponentFactoryResolver$$1","ComponentFactory$1","toRefArray","nonMinified","templateName","ROOT_CONTEXT","SCHEDULER","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","ComponentFactory$$1","isInternalRootView","rootViewInjector","createChainedInjector","tElementNode","rootLView","oldLView","projection$$1","nodeList","firstTNode","previousTNode","ComponentRef$1","ComponentRef$$1","_rootLView","destroyCbs","_devMode","_runModeLocked","isDevMode","enableProdMode","InertBodyHelper","defaultDoc","inertDocument","implementation","createHTMLDocument","inertBodyElement","inertHtml","innerHTML","getInertBodyElement","DOMParser","isDOMParserAvailable","getInertBodyElement_DOMParser","getInertBodyElement_InertDocument","getInertBodyElement_XHR","encodeURI","xhr","XMLHttpRequest","responseType","send","parseFromString","templateEl","documentMode","stripCustomNsAttrs","elAttrs","childNode","ELEMENT_NODE","nextSibling","SAFE_URL_PATTERN","DATA_URL_PATTERN","_sanitizeUrl","sanitizeSrcset","srcset","tagSet","tags","merge$1","e_2","sets","sets_1","sets_1_1","e_2_1","inertBodyHelper","VOID_ELEMENTS","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","OPTIONAL_END_TAG_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","SRCSET_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","SanitizingHtmlSerializer","sanitizedSomething","buf","sanitizeChildren","traverseContent","startElement","TEXT_NODE","chars","nodeValue","endElement","checkClobberedElement","elAttr","lower","encodeEntities","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","outerHTML","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","_sanitizeHtml","unsafeHtmlInput","unsafeHtml","mXSSAttempts","parsedHtml","safeHtml","getTemplateContent","isTemplateElement","ELEMENT_MARKER","marker","COMMENT_MARKER","ICU_BLOCK_REGEX","SUBTEMPLATE_REGEXP","PH_REGEXP","BINDING_REGEXP","ICU_REGEXP","PP_PLACEHOLDERS","PP_ICU_VARS","PP_ICUS","extractParts","pattern","prevPos","braceStack","braces","lastIndex","pos","block","parseICUBlock","substring_1","cases","icuType","mainBinding","str","binding","blocks","actual","msg","throwError","removeInnerTemplateTranslation","tagMatched","inTemplate","MARKER","generateBindingUpdateOpCodes","destinationNode","sanitizeFn","updateOpCodes","textParts","textValue","toMaskBit","getBindingMask","icuExpression","valueArr","i18nIndexStack","i18nIndexStackPointer","parentIndexStack","i18nStart","subTemplateIndex","parentIndexPointer","createOpCodes","icuExpressions","msgParts","getTranslationForTemplate","phIndex","icuNodeIndex","icuStart","tIcuIndex","hasBinding","icus","i18nStartFirstPass","appendI18nNode","i18nPostprocess","replacements","_match","_idx","i18nEnd","rootIndex","tI18n","visitedPlaceholders","readCreateOpCodes","removeNode","i18nEndFirstPass","currentTNode","opCode","destinationNodeIndex","destinationTNode","commentValue","commentRNode","activeCaseIndex","tagNameValue","removedPhTNode","i18nAttributes","previousElementIndex","i18nAttributesFirstPass","changeMask","shiftsCounter","i18nExp","expression","i18nApply","readUpdateOpCodes","bindingsStartIndex","bypassCheckBit","caseCreated","checkBit","skipCodes","tIcu","icuTNode","removeCodes","removeOpCode","activeIndex","caseIndex","getCaseIndex","Plural","bindingValue","resolvedCase","nLike","nDecimal","abs","One","Other","Zero","Two","Few","Many","getPluralCase","getPluralCategory","tIcus","createCodes","updateCodes","childIcus","nestedIcus","icuIndex","icuCase","parseIcuCase","worstCaseSize","opCodes","parseNodes","nestedIcusToCreate","lowerAttrName","COMMENT_NODE","NESTED_ICU","nestedIcuIndex","nestedIcu","nestedIcuNodeIndex","nestTIcuIndex","COMPONENT_FACTORY_RESOLVER","NgModuleRef$1","NgModuleRef$$1","_bootstrapComponents","_r3Injector","injectFlags","NgModuleFactory$1","NgModuleFactory$$1","moduleType","parentInjector","setClassMetadata","decorators","ctorParameters","propDecorators","clazz","pureFunction0","slotOffset","pureFn","pureFunction1","exp","pureFunction2","pureFunction3","pureFunction4","pureFunction5","exp5","pureFunction6","exp6","pureFunction7","exp7","pureFunction8","exp8","pureFunctionV","exps","pipeName","getPipeDef$1","pipeInstance","pipeBind1","unwrapValue","isPure","pipeBind2","pipeBind3","pipeBind4","pipeBindV","isAsync","__isAsync","generatorOrNext","schedulerFn","errorFn","completeFn","SWITCH_TEMPLATE_REF_FACTORY","SWITCH_TEMPLATE_REF_FACTORY__POST_R3__","LQueries_","shallow","deep","track","predicate","descend","read","createQuery","clone","shallowResults","copyQueriesToContainer","deepResults","copyQueriesToView","insertView$1","isRootNodeOfQuery","removeView$1","query","containerValues","viewValuesIdx","getIdxOfMatchingSelector","queryByReadToken","matchingIdx","queryByTemplateRef","templateRefToken","templateRefResult","queryRead","queryByTNodeType","addMatch","matchingValue","createPredicate","_valuesTree","QueryList_","reduce","init","flatten","notifyOnChanges","memoryIndex","QueryType","getOrCreateCurrentQueries","storeCleanupWithContext","queryRefresh","templateRefExtractor","BRAND","allowSanitizationBypass","bypassSanitizationTrustHtml","trustedHtml","bypassSanitizationTrustString","bypassSanitizationTrustStyle","trustedStyle","bypassSanitizationTrustScript","trustedScript","bypassSanitizationTrustUrl","trustedUrl","bypassSanitizationTrustResourceUrl","trustedResourceUrl","trustedString","trusted","SAFE_STYLE_VALUE","URL_RE","_sanitizeStyle","urlMatch","outsideSingle","outsideDouble","c","hasBalancedQuotes","sanitizeHtml","getSanitizer","sanitize","HTML","sanitizeStyle","unsafeStyle","STYLE","sanitizeUrl","unsafeUrl","URL","sanitizeResourceUrl","unsafeResourceUrl","RESOURCE_URL","sanitizeScript","unsafeScript","SCRIPT","defaultStyleSanitizer","angularCoreEnv","NgModuleFactoryLoader","modules","registerModuleFactory","assertNotExisting","getModuleFactory__PRE_R3__","noModuleError","getModuleFactory__POST_R3__","getModuleFactory","Type","isType","DELEGATE_CTOR","INHERITED_CLASS","INHERITED_CLASS_WITH_CTOR","ReflectionCapabilities","reflect","_reflect","isReflectionEnabled","_zipTypesAndAnnotations","paramTypes","paramAnnotations","_ownParameters","parentCtor","typeStr","tsickleCtorParams","paramTypes_1","ctorParam","paramAnnotations_1","convertTsickleDecoratorIntoMetadata","getOwnMetadata","getParentCtor","_ownAnnotations","typeOrFunc","ownAnnotations","_ownPropMetadata","propMetadata","propDecorators_1","propMetadata_1","parentPropMetadata_1","ownPropMetadata","hasLifecycleHook","lcProperty","guards","getter","setter","method","importUri","resourceUri","resolveIdentifier","moduleUrl","members","runtime","resolveEnum","enumIdentifier","decoratorInvocations","decoratorInvocation","annotationArgs","ctor","parentProto","getReflect","reflectDependencies","convertDependencies","compiler","dep","optional","resolved","R3ResolvedDependencyType","Token","skipSelf","setTokenAndResolvedType","param","__proto__","reflectDependency","EMPTY_ARRAY$2","moduleQueue","flushingModuleQueue","isResolvedDeclaration","declaration","every","compileNgModule","compileNgModuleDefs","enqueueModuleForDelayedScoping","flatten$1","expandModuleWithProviders","emitInline","compileInjector","resetCompiledComponents","setScopeOnDeclaredComponents","transitiveScopes","transitiveScopesFor","patchComponentDefWithScope","ngSelectorScope","compilation","dir","isNgModule","scopes","exported","declared","importedTyped","importedScope","entry","exportedTyped","exportedScope","mapFn","out","isModuleWithProviders","compileComponent","metadata","maybeQueueResolutionOfComponentResources","directiveMetadata","preserveWhitespaces","viewQueries","extractQueriesMetadata","interpolation","flushModuleScopingQueueAsMuchAsPossible","compileDirective","facade","extendsDirectlyFromObject","typeArgumentCount","isContentQuery","lifecycle","usesOnChanges","typeSourceSpan","usesInheritance","isQueryAnn","queriesMeta","field","ann","propertyName","piece","convertToR3QueryMetadata","compilePipe","SWITCH_COMPILE_DIRECTIVE","SWITCH_COMPILE_COMPONENT","Pipe","SWITCH_COMPILE_PIPE","initializeBaseDef","inheritedBaseDef","updateBaseDefFromIOProp","defProp","bindingPropertyName","HostBinding","hostPropertyName","HostListener","SWITCH_COMPILE_COMPONENT__POST_R3__","SWITCH_COMPILE_DIRECTIVE__POST_R3__","SWITCH_COMPILE_PIPE__POST_R3__","USE_VALUE$1","EMPTY_ARRAY$3","convertInjectableProviderToFactory","deps_1","reflectionCapabilities","valueProvider_1","existingProvider_1","factoryProvider_1","classProvider_1","deps_2","deps_3","CUSTOM_ELEMENTS_SCHEMA","NO_ERRORS_SCHEMA","SWITCH_COMPILE_NGMODULE","SWITCH_COMPILE_NGMODULE__POST_R3__","USE_VALUE$2","isUseClassProvider","isUseValueProvider","isUseFactoryProvider","isUseExistingProvider","Injectable","SWITCH_COMPILE_INJECTABLE","SWITCH_COMPILE_INJECTABLE__POST_R3__","srcMeta","hasAProvider","compilerMeta","ctorDeps","userDeps","compileInjectable","injectableType","getDebugContext","getOriginalError","defaultErrorLogger","ErrorHandler","_console","handleError","originalError","_findOriginalError","_findContext","errorLogger","getErrorLogger","constructResolvingPath","findFirstClosedCycle","reverse","injectionError","constructResolvingMessage","errMsg","wrappedError","addKey","injectors","noAnnotationError","params","signature","parameter","ReflectiveKey","displayName","_globalKeyRegistry","numberOfKeys","KeyRegistry","_allKeys","newKey","reflector","Reflector","updateCapabilities","caps","identifier","ReflectiveDependency","visibility","fromKey","_EMPTY_LIST","ResolvedReflectiveProvider_","resolvedFactories","resolvedFactory","ResolvedReflectiveFactory","dependencies","resolveReflectiveFactory","resolvedDeps","_dependenciesFor","aliasInstance","params_1","_extractToken","constructDependencies","resolveReflectiveProvider","resolveReflectiveProviders","resolvedProviderMap","normalizedProvidersMap","mergeResolvedReflectiveProviders","_normalizeProviders","_createDependency","paramMetadata","UNDEFINED","ReflectiveInjector","resolveAndCreate","ResolvedReflectiveProviders","fromResolvedProviders","ReflectiveInjector_","_providers","_constructionCounter","keyIds","objs","_getByKey","resolveAndCreateChild","createChildFromResolved","inj","resolveAndInstantiate","instantiateResolved","_instantiateProvider","getProviderAtIndex","outOfBoundsError","_new","_getMaxNumberOfObjects","_instantiate","ResolvedReflectiveFactory$$1","originalException","_getByReflectiveDependency","INJECTOR_KEY","_getByKeySelf","_getByKeyDefault","_getObjByKeyId","keyId","_throwOrNull","noProviderError","inj_","_mapProviders","isObservable","APP_INITIALIZER","ApplicationInitStatus","appInits","initialized","donePromise","rej","runInitializers","asyncInitPromises","initResult","catch","APP_ID","_appIdRandomProviderFactory","_randomChar","APP_ID_RANDOM_PROVIDER","fromCharCode","random","PLATFORM_INITIALIZER","PLATFORM_ID","APP_BOOTSTRAP_LISTENER","PACKAGE_ROOT_URL","Console","ModuleWithComponentFactories","ngModuleFactory","componentFactories","_throwError","trace","events","Compiler_compileModuleSync__POST_R3__","Compiler_compileModuleSync","Compiler_compileModuleAsync__POST_R3__","Compiler_compileModuleAsync","Compiler_compileModuleAndAllComponentsSync__POST_R3__","Compiler_compileModuleAndAllComponentsSync","Compiler_compileModuleAndAllComponentsAsync__POST_R3__","Compiler_compileModuleAndAllComponentsAsync","Compiler","compileModuleSync","compileModuleAsync","compileModuleAndAllComponentsSync","compileModuleAndAllComponentsAsync","clearCache","clearCacheFor","getModuleId","COMPILER_OPTIONS","CompilerFactory","detectWTF","wtf","createScope","scope","leaveScope","startTimeRange","rangeType","beginTimeRange","endTimeRange","range","wtfEnabled","noopScope","arg0","arg1","wtfCreateScope","wtfLeave","wtfStartTimeRange","wtfEndTimeRange","NgZone","enableLongStackTrace","hasPendingMicrotasks","hasPendingMacrotasks","isStable","onUnstable","onMicrotaskEmpty","onError","assertZonePatched","_nesting","_outer","_inner","fork","properties","onInvokeTask","task","applyThis","applyArgs","onEnter","invokeTask","onLeave","onInvoke","invoke","onHasTask","hasTaskState","hasTask","change","microTask","checkStable","macroTask","onHandleError","isInAngularZone","assertInAngularZone","assertNotInAngularZone","runTask","scheduleEventTask","EMPTY_PAYLOAD","noop$1","cancelTask","runGuarded","NoopNgZone","Testability","_pendingCount","_isZoneStable","_didWork","_callbacks","taskTrackingZone","_watchAngularEvents","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","cb","clearTimeout","timeoutId","doneCb","pending_1","getPendingTasks","updateCb","macroTasks","creationLocation","addCallback","timeout","whenStable","getPendingRequestCount","findProviders","exactMatch","TestabilityRegistry","_applications","_testabilityGetter","addToWindow","registerApplication","testability","unregisterApplication","delete","unregisterAllApplications","getTestability","elem","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","setTestabilityGetter","_platform","_NoopGetTestability","compileNgModuleFactory__POST_R3__","ALLOW_MULTIPLE_PLATFORMS","NgProbeToken","createPlatform","PlatformRef","inits","createPlatformFactory","parentPlatformFactory","desc","extraProviders","platform","getPlatform","injectedProviders","assertPlatform","requiredToken","destroyPlatform","_modules","_destroyListeners","_destroyed","bootstrapModuleFactory","moduleFactory","ngZoneOption","ngZoneInjector","moduleRef","exceptionHandler","errorHandler","initStatus","_moduleDoBootstrap","_callAndReportToErrorHandler","bootstrapModule","compilerOptions","optionsReducer","createCompiler","compileNgModuleFactory","ApplicationRef","ngDoBootstrap","module","dst","_zone","_exceptionHandler","_initStatus","_bootstrapListeners","_views","_runningTick","_enforceNoNewChanges","_stable","componentTypes","tick","isCurrentlyStable","stableSub","unstableSub","ApplicationRef_1","componentOrFactory","componentFactory","compRef","_unloadComponent","_loadComponent","_tickScope","QueryList$1","_results","flatten$2","flat","flatItem","SystemJsNgModuleLoaderConfig","DEFAULT_CONFIG","factoryPathPrefix","factoryPathSuffix","SystemJsNgModuleLoader","_compiler","path","loadFactory","loadAndCompile","exportName","checkNotEmpty","factoryClassSuffix","modulePath","ViewContainerRef","SWITCH_VIEW_CONTAINER_REF_FACTORY","SWITCH_VIEW_CONTAINER_REF_FACTORY__POST_R3__","ViewContainerRefToken","ViewContainerRef_","_lContainer","_hostTNode","_hostView","_viewRefs","startTNode","parentTNode_1","getParentInjectorTNode","adjustedIdx","_adjustIndex","ngModuleRef","contextInjector","insert","move","commentNode","nativeNextSibling","createContainerRef","ChangeDetectorRef","SWITCH_CHANGE_DETECTOR_REF_FACTORY","SWITCH_CHANGE_DETECTOR_REF_FACTORY__POST_R3__","ViewRef$1","EmbeddedViewRef","EventListener","DebugNode__PRE_R3__","nativeNode","_debugContext","DebugElement__PRE_R3__","addChild","references","providerTokens","childNodes","insertChildrenAfter","newChildren","siblingIndex","refChild","newChild","refIndex","queryAll","_queryElementChildren","queryAllNodes","_queryNodeChildren","triggerEventHandler","eventObj","asNativeElements","debugEls","DebugNode__POST_R3__","DebugElement__POST_R3__","discoverLocalRefs","getInjectionTokens","eAttrs","lContext","lNode","eClasses","styleName","eStyles","getPropertyValue","getDebugNode__POST_R3__","_queryNodeChildrenR3","elementsOnly","_nativeNodeToDebugNode","getDebugNode","indexDebugNode","DebugNode","DebugElement","DefaultIterableDifferFactory","supports","trackByFn","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","_trackByFn","forEachItem","forEachOperation","nextIt","nextRemove","addRemoveOffset","moveOffsets","currentIndex","getPreviousIndex","adjPreviousIndex","_nextRemoved","previousIndex","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","forEachAddedItem","_nextAdded","forEachMovedItem","_nextMoved","forEachRemovedItem","forEachIdentityChange","_nextIdentityChange","collection","check","_reset","itemTrackBy","mayBeDirty","index_1","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","nextRecord","previousRecord","_prev","_remove","_moveAfter","_reinsertAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","put","toIndex","_prevDup","_nextDup","_DuplicateItemRecordList","_head","_tail","atOrAfterIndex","duplicates","recordList","moveOffset","DefaultKeyValueDifferFactory","DefaultKeyValueDiffer","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","forEachChangedItem","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","record_1","KeyValueChangeRecord_","_addToAdditions","_addToChanges","IterableDiffers","copied","extend","iterable","KeyValueDiffers","kv","keyValDiff","defaultIterableDiffers","defaultKeyValueDiffers","platformCore","LOCALE_ID","TRANSLATIONS","TRANSLATIONS_FORMAT","MissingTranslationStrategy","_iterableDiffersFactory","_keyValueDiffersFactory","_localeFactory","APPLICATION_MODULE_PROVIDERS","ApplicationModule","SWITCH_IVY_ENABLED__POST_R3__","ivyEnabled","shiftInitState","priorInitState","newInitState","initState","initIndex","shouldCallLifecycleInitHook","asTextData","asElementData","asProviderData","asPureExpressionData","asQueryList","DebugContext","Services","setCurrentNode","createRootView","createComponentView","createNgModuleRef","overrideProvider","overrideComponentView","clearOverrides","checkAndUpdateView","checkNoChangesView","destroyView","resolveDep","createDebugContext","handleEvent","updateDirectives","updateRenderer","dirtyParentQueries","expressionChangedAfterItHasBeenCheckedError","isFirstCheck","_addDebugContext","viewDebugError","logError","viewDestroyedError","NOOP","_tokenKeyCache","tokenKey","unwrapValue$1","nodeIdx","bindingIdx","globalBindingIdx","oldValues","createRendererType2","_renderCompCount$1","checkBinding","checkAndUpdateBinding","checkBindingNoChanges","bindings","markParentViewsForCheck","currView","viewContainerParent","markParentViewsForCheckProjectedViews","endView","dispatchEvent","root","declaredViewContainer","parentNodeDef","viewParentEl","renderNode","renderElement","renderText","elementEventFullName","isComponentView","isEmbeddedView","filterQueryId","queryId","splitMatchedQueriesDsl","matchedQueriesDsl","matchedQueries","matchedQueryIds","valueType","splitDepsDsl","sourceName","getParentRenderElement","renderHost","componentRendererType","Native","DEFINITION_CACHE","WeakMap","resolveDefinition","visitRootRenderNodes","lastRenderRootNode","visitSiblingRenderNodes","nodeDef","visitRenderNode","childCount","visitProjectedRenderNodes","ngContentIndex","compView","hostElDef","projectedNodes","execRenderNodeAction","ngContent","rn","bindingFlags","embeddedViews","viewContainer","_embeddedViews","NS_PREFIX_RE","splitNamespace","calcBindingFlags","interpolate","valueCount","constAndInterp","_toStringWithNull","inlineInterpolate","c0","a1","c1","a2","c2","a3","c3","a4","c4","a5","c5","a6","c6","a7","c7","a8","c8","a9","c9","EMPTY_ARRAY$4","EMPTY_MAP","anchorDef","templateFactory","outputIndex","checkIndex","childFlags","directChildFlags","childMatchedQueries","ns","componentProvider","publicProviders","allProviders","elementDef","namespaceAndName","fixedAttrs","bindingDefs","namespaceAndName_1","suffixOrSecurityContext","_d","ns_1","securityContext","nonMinifiedName","outputDefs","_e","isFilled","None","resolveRendererType2","elDef","selectorOrNode","ShadowDom","listenToElementOutputs","handleEventClosure","renderEventHandlerClosure","listenTarget","listenerView","disposable","disposables","checkAndUpdateElementValue","elData","renderNode$$1","renderValue","setElementAttribute","setElementClass","unit","setElementStyle","setElementProperty","UNDEFINED_VALUE","InjectorRefTokenKey","INJECTORRefTokenKey","NgModuleRefTokenKey","moduleProvideDef","moduleDef","providersByKey","isRoot","resolveNgModuleDep","depDef","tokenKey_1","providerDef","_def","providerInstance","_createProviderInstance","moduleTransitivelyPresent","injectable","depValues","_createClass","_callFactory","detachEmbeddedView","elementData","removeFromArray","renderDetachView","renderAttachEmbeddedView","prevView","prevRenderNode","addToArray","EMPTY_CONTEXT","createComponentFactory","viewDefFactory","ComponentFactory_","getComponentViewDefinitionFactory","_inputs","_outputs","inputsArr","outputsArr","viewDef","componentNodeIndex","ComponentRef_","ViewRef_","_viewRef","_component","_elDef","Injector_","createViewContainerData","_data","viewRef_","vcElementData","dvcElementData","projectedViews","_projectedViews","nodeFlags","markNodeAsProjectedTemplate","attachProjectedView","oldViewIndex","newViewIndex","createChangeDetectorRef","renderNodes","fs","createTemplateData","_parentView","createInjector$1","createRendererV1","RendererAdapter","createViewRoot","createTemplateAnchor","projectNodes","attachViewAfter","viewRootNodes","viewAllNodes","listenGlobal","propertyValue","attributeValue","setBindingDebugInfo","isAdd","styleValue","invokeElementMethod","methodName","animate","bootstrapComponents","NgModuleRef_","_moduleType","provDef","initNgModule","lifecycles","callNgModuleLifecycle","RendererV1TokenKey","Renderer2TokenKey","ElementRefTokenKey","ViewContainerRefTokenKey","TemplateRefTokenKey","ChangeDetectorRefTokenKey","InjectorRefTokenKey$1","INJECTORRefTokenKey$1","depDefs","createProviderInstance","_createProviderInstance$1","createPipeInstance","createClass","createDirectiveInstance","outputObservable","eventHandlerClosure","allowPrivateServices","callFactory","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR$1","tokenKey$$1","searchView","findCompView","providerDef_1","providerData","updateProp","callLifecycleHooksChildrenFirst","callProviderLifecycles","callElementProvidersLifecycles","queryDef","bindingType","filterId","queryIds","nodeMatchedQueries","tplDef","checkAndUpdateQuery","newValues","calcQueryValues","notify","boundValue","getQueryValue","dvc","queryValueType","ngContentDef","appendNgContent","purePipeDef","argCount","_pureExpressionDef","pureArrayDef","pureObjectDef","propToIndex","nbKeys","propertyNames","textDef","staticText","_addInterpolationPart","viewBindingCount","viewDisposableCount","viewNodeFlags","viewRootNodeFlags","viewMatchedQueries","currentParent","currentRenderParent","currentElementHasPublicProviders","currentElementHasPrivateProviders","validateNode","isNgContainer","newParent","rootNodeFlags","bindingCount","outputCount","nodeCount","parentEnd","anchorDef$$1","initView","createViewNodes","compRenderer","nodeData","compViewDef","execComponentViewsAction","ViewAction","CreateViewNodes","execQueriesAction","markProjectedViewsForCheck","execEmbeddedViewsAction","CheckNoChanges","CheckAndUpdate","callInit","checkAndUpdateNode","argStyle","v8","v9","bindLen","changed","checkAndUpdateElementInline","checkAndUpdateTextInline","checkAndUpdateDirectiveInline","checkAndUpdatePureExpressionInline","checkAndUpdateNodeInline","checkAndUpdateElementDynamic","checkAndUpdateTextDynamic","checkAndUpdateDirectiveDynamic","checkAndUpdatePureExpressionDynamic","checkAndUpdateNodeDynamic","checkNoChangesNode","checkNoChangesNodeInline","checkNoChangesNodeDynamic","checkNoChangesQuery","Destroy","detachProjectedView","destroyViewNodes","callViewAction","viewState","execProjectedViewsAction","CheckNoChangesProjectedViews","CheckAndUpdateProjectedViews","queryFlags","staticDynamicQueryFlag","checkType","initServicesIfNeeded","services","debugSetCurrentNode","debugCreateRootView","debugCreateEmbeddedView","debugCreateComponentView","debugCreateNgModuleRef","debugOverrideProvider","debugOverrideComponentView","debugClearOverrides","debugCheckAndUpdateView","debugCheckNoChangesView","debugDestroyView","DebugContext_","debugHandleEvent","debugUpdateDirectives","debugUpdateRenderer","createProdRootView","prodCheckAndUpdateNode","prodCheckNoChangesNode","elInjector","createRootData","DebugRendererFactory2","defWithOverride","applyProviderOverridesToView","callWithDebugContext","DebugAction","viewDef$$1","viewDefOverrides","hasOverrides","hasDeprecatedOverrides","providerOverrides","override","deprecatedBehavior","providerOverridesWithScope","calcHasOverrides","moduleSet_1","applyProviderOverrides","applyProviderOverridesToNgModule","comp","compFactory","hostViewDef","elementIndicesWithOverwrittenProviders","elIndicesWithOverwrittenProviders","lastElementDef","findElementIndicesWithOverwrittenProviders","applyProviderOverridesToElement","elIndex","_currentAction","_currentView","_currentNodeIndex","nextDirectiveWithBinding","debugCheckAndUpdateNode","debugCheckNoChangesNode","nextRenderNodeWithBinding","givenValues","bindingValues","elView","elOrCompView","childDef","collectReferences","findHostElement","logViewDef","logNodeIndex","renderNodeIndex","getRenderNodeIndex","currRenderNodeIndex","nodeLogger","refName","oldAction","oldNodeIndex","viewWrappedDebugError","getCurrentDebugContext","renderData","DebugRenderer2","whenRenderingDone","debugContextFactory","removeDebugNodeFromIndex","namespace","debugCtx","debugEl","debugChildEl","debugRefEl","oldChild","preserveContent","createNgModuleFactory","defFactory","NgModuleFactory_","_ngModuleDefFactory","cloneNgModuleDefinition","monthsShortDot","shared_1","paginator_1","domhandler_1","objectutils_1","rxjs_1","TableService","sortSource","Subject","selectionSource","contextMenuSource","valueSource","totalRecordsSource","columnsSource","sortSource$","selectionSource$","contextMenuSource$","valueSource$","totalRecordsSource$","columnsSource$","onSort","sortMeta","onSelectionChange","onContextMenu","onValueChange","onTotalRecordsChange","onColumnsChange","columns","Table","domHandler","objectUtils","tableService","pageLinks","alwaysShowPaginator","paginatorPosition","defaultSortOrder","sortMode","resetPageOnSort","selectionChange","contextMenuSelectionChange","contextMenuSelectionMode","rowTrackBy","lazy","lazyLoadOnInit","compareSelectionBy","csvSeparator","exportFilename","filters","filterDelay","expandedRowKeys","rowExpandMode","virtualScrollDelay","virtualRowHeight","columnResizeMode","loadingIcon","stateStorage","onRowSelect","onRowUnselect","onPage","onFilter","onLazyLoad","onRowExpand","onRowCollapse","onContextMenuSelect","onColResize","onColReorder","onRowReorder","onEditInit","onEditComplete","onEditCancel","onHeaderCheckboxToggle","_totalRecords","selectionKeys","_sortOrder","filterConstraints","startsWith","filterValue","endsWith","notEquals","in","lt","lte","gt","gte","createLazyLoadMetadata","isStateful","restoreState","captionTemplate","summaryTemplate","colGroupTemplate","expandedRowTemplate","frozenRowsTemplate","frozenHeaderTemplate","frozenBodyTemplate","frozenFooterTemplate","frozenColGroupTemplate","emptyMessageTemplate","paginatorLeftTemplate","paginatorRightTemplate","resizableColumns","restoreColumnWidths","totalRecords","sortField","sortSingle","multiSortMeta","sortMultiple","hasFilter","_filter","virtualScroll","virtualScrollCallback","_columns","cols","_sortField","_multiSortMeta","_selection","preventSelectionSetterPropagation","updateSelectionKeys","dataKey","resolveFieldData","onPageChange","rows","saveState","originalEvent","sortOrder","metaKey","ctrlKey","getSortMeta","order","restoringSort","customSort","data1","data2","value1","value2","localeCompare","multisortField","multisortmeta","isSorted","sorted","handleRowClick","targetNode","hasClass","selectionMode","isMultipleSelectionMode","anchorRowIndex","clearSelection","rangeRowIndex","clearSelectionRange","rowIndex","selectRange","rowData","isSelected","metaSelection","rowTouched","metaKeySelection","dataKeyValue","isSingleSelectionMode","selectionIndex_1","findIndexInSelection","selection","selectionIndex_2","handleRowTouchEnd","handleRowRightClick","contextMenu","contextMenuSelection","show","rangeStart","rangeEnd","rangeRowData","filteredValue","this_1","selectionIndex","toggleRowWithRadio","toggleRowWithCheckbox","selectionIndex_3","toggleRowsWithCheckbox","checked","matchMode","filterTimeout","isFilterBlank","filterGlobal","restoringFilter","globalFilterFieldsArray","globalFilterFields","localMatch","globalMatch","localFiltered","filterMeta","filterMatchMode","dataFieldValue","filterConstraint","paginator","globalFilter","exportCSV","csv","selectionOnly","column","header","cellData","exportFunction","blob","Blob","msSaveOrOpenBlob","link","display","download","createObjectURL","click","updateEditingCell","cell","editingCell","bindDocumentEditListener","isEditingCellValid","documentEditListener","editingCellClick","unbindDocumentEditListener","toggleRow","isRowExpanded","onColumnResizeBegin","containerLeft","getOffset","containerViewChild","lastResizerHelperX","pageX","scrollLeft","onColumnResize","resizeHelperViewChild","onColumnResizeEnd","delta","offsetLeft","columnWidth","minWidth","newColumnWidth","nextColumn","nextElementSibling","nextColumnWidth","scrollable","scrollableView","findParentScrollableView","scrollableBodyTable","findSingle","scrollableHeaderTable","scrollableFooterTable","resizeColumnIndex","resizeColGroup","tableViewChild","table","colGroup","col","nextCol","onColumnDragStart","columnElement","reorderIconWidth","getHiddenElementOuterWidth","reorderIndicatorUpViewChild","reorderIconHeight","getHiddenElementOuterHeight","reorderIndicatorDownViewChild","draggedColumn","dataTransfer","setData","onColumnDragEnter","dropHeader","reorderableColumns","containerOffset","dropHeaderOffset","targetLeft","columnCenter","dropPosition","dropEffect","onColumnDragLeave","onColumnDrop","dropColumn","dragIndex","indexWithinGroup","dropIndex","allowDrop","reorderArray","draggable","onRowDragStart","rowDragging","draggedRowIndex","onRowDragOver","rowElement","rowY","getWindowScrollTop","pageY","rowMidY","getOuterHeight","prevRowElement","previousElementSibling","droppedRowIndex","onRowDragLeave","onRowDragEnd","onRowDrop","handleVirtualScroll","virtualScrollTimer","isEmpty","getBlockableElement","getStorage","localStorage","sessionStorage","stateKey","storage","saveColumnWidths","saveColumnOrder","setItem","stateString","getItem","parse","columnWidthsState","columnWidths","tableWidthState","tableWidth","restoreColumnOrder","columnOrder","widths","getOuterWidth","widths_1","headerCols","bodyCols","columnOrder_1","reorderedColumns","findColumnByKey","DomHandler","ObjectUtils","TableBody","dt","ScrollableView","alignScrollBar","totalRecordsSubscription","setVirtualScrollerHeight","_scrollHeight","setScrollHeight","frozen","scrollBodyViewChild","calculateScrollbarWidth","scrollableSiblingBody","frozenColumns","frozenView","frozenSiblingBody","bindEvents","columnsSubscription","scrollHeaderViewChild","headerScrollListener","onHeaderScroll","scrollHeaderBoxViewChild","scrollFooterViewChild","footerScrollListener","onFooterScroll","bodyScrollListener","onBodyScroll","unbindEvents","scrollFooterBoxViewChild","scrollTop","viewport","tableHeight","scrollTableViewChild","pageHeight_1","virtualScrollerViewChild","scrollBodyTop","page_1","scrollHeight","relativeHeight","containerHeight","includes","percentHeight","diffValue","scrollBodyHeight","maxHeight","hasVerticalOverflow","scrollBarWidth","SortableColumn","isEnabled","updateSortState","onClick","onEnterKey","pSortableColumnDisabled","SortIcon","ariaLabelAsc","ariaLabelDesc","SelectableRow","onTouchEnd","row","nextRow","findNextSelectableRow","prevRow","findPrevSelectableRow","pSelectableRowDisabled","Event","KeyboardEvent","SelectableRowDblClick","ContextMenuRow","pContextMenuRowDisabled","RowToggler","pRowTogglerDisabled","ResizableColumn","resizer","resizerMouseDownListener","onMouseDown","bindDocumentEvents","documentMouseMoveListener","onDocumentMouseMove","documentMouseUpListener","onDocumentMouseUp","unbindDocumentEvents","pResizableColumnDisabled","ReorderableColumn","mouseDownListener","dragStartListener","onDragStart","dragOverListener","onDragEnter","dragEnterListener","dragLeaveListener","onDragLeave","onDragOver","onDrop","pReorderableColumnDisabled","EditableColumn","openCell","focusable","closeEditingCell","keyCode","moveToPreviousCell","moveToNextCell","findCell","currentCell","targetCell","findPreviousEditableColumn","findNextEditableColumn","prevCell","previousRow","lastElementChild","nextCell","firstElementChild","pEditableColumnDisabled","CellEditor","editableColumn","inputTemplate","outputTemplate","TableRadioButton","onFocus","boxViewChild","onBlur","TableCheckbox","TableHeaderCheckbox","valueChangeSubscription","updateCheckedState","selectionChangeSubscription","ReorderableRowHandle","ReorderableRow","droppable","dragEndListener","onDragEnd","pReorderableRowDisabled","TableModule","PaginatorModule","hostReportError","suffixes","70","80","20","50","100","10","30","60","90","VirtualTimeScheduler","maxFrames","POSITIVE_INFINITY","frame","frameTimeFactor","VirtualAction","requestAsyncId","sortActions","recycleAsyncId","_execute","AsyncAction","partition","subscribeTo","not","translator","words","correctGrammaticalCase","wordKey","word","onErrorResumeNext","sources","remainder","subNext","pairs","dispatch","Symbol","of","destinationOrNext","SafeSubscriber","_error","_parentOrParents","_parentSubscriber","__tryOrSetError","__tryOrUnsub","wrappedComplete","obs","isObject","emptyScheduled","NEVER","never","generate","initialStateOrOptions","iterate","resultSelectorOrObservable","initialState","conditionResult","needIterate","relativeTimeWithPlural","num","forms","defaultIfEmpty","DefaultIfEmptyOperator","DefaultIfEmptySubscriber","pluralForm","plurals","pluralize","u","$0","$1","$2","fromArray","PlatformLocation","LOCATION_INITIALIZED","LocationStrategy","APP_BASE_HREF","Location","platformStrategy","_subject","_platformStrategy","browserBaseHref","getBaseHref","_baseHref","Location_1","stripTrailingSlash","_stripIndexHtml","onPopState","ev","includeHash","normalize","isCurrentPathEqualTo","normalizeQueryParams","baseHref","_stripBaseHref","prepareExternalUrl","go","pushState","replaceState","forward","back","onNext","onThrow","onReturn","joinWithSlash","slashes","pathEndIdx","HashLocationStrategy","_platformLocation","onHashChange","hash","internal","queryParams","pathname","PathLocationStrategy","href","getBaseHrefFromDOM","externalUrl","localeEn","LOCALE_DATA","registerLocaleData","localeId","extraData","CURRENCIES_EN","NumberFormatStyle","FormStyle","TranslationWidth","FormatWidth","NumberSymbol","WeekDay","getLocaleId","findLocaleData","getLocaleDayPeriods","formStyle","amPm","getLastDefinedValue","getLocaleDayNames","getLocaleMonthNames","getLocaleEraNames","getLocaleFirstDayOfWeek","getLocaleWeekEndRange","getLocaleDateFormat","getLocaleTimeFormat","getLocaleDateTimeFormat","getLocaleNumberSymbol","symbol","CurrencyDecimal","Decimal","CurrencyGroup","Group","getLocaleNumberFormat","getLocaleCurrencySymbol","getLocaleCurrencyName","getLocalePluralCase","checkFullData","getLocaleExtraDayPeriodRules","rule","extractTime","getLocaleExtraDayPeriods","dayPeriods","normalizedLocale","parentLocale","getCurrencySymbol","code","currency","getLocaleCurrencies","symbolNarrow","getNumberOfCurrencyDigits","digits","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","DateType","TranslationType","formatDate","timezone","isDate","parsedNb","isoStringToDate","getNamedFormat","formatValue","Medium","Long","Full","shortTime","shortDate","formatDateTime","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","part","dateTimezoneOffset","getTimezoneOffset","timezoneToOffset","setMinutes","getMinutes","addDateMinutes","convertTimezoneToLocal","dateFormatter","DATE_FORMATS","dateStrGetter","Eras","Narrow","dateGetter","FullYear","Month","Months","weekGetter","Days","DayPeriods","Format","Hours","Minutes","Seconds","FractionalSeconds","timeZoneGetter","Extended","ShortGMT","getDateFormatter","opt_values","minusSign","negWrap","neg","strNum","getHours","getSeconds","getMilliseconds","Day","getDatePart","localeMinus","MinusSign","form","extended","currentHours_1","currentMinutes_1","result_1","rules","dayPeriods_1","hoursTo","getDateTranslation","monthBased","datetime","firstDayOfYear","nbDaysBefore1stDayOfMonth","firstThurs","THURSDAY","fallback","requestedTimezoneOffset","tzHour","tzMin","dateSetter","setUTCFullYear","timeSetter","setUTCHours","setHours","ms","valueOf","NUMBER_FORMAT_REGEXP","formatNumberToLocaleString","groupSymbol","decimalSymbol","digitsInfo","isPercent","formattedText","isZero","parsedNumber","integerLen","zeros","numStr","exponent","MAX_DIGITS","parseNumber","fractionLen","toPercent","minInt","minFraction","minFrac","maxFraction","maxFrac","minIntPart","minFractionPart","maxFractionPart","parseIntAutoRadix","fractionSize","roundAt","digit","dropTrailingZeros","minLen","carry","reduceRight","roundNumber","decimals","groups","lgSize","gSize","Exponential","Infinity","negPre","negSuf","posPre","posSuf","formatCurrency","currencyCode","parseNumberFormat","Currency","formatPercent","Percent","PercentSign","formatNumber","patternParts","positive","negative","positiveParts","lastIndexOf","integer","fraction","ch","trunkLen","DEPRECATED_PLURAL_FN","NgLocalization","ngLocalization","NgLocaleLocalization","deprecatedPluralFn","parseCookieValue","cookieStr","encodeURIComponent","cookie","eqIndex","cookieValue","decodeURIComponent","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","_initialClasses","_removeClasses","_applyClasses","_rawClass","_iterableDiffer","_keyValueDiffer","iterableChanges","_applyIterableChanges","keyValueChanges","_applyKeyValueChanges","_toggleClass","rawClassVal","klass","enabled","NgComponentOutlet","_componentRef","_moduleRef","ngComponentOutlet","ngComponentOutletInjector","ngComponentOutletNgModuleFactory","parentModule","ngComponentOutletContent","NgForOfContext","ngForOf","even","NgForOf","_viewContainer","_template","_differs","_ngForOfDirty","_differ","_ngForOf","ngForTrackBy","_applyChanges","insertTuples","adjustedPreviousIndex","tuple","RecordViewTuple","_perViewChange","ilen","ngTemplateContextGuard","NgIf","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","_updateView","assertTemplate","ngTemplateGuard_ngIf","expr","property","SwitchView","_templateRef","_created","enforceState","created","NgSwitch","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","_ngSwitch","_updateDefaultCases","_addCase","_addDefault","_defaultViews","_matchCase","matched","useDefault","NgSwitchCase","ngSwitch","ngSwitchCase","NgSwitchDefault","NgPlural","_localization","_caseViews","_switchValue","addCase","switchView","_clearViews","_activateView","_activeView","NgPluralCase","ngPlural","isANumber","NgStyle","_ngStyle","_setStyle","nameAndUnit","NgTemplateOutlet","_shouldRecreateView","ngTemplateOutlet","ngTemplateOutletContext","_updateExistingContext","ctxChange","_hasContextShapeChanged","prevCtxKeys","currCtxKeys","currCtxKeys_1","currCtxKeys_1_1","COMMON_DIRECTIVES","invalidPipeArgumentError","NumberFormatter","currencyAsSymbol","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","currencyDisplay","Intl","NumberFormat","DATE_FORMATS_SPLIT$1","PATTERN_ALIASES","datePartGetterFactory","combine","digitCondition","nameCondition","DATE_FORMATS$1","digitModifier","hourExtractor","hour12Modify","hourClockExtractor","timeZoneGetter$1","inner","intlDateFormat","DateTimeFormat","hour12","timeZoneName","merged","opt","ret","DATE_FORMATTER_CACHE","DateFormatter","cacheKey","_format","partToTime","DeprecatedDatePipe","DeprecatedDatePipe_1","isDate$1","_ALIASES","formatNumber$1","DeprecatedDecimalPipe","DeprecatedDecimalPipe_1","DeprecatedPercentPipe","DeprecatedPercentPipe_1","DeprecatedCurrencyPipe","DeprecatedCurrencyPipe_1","symbolDisplay","COMMON_DEPRECATED_I18N_PIPES","ObservableStrategy","createSubscription","async","updateLatestValue","dispose","_promiseStrategy","PromiseStrategy","_observableStrategy","AsyncPipe","_ref","_latestValue","_latestReturnedValue","_obj","_strategy","AsyncPipe_1","_dispose","_selectStrategy","_updateLatestValue","LowerCasePipe","LowerCasePipe_1","unicodeWordMatch","TitleCasePipe","TitleCasePipe_1","txt","toUpperCase","UpperCasePipe","UpperCasePipe_1","DatePipe","DatePipe_1","_INTERPOLATION_REGEXP","I18nPluralPipe","I18nPluralPipe_1","pluralMap","I18nSelectPipe","I18nSelectPipe_1","mapping","JsonPipe","KeyValuePipe","differs","compareFn","defaultComparator","differ","differChanges","keyValueA","keyValueB","aString","bString","DecimalPipe","DecimalPipe_1","strToNumber","PercentPipe","PercentPipe_1","CurrencyPipe","CurrencyPipe_1","SlicePipe","SlicePipe_1","COMMON_PIPES","DeprecatedI18NPipesModule","DOCUMENT","PLATFORM_BROWSER_ID","PLATFORM_SERVER_ID","PLATFORM_WORKER_APP_ID","PLATFORM_WORKER_UI_ID","isPlatformBrowser","platformId","isPlatformServer","isPlatformWorkerApp","isPlatformWorkerUi","ViewportScroller","BrowserViewportScroller","setOffset","getScrollPosition","supportScrollRestoration","scrollX","scrollY","scrollToPosition","scrollTo","scrollToAnchor","anchor","CSS","escape","elSelectedById","scrollToElement","elSelectedByName","setHistoryScrollRestoration","scrollRestoration","history_1","history","NullViewportScroller","isUpper","groupBy","keySelector","elementSelector","durationSelector","subjectSelector","GroupByOperator","GroupBySubscriber","attemptedToUnsubscribe","_group","group","groupedObservable","GroupedObservable","duration","GroupDurationSubscriber","removeGroup","groupSubject","refCountSubscription","InnerRefCountSubscription","scheduleArray","sub","units","translateSingular","special","SubjectSubscriber","observers","subject","AnonymousSubject","copy","nextHandle","RESOLVED","activeHandles","findAndClearHandle","handle","AsapAction","AsapScheduler","asapScheduler","asap","ConnectableObservable","subjectFactory","_refCount","_isComplete","getSubject","connect","connection","_connection","ConnectableSubscriber","refCount","connectableObservableDescriptor","connectableProto","connectable","OuterSubscriber","outerValue","innerIndex","innerSub","notifyError","relativeTimeMr","Title","hm","12","13","40","obj1","obj2","equalsByValue","visited","_$visited","fields","filteredItems","fields_1","to","generateSelectItems","selectItems","val_1","label","insertIntoOrderedArray","sourceArr","injected","findIndexInList","hasDefaultValue","concatMap","accumulator","seed","acc","eifelerRegelAppliesToNumber","lastDigit","webpackContext","req","webpackContextResolve","__webpack_require__","shareSubjectFactory","share","ReplaySubject","bufferSize","windowTime","_events","_infiniteTimeWindow","_bufferSize","_windowTime","nextInfiniteTimeWindow","nextTimeWindow","ReplayEvent","_getNow","_trimBufferThenGetEvents","eventsCount","spliceCount","asyncScheduler","concatAll","currencyPipe","forkJoin","first_1","forkJoinInternal","resultSelector_1","completed","emitted","ButtonDirective","iconPos","cornerStyleClass","addMultipleClasses","getStyleClass","icon","iconElement","labelElement","_label","_icon","iconPosClass","hasChildNodes","lastChild","Button","ButtonModule","FilterOperator","FilterSubscriber","race","RaceOperator","RaceSubscriber","hasFirst","subscriptions","weekEndings","webpackPolyfill","deprecate","paths","RouterEvent","NavigationStart","navigationTrigger","restoredState","NavigationEnd","urlAfterRedirects","NavigationCancel","NavigationError","RoutesRecognized","GuardsCheckStart","GuardsCheckEnd","shouldActivate","ResolveStart","ResolveEnd","RouteConfigLoadStart","route","RouteConfigLoadEnd","ChildActivationStart","snapshot","routeConfig","ChildActivationEnd","ActivationStart","ActivationEnd","Scroll","routerEvent","EmptyOutletComponent","ParamsAsMap","getAll","convertToParamMap","navigationCancelingError","defaultUrlMatcher","segments","segmentGroup","pathMatch","hasChildren","posParams","segment","consumed","LoadedRouterConfig","routes","validateConfig","parentPath","getFullPath","fullPath","loadChildren","outlet","redirectTo","matcher","currentRoute","standardizeConfig","shallowEqual","k1","k2","last$1","map$$1","wrapIntoObservable","containsTree","containee","exact","equalQueryParams","equalSegmentGroups","equalPath","numberOfChildren","containsQueryParams","containsSegmentGroup","containsSegmentGroupHelper","containeePaths","UrlTree","fragment","_queryParamMap","DEFAULT_SERIALIZER","serialize","UrlSegmentGroup","serializePaths","UrlSegment","_parameterMap","serializePath","as","bs","mapChildrenIntoArray","childOutlet","UrlSerializer","DefaultUrlSerializer","UrlParser","parseRootSegment","parseQueryParams","parseFragment","tree","strParams","serializeSegment","children_1","encodeUriQuery","encodeUriString","encodeUriSegment","decode","decodeQuery","SEGMENT_RE","matchSegments","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","remaining","consumeOptional","peekStartsWith","parseChildren","parseQueryParam","parseSegment","capture","parseParens","parseMatrixParams","parseParam","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodedVal","currentVal","allowPrimary","outletName","Tree","_root","pathFromRoot","findNode","siblings","findPath","cc","node_1","TreeNode","nodeChildrenAsMap","RouterState","setRouterState","createEmptyState","urlTree","activated","ActivatedRouteSnapshot","RouterStateSnapshot","createEmptyStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","ActivatedRoute","futureSnapshot","_futureSnapshot","_routerState","_paramMap","inheritedParamsDataResolve","paramsInheritanceStrategy","inheritingStartingFrom","curr","_resolvedData","flattenInherited","urlSegment","lastPathIndex","_urlSegment","_lastPathIndex","serializeNode","advanceActivatedRoute","currentSnapshot","nextSnapshot","shallowEqualArrays","equalParamsAndUrlSegments","isMatrixParams","command","outlets","segmentPath","oldSegmentGroup","newSegmentGroup","qp","replaceSegment","oldSegment","newSegment","Navigation","isAbsolute","numberOfDoubleDots","commands","cmdWithOutlet","toRoot","Position","processChildren","getPath","updateSegmentGroup","updateSegmentGroupChildren","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","compare","prefixedWith","slicedCommands","g","createNewSegmentGroup","outlets_2","getOutlets","createNewSegmentChildren","ActivateRoutes","routeReuseStrategy","futureState","currState","forwardEvent","activate","parentContexts","futureRoot","currRoot","deactivateChildRoutes","activateChildRoutes","futureNode","currNode","futureChild","childOutletName","deactivateRoutes","childName","deactivateRouteAndItsChildren","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","onOutletDeactivated","contexts_1","deactivate","activateRoutes","getOrCreateContext","shouldAttach","stored","retrieve","onOutletReAttached","attachRef","attach","advanceActivatedRouteNodeAndItsChildren","_loadedConfig","parentLoadedConfig","cmpFactoryResolver","resolver","activateWith","isUrlTree","NoMatch","AbsoluteRedirect","absoluteRedirect","newTree","namedOutletsRedirect","ApplyRedirects","configLoader","urlSerializer","allowRedirects","expandSegmentGroup","rootSegmentGroup","createUrlTree","noMatchError","rootCandidate","expandChildren","expandSegment","waitHead","waitTail","mapped","waitForMap","expandSegmentAgainstRoute","noLeftoversInUrl","getOutlet","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","applyRedirectCommands","lineralizeSegments","newSegments","consumedSegments","positionalParamSegments","rawSegmentGroup","cfg","rawSlicedSegments","getChildConfig","routerConfig","childModule","childConfig","slicedSegments","isEmptyPathRedirect","containsEmptyPathRedirectsWithNamedOutlets","mergeTrivialChildren","primarySegmentGroup","e_3","routes_2","routes_2_1","e_3_1","createChildrenForEmptySegments","containsEmptyPathRedirects","routes_1","routes_1_1","addEmptySegmentsToChildrenIfNeeded","cs","canLoad","injectionToken","guardVal","guard","isCanLoad","runCanLoadGuard","shouldLoad","canLoadFails","applyRedirectCreatreUrlTree","newRoot","createSegmentGroup","createQueryParams","redirectToParams","actualParams","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","actualSegments_1","actualSegments_1_1","CanActivate","CanDeactivate","getToken","getClosestLoadedConfig","getChildRouteGuards","futurePath","checks","canDeactivateChecks","canActivateChecks","prevChildren","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","getRouteGuards","isActivated","INITIAL_VALUE","prioritizedGuardValue","isPending","innerAcc","fireActivationStart","fireChildActivationStart","runCanActivate","futureRSS","futureARS","canActivate","canActivateObservables","isCanActivate","runCanActivateChild","canActivateChildGuardsMapped","canActivateChild","getCanActivateChild","guardsMapped","isCanActivateChild","NoMatch$1","Recognizer","rootComponentType","relativeLinkResolution","recognize","split$1","processSegmentGroup","freeze","rootNode","routeState","inheritParamsAndData","routeNode","processSegment","names","routeWithSameOutletName","sortActivatedRouteSnapshots","config_1","config_1_1","processSegmentAgainstRoute","rawSegment","getData","getSourceSegmentGroup","getPathIndexShift","getResolve","match$1","_sourceSegment","_segmentIndexShift","emptyPathMatch","getOutlet$1","containsEmptyPathMatchesWithNamedOutlets","s_1","primarySegment","createChildrenForEmptyPaths","containsEmptyPathMatches","s_2","addEmptyPathsToChildrenIfNeeded","getResolver","switchTap","RouteReuseStrategy","DefaultRouteReuseStrategy","detachedTree","shouldReuseRoute","ROUTES","RouterConfigLoader","loader","onLoadStartListener","onLoadEndListener","loadModuleFactory","UrlHandlingStrategy","DefaultUrlHandlingStrategy","shouldProcessUrl","extract","merge","newUrlPart","wholeUrl","defaultErrorHandler","defaultMalformedUriErrorHandler","defaultRouterHook","runExtras","Router","rootContexts","lastSuccessfulNavigation","currentNavigation","navigationId","isNgZoneEnabled","malformedUriErrorHandler","navigated","lastSuccessfulId","hooks","beforePreactivation","afterPreactivation","urlHandlingStrategy","onSameUrlNavigation","urlUpdateStrategy","resetConfig","currentUrlTree","rawUrlTree","browserUrlTree","triggerEvent","routerState","transitions","currentRawUrl","extractedUrl","rawUrl","extras","targetSnapshot","currentRouterState","targetRouterState","guardsResult","navigations","setupNavigations","processNavigations","eventsSubject","errored","initialUrl","previousNavigation","urlTransition","transition","serializeUrl","applyRedirects","finalUrl","serializer","recognize$1","skipLocationChange","setBrowserUrl","replaceUrl","routesRecognized","navStart","appliedUrlTree","guardsStart","currRSS","currARS","canDeactivate","canDeactivateObservables","isCanDeactivate","runCanDeactivate","runCanDeactivateChecks","runCanActivateChecks","checkGuards","evt","guardsEnd","resetUrlToCurrentUrlTree","navCancel","resolveStart","key_1","resolveNode","resolvedData","runResolve","__","resolveEnd","prevState","createNode","createOrReuseChildren","detachedRouteHandle","setFutureSnapshotsOfActivatedRoutes","redirecting","resetStateAndUrl","navigateByUrl","navError","ee","resetRootComponentType","getTransition","setTransition","initialNavigation","setUpLocationChangeListener","locationSubscription","parseUrl","scheduleNavigation","getCurrentNavigation","navigationExtras","relativeTo","preserveQueryParams","queryParamsHandling","preserveFragment","q","removeEmptyProps","nav","cmd","cmdIdx","outlets_1","urlPart","partIndex","computeNavigation","startingPosition","modifier","ci","createPositionApplyingDoubleDots","findStartingPosition","mergedTree","validateCommands","isActive","lastNavigation","storedState","storedUrl","RouterLinkWithHref","router","locationStrategy","updateTargetUrlAndHref","preserve","attrBoolValue","OutletContext","ChildrenOutletContexts","onChildOutletCreated","onChildOutletDestroyed","RouterOutlet","changeDetector","_activatedRoute","activateEvents","deactivateEvents","cmp","activatedRoute","childContexts","OutletInjector","PreloadingStrategy","PreloadAllModules","preload","NoPreloading","RouterPreloader","moduleLoader","preloadingStrategy","setUpPreloading","processRoutes","preloadConfig","RouterScroller","viewportScroller","lastId","lastSource","restoredId","scrollPositionRestoration","anchorScrolling","routerEventsSubscription","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","scheduleScrollEvent","ROUTER_CONFIGURATION","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","setupRouter","rootRoute","enableTracing","routerNgProbeToken","RouterModule","RouterModule_1","provideRoutes","provideForRootGuard","provideLocationStrategy","createRouterScroller","RouterInitializer","getAppInitializer","ROUTER_INITIALIZER","getBootstrapListener","forChild","scrollOffset","platformLocationStrategy","useHash","dom_1","logGroup","logGroupEnd","initNavigation","resultOfPreactivationDone","appInitializer","isLegacyDisabled","isLegacyEnabled","bootstrapListener","bootstrappedComponentRef","preloader","routerScroller","_DOM","getDOM","nodeContains","_attrToPropMap","_keyMap","_chromeNumKeyPadMap","urlParsingNode","BrowserDomAdapter","templateHtml","makeCurrent","adapter","hasProperty","getProperty","groupEnd","nodeA","nodeB","on","onAndCancel","createMouseEvent","eventType","getDefaultDocument","createEvent","initEvent","isPrevented","getInnerHTML","getOuterHTML","childNodesAsList","clearNodes","replaceChild","insertAllBefore","insertAfter","setInnerHTML","getText","getChecked","setChecked","createTemplate","doc","createScriptTag","createStyleElement","css","createShadowRoot","getShadowRoot","shadowRoot","getHost","cloneNode","getElementsByClassName","getElementsByTagName","stylename","hasStyle","attributeMap","attrib","hasAttribute","attribute","hasAttributeNS","getAttributeNS","removeAttributeNS","templateAwareRoot","createHtmlDocument","getTitle","setTitle","newTitle","elementMatches","isElementNode","isTextNode","isCommentNode","hasShadowRoot","HTMLElement","isShadowRoot","DocumentFragment","importIntoDoc","importNode","adoptNode","getHref","getEventKey","keyIdentifier","getGlobalEventTarget","getHistory","getLocation","baseElement","resetBaseElement","getUserAgent","supportsWebAnimation","performanceNow","performance","supportsCookies","getCookie","setCookie","GenericBrowserDomAdapter","_animationPrefix","_transitionEnd","domPrefixes","transEndEventNames_1","WebkitTransition","MozTransition","OTransition","getDistributedNodes","resolveAndSetHref","baseUrl","supportsDOMEvents","supportsNativeShadowDOM","getAnimationPrefix","getTransitionEnd","supportsAnimation","DomAdapter","resourceLoaderType","DOCUMENT$1","supportsState","BrowserPlatformLocation","_doc","_init","_history","newPath","TRANSITION_ID","SERVER_TRANSITION_PROVIDERS","transitionId","dom","BrowserGetTestability","testabilities","didWork","decrement","didWork_","exportNgVar","COMPILED","CORE_TOKENS","inspectNativeElement","_createNgProbe","coreTokens","EVENT_MANAGER_PLUGINS","EventManager","plugins","_eventNameToPlugin","manager","_plugins","handler","_findPluginFor","addGlobalEventListener","getZone","plugin","plugin_1","EventManagerPlugin","SharedStylesHost","_stylesSet","addStyles","additions","onStylesAdded","DomSharedStylesHost","_hostNodes","_styleNodes","_addStylesToHost","styleEl","addHost","hostNode","removeHost","styleNode","NAMESPACE_URIS","COMPONENT_REGEX","flattenStyles","compId","decoratePreventDefault","eventHandler","DomRendererFactory2","eventManager","sharedStylesHost","appId","rendererByCompId","DefaultDomRenderer2","EmulatedEncapsulationDomRenderer2","applyToHost","ShadowDomRenderer","namespaceUri","Important","checkNoSyntheticProp","AT_CHARCODE","nameKind","blackListedMap","contentAttr","hostAttr","componentShortId","shimHostAttribute","hostEl","attachShadow","nodeOrShadowRoot","__symbol__","ADD_EVENT_LISTENER","REMOVE_EVENT_LISTENER","symbolNames","stopSymbol","isBlackListedEvent","globalListener","symbolName","taskDatas","taskData","copiedTasks","DomEventsPlugin","patchEvent","stopImmediatePropagation","globalListenerRegistered","callbackRegistered","underlyingRemove","EVENT_NAMES","HAMMER_GESTURE_CONFIG","HAMMER_LOADER","HammerGestureConfig","overrides","buildHammer","mc","Hammer","enable","HammerGesturesPlugin","isCustomEvent","cancelRegistration_1","deregister_1","off","MODIFIER_KEYS","MODIFIER_KEY_GETTERS","altKey","KeyEventsPlugin","KeyEventsPlugin_1","parseEventName","parsedEvent","outsideHandler","eventCallback","domEventName","_normalizeKey","fullKey","modifierName","getEventFullKey","modifierGetter","keyName","DomSanitizer","DomSanitizerImpl","NONE","SafeHtmlImpl","changingThisBreaksApplicationSecurity","checkNotSafeValue","SafeStyleImpl","SafeScriptImpl","SafeResourceUrlImpl","SafeUrlImpl","expectedType","SafeValueImpl","getTypeName","bypassSecurityTrustHtml","bypassSecurityTrustStyle","bypassSecurityTrustScript","bypassSecurityTrustUrl","bypassSecurityTrustResourceUrl","INTERNAL_BROWSER_PLATFORM_PROVIDERS","platformBrowser","BrowserModule","BrowserModule_1","withServerTransition","createTitle","mergeAll","concurrent","relativeTimeWithMutation","mutationTable","softMutation","mutation","minWeekdaysParse","weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","lastNumber","last2Digits","UnsubscriptionError","UnsubscriptionErrorImpl","errors","ArgumentOutOfRangeError","ArgumentOutOfRangeErrorImpl","fromEvent","setupSubscription","sourceObj","isEventTarget","source_1","isJQueryStyleEventEmitter","source_2","addListener","removeListener","isNodeStyleEventEmitter","source_3","webpackAsyncContext","ids","scan","hasSeed","ScanOperator","ScanSubscriber","_seed","_tryNext","combineLatest","CombineLatestOperator","CombineLatestSubscriber","unused","_tryResultSelector","bindNodeCallback","callbackFunc","innerArgs","dispatchError","dispatchNext","RenderType_SystemNotFoundComponent","View_SystemNotFoundComponent_0","View_SystemNotFoundComponent_Host_0","SystemNotFoundComponentNgFactory","timer","dueTime","periodOrScheduler","due","AbstractControlDirective","control","valid","invalid","pristine","status","untouched","statusChanges","valueChanges","errorCode","getError","ControlContainer","isEmptyInputValue","NG_VALIDATORS","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","Validators","required","requiredTrue","email","minLength","maxLength","regex","nullValidator","compose","validators","presentValidators","isPresent","_mergeErrors","_executeValidators","composeAsync","_executeAsyncValidators","arrayOfErrors","NG_VALUE_ACCESSOR","CHECKBOX_VALUE_ACCESSOR","CheckboxControlValueAccessor","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","_composing","_handleInput","_compositionStart","_compositionEnd","normalizeValidator","validator","validate","normalizeAsyncValidator","NUMBER_VALUE_ACCESSOR","NumberValueAccessor","unimplemented","NgControl","valueAccessor","_rawValidators","_rawAsyncValidators","RADIO_VALUE_ACCESSOR","RadioControlValueAccessor","RadioControlRegistry","_accessors","accessor","_isSameGroup","fireUncheck","controlPair","_control","_registry","_checkName","_fn","formControlName","_throwNameError","RANGE_VALUE_ACCESSOR","RangeValueAccessor","FormErrorExamples","ReactiveErrors","controlParentException","ngModelGroupException","missingFormException","groupParentException","arrayParentException","disabledAttrWarning","ngModelWarning","directiveName","SELECT_VALUE_ACCESSOR","SelectControlValueAccessor","_buildValueString","_optionMap","_idCounter","_compareWith","_getOptionId","valueString","_getOptionValue","_registerOption","_extractId","NgSelectOption","_select","_setElementValue","SELECT_MULTIPLE_VALUE_ACCESSOR","SelectMultipleControlValueAccessor","_buildValueString$1","optionSelectedStateSetter","ids_1","_setSelected","selectedOptions","_extractId$1","NgSelectMultipleOption","controlPath","setUpControl","asyncValidator","_pendingValue","_pendingChange","_pendingDirty","updateOn","updateControl","setUpViewChangePipeline","emitModelEvent","viewToModelUpdate","setUpModelChangePipeline","_pendingTouched","markAsTouched","setUpBlurPipeline","registerOnDisabledChange","registerOnValidatorChange","updateValueAndValidity","markAsDirty","emitModelToViewChange","setUpFormContainer","_noControlError","messageEnd","composeValidators","composeAsyncValidators","isPropertyUpdated","viewModel","BUILTIN_ACCESSORS","syncPendingControls","_syncPendingControls","selectValueAccessor","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","removeDir","_ngModelWarning","warningConfig","_ngModelWarningSentOnce","_ngModelWarningSent","AbstractFormGroupDirective","_checkParentType","formDirective","addFormGroup","removeFormGroup","getFormGroup","_validators","_asyncValidators","AbstractControlStatus","cd","ngControlStatusHost","NgControlStatus","NgControlStatusGroup","coerceToValidator","validatorOrOpts","isOptionsObj","coerceToAsyncValidator","origAsyncValidator","asyncValidators","AbstractControl","_onCollectionChange","_onDisabledChange","_updateOn","setValidators","newValidator","setAsyncValidators","clearValidators","clearAsyncValidators","onlySelf","markAsUntouched","_forEachChild","_updateTouched","markAsPristine","_updatePristine","markAsPending","disable","_updateValue","_updateAncestors","changeFn","setParent","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","ctrl","_allControlsDisabled","_asyncValidationSubscription","setErrors","_updateControlsErrors","delimiter","FormGroup","controls","FormArray","at","_find","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","_isBoxedValue","formState","_registerOnCollectionChange","_setUpdateStrategy","FormControl","_applyFormState","emitViewToModelChange","patchValue","_clearChangeFns","_setUpControls","registerControl","addControl","removeControl","setControl","controlName","_checkAllValuesPresent","_throwIfControlMissing","getRawValue","_reduceChildren","subtreeUpdated","updated","_reduceValue","initValue","_registerControl","removeAt","formDirectiveProvider","NgForm","resolvedPromise","submitted","_directives","ngSubmit","_findContainer","getControl","updateModel","onSubmit","onReset","resetForm","TemplateDrivenErrors","modelParentException","formGroupNameException","missingNameException","modelGroupParentException","ngFormWarning","NG_FORM_SELECTOR_WARNING","NgFormSelectorWarning","NgFormSelectorWarning_1","_ngFormWarning","modelGroupProvider","NgModelGroup","NgModelGroup_1","formControlBinding","NgModel","resolvedPromise$1","_registered","_checkForErrors","_setUpControl","_updateDisabled","_isStandalone","_setUpStandalone","disabledValue","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding$1","FormControlDirective","_ngModelWarningConfig","FormControlDirective_1","_isControlChanged","formDirectiveProvider$1","FormGroupDirective","_checkFormPresent","_updateValidators","_updateDomValue","_updateRegistrations","addFormArray","removeFormArray","getFormArray","newCtrl","cleanUpControl","_oldForm","sync","formGroupNameProvider","FormGroupName","_hasInvalidParent","formArrayNameProvider","FormArrayName","controlNameBinding","FormControlName","_added","FormControlName_1","REQUIRED_VALIDATOR","RequiredValidator","CHECKBOX_REQUIRED_VALIDATOR","CheckboxRequiredValidator","_required","EMAIL_VALIDATOR","EmailValidator","_enabled","MIN_LENGTH_VALIDATOR","MinLengthValidator","_createValidator","minlength","_validator","MAX_LENGTH_VALIDATOR","MaxLengthValidator","maxlength","PATTERN_VALIDATOR","PatternValidator","FormBuilder","controlsConfig","_reduceControls","isAbstractControlOptions","_createControl","controlConfig","NgNoValidate","SHARED_FORM_DIRECTIVES","TEMPLATE_DRIVEN_DIRECTIVES","REACTIVE_DRIVEN_DIRECTIVES","InternalFormsSharedModule","FormsModule","FormsModule_1","withConfig","warnOnDeprecatedNgFormSelector","ReactiveFormsModule","ReactiveFormsModule_1","warnOnNgModelWithFormControl","numbersPast","numbersFuture","verbalNumber","Action","setInterval","clearInterval","errorValue","isInteropObservable","Subscription","scheduleObservable","schedulePromise","isIterable","scheduleIterable","_enable_super_gross_mode_that_will_cause_bad_things","AnimationBuilder","AnimationFactory","AUTO_STYLE","definitions","timings","steps","sequence","keyframes","stateChangeExpr","animation","animateChild","useAnimation","stagger","NoopAnimationPlayer","_onDoneFns","_onStartFns","_onDestroyFns","_started","_finished","parentPlayer","totalTime","_onFinish","onStart","onDone","hasStarted","_onStart","triggerMicrotask","restart","finish","setPosition","getPosition","triggerCallback","phaseName","methods","AnimationGroupPlayer","doneCount","destroyCount","startCount","_onDestroy","timeAtPosition","beforeDestroy","ɵPRE_STYLE","RequestMethod","Headers","headers","_headers","_normalizedNames","append","fromResponseHeaderString","headersString","line","lcName","mayBeSetNormalizedName","toJSON","serialized","entries","QueryEncoder","encodeKey","standardEncoding","encodeValue","URLSearchParams","rawParams","queryEncoder","paramsMap","eqIdx","paramParser","appendAll","storedParam","setAll","searchParams","replaceAll","paramsList","RequestOptions","withCredentials","Get","Post","Put","Delete","Options","Head","Patch","normalizeMethodName","_mergeSearchParams","_parseParams","objParams","_appendParam","User","UserId","Password","Devicefingerprint","userAuthentication","userName","password","devicefingerprint","usr","headerOptions","getLoginCarousel","signOut","redirect","get_loginResponse","loginResponse","set_loginResponse","resendCode","validateSecCode","secCode","pred","notPred","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","monthsNominative","monthsSubjective","fromEventPattern","addHandler","removeHandler","retValue","defer","separator","identity","iif","trueResult","falseResult","forms_1","dropdown_1","Paginator","pageLinkSize","alwaysShow","_first","_rows","updatePaginatorState","updatePageLinks","_rowsPerPageOptions","rowsPerPageItems","isFirstPage","getPage","isLastPage","getPageCount","calculatePageLinkBoundaries","numberOfPages","visiblePages","boundaries","changePage","pc","changePageToFirst","changePageToPrev","changePageToNext","changePageToLast","onPageLinkClick","onRppChange","paginatorState","DropdownModule","observeOn","ObserveOnOperator","ObserveOnSubscriber","notification","scheduleMessage","ObserveOnMessage","extendStatics","setPrototypeOf","__extends","__assign","__rest","getOwnPropertySymbols","propertyIsEnumerable","Reflect","decorate","__param","paramIndex","decorator","metadataKey","metadataValue","__awaiter","_arguments","P","generator","fulfilled","rejected","__generator","sent","trys","ops","verb","op","__createBinding","__exportStar","__values","__read","ar","__spread","__spreadArrays","il","jl","__await","__asyncGenerator","asyncIterator","resume","fulfill","settle","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__importStar","mod","__esModule","default","__importDefault","__classPrivateFieldGet","receiver","privateMap","__classPrivateFieldSet","animations_1","DROPDOWN_VALUE_ACCESSOR","Dropdown","autoWidth","filterBy","resetFilterOnHide","dropdownIcon","autoDisplayFirst","emptyFilterMessage","autoZIndex","baseZIndex","showTransitionOptions","hideTransitionOptions","onShow","onHide","onModelChange","onModelTouched","itemTemplate","selectedItemTemplate","groupTemplate","optionsToDisplay","updateSelectedOption","_options","optionLabel","optionsChanged","activateFilter","updateEditableLabel","updateDimensions","selectedOption","editableInputViewChild","onItemClick","option","itemClick","focusViewChild","filled","hide","dimensionsUpdated","overlayVisible","alignOverlay","selectedOptionUpdated","itemsWrapper","overlay","scrollInView","resetFilter","updateFilledState","filterViewChild","findOption","placeholder","onMouseclick","selfClick","clearClick","onEditableInputClick","bindDocumentClickListener","onEditableInputFocus","onEditableInputChange","onOverlayAnimationStart","toState","appendOverlay","zIndex","zindex","bindDocumentResizeListener","selectedListItem","onOverlayHide","appendTo","getWidth","restoreOverlayAppend","absolutePosition","relativePosition","onInputFocus","onInputBlur","findPrevEnabledOption","prevEnabledOption","findNextEnabledOption","nextEnabledOption","onKeydown","selectedItemIndex","findOptionGroupIndex","nextItemIndex","itemIndex","groupIndex","findOptionIndex","prevItemIndex","prevGroup","searchTimeout","newOption","char","previousSearchChar","currentSearchChar","searchValue","searchIndex","searchOptionWithinGroup","searchOption","searchOptionInRange","inGroup","opts_1","inputValue","searchFields","filteredGroups","optgroup","filteredSubOptions","applyFocus","documentClickListener","unbindDocumentClickListener","clearClickState","documentResizeListener","onWindowResize","unbindDocumentResizeListener","opacity","isScheduler","takeUntil","notifier","TakeUntilOperator","takeUntilSubscriber","TakeUntilSubscriber","notifierSubscription","seenValue","startWith","RenderType_ɵEmptyOutletComponent","View_ɵEmptyOutletComponent_0","View_ɵEmptyOutletComponent_Host_0","ɵEmptyOutletComponentNgFactory","bindCallback","mergeMap","MergeMapOperator","MergeMapSubscriber","ish","flatMap","_subscriptions","_ctorUnsubscribe","flattenUnsubscriptionErrors","teardown","tmp","subscriptionIndex","errs","valuesPolyfill","object","planCode","isSSN","minChar","maxResults","maxResultsMessage","resultsLinkMessage","zeroResultsMessage","minimumCharacterMessage","ssnSearchMessage","isMulti","Participant","noCommaTerm","SEARCH_URL","participants","_response","FirstName","HomeUrl","LastName","PlanCode","PlanName","Ssn","PersonID","AccountID","setParticipantSearchResults","setParticipant","PersonId","AccountId","getParticipantPlanAccess","getDetailedStatementAsOfDate","getParticipantEndDate","getParticipationDate","getParticipationPlanType","getMode","getBcoDomain","getRateOfReturn","getParticipantKpis","getParticipantAddress","getParticipantName","getParticipantDemographics","getParticipantContributionsVestements","getParticipantVestingInformation","addRehireParticipant","ssn","getParticipantSearchResults","getActivityHistoryByDate","_isTestMode","_personId","_isShowCustom","StartDate","EndDate","TestMode","ShowCustom","getStatementData","_accounts","_funds","_sortBy","_testMode","_contributionView","Accounts","Funds","SortBy","ContributionView","getArchivedStatements","getParticipantStatementsFlag","getStatementFlag","getParticipantStatementInfo","getContractorStatements","postParameters","getDownloadStatement","_statement","Filename","FileName","DocId","DocID","Source","getCsvStatement","postparams","AccountText","AccountCount","DetailedView","cancelTransaction","_personid","_transactionNum","_transactionType","TransactionNumber","TransactionType","getCustomStatementFilters","_firstName","_homeUrl","_lastName","_planCode","_planName","_ssn","_fullName","_accountId","_messageOnly","FullName","MessageOnly","displaySsn","displayPlan","processHoursFunction","nominative","accusative","genitive","calculatedScrollbarWidth","calculatedScrollbarHeight","indexWithDisplay","elementDimensions","getHiddenElementDimensions","targetHeight","targetWidth","targetOffset","getViewport","elementOuterHeight","elementOuterWidth","targetOuterHeight","targetOuterWidth","windowScrollTop","windowScrollLeft","getWindowScrollLeft","elementHeight","elementWidth","dimensions","borderTopValue","borderTop","paddingTopValue","paddingTop","containerRect","scroll","itemHeight","fadeIn","fadeOut","gap","fading","margin","getHorizontalPadding","paddingLeft","getHorizontalMargin","getInnerHeight","paddingBottom","getHeight","borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth","win","replaceElementWith","replacementElement","isIE","ua","isElement","scrollDiv","scrollbarWidth","calculateScrollbarHeight","scrollbarHeight","getSelection","removeAllRanges","rangeCount","getRangeAt","getClientRects","getBrowser","browser","resolveUserAgent","version","modalVisibilityStream","modalVisibility$","announceModalDisplayed","announceModalDismissed","Scheduler","AsyncSubject","HttpHandler","HttpBackend","HttpHeaders","normalizedNames","lazyUpdate","lazyInit","maybeSetNormalizedName","copyFrom","applyUpdate","base","toDelete_1","HttpUrlEncodingCodec","decodeKey","decodeValue","HttpParams","codec","updates","cloneFrom","encoder","fromString","eKey","base_1","isArrayBuffer","ArrayBuffer","isBlob","isFormData","FormData","HttpRequest","third","fourth","reportProgress","mightHaveBody","urlWithParams","qIdx","serializeBody","detectContentTypeHeader","setHeaders","setParams","HttpEventType","HttpResponseBase","defaultStatus","defaultStatusText","statusText","ok","HttpHeaderResponse","ResponseHeader","HttpResponse","Response","HttpErrorResponse","addBody","HttpClient","request","events$","res$","jsonp","callbackParam","HttpInterceptorHandler","interceptor","intercept","HTTP_INTERCEPTORS","NoopInterceptor","XSSI_PREFIX","XhrFactory","BrowserXhr","build","HttpXhrBackend","xhrFactory","setRequestHeader","detectedType","reqBody","headerResponse","partialFromXhr","getAllResponseHeaders","responseURL","getResponseHeader","getResponseUrl","onLoad","responseText","originalBody","sentHeaders","onDownProgress","progressEvent","DownloadProgress","loaded","lengthComputable","partialText","onUpProgress","progress","UploadProgress","upload","Sent","abort","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfTokenExtractor","HttpXsrfCookieExtractor","cookieName","lastCookieString","lastToken","parseCount","cookieString","HttpXsrfInterceptor","tokenService","headerName","lcUrl","HttpInterceptingHandler","backend","chain","interceptors","HttpClientXsrfModule","HttpClientXsrfModule_1","withOptions","HttpClientModule","take","TakeOperator","TakeSubscriber","AnimationFrameAction","cancelAnimationFrame","AnimationFrameScheduler","animationFrameScheduler","animationFrame","throwIfEmpty","errorFactory","defaultErrorFactory","ThrowIfEmptyOperator","ThrowIfEmptySubscriber","SubjectSubscription","subscriberIndex","relativeTimeWithSingular","delayFor","DelayOperator","DelaySubscriber","queue","delay_1","_schedule","scheduleNotification","DelayMessage","hookCallback","hasOwnProp","isObjectEmpty","isUndefined","arrLen","createUTC","strict","createLocalOrUTC","utc","getParsingFlags","_pf","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","rfc2822","weekdayMismatch","_isValid","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","fun","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_f","_tzm","_isUTC","_offset","Moment","updateOffset","isMoment","suppressDeprecationWarnings","firstTime","deprecationHandler","argLen","stack","deprecations","deprecateSimple","mergeConfigs","parentConfig","Locale","zeroFill","targetLength","forceSign","absNumber","pow","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","func","localeData","formatMoment","expandFormat","makeFormatFunction","replaceLongDateFormatTokens","addUnitAlias","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","strictRegex","isStrict","getParseRegexForToken","regexEscape","p1","p2","p3","p4","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","dayOfMonth","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","parseTwoDigitYear","getSetYear","createDate","createUTCDate","UTC","getUTCFullYear","firstWeekOffset","fwd","getUTCDay","dayOfYearFromWeeks","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","lowercase","matchMeridiem","_meridiemParse","kInput","_isPm","_meridiem","pos1","pos2","globalLocale","getSetHour","baseConfig","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","loadLocale","oldLocale","isLocaleNameSane","_abbr","getSetGlobalLocale","getLocale","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","yearStr","weekdayStr","parsedInput","checkWeekday","obsOffset","militaryOffset","numOffset","calculateOffset","setUTCMinutes","getUTCMinutes","defaults","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","currentDateArray","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","_week","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","isPm","meridiemFixWrap","erasConvertYear","prepareConfig","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromStringAndArray","createFromInputFallback","configFromString","millisecond","configFromObject","configFromInput","isUTC","prototypeMin","prototypeMax","pickBy","moments","ordering","Duration","quarters","quarter","isoWeek","milliseconds","unitHasDecimal","orderLen","isDurationValid","_milliseconds","_days","_months","_bubble","isDuration","absRound","utcOffset","sign","offsetFromString","chunkOffset","cloneWithOffset","setTime","local","getDateOffset","isUtc","aspNetRegex","isoRegex","createDuration","diffRes","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","addSubtract","isAdding","subtract","isMomentInput","arrayTest","dataTypeTest","isNumberOrStringArray","objectTest","propertyTest","propertyLen","isMomentInputObject","isCalendarSpec","monthDiff","wholeMonthDiff","newLocaleData","defaultFormat","defaultFormatUtc","lang","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","preParsePostFormat","formats","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","inputString","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","getPrioritizedUnits","prioritizedLen","toObject","toISOString","keepOffset","inspect","isLocal","for","unix","creationData","eraName","eraNarrow","eraAbbr","eraYear","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","listMonthsImpl","listWeekdaysImpl","localeSorted","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","_relativeTime","pastFuture","_eras","_monthsParseExact","_weekdays","_weekdaysMin","_weekdaysParseExact","_fullWeekdaysParse","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","posNegDuration","relativeTime$1","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","tap","DoOperator","TapSubscriber","_tapNext","_tapError","_tapComplete","counter","multicast","subjectOrSubjectFactory","MulticastOperator","fns","pipeFromArray","RefCountOperator","refCounter","RefCountSubscriber","sharedConnection","VENDOR_PREFIXES","TEST_ELEMENT","setTimeoutContext","bindFn","invokeArrayArg","each","deprecationMessage","nextKey","dest","src","inherit","childP","baseP","boolOrFn","ifUndefined","val1","val2","addEventListeners","splitStr","removeEventListeners","hasParent","inStr","inArray","findByKey","uniqueArray","prefixed","camelProp","_uniqueId","getWindowForElement","ownerDocument","defaultView","parentWindow","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","PROPS_XY","PROPS_CLIENT_XY","inputTarget","inputHandler","pointersLen","changedPointersLen","changedPointers","isFirst","isFinal","session","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","center","getCenter","timeStamp","deltaTime","angle","getAngle","distance","getDistance","offsetDelta","prevDelta","prevInput","deltaX","deltaY","computeDeltaXY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","scale","rotation","getRotation","maxPointers","velocity","velocityX","velocityY","lastInterval","computeIntervalInputData","srcEvent","computeInputData","clientX","clientY","sqrt","atan2","PI","evEl","evTarget","evWin","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","MouseInput","pressed","pointerType","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","pointerEvents","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","SingleTouchInput","started","normalizeSingleTouches","touches","changedTouches","TOUCH_INPUT_MAP","TouchInput","targetIds","getTouches","allTouches","targetTouches","changedTargetTouches","touch","TouchMouseInput","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","dx","dy","inputEvent","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_MAP","touchMap","cssSupports","getTouchActionProps","TouchAction","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","recognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","recognizers","preset","Manager","handlers","oldCssProps","inputClass","touchAction","toggleCssProps","recognizeWith","requireFailure","cssProps","compute","getTouchAction","hasPanX","hasPanY","cleanTouchActions","preventDefaults","prevented","hasNone","DIRECTION_LEFT","DIRECTION_UP","preventSrc","dropRecognizeWith","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","process","attrTest","optionPointers","isRecognized","DIRECTION_HORIZONTAL","directionTest","hasMoved","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","domEvents","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","stop","stopped","curRecognizer","gestureEvent","gesture","triggerDomEvent","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","DIRECTION_NONE","DIRECTION_RIGHT","DIRECTION_DOWN","DIRECTION_VERTICAL","DIRECTION_ALL","Tap","Pan","Swipe","Pinch","Rotate","Press","numbersNouns","numberNoun","hundred","ten","one","numberAsNoun","SimpleInnerSubscriber","SimpleOuterSubscriber","innerSubscribe","EveryOperator","EverySubscriber","everyValueMatch","entryPoint","checkSession","RenderType_AppComponent","View_AppComponent_0","View_AppComponent_Host_0","AppComponentNgFactory","isNode","optimizeGroupPlayer","normalizeKeyframes","driver","normalizer","preStyles","postStyles","normalizedKeyframes","previousOffset","previousKeyframe","kf","isSameOffset","normalizedKeyframe","normalizedValue","normalizePropertyName","normalizeStyleValue","listenOnPlayer","copyAnimationEvent","makeAnimationEvent","triggerName","fromState","getOrSetAsInMap","parseTimelineCommand","separatorPos","_contains","elm1","elm2","_matches","_query","_isNode","fn_1","matchesSelector","mozMatchesSelector","oMatchesSelector","elm","_CACHED_BODY","_IS_WEBKIT","validateStyleProperty","containsVendorPrefix","matchesElement","containsElement","invokeQuery","hypenatePropsObject","newObj","NoopAnimationDriver","computeStyle","easing","previousPlayers","scrubberAccessRequested","AnimationDriver","resolveTimingValue","_convertTimeValueToMS","resolveTiming","allowNegativeValues","delayMatch","easingVal","containsErrors","parseTimeExpression","copyObj","copyStyles","readPrototype","getStyleAttributeString","writeStyleAttribute","styleAttrValue","setStyles","formerStyles","dashCaseToCamelCase","eraseStyles","normalizeAnimationEntry","PARAM_REGEX","SUBSTITUTION_EXPR_START","extractStyleParams","interpolateParams","original","varName","localVal","iteratorToArray","DASH_CASE_REGEXP","allowPreviousPlayerStylesMerge","balancePreviousStylesIntoKeyframes","previousStyles","previousStyleProps","startingKeyframe_1","missingStyleProps_1","visitDslNode","visitor","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","makeLambdaFromStates","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN_REGEX","buildAnimationAst","AnimationAstBuilderVisitor","_driver","AnimationAstBuilderContext","_resetContextStyleTimingState","currentQuerySelector","collectedStyles","currentTime","queryCount","depCount","states","stateDef_1","styleAst","astParams","containsDynamicStyles","missingSubs_1","stylesObj_1","missingSubsArr","transitionValue","expressions","matchers","eventStr","parseAnimationAlias","parseInnerTransitionStr","normalizeAnimationOptions","furthestTime","innerAst","timingAst","makeTimingAst","ast","dynamic","constructTimingAst","currentAnimateTimings","styleMetadata","styleMetadata_1","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","styleTuple","collectedEasing","styleData","styleMap","endTime","startTime","collectedEntry","updateCollectedStyle","totalKeyframesWithOffsets","offsetsOutOfOrder","keyframesOutOfRange","style$$1","offsetVal","consumeOffset","generatedOffset","animateDuration","durationUpToThisFrame","parentSelector","currentQuery","hasAmpersand","NG_TRIGGER_SELECTOR","normalizeSelector","includeSelf","originalSelector","currentTransition","createTimelineInstruction","preStyleProps","postStyleProps","subTimeline","ElementInstructionMap","_map","consume","instructions","existingInstructions","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","buildAnimationTimelines","rootElement","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","currentTimeline","timelines","timeline","containsAnimation","tl","allowOnlyTimelineStyles","elementInstructions","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","previousNode","instructionTimings","appendInstructionToTimeline","updateOptions","subContextCount","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","delayNextStep","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","incrementTime","getCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","currentQueryTotal","sameElementTimeline","currentQueryIndex","maxTime","currentStaggerTime","startingTime","AnimationTimelineContext","_enterClassName","_leaveClassName","initialTimeline","skipIfExists","newOptions","optionsToUpdate","newParams","paramsToUpdate_1","_copyOptions","oldParams_1","newTime","updatedTimings","stretchStartingKeyframe","elements","TimelineBuilder","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_localTimelineStyles","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","_updateStyle","allStyles","allProperties","getFinalKeyframe","details0","details1","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","SubTimelineBuilder","_stretchStartingKeyframe","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","decimalPoints","mult","AnimationStyleNormalizer","WebAnimationsStyleNormalizer","userProvidedProperty","normalizedProperty","strVal","DIMENSIONAL_PROP_MAP","valAndSuffixMatch","makeBooleanMap","createTransitionInstruction","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","AnimationTransitionFactory","_triggerName","_stateStyles","currentState","matchFns","oneOrMoreTransitionsMatch","buildStyles","stateName","backupStateStyler","stateStyler","backupStyles","currentOptions","nextOptions","skipAstBuild","transitionAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","queriedElementsList","AnimationStateStyles","defaultParams","combinedParams","styleObj_1","AnimationTrigger","transitionFactories","balanceProperties","fallbackTransition","matchTransition","matchStyles","key1","key2","EMPTY_INSTRUCTION_MAP","TimelineAnimationEngine","bodyNode","_normalizer","_animations","_playersById","register","_buildPlayer","autoStylesMap","inst","_getPlayer","baseEvent","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","StateValue","isObj","absorbOptions","DEFAULT_STATE_VALUE","AnimationTransitionNamespace","_engine","_triggers","_queue","_elementListeners","_hostClassName","phase","triggersWithStates","statesByElement","NG_TRIGGER_CLASSNAME","afterFlush","_getTrigger","defaultToFallback","playersOnElement","playersByElement","queued","isFallbackTransition","totalQueuedPlayers","objEquals","fromStyles_1","toStyles_1","reportError","deregister","stateMap","clearElementCache","elementPlayers","_signalRemovalForInnerTriggers","namespaces","fetchNamespacesByElement","triggerLeaveAnimation","destroyAfterComplete","triggerStates","players_1","markElementAsRemoved","processLeaveNode","prepareLeaveAnimationListeners","visitedTriggers_1","engine","childElementCount","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","destroyInnerAnimations","_onRemovalComplete","insertNode","drainQueuedTransitions","microtaskId","markedForDestroy","d0","d1","elementContainsData","containsData","TransitionAnimationEngine","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","onRemovalComplete","createNamespace","_balanceNamespaceList","collectEnterElement","registerTrigger","_fetchNamespace","afterFlushAnimationsDone","elementStates","nsId","details","markElementAsDisabled","_buildInstruction","subTimelines","skipBuildAst","containerElement","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","cleanupFns","_flushAnimations","quietFns_1","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","nodeIsOrphaned","stringMap","setVal_1","setVal","errors_1","allPreviousPlayersMap","animationElementMap","_beforeAnimationBuild","_getPreviousPlayers","prevPlayer","replaceNodes","replacePostStylesAsPre","postStylesMap","cloakAndComputeStyles","preStylesMap","pre","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","overrideTotalTime","parentWithAnimation_1","parentsToAdd","detectedParent","innerPlayer","_buildAnimation","setRealPlayer","parentPlayers","playersForElement","syncPlayerEvents","queriedPlayerResults","queriedInnerElements","queriedPlayers","activePlayers","removeNodesAfterAnimationDone","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation_1","targetNameSpaceId","targetTriggerName","timelineInstruction","realPlayer","getRealPlayer","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","finalPlayers","_flattenGroupPlayersRecur","wrappedPlayer","currentValues","deleteOrUnsetInMap","TransitionAnimationPlayer","_player","_containsRealPlayer","_queuedCallbacks","_queueEvent","cloakElement","valuesMap","elementPropsMap","defaultStyle","cloakVals","failedElements","roots","rootMap","nodeSet","localRootMap","getRoot","postEntry","preEntry","AnimationEngine","_triggerCache","_transitionEngine","_timelineEngine","componentId","buildTrigger","onInsert","onRemove","disableAnimations","eventPhase","packageNonAnimatableStyles","startStyles","endStyles","filterNonAnimatableStyles","SpecialCasedStyles","_startStyles","_endStyles","initialStylesByElement","_initialStyles","isNonAnimatableStyle","ElementAnimationStyleHandler","_name","_duration","_easing","_fillMode","_onDoneFn","_startTime","_position","_eventFn","_handleCallback","anim","getAnimationStyle","countChars","setAnimationStyle","addRemoveAnimationEvent","playPauseAnimation","findIndexForAnimation","timestamp","_ngTestManualTimestamp","elapsedTime","animationName","findMatchingTokenIndex","searchToken","doRemove","CssKeyframesPlayer","_finalStyles","_specialStyles","_buildStyler","_styler","_flushStartFns","_flushDoneFns","finished_1","DirectStylePlayer","_startingStyles","__initialized","_styles","CssKeyframesDriver","_count","_warningIssued","buildKeyframeElement","keyframeStr","kfElm","_notifyFaultyScrubber","previousCssKeyframePlayers","flatKeyframes","flattenKeyframesIntoStyles","specialStyles","WebAnimationsPlayer","_initialized","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","_resetDomPlayerState","cancel","WebAnimationsDriver","_isNativeImpl","getElementAnimateFn","_cssKeyframesDriver","overrideWebAnimationsSupport","supported","playerOptions","previousWebAnimationPlayers","BrowserAnimationBuilder","rootRenderer","_nextAnimationId","issueAnimationCommand","BrowserAnimationFactory","_id","RendererAnimationPlayer","_command","_listen","AnimationRendererFactory","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","BaseAnimationRenderer","_scheduleCountTask","scheduleListenerCallback","AnimationRenderer","dotIndex","resolveElementFromTarget","InjectableAnimationEngine","instantiateSupportedAnimationDriver","instantiateDefaultStyleNormalizer","instantiateRendererFactory","ANIMATION_MODULE_TYPE","BrowserAnimationsModule","DataTransferEffect","COPY","LINK","MOVE","DragDropConfig","onDragStartClass","onDragEnterClass","onDragOverClass","onSortableDragClass","dragEffect","dragCursor","defaultCursor","__decorate$1","dragDropServiceFactory","DragDropService","allowedDropZones","dragDropSortableServiceFactory","DragDropSortableService","_elem","markSortable","AbstractComponent","elemRef","_dragDropService","_cdr","_dragEnabled","dropEnabled","dropZones","cloneItem","_defaultCursor","cursor","ondragenter","_onDragEnter","ondragover","_onDragOver","ondragleave","_onDragLeave","ondrop","_onDrop","onmousedown","_target","ondragstart","_dragHandle","_onDragStart","effectAllowed","dragImage","setDragImage","img","HTMLImageElement","createImage","callFun","imageElement","x_offset","y_offset","_dragHelper","offsetX","offsetY","effectCursor","ondragend","_onDragEnd","setDragHandle","_isDropAllowed","_onDragEnterCallback","_onDragOverCallback","_onDragLeaveCallback","_preventAndStop","_onDropCallback","isDragged","files","dragData","_onDragStartCallback","_onDragEndCallback","__decorate$3","__metadata$2","AbstractHandleComponent","_Component","__decorate$2","__metadata$1","DraggableComponent","dragDropService","cdr","onDragSuccessCallback","dragEnabled","mouseEvent","DraggableHandleComponent","__decorate$4","__metadata$3","DroppableComponent","onDropSuccess","__decorate$5","__metadata$4","SortableContainer","_sortableDataService","_sortableData","sortableData","sortableHandler","SortableFormArrayHandler","SortableArrayHandler","sortableContainer","getItemAt","removeItemAt","insertItemAt","SortableComponent","_sortableContainer","onDragStartCallback","onDragOverCallback","onDragEndCallback","onDropSuccessCallback","SortableHandleComponent","DndModule_1","DndModule","AppModuleNgFactory","p0_1","p0_2","p1_0","p2_0","p2_1","p2_2","p2_3","QueueAction","QueueScheduler","queueScheduler","InnerSubscriber","subscribeToResult","outerSubscriber","getAsOfDateFromSupervisor","pType","getJHContacts","getPayroll","getSearch","getContent","getMultiplanContent","getInvestmentSummary","getPlanKPIs","getMultiplanKPIs","setCurrentPlan","getRefreshPlan","currentUrl","getAsOfDate","getAsOfDatePPT","getPlanInfo","getPlanStatementDetails","getPlanStatementOptions","getPeriodicReports","getMyDocuments","sendParticipantForm","ParticipantFormInfo","getPlanForms","getFiduciaryService","getFormsHistory","getNoticData","getEdeliveryService","updateEdeliveryService","selectedCode"],"mappings":"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BA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyBC,CAAQ,EAAQ,U,qBCN1D,IAAImR,EAAM,CACT,mEAAoE,CACnE,OACA,EACA,EACA,IAED,mDAAoD,CACnD,OACA,EACA,IAED,iDAAkD,CACjD,OACA,EACA,EACA,IAED,qEAAsE,CACrE,OACA,EACA,EACA,IAED,qDAAsD,CACrD,OACA,EACA,IAED,mDAAoD,CACnD,OACA,EACA,EACA,IAED,sEAAuE,CACtE,OACA,EACA,EACA,IAED,sDAAuD,CACtD,OACA,EACA,IAED,oDAAqD,CACpD,OACA,EACA,EACA,IAED,sDAAuD,CACtD,OACA,EACA,IAED,0DAA2D,CAC1D,OACA,EACA,IAED,4DAA6D,CAC5D,OACA,EACA,IAED,wCAAyC,CACxC,OACA,EACA,EACA,EACA,IAED,gDAAiD,CAChD,OACA,EACA,EACA,EACA,EACA,EACA,EACA,IAED,oDAAqD,CACpD,OACA,EACA,EACA,EACA,EACA,IAED,wDAAyD,CACxD,OACA,EACA,IAED,sCAAuC,CACtC,OACA,EACA,EACA,IAED,0CAA2C,CAC1C,OACA,EACA,EACA,IAED,qCAAsC,CACrC,OACA,EACA,EACA,EACA,IAED,yCAA0C,CACzC,OACA,EACA,EACA,IAED,qDAAsD,CACrD,OACA,EACA,EACA,IAED,6CAA8C,CAC7C,OACA,EACA,EACA,EACA,IAED,6CAA8C,CAC7C,OACA,EACA,EACA,IAED,qCAAsC,CACrC,OACA,EACA,EACA,IAED,8CAA+C,CAC9C,OACA,IAED,uCAAwC,CACvC,OACA,EACA,EACA,EACA,EACA,EACA,IAED,qCAAsC,CACrC,OACA,IAED,qCAAsC,CACrC,OACA,EACA,IAED,yDAA0D,CACzD,OACA,EACA,EACA,IAED,mCAAoC,CACnC,OACA,EACA,EACA,KAGF,SAASixL,EAAoB/5B,GAC5B,IAAIg6B,EAAMlxL,EAAIk3J,GACd,OAAIg6B,EAOGh1K,QAAQ2rB,IAAIqpJ,EAAI70L,MAAM,GAAG2D,IAAIo3J,EA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","file":"main.35ef9dd409740bbe030e.js","sourcesContent":["//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var subscribeToArray = function (array) {\n return function (subscriber) {\n for (var i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n };\n};\n//# sourceMappingURL=subscribeToArray.js.map\n","import { Injectable, OnInit } from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\nimport { Observable , of as observableOf } from 'rxjs';\r\nimport * as moment from 'moment';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class DatepickerService {\r\n today: Date = new Date();\r\n constructor(private datepipe: DatePipe) { }\r\n\r\n ValidateSelection(_startDate: Date, _endDate: Date, earliestBeginDate: string,\r\n minDate: Date, maxDate: Date, isContractorStm: boolean = false) {\r\n var errorCondition = this.checkErrorCondition(_startDate, _endDate, earliestBeginDate, minDate, maxDate, isContractorStm);\r\n var result = {\r\n isError: false,\r\n errorMessage :\"\"\r\n }\r\n if (errorCondition != \"\") {\r\n result.isError = true;\r\n result.errorMessage = this.parseErrorMessage(errorCondition, earliestBeginDate, maxDate);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n checkErrorCondition(_startDate: Date, _endDate: Date, earliestBeginDate: string,\r\n minDate: Date, maxDate: Date, isContractorStm: boolean) {\r\nconsole.log(\"check error condition:\", _startDate, _endDate, earliestBeginDate, minDate, maxDate, isContractorStm);\r\n if (_startDate == null || _endDate == null) {\r\n return \"DateEmpty\";\r\n }\r\n if (_startDate < new Date(earliestBeginDate)) {\r\n return \"StartDateBefore\";\r\n }\r\n if (_startDate < minDate) {\r\n return \"StartDateBefore\";\r\n }\r\n if (_endDate > maxDate) {\r\n return \"EndDateAfter\";\r\n }\r\n //non-contractor statement logic only\r\n if (_startDate > _endDate && !isContractorStm) { \r\n return \"StartEqualBeforeEnd\";\r\n }\r\n //contractor statement logic only\r\n if (_startDate >= _endDate && isContractorStm) {\r\n return \"StartBeforeEnd\";\r\n }\r\n return \"\";\r\n }\r\n\r\n parseErrorMessage(condition: string, earliestBeginDate: string, maxDate: Date) {\r\n console.log(\"condition:\", condition);\r\n if (condition == \"dateRangeTooLarge\") {\r\n return \"Please select a date range of up 12 consecutive months.\";\r\n }\r\n\r\n if (condition == \"StartDateBefore\") {\r\n let beginDate = new Date(earliestBeginDate);\r\n console.log(\"begin date:\", beginDate);\r\n return \"Start Date must be on or after \" + this.datepipe.transform(beginDate, 'M/d/yyyy'); \r\n }\r\n\r\n if (condition == \"EndDateAfter\") {\r\n return \" End Date must be on or before \" + this.datepipe.transform(maxDate, 'M/d/yyyy');\r\n }\r\n\r\n if (condition == \"StartEqualBeforeEnd\") {\r\n return \"Start Date must be on or before End Date.\";\r\n }\r\n\r\n if (condition == \"StartBeforeEnd\") {\r\n return \"Start Date must be before End Date.\";\r\n }\r\n\r\n if (condition == \"DateEmpty\") {\r\n return \"Please enter Start and End Dates.\";\r\n } \r\n\r\n return \"\";\r\n }\r\n\r\n getFormattedDate(date: Date) {\r\n let dateString = date.toDateString();\r\n\r\n dateString = dateString.substring(dateString.indexOf(\" \") + 1);\r\n let dateArray = dateString.split(\" \");\r\n\r\n return dateArray[0] + \" \" + dateArray[1] + \", \" + dateArray[2];\r\n }\r\n\r\n SetStartDate(selectedDate: Date, detailedAsofdate: Date, participationDate: Date) {\n let earliestBeginDate = this.today.toString(); \n let theStartDate: Date;\n\n let theDetailedAsofDate = detailedAsofdate;\n let theParticipationDate = participationDate;\n\n if (theDetailedAsofDate > theParticipationDate) {\n earliestBeginDate = this.getFormattedDate(theDetailedAsofDate);\r\n }\n else {\n earliestBeginDate = this.getFormattedDate(theParticipationDate);\r\n }\n\n if ((selectedDate < theDetailedAsofDate) || (selectedDate < theParticipationDate)) {\n if (theDetailedAsofDate > theParticipationDate) {\n theStartDate = theDetailedAsofDate;\r\n earliestBeginDate = this.getFormattedDate(theDetailedAsofDate);\r\n }\n else {\n theStartDate = theParticipationDate;\r\n earliestBeginDate = this.getFormattedDate(theParticipationDate);\r\n }\r\n }\r\n else {\r\n theStartDate = selectedDate;\r\n }\r\n\r\n let result = {\r\n earliestBeginDate: earliestBeginDate,\r\n startDate: theStartDate\r\n }\r\n\r\n return result;\r\n }\r\n\r\n SetDate(endDate, daysBack?: number) {\r\n let latestEndDate = this.ParseDate(endDate);\r\n let maxDate = moment(latestEndDate, 'MM/DD/YYYY').toDate();\r\n //be careful since date type passed by reference instead of value.\r\n let _endDate = moment(latestEndDate, 'MM/DD/YYYY').toDate();\r\n let _startDate = moment(latestEndDate, 'MM/DD/YYYY').toDate();\r\n\r\n if (daysBack == undefined) {\r\n _startDate.setMonth(_startDate.getUTCMonth() - 12);\r\n } else {\r\n _startDate.setUTCDate(_startDate.getUTCDate() - daysBack);\r\n }\r\n\r\n console.log(\"start date & _endDate:\", _startDate, _endDate);\r\n\r\n let response = {\r\n latestEndDate: latestEndDate,\r\n maxDate: maxDate,\r\n startDate: _startDate,\r\n endDate: _endDate\r\n };\r\n\r\n return response;\r\n }\r\n\r\n ParseDate(dateStr: string) {\r\n let stripedDateStr = dateStr.replace(\"/Date(\", \"\").replace(\")/\", \"\");\r\n let dateInt = parseInt(stripedDateStr, 10);\r\n\r\n if (dateInt < 0) {\r\n return;\r\n }\r\n\r\n let date = new Date(dateInt);\r\n\r\n return date.toLocaleDateString(\"en\");\r\n }\r\n}","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function noop() { }\n//# sourceMappingURL=noop.js.map\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort:\n 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays:\n 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","/** PURE_IMPORTS_START _isArray PURE_IMPORTS_END */\nimport { isArray } from './isArray';\nexport function isNumeric(val) {\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n//# sourceMappingURL=isNumeric.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function withLatestFrom() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return function (source) {\n var project;\n if (typeof args[args.length - 1] === 'function') {\n project = args.pop();\n }\n var observables = args;\n return source.lift(new WithLatestFromOperator(observables, project));\n };\n}\nvar WithLatestFromOperator = /*@__PURE__*/ (function () {\n function WithLatestFromOperator(observables, project) {\n this.observables = observables;\n this.project = project;\n }\n WithLatestFromOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project));\n };\n return WithLatestFromOperator;\n}());\nvar WithLatestFromSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(WithLatestFromSubscriber, _super);\n function WithLatestFromSubscriber(destination, observables, project) {\n var _this = _super.call(this, destination) || this;\n _this.observables = observables;\n _this.project = project;\n _this.toRespond = [];\n var len = observables.length;\n _this.values = new Array(len);\n for (var i = 0; i < len; i++) {\n _this.toRespond.push(i);\n }\n for (var i = 0; i < len; i++) {\n var observable = observables[i];\n _this.add(subscribeToResult(_this, observable, undefined, i));\n }\n return _this;\n }\n WithLatestFromSubscriber.prototype.notifyNext = function (_outerValue, innerValue, outerIndex) {\n this.values[outerIndex] = innerValue;\n var toRespond = this.toRespond;\n if (toRespond.length > 0) {\n var found = toRespond.indexOf(outerIndex);\n if (found !== -1) {\n toRespond.splice(found, 1);\n }\n }\n };\n WithLatestFromSubscriber.prototype.notifyComplete = function () {\n };\n WithLatestFromSubscriber.prototype._next = function (value) {\n if (this.toRespond.length === 0) {\n var args = [value].concat(this.values);\n if (this.project) {\n this._tryProject(args);\n }\n else {\n this.destination.next(args);\n }\n }\n };\n WithLatestFromSubscriber.prototype._tryProject = function (args) {\n var result;\n try {\n result = this.project.apply(this, args);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return WithLatestFromSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=withLatestFrom.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isPromise(value) {\n return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\n//# sourceMappingURL=isPromise.js.map\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort:\n 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","/** PURE_IMPORTS_START _Observable,_util_subscribeTo,_scheduled_scheduled PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { scheduled } from '../scheduled/scheduled';\nexport function from(input, scheduler) {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n return new Observable(subscribeTo(input));\n }\n else {\n return scheduled(input, scheduler);\n }\n}\n//# sourceMappingURL=from.js.map\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort:\n 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays:\n 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n//const Investment_Summary_FundInfo_Url = '/SiteApi/Plan/InvestmentSummaryForFundInfo';\r\nconst PlanInvestment_FundInfo_Url = '/SiteApi/Plan/PlanInvestmentForFundInfo'; // Project Tiger changes\r\nconst PlanFundLifestyle_Url = '/SiteApi/Plan/PlanLifestyleOptions';\r\nconst PARAMS = new HttpParams({\r\n fromObject: {\r\n format: 'json',\r\n origin: '*'\r\n }\r\n});\r\n\r\nconst valuesPolyfill = function values(object) {\r\n return Object.keys(object).map(key => object[key]);\r\n}\r\n\r\nconst values = Object.values || valuesPolyfill\r\n\r\n@Injectable()\r\nexport class PlanInvestmentsService {\r\n\r\n constructor(private http: HttpClient) {\r\n } \r\n \r\n getInvestmentSummaryForFundInfo(asOfDate: string): Observable {\r\n var jsonDateObj = { 'asOfDate': asOfDate }\r\n return this.http.post(PlanInvestment_FundInfo_Url, jsonDateObj).pipe(map(response => { \r\n return response;\r\n }))\r\n }\r\n\r\n getPlanFundLifeStyles(asOfDate: string): Observable {\r\n var jsonDateObj = { 'asOfDate': asOfDate }\r\n return this.http.post(PlanFundLifestyle_Url, jsonDateObj).pipe(map(response => {\r\n //console.log(response);\r\n return response;\r\n }))\r\n }\r\n}\r\n \r\n\r\n\r\n\r\n","/** PURE_IMPORTS_START tslib,_map,_observable_from,_innerSubscribe PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function switchMap(project, resultSelector) {\n if (typeof resultSelector === 'function') {\n return function (source) { return source.pipe(switchMap(function (a, i) { return from(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); })); };\n }\n return function (source) { return source.lift(new SwitchMapOperator(project)); };\n}\nvar SwitchMapOperator = /*@__PURE__*/ (function () {\n function SwitchMapOperator(project) {\n this.project = project;\n }\n SwitchMapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SwitchMapSubscriber(subscriber, this.project));\n };\n return SwitchMapOperator;\n}());\nvar SwitchMapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SwitchMapSubscriber, _super);\n function SwitchMapSubscriber(destination, project) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.index = 0;\n return _this;\n }\n SwitchMapSubscriber.prototype._next = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (error) {\n this.destination.error(error);\n return;\n }\n this._innerSub(result);\n };\n SwitchMapSubscriber.prototype._innerSub = function (result) {\n var innerSubscription = this.innerSubscription;\n if (innerSubscription) {\n innerSubscription.unsubscribe();\n }\n var innerSubscriber = new SimpleInnerSubscriber(this);\n var destination = this.destination;\n destination.add(innerSubscriber);\n this.innerSubscription = innerSubscribe(result, innerSubscriber);\n if (this.innerSubscription !== innerSubscriber) {\n destination.add(this.innerSubscription);\n }\n };\n SwitchMapSubscriber.prototype._complete = function () {\n var innerSubscription = this.innerSubscription;\n if (!innerSubscription || innerSubscription.closed) {\n _super.prototype._complete.call(this);\n }\n this.unsubscribe();\n };\n SwitchMapSubscriber.prototype._unsubscribe = function () {\n this.innerSubscription = undefined;\n };\n SwitchMapSubscriber.prototype.notifyComplete = function () {\n this.innerSubscription = undefined;\n if (this.isStopped) {\n _super.prototype._complete.call(this);\n }\n };\n SwitchMapSubscriber.prototype.notifyNext = function (innerValue) {\n this.destination.next(innerValue);\n };\n return SwitchMapSubscriber;\n}(SimpleOuterSubscriber));\n//# sourceMappingURL=switchMap.js.map\n","/** PURE_IMPORTS_START _Subscriber PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nexport function canReportError(observer) {\n while (observer) {\n var _a = observer, closed_1 = _a.closed, destination = _a.destination, isStopped = _a.isStopped;\n if (closed_1 || isStopped) {\n return false;\n }\n else if (destination && destination instanceof Subscriber) {\n observer = destination;\n }\n else {\n observer = null;\n }\n }\n return true;\n}\n//# sourceMappingURL=canReportError.js.map\n","import { Injectable } from '@angular/core';\n\n// Interfaces\nimport { SpreadsheetFile } from '../../interfaces/payrollassist.interfaces';\n\n@Injectable()\nexport class SpreadsheetFileService {\n private uploadedFile: SpreadsheetFile;\n\n // provides information of the file that was uploaded\n newFileUploaded(newFile: SpreadsheetFile) {\n if (newFile) {\n this.uploadedFile = newFile;\n }\n }\n\n // Removes the uploaded file from the service.\n // Called when the user clicks a button to re-upload the file.\n removeUploadedFile() {\n this.uploadedFile = undefined;\n }\n\n // get uploaded file info\n getUploadedFile(): SpreadsheetFile {\n return this.uploadedFile || undefined;\n }\n}\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone:\n 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays:\n 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone:\n 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","/** PURE_IMPORTS_START tslib,_Subject,_util_ObjectUnsubscribedError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from './Subject';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nvar BehaviorSubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: true,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n if (subscription && !subscription.closed) {\n subscriber.next(this._value);\n }\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n if (this.hasError) {\n throw this.thrownError;\n }\n else if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return this._value;\n }\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, this._value = value);\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isFunction(x) {\n return typeof x === 'function';\n}\n//# sourceMappingURL=isFunction.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nexport function finalize(callback) {\n return function (source) { return source.lift(new FinallyOperator(callback)); };\n}\nvar FinallyOperator = /*@__PURE__*/ (function () {\n function FinallyOperator(callback) {\n this.callback = callback;\n }\n FinallyOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new FinallySubscriber(subscriber, this.callback));\n };\n return FinallyOperator;\n}());\nvar FinallySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(FinallySubscriber, _super);\n function FinallySubscriber(destination, callback) {\n var _this = _super.call(this, destination) || this;\n _this.add(new Subscription(callback));\n return _this;\n }\n return FinallySubscriber;\n}(Subscriber));\n//# sourceMappingURL=finalize.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone:\n 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort:\n 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex:\n /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex:\n /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar TimeoutErrorImpl = /*@__PURE__*/ (function () {\n function TimeoutErrorImpl() {\n Error.call(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n return this;\n }\n TimeoutErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return TimeoutErrorImpl;\n})();\nexport var TimeoutError = TimeoutErrorImpl;\n//# sourceMappingURL=TimeoutError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar EmptyErrorImpl = /*@__PURE__*/ (function () {\n function EmptyErrorImpl() {\n Error.call(this);\n this.message = 'no elements in sequence';\n this.name = 'EmptyError';\n return this;\n }\n EmptyErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return EmptyErrorImpl;\n})();\nexport var EmptyError = EmptyErrorImpl;\n//# sourceMappingURL=EmptyError.js.map\n","import { Injectable, ChangeDetectionStrategy, Component, Input, ViewEncapsulation, TemplateRef, Output, EventEmitter, NgModule, Inject, InjectionToken, ChangeDetectorRef, ContentChildren, Directive, NgZone, PLATFORM_ID, Injector, Renderer2, ElementRef, ViewContainerRef, ComponentFactoryResolver, ApplicationRef, forwardRef, ContentChild, Host, Optional, defineInjectable, inject, LOCALE_ID, RendererFactory2, INJECTOR, ViewChild } from '@angular/core';\nimport { CommonModule, isPlatformBrowser, FormStyle, getLocaleDayNames, getLocaleMonthNames, TranslationWidth, formatDate, DOCUMENT } from '@angular/common';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule } from '@angular/forms';\nimport { merge, Subject, timer, fromEvent, race, Observable, BehaviorSubject } from 'rxjs';\nimport { filter, map, switchMap, takeUntil, take, delay, withLatestFrom, share, tap } from 'rxjs/operators';\nimport { __extends, __read, __values, __assign } from 'tslib';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * @param {?} value\n * @return {?}\n */\nfunction toInteger(value) {\n return parseInt(\"\" + value, 10);\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction toString(value) {\n return (value !== undefined && value !== null) ? \"\" + value : '';\n}\n/**\n * @param {?} value\n * @param {?} max\n * @param {?=} min\n * @return {?}\n */\nfunction getValueInRange(value, max, min) {\n if (min === void 0) { min = 0; }\n return Math.max(Math.min(value, max), min);\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isString(value) {\n return typeof value === 'string';\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isNumber(value) {\n return !isNaN(toInteger(value));\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isInteger(value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction padNumber(value) {\n if (isNumber(value)) {\n return (\"0\" + value).slice(-2);\n }\n else {\n return '';\n }\n}\n/**\n * @param {?} text\n * @return {?}\n */\nfunction regExpEscape(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n/**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\nfunction hasClassName(element, className) {\n return element && element.className && element.className.split &&\n element.className.split(/\\s+/).indexOf(className) >= 0;\n}\nif (typeof Element !== 'undefined' && !Element.prototype.closest) {\n // Polyfill for ie10+\n if (!Element.prototype.matches) {\n // IE uses the non-standard name: msMatchesSelector\n Element.prototype.matches = ((/** @type {?} */ (Element.prototype))).msMatchesSelector || Element.prototype.webkitMatchesSelector;\n }\n Element.prototype.closest = function (s) {\n /** @type {?} */\n var el = this;\n if (!document.documentElement.contains(el)) {\n return null;\n }\n do {\n if (el.matches(s)) {\n return el;\n }\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n}\n/**\n * @param {?} element\n * @param {?} selector\n * @return {?}\n */\nfunction closest(element, selector) {\n if (!selector) {\n return null;\n }\n return element.closest(selector);\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [NgbAccordion](#/components/accordion/api#NgbAccordion) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all accordions used in the application.\n */\nvar NgbAccordionConfig = /** @class */ (function () {\n function NgbAccordionConfig() {\n this.closeOthers = false;\n }\n NgbAccordionConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbAccordionConfig.ngInjectableDef = defineInjectable({ factory: function NgbAccordionConfig_Factory() { return new NgbAccordionConfig(); }, token: NgbAccordionConfig, providedIn: \"root\" });\n return NgbAccordionConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar nextId = 0;\n/**\n * A directive to put on a button that toggles panel opening and closing.\n *\n * To be used inside the [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader)\n *\n * \\@since 4.1.0\n */\nvar NgbPanelToggle = /** @class */ (function () {\n function NgbPanelToggle(accordion, panel) {\n this.accordion = accordion;\n this.panel = panel;\n }\n Object.defineProperty(NgbPanelToggle.prototype, \"ngbPanelToggle\", {\n set: /**\n * @param {?} panel\n * @return {?}\n */\n function (panel) {\n if (panel) {\n this.panel = panel;\n }\n },\n enumerable: true,\n configurable: true\n });\n NgbPanelToggle.decorators = [\n { type: Directive, args: [{\n selector: 'button[ngbPanelToggle]',\n host: {\n 'type': 'button',\n '[disabled]': 'panel.disabled',\n '[class.collapsed]': '!panel.isOpen',\n '[attr.aria-expanded]': 'panel.isOpen',\n '[attr.aria-controls]': 'panel.id',\n '(click)': 'accordion.toggle(panel.id)'\n }\n },] }\n ];\n /** @nocollapse */\n NgbPanelToggle.ctorParameters = function () { return [\n { type: NgbAccordion, decorators: [{ type: Inject, args: [forwardRef(function () { return NgbAccordion; }),] }] },\n { type: NgbPanel, decorators: [{ type: Optional }, { type: Host }, { type: Inject, args: [forwardRef(function () { return NgbPanel; }),] }] }\n ]; };\n NgbPanelToggle.propDecorators = {\n ngbPanelToggle: [{ type: Input }]\n };\n return NgbPanelToggle;\n}());\n/**\n * A directive that wraps an accordion panel header with any HTML markup and a toggling button\n * marked with [`NgbPanelToggle`](#/components/accordion/api#NgbPanelToggle).\n * See the [header customization demo](#/components/accordion/examples#header) for more details.\n *\n * You can also use [`NgbPanelTitle`](#/components/accordion/api#NgbPanelTitle) to customize only the panel title.\n *\n * \\@since 4.1.0\n */\nvar NgbPanelHeader = /** @class */ (function () {\n function NgbPanelHeader(templateRef) {\n this.templateRef = templateRef;\n }\n NgbPanelHeader.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbPanelHeader]' },] }\n ];\n /** @nocollapse */\n NgbPanelHeader.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbPanelHeader;\n}());\n/**\n * A directive that wraps only the panel title with HTML markup inside.\n *\n * You can also use [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader) to customize the full panel header.\n */\nvar NgbPanelTitle = /** @class */ (function () {\n function NgbPanelTitle(templateRef) {\n this.templateRef = templateRef;\n }\n NgbPanelTitle.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbPanelTitle]' },] }\n ];\n /** @nocollapse */\n NgbPanelTitle.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbPanelTitle;\n}());\n/**\n * A directive that wraps the accordion panel content.\n */\nvar NgbPanelContent = /** @class */ (function () {\n function NgbPanelContent(templateRef) {\n this.templateRef = templateRef;\n }\n NgbPanelContent.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbPanelContent]' },] }\n ];\n /** @nocollapse */\n NgbPanelContent.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbPanelContent;\n}());\n/**\n * A directive that wraps an individual accordion panel with title and collapsible content.\n */\nvar NgbPanel = /** @class */ (function () {\n function NgbPanel() {\n /**\n * If `true`, the panel is disabled an can't be toggled.\n */\n this.disabled = false;\n /**\n * An optional id for the panel that must be unique on the page.\n *\n * If not provided, it will be auto-generated in the `ngb-panel-xxx` format.\n */\n this.id = \"ngb-panel-\" + nextId++;\n this.isOpen = false;\n }\n /**\n * @return {?}\n */\n NgbPanel.prototype.ngAfterContentChecked = /**\n * @return {?}\n */\n function () {\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n // only @ContentChildren allows us to specify the {descendants: false} option.\n // Without {descendants: false} we are hitting bugs described in:\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n this.titleTpl = this.titleTpls.first;\n this.headerTpl = this.headerTpls.first;\n this.contentTpl = this.contentTpls.first;\n };\n NgbPanel.decorators = [\n { type: Directive, args: [{ selector: 'ngb-panel' },] }\n ];\n NgbPanel.propDecorators = {\n disabled: [{ type: Input }],\n id: [{ type: Input }],\n title: [{ type: Input }],\n type: [{ type: Input }],\n titleTpls: [{ type: ContentChildren, args: [NgbPanelTitle, { descendants: false },] }],\n headerTpls: [{ type: ContentChildren, args: [NgbPanelHeader, { descendants: false },] }],\n contentTpls: [{ type: ContentChildren, args: [NgbPanelContent, { descendants: false },] }]\n };\n return NgbPanel;\n}());\n/**\n * Accordion is a collection of collapsible panels (bootstrap cards).\n *\n * It can ensure only one panel is opened at a time and allows to customize panel\n * headers.\n */\nvar NgbAccordion = /** @class */ (function () {\n function NgbAccordion(config) {\n /**\n * An array or comma separated strings of panel ids that should be opened **initially**.\n *\n * For subsequent changes use methods like `expand()`, `collapse()`, etc. and\n * the `(panelChange)` event.\n */\n this.activeIds = [];\n /**\n * If `true`, panel content will be detached from DOM and not simply hidden when the panel is collapsed.\n */\n this.destroyOnHide = true;\n /**\n * Event emitted right before the panel toggle happens.\n *\n * See [NgbPanelChangeEvent](#/components/accordion/api#NgbPanelChangeEvent) for payload details.\n */\n this.panelChange = new EventEmitter();\n this.type = config.type;\n this.closeOtherPanels = config.closeOthers;\n }\n /**\n * Checks if a panel with a given id is expanded.\n */\n /**\n * Checks if a panel with a given id is expanded.\n * @param {?} panelId\n * @return {?}\n */\n NgbAccordion.prototype.isExpanded = /**\n * Checks if a panel with a given id is expanded.\n * @param {?} panelId\n * @return {?}\n */\n function (panelId) { return this.activeIds.indexOf(panelId) > -1; };\n /**\n * Expands a panel with a given id.\n *\n * Has no effect if the panel is already expanded or disabled.\n */\n /**\n * Expands a panel with a given id.\n *\n * Has no effect if the panel is already expanded or disabled.\n * @param {?} panelId\n * @return {?}\n */\n NgbAccordion.prototype.expand = /**\n * Expands a panel with a given id.\n *\n * Has no effect if the panel is already expanded or disabled.\n * @param {?} panelId\n * @return {?}\n */\n function (panelId) { this._changeOpenState(this._findPanelById(panelId), true); };\n /**\n * Expands all panels, if `[closeOthers]` is `false`.\n *\n * If `[closeOthers]` is `true`, it will expand the first panel, unless there is already a panel opened.\n */\n /**\n * Expands all panels, if `[closeOthers]` is `false`.\n *\n * If `[closeOthers]` is `true`, it will expand the first panel, unless there is already a panel opened.\n * @return {?}\n */\n NgbAccordion.prototype.expandAll = /**\n * Expands all panels, if `[closeOthers]` is `false`.\n *\n * If `[closeOthers]` is `true`, it will expand the first panel, unless there is already a panel opened.\n * @return {?}\n */\n function () {\n var _this = this;\n if (this.closeOtherPanels) {\n if (this.activeIds.length === 0 && this.panels.length) {\n this._changeOpenState(this.panels.first, true);\n }\n }\n else {\n this.panels.forEach(function (panel) { return _this._changeOpenState(panel, true); });\n }\n };\n /**\n * Collapses a panel with the given id.\n *\n * Has no effect if the panel is already collapsed or disabled.\n */\n /**\n * Collapses a panel with the given id.\n *\n * Has no effect if the panel is already collapsed or disabled.\n * @param {?} panelId\n * @return {?}\n */\n NgbAccordion.prototype.collapse = /**\n * Collapses a panel with the given id.\n *\n * Has no effect if the panel is already collapsed or disabled.\n * @param {?} panelId\n * @return {?}\n */\n function (panelId) { this._changeOpenState(this._findPanelById(panelId), false); };\n /**\n * Collapses all opened panels.\n */\n /**\n * Collapses all opened panels.\n * @return {?}\n */\n NgbAccordion.prototype.collapseAll = /**\n * Collapses all opened panels.\n * @return {?}\n */\n function () {\n var _this = this;\n this.panels.forEach(function (panel) { _this._changeOpenState(panel, false); });\n };\n /**\n * Toggles a panel with the given id.\n *\n * Has no effect if the panel is disabled.\n */\n /**\n * Toggles a panel with the given id.\n *\n * Has no effect if the panel is disabled.\n * @param {?} panelId\n * @return {?}\n */\n NgbAccordion.prototype.toggle = /**\n * Toggles a panel with the given id.\n *\n * Has no effect if the panel is disabled.\n * @param {?} panelId\n * @return {?}\n */\n function (panelId) {\n /** @type {?} */\n var panel = this._findPanelById(panelId);\n if (panel) {\n this._changeOpenState(panel, !panel.isOpen);\n }\n };\n /**\n * @return {?}\n */\n NgbAccordion.prototype.ngAfterContentChecked = /**\n * @return {?}\n */\n function () {\n var _this = this;\n // active id updates\n if (isString(this.activeIds)) {\n this.activeIds = this.activeIds.split(/\\s*,\\s*/);\n }\n // update panels open states\n this.panels.forEach(function (panel) { return panel.isOpen = !panel.disabled && _this.activeIds.indexOf(panel.id) > -1; });\n // closeOthers updates\n if (this.activeIds.length > 1 && this.closeOtherPanels) {\n this._closeOthers(this.activeIds[0]);\n this._updateActiveIds();\n }\n };\n /**\n * @param {?} panel\n * @param {?} nextState\n * @return {?}\n */\n NgbAccordion.prototype._changeOpenState = /**\n * @param {?} panel\n * @param {?} nextState\n * @return {?}\n */\n function (panel, nextState) {\n if (panel && !panel.disabled && panel.isOpen !== nextState) {\n /** @type {?} */\n var defaultPrevented_1 = false;\n this.panelChange.emit({ panelId: panel.id, nextState: nextState, preventDefault: function () { defaultPrevented_1 = true; } });\n if (!defaultPrevented_1) {\n panel.isOpen = nextState;\n if (nextState && this.closeOtherPanels) {\n this._closeOthers(panel.id);\n }\n this._updateActiveIds();\n }\n }\n };\n /**\n * @param {?} panelId\n * @return {?}\n */\n NgbAccordion.prototype._closeOthers = /**\n * @param {?} panelId\n * @return {?}\n */\n function (panelId) {\n this.panels.forEach(function (panel) {\n if (panel.id !== panelId) {\n panel.isOpen = false;\n }\n });\n };\n /**\n * @param {?} panelId\n * @return {?}\n */\n NgbAccordion.prototype._findPanelById = /**\n * @param {?} panelId\n * @return {?}\n */\n function (panelId) { return this.panels.find(function (p) { return p.id === panelId; }); };\n /**\n * @return {?}\n */\n NgbAccordion.prototype._updateActiveIds = /**\n * @return {?}\n */\n function () {\n this.activeIds = this.panels.filter(function (panel) { return panel.isOpen && !panel.disabled; }).map(function (panel) { return panel.id; });\n };\n NgbAccordion.decorators = [\n { type: Component, args: [{\n selector: 'ngb-accordion',\n exportAs: 'ngbAccordion',\n host: { 'class': 'accordion', 'role': 'tablist', '[attr.aria-multiselectable]': '!closeOtherPanels' },\n template: \"\\n \\n \\n \\n \\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \"\n }] }\n ];\n /** @nocollapse */\n NgbAccordion.ctorParameters = function () { return [\n { type: NgbAccordionConfig }\n ]; };\n NgbAccordion.propDecorators = {\n panels: [{ type: ContentChildren, args: [NgbPanel,] }],\n activeIds: [{ type: Input }],\n closeOtherPanels: [{ type: Input, args: ['closeOthers',] }],\n destroyOnHide: [{ type: Input }],\n type: [{ type: Input }],\n panelChange: [{ type: Output }]\n };\n return NgbAccordion;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_ACCORDION_DIRECTIVES = [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle];\nvar NgbAccordionModule = /** @class */ (function () {\n function NgbAccordionModule() {\n }\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n */\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n NgbAccordionModule.forRoot = /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n function () { return { ngModule: NgbAccordionModule }; };\n NgbAccordionModule.decorators = [\n { type: NgModule, args: [{ declarations: NGB_ACCORDION_DIRECTIVES, exports: NGB_ACCORDION_DIRECTIVES, imports: [CommonModule] },] }\n ];\n return NgbAccordionModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [NgbAlert](#/components/alert/api#NgbAlert) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all alerts used in the application.\n */\nvar NgbAlertConfig = /** @class */ (function () {\n function NgbAlertConfig() {\n this.dismissible = true;\n this.type = 'warning';\n }\n NgbAlertConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbAlertConfig.ngInjectableDef = defineInjectable({ factory: function NgbAlertConfig_Factory() { return new NgbAlertConfig(); }, token: NgbAlertConfig, providedIn: \"root\" });\n return NgbAlertConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Alert is a component to provide contextual feedback messages for user.\n *\n * It supports several alert types and can be dismissed.\n */\nvar NgbAlert = /** @class */ (function () {\n function NgbAlert(config, _renderer, _element) {\n this._renderer = _renderer;\n this._element = _element;\n /**\n * An event emitted when the close button is clicked. It has no payload and only relevant for dismissible alerts.\n */\n this.close = new EventEmitter();\n this.dismissible = config.dismissible;\n this.type = config.type;\n }\n /**\n * @return {?}\n */\n NgbAlert.prototype.closeHandler = /**\n * @return {?}\n */\n function () { this.close.emit(null); };\n /**\n * @param {?} changes\n * @return {?}\n */\n NgbAlert.prototype.ngOnChanges = /**\n * @param {?} changes\n * @return {?}\n */\n function (changes) {\n /** @type {?} */\n var typeChange = changes['type'];\n if (typeChange && !typeChange.firstChange) {\n this._renderer.removeClass(this._element.nativeElement, \"alert-\" + typeChange.previousValue);\n this._renderer.addClass(this._element.nativeElement, \"alert-\" + typeChange.currentValue);\n }\n };\n /**\n * @return {?}\n */\n NgbAlert.prototype.ngOnInit = /**\n * @return {?}\n */\n function () { this._renderer.addClass(this._element.nativeElement, \"alert-\" + this.type); };\n NgbAlert.decorators = [\n { type: Component, args: [{\n selector: 'ngb-alert',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'role': 'alert', 'class': 'alert', '[class.alert-dismissible]': 'dismissible' },\n template: \"\\n \\n \\n \",\n styles: [\"ngb-alert{display:block}\"]\n }] }\n ];\n /** @nocollapse */\n NgbAlert.ctorParameters = function () { return [\n { type: NgbAlertConfig },\n { type: Renderer2 },\n { type: ElementRef }\n ]; };\n NgbAlert.propDecorators = {\n dismissible: [{ type: Input }],\n type: [{ type: Input }],\n close: [{ type: Output }]\n };\n return NgbAlert;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbAlertModule = /** @class */ (function () {\n function NgbAlertModule() {\n }\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n */\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n NgbAlertModule.forRoot = /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n function () { return { ngModule: NgbAlertModule }; };\n NgbAlertModule.decorators = [\n { type: NgModule, args: [{ declarations: [NgbAlert], exports: [NgbAlert], imports: [CommonModule], entryComponents: [NgbAlert] },] }\n ];\n return NgbAlertModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbButtonLabel = /** @class */ (function () {\n function NgbButtonLabel() {\n }\n NgbButtonLabel.decorators = [\n { type: Directive, args: [{\n selector: '[ngbButtonLabel]',\n host: { '[class.btn]': 'true', '[class.active]': 'active', '[class.disabled]': 'disabled', '[class.focus]': 'focused' }\n },] }\n ];\n return NgbButtonLabel;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_CHECKBOX_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return NgbCheckBox; }),\n multi: true\n};\n/**\n * Allows to easily create Bootstrap-style checkbox buttons.\n *\n * Integrates with forms, so the value of a checked button is bound to the underlying form control\n * either in a reactive or template-driven way.\n */\nvar NgbCheckBox = /** @class */ (function () {\n function NgbCheckBox(_label, _cd) {\n this._label = _label;\n this._cd = _cd;\n /**\n * If `true`, the checkbox button will be disabled\n */\n this.disabled = false;\n /**\n * The form control value when the checkbox is checked.\n */\n this.valueChecked = true;\n /**\n * The form control value when the checkbox is unchecked.\n */\n this.valueUnChecked = false;\n this.onChange = function (_) { };\n this.onTouched = function () { };\n }\n Object.defineProperty(NgbCheckBox.prototype, \"focused\", {\n set: /**\n * @param {?} isFocused\n * @return {?}\n */\n function (isFocused) {\n this._label.focused = isFocused;\n if (!isFocused) {\n this.onTouched();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} $event\n * @return {?}\n */\n NgbCheckBox.prototype.onInputChange = /**\n * @param {?} $event\n * @return {?}\n */\n function ($event) {\n /** @type {?} */\n var modelToPropagate = $event.target.checked ? this.valueChecked : this.valueUnChecked;\n this.onChange(modelToPropagate);\n this.onTouched();\n this.writeValue(modelToPropagate);\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbCheckBox.prototype.registerOnChange = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this.onChange = fn; };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbCheckBox.prototype.registerOnTouched = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this.onTouched = fn; };\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n NgbCheckBox.prototype.setDisabledState = /**\n * @param {?} isDisabled\n * @return {?}\n */\n function (isDisabled) {\n this.disabled = isDisabled;\n this._label.disabled = isDisabled;\n };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbCheckBox.prototype.writeValue = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this.checked = value === this.valueChecked;\n this._label.active = this.checked;\n // label won't be updated, if it is inside the OnPush component when [ngModel] changes\n this._cd.markForCheck();\n };\n NgbCheckBox.decorators = [\n { type: Directive, args: [{\n selector: '[ngbButton][type=checkbox]',\n host: {\n 'autocomplete': 'off',\n '[checked]': 'checked',\n '[disabled]': 'disabled',\n '(change)': 'onInputChange($event)',\n '(focus)': 'focused = true',\n '(blur)': 'focused = false'\n },\n providers: [NGB_CHECKBOX_VALUE_ACCESSOR]\n },] }\n ];\n /** @nocollapse */\n NgbCheckBox.ctorParameters = function () { return [\n { type: NgbButtonLabel },\n { type: ChangeDetectorRef }\n ]; };\n NgbCheckBox.propDecorators = {\n disabled: [{ type: Input }],\n valueChecked: [{ type: Input }],\n valueUnChecked: [{ type: Input }]\n };\n return NgbCheckBox;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_RADIO_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return NgbRadioGroup; }),\n multi: true\n};\n/** @type {?} */\nvar nextId$1 = 0;\n/**\n * Allows to easily create Bootstrap-style radio buttons.\n *\n * Integrates with forms, so the value of a checked button is bound to the underlying form control\n * either in a reactive or template-driven way.\n */\nvar NgbRadioGroup = /** @class */ (function () {\n function NgbRadioGroup() {\n this._radios = new Set();\n this._value = null;\n /**\n * Name of the radio group applied to radio input elements.\n *\n * Will be applied to all radio input elements inside the group,\n * unless [`NgbRadio`](#/components/buttons/api#NgbRadio)'s specify names themselves.\n *\n * If not provided, will be generated in the `ngb-radio-xx` format.\n */\n this.name = \"ngb-radio-\" + nextId$1++;\n this.onChange = function (_) { };\n this.onTouched = function () { };\n }\n Object.defineProperty(NgbRadioGroup.prototype, \"disabled\", {\n get: /**\n * @return {?}\n */\n function () { return this._disabled; },\n set: /**\n * @param {?} isDisabled\n * @return {?}\n */\n function (isDisabled) { this.setDisabledState(isDisabled); },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} radio\n * @return {?}\n */\n NgbRadioGroup.prototype.onRadioChange = /**\n * @param {?} radio\n * @return {?}\n */\n function (radio) {\n this.writeValue(radio.value);\n this.onChange(radio.value);\n };\n /**\n * @return {?}\n */\n NgbRadioGroup.prototype.onRadioValueUpdate = /**\n * @return {?}\n */\n function () { this._updateRadiosValue(); };\n /**\n * @param {?} radio\n * @return {?}\n */\n NgbRadioGroup.prototype.register = /**\n * @param {?} radio\n * @return {?}\n */\n function (radio) { this._radios.add(radio); };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbRadioGroup.prototype.registerOnChange = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this.onChange = fn; };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbRadioGroup.prototype.registerOnTouched = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this.onTouched = fn; };\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n NgbRadioGroup.prototype.setDisabledState = /**\n * @param {?} isDisabled\n * @return {?}\n */\n function (isDisabled) {\n this._disabled = isDisabled;\n this._updateRadiosDisabled();\n };\n /**\n * @param {?} radio\n * @return {?}\n */\n NgbRadioGroup.prototype.unregister = /**\n * @param {?} radio\n * @return {?}\n */\n function (radio) { this._radios.delete(radio); };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbRadioGroup.prototype.writeValue = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._value = value;\n this._updateRadiosValue();\n };\n /**\n * @return {?}\n */\n NgbRadioGroup.prototype._updateRadiosValue = /**\n * @return {?}\n */\n function () {\n var _this = this;\n this._radios.forEach(function (radio) { return radio.updateValue(_this._value); });\n };\n /**\n * @return {?}\n */\n NgbRadioGroup.prototype._updateRadiosDisabled = /**\n * @return {?}\n */\n function () { this._radios.forEach(function (radio) { return radio.updateDisabled(); }); };\n NgbRadioGroup.decorators = [\n { type: Directive, args: [{ selector: '[ngbRadioGroup]', host: { 'role': 'radiogroup' }, providers: [NGB_RADIO_VALUE_ACCESSOR] },] }\n ];\n NgbRadioGroup.propDecorators = {\n name: [{ type: Input }]\n };\n return NgbRadioGroup;\n}());\n/**\n * A directive that marks an input of type \"radio\" as a part of the\n * [`NgbRadioGroup`](#/components/buttons/api#NgbRadioGroup).\n */\nvar NgbRadio = /** @class */ (function () {\n function NgbRadio(_group, _label, _renderer, _element, _cd) {\n this._group = _group;\n this._label = _label;\n this._renderer = _renderer;\n this._element = _element;\n this._cd = _cd;\n this._value = null;\n this._group.register(this);\n this.updateDisabled();\n }\n Object.defineProperty(NgbRadio.prototype, \"value\", {\n get: /**\n * @return {?}\n */\n function () { return this._value; },\n /**\n * The form control value when current radio button is checked.\n */\n set: /**\n * The form control value when current radio button is checked.\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._value = value;\n /** @type {?} */\n var stringValue = value ? value.toString() : '';\n this._renderer.setProperty(this._element.nativeElement, 'value', stringValue);\n this._group.onRadioValueUpdate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbRadio.prototype, \"disabled\", {\n get: /**\n * @return {?}\n */\n function () { return this._group.disabled || this._disabled; },\n /**\n * If `true`, current radio button will be disabled.\n */\n set: /**\n * If `true`, current radio button will be disabled.\n * @param {?} isDisabled\n * @return {?}\n */\n function (isDisabled) {\n this._disabled = isDisabled !== false;\n this.updateDisabled();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbRadio.prototype, \"focused\", {\n set: /**\n * @param {?} isFocused\n * @return {?}\n */\n function (isFocused) {\n if (this._label) {\n this._label.focused = isFocused;\n }\n if (!isFocused) {\n this._group.onTouched();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbRadio.prototype, \"checked\", {\n get: /**\n * @return {?}\n */\n function () { return this._checked; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbRadio.prototype, \"nameAttr\", {\n get: /**\n * @return {?}\n */\n function () { return this.name || this._group.name; },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n NgbRadio.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () { this._group.unregister(this); };\n /**\n * @return {?}\n */\n NgbRadio.prototype.onChange = /**\n * @return {?}\n */\n function () { this._group.onRadioChange(this); };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbRadio.prototype.updateValue = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n // label won't be updated, if it is inside the OnPush component when [ngModel] changes\n if (this.value !== value) {\n this._cd.markForCheck();\n }\n this._checked = this.value === value;\n this._label.active = this._checked;\n };\n /**\n * @return {?}\n */\n NgbRadio.prototype.updateDisabled = /**\n * @return {?}\n */\n function () { this._label.disabled = this.disabled; };\n NgbRadio.decorators = [\n { type: Directive, args: [{\n selector: '[ngbButton][type=radio]',\n host: {\n '[checked]': 'checked',\n '[disabled]': 'disabled',\n '[name]': 'nameAttr',\n '(change)': 'onChange()',\n '(focus)': 'focused = true',\n '(blur)': 'focused = false'\n }\n },] }\n ];\n /** @nocollapse */\n NgbRadio.ctorParameters = function () { return [\n { type: NgbRadioGroup },\n { type: NgbButtonLabel },\n { type: Renderer2 },\n { type: ElementRef },\n { type: ChangeDetectorRef }\n ]; };\n NgbRadio.propDecorators = {\n name: [{ type: Input }],\n value: [{ type: Input, args: ['value',] }],\n disabled: [{ type: Input, args: ['disabled',] }]\n };\n return NgbRadio;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_BUTTON_DIRECTIVES = [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio];\nvar NgbButtonsModule = /** @class */ (function () {\n function NgbButtonsModule() {\n }\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n */\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n NgbButtonsModule.forRoot = /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n function () { return { ngModule: NgbButtonsModule }; };\n NgbButtonsModule.decorators = [\n { type: NgModule, args: [{ declarations: NGB_BUTTON_DIRECTIVES, exports: NGB_BUTTON_DIRECTIVES },] }\n ];\n return NgbButtonsModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [NgbCarousel](#/components/carousel/api#NgbCarousel) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all carousels used in the application.\n */\nvar NgbCarouselConfig = /** @class */ (function () {\n function NgbCarouselConfig() {\n this.interval = 5000;\n this.wrap = true;\n this.keyboard = true;\n this.pauseOnHover = true;\n this.showNavigationArrows = true;\n this.showNavigationIndicators = true;\n }\n NgbCarouselConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbCarouselConfig.ngInjectableDef = defineInjectable({ factory: function NgbCarouselConfig_Factory() { return new NgbCarouselConfig(); }, token: NgbCarouselConfig, providedIn: \"root\" });\n return NgbCarouselConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar nextId$2 = 0;\n/**\n * A directive that wraps the individual carousel slide.\n */\nvar NgbSlide = /** @class */ (function () {\n function NgbSlide(tplRef) {\n this.tplRef = tplRef;\n /**\n * Slide id that must be unique for the entire document.\n *\n * If not provided, will be generated in the `ngb-slide-xx` format.\n */\n this.id = \"ngb-slide-\" + nextId$2++;\n }\n NgbSlide.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbSlide]' },] }\n ];\n /** @nocollapse */\n NgbSlide.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n NgbSlide.propDecorators = {\n id: [{ type: Input }]\n };\n return NgbSlide;\n}());\n/**\n * Carousel is a component to easily create and control slideshows.\n *\n * Allows to set intervals, change the way user interacts with the slides and provides a programmatic API.\n */\nvar NgbCarousel = /** @class */ (function () {\n function NgbCarousel(config, _platformId, _ngZone, _cd) {\n this._platformId = _platformId;\n this._ngZone = _ngZone;\n this._cd = _cd;\n this._destroy$ = new Subject();\n this._start$ = new Subject();\n this._stop$ = new Subject();\n /**\n * An event emitted right after the slide transition is completed.\n *\n * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\n */\n this.slide = new EventEmitter();\n this.interval = config.interval;\n this.wrap = config.wrap;\n this.keyboard = config.keyboard;\n this.pauseOnHover = config.pauseOnHover;\n this.showNavigationArrows = config.showNavigationArrows;\n this.showNavigationIndicators = config.showNavigationIndicators;\n }\n /**\n * @return {?}\n */\n NgbCarousel.prototype.ngAfterContentInit = /**\n * @return {?}\n */\n function () {\n var _this = this;\n // setInterval() doesn't play well with SSR and protractor,\n // so we should run it in the browser and outside Angular\n if (isPlatformBrowser(this._platformId)) {\n this._ngZone.runOutsideAngular(function () {\n _this._start$\n .pipe(map(function () { return _this.interval; }), filter(function (interval) { return interval > 0 && _this.slides.length > 0; }), switchMap(function (interval) { return timer(interval).pipe(takeUntil(merge(_this._stop$, _this._destroy$))); }))\n .subscribe(function () { return _this._ngZone.run(function () { return _this.next(); }); });\n _this._start$.next();\n });\n }\n this.slides.changes.pipe(takeUntil(this._destroy$)).subscribe(function () { return _this._cd.markForCheck(); });\n };\n /**\n * @return {?}\n */\n NgbCarousel.prototype.ngAfterContentChecked = /**\n * @return {?}\n */\n function () {\n /** @type {?} */\n var activeSlide = this._getSlideById(this.activeId);\n this.activeId = activeSlide ? activeSlide.id : (this.slides.length ? this.slides.first.id : null);\n };\n /**\n * @return {?}\n */\n NgbCarousel.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () { this._destroy$.next(); };\n /**\n * @param {?} changes\n * @return {?}\n */\n NgbCarousel.prototype.ngOnChanges = /**\n * @param {?} changes\n * @return {?}\n */\n function (changes) {\n if ('interval' in changes && !changes['interval'].isFirstChange()) {\n this._start$.next();\n }\n };\n /**\n * Navigates to a slide with the specified identifier.\n */\n /**\n * Navigates to a slide with the specified identifier.\n * @param {?} slideId\n * @return {?}\n */\n NgbCarousel.prototype.select = /**\n * Navigates to a slide with the specified identifier.\n * @param {?} slideId\n * @return {?}\n */\n function (slideId) { this._cycleToSelected(slideId, this._getSlideEventDirection(this.activeId, slideId)); };\n /**\n * Navigates to the previous slide.\n */\n /**\n * Navigates to the previous slide.\n * @return {?}\n */\n NgbCarousel.prototype.prev = /**\n * Navigates to the previous slide.\n * @return {?}\n */\n function () { this._cycleToSelected(this._getPrevSlide(this.activeId), NgbSlideEventDirection.RIGHT); };\n /**\n * Navigates to the next slide.\n */\n /**\n * Navigates to the next slide.\n * @return {?}\n */\n NgbCarousel.prototype.next = /**\n * Navigates to the next slide.\n * @return {?}\n */\n function () { this._cycleToSelected(this._getNextSlide(this.activeId), NgbSlideEventDirection.LEFT); };\n /**\n * Pauses cycling through the slides.\n */\n /**\n * Pauses cycling through the slides.\n * @return {?}\n */\n NgbCarousel.prototype.pause = /**\n * Pauses cycling through the slides.\n * @return {?}\n */\n function () { this._stop$.next(); };\n /**\n * Restarts cycling through the slides from left to right.\n */\n /**\n * Restarts cycling through the slides from left to right.\n * @return {?}\n */\n NgbCarousel.prototype.cycle = /**\n * Restarts cycling through the slides from left to right.\n * @return {?}\n */\n function () { this._start$.next(); };\n /**\n * @param {?} slideIdx\n * @param {?} direction\n * @return {?}\n */\n NgbCarousel.prototype._cycleToSelected = /**\n * @param {?} slideIdx\n * @param {?} direction\n * @return {?}\n */\n function (slideIdx, direction) {\n /** @type {?} */\n var selectedSlide = this._getSlideById(slideIdx);\n if (selectedSlide && selectedSlide.id !== this.activeId) {\n this.slide.emit({ prev: this.activeId, current: selectedSlide.id, direction: direction });\n this._start$.next();\n this.activeId = selectedSlide.id;\n }\n // we get here after the interval fires or any external API call like next(), prev() or select()\n this._cd.markForCheck();\n };\n /**\n * @param {?} currentActiveSlideId\n * @param {?} nextActiveSlideId\n * @return {?}\n */\n NgbCarousel.prototype._getSlideEventDirection = /**\n * @param {?} currentActiveSlideId\n * @param {?} nextActiveSlideId\n * @return {?}\n */\n function (currentActiveSlideId, nextActiveSlideId) {\n /** @type {?} */\n var currentActiveSlideIdx = this._getSlideIdxById(currentActiveSlideId);\n /** @type {?} */\n var nextActiveSlideIdx = this._getSlideIdxById(nextActiveSlideId);\n return currentActiveSlideIdx > nextActiveSlideIdx ? NgbSlideEventDirection.RIGHT : NgbSlideEventDirection.LEFT;\n };\n /**\n * @param {?} slideId\n * @return {?}\n */\n NgbCarousel.prototype._getSlideById = /**\n * @param {?} slideId\n * @return {?}\n */\n function (slideId) { return this.slides.find(function (slide) { return slide.id === slideId; }); };\n /**\n * @param {?} slideId\n * @return {?}\n */\n NgbCarousel.prototype._getSlideIdxById = /**\n * @param {?} slideId\n * @return {?}\n */\n function (slideId) {\n return this.slides.toArray().indexOf(this._getSlideById(slideId));\n };\n /**\n * @param {?} currentSlideId\n * @return {?}\n */\n NgbCarousel.prototype._getNextSlide = /**\n * @param {?} currentSlideId\n * @return {?}\n */\n function (currentSlideId) {\n /** @type {?} */\n var slideArr = this.slides.toArray();\n /** @type {?} */\n var currentSlideIdx = this._getSlideIdxById(currentSlideId);\n /** @type {?} */\n var isLastSlide = currentSlideIdx === slideArr.length - 1;\n return isLastSlide ? (this.wrap ? slideArr[0].id : slideArr[slideArr.length - 1].id) :\n slideArr[currentSlideIdx + 1].id;\n };\n /**\n * @param {?} currentSlideId\n * @return {?}\n */\n NgbCarousel.prototype._getPrevSlide = /**\n * @param {?} currentSlideId\n * @return {?}\n */\n function (currentSlideId) {\n /** @type {?} */\n var slideArr = this.slides.toArray();\n /** @type {?} */\n var currentSlideIdx = this._getSlideIdxById(currentSlideId);\n /** @type {?} */\n var isFirstSlide = currentSlideIdx === 0;\n return isFirstSlide ? (this.wrap ? slideArr[slideArr.length - 1].id : slideArr[0].id) :\n slideArr[currentSlideIdx - 1].id;\n };\n NgbCarousel.decorators = [\n { type: Component, args: [{\n selector: 'ngb-carousel',\n exportAs: 'ngbCarousel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'carousel slide',\n '[style.display]': '\"block\"',\n 'tabIndex': '0',\n '(mouseenter)': 'pauseOnHover && pause()',\n '(mouseleave)': 'pauseOnHover && cycle()',\n '(keydown.arrowLeft)': 'keyboard && prev()',\n '(keydown.arrowRight)': 'keyboard && next()'\n },\n template: \"\\n
    \\n
  1. \\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n Previous\\n \\n \\n \\n Next\\n \\n \"\n }] }\n ];\n /** @nocollapse */\n NgbCarousel.ctorParameters = function () { return [\n { type: NgbCarouselConfig },\n { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: NgZone },\n { type: ChangeDetectorRef }\n ]; };\n NgbCarousel.propDecorators = {\n slides: [{ type: ContentChildren, args: [NgbSlide,] }],\n activeId: [{ type: Input }],\n interval: [{ type: Input }],\n wrap: [{ type: Input }],\n keyboard: [{ type: Input }],\n pauseOnHover: [{ type: Input }],\n showNavigationArrows: [{ type: Input }],\n showNavigationIndicators: [{ type: Input }],\n slide: [{ type: Output }]\n };\n return NgbCarousel;\n}());\n/** @enum {string} */\nvar NgbSlideEventDirection = {\n LEFT: (/** @type {?} */ ('left')),\n RIGHT: (/** @type {?} */ ('right')),\n};\n/** @type {?} */\nvar NGB_CAROUSEL_DIRECTIVES = [NgbCarousel, NgbSlide];\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbCarouselModule = /** @class */ (function () {\n function NgbCarouselModule() {\n }\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n */\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n NgbCarouselModule.forRoot = /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n function () { return { ngModule: NgbCarouselModule }; };\n NgbCarouselModule.decorators = [\n { type: NgModule, args: [{ declarations: NGB_CAROUSEL_DIRECTIVES, exports: NGB_CAROUSEL_DIRECTIVES, imports: [CommonModule] },] }\n ];\n return NgbCarouselModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A directive to provide a simple way of hiding and showing elements on the page.\n */\nvar NgbCollapse = /** @class */ (function () {\n function NgbCollapse() {\n /**\n * If `true`, will collapse the element or show it otherwise.\n */\n this.collapsed = false;\n }\n NgbCollapse.decorators = [\n { type: Directive, args: [{\n selector: '[ngbCollapse]',\n exportAs: 'ngbCollapse',\n host: { '[class.collapse]': 'true', '[class.show]': '!collapsed' }\n },] }\n ];\n NgbCollapse.propDecorators = {\n collapsed: [{ type: Input, args: ['ngbCollapse',] }]\n };\n return NgbCollapse;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbCollapseModule = /** @class */ (function () {\n function NgbCollapseModule() {\n }\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n */\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n NgbCollapseModule.forRoot = /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n function () { return { ngModule: NgbCollapseModule }; };\n NgbCollapseModule.decorators = [\n { type: NgModule, args: [{ declarations: [NgbCollapse], exports: [NgbCollapse] },] }\n ];\n return NgbCollapseModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A simple class that represents a date that datepicker also uses internally.\n *\n * It is the implementation of the `NgbDateStruct` interface that adds some convenience methods,\n * like `.equals()`, `.before()`, etc.\n *\n * All datepicker APIs consume `NgbDateStruct`, but return `NgbDate`.\n *\n * In many cases it is simpler to manipulate these objects together with\n * [`NgbCalendar`](#/components/datepicker/api#NgbCalendar) than native JS Dates.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n *\n * \\@since 3.0.0\n */\nvar /**\n * A simple class that represents a date that datepicker also uses internally.\n *\n * It is the implementation of the `NgbDateStruct` interface that adds some convenience methods,\n * like `.equals()`, `.before()`, etc.\n *\n * All datepicker APIs consume `NgbDateStruct`, but return `NgbDate`.\n *\n * In many cases it is simpler to manipulate these objects together with\n * [`NgbCalendar`](#/components/datepicker/api#NgbCalendar) than native JS Dates.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n *\n * \\@since 3.0.0\n */\nNgbDate = /** @class */ (function () {\n function NgbDate(year, month, day) {\n this.year = isInteger(year) ? year : null;\n this.month = isInteger(month) ? month : null;\n this.day = isInteger(day) ? day : null;\n }\n /**\n * A **static method** that creates a new date object from the `NgbDateStruct`,\n *\n * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\n *\n * If the `date` is already of `NgbDate` type, the method will return the same object.\n */\n /**\n * A **static method** that creates a new date object from the `NgbDateStruct`,\n *\n * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\n *\n * If the `date` is already of `NgbDate` type, the method will return the same object.\n * @param {?} date\n * @return {?}\n */\n NgbDate.from = /**\n * A **static method** that creates a new date object from the `NgbDateStruct`,\n *\n * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\n *\n * If the `date` is already of `NgbDate` type, the method will return the same object.\n * @param {?} date\n * @return {?}\n */\n function (date) {\n if (date instanceof NgbDate) {\n return date;\n }\n return date ? new NgbDate(date.year, date.month, date.day) : null;\n };\n /**\n * Checks if the current date is equal to another date.\n */\n /**\n * Checks if the current date is equal to another date.\n * @param {?} other\n * @return {?}\n */\n NgbDate.prototype.equals = /**\n * Checks if the current date is equal to another date.\n * @param {?} other\n * @return {?}\n */\n function (other) {\n return other && this.year === other.year && this.month === other.month && this.day === other.day;\n };\n /**\n * Checks if the current date is before another date.\n */\n /**\n * Checks if the current date is before another date.\n * @param {?} other\n * @return {?}\n */\n NgbDate.prototype.before = /**\n * Checks if the current date is before another date.\n * @param {?} other\n * @return {?}\n */\n function (other) {\n if (!other) {\n return false;\n }\n if (this.year === other.year) {\n if (this.month === other.month) {\n return this.day === other.day ? false : this.day < other.day;\n }\n else {\n return this.month < other.month;\n }\n }\n else {\n return this.year < other.year;\n }\n };\n /**\n * Checks if the current date is after another date.\n */\n /**\n * Checks if the current date is after another date.\n * @param {?} other\n * @return {?}\n */\n NgbDate.prototype.after = /**\n * Checks if the current date is after another date.\n * @param {?} other\n * @return {?}\n */\n function (other) {\n if (!other) {\n return false;\n }\n if (this.year === other.year) {\n if (this.month === other.month) {\n return this.day === other.day ? false : this.day > other.day;\n }\n else {\n return this.month > other.month;\n }\n }\n else {\n return this.year > other.year;\n }\n };\n return NgbDate;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * @param {?} jsDate\n * @return {?}\n */\nfunction fromJSDate(jsDate) {\n return new NgbDate(jsDate.getFullYear(), jsDate.getMonth() + 1, jsDate.getDate());\n}\n/**\n * @param {?} date\n * @return {?}\n */\nfunction toJSDate(date) {\n /** @type {?} */\n var jsDate = new Date(date.year, date.month - 1, date.day, 12);\n // this is done avoid 30 -> 1930 conversion\n if (!isNaN(jsDate.getTime())) {\n jsDate.setFullYear(date.year);\n }\n return jsDate;\n}\n/**\n * @return {?}\n */\nfunction NGB_DATEPICKER_CALENDAR_FACTORY() {\n return new NgbCalendarGregorian();\n}\n/**\n * A service that represents the calendar used by the datepicker.\n *\n * The default implementation uses the Gregorian calendar. You can inject it in your own\n * implementations if necessary to simplify `NgbDate` calculations.\n * @abstract\n */\nvar NgbCalendar = /** @class */ (function () {\n function NgbCalendar() {\n }\n NgbCalendar.decorators = [\n { type: Injectable, args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_CALENDAR_FACTORY },] }\n ];\n /** @nocollapse */ NgbCalendar.ngInjectableDef = defineInjectable({ factory: NGB_DATEPICKER_CALENDAR_FACTORY, token: NgbCalendar, providedIn: \"root\" });\n return NgbCalendar;\n}());\nvar NgbCalendarGregorian = /** @class */ (function (_super) {\n __extends(NgbCalendarGregorian, _super);\n function NgbCalendarGregorian() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return {?}\n */\n NgbCalendarGregorian.prototype.getDaysPerWeek = /**\n * @return {?}\n */\n function () { return 7; };\n /**\n * @return {?}\n */\n NgbCalendarGregorian.prototype.getMonths = /**\n * @return {?}\n */\n function () { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; };\n /**\n * @return {?}\n */\n NgbCalendarGregorian.prototype.getWeeksPerMonth = /**\n * @return {?}\n */\n function () { return 6; };\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n NgbCalendarGregorian.prototype.getNext = /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n function (date, period, number) {\n if (period === void 0) { period = 'd'; }\n if (number === void 0) { number = 1; }\n /** @type {?} */\n var jsDate = toJSDate(date);\n switch (period) {\n case 'y':\n return new NgbDate(date.year + number, 1, 1);\n case 'm':\n jsDate = new Date(date.year, date.month + number - 1, 1, 12);\n break;\n case 'd':\n jsDate.setDate(jsDate.getDate() + number);\n break;\n default:\n return date;\n }\n return fromJSDate(jsDate);\n };\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n NgbCalendarGregorian.prototype.getPrev = /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n function (date, period, number) {\n if (period === void 0) { period = 'd'; }\n if (number === void 0) { number = 1; }\n return this.getNext(date, period, -number);\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbCalendarGregorian.prototype.getWeekday = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var jsDate = toJSDate(date);\n /** @type {?} */\n var day = jsDate.getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n };\n /**\n * @param {?} week\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n NgbCalendarGregorian.prototype.getWeekNumber = /**\n * @param {?} week\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n function (week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n /** @type {?} */\n var thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n /** @type {?} */\n var date = week[thursdayIndex];\n /** @type {?} */\n var jsDate = toJSDate(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n // Thursday\n /** @type {?} */\n var time = jsDate.getTime();\n jsDate.setMonth(0); // Compare with Jan 1\n jsDate.setDate(1);\n return Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\n };\n /**\n * @return {?}\n */\n NgbCalendarGregorian.prototype.getToday = /**\n * @return {?}\n */\n function () { return fromJSDate(new Date()); };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbCalendarGregorian.prototype.isValid = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n if (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\n return false;\n }\n // year 0 doesn't exist in Gregorian calendar\n if (date.year === 0) {\n return false;\n }\n /** @type {?} */\n var jsDate = toJSDate(date);\n return !isNaN(jsDate.getTime()) && jsDate.getFullYear() === date.year && jsDate.getMonth() + 1 === date.month &&\n jsDate.getDate() === date.day;\n };\n NgbCalendarGregorian.decorators = [\n { type: Injectable }\n ];\n return NgbCalendarGregorian;\n}(NgbCalendar));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * @param {?} prev\n * @param {?} next\n * @return {?}\n */\nfunction isChangedDate(prev, next) {\n return !dateComparator(prev, next);\n}\n/**\n * @param {?} prev\n * @param {?} next\n * @return {?}\n */\nfunction isChangedMonth(prev, next) {\n return !prev && !next ? false : !prev || !next ? true : prev.year !== next.year || prev.month !== next.month;\n}\n/**\n * @param {?} prev\n * @param {?} next\n * @return {?}\n */\nfunction dateComparator(prev, next) {\n return (!prev && !next) || (!!prev && !!next && prev.equals(next));\n}\n/**\n * @param {?} minDate\n * @param {?} maxDate\n * @return {?}\n */\nfunction checkMinBeforeMax(minDate, maxDate) {\n if (maxDate && minDate && maxDate.before(minDate)) {\n throw new Error(\"'maxDate' \" + maxDate + \" should be greater than 'minDate' \" + minDate);\n }\n}\n/**\n * @param {?} date\n * @param {?} minDate\n * @param {?} maxDate\n * @return {?}\n */\nfunction checkDateInRange(date, minDate, maxDate) {\n if (date && minDate && date.before(minDate)) {\n return minDate;\n }\n if (date && maxDate && date.after(maxDate)) {\n return maxDate;\n }\n return date;\n}\n/**\n * @param {?} date\n * @param {?} state\n * @return {?}\n */\nfunction isDateSelectable(date, state) {\n var minDate = state.minDate, maxDate = state.maxDate, disabled = state.disabled, markDisabled = state.markDisabled;\n // clang-format off\n return !(!isDefined(date) ||\n disabled ||\n (markDisabled && markDisabled(date, { year: date.year, month: date.month })) ||\n (minDate && date.before(minDate)) ||\n (maxDate && date.after(maxDate)));\n // clang-format on\n}\n/**\n * @param {?} calendar\n * @param {?} date\n * @param {?} minDate\n * @param {?} maxDate\n * @return {?}\n */\nfunction generateSelectBoxMonths(calendar, date, minDate, maxDate) {\n if (!date) {\n return [];\n }\n /** @type {?} */\n var months = calendar.getMonths(date.year);\n if (minDate && date.year === minDate.year) {\n /** @type {?} */\n var index = months.findIndex(function (month) { return month === minDate.month; });\n months = months.slice(index);\n }\n if (maxDate && date.year === maxDate.year) {\n /** @type {?} */\n var index = months.findIndex(function (month) { return month === maxDate.month; });\n months = months.slice(0, index + 1);\n }\n return months;\n}\n/**\n * @param {?} date\n * @param {?} minDate\n * @param {?} maxDate\n * @return {?}\n */\nfunction generateSelectBoxYears(date, minDate, maxDate) {\n if (!date) {\n return [];\n }\n /** @type {?} */\n var start = minDate && minDate.year || date.year - 10;\n /** @type {?} */\n var end = maxDate && maxDate.year || date.year + 10;\n return Array.from({ length: end - start + 1 }, function (e, i) { return start + i; });\n}\n/**\n * @param {?} calendar\n * @param {?} date\n * @param {?} maxDate\n * @return {?}\n */\nfunction nextMonthDisabled(calendar, date, maxDate) {\n return maxDate && calendar.getNext(date, 'm').after(maxDate);\n}\n/**\n * @param {?} calendar\n * @param {?} date\n * @param {?} minDate\n * @return {?}\n */\nfunction prevMonthDisabled(calendar, date, minDate) {\n /** @type {?} */\n var prevDate = calendar.getPrev(date, 'm');\n return minDate && (prevDate.year === minDate.year && prevDate.month < minDate.month ||\n prevDate.year < minDate.year && minDate.month === 1);\n}\n/**\n * @param {?} calendar\n * @param {?} date\n * @param {?} state\n * @param {?} i18n\n * @param {?} force\n * @return {?}\n */\nfunction buildMonths(calendar, date, state, i18n, force) {\n var displayMonths = state.displayMonths, months = state.months;\n // move old months to a temporary array\n /** @type {?} */\n var monthsToReuse = months.splice(0, months.length);\n // generate new first dates, nullify or reuse months\n /** @type {?} */\n var firstDates = Array.from({ length: displayMonths }, function (_, i) {\n /** @type {?} */\n var firstDate = calendar.getNext(date, 'm', i);\n months[i] = null;\n if (!force) {\n /** @type {?} */\n var reusedIndex = monthsToReuse.findIndex(function (month) { return month.firstDate.equals(firstDate); });\n // move reused month back to months\n if (reusedIndex !== -1) {\n months[i] = monthsToReuse.splice(reusedIndex, 1)[0];\n }\n }\n return firstDate;\n });\n // rebuild nullified months\n firstDates.forEach(function (firstDate, i) {\n if (months[i] === null) {\n months[i] = buildMonth(calendar, firstDate, state, i18n, monthsToReuse.shift() || (/** @type {?} */ ({})));\n }\n });\n return months;\n}\n/**\n * @param {?} calendar\n * @param {?} date\n * @param {?} state\n * @param {?} i18n\n * @param {?=} month\n * @return {?}\n */\nfunction buildMonth(calendar, date, state, i18n, month) {\n if (month === void 0) { month = (/** @type {?} */ ({})); }\n var dayTemplateData = state.dayTemplateData, minDate = state.minDate, maxDate = state.maxDate, firstDayOfWeek = state.firstDayOfWeek, markDisabled = state.markDisabled, outsideDays = state.outsideDays;\n /** @type {?} */\n var calendarToday = calendar.getToday();\n month.firstDate = null;\n month.lastDate = null;\n month.number = date.month;\n month.year = date.year;\n month.weeks = month.weeks || [];\n month.weekdays = month.weekdays || [];\n date = getFirstViewDate(calendar, date, firstDayOfWeek);\n // month has weeks\n for (var week = 0; week < calendar.getWeeksPerMonth(); week++) {\n /** @type {?} */\n var weekObject = month.weeks[week];\n if (!weekObject) {\n weekObject = month.weeks[week] = { number: 0, days: [], collapsed: true };\n }\n /** @type {?} */\n var days = weekObject.days;\n // week has days\n for (var day = 0; day < calendar.getDaysPerWeek(); day++) {\n if (week === 0) {\n month.weekdays[day] = calendar.getWeekday(date);\n }\n /** @type {?} */\n var newDate = new NgbDate(date.year, date.month, date.day);\n /** @type {?} */\n var nextDate = calendar.getNext(newDate);\n /** @type {?} */\n var ariaLabel = i18n.getDayAriaLabel(newDate);\n // marking date as disabled\n /** @type {?} */\n var disabled = !!((minDate && newDate.before(minDate)) || (maxDate && newDate.after(maxDate)));\n if (!disabled && markDisabled) {\n disabled = markDisabled(newDate, { month: month.number, year: month.year });\n }\n // today\n /** @type {?} */\n var today = newDate.equals(calendarToday);\n // adding user-provided data to the context\n /** @type {?} */\n var contextUserData = dayTemplateData ? dayTemplateData(newDate, { month: month.number, year: month.year }) : undefined;\n // saving first date of the month\n if (month.firstDate === null && newDate.month === month.number) {\n month.firstDate = newDate;\n }\n // saving last date of the month\n if (newDate.month === month.number && nextDate.month !== month.number) {\n month.lastDate = newDate;\n }\n /** @type {?} */\n var dayObject = days[day];\n if (!dayObject) {\n dayObject = days[day] = (/** @type {?} */ ({}));\n }\n dayObject.date = newDate;\n dayObject.context = Object.assign(dayObject.context || {}, {\n $implicit: newDate,\n date: newDate,\n data: contextUserData,\n currentMonth: month.number, disabled: disabled,\n focused: false,\n selected: false, today: today\n });\n dayObject.tabindex = -1;\n dayObject.ariaLabel = ariaLabel;\n dayObject.hidden = false;\n date = nextDate;\n }\n weekObject.number = calendar.getWeekNumber(days.map(function (day) { return day.date; }), firstDayOfWeek);\n // marking week as collapsed\n weekObject.collapsed = outsideDays === 'collapsed' && days[0].date.month !== month.number &&\n days[days.length - 1].date.month !== month.number;\n }\n return month;\n}\n/**\n * @param {?} calendar\n * @param {?} date\n * @param {?} firstDayOfWeek\n * @return {?}\n */\nfunction getFirstViewDate(calendar, date, firstDayOfWeek) {\n /** @type {?} */\n var daysPerWeek = calendar.getDaysPerWeek();\n /** @type {?} */\n var firstMonthDate = new NgbDate(date.year, date.month, 1);\n /** @type {?} */\n var dayOfWeek = calendar.getWeekday(firstMonthDate) % daysPerWeek;\n return calendar.getPrev(firstMonthDate, 'd', (daysPerWeek + dayOfWeek - firstDayOfWeek) % daysPerWeek);\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * @param {?} locale\n * @return {?}\n */\nfunction NGB_DATEPICKER_18N_FACTORY(locale) {\n return new NgbDatepickerI18nDefault(locale);\n}\n/**\n * A service supplying i18n data to the datepicker component.\n *\n * The default implementation of this service uses the Angular locale and registered locale data for\n * weekdays and month names (as explained in the Angular i18n guide).\n *\n * It also provides a way to i18n data that depends on calendar calculations, like aria labels, day, week and year\n * numerals. For other static labels the datepicker uses the default Angular i18n.\n *\n * See the [i18n demo](#/components/datepicker/examples#i18n) and\n * [Hebrew calendar demo](#/components/datepicker/calendars#hebrew) on how to extend this class and define\n * a custom provider for i18n.\n * @abstract\n */\nvar NgbDatepickerI18n = /** @class */ (function () {\n function NgbDatepickerI18n() {\n }\n /**\n * Returns the textual representation of a day that is rendered in a day cell.\n *\n * @since 3.0.0\n */\n /**\n * Returns the textual representation of a day that is rendered in a day cell.\n *\n * \\@since 3.0.0\n * @param {?} date\n * @return {?}\n */\n NgbDatepickerI18n.prototype.getDayNumerals = /**\n * Returns the textual representation of a day that is rendered in a day cell.\n *\n * \\@since 3.0.0\n * @param {?} date\n * @return {?}\n */\n function (date) { return \"\" + date.day; };\n /**\n * Returns the textual representation of a week number rendered by datepicker.\n *\n * @since 3.0.0\n */\n /**\n * Returns the textual representation of a week number rendered by datepicker.\n *\n * \\@since 3.0.0\n * @param {?} weekNumber\n * @return {?}\n */\n NgbDatepickerI18n.prototype.getWeekNumerals = /**\n * Returns the textual representation of a week number rendered by datepicker.\n *\n * \\@since 3.0.0\n * @param {?} weekNumber\n * @return {?}\n */\n function (weekNumber) { return \"\" + weekNumber; };\n /**\n * Returns the textual representation of a year that is rendered in the datepicker year select box.\n *\n * @since 3.0.0\n */\n /**\n * Returns the textual representation of a year that is rendered in the datepicker year select box.\n *\n * \\@since 3.0.0\n * @param {?} year\n * @return {?}\n */\n NgbDatepickerI18n.prototype.getYearNumerals = /**\n * Returns the textual representation of a year that is rendered in the datepicker year select box.\n *\n * \\@since 3.0.0\n * @param {?} year\n * @return {?}\n */\n function (year) { return \"\" + year; };\n NgbDatepickerI18n.decorators = [\n { type: Injectable, args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_18N_FACTORY, deps: [LOCALE_ID] },] }\n ];\n /** @nocollapse */ NgbDatepickerI18n.ngInjectableDef = defineInjectable({ factory: function NgbDatepickerI18n_Factory() { return NGB_DATEPICKER_18N_FACTORY(inject(LOCALE_ID)); }, token: NgbDatepickerI18n, providedIn: \"root\" });\n return NgbDatepickerI18n;\n}());\nvar NgbDatepickerI18nDefault = /** @class */ (function (_super) {\n __extends(NgbDatepickerI18nDefault, _super);\n function NgbDatepickerI18nDefault(_locale) {\n var _this = _super.call(this) || this;\n _this._locale = _locale;\n /** @type {?} */\n var weekdaysStartingOnSunday = getLocaleDayNames(_locale, FormStyle.Standalone, TranslationWidth.Short);\n _this._weekdaysShort = weekdaysStartingOnSunday.map(function (day, index) { return weekdaysStartingOnSunday[(index + 1) % 7]; });\n _this._monthsShort = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Abbreviated);\n _this._monthsFull = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Wide);\n return _this;\n }\n /**\n * @param {?} weekday\n * @return {?}\n */\n NgbDatepickerI18nDefault.prototype.getWeekdayShortName = /**\n * @param {?} weekday\n * @return {?}\n */\n function (weekday) { return this._weekdaysShort[weekday - 1]; };\n /**\n * @param {?} month\n * @return {?}\n */\n NgbDatepickerI18nDefault.prototype.getMonthShortName = /**\n * @param {?} month\n * @return {?}\n */\n function (month) { return this._monthsShort[month - 1]; };\n /**\n * @param {?} month\n * @return {?}\n */\n NgbDatepickerI18nDefault.prototype.getMonthFullName = /**\n * @param {?} month\n * @return {?}\n */\n function (month) { return this._monthsFull[month - 1]; };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbDatepickerI18nDefault.prototype.getDayAriaLabel = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var jsDate = new Date(date.year, date.month - 1, date.day);\n return formatDate(jsDate, 'fullDate', this._locale);\n };\n NgbDatepickerI18nDefault.decorators = [\n { type: Injectable }\n ];\n /** @nocollapse */\n NgbDatepickerI18nDefault.ctorParameters = function () { return [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n ]; };\n return NgbDatepickerI18nDefault;\n}(NgbDatepickerI18n));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbDatepickerService = /** @class */ (function () {\n function NgbDatepickerService(_calendar, _i18n) {\n this._calendar = _calendar;\n this._i18n = _i18n;\n this._model$ = new Subject();\n this._select$ = new Subject();\n this._state = {\n disabled: false,\n displayMonths: 1,\n firstDayOfWeek: 1,\n focusVisible: false,\n months: [],\n navigation: 'select',\n outsideDays: 'visible',\n prevDisabled: false,\n nextDisabled: false,\n selectBoxes: { years: [], months: [] },\n selectedDate: null\n };\n }\n Object.defineProperty(NgbDatepickerService.prototype, \"model$\", {\n get: /**\n * @return {?}\n */\n function () { return this._model$.pipe(filter(function (model) { return model.months.length > 0; })); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbDatepickerService.prototype, \"select$\", {\n get: /**\n * @return {?}\n */\n function () { return this._select$.pipe(filter(function (date) { return date !== null; })); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbDatepickerService.prototype, \"dayTemplateData\", {\n set: /**\n * @param {?} dayTemplateData\n * @return {?}\n */\n function (dayTemplateData) {\n if (this._state.dayTemplateData !== dayTemplateData) {\n this._nextState({ dayTemplateData: dayTemplateData });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbDatepickerService.prototype, \"disabled\", {\n set: /**\n * @param {?} disabled\n * @return {?}\n */\n function (disabled) {\n if (this._state.disabled !== disabled) {\n this._nextState({ disabled: disabled });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbDatepickerService.prototype, \"displayMonths\", {\n set: /**\n * @param {?} displayMonths\n * @return {?}\n */\n function (displayMonths) {\n displayMonths = toInteger(displayMonths);\n if (isInteger(displayMonths) && displayMonths > 0 && this._state.displayMonths !== displayMonths) {\n this._nextState({ displayMonths: displayMonths });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbDatepickerService.prototype, \"firstDayOfWeek\", {\n set: /**\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n function (firstDayOfWeek) {\n firstDayOfWeek = toInteger(firstDayOfWeek);\n if (isInteger(firstDayOfWeek) && firstDayOfWeek >= 0 && this._state.firstDayOfWeek !== firstDayOfWeek) {\n this._nextState({ firstDayOfWeek: firstDayOfWeek });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbDatepickerService.prototype, \"focusVisible\", {\n set: /**\n * @param {?} focusVisible\n * @return {?}\n */\n function (focusVisible) {\n if (this._state.focusVisible !== focusVisible && !this._state.disabled) {\n this._nextState({ focusVisible: focusVisible });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbDatepickerService.prototype, \"maxDate\", {\n set: /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var maxDate = this.toValidDate(date, null);\n if (isChangedDate(this._state.maxDate, maxDate)) {\n this._nextState({ maxDate: maxDate });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbDatepickerService.prototype, \"markDisabled\", {\n set: /**\n * @param {?} markDisabled\n * @return {?}\n */\n function (markDisabled) {\n if (this._state.markDisabled !== markDisabled) {\n this._nextState({ markDisabled: markDisabled });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbDatepickerService.prototype, \"minDate\", {\n set: /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var minDate = this.toValidDate(date, null);\n if (isChangedDate(this._state.minDate, minDate)) {\n this._nextState({ minDate: minDate });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbDatepickerService.prototype, \"navigation\", {\n set: /**\n * @param {?} navigation\n * @return {?}\n */\n function (navigation) {\n if (this._state.navigation !== navigation) {\n this._nextState({ navigation: navigation });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbDatepickerService.prototype, \"outsideDays\", {\n set: /**\n * @param {?} outsideDays\n * @return {?}\n */\n function (outsideDays) {\n if (this._state.outsideDays !== outsideDays) {\n this._nextState({ outsideDays: outsideDays });\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} date\n * @return {?}\n */\n NgbDatepickerService.prototype.focus = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n if (!this._state.disabled && this._calendar.isValid(date) && isChangedDate(this._state.focusDate, date)) {\n this._nextState({ focusDate: date });\n }\n };\n /**\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n NgbDatepickerService.prototype.focusMove = /**\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n function (period, number) {\n this.focus(this._calendar.getNext(this._state.focusDate, period, number));\n };\n /**\n * @return {?}\n */\n NgbDatepickerService.prototype.focusSelect = /**\n * @return {?}\n */\n function () {\n if (isDateSelectable(this._state.focusDate, this._state)) {\n this.select(this._state.focusDate, { emitEvent: true });\n }\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbDatepickerService.prototype.open = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var firstDate = this.toValidDate(date, this._calendar.getToday());\n if (!this._state.disabled && (!this._state.firstDate || isChangedMonth(this._state.firstDate, date))) {\n this._nextState({ firstDate: firstDate });\n }\n };\n /**\n * @param {?} date\n * @param {?=} options\n * @return {?}\n */\n NgbDatepickerService.prototype.select = /**\n * @param {?} date\n * @param {?=} options\n * @return {?}\n */\n function (date, options) {\n if (options === void 0) { options = {}; }\n /** @type {?} */\n var selectedDate = this.toValidDate(date, null);\n if (!this._state.disabled) {\n if (isChangedDate(this._state.selectedDate, selectedDate)) {\n this._nextState({ selectedDate: selectedDate });\n }\n if (options.emitEvent && isDateSelectable(selectedDate, this._state)) {\n this._select$.next(selectedDate);\n }\n }\n };\n /**\n * @param {?} date\n * @param {?=} defaultValue\n * @return {?}\n */\n NgbDatepickerService.prototype.toValidDate = /**\n * @param {?} date\n * @param {?=} defaultValue\n * @return {?}\n */\n function (date, defaultValue) {\n /** @type {?} */\n var ngbDate = NgbDate.from(date);\n if (defaultValue === undefined) {\n defaultValue = this._calendar.getToday();\n }\n return this._calendar.isValid(ngbDate) ? ngbDate : defaultValue;\n };\n /**\n * @param {?} patch\n * @return {?}\n */\n NgbDatepickerService.prototype._nextState = /**\n * @param {?} patch\n * @return {?}\n */\n function (patch) {\n /** @type {?} */\n var newState = this._updateState(patch);\n this._patchContexts(newState);\n this._state = newState;\n this._model$.next(this._state);\n };\n /**\n * @param {?} state\n * @return {?}\n */\n NgbDatepickerService.prototype._patchContexts = /**\n * @param {?} state\n * @return {?}\n */\n function (state) {\n var months = state.months, displayMonths = state.displayMonths, selectedDate = state.selectedDate, focusDate = state.focusDate, focusVisible = state.focusVisible, disabled = state.disabled, outsideDays = state.outsideDays;\n state.months.forEach(function (month) {\n month.weeks.forEach(function (week) {\n week.days.forEach(function (day) {\n // patch focus flag\n if (focusDate) {\n day.context.focused = focusDate.equals(day.date) && focusVisible;\n }\n // calculating tabindex\n day.tabindex = !disabled && day.date.equals(focusDate) && focusDate.month === month.number ? 0 : -1;\n // override context disabled\n if (disabled === true) {\n day.context.disabled = true;\n }\n // patch selection flag\n if (selectedDate !== undefined) {\n day.context.selected = selectedDate !== null && selectedDate.equals(day.date);\n }\n // visibility\n if (month.number !== day.date.month) {\n day.hidden = outsideDays === 'hidden' || outsideDays === 'collapsed' ||\n (displayMonths > 1 && day.date.after(months[0].firstDate) &&\n day.date.before(months[displayMonths - 1].lastDate));\n }\n });\n });\n });\n };\n /**\n * @param {?} patch\n * @return {?}\n */\n NgbDatepickerService.prototype._updateState = /**\n * @param {?} patch\n * @return {?}\n */\n function (patch) {\n // patching fields\n /** @type {?} */\n var state = Object.assign({}, this._state, patch);\n /** @type {?} */\n var startDate = state.firstDate;\n // min/max dates changed\n if ('minDate' in patch || 'maxDate' in patch) {\n checkMinBeforeMax(state.minDate, state.maxDate);\n state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n startDate = state.focusDate;\n }\n // disabled\n if ('disabled' in patch) {\n state.focusVisible = false;\n }\n // initial rebuild via 'select()'\n if ('selectedDate' in patch && this._state.months.length === 0) {\n startDate = state.selectedDate;\n }\n // terminate early if only focus visibility was changed\n if ('focusVisible' in patch) {\n return state;\n }\n // focus date changed\n if ('focusDate' in patch) {\n state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n startDate = state.focusDate;\n // nothing to rebuild if only focus changed and it is still visible\n if (state.months.length !== 0 && !state.focusDate.before(state.firstDate) &&\n !state.focusDate.after(state.lastDate)) {\n return state;\n }\n }\n // first date changed\n if ('firstDate' in patch) {\n state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n startDate = state.firstDate;\n }\n // rebuilding months\n if (startDate) {\n /** @type {?} */\n var forceRebuild = 'dayTemplateData' in patch || 'firstDayOfWeek' in patch || 'markDisabled' in patch ||\n 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch || 'outsideDays' in patch;\n /** @type {?} */\n var months = buildMonths(this._calendar, startDate, state, this._i18n, forceRebuild);\n // updating months and boundary dates\n state.months = months;\n state.firstDate = months.length > 0 ? months[0].firstDate : undefined;\n state.lastDate = months.length > 0 ? months[months.length - 1].lastDate : undefined;\n // reset selected date if 'markDisabled' returns true\n if ('selectedDate' in patch && !isDateSelectable(state.selectedDate, state)) {\n state.selectedDate = null;\n }\n // adjusting focus after months were built\n if ('firstDate' in patch) {\n if (state.focusDate === undefined || state.focusDate.before(state.firstDate) ||\n state.focusDate.after(state.lastDate)) {\n state.focusDate = startDate;\n }\n }\n // adjusting months/years for the select box navigation\n /** @type {?} */\n var yearChanged = !this._state.firstDate || this._state.firstDate.year !== state.firstDate.year;\n /** @type {?} */\n var monthChanged = !this._state.firstDate || this._state.firstDate.month !== state.firstDate.month;\n if (state.navigation === 'select') {\n // years -> boundaries (min/max were changed)\n if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.years.length === 0 || yearChanged) {\n state.selectBoxes.years = generateSelectBoxYears(state.firstDate, state.minDate, state.maxDate);\n }\n // months -> when current year or boundaries change\n if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.months.length === 0 || yearChanged) {\n state.selectBoxes.months =\n generateSelectBoxMonths(this._calendar, state.firstDate, state.minDate, state.maxDate);\n }\n }\n else {\n state.selectBoxes = { years: [], months: [] };\n }\n // updating navigation arrows -> boundaries change (min/max) or month/year changes\n if ((state.navigation === 'arrows' || state.navigation === 'select') &&\n (monthChanged || yearChanged || 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch)) {\n state.prevDisabled = state.disabled || prevMonthDisabled(this._calendar, state.firstDate, state.minDate);\n state.nextDisabled = state.disabled || nextMonthDisabled(this._calendar, state.lastDate, state.maxDate);\n }\n }\n return state;\n };\n NgbDatepickerService.decorators = [\n { type: Injectable }\n ];\n /** @nocollapse */\n NgbDatepickerService.ctorParameters = function () { return [\n { type: NgbCalendar },\n { type: NgbDatepickerI18n }\n ]; };\n return NgbDatepickerService;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @enum {number} */\nvar Key = {\n Tab: 9,\n Enter: 13,\n Escape: 27,\n Space: 32,\n PageUp: 33,\n PageDown: 34,\n End: 35,\n Home: 36,\n ArrowLeft: 37,\n ArrowUp: 38,\n ArrowRight: 39,\n ArrowDown: 40,\n};\nKey[Key.Tab] = 'Tab';\nKey[Key.Enter] = 'Enter';\nKey[Key.Escape] = 'Escape';\nKey[Key.Space] = 'Space';\nKey[Key.PageUp] = 'PageUp';\nKey[Key.PageDown] = 'PageDown';\nKey[Key.End] = 'End';\nKey[Key.Home] = 'Home';\nKey[Key.ArrowLeft] = 'ArrowLeft';\nKey[Key.ArrowUp] = 'ArrowUp';\nKey[Key.ArrowRight] = 'ArrowRight';\nKey[Key.ArrowDown] = 'ArrowDown';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbDatepickerKeyMapService = /** @class */ (function () {\n function NgbDatepickerKeyMapService(_service, _calendar) {\n var _this = this;\n this._service = _service;\n this._calendar = _calendar;\n _service.model$.subscribe(function (model) {\n _this._minDate = model.minDate;\n _this._maxDate = model.maxDate;\n _this._firstViewDate = model.firstDate;\n _this._lastViewDate = model.lastDate;\n });\n }\n /**\n * @param {?} event\n * @return {?}\n */\n NgbDatepickerKeyMapService.prototype.processKey = /**\n * @param {?} event\n * @return {?}\n */\n function (event) {\n // tslint:disable-next-line:deprecation\n switch (event.which) {\n case Key.PageUp:\n this._service.focusMove(event.shiftKey ? 'y' : 'm', -1);\n break;\n case Key.PageDown:\n this._service.focusMove(event.shiftKey ? 'y' : 'm', 1);\n break;\n case Key.End:\n this._service.focus(event.shiftKey ? this._maxDate : this._lastViewDate);\n break;\n case Key.Home:\n this._service.focus(event.shiftKey ? this._minDate : this._firstViewDate);\n break;\n case Key.ArrowLeft:\n this._service.focusMove('d', -1);\n break;\n case Key.ArrowUp:\n this._service.focusMove('d', -this._calendar.getDaysPerWeek());\n break;\n case Key.ArrowRight:\n this._service.focusMove('d', 1);\n break;\n case Key.ArrowDown:\n this._service.focusMove('d', this._calendar.getDaysPerWeek());\n break;\n case Key.Enter:\n case Key.Space:\n this._service.focusSelect();\n break;\n default:\n return;\n }\n // note 'return' in default case\n event.preventDefault();\n event.stopPropagation();\n };\n NgbDatepickerKeyMapService.decorators = [\n { type: Injectable }\n ];\n /** @nocollapse */\n NgbDatepickerKeyMapService.ctorParameters = function () { return [\n { type: NgbDatepickerService },\n { type: NgbCalendar }\n ]; };\n return NgbDatepickerKeyMapService;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @enum {number} */\nvar NavigationEvent = {\n PREV: 0,\n NEXT: 1,\n};\nNavigationEvent[NavigationEvent.PREV] = 'PREV';\nNavigationEvent[NavigationEvent.NEXT] = 'NEXT';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbDatepicker`](#/components/datepicker/api#NgbDatepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the datepickers used in the application.\n */\nvar NgbDatepickerConfig = /** @class */ (function () {\n function NgbDatepickerConfig() {\n this.displayMonths = 1;\n this.firstDayOfWeek = 1;\n this.navigation = 'select';\n this.outsideDays = 'visible';\n this.showWeekdays = true;\n this.showWeekNumbers = false;\n }\n NgbDatepickerConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbDatepickerConfig.ngInjectableDef = defineInjectable({ factory: function NgbDatepickerConfig_Factory() { return new NgbDatepickerConfig(); }, token: NgbDatepickerConfig, providedIn: \"root\" });\n return NgbDatepickerConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * @return {?}\n */\nfunction NGB_DATEPICKER_DATE_ADAPTER_FACTORY() {\n return new NgbDateStructAdapter();\n}\n/**\n * An abstract service that does the conversion between the internal datepicker `NgbDateStruct` model and\n * any provided user date model `D`, ex. a string, a native date, etc.\n *\n * The adapter is used **only** for conversion when binding datepicker to a form control,\n * ex. `[(ngModel)]=\"userDateModel\"`. Here `userDateModel` can be of any type.\n *\n * The default datepicker implementation assumes we use `NgbDateStruct` as a user model.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details\n * and the [custom adapter demo](#/components/datepicker/examples#adapter) for an example.\n * @abstract\n * @template D\n */\nvar NgbDateAdapter = /** @class */ (function () {\n function NgbDateAdapter() {\n }\n NgbDateAdapter.decorators = [\n { type: Injectable, args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY },] }\n ];\n /** @nocollapse */ NgbDateAdapter.ngInjectableDef = defineInjectable({ factory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY, token: NgbDateAdapter, providedIn: \"root\" });\n return NgbDateAdapter;\n}());\nvar NgbDateStructAdapter = /** @class */ (function (_super) {\n __extends(NgbDateStructAdapter, _super);\n function NgbDateStructAdapter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n */\n /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n * @param {?} date\n * @return {?}\n */\n NgbDateStructAdapter.prototype.fromModel = /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n * @param {?} date\n * @return {?}\n */\n function (date) {\n return (date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)) ?\n { year: date.year, month: date.month, day: date.day } :\n null;\n };\n /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n */\n /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n * @param {?} date\n * @return {?}\n */\n NgbDateStructAdapter.prototype.toModel = /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n * @param {?} date\n * @return {?}\n */\n function (date) {\n return (date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)) ?\n { year: date.year, month: date.month, day: date.day } :\n null;\n };\n NgbDateStructAdapter.decorators = [\n { type: Injectable }\n ];\n return NgbDateStructAdapter;\n}(NgbDateAdapter));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_DATEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return NgbDatepicker; }),\n multi: true\n};\n/**\n * A highly configurable component that helps you with selecting calendar dates.\n *\n * `NgbDatepicker` is meant to be displayed inline on a page or put inside a popup.\n */\nvar NgbDatepicker = /** @class */ (function () {\n function NgbDatepicker(_keyMapService, _service, _calendar, i18n, config, _cd, _elementRef, _ngbDateAdapter, _ngZone) {\n var _this = this;\n this._keyMapService = _keyMapService;\n this._service = _service;\n this._calendar = _calendar;\n this.i18n = i18n;\n this._cd = _cd;\n this._elementRef = _elementRef;\n this._ngbDateAdapter = _ngbDateAdapter;\n this._ngZone = _ngZone;\n this._destroyed$ = new Subject();\n /**\n * An event emitted right before the navigation happens and displayed month changes.\n *\n * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n */\n this.navigate = new EventEmitter();\n /**\n * An event emitted when user selects a date using keyboard or mouse.\n *\n * The payload of the event is currently selected `NgbDate`.\n */\n this.select = new EventEmitter();\n this.onChange = function (_) { };\n this.onTouched = function () { };\n ['dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate',\n 'maxDate', 'navigation', 'outsideDays', 'showWeekdays', 'showWeekNumbers', 'startDate']\n .forEach(function (input) { return _this[input] = config[input]; });\n _service.select$.pipe(takeUntil(this._destroyed$)).subscribe(function (date) { _this.select.emit(date); });\n _service.model$.pipe(takeUntil(this._destroyed$)).subscribe(function (model) {\n /** @type {?} */\n var newDate = model.firstDate;\n /** @type {?} */\n var oldDate = _this.model ? _this.model.firstDate : null;\n /** @type {?} */\n var navigationPrevented = false;\n // emitting navigation event if the first month changes\n if (!newDate.equals(oldDate)) {\n _this.navigate.emit({\n current: oldDate ? { year: oldDate.year, month: oldDate.month } : null,\n next: { year: newDate.year, month: newDate.month },\n preventDefault: function () { return navigationPrevented = true; }\n });\n // can't prevent the very first navigation\n if (navigationPrevented && oldDate !== null) {\n _this._service.open(oldDate);\n return;\n }\n }\n /** @type {?} */\n var newSelectedDate = model.selectedDate;\n /** @type {?} */\n var newFocusedDate = model.focusDate;\n /** @type {?} */\n var oldFocusedDate = _this.model ? _this.model.focusDate : null;\n _this.model = model;\n // handling selection change\n if (isChangedDate(newSelectedDate, _this._controlValue)) {\n _this._controlValue = newSelectedDate;\n _this.onTouched();\n _this.onChange(_this._ngbDateAdapter.toModel(newSelectedDate));\n }\n // handling focus change\n if (isChangedDate(newFocusedDate, oldFocusedDate) && oldFocusedDate && model.focusVisible) {\n _this.focus();\n }\n _cd.markForCheck();\n });\n }\n /**\n * @return {?}\n */\n NgbDatepicker.prototype.focus = /**\n * @return {?}\n */\n function () {\n var _this = this;\n this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(function () {\n /** @type {?} */\n var elementToFocus = _this._elementRef.nativeElement.querySelector('div.ngb-dp-day[tabindex=\"0\"]');\n if (elementToFocus) {\n elementToFocus.focus();\n }\n });\n };\n /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n */\n /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n * @param {?=} date\n * @return {?}\n */\n NgbDatepicker.prototype.navigateTo = /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n * @param {?=} date\n * @return {?}\n */\n function (date) {\n this._service.open(NgbDate.from(date ? date.day ? (/** @type {?} */ (date)) : __assign({}, date, { day: 1 }) : null));\n };\n /**\n * @return {?}\n */\n NgbDatepicker.prototype.ngAfterViewInit = /**\n * @return {?}\n */\n function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n /** @type {?} */\n var focusIns$ = fromEvent(_this._monthsEl.nativeElement, 'focusin');\n /** @type {?} */\n var focusOuts$ = fromEvent(_this._monthsEl.nativeElement, 'focusout');\n // we're changing 'focusVisible' only when entering or leaving months view\n // and ignoring all focus events where both 'target' and 'related' target are day cells\n merge(focusIns$, focusOuts$)\n .pipe(filter(function (_a) {\n var target = _a.target, relatedTarget = _a.relatedTarget;\n return !(hasClassName(target, 'ngb-dp-day') && hasClassName(relatedTarget, 'ngb-dp-day'));\n }), takeUntil(_this._destroyed$))\n .subscribe(function (_a) {\n var type = _a.type;\n return _this._ngZone.run(function () { return _this._service.focusVisible = type === 'focusin'; });\n });\n });\n };\n /**\n * @return {?}\n */\n NgbDatepicker.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () { this._destroyed$.next(); };\n /**\n * @return {?}\n */\n NgbDatepicker.prototype.ngOnInit = /**\n * @return {?}\n */\n function () {\n var _this = this;\n if (this.model === undefined) {\n ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate',\n 'outsideDays']\n .forEach(function (input) { return _this._service[input] = _this[input]; });\n this.navigateTo(this.startDate);\n }\n };\n /**\n * @param {?} changes\n * @return {?}\n */\n NgbDatepicker.prototype.ngOnChanges = /**\n * @param {?} changes\n * @return {?}\n */\n function (changes) {\n var _this = this;\n ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate',\n 'outsideDays']\n .filter(function (input) { return input in changes; })\n .forEach(function (input) { return _this._service[input] = _this[input]; });\n if ('startDate' in changes) {\n var _a = changes.startDate, currentValue = _a.currentValue, previousValue = _a.previousValue;\n if (isChangedMonth(previousValue, currentValue)) {\n this.navigateTo(this.startDate);\n }\n }\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbDatepicker.prototype.onDateSelect = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n this._service.focus(date);\n this._service.select(date, { emitEvent: true });\n };\n /**\n * @param {?} event\n * @return {?}\n */\n NgbDatepicker.prototype.onKeyDown = /**\n * @param {?} event\n * @return {?}\n */\n function (event) { this._keyMapService.processKey(event); };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbDatepicker.prototype.onNavigateDateSelect = /**\n * @param {?} date\n * @return {?}\n */\n function (date) { this._service.open(date); };\n /**\n * @param {?} event\n * @return {?}\n */\n NgbDatepicker.prototype.onNavigateEvent = /**\n * @param {?} event\n * @return {?}\n */\n function (event) {\n switch (event) {\n case NavigationEvent.PREV:\n this._service.open(this._calendar.getPrev(this.model.firstDate, 'm', 1));\n break;\n case NavigationEvent.NEXT:\n this._service.open(this._calendar.getNext(this.model.firstDate, 'm', 1));\n break;\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbDatepicker.prototype.registerOnChange = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this.onChange = fn; };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbDatepicker.prototype.registerOnTouched = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this.onTouched = fn; };\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n NgbDatepicker.prototype.setDisabledState = /**\n * @param {?} isDisabled\n * @return {?}\n */\n function (isDisabled) { this._service.disabled = isDisabled; };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbDatepicker.prototype.writeValue = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._controlValue = NgbDate.from(this._ngbDateAdapter.fromModel(value));\n this._service.select(this._controlValue);\n };\n NgbDatepicker.decorators = [\n { type: Component, args: [{\n exportAs: 'ngbDatepicker',\n selector: 'ngb-datepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: \"\\n \\n
\\n
\\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n
\\n
1 && navigation === 'select')\\\"\\n class=\\\"ngb-dp-month-name bg-light\\\">\\n {{ i18n.getMonthFullName(month.number, month.year) }} {{ i18n.getYearNumerals(month.year) }}\\n
\\n \\n \\n
\\n
\\n
\\n\\n \\n \",\n providers: [NGB_DATEPICKER_VALUE_ACCESSOR, NgbDatepickerService, NgbDatepickerKeyMapService],\n styles: [\"ngb-datepicker{border:1px solid #dfdfdf;border-radius:.25rem;display:inline-block}ngb-datepicker-month-view{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}.ngb-dp-body{z-index:1050}.ngb-dp-header{border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem}.ngb-dp-months{display:-ms-flexbox;display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\"]\n }] }\n ];\n /** @nocollapse */\n NgbDatepicker.ctorParameters = function () { return [\n { type: NgbDatepickerKeyMapService },\n { type: NgbDatepickerService },\n { type: NgbCalendar },\n { type: NgbDatepickerI18n },\n { type: NgbDatepickerConfig },\n { type: ChangeDetectorRef },\n { type: ElementRef },\n { type: NgbDateAdapter },\n { type: NgZone }\n ]; };\n NgbDatepicker.propDecorators = {\n _monthsEl: [{ type: ViewChild, args: ['months',] }],\n dayTemplate: [{ type: Input }],\n dayTemplateData: [{ type: Input }],\n displayMonths: [{ type: Input }],\n firstDayOfWeek: [{ type: Input }],\n footerTemplate: [{ type: Input }],\n markDisabled: [{ type: Input }],\n maxDate: [{ type: Input }],\n minDate: [{ type: Input }],\n navigation: [{ type: Input }],\n outsideDays: [{ type: Input }],\n showWeekdays: [{ type: Input }],\n showWeekNumbers: [{ type: Input }],\n startDate: [{ type: Input }],\n navigate: [{ type: Output }],\n select: [{ type: Output }]\n };\n return NgbDatepicker;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbDatepickerMonthView = /** @class */ (function () {\n function NgbDatepickerMonthView(i18n) {\n this.i18n = i18n;\n this.select = new EventEmitter();\n }\n /**\n * @param {?} day\n * @return {?}\n */\n NgbDatepickerMonthView.prototype.doSelect = /**\n * @param {?} day\n * @return {?}\n */\n function (day) {\n if (!day.context.disabled && !day.hidden) {\n this.select.emit(day.date);\n }\n };\n NgbDatepickerMonthView.decorators = [\n { type: Component, args: [{\n selector: 'ngb-datepicker-month-view',\n host: { 'role': 'grid' },\n encapsulation: ViewEncapsulation.None,\n template: \"\\n
\\n
\\n
\\n {{ i18n.getWeekdayShortName(w) }}\\n
\\n
\\n \\n
\\n
{{ i18n.getWeekNumerals(week.number) }}
\\n
\\n \\n \\n \\n
\\n
\\n
\\n \",\n styles: [\"ngb-datepicker-month-view{display:block}.ngb-dp-week-number,.ngb-dp-weekday{line-height:2rem;text-align:center;font-style:italic}.ngb-dp-weekday{color:#5bc0de;color:var(--info)}.ngb-dp-week{border-radius:.25rem;display:-ms-flexbox;display:flex}.ngb-dp-weekdays{border-bottom:1px solid rgba(0,0,0,.125);border-radius:0}.ngb-dp-day,.ngb-dp-week-number,.ngb-dp-weekday{width:2rem;height:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default}\"]\n }] }\n ];\n /** @nocollapse */\n NgbDatepickerMonthView.ctorParameters = function () { return [\n { type: NgbDatepickerI18n }\n ]; };\n NgbDatepickerMonthView.propDecorators = {\n dayTemplate: [{ type: Input }],\n month: [{ type: Input }],\n showWeekdays: [{ type: Input }],\n showWeekNumbers: [{ type: Input }],\n select: [{ type: Output }]\n };\n return NgbDatepickerMonthView;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbDatepickerNavigation = /** @class */ (function () {\n function NgbDatepickerNavigation(i18n) {\n this.i18n = i18n;\n this.navigation = NavigationEvent;\n this.months = [];\n this.navigate = new EventEmitter();\n this.select = new EventEmitter();\n }\n NgbDatepickerNavigation.decorators = [\n { type: Component, args: [{\n selector: 'ngb-datepicker-navigation',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: \"\\n
\\n \\n
\\n \\n \\n\\n \\n
0\\\">
\\n
\\n {{ i18n.getMonthFullName(month.number, month.year) }} {{ i18n.getYearNumerals(month.year) }}\\n
\\n
\\n
\\n
\\n \\n
\\n \",\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}\"]\n }] }\n ];\n /** @nocollapse */\n NgbDatepickerNavigation.ctorParameters = function () { return [\n { type: NgbDatepickerI18n }\n ]; };\n NgbDatepickerNavigation.propDecorators = {\n date: [{ type: Input }],\n disabled: [{ type: Input }],\n months: [{ type: Input }],\n showSelect: [{ type: Input }],\n prevDisabled: [{ type: Input }],\n nextDisabled: [{ type: Input }],\n selectBoxes: [{ type: Input }],\n navigate: [{ type: Output }],\n select: [{ type: Output }]\n };\n return NgbDatepickerNavigation;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar isContainedIn = function (element, array) {\n return array ? array.some(function (item) { return item.contains(element); }) : false;\n};\n/** @type {?} */\nvar matchesSelectorIfAny = function (element, selector) {\n return !selector || closest(element, selector) != null;\n};\n// we'll have to use 'touch' events instead of 'mouse' events on iOS and add a more significant delay\n// to avoid re-opening when handling (click) on a toggling element\n// TODO: use proper Angular platform detection when NgbAutoClose becomes a service and we can inject PLATFORM_ID\n/** @type {?} */\nvar iOS = false;\nif (typeof navigator !== 'undefined') {\n iOS = !!navigator.userAgent && /iPad|iPhone|iPod/.test(navigator.userAgent);\n}\n/**\n * @param {?} zone\n * @param {?} document\n * @param {?} type\n * @param {?} close\n * @param {?} closed$\n * @param {?} insideElements\n * @param {?=} ignoreElements\n * @param {?=} insideSelector\n * @return {?}\n */\nfunction ngbAutoClose(zone, document, type, close, closed$, insideElements, ignoreElements, insideSelector) {\n // closing on ESC and outside clicks\n if (type) {\n zone.runOutsideAngular(function () {\n /** @type {?} */\n var shouldCloseOnClick = function (event) {\n /** @type {?} */\n var element = (/** @type {?} */ (event.target));\n if ((event instanceof MouseEvent && event.button === 2) || isContainedIn(element, ignoreElements)) {\n return false;\n }\n if (type === 'inside') {\n return isContainedIn(element, insideElements) && matchesSelectorIfAny(element, insideSelector);\n }\n else if (type === 'outside') {\n return !isContainedIn(element, insideElements);\n }\n else /* if (type === true) */ {\n return matchesSelectorIfAny(element, insideSelector) || !isContainedIn(element, insideElements);\n }\n };\n /** @type {?} */\n var escapes$ = fromEvent(document, 'keydown')\n .pipe(takeUntil(closed$), \n // tslint:disable-next-line:deprecation\n filter(function (e) { return e.which === Key.Escape; }));\n // we have to pre-calculate 'shouldCloseOnClick' on 'mousedown/touchstart',\n // because on 'mouseup/touchend' DOM nodes might be detached\n /** @type {?} */\n var mouseDowns$ = fromEvent(document, iOS ? 'touchstart' : 'mousedown')\n .pipe(map(shouldCloseOnClick), takeUntil(closed$));\n /** @type {?} */\n var closeableClicks$ = fromEvent(document, iOS ? 'touchend' : 'mouseup')\n .pipe(withLatestFrom(mouseDowns$), filter(function (_a) {\n var _b = __read(_a, 2), _ = _b[0], shouldClose = _b[1];\n return shouldClose;\n }), delay(iOS ? 16 : 0), takeUntil(closed$));\n race([escapes$, closeableClicks$]).subscribe(function () { return zone.run(close); });\n });\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar FOCUSABLE_ELEMENTS_SELECTOR = [\n 'a[href]', 'button:not([disabled])', 'input:not([disabled]):not([type=\"hidden\"])', 'select:not([disabled])',\n 'textarea:not([disabled])', '[contenteditable]', '[tabindex]:not([tabindex=\"-1\"])'\n].join(', ');\n/**\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\n * @param {?} element\n * @return {?}\n */\nfunction getFocusableBoundaryElements(element) {\n /** @type {?} */\n var list = Array.from((/** @type {?} */ (element.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR))))\n .filter(function (el) { return el.tabIndex !== -1; });\n return [list[0], list[list.length - 1]];\n}\n/**\n * Function that enforces browser focus to be trapped inside a DOM element.\n *\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\n *\n * \\@param element The element around which focus will be trapped inside\n * \\@param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\n * and free internal resources\n * \\@param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\n * false)\n * @type {?}\n */\nvar ngbFocusTrap = function (element, stopFocusTrap$, refocusOnClick) {\n if (refocusOnClick === void 0) { refocusOnClick = false; }\n // last focused element\n /** @type {?} */\n var lastFocusedElement$ = fromEvent(element, 'focusin').pipe(takeUntil(stopFocusTrap$), map(function (e) { return e.target; }));\n // 'tab' / 'shift+tab' stream\n fromEvent(element, 'keydown')\n .pipe(takeUntil(stopFocusTrap$), \n // tslint:disable:deprecation\n filter(function (e) { return e.which === Key.Tab; }), \n // tslint:enable:deprecation\n withLatestFrom(lastFocusedElement$))\n .subscribe(function (_a) {\n var _b = __read(_a, 2), tabEvent = _b[0], focusedElement = _b[1];\n var _c = __read(getFocusableBoundaryElements(element), 2), first = _c[0], last = _c[1];\n if ((focusedElement === first || focusedElement === element) && tabEvent.shiftKey) {\n last.focus();\n tabEvent.preventDefault();\n }\n if (focusedElement === last && !tabEvent.shiftKey) {\n first.focus();\n tabEvent.preventDefault();\n }\n });\n // inside click\n if (refocusOnClick) {\n fromEvent(element, 'click')\n .pipe(takeUntil(stopFocusTrap$), withLatestFrom(lastFocusedElement$), map(function (arr) { return (/** @type {?} */ (arr[1])); }))\n .subscribe(function (lastFocusedElement) { return lastFocusedElement.focus(); });\n }\n};\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n// previous version:\n// https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\nvar \n// previous version:\n// https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\nPositioning = /** @class */ (function () {\n function Positioning() {\n }\n /**\n * @param {?} element\n * @return {?}\n */\n Positioning.prototype.getAllStyles = /**\n * @param {?} element\n * @return {?}\n */\n function (element) { return window.getComputedStyle(element); };\n /**\n * @param {?} element\n * @param {?} prop\n * @return {?}\n */\n Positioning.prototype.getStyle = /**\n * @param {?} element\n * @param {?} prop\n * @return {?}\n */\n function (element, prop) { return this.getAllStyles(element)[prop]; };\n /**\n * @param {?} element\n * @return {?}\n */\n Positioning.prototype.isStaticPositioned = /**\n * @param {?} element\n * @return {?}\n */\n function (element) {\n return (this.getStyle(element, 'position') || 'static') === 'static';\n };\n /**\n * @param {?} element\n * @return {?}\n */\n Positioning.prototype.offsetParent = /**\n * @param {?} element\n * @return {?}\n */\n function (element) {\n /** @type {?} */\n var offsetParentEl = (/** @type {?} */ (element.offsetParent)) || document.documentElement;\n while (offsetParentEl && offsetParentEl !== document.documentElement && this.isStaticPositioned(offsetParentEl)) {\n offsetParentEl = (/** @type {?} */ (offsetParentEl.offsetParent));\n }\n return offsetParentEl || document.documentElement;\n };\n /**\n * @param {?} element\n * @param {?=} round\n * @return {?}\n */\n Positioning.prototype.position = /**\n * @param {?} element\n * @param {?=} round\n * @return {?}\n */\n function (element, round) {\n if (round === void 0) { round = true; }\n /** @type {?} */\n var elPosition;\n /** @type {?} */\n var parentOffset = { width: 0, height: 0, top: 0, bottom: 0, left: 0, right: 0 };\n if (this.getStyle(element, 'position') === 'fixed') {\n elPosition = element.getBoundingClientRect();\n elPosition = {\n top: elPosition.top,\n bottom: elPosition.bottom,\n left: elPosition.left,\n right: elPosition.right,\n height: elPosition.height,\n width: elPosition.width\n };\n }\n else {\n /** @type {?} */\n var offsetParentEl = this.offsetParent(element);\n elPosition = this.offset(element, false);\n if (offsetParentEl !== document.documentElement) {\n parentOffset = this.offset(offsetParentEl, false);\n }\n parentOffset.top += offsetParentEl.clientTop;\n parentOffset.left += offsetParentEl.clientLeft;\n }\n elPosition.top -= parentOffset.top;\n elPosition.bottom -= parentOffset.top;\n elPosition.left -= parentOffset.left;\n elPosition.right -= parentOffset.left;\n if (round) {\n elPosition.top = Math.round(elPosition.top);\n elPosition.bottom = Math.round(elPosition.bottom);\n elPosition.left = Math.round(elPosition.left);\n elPosition.right = Math.round(elPosition.right);\n }\n return elPosition;\n };\n /**\n * @param {?} element\n * @param {?=} round\n * @return {?}\n */\n Positioning.prototype.offset = /**\n * @param {?} element\n * @param {?=} round\n * @return {?}\n */\n function (element, round) {\n if (round === void 0) { round = true; }\n /** @type {?} */\n var elBcr = element.getBoundingClientRect();\n /** @type {?} */\n var viewportOffset = {\n top: window.pageYOffset - document.documentElement.clientTop,\n left: window.pageXOffset - document.documentElement.clientLeft\n };\n /** @type {?} */\n var elOffset = {\n height: elBcr.height || element.offsetHeight,\n width: elBcr.width || element.offsetWidth,\n top: elBcr.top + viewportOffset.top,\n bottom: elBcr.bottom + viewportOffset.top,\n left: elBcr.left + viewportOffset.left,\n right: elBcr.right + viewportOffset.left\n };\n if (round) {\n elOffset.height = Math.round(elOffset.height);\n elOffset.width = Math.round(elOffset.width);\n elOffset.top = Math.round(elOffset.top);\n elOffset.bottom = Math.round(elOffset.bottom);\n elOffset.left = Math.round(elOffset.left);\n elOffset.right = Math.round(elOffset.right);\n }\n return elOffset;\n };\n /*\n Return false if the element to position is outside the viewport\n */\n /*\n Return false if the element to position is outside the viewport\n */\n /**\n * @param {?} hostElement\n * @param {?} targetElement\n * @param {?} placement\n * @param {?=} appendToBody\n * @return {?}\n */\n Positioning.prototype.positionElements = /*\n Return false if the element to position is outside the viewport\n */\n /**\n * @param {?} hostElement\n * @param {?} targetElement\n * @param {?} placement\n * @param {?=} appendToBody\n * @return {?}\n */\n function (hostElement, targetElement, placement, appendToBody) {\n var _a = __read(placement.split('-'), 2), _b = _a[0], placementPrimary = _b === void 0 ? 'top' : _b, _c = _a[1], placementSecondary = _c === void 0 ? 'center' : _c;\n /** @type {?} */\n var hostElPosition = appendToBody ? this.offset(hostElement, false) : this.position(hostElement, false);\n /** @type {?} */\n var targetElStyles = this.getAllStyles(targetElement);\n /** @type {?} */\n var marginTop = parseFloat(targetElStyles.marginTop);\n /** @type {?} */\n var marginBottom = parseFloat(targetElStyles.marginBottom);\n /** @type {?} */\n var marginLeft = parseFloat(targetElStyles.marginLeft);\n /** @type {?} */\n var marginRight = parseFloat(targetElStyles.marginRight);\n /** @type {?} */\n var topPosition = 0;\n /** @type {?} */\n var leftPosition = 0;\n switch (placementPrimary) {\n case 'top':\n topPosition = (hostElPosition.top - (targetElement.offsetHeight + marginTop + marginBottom));\n break;\n case 'bottom':\n topPosition = (hostElPosition.top + hostElPosition.height);\n break;\n case 'left':\n leftPosition = (hostElPosition.left - (targetElement.offsetWidth + marginLeft + marginRight));\n break;\n case 'right':\n leftPosition = (hostElPosition.left + hostElPosition.width);\n break;\n }\n switch (placementSecondary) {\n case 'top':\n topPosition = hostElPosition.top;\n break;\n case 'bottom':\n topPosition = hostElPosition.top + hostElPosition.height - targetElement.offsetHeight;\n break;\n case 'left':\n leftPosition = hostElPosition.left;\n break;\n case 'right':\n leftPosition = hostElPosition.left + hostElPosition.width - targetElement.offsetWidth;\n break;\n case 'center':\n if (placementPrimary === 'top' || placementPrimary === 'bottom') {\n leftPosition = (hostElPosition.left + hostElPosition.width / 2 - targetElement.offsetWidth / 2);\n }\n else {\n topPosition = (hostElPosition.top + hostElPosition.height / 2 - targetElement.offsetHeight / 2);\n }\n break;\n }\n /// The translate3d/gpu acceleration render a blurry text on chrome, the next line is commented until a browser fix\n // targetElement.style.transform = `translate3d(${Math.round(leftPosition)}px, ${Math.floor(topPosition)}px, 0px)`;\n targetElement.style.transform = \"translate(\" + Math.round(leftPosition) + \"px, \" + Math.round(topPosition) + \"px)\";\n // Check if the targetElement is inside the viewport\n /** @type {?} */\n var targetElBCR = targetElement.getBoundingClientRect();\n /** @type {?} */\n var html = document.documentElement;\n /** @type {?} */\n var windowHeight = window.innerHeight || html.clientHeight;\n /** @type {?} */\n var windowWidth = window.innerWidth || html.clientWidth;\n return targetElBCR.left >= 0 && targetElBCR.top >= 0 && targetElBCR.right <= windowWidth &&\n targetElBCR.bottom <= windowHeight;\n };\n return Positioning;\n}());\n/** @type {?} */\nvar placementSeparator = /\\s+/;\n/** @type {?} */\nvar positionService = new Positioning();\n/*\n * Accept the placement array and applies the appropriate placement dependent on the viewport.\n * Returns the applied placement.\n * In case of auto placement, placements are selected in order\n * 'top', 'bottom', 'left', 'right',\n * 'top-left', 'top-right',\n * 'bottom-left', 'bottom-right',\n * 'left-top', 'left-bottom',\n * 'right-top', 'right-bottom'.\n * */\n/**\n * @param {?} hostElement\n * @param {?} targetElement\n * @param {?} placement\n * @param {?=} appendToBody\n * @param {?=} baseClass\n * @return {?}\n */\nfunction positionElements(hostElement, targetElement, placement, appendToBody, baseClass) {\n var e_1, _a;\n /** @type {?} */\n var placementVals = Array.isArray(placement) ? placement : (/** @type {?} */ (placement.split(placementSeparator)));\n /** @type {?} */\n var allowedPlacements = [\n 'top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'left-top', 'left-bottom',\n 'right-top', 'right-bottom'\n ];\n /** @type {?} */\n var classList = targetElement.classList;\n /** @type {?} */\n var addClassesToTarget = function (targetPlacement) {\n var _a = __read(targetPlacement.split('-'), 2), primary = _a[0], secondary = _a[1];\n /** @type {?} */\n var classes = [];\n if (baseClass) {\n classes.push(baseClass + \"-\" + primary);\n if (secondary) {\n classes.push(baseClass + \"-\" + primary + \"-\" + secondary);\n }\n classes.forEach(function (classname) { classList.add(classname); });\n }\n return classes;\n };\n // Remove old placement classes to avoid issues\n if (baseClass) {\n allowedPlacements.forEach(function (placementToRemove) { classList.remove(baseClass + \"-\" + placementToRemove); });\n }\n // replace auto placement with other placements\n /** @type {?} */\n var hasAuto = placementVals.findIndex(function (val) { return val === 'auto'; });\n if (hasAuto >= 0) {\n allowedPlacements.forEach(function (obj) {\n if (placementVals.find(function (val) { return val.search('^' + obj) !== -1; }) == null) {\n placementVals.splice(hasAuto++, 1, (/** @type {?} */ (obj)));\n }\n });\n }\n // coordinates where to position\n // Required for transform:\n /** @type {?} */\n var style = targetElement.style;\n style.position = 'absolute';\n style.top = '0';\n style.left = '0';\n style['will-change'] = 'transform';\n /** @type {?} */\n var testPlacement;\n /** @type {?} */\n var isInViewport = false;\n try {\n for (var placementVals_1 = __values(placementVals), placementVals_1_1 = placementVals_1.next(); !placementVals_1_1.done; placementVals_1_1 = placementVals_1.next()) {\n testPlacement = placementVals_1_1.value;\n /** @type {?} */\n var addedClasses = addClassesToTarget(testPlacement);\n if (positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody)) {\n isInViewport = true;\n break;\n }\n // Remove the baseClasses for further calculation\n if (baseClass) {\n addedClasses.forEach(function (classname) { classList.remove(classname); });\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (placementVals_1_1 && !placementVals_1_1.done && (_a = placementVals_1.return)) _a.call(placementVals_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (!isInViewport) {\n // If nothing match, the first placement is the default one\n testPlacement = placementVals[0];\n addClassesToTarget(testPlacement);\n positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody);\n }\n return testPlacement;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * @return {?}\n */\nfunction NGB_DATEPICKER_PARSER_FORMATTER_FACTORY() {\n return new NgbDateISOParserFormatter();\n}\n/**\n * An abstract service for parsing and formatting dates for the\n * [`NgbInputDatepicker`](#/components/datepicker/api#NgbInputDatepicker) directive.\n * Converts between the internal `NgbDateStruct` model presentation and a `string` that is displayed in the\n * input element.\n *\n * When user types something in the input this service attempts to parse it into a `NgbDateStruct` object.\n * And vice versa, when users selects a date in the calendar with the mouse, it must be displayed as a `string`\n * in the input.\n *\n * Default implementation uses the ISO 8601 format, but you can provide another implementation via DI\n * to use an alternative string format or a custom parsing logic.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n * @abstract\n */\nvar NgbDateParserFormatter = /** @class */ (function () {\n function NgbDateParserFormatter() {\n }\n NgbDateParserFormatter.decorators = [\n { type: Injectable, args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY },] }\n ];\n /** @nocollapse */ NgbDateParserFormatter.ngInjectableDef = defineInjectable({ factory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY, token: NgbDateParserFormatter, providedIn: \"root\" });\n return NgbDateParserFormatter;\n}());\nvar NgbDateISOParserFormatter = /** @class */ (function (_super) {\n __extends(NgbDateISOParserFormatter, _super);\n function NgbDateISOParserFormatter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n NgbDateISOParserFormatter.prototype.parse = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n if (value) {\n /** @type {?} */\n var dateParts = value.trim().split('-');\n if (dateParts.length === 1 && isNumber(dateParts[0])) {\n return { year: toInteger(dateParts[0]), month: null, day: null };\n }\n else if (dateParts.length === 2 && isNumber(dateParts[0]) && isNumber(dateParts[1])) {\n return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: null };\n }\n else if (dateParts.length === 3 && isNumber(dateParts[0]) && isNumber(dateParts[1]) && isNumber(dateParts[2])) {\n return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: toInteger(dateParts[2]) };\n }\n }\n return null;\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbDateISOParserFormatter.prototype.format = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n return date ?\n date.year + \"-\" + (isNumber(date.month) ? padNumber(date.month) : '') + \"-\" + (isNumber(date.day) ? padNumber(date.day) : '') :\n '';\n };\n NgbDateISOParserFormatter.decorators = [\n { type: Injectable }\n ];\n return NgbDateISOParserFormatter;\n}(NgbDateParserFormatter));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_DATEPICKER_VALUE_ACCESSOR$1 = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return NgbInputDatepicker; }),\n multi: true\n};\n/** @type {?} */\nvar NGB_DATEPICKER_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(function () { return NgbInputDatepicker; }),\n multi: true\n};\n/**\n * A directive that allows to stick a datepicker popup to an input field.\n *\n * Manages interaction with the input field itself, does value formatting and provides forms integration.\n */\nvar NgbInputDatepicker = /** @class */ (function () {\n function NgbInputDatepicker(_parserFormatter, _elRef, _vcRef, _renderer, _cfr, _ngZone, _service, _calendar, _dateAdapter, _document, _changeDetector) {\n var _this = this;\n this._parserFormatter = _parserFormatter;\n this._elRef = _elRef;\n this._vcRef = _vcRef;\n this._renderer = _renderer;\n this._cfr = _cfr;\n this._ngZone = _ngZone;\n this._service = _service;\n this._calendar = _calendar;\n this._dateAdapter = _dateAdapter;\n this._document = _document;\n this._changeDetector = _changeDetector;\n this._cRef = null;\n this._disabled = false;\n /**\n * Indicates whether the datepicker popup should be closed automatically after date selection / outside click or not.\n *\n * * `true` - the popup will close on both date selection and outside click.\n * * `false` - the popup can only be closed manually via `close()` or `toggle()` methods.\n * * `\"inside\"` - the popup will close on date selection, but not outside clicks.\n * * `\"outside\"` - the popup will close only on the outside click and not on date selection/inside clicks.\n *\n * \\@since 3.0.0\n */\n this.autoClose = true;\n /**\n * The preferred placement of the datepicker popup.\n *\n * Possible values are `\"top\"`, `\"top-left\"`, `\"top-right\"`, `\"bottom\"`, `\"bottom-left\"`,\n * `\"bottom-right\"`, `\"left\"`, `\"left-top\"`, `\"left-bottom\"`, `\"right\"`, `\"right-top\"`,\n * `\"right-bottom\"`\n *\n * Accepts an array of strings or a string with space separated possible values.\n *\n * The default order of preference is `\"bottom-left bottom-right top-left top-right\"`\n *\n * Please see the [positioning overview](#/positioning) for more details.\n */\n this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n /**\n * An event emitted when user selects a date using keyboard or mouse.\n *\n * The payload of the event is currently selected `NgbDate`.\n *\n * \\@since 1.1.1\n */\n this.dateSelect = new EventEmitter();\n /**\n * Event emitted right after the navigation happens and displayed month changes.\n *\n * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n */\n this.navigate = new EventEmitter();\n /**\n * An event fired after closing datepicker window.\n *\n * \\@since 4.2.0\n */\n this.closed = new EventEmitter();\n this._onChange = function (_) { };\n this._onTouched = function () { };\n this._validatorChange = function () { };\n this._zoneSubscription = _ngZone.onStable.subscribe(function () { return _this._updatePopupPosition(); });\n }\n Object.defineProperty(NgbInputDatepicker.prototype, \"disabled\", {\n get: /**\n * @return {?}\n */\n function () {\n return this._disabled;\n },\n set: /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._disabled = value === '' || (value && value !== 'false');\n if (this.isOpen()) {\n this._cRef.instance.setDisabledState(this._disabled);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbInputDatepicker.prototype.registerOnChange = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this._onChange = fn; };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbInputDatepicker.prototype.registerOnTouched = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this._onTouched = fn; };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbInputDatepicker.prototype.registerOnValidatorChange = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this._validatorChange = fn; };\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n NgbInputDatepicker.prototype.setDisabledState = /**\n * @param {?} isDisabled\n * @return {?}\n */\n function (isDisabled) { this.disabled = isDisabled; };\n /**\n * @param {?} c\n * @return {?}\n */\n NgbInputDatepicker.prototype.validate = /**\n * @param {?} c\n * @return {?}\n */\n function (c) {\n /** @type {?} */\n var value = c.value;\n if (value === null || value === undefined) {\n return null;\n }\n /** @type {?} */\n var ngbDate = this._fromDateStruct(this._dateAdapter.fromModel(value));\n if (!this._calendar.isValid(ngbDate)) {\n return { 'ngbDate': { invalid: c.value } };\n }\n if (this.minDate && ngbDate.before(NgbDate.from(this.minDate))) {\n return { 'ngbDate': { requiredBefore: this.minDate } };\n }\n if (this.maxDate && ngbDate.after(NgbDate.from(this.maxDate))) {\n return { 'ngbDate': { requiredAfter: this.maxDate } };\n }\n };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbInputDatepicker.prototype.writeValue = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._model = this._fromDateStruct(this._dateAdapter.fromModel(value));\n this._writeModelValue(this._model);\n };\n /**\n * @param {?} value\n * @param {?=} updateView\n * @return {?}\n */\n NgbInputDatepicker.prototype.manualDateChange = /**\n * @param {?} value\n * @param {?=} updateView\n * @return {?}\n */\n function (value, updateView) {\n if (updateView === void 0) { updateView = false; }\n /** @type {?} */\n var inputValueChanged = value !== this._inputValue;\n if (inputValueChanged) {\n this._inputValue = value;\n this._model = this._fromDateStruct(this._parserFormatter.parse(value));\n }\n if (inputValueChanged || !updateView) {\n this._onChange(this._model ? this._dateAdapter.toModel(this._model) : (value === '' ? null : value));\n }\n if (updateView && this._model) {\n this._writeModelValue(this._model);\n }\n };\n /**\n * @return {?}\n */\n NgbInputDatepicker.prototype.isOpen = /**\n * @return {?}\n */\n function () { return !!this._cRef; };\n /**\n * Opens the datepicker popup.\n *\n * If the related form control contains a valid date, the corresponding month will be opened.\n */\n /**\n * Opens the datepicker popup.\n *\n * If the related form control contains a valid date, the corresponding month will be opened.\n * @return {?}\n */\n NgbInputDatepicker.prototype.open = /**\n * Opens the datepicker popup.\n *\n * If the related form control contains a valid date, the corresponding month will be opened.\n * @return {?}\n */\n function () {\n var _this = this;\n if (!this.isOpen()) {\n /** @type {?} */\n var cf = this._cfr.resolveComponentFactory(NgbDatepicker);\n this._cRef = this._vcRef.createComponent(cf);\n this._applyPopupStyling(this._cRef.location.nativeElement);\n this._applyDatepickerInputs(this._cRef.instance);\n this._subscribeForDatepickerOutputs(this._cRef.instance);\n this._cRef.instance.ngOnInit();\n this._cRef.instance.writeValue(this._dateAdapter.toModel(this._model));\n // date selection event handling\n this._cRef.instance.registerOnChange(function (selectedDate) {\n _this.writeValue(selectedDate);\n _this._onChange(selectedDate);\n _this._onTouched();\n });\n this._cRef.changeDetectorRef.detectChanges();\n this._cRef.instance.setDisabledState(this.disabled);\n if (this.container === 'body') {\n window.document.querySelector(this.container).appendChild(this._cRef.location.nativeElement);\n }\n // focus handling\n ngbFocusTrap(this._cRef.location.nativeElement, this.closed, true);\n this._cRef.instance.focus();\n ngbAutoClose(this._ngZone, this._document, this.autoClose, function () { return _this.close(); }, this.closed, [], [this._elRef.nativeElement, this._cRef.location.nativeElement]);\n }\n };\n /**\n * Closes the datepicker popup.\n */\n /**\n * Closes the datepicker popup.\n * @return {?}\n */\n NgbInputDatepicker.prototype.close = /**\n * Closes the datepicker popup.\n * @return {?}\n */\n function () {\n if (this.isOpen()) {\n this._vcRef.remove(this._vcRef.indexOf(this._cRef.hostView));\n this._cRef = null;\n this.closed.emit();\n this._changeDetector.markForCheck();\n }\n };\n /**\n * Toggles the datepicker popup.\n */\n /**\n * Toggles the datepicker popup.\n * @return {?}\n */\n NgbInputDatepicker.prototype.toggle = /**\n * Toggles the datepicker popup.\n * @return {?}\n */\n function () {\n if (this.isOpen()) {\n this.close();\n }\n else {\n this.open();\n }\n };\n /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n */\n /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n * @param {?=} date\n * @return {?}\n */\n NgbInputDatepicker.prototype.navigateTo = /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n * @param {?=} date\n * @return {?}\n */\n function (date) {\n if (this.isOpen()) {\n this._cRef.instance.navigateTo(date);\n }\n };\n /**\n * @return {?}\n */\n NgbInputDatepicker.prototype.onBlur = /**\n * @return {?}\n */\n function () { this._onTouched(); };\n /**\n * @param {?} changes\n * @return {?}\n */\n NgbInputDatepicker.prototype.ngOnChanges = /**\n * @param {?} changes\n * @return {?}\n */\n function (changes) {\n if (changes['minDate'] || changes['maxDate']) {\n this._validatorChange();\n }\n };\n /**\n * @return {?}\n */\n NgbInputDatepicker.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n this.close();\n this._zoneSubscription.unsubscribe();\n };\n /**\n * @param {?} datepickerInstance\n * @return {?}\n */\n NgbInputDatepicker.prototype._applyDatepickerInputs = /**\n * @param {?} datepickerInstance\n * @return {?}\n */\n function (datepickerInstance) {\n var _this = this;\n ['dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate',\n 'maxDate', 'navigation', 'outsideDays', 'showNavigation', 'showWeekdays', 'showWeekNumbers']\n .forEach(function (optionName) {\n if (_this[optionName] !== undefined) {\n datepickerInstance[optionName] = _this[optionName];\n }\n });\n datepickerInstance.startDate = this.startDate || this._model;\n };\n /**\n * @param {?} nativeElement\n * @return {?}\n */\n NgbInputDatepicker.prototype._applyPopupStyling = /**\n * @param {?} nativeElement\n * @return {?}\n */\n function (nativeElement) {\n this._renderer.addClass(nativeElement, 'dropdown-menu');\n this._renderer.addClass(nativeElement, 'show');\n if (this.container === 'body') {\n this._renderer.addClass(nativeElement, 'ngb-dp-body');\n }\n };\n /**\n * @param {?} datepickerInstance\n * @return {?}\n */\n NgbInputDatepicker.prototype._subscribeForDatepickerOutputs = /**\n * @param {?} datepickerInstance\n * @return {?}\n */\n function (datepickerInstance) {\n var _this = this;\n datepickerInstance.navigate.subscribe(function (navigateEvent) { return _this.navigate.emit(navigateEvent); });\n datepickerInstance.select.subscribe(function (date) {\n _this.dateSelect.emit(date);\n if (_this.autoClose === true || _this.autoClose === 'inside') {\n _this.close();\n }\n });\n };\n /**\n * @param {?} model\n * @return {?}\n */\n NgbInputDatepicker.prototype._writeModelValue = /**\n * @param {?} model\n * @return {?}\n */\n function (model) {\n /** @type {?} */\n var value = this._parserFormatter.format(model);\n this._inputValue = value;\n this._renderer.setProperty(this._elRef.nativeElement, 'value', value);\n if (this.isOpen()) {\n this._cRef.instance.writeValue(this._dateAdapter.toModel(model));\n this._onTouched();\n }\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbInputDatepicker.prototype._fromDateStruct = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var ngbDate = date ? new NgbDate(date.year, date.month, date.day) : null;\n return this._calendar.isValid(ngbDate) ? ngbDate : null;\n };\n /**\n * @return {?}\n */\n NgbInputDatepicker.prototype._updatePopupPosition = /**\n * @return {?}\n */\n function () {\n if (!this._cRef) {\n return;\n }\n /** @type {?} */\n var hostElement;\n if (typeof this.positionTarget === 'string') {\n hostElement = window.document.querySelector(this.positionTarget);\n }\n else if (this.positionTarget instanceof HTMLElement) {\n hostElement = this.positionTarget;\n }\n else {\n hostElement = this._elRef.nativeElement;\n }\n if (this.positionTarget && !hostElement) {\n throw new Error('ngbDatepicker could not find element declared in [positionTarget] to position against.');\n }\n positionElements(hostElement, this._cRef.location.nativeElement, this.placement, this.container === 'body');\n };\n NgbInputDatepicker.decorators = [\n { type: Directive, args: [{\n selector: 'input[ngbDatepicker]',\n exportAs: 'ngbDatepicker',\n host: {\n '(input)': 'manualDateChange($event.target.value)',\n '(change)': 'manualDateChange($event.target.value, true)',\n '(blur)': 'onBlur()',\n '[disabled]': 'disabled'\n },\n providers: [NGB_DATEPICKER_VALUE_ACCESSOR$1, NGB_DATEPICKER_VALIDATOR, NgbDatepickerService]\n },] }\n ];\n /** @nocollapse */\n NgbInputDatepicker.ctorParameters = function () { return [\n { type: NgbDateParserFormatter },\n { type: ElementRef },\n { type: ViewContainerRef },\n { type: Renderer2 },\n { type: ComponentFactoryResolver },\n { type: NgZone },\n { type: NgbDatepickerService },\n { type: NgbCalendar },\n { type: NgbDateAdapter },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ChangeDetectorRef }\n ]; };\n NgbInputDatepicker.propDecorators = {\n autoClose: [{ type: Input }],\n dayTemplate: [{ type: Input }],\n dayTemplateData: [{ type: Input }],\n displayMonths: [{ type: Input }],\n firstDayOfWeek: [{ type: Input }],\n footerTemplate: [{ type: Input }],\n markDisabled: [{ type: Input }],\n minDate: [{ type: Input }],\n maxDate: [{ type: Input }],\n navigation: [{ type: Input }],\n outsideDays: [{ type: Input }],\n placement: [{ type: Input }],\n showWeekdays: [{ type: Input }],\n showWeekNumbers: [{ type: Input }],\n startDate: [{ type: Input }],\n container: [{ type: Input }],\n positionTarget: [{ type: Input }],\n dateSelect: [{ type: Output }],\n navigate: [{ type: Output }],\n closed: [{ type: Output }],\n disabled: [{ type: Input }]\n };\n return NgbInputDatepicker;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbDatepickerDayView = /** @class */ (function () {\n function NgbDatepickerDayView(i18n) {\n this.i18n = i18n;\n }\n /**\n * @return {?}\n */\n NgbDatepickerDayView.prototype.isMuted = /**\n * @return {?}\n */\n function () { return !this.selected && (this.date.month !== this.currentMonth || this.disabled); };\n NgbDatepickerDayView.decorators = [\n { type: Component, args: [{\n selector: '[ngbDatepickerDayView]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'btn-light',\n '[class.bg-primary]': 'selected',\n '[class.text-white]': 'selected',\n '[class.text-muted]': 'isMuted()',\n '[class.outside]': 'isMuted()',\n '[class.active]': 'focused'\n },\n template: \"{{ i18n.getDayNumerals(date) }}\",\n styles: [\"[ngbDatepickerDayView]{text-align:center;width:2rem;height:2rem;line-height:2rem;border-radius:.25rem;background:0 0}[ngbDatepickerDayView].outside{opacity:.5}\"]\n }] }\n ];\n /** @nocollapse */\n NgbDatepickerDayView.ctorParameters = function () { return [\n { type: NgbDatepickerI18n }\n ]; };\n NgbDatepickerDayView.propDecorators = {\n currentMonth: [{ type: Input }],\n date: [{ type: Input }],\n disabled: [{ type: Input }],\n focused: [{ type: Input }],\n selected: [{ type: Input }]\n };\n return NgbDatepickerDayView;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbDatepickerNavigationSelect = /** @class */ (function () {\n function NgbDatepickerNavigationSelect(i18n) {\n this.i18n = i18n;\n this.select = new EventEmitter();\n }\n /**\n * @param {?} month\n * @return {?}\n */\n NgbDatepickerNavigationSelect.prototype.changeMonth = /**\n * @param {?} month\n * @return {?}\n */\n function (month) { this.select.emit(new NgbDate(this.date.year, toInteger(month), 1)); };\n /**\n * @param {?} year\n * @return {?}\n */\n NgbDatepickerNavigationSelect.prototype.changeYear = /**\n * @param {?} year\n * @return {?}\n */\n function (year) { this.select.emit(new NgbDate(toInteger(year), this.date.month, 1)); };\n NgbDatepickerNavigationSelect.decorators = [\n { type: Component, args: [{\n selector: 'ngb-datepicker-navigation-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: \"\\n \\n \\n \\n \\n \\n \",\n styles: [\"ngb-datepicker-navigation-select>.custom-select{-ms-flex:1 1 auto;flex:1 1 auto;padding:0 .5rem;font-size:.875rem;height:1.85rem}\"]\n }] }\n ];\n /** @nocollapse */\n NgbDatepickerNavigationSelect.ctorParameters = function () { return [\n { type: NgbDatepickerI18n }\n ]; };\n NgbDatepickerNavigationSelect.propDecorators = {\n date: [{ type: Input }],\n disabled: [{ type: Input }],\n months: [{ type: Input }],\n years: [{ type: Input }],\n select: [{ type: Output }]\n };\n return NgbDatepickerNavigationSelect;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * @abstract\n */\nvar NgbCalendarHijri = /** @class */ (function (_super) {\n __extends(NgbCalendarHijri, _super);\n function NgbCalendarHijri() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return {?}\n */\n NgbCalendarHijri.prototype.getDaysPerWeek = /**\n * @return {?}\n */\n function () { return 7; };\n /**\n * @return {?}\n */\n NgbCalendarHijri.prototype.getMonths = /**\n * @return {?}\n */\n function () { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; };\n /**\n * @return {?}\n */\n NgbCalendarHijri.prototype.getWeeksPerMonth = /**\n * @return {?}\n */\n function () { return 6; };\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n NgbCalendarHijri.prototype.getNext = /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n function (date, period, number) {\n if (period === void 0) { period = 'd'; }\n if (number === void 0) { number = 1; }\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date = this._setYear(date, date.year + number);\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = this._setMonth(date, date.month + number);\n date.day = 1;\n return date;\n case 'd':\n return this._setDay(date, date.day + number);\n default:\n return date;\n }\n };\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n NgbCalendarHijri.prototype.getPrev = /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n function (date, period, number) {\n if (period === void 0) { period = 'd'; }\n if (number === void 0) { number = 1; }\n return this.getNext(date, period, -number);\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbCalendarHijri.prototype.getWeekday = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var day = this.toGregorian(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n };\n /**\n * @param {?} week\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n NgbCalendarHijri.prototype.getWeekNumber = /**\n * @param {?} week\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n function (week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n /** @type {?} */\n var thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n /** @type {?} */\n var date = week[thursdayIndex];\n /** @type {?} */\n var jsDate = this.toGregorian(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n // Thursday\n /** @type {?} */\n var time = jsDate.getTime();\n /** @type {?} */\n var MuhDate = this.toGregorian(new NgbDate(date.year, 1, 1));\n return Math.floor(Math.round((time - MuhDate.getTime()) / 86400000) / 7) + 1;\n };\n /**\n * @return {?}\n */\n NgbCalendarHijri.prototype.getToday = /**\n * @return {?}\n */\n function () { return this.fromGregorian(new Date()); };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbCalendarHijri.prototype.isValid = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n return date && isNumber(date.year) && isNumber(date.month) && isNumber(date.day) &&\n !isNaN(this.toGregorian(date).getTime());\n };\n /**\n * @param {?} date\n * @param {?} day\n * @return {?}\n */\n NgbCalendarHijri.prototype._setDay = /**\n * @param {?} date\n * @param {?} day\n * @return {?}\n */\n function (date, day) {\n day = +day;\n /** @type {?} */\n var mDays = this.getDaysPerMonth(date.month, date.year);\n if (day <= 0) {\n while (day <= 0) {\n date = this._setMonth(date, date.month - 1);\n mDays = this.getDaysPerMonth(date.month, date.year);\n day += mDays;\n }\n }\n else if (day > mDays) {\n while (day > mDays) {\n day -= mDays;\n date = this._setMonth(date, date.month + 1);\n mDays = this.getDaysPerMonth(date.month, date.year);\n }\n }\n date.day = day;\n return date;\n };\n /**\n * @param {?} date\n * @param {?} month\n * @return {?}\n */\n NgbCalendarHijri.prototype._setMonth = /**\n * @param {?} date\n * @param {?} month\n * @return {?}\n */\n function (date, month) {\n month = +month;\n date.year = date.year + Math.floor((month - 1) / 12);\n date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\n return date;\n };\n /**\n * @param {?} date\n * @param {?} year\n * @return {?}\n */\n NgbCalendarHijri.prototype._setYear = /**\n * @param {?} date\n * @param {?} year\n * @return {?}\n */\n function (date, year) {\n date.year = +year;\n return date;\n };\n NgbCalendarHijri.decorators = [\n { type: Injectable }\n ];\n return NgbCalendarHijri;\n}(NgbCalendar));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Checks if islamic year is a leap year\n * @param {?} hYear\n * @return {?}\n */\nfunction isIslamicLeapYear(hYear) {\n return (14 + 11 * hYear) % 30 < 11;\n}\n/**\n * Checks if gregorian years is a leap year\n * @param {?} gDate\n * @return {?}\n */\nfunction isGregorianLeapYear(gDate) {\n /** @type {?} */\n var year = gDate.getFullYear();\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\n/**\n * Returns the start of Hijri Month.\n * `hMonth` is 0 for Muharram, 1 for Safar, etc.\n * `hYear` is any Hijri hYear.\n * @param {?} hYear\n * @param {?} hMonth\n * @return {?}\n */\nfunction getIslamicMonthStart(hYear, hMonth) {\n return Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30.0);\n}\n/**\n * Returns the start of Hijri year.\n * `year` is any Hijri year.\n * @param {?} year\n * @return {?}\n */\nfunction getIslamicYearStart(year) {\n return (year - 1) * 354 + Math.floor((3 + 11 * year) / 30.0);\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction mod(a, b) {\n return a - b * Math.floor(a / b);\n}\n/**\n * The civil calendar is one type of Hijri calendars used in islamic countries.\n * Uses a fixed cycle of alternating 29- and 30-day months,\n * with a leap day added to the last month of 11 out of every 30 years.\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n * All the calculations here are based on the equations from \"Calendrical Calculations\" By Edward M. Reingold, Nachum\n * Dershowitz.\n * @type {?}\n */\nvar GREGORIAN_EPOCH = 1721425.5;\n/** @type {?} */\nvar ISLAMIC_EPOCH = 1948439.5;\nvar NgbCalendarIslamicCivil = /** @class */ (function (_super) {\n __extends(NgbCalendarIslamicCivil, _super);\n function NgbCalendarIslamicCivil() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\n * `gDate` is a JS Date to be converted to Hijri.\n */\n /**\n * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\n * `gDate` is a JS Date to be converted to Hijri.\n * @param {?} gDate\n * @return {?}\n */\n NgbCalendarIslamicCivil.prototype.fromGregorian = /**\n * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\n * `gDate` is a JS Date to be converted to Hijri.\n * @param {?} gDate\n * @return {?}\n */\n function (gDate) {\n /** @type {?} */\n var gYear = gDate.getFullYear();\n /** @type {?} */\n var gMonth = gDate.getMonth();\n /** @type {?} */\n var gDay = gDate.getDate();\n /** @type {?} */\n var julianDay = GREGORIAN_EPOCH - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) +\n -Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) +\n Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear(gDate) ? -1 : -2) + gDay);\n julianDay = Math.floor(julianDay) + 0.5;\n /** @type {?} */\n var days = julianDay - ISLAMIC_EPOCH;\n /** @type {?} */\n var hYear = Math.floor((30 * days + 10646) / 10631.0);\n /** @type {?} */\n var hMonth = Math.ceil((days - 29 - getIslamicYearStart(hYear)) / 29.5);\n hMonth = Math.min(hMonth, 11);\n /** @type {?} */\n var hDay = Math.ceil(days - getIslamicMonthStart(hYear, hMonth)) + 1;\n return new NgbDate(hYear, hMonth + 1, hDay);\n };\n /**\n * Returns the equivalent JS date value for a give input islamic(civil) date.\n * `hDate` is an islamic(civil) date to be converted to Gregorian.\n */\n /**\n * Returns the equivalent JS date value for a give input islamic(civil) date.\n * `hDate` is an islamic(civil) date to be converted to Gregorian.\n * @param {?} hDate\n * @return {?}\n */\n NgbCalendarIslamicCivil.prototype.toGregorian = /**\n * Returns the equivalent JS date value for a give input islamic(civil) date.\n * `hDate` is an islamic(civil) date to be converted to Gregorian.\n * @param {?} hDate\n * @return {?}\n */\n function (hDate) {\n /** @type {?} */\n var hYear = hDate.year;\n /** @type {?} */\n var hMonth = hDate.month - 1;\n /** @type {?} */\n var hDay = hDate.day;\n /** @type {?} */\n var julianDay = hDay + Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30) + ISLAMIC_EPOCH - 1;\n /** @type {?} */\n var wjd = Math.floor(julianDay - 0.5) + 0.5;\n /** @type {?} */\n var depoch = wjd - GREGORIAN_EPOCH;\n /** @type {?} */\n var quadricent = Math.floor(depoch / 146097);\n /** @type {?} */\n var dqc = mod(depoch, 146097);\n /** @type {?} */\n var cent = Math.floor(dqc / 36524);\n /** @type {?} */\n var dcent = mod(dqc, 36524);\n /** @type {?} */\n var quad = Math.floor(dcent / 1461);\n /** @type {?} */\n var dquad = mod(dcent, 1461);\n /** @type {?} */\n var yindex = Math.floor(dquad / 365);\n /** @type {?} */\n var year = quadricent * 400 + cent * 100 + quad * 4 + yindex;\n if (!(cent === 4 || yindex === 4)) {\n year++;\n }\n /** @type {?} */\n var gYearStart = GREGORIAN_EPOCH + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400);\n /** @type {?} */\n var yearday = wjd - gYearStart;\n /** @type {?} */\n var tjd = GREGORIAN_EPOCH - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400) + Math.floor(739 / 12 + (isGregorianLeapYear(new Date(year, 3, 1)) ? -1 : -2) + 1);\n /** @type {?} */\n var leapadj = wjd < tjd ? 0 : isGregorianLeapYear(new Date(year, 3, 1)) ? 1 : 2;\n /** @type {?} */\n var month = Math.floor(((yearday + leapadj) * 12 + 373) / 367);\n /** @type {?} */\n var tjd2 = GREGORIAN_EPOCH - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400) +\n Math.floor((367 * month - 362) / 12 + (month <= 2 ? 0 : isGregorianLeapYear(new Date(year, month - 1, 1)) ? -1 : -2) +\n 1);\n /** @type {?} */\n var day = wjd - tjd2 + 1;\n return new Date(year, month - 1, day);\n };\n /**\n * Returns the number of days in a specific Hijri month.\n * `month` is 1 for Muharram, 2 for Safar, etc.\n * `year` is any Hijri year.\n */\n /**\n * Returns the number of days in a specific Hijri month.\n * `month` is 1 for Muharram, 2 for Safar, etc.\n * `year` is any Hijri year.\n * @param {?} month\n * @param {?} year\n * @return {?}\n */\n NgbCalendarIslamicCivil.prototype.getDaysPerMonth = /**\n * Returns the number of days in a specific Hijri month.\n * `month` is 1 for Muharram, 2 for Safar, etc.\n * `year` is any Hijri year.\n * @param {?} month\n * @param {?} year\n * @return {?}\n */\n function (month, year) {\n year = year + Math.floor(month / 13);\n month = ((month - 1) % 12) + 1;\n /** @type {?} */\n var length = 29 + month % 2;\n if (month === 12 && isIslamicLeapYear(year)) {\n length++;\n }\n return length;\n };\n NgbCalendarIslamicCivil.decorators = [\n { type: Injectable }\n ];\n return NgbCalendarIslamicCivil;\n}(NgbCalendarHijri));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Umalqura calendar is one type of Hijri calendars used in islamic countries.\n * This Calendar is used by Saudi Arabia for administrative purpose.\n * Unlike tabular calendars, the algorithm involves astronomical calculation, but it's still deterministic.\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n * @type {?}\n */\nvar GREGORIAN_FIRST_DATE = new Date(1882, 10, 12);\n/** @type {?} */\nvar GREGORIAN_LAST_DATE = new Date(2174, 10, 25);\n/** @type {?} */\nvar HIJRI_BEGIN = 1300;\n/** @type {?} */\nvar HIJRI_END = 1600;\n/** @type {?} */\nvar ONE_DAY = 1000 * 60 * 60 * 24;\n/** @type {?} */\nvar MONTH_LENGTH = [\n // 1300-1304\n '101010101010', '110101010100', '111011001001', '011011010100', '011011101010',\n // 1305-1309\n '001101101100', '101010101101', '010101010101', '011010101001', '011110010010',\n // 1310-1314\n '101110101001', '010111010100', '101011011010', '010101011100', '110100101101',\n // 1315-1319\n '011010010101', '011101001010', '101101010100', '101101101010', '010110101101',\n // 1320-1324\n '010010101110', '101001001111', '010100010111', '011010001011', '011010100101',\n // 1325-1329\n '101011010101', '001011010110', '100101011011', '010010011101', '101001001101',\n // 1330-1334\n '110100100110', '110110010101', '010110101100', '100110110110', '001010111010',\n // 1335-1339\n '101001011011', '010100101011', '101010010101', '011011001010', '101011101001',\n // 1340-1344\n '001011110100', '100101110110', '001010110110', '100101010110', '101011001010',\n // 1345-1349\n '101110100100', '101111010010', '010111011001', '001011011100', '100101101101',\n // 1350-1354\n '010101001101', '101010100101', '101101010010', '101110100101', '010110110100',\n // 1355-1359\n '100110110110', '010101010111', '001010010111', '010101001011', '011010100011',\n // 1360-1364\n '011101010010', '101101100101', '010101101010', '101010101011', '010100101011',\n // 1365-1369\n '110010010101', '110101001010', '110110100101', '010111001010', '101011010110',\n // 1370-1374\n '100101010111', '010010101011', '100101001011', '101010100101', '101101010010',\n // 1375-1379\n '101101101010', '010101110101', '001001110110', '100010110111', '010001011011',\n // 1380-1384\n '010101010101', '010110101001', '010110110100', '100111011010', '010011011101',\n // 1385-1389\n '001001101110', '100100110110', '101010101010', '110101010100', '110110110010',\n // 1390-1394\n '010111010101', '001011011010', '100101011011', '010010101011', '101001010101',\n // 1395-1399\n '101101001001', '101101100100', '101101110001', '010110110100', '101010110101',\n // 1400-1404\n '101001010101', '110100100101', '111010010010', '111011001001', '011011010100',\n // 1405-1409\n '101011101001', '100101101011', '010010101011', '101010010011', '110101001001',\n // 1410-1414\n '110110100100', '110110110010', '101010111001', '010010111010', '101001011011',\n // 1415-1419\n '010100101011', '101010010101', '101100101010', '101101010101', '010101011100',\n // 1420-1424\n '010010111101', '001000111101', '100100011101', '101010010101', '101101001010',\n // 1425-1429\n '101101011010', '010101101101', '001010110110', '100100111011', '010010011011',\n // 1430-1434\n '011001010101', '011010101001', '011101010100', '101101101010', '010101101100',\n // 1435-1439\n '101010101101', '010101010101', '101100101001', '101110010010', '101110101001',\n // 1440-1444\n '010111010100', '101011011010', '010101011010', '101010101011', '010110010101',\n // 1445-1449\n '011101001001', '011101100100', '101110101010', '010110110101', '001010110110',\n // 1450-1454\n '101001010110', '111001001101', '101100100101', '101101010010', '101101101010',\n // 1455-1459\n '010110101101', '001010101110', '100100101111', '010010010111', '011001001011',\n // 1460-1464\n '011010100101', '011010101100', '101011010110', '010101011101', '010010011101',\n // 1465-1469\n '101001001101', '110100010110', '110110010101', '010110101010', '010110110101',\n // 1470-1474\n '001011011010', '100101011011', '010010101101', '010110010101', '011011001010',\n // 1475-1479\n '011011100100', '101011101010', '010011110101', '001010110110', '100101010110',\n // 1480-1484\n '101010101010', '101101010100', '101111010010', '010111011001', '001011101010',\n // 1485-1489\n '100101101101', '010010101101', '101010010101', '101101001010', '101110100101',\n // 1490-1494\n '010110110010', '100110110101', '010011010110', '101010010111', '010101000111',\n // 1495-1499\n '011010010011', '011101001001', '101101010101', '010101101010', '101001101011',\n // 1500-1504\n '010100101011', '101010001011', '110101000110', '110110100011', '010111001010',\n // 1505-1509\n '101011010110', '010011011011', '001001101011', '100101001011', '101010100101',\n // 1510-1514\n '101101010010', '101101101001', '010101110101', '000101110110', '100010110111',\n // 1515-1519\n '001001011011', '010100101011', '010101100101', '010110110100', '100111011010',\n // 1520-1524\n '010011101101', '000101101101', '100010110110', '101010100110', '110101010010',\n // 1525-1529\n '110110101001', '010111010100', '101011011010', '100101011011', '010010101011',\n // 1530-1534\n '011001010011', '011100101001', '011101100010', '101110101001', '010110110010',\n // 1535-1539\n '101010110101', '010101010101', '101100100101', '110110010010', '111011001001',\n // 1540-1544\n '011011010010', '101011101001', '010101101011', '010010101011', '101001010101',\n // 1545-1549\n '110100101001', '110101010100', '110110101010', '100110110101', '010010111010',\n // 1550-1554\n '101000111011', '010010011011', '101001001101', '101010101010', '101011010101',\n // 1555-1559\n '001011011010', '100101011101', '010001011110', '101000101110', '110010011010',\n // 1560-1564\n '110101010101', '011010110010', '011010111001', '010010111010', '101001011101',\n // 1565-1569\n '010100101101', '101010010101', '101101010010', '101110101000', '101110110100',\n // 1570-1574\n '010110111001', '001011011010', '100101011010', '101101001010', '110110100100',\n // 1575-1579\n '111011010001', '011011101000', '101101101010', '010101101101', '010100110101',\n // 1580-1584\n '011010010101', '110101001010', '110110101000', '110111010100', '011011011010',\n // 1585-1589\n '010101011011', '001010011101', '011000101011', '101100010101', '101101001010',\n // 1590-1594\n '101110010101', '010110101010', '101010101110', '100100101110', '110010001111',\n // 1595-1599\n '010100100111', '011010010101', '011010101010', '101011010110', '010101011101',\n // 1600\n '001010011101'\n];\n/**\n * @param {?} date1\n * @param {?} date2\n * @return {?}\n */\nfunction getDaysDiff(date1, date2) {\n /** @type {?} */\n var diff = Math.abs(date1.getTime() - date2.getTime());\n return Math.round(diff / ONE_DAY);\n}\nvar NgbCalendarIslamicUmalqura = /** @class */ (function (_super) {\n __extends(NgbCalendarIslamicUmalqura, _super);\n function NgbCalendarIslamicUmalqura() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\n * `gdate` is s JS Date to be converted to Hijri.\n */\n /**\n * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\n * `gdate` is s JS Date to be converted to Hijri.\n * @param {?} gDate\n * @return {?}\n */\n NgbCalendarIslamicUmalqura.prototype.fromGregorian = /**\n * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\n * `gdate` is s JS Date to be converted to Hijri.\n * @param {?} gDate\n * @return {?}\n */\n function (gDate) {\n /** @type {?} */\n var hDay = 1;\n /** @type {?} */\n var hMonth = 0;\n /** @type {?} */\n var hYear = 1300;\n /** @type {?} */\n var daysDiff = getDaysDiff(gDate, GREGORIAN_FIRST_DATE);\n if (gDate.getTime() - GREGORIAN_FIRST_DATE.getTime() >= 0 && gDate.getTime() - GREGORIAN_LAST_DATE.getTime() <= 0) {\n /** @type {?} */\n var year = 1300;\n for (var i = 0; i < MONTH_LENGTH.length; i++, year++) {\n for (var j = 0; j < 12; j++) {\n /** @type {?} */\n var numOfDays = +MONTH_LENGTH[i][j] + 29;\n if (daysDiff <= numOfDays) {\n hDay = daysDiff + 1;\n if (hDay > numOfDays) {\n hDay = 1;\n j++;\n }\n if (j > 11) {\n j = 0;\n year++;\n }\n hMonth = j;\n hYear = year;\n return new NgbDate(hYear, hMonth + 1, hDay);\n }\n daysDiff = daysDiff - numOfDays;\n }\n }\n }\n else {\n return _super.prototype.fromGregorian.call(this, gDate);\n }\n };\n /**\n * Converts the current Hijri date to Gregorian.\n */\n /**\n * Converts the current Hijri date to Gregorian.\n * @param {?} hDate\n * @return {?}\n */\n NgbCalendarIslamicUmalqura.prototype.toGregorian = /**\n * Converts the current Hijri date to Gregorian.\n * @param {?} hDate\n * @return {?}\n */\n function (hDate) {\n /** @type {?} */\n var hYear = hDate.year;\n /** @type {?} */\n var hMonth = hDate.month - 1;\n /** @type {?} */\n var hDay = hDate.day;\n /** @type {?} */\n var gDate = new Date(GREGORIAN_FIRST_DATE);\n /** @type {?} */\n var dayDiff = hDay - 1;\n if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n for (var y = 0; y < hYear - HIJRI_BEGIN; y++) {\n for (var m = 0; m < 12; m++) {\n dayDiff += +MONTH_LENGTH[y][m] + 29;\n }\n }\n for (var m = 0; m < hMonth; m++) {\n dayDiff += +MONTH_LENGTH[hYear - HIJRI_BEGIN][m] + 29;\n }\n gDate.setDate(GREGORIAN_FIRST_DATE.getDate() + dayDiff);\n }\n else {\n gDate = _super.prototype.toGregorian.call(this, hDate);\n }\n return gDate;\n };\n /**\n * Returns the number of days in a specific Hijri hMonth.\n * `hMonth` is 1 for Muharram, 2 for Safar, etc.\n * `hYear` is any Hijri hYear.\n */\n /**\n * Returns the number of days in a specific Hijri hMonth.\n * `hMonth` is 1 for Muharram, 2 for Safar, etc.\n * `hYear` is any Hijri hYear.\n * @param {?} hMonth\n * @param {?} hYear\n * @return {?}\n */\n NgbCalendarIslamicUmalqura.prototype.getDaysPerMonth = /**\n * Returns the number of days in a specific Hijri hMonth.\n * `hMonth` is 1 for Muharram, 2 for Safar, etc.\n * `hYear` is any Hijri hYear.\n * @param {?} hMonth\n * @param {?} hYear\n * @return {?}\n */\n function (hMonth, hYear) {\n if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n /** @type {?} */\n var pos = hYear - HIJRI_BEGIN;\n return +MONTH_LENGTH[pos][hMonth - 1] + 29;\n }\n return _super.prototype.getDaysPerMonth.call(this, hMonth, hYear);\n };\n NgbCalendarIslamicUmalqura.decorators = [\n { type: Injectable }\n ];\n return NgbCalendarIslamicUmalqura;\n}(NgbCalendarIslamicCivil));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Returns the equivalent JS date value for a give input Jalali date.\n * `jalaliDate` is an Jalali date to be converted to Gregorian.\n * @param {?} jalaliDate\n * @return {?}\n */\nfunction toGregorian(jalaliDate) {\n /** @type {?} */\n var jdn = jalaliToJulian(jalaliDate.year, jalaliDate.month, jalaliDate.day);\n /** @type {?} */\n var date = julianToGregorian(jdn);\n date.setHours(6, 30, 3, 200);\n return date;\n}\n/**\n * Returns the equivalent jalali date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to jalali.\n * utc to local\n * @param {?} gdate\n * @return {?}\n */\nfunction fromGregorian(gdate) {\n /** @type {?} */\n var g2d = gregorianToJulian(gdate.getFullYear(), gdate.getMonth() + 1, gdate.getDate());\n return julianToJalali(g2d);\n}\n/**\n * @param {?} date\n * @param {?} yearValue\n * @return {?}\n */\nfunction setJalaliYear(date, yearValue) {\n date.year = +yearValue;\n return date;\n}\n/**\n * @param {?} date\n * @param {?} month\n * @return {?}\n */\nfunction setJalaliMonth(date, month) {\n month = +month;\n date.year = date.year + Math.floor((month - 1) / 12);\n date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\n return date;\n}\n/**\n * @param {?} date\n * @param {?} day\n * @return {?}\n */\nfunction setJalaliDay(date, day) {\n /** @type {?} */\n var mDays = getDaysPerMonth(date.month, date.year);\n if (day <= 0) {\n while (day <= 0) {\n date = setJalaliMonth(date, date.month - 1);\n mDays = getDaysPerMonth(date.month, date.year);\n day += mDays;\n }\n }\n else if (day > mDays) {\n while (day > mDays) {\n day -= mDays;\n date = setJalaliMonth(date, date.month + 1);\n mDays = getDaysPerMonth(date.month, date.year);\n }\n }\n date.day = day;\n return date;\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction mod$1(a, b) {\n return a - b * Math.floor(a / b);\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction div(a, b) {\n return Math.trunc(a / b);\n}\n/*\n This function determines if the Jalali (Persian) year is\n leap (366-day long) or is the common year (365 days), and\n finds the day in March (Gregorian calendar) of the first\n day of the Jalali year (jalaliYear).\n @param jalaliYear Jalali calendar year (-61 to 3177)\n @return\n leap: number of years since the last leap year (0 to 4)\n gYear: Gregorian year of the beginning of Jalali year\n march: the March day of Farvardin the 1st (1st day of jalaliYear)\n @see: http://www.astro.uni.torun.pl/~kb/Papers/EMP/PersianC-EMP.htm\n @see: http://www.fourmilab.ch/documents/calendar/\n */\n/**\n * @param {?} jalaliYear\n * @return {?}\n */\nfunction jalCal(jalaliYear) {\n // Jalali years starting the 33-year rule.\n /** @type {?} */\n var breaks = [-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178];\n /** @type {?} */\n var breaksLength = breaks.length;\n /** @type {?} */\n var gYear = jalaliYear + 621;\n /** @type {?} */\n var leapJ = -14;\n /** @type {?} */\n var jp = breaks[0];\n if (jalaliYear < jp || jalaliYear >= breaks[breaksLength - 1]) {\n throw new Error('Invalid Jalali year ' + jalaliYear);\n }\n // Find the limiting years for the Jalali year jalaliYear.\n /** @type {?} */\n var jump;\n for (var i = 1; i < breaksLength; i += 1) {\n /** @type {?} */\n var jm = breaks[i];\n jump = jm - jp;\n if (jalaliYear < jm) {\n break;\n }\n leapJ = leapJ + div(jump, 33) * 8 + div(mod$1(jump, 33), 4);\n jp = jm;\n }\n /** @type {?} */\n var n = jalaliYear - jp;\n // Find the number of leap years from AD 621 to the beginning\n // of the current Jalali year in the Persian calendar.\n leapJ = leapJ + div(n, 33) * 8 + div(mod$1(n, 33) + 3, 4);\n if (mod$1(jump, 33) === 4 && jump - n === 4) {\n leapJ += 1;\n }\n // And the same in the Gregorian calendar (until the year gYear).\n /** @type {?} */\n var leapG = div(gYear, 4) - div((div(gYear, 100) + 1) * 3, 4) - 150;\n // Determine the Gregorian date of Farvardin the 1st.\n /** @type {?} */\n var march = 20 + leapJ - leapG;\n // Find how many years have passed since the last leap year.\n if (jump - n < 6) {\n n = n - jump + div(jump + 4, 33) * 33;\n }\n /** @type {?} */\n var leap = mod$1(mod$1(n + 1, 33) - 1, 4);\n if (leap === -1) {\n leap = 4;\n }\n return { leap: leap, gy: gYear, march: march };\n}\n/*\n Calculates Gregorian and Julian calendar dates from the Julian Day number\n (jdn) for the period since jdn=-34839655 (i.e. the year -100100 of both\n calendars) to some millions years ahead of the present.\n @param jdn Julian Day number\n @return\n gYear: Calendar year (years BC numbered 0, -1, -2, ...)\n gMonth: Calendar month (1 to 12)\n gDay: Calendar day of the month M (1 to 28/29/30/31)\n */\n/**\n * @param {?} julianDayNumber\n * @return {?}\n */\nfunction julianToGregorian(julianDayNumber) {\n /** @type {?} */\n var j = 4 * julianDayNumber + 139361631;\n j = j + div(div(4 * julianDayNumber + 183187720, 146097) * 3, 4) * 4 - 3908;\n /** @type {?} */\n var i = div(mod$1(j, 1461), 4) * 5 + 308;\n /** @type {?} */\n var gDay = div(mod$1(i, 153), 5) + 1;\n /** @type {?} */\n var gMonth = mod$1(div(i, 153), 12) + 1;\n /** @type {?} */\n var gYear = div(j, 1461) - 100100 + div(8 - gMonth, 6);\n return new Date(gYear, gMonth - 1, gDay);\n}\n/*\n Converts a date of the Jalali calendar to the Julian Day number.\n @param jy Jalali year (1 to 3100)\n @param jm Jalali month (1 to 12)\n @param jd Jalali day (1 to 29/31)\n @return Julian Day number\n */\n/**\n * @param {?} gy\n * @param {?} gm\n * @param {?} gd\n * @return {?}\n */\nfunction gregorianToJulian(gy, gm, gd) {\n /** @type {?} */\n var d = div((gy + div(gm - 8, 6) + 100100) * 1461, 4) + div(153 * mod$1(gm + 9, 12) + 2, 5) + gd - 34840408;\n d = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752;\n return d;\n}\n/*\n Converts the Julian Day number to a date in the Jalali calendar.\n @param julianDayNumber Julian Day number\n @return\n jalaliYear: Jalali year (1 to 3100)\n jalaliMonth: Jalali month (1 to 12)\n jalaliDay: Jalali day (1 to 29/31)\n */\n/**\n * @param {?} julianDayNumber\n * @return {?}\n */\nfunction julianToJalali(julianDayNumber) {\n /** @type {?} */\n var gy = julianToGregorian(julianDayNumber).getFullYear() // Calculate Gregorian year (gy).\n ;\n /** @type {?} */\n var jalaliYear = gy - 621;\n /** @type {?} */\n var r = jalCal(jalaliYear);\n /** @type {?} */\n var gregorianDay = gregorianToJulian(gy, 3, r.march);\n /** @type {?} */\n var jalaliDay;\n /** @type {?} */\n var jalaliMonth;\n /** @type {?} */\n var numberOfDays;\n // Find number of days that passed since 1 Farvardin.\n numberOfDays = julianDayNumber - gregorianDay;\n if (numberOfDays >= 0) {\n if (numberOfDays <= 185) {\n // The first 6 months.\n jalaliMonth = 1 + div(numberOfDays, 31);\n jalaliDay = mod$1(numberOfDays, 31) + 1;\n return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n }\n else {\n // The remaining months.\n numberOfDays -= 186;\n }\n }\n else {\n // Previous Jalali year.\n jalaliYear -= 1;\n numberOfDays += 179;\n if (r.leap === 1) {\n numberOfDays += 1;\n }\n }\n jalaliMonth = 7 + div(numberOfDays, 30);\n jalaliDay = mod$1(numberOfDays, 30) + 1;\n return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n}\n/*\n Converts a date of the Jalali calendar to the Julian Day number.\n @param jYear Jalali year (1 to 3100)\n @param jMonth Jalali month (1 to 12)\n @param jDay Jalali day (1 to 29/31)\n @return Julian Day number\n */\n/**\n * @param {?} jYear\n * @param {?} jMonth\n * @param {?} jDay\n * @return {?}\n */\nfunction jalaliToJulian(jYear, jMonth, jDay) {\n /** @type {?} */\n var r = jalCal(jYear);\n return gregorianToJulian(r.gy, 3, r.march) + (jMonth - 1) * 31 - div(jMonth, 7) * (jMonth - 7) + jDay - 1;\n}\n/**\n * Returns the number of days in a specific jalali month.\n * @param {?} month\n * @param {?} year\n * @return {?}\n */\nfunction getDaysPerMonth(month, year) {\n if (month <= 6) {\n return 31;\n }\n if (month <= 11) {\n return 30;\n }\n if (jalCal(year).leap === 0) {\n return 30;\n }\n return 29;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbCalendarPersian = /** @class */ (function (_super) {\n __extends(NgbCalendarPersian, _super);\n function NgbCalendarPersian() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return {?}\n */\n NgbCalendarPersian.prototype.getDaysPerWeek = /**\n * @return {?}\n */\n function () { return 7; };\n /**\n * @return {?}\n */\n NgbCalendarPersian.prototype.getMonths = /**\n * @return {?}\n */\n function () { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; };\n /**\n * @return {?}\n */\n NgbCalendarPersian.prototype.getWeeksPerMonth = /**\n * @return {?}\n */\n function () { return 6; };\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n NgbCalendarPersian.prototype.getNext = /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n function (date, period, number) {\n if (period === void 0) { period = 'd'; }\n if (number === void 0) { number = 1; }\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date = setJalaliYear(date, date.year + number);\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = setJalaliMonth(date, date.month + number);\n date.day = 1;\n return date;\n case 'd':\n return setJalaliDay(date, date.day + number);\n default:\n return date;\n }\n };\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n NgbCalendarPersian.prototype.getPrev = /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n function (date, period, number) {\n if (period === void 0) { period = 'd'; }\n if (number === void 0) { number = 1; }\n return this.getNext(date, period, -number);\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbCalendarPersian.prototype.getWeekday = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var day = toGregorian(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n };\n /**\n * @param {?} week\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n NgbCalendarPersian.prototype.getWeekNumber = /**\n * @param {?} week\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n function (week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n /** @type {?} */\n var thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n /** @type {?} */\n var date = week[thursdayIndex];\n /** @type {?} */\n var jsDate = toGregorian(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n // Thursday\n /** @type {?} */\n var time = jsDate.getTime();\n /** @type {?} */\n var startDate = toGregorian(new NgbDate(date.year, 1, 1));\n return Math.floor(Math.round((time - startDate.getTime()) / 86400000) / 7) + 1;\n };\n /**\n * @return {?}\n */\n NgbCalendarPersian.prototype.getToday = /**\n * @return {?}\n */\n function () { return fromGregorian(new Date()); };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbCalendarPersian.prototype.isValid = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) &&\n !isNaN(toGregorian(date).getTime());\n };\n NgbCalendarPersian.decorators = [\n { type: Injectable }\n ];\n return NgbCalendarPersian;\n}(NgbCalendar));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar PARTS_PER_HOUR = 1080;\n/** @type {?} */\nvar PARTS_PER_DAY = 24 * PARTS_PER_HOUR;\n/** @type {?} */\nvar PARTS_FRACTIONAL_MONTH = 12 * PARTS_PER_HOUR + 793;\n/** @type {?} */\nvar PARTS_PER_MONTH = 29 * PARTS_PER_DAY + PARTS_FRACTIONAL_MONTH;\n/** @type {?} */\nvar BAHARAD = 11 * PARTS_PER_HOUR + 204;\n/** @type {?} */\nvar HEBREW_DAY_ON_JAN_1_1970 = 2092591;\n/** @type {?} */\nvar GREGORIAN_EPOCH$1 = 1721425.5;\n/**\n * @param {?} year\n * @return {?}\n */\nfunction isGregorianLeapYear$1(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\n/**\n * @param {?} year\n * @return {?}\n */\nfunction numberOfFirstDayInYear(year) {\n /** @type {?} */\n var monthsBeforeYear = Math.floor((235 * year - 234) / 19);\n /** @type {?} */\n var fractionalMonthsBeforeYear = monthsBeforeYear * PARTS_FRACTIONAL_MONTH + BAHARAD;\n /** @type {?} */\n var dayNumber = monthsBeforeYear * 29 + Math.floor(fractionalMonthsBeforeYear / PARTS_PER_DAY);\n /** @type {?} */\n var timeOfDay = fractionalMonthsBeforeYear % PARTS_PER_DAY;\n /** @type {?} */\n var dayOfWeek = dayNumber % 7;\n if (dayOfWeek === 2 || dayOfWeek === 4 || dayOfWeek === 6) {\n dayNumber++;\n dayOfWeek = dayNumber % 7;\n }\n if (dayOfWeek === 1 && timeOfDay > 15 * PARTS_PER_HOUR + 204 && !isHebrewLeapYear(year)) {\n dayNumber += 2;\n }\n else if (dayOfWeek === 0 && timeOfDay > 21 * PARTS_PER_HOUR + 589 && isHebrewLeapYear(year - 1)) {\n dayNumber++;\n }\n return dayNumber;\n}\n/**\n * @param {?} month\n * @param {?} year\n * @return {?}\n */\nfunction getDaysInGregorianMonth(month, year) {\n /** @type {?} */\n var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (isGregorianLeapYear$1(year)) {\n days[1]++;\n }\n return days[month - 1];\n}\n/**\n * @param {?} year\n * @return {?}\n */\nfunction getHebrewMonths(year) {\n return isHebrewLeapYear(year) ? 13 : 12;\n}\n/**\n * Returns the number of days in a specific Hebrew year.\n * `year` is any Hebrew year.\n * @param {?} year\n * @return {?}\n */\nfunction getDaysInHebrewYear(year) {\n return numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n}\n/**\n * @param {?} year\n * @return {?}\n */\nfunction isHebrewLeapYear(year) {\n /** @type {?} */\n var b = (year * 12 + 17) % 19;\n return b >= ((b < 0) ? -7 : 12);\n}\n/**\n * Returns the number of days in a specific Hebrew month.\n * `month` is 1 for Nisan, 2 for Iyar etc. Note: Hebrew leap year contains 13 months.\n * `year` is any Hebrew year.\n * @param {?} month\n * @param {?} year\n * @return {?}\n */\nfunction getDaysInHebrewMonth(month, year) {\n /** @type {?} */\n var yearLength = numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n /** @type {?} */\n var yearType = (yearLength <= 380 ? yearLength : (yearLength - 30)) - 353;\n /** @type {?} */\n var leapYear = isHebrewLeapYear(year);\n /** @type {?} */\n var daysInMonth = leapYear ? [30, 29, 29, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29] :\n [30, 29, 29, 29, 30, 29, 30, 29, 30, 29, 30, 29];\n if (yearType > 0) {\n daysInMonth[2]++; // Kislev gets an extra day in normal or complete years.\n }\n if (yearType > 1) {\n daysInMonth[1]++; // Heshvan gets an extra day in complete years only.\n }\n return daysInMonth[month - 1];\n}\n/**\n * @param {?} date\n * @return {?}\n */\nfunction getDayNumberInHebrewYear(date) {\n /** @type {?} */\n var numberOfDay = 0;\n for (var i = 1; i < date.month; i++) {\n numberOfDay += getDaysInHebrewMonth(i, date.year);\n }\n return numberOfDay + date.day;\n}\n/**\n * @param {?} date\n * @param {?} val\n * @return {?}\n */\nfunction setHebrewMonth(date, val) {\n /** @type {?} */\n var after = val >= 0;\n if (!after) {\n val = -val;\n }\n while (val > 0) {\n if (after) {\n if (val > getHebrewMonths(date.year) - date.month) {\n val -= getHebrewMonths(date.year) - date.month + 1;\n date.year++;\n date.month = 1;\n }\n else {\n date.month += val;\n val = 0;\n }\n }\n else {\n if (val >= date.month) {\n date.year--;\n val -= date.month;\n date.month = getHebrewMonths(date.year);\n }\n else {\n date.month -= val;\n val = 0;\n }\n }\n }\n return date;\n}\n/**\n * @param {?} date\n * @param {?} val\n * @return {?}\n */\nfunction setHebrewDay(date, val) {\n /** @type {?} */\n var after = val >= 0;\n if (!after) {\n val = -val;\n }\n while (val > 0) {\n if (after) {\n if (val > getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date)) {\n val -= getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date) + 1;\n date.year++;\n date.month = 1;\n date.day = 1;\n }\n else if (val > getDaysInHebrewMonth(date.month, date.year) - date.day) {\n val -= getDaysInHebrewMonth(date.month, date.year) - date.day + 1;\n date.month++;\n date.day = 1;\n }\n else {\n date.day += val;\n val = 0;\n }\n }\n else {\n if (val >= date.day) {\n val -= date.day;\n date.month--;\n if (date.month === 0) {\n date.year--;\n date.month = getHebrewMonths(date.year);\n }\n date.day = getDaysInHebrewMonth(date.month, date.year);\n }\n else {\n date.day -= val;\n val = 0;\n }\n }\n }\n return date;\n}\n/**\n * Returns the equivalent Hebrew date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to Hebrew date.\n * @param {?} gdate\n * @return {?}\n */\nfunction fromGregorian$1(gdate) {\n /** @type {?} */\n var date = new Date(gdate);\n /** @type {?} */\n var gYear = date.getFullYear();\n /** @type {?} */\n var gMonth = date.getMonth();\n /** @type {?} */\n var gDay = date.getDate();\n /** @type {?} */\n var julianDay = GREGORIAN_EPOCH$1 - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) -\n Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) +\n Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear$1(gYear) ? -1 : -2) + gDay);\n julianDay = Math.floor(julianDay + 0.5);\n /** @type {?} */\n var daysSinceHebEpoch = julianDay - 347997;\n /** @type {?} */\n var monthsSinceHebEpoch = Math.floor(daysSinceHebEpoch * PARTS_PER_DAY / PARTS_PER_MONTH);\n /** @type {?} */\n var hYear = Math.floor((monthsSinceHebEpoch * 19 + 234) / 235) + 1;\n /** @type {?} */\n var firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n /** @type {?} */\n var dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n while (dayOfYear < 1) {\n hYear--;\n firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n }\n /** @type {?} */\n var hMonth = 1;\n /** @type {?} */\n var hDay = dayOfYear;\n while (hDay > getDaysInHebrewMonth(hMonth, hYear)) {\n hDay -= getDaysInHebrewMonth(hMonth, hYear);\n hMonth++;\n }\n return new NgbDate(hYear, hMonth, hDay);\n}\n/**\n * Returns the equivalent JS date value for a given Hebrew date.\n * `hebrewDate` is an Hebrew date to be converted to Gregorian.\n * @param {?} hebrewDate\n * @return {?}\n */\nfunction toGregorian$1(hebrewDate) {\n /** @type {?} */\n var hYear = hebrewDate.year;\n /** @type {?} */\n var hMonth = hebrewDate.month;\n /** @type {?} */\n var hDay = hebrewDate.day;\n /** @type {?} */\n var days = numberOfFirstDayInYear(hYear);\n for (var i = 1; i < hMonth; i++) {\n days += getDaysInHebrewMonth(i, hYear);\n }\n days += hDay;\n /** @type {?} */\n var diffDays = days - HEBREW_DAY_ON_JAN_1_1970;\n /** @type {?} */\n var after = diffDays >= 0;\n if (!after) {\n diffDays = -diffDays;\n }\n /** @type {?} */\n var gYear = 1970;\n /** @type {?} */\n var gMonth = 1;\n /** @type {?} */\n var gDay = 1;\n while (diffDays > 0) {\n if (after) {\n if (diffDays >= (isGregorianLeapYear$1(gYear) ? 366 : 365)) {\n diffDays -= isGregorianLeapYear$1(gYear) ? 366 : 365;\n gYear++;\n }\n else if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n diffDays -= getDaysInGregorianMonth(gMonth, gYear);\n gMonth++;\n }\n else {\n gDay += diffDays;\n diffDays = 0;\n }\n }\n else {\n if (diffDays >= (isGregorianLeapYear$1(gYear - 1) ? 366 : 365)) {\n diffDays -= isGregorianLeapYear$1(gYear - 1) ? 366 : 365;\n gYear--;\n }\n else {\n if (gMonth > 1) {\n gMonth--;\n }\n else {\n gMonth = 12;\n gYear--;\n }\n if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n diffDays -= getDaysInGregorianMonth(gMonth, gYear);\n }\n else {\n gDay = getDaysInGregorianMonth(gMonth, gYear) - diffDays + 1;\n diffDays = 0;\n }\n }\n }\n }\n return new Date(gYear, gMonth - 1, gDay);\n}\n/**\n * @param {?} numerals\n * @return {?}\n */\nfunction hebrewNumerals(numerals) {\n if (!numerals) {\n return '';\n }\n /** @type {?} */\n var hArray0_9 = ['', '\\u05d0', '\\u05d1', '\\u05d2', '\\u05d3', '\\u05d4', '\\u05d5', '\\u05d6', '\\u05d7', '\\u05d8'];\n /** @type {?} */\n var hArray10_19 = [\n '\\u05d9', '\\u05d9\\u05d0', '\\u05d9\\u05d1', '\\u05d9\\u05d2', '\\u05d9\\u05d3', '\\u05d8\\u05d5', '\\u05d8\\u05d6',\n '\\u05d9\\u05d6', '\\u05d9\\u05d7', '\\u05d9\\u05d8'\n ];\n /** @type {?} */\n var hArray20_90 = ['', '', '\\u05db', '\\u05dc', '\\u05de', '\\u05e0', '\\u05e1', '\\u05e2', '\\u05e4', '\\u05e6'];\n /** @type {?} */\n var hArray100_900 = [\n '', '\\u05e7', '\\u05e8', '\\u05e9', '\\u05ea', '\\u05ea\\u05e7', '\\u05ea\\u05e8', '\\u05ea\\u05e9', '\\u05ea\\u05ea',\n '\\u05ea\\u05ea\\u05e7'\n ];\n /** @type {?} */\n var hArray1000_9000 = [\n '', '\\u05d0', '\\u05d1', '\\u05d1\\u05d0', '\\u05d1\\u05d1', '\\u05d4', '\\u05d4\\u05d0', '\\u05d4\\u05d1',\n '\\u05d4\\u05d1\\u05d0', '\\u05d4\\u05d1\\u05d1'\n ];\n /** @type {?} */\n var geresh = '\\u05f3';\n /** @type {?} */\n var gershaim = '\\u05f4';\n /** @type {?} */\n var mem = 0;\n /** @type {?} */\n var result = [];\n /** @type {?} */\n var step = 0;\n while (numerals > 0) {\n /** @type {?} */\n var m = numerals % 10;\n if (step === 0) {\n mem = m;\n }\n else if (step === 1) {\n if (m !== 1) {\n result.unshift(hArray20_90[m], hArray0_9[mem]);\n }\n else {\n result.unshift(hArray10_19[mem]);\n }\n }\n else if (step === 2) {\n result.unshift(hArray100_900[m]);\n }\n else {\n if (m !== 5) {\n result.unshift(hArray1000_9000[m], geresh, ' ');\n }\n break;\n }\n numerals = Math.floor(numerals / 10);\n if (step === 0 && numerals === 0) {\n result.unshift(hArray0_9[m]);\n }\n step++;\n }\n result = result.join('').split('');\n if (result.length === 1) {\n result.push(geresh);\n }\n else if (result.length > 1) {\n result.splice(result.length - 1, 0, gershaim);\n }\n return result.join('');\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * \\@since 3.2.0\n */\nvar NgbCalendarHebrew = /** @class */ (function (_super) {\n __extends(NgbCalendarHebrew, _super);\n function NgbCalendarHebrew() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return {?}\n */\n NgbCalendarHebrew.prototype.getDaysPerWeek = /**\n * @return {?}\n */\n function () { return 7; };\n /**\n * @param {?=} year\n * @return {?}\n */\n NgbCalendarHebrew.prototype.getMonths = /**\n * @param {?=} year\n * @return {?}\n */\n function (year) {\n if (year && isHebrewLeapYear(year)) {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];\n }\n else {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n }\n };\n /**\n * @return {?}\n */\n NgbCalendarHebrew.prototype.getWeeksPerMonth = /**\n * @return {?}\n */\n function () { return 6; };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbCalendarHebrew.prototype.isValid = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var b = date && isNumber(date.year) && isNumber(date.month) && isNumber(date.day);\n b = b && date.month > 0 && date.month <= (isHebrewLeapYear(date.year) ? 13 : 12);\n b = b && date.day > 0 && date.day <= getDaysInHebrewMonth(date.month, date.year);\n return b && !isNaN(toGregorian$1(date).getTime());\n };\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n NgbCalendarHebrew.prototype.getNext = /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n function (date, period, number) {\n if (period === void 0) { period = 'd'; }\n if (number === void 0) { number = 1; }\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date.year += number;\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = setHebrewMonth(date, number);\n date.day = 1;\n return date;\n case 'd':\n return setHebrewDay(date, number);\n default:\n return date;\n }\n };\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n NgbCalendarHebrew.prototype.getPrev = /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n function (date, period, number) {\n if (period === void 0) { period = 'd'; }\n if (number === void 0) { number = 1; }\n return this.getNext(date, period, -number);\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbCalendarHebrew.prototype.getWeekday = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var day = toGregorian$1(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n };\n /**\n * @param {?} week\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n NgbCalendarHebrew.prototype.getWeekNumber = /**\n * @param {?} week\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n function (week, firstDayOfWeek) {\n /** @type {?} */\n var date = week[week.length - 1];\n return Math.ceil(getDayNumberInHebrewYear(date) / 7);\n };\n /**\n * @return {?}\n */\n NgbCalendarHebrew.prototype.getToday = /**\n * @return {?}\n */\n function () { return fromGregorian$1(new Date()); };\n /**\n * @since 3.4.0\n */\n /**\n * \\@since 3.4.0\n * @param {?} date\n * @return {?}\n */\n NgbCalendarHebrew.prototype.toGregorian = /**\n * \\@since 3.4.0\n * @param {?} date\n * @return {?}\n */\n function (date) { return fromJSDate(toGregorian$1(date)); };\n /**\n * @since 3.4.0\n */\n /**\n * \\@since 3.4.0\n * @param {?} date\n * @return {?}\n */\n NgbCalendarHebrew.prototype.fromGregorian = /**\n * \\@since 3.4.0\n * @param {?} date\n * @return {?}\n */\n function (date) { return fromGregorian$1(toJSDate(date)); };\n NgbCalendarHebrew.decorators = [\n { type: Injectable }\n ];\n return NgbCalendarHebrew;\n}(NgbCalendar));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar WEEKDAYS = ['שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת', 'ראשון'];\n/** @type {?} */\nvar MONTHS = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\n/** @type {?} */\nvar MONTHS_LEAP = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר א׳', 'אדר ב׳', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\n/**\n * \\@since 3.2.0\n */\nvar NgbDatepickerI18nHebrew = /** @class */ (function (_super) {\n __extends(NgbDatepickerI18nHebrew, _super);\n function NgbDatepickerI18nHebrew() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} month\n * @param {?=} year\n * @return {?}\n */\n NgbDatepickerI18nHebrew.prototype.getMonthShortName = /**\n * @param {?} month\n * @param {?=} year\n * @return {?}\n */\n function (month, year) { return this.getMonthFullName(month, year); };\n /**\n * @param {?} month\n * @param {?=} year\n * @return {?}\n */\n NgbDatepickerI18nHebrew.prototype.getMonthFullName = /**\n * @param {?} month\n * @param {?=} year\n * @return {?}\n */\n function (month, year) {\n return isHebrewLeapYear(year) ? MONTHS_LEAP[month - 1] : MONTHS[month - 1];\n };\n /**\n * @param {?} weekday\n * @return {?}\n */\n NgbDatepickerI18nHebrew.prototype.getWeekdayShortName = /**\n * @param {?} weekday\n * @return {?}\n */\n function (weekday) { return WEEKDAYS[weekday - 1]; };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbDatepickerI18nHebrew.prototype.getDayAriaLabel = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n return hebrewNumerals(date.day) + \" \" + this.getMonthFullName(date.month, date.year) + \" \" + hebrewNumerals(date.year);\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbDatepickerI18nHebrew.prototype.getDayNumerals = /**\n * @param {?} date\n * @return {?}\n */\n function (date) { return hebrewNumerals(date.day); };\n /**\n * @param {?} weekNumber\n * @return {?}\n */\n NgbDatepickerI18nHebrew.prototype.getWeekNumerals = /**\n * @param {?} weekNumber\n * @return {?}\n */\n function (weekNumber) { return hebrewNumerals(weekNumber); };\n /**\n * @param {?} year\n * @return {?}\n */\n NgbDatepickerI18nHebrew.prototype.getYearNumerals = /**\n * @param {?} year\n * @return {?}\n */\n function (year) { return hebrewNumerals(year); };\n NgbDatepickerI18nHebrew.decorators = [\n { type: Injectable }\n ];\n return NgbDatepickerI18nHebrew;\n}(NgbDatepickerI18n));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * [`NgbDateAdapter`](#/components/datepicker/api#NgbDateAdapter) implementation that uses\n * native javascript dates as a user date model.\n */\nvar NgbDateNativeAdapter = /** @class */ (function (_super) {\n __extends(NgbDateNativeAdapter, _super);\n function NgbDateNativeAdapter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Converts a native `Date` to a `NgbDateStruct`.\n */\n /**\n * Converts a native `Date` to a `NgbDateStruct`.\n * @param {?} date\n * @return {?}\n */\n NgbDateNativeAdapter.prototype.fromModel = /**\n * Converts a native `Date` to a `NgbDateStruct`.\n * @param {?} date\n * @return {?}\n */\n function (date) {\n return (date instanceof Date && !isNaN(date.getTime())) ? this._fromNativeDate(date) : null;\n };\n /**\n * Converts a `NgbDateStruct` to a native `Date`.\n */\n /**\n * Converts a `NgbDateStruct` to a native `Date`.\n * @param {?} date\n * @return {?}\n */\n NgbDateNativeAdapter.prototype.toModel = /**\n * Converts a `NgbDateStruct` to a native `Date`.\n * @param {?} date\n * @return {?}\n */\n function (date) {\n return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) ? this._toNativeDate(date) :\n null;\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbDateNativeAdapter.prototype._fromNativeDate = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n return { year: date.getFullYear(), month: date.getMonth() + 1, day: date.getDate() };\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbDateNativeAdapter.prototype._toNativeDate = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var jsDate = new Date(date.year, date.month - 1, date.day, 12);\n // avoid 30 -> 1930 conversion\n jsDate.setFullYear(date.year);\n return jsDate;\n };\n NgbDateNativeAdapter.decorators = [\n { type: Injectable }\n ];\n return NgbDateNativeAdapter;\n}(NgbDateAdapter));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Same as [`NgbDateNativeAdapter`](#/components/datepicker/api#NgbDateNativeAdapter), but with UTC dates.\n *\n * \\@since 3.2.0\n */\nvar NgbDateNativeUTCAdapter = /** @class */ (function (_super) {\n __extends(NgbDateNativeUTCAdapter, _super);\n function NgbDateNativeUTCAdapter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} date\n * @return {?}\n */\n NgbDateNativeUTCAdapter.prototype._fromNativeDate = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n return { year: date.getUTCFullYear(), month: date.getUTCMonth() + 1, day: date.getUTCDate() };\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbDateNativeUTCAdapter.prototype._toNativeDate = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var jsDate = new Date(Date.UTC(date.year, date.month - 1, date.day));\n // avoid 30 -> 1930 conversion\n jsDate.setUTCFullYear(date.year);\n return jsDate;\n };\n NgbDateNativeUTCAdapter.decorators = [\n { type: Injectable }\n ];\n return NgbDateNativeUTCAdapter;\n}(NgbDateNativeAdapter));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbDatepickerModule = /** @class */ (function () {\n function NgbDatepickerModule() {\n }\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n */\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n NgbDatepickerModule.forRoot = /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n function () { return { ngModule: NgbDatepickerModule }; };\n NgbDatepickerModule.decorators = [\n { type: NgModule, args: [{\n declarations: [\n NgbDatepicker, NgbDatepickerMonthView, NgbDatepickerNavigation, NgbDatepickerNavigationSelect, NgbDatepickerDayView,\n NgbInputDatepicker\n ],\n exports: [NgbDatepicker, NgbInputDatepicker],\n imports: [CommonModule, FormsModule],\n entryComponents: [NgbDatepicker]\n },] }\n ];\n return NgbDatepickerModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbDropdown`](#/components/dropdown/api#NgbDropdown) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the dropdowns used in the application.\n */\nvar NgbDropdownConfig = /** @class */ (function () {\n function NgbDropdownConfig() {\n this.autoClose = true;\n this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n }\n NgbDropdownConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbDropdownConfig.ngInjectableDef = defineInjectable({ factory: function NgbDropdownConfig_Factory() { return new NgbDropdownConfig(); }, token: NgbDropdownConfig, providedIn: \"root\" });\n return NgbDropdownConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbNavbar = /** @class */ (function () {\n function NgbNavbar() {\n }\n NgbNavbar.decorators = [\n { type: Directive, args: [{ selector: '.navbar' },] }\n ];\n return NgbNavbar;\n}());\n/**\n * A directive you should put put on a dropdown item to enable keyboard navigation.\n * Arrow keys will move focus between items marked with this directive.\n *\n * \\@since 4.1.0\n */\nvar NgbDropdownItem = /** @class */ (function () {\n function NgbDropdownItem(elementRef) {\n this.elementRef = elementRef;\n this._disabled = false;\n }\n Object.defineProperty(NgbDropdownItem.prototype, \"disabled\", {\n get: /**\n * @return {?}\n */\n function () { return this._disabled; },\n set: /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._disabled = (/** @type {?} */ (value)) === '' || value === true; // accept an empty attribute as true\n },\n enumerable: true,\n configurable: true\n });\n NgbDropdownItem.decorators = [\n { type: Directive, args: [{ selector: '[ngbDropdownItem]', host: { 'class': 'dropdown-item', '[class.disabled]': 'disabled' } },] }\n ];\n /** @nocollapse */\n NgbDropdownItem.ctorParameters = function () { return [\n { type: ElementRef }\n ]; };\n NgbDropdownItem.propDecorators = {\n disabled: [{ type: Input }]\n };\n return NgbDropdownItem;\n}());\n/**\n * A directive that wraps dropdown menu content and dropdown items.\n */\nvar NgbDropdownMenu = /** @class */ (function () {\n function NgbDropdownMenu(dropdown) {\n this.dropdown = dropdown;\n this.placement = 'bottom';\n this.isOpen = false;\n }\n NgbDropdownMenu.decorators = [\n { type: Directive, args: [{\n selector: '[ngbDropdownMenu]',\n host: {\n '[class.dropdown-menu]': 'true',\n '[class.show]': 'dropdown.isOpen()',\n '[attr.x-placement]': 'placement',\n '(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n '(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n '(keydown.Home)': 'dropdown.onKeyDown($event)',\n '(keydown.End)': 'dropdown.onKeyDown($event)',\n '(keydown.Enter)': 'dropdown.onKeyDown($event)',\n '(keydown.Space)': 'dropdown.onKeyDown($event)'\n }\n },] }\n ];\n /** @nocollapse */\n NgbDropdownMenu.ctorParameters = function () { return [\n { type: NgbDropdown, decorators: [{ type: Inject, args: [forwardRef(function () { return NgbDropdown; }),] }] }\n ]; };\n NgbDropdownMenu.propDecorators = {\n menuItems: [{ type: ContentChildren, args: [NgbDropdownItem,] }]\n };\n return NgbDropdownMenu;\n}());\n/**\n * A directive to mark an element to which dropdown menu will be anchored.\n *\n * This is a simple version of the `NgbDropdownToggle` directive.\n * It plays the same role, but doesn't listen to click events to toggle dropdown menu thus enabling support\n * for events other than click.\n *\n * \\@since 1.1.0\n */\nvar NgbDropdownAnchor = /** @class */ (function () {\n function NgbDropdownAnchor(dropdown, _elementRef) {\n this.dropdown = dropdown;\n this._elementRef = _elementRef;\n this.anchorEl = _elementRef.nativeElement;\n }\n /**\n * @return {?}\n */\n NgbDropdownAnchor.prototype.getNativeElement = /**\n * @return {?}\n */\n function () { return this._elementRef.nativeElement; };\n NgbDropdownAnchor.decorators = [\n { type: Directive, args: [{\n selector: '[ngbDropdownAnchor]',\n host: { 'class': 'dropdown-toggle', 'aria-haspopup': 'true', '[attr.aria-expanded]': 'dropdown.isOpen()' }\n },] }\n ];\n /** @nocollapse */\n NgbDropdownAnchor.ctorParameters = function () { return [\n { type: NgbDropdown, decorators: [{ type: Inject, args: [forwardRef(function () { return NgbDropdown; }),] }] },\n { type: ElementRef }\n ]; };\n return NgbDropdownAnchor;\n}());\n/**\n * A directive to mark an element that will toggle dropdown via the `click` event.\n *\n * You can also use `NgbDropdownAnchor` as an alternative.\n */\nvar NgbDropdownToggle = /** @class */ (function (_super) {\n __extends(NgbDropdownToggle, _super);\n function NgbDropdownToggle(dropdown, elementRef) {\n return _super.call(this, dropdown, elementRef) || this;\n }\n NgbDropdownToggle.decorators = [\n { type: Directive, args: [{\n selector: '[ngbDropdownToggle]',\n host: {\n 'class': 'dropdown-toggle',\n 'aria-haspopup': 'true',\n '[attr.aria-expanded]': 'dropdown.isOpen()',\n '(click)': 'dropdown.toggle()',\n '(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n '(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n '(keydown.Home)': 'dropdown.onKeyDown($event)',\n '(keydown.End)': 'dropdown.onKeyDown($event)'\n },\n providers: [{ provide: NgbDropdownAnchor, useExisting: forwardRef(function () { return NgbDropdownToggle; }) }]\n },] }\n ];\n /** @nocollapse */\n NgbDropdownToggle.ctorParameters = function () { return [\n { type: NgbDropdown, decorators: [{ type: Inject, args: [forwardRef(function () { return NgbDropdown; }),] }] },\n { type: ElementRef }\n ]; };\n return NgbDropdownToggle;\n}(NgbDropdownAnchor));\n/**\n * A directive that provides contextual overlays for displaying lists of links and more.\n */\nvar NgbDropdown = /** @class */ (function () {\n function NgbDropdown(_changeDetector, config, _document, _ngZone, _elementRef, _renderer, ngbNavbar) {\n var _this = this;\n this._changeDetector = _changeDetector;\n this._document = _document;\n this._ngZone = _ngZone;\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._closed$ = new Subject();\n /**\n * Defines whether or not the dropdown menu is opened initially.\n */\n this._open = false;\n /**\n * An event fired when the dropdown is opened or closed.\n *\n * The event payload is a `boolean`:\n * * `true` - the dropdown was opened\n * * `false` - the dropdown was closed\n */\n this.openChange = new EventEmitter();\n this.placement = config.placement;\n this.container = config.container;\n this.autoClose = config.autoClose;\n this.display = ngbNavbar ? 'static' : 'dynamic';\n this._zoneSubscription = _ngZone.onStable.subscribe(function () { _this._positionMenu(); });\n }\n /**\n * @return {?}\n */\n NgbDropdown.prototype.ngOnInit = /**\n * @return {?}\n */\n function () {\n this._applyPlacementClasses();\n if (this._open) {\n this._setCloseHandlers();\n }\n };\n /**\n * @param {?} changes\n * @return {?}\n */\n NgbDropdown.prototype.ngOnChanges = /**\n * @param {?} changes\n * @return {?}\n */\n function (changes) {\n if (changes.container && this._open) {\n this._applyContainer(this.container);\n }\n if (changes.placement && !changes.placement.isFirstChange) {\n this._applyPlacementClasses();\n }\n };\n /**\n * Checks if the dropdown menu is open.\n */\n /**\n * Checks if the dropdown menu is open.\n * @return {?}\n */\n NgbDropdown.prototype.isOpen = /**\n * Checks if the dropdown menu is open.\n * @return {?}\n */\n function () { return this._open; };\n /**\n * Opens the dropdown menu.\n */\n /**\n * Opens the dropdown menu.\n * @return {?}\n */\n NgbDropdown.prototype.open = /**\n * Opens the dropdown menu.\n * @return {?}\n */\n function () {\n if (!this._open) {\n this._open = true;\n this._applyContainer(this.container);\n this.openChange.emit(true);\n this._setCloseHandlers();\n }\n };\n /**\n * @return {?}\n */\n NgbDropdown.prototype._setCloseHandlers = /**\n * @return {?}\n */\n function () {\n var _this = this;\n ngbAutoClose(this._ngZone, this._document, this.autoClose, function () { return _this.close(); }, this._closed$, this._menu ? [this._menuElement.nativeElement] : [], this._anchor ? [this._anchor.getNativeElement()] : [], '.dropdown-item,.dropdown-divider');\n };\n /**\n * Closes the dropdown menu.\n */\n /**\n * Closes the dropdown menu.\n * @return {?}\n */\n NgbDropdown.prototype.close = /**\n * Closes the dropdown menu.\n * @return {?}\n */\n function () {\n if (this._open) {\n this._open = false;\n this._resetContainer();\n this._closed$.next();\n this.openChange.emit(false);\n this._changeDetector.markForCheck();\n }\n };\n /**\n * Toggles the dropdown menu.\n */\n /**\n * Toggles the dropdown menu.\n * @return {?}\n */\n NgbDropdown.prototype.toggle = /**\n * Toggles the dropdown menu.\n * @return {?}\n */\n function () {\n if (this.isOpen()) {\n this.close();\n }\n else {\n this.open();\n }\n };\n /**\n * @return {?}\n */\n NgbDropdown.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n this._resetContainer();\n this._closed$.next();\n this._zoneSubscription.unsubscribe();\n };\n /**\n * @param {?} event\n * @return {?}\n */\n NgbDropdown.prototype.onKeyDown = /**\n * @param {?} event\n * @return {?}\n */\n function (event) {\n var _this = this;\n // tslint:disable-next-line:deprecation\n /** @type {?} */\n var key = event.which;\n /** @type {?} */\n var itemElements = this._getMenuElements();\n /** @type {?} */\n var position = -1;\n /** @type {?} */\n var isEventFromItems = false;\n /** @type {?} */\n var isEventFromToggle = this._isEventFromToggle(event);\n if (!isEventFromToggle && itemElements.length) {\n itemElements.forEach(function (itemElement, index) {\n if (itemElement.contains((/** @type {?} */ (event.target)))) {\n isEventFromItems = true;\n }\n if (itemElement === _this._document.activeElement) {\n position = index;\n }\n });\n }\n // closing on Enter / Space\n if (key === Key.Space || key === Key.Enter) {\n if (isEventFromItems && (this.autoClose === true || this.autoClose === 'inside')) {\n this.close();\n }\n return;\n }\n // opening / navigating\n if (isEventFromToggle || isEventFromItems) {\n this.open();\n if (itemElements.length) {\n switch (key) {\n case Key.ArrowDown:\n position = Math.min(position + 1, itemElements.length - 1);\n break;\n case Key.ArrowUp:\n if (this._isDropup() && position === -1) {\n position = itemElements.length - 1;\n break;\n }\n position = Math.max(position - 1, 0);\n break;\n case Key.Home:\n position = 0;\n break;\n case Key.End:\n position = itemElements.length - 1;\n break;\n }\n itemElements[position].focus();\n }\n event.preventDefault();\n }\n };\n /**\n * @return {?}\n */\n NgbDropdown.prototype._isDropup = /**\n * @return {?}\n */\n function () { return this._elementRef.nativeElement.classList.contains('dropup'); };\n /**\n * @param {?} event\n * @return {?}\n */\n NgbDropdown.prototype._isEventFromToggle = /**\n * @param {?} event\n * @return {?}\n */\n function (event) {\n return this._anchor.getNativeElement().contains((/** @type {?} */ (event.target)));\n };\n /**\n * @return {?}\n */\n NgbDropdown.prototype._getMenuElements = /**\n * @return {?}\n */\n function () {\n if (this._menu == null) {\n return [];\n }\n return this._menu.menuItems.filter(function (item) { return !item.disabled; }).map(function (item) { return item.elementRef.nativeElement; });\n };\n /**\n * @return {?}\n */\n NgbDropdown.prototype._positionMenu = /**\n * @return {?}\n */\n function () {\n if (this.isOpen() && this._menu) {\n this._applyPlacementClasses(this.display === 'dynamic' ?\n positionElements(this._anchor.anchorEl, this._bodyContainer || this._menuElement.nativeElement, this.placement, this.container === 'body') :\n this._getFirstPlacement(this.placement));\n }\n };\n /**\n * @param {?} placement\n * @return {?}\n */\n NgbDropdown.prototype._getFirstPlacement = /**\n * @param {?} placement\n * @return {?}\n */\n function (placement) {\n return Array.isArray(placement) ? placement[0] : (/** @type {?} */ (placement.split(' ')[0]));\n };\n /**\n * @return {?}\n */\n NgbDropdown.prototype._resetContainer = /**\n * @return {?}\n */\n function () {\n /** @type {?} */\n var renderer = this._renderer;\n if (this._menuElement) {\n /** @type {?} */\n var dropdownElement = this._elementRef.nativeElement;\n /** @type {?} */\n var dropdownMenuElement = this._menuElement.nativeElement;\n renderer.appendChild(dropdownElement, dropdownMenuElement);\n renderer.removeStyle(dropdownMenuElement, 'position');\n renderer.removeStyle(dropdownMenuElement, 'transform');\n }\n if (this._bodyContainer) {\n renderer.removeChild(this._document.body, this._bodyContainer);\n this._bodyContainer = null;\n }\n };\n /**\n * @param {?=} container\n * @return {?}\n */\n NgbDropdown.prototype._applyContainer = /**\n * @param {?=} container\n * @return {?}\n */\n function (container) {\n if (container === void 0) { container = null; }\n this._resetContainer();\n if (container === 'body') {\n /** @type {?} */\n var renderer = this._renderer;\n /** @type {?} */\n var dropdownMenuElement = this._menuElement.nativeElement;\n /** @type {?} */\n var bodyContainer = this._bodyContainer = this._bodyContainer || renderer.createElement('div');\n // Override some styles to have the positionning working\n renderer.setStyle(bodyContainer, 'position', 'absolute');\n renderer.setStyle(dropdownMenuElement, 'position', 'static');\n renderer.setStyle(bodyContainer, 'z-index', '1050');\n renderer.appendChild(bodyContainer, dropdownMenuElement);\n renderer.appendChild(this._document.body, bodyContainer);\n }\n };\n /**\n * @param {?=} placement\n * @return {?}\n */\n NgbDropdown.prototype._applyPlacementClasses = /**\n * @param {?=} placement\n * @return {?}\n */\n function (placement) {\n if (this._menu) {\n if (!placement) {\n placement = this._getFirstPlacement(this.placement);\n }\n /** @type {?} */\n var renderer = this._renderer;\n /** @type {?} */\n var dropdownElement = this._elementRef.nativeElement;\n // remove the current placement classes\n renderer.removeClass(dropdownElement, 'dropup');\n renderer.removeClass(dropdownElement, 'dropdown');\n this._menu.placement = placement;\n /*\n * apply the new placement\n * in case of top use up-arrow or down-arrow otherwise\n */\n /** @type {?} */\n var dropdownClass = placement.search('^top') !== -1 ? 'dropup' : 'dropdown';\n renderer.addClass(dropdownElement, dropdownClass);\n /** @type {?} */\n var bodyContainer = this._bodyContainer;\n if (bodyContainer) {\n renderer.removeClass(bodyContainer, 'dropup');\n renderer.removeClass(bodyContainer, 'dropdown');\n renderer.addClass(bodyContainer, dropdownClass);\n }\n }\n };\n NgbDropdown.decorators = [\n { type: Directive, args: [{ selector: '[ngbDropdown]', exportAs: 'ngbDropdown', host: { '[class.show]': 'isOpen()' } },] }\n ];\n /** @nocollapse */\n NgbDropdown.ctorParameters = function () { return [\n { type: ChangeDetectorRef },\n { type: NgbDropdownConfig },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: NgZone },\n { type: ElementRef },\n { type: Renderer2 },\n { type: NgbNavbar, decorators: [{ type: Optional }] }\n ]; };\n NgbDropdown.propDecorators = {\n _menu: [{ type: ContentChild, args: [NgbDropdownMenu,] }],\n _menuElement: [{ type: ContentChild, args: [NgbDropdownMenu, { read: ElementRef },] }],\n _anchor: [{ type: ContentChild, args: [NgbDropdownAnchor,] }],\n autoClose: [{ type: Input }],\n _open: [{ type: Input, args: ['open',] }],\n placement: [{ type: Input }],\n container: [{ type: Input }],\n display: [{ type: Input }],\n openChange: [{ type: Output }]\n };\n return NgbDropdown;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_DROPDOWN_DIRECTIVES = [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar];\nvar NgbDropdownModule = /** @class */ (function () {\n function NgbDropdownModule() {\n }\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n */\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n NgbDropdownModule.forRoot = /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n function () { return { ngModule: NgbDropdownModule }; };\n NgbDropdownModule.decorators = [\n { type: NgModule, args: [{ declarations: NGB_DROPDOWN_DIRECTIVES, exports: NGB_DROPDOWN_DIRECTIVES },] }\n ];\n return NgbDropdownModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbModal`](#/components/modal/api#NgbModal) service.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all modals used in the application.\n *\n * \\@since 3.1.0\n */\nvar NgbModalConfig = /** @class */ (function () {\n function NgbModalConfig() {\n this.backdrop = true;\n this.keyboard = true;\n }\n NgbModalConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbModalConfig.ngInjectableDef = defineInjectable({ factory: function NgbModalConfig_Factory() { return new NgbModalConfig(); }, token: NgbModalConfig, providedIn: \"root\" });\n return NgbModalConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar ContentRef = /** @class */ (function () {\n function ContentRef(nodes, viewRef, componentRef) {\n this.nodes = nodes;\n this.viewRef = viewRef;\n this.componentRef = componentRef;\n }\n return ContentRef;\n}());\n/**\n * @template T\n */\nvar /**\n * @template T\n */\nPopupService = /** @class */ (function () {\n function PopupService(_type, _injector, _viewContainerRef, _renderer, _componentFactoryResolver, _applicationRef) {\n this._type = _type;\n this._injector = _injector;\n this._viewContainerRef = _viewContainerRef;\n this._renderer = _renderer;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._applicationRef = _applicationRef;\n }\n /**\n * @param {?=} content\n * @param {?=} context\n * @return {?}\n */\n PopupService.prototype.open = /**\n * @param {?=} content\n * @param {?=} context\n * @return {?}\n */\n function (content, context) {\n if (!this._windowRef) {\n this._contentRef = this._getContentRef(content, context);\n this._windowRef = this._viewContainerRef.createComponent(this._componentFactoryResolver.resolveComponentFactory(this._type), 0, this._injector, this._contentRef.nodes);\n }\n return this._windowRef;\n };\n /**\n * @return {?}\n */\n PopupService.prototype.close = /**\n * @return {?}\n */\n function () {\n if (this._windowRef) {\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._windowRef.hostView));\n this._windowRef = null;\n if (this._contentRef.viewRef) {\n this._applicationRef.detachView(this._contentRef.viewRef);\n this._contentRef.viewRef.destroy();\n this._contentRef = null;\n }\n }\n };\n /**\n * @param {?} content\n * @param {?=} context\n * @return {?}\n */\n PopupService.prototype._getContentRef = /**\n * @param {?} content\n * @param {?=} context\n * @return {?}\n */\n function (content, context) {\n if (!content) {\n return new ContentRef([]);\n }\n else if (content instanceof TemplateRef) {\n /** @type {?} */\n var viewRef = content.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n else {\n return new ContentRef([[this._renderer.createText(\"\" + content)]]);\n }\n };\n return PopupService;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar noop = function () { };\n/**\n * Utility to handle the scrollbar.\n *\n * It allows to compensate the lack of a vertical scrollbar by adding an\n * equivalent padding on the right of the body, and to remove this compensation.\n */\nvar ScrollBar = /** @class */ (function () {\n function ScrollBar(_document) {\n this._document = _document;\n }\n /**\n * Detects if a scrollbar is present and if yes, already compensates for its\n * removal by adding an equivalent padding on the right of the body.\n *\n * @return a callback used to revert the compensation (noop if there was none,\n * otherwise a function removing the padding)\n */\n /**\n * Detects if a scrollbar is present and if yes, already compensates for its\n * removal by adding an equivalent padding on the right of the body.\n *\n * @return {?} a callback used to revert the compensation (noop if there was none,\n * otherwise a function removing the padding)\n */\n ScrollBar.prototype.compensate = /**\n * Detects if a scrollbar is present and if yes, already compensates for its\n * removal by adding an equivalent padding on the right of the body.\n *\n * @return {?} a callback used to revert the compensation (noop if there was none,\n * otherwise a function removing the padding)\n */\n function () { return !this._isPresent() ? noop : this._adjustBody(this._getWidth()); };\n /**\n * Adds a padding of the given width on the right of the body.\n *\n * @return a callback used to revert the padding to its previous value\n */\n /**\n * Adds a padding of the given width on the right of the body.\n *\n * @param {?} width\n * @return {?} a callback used to revert the padding to its previous value\n */\n ScrollBar.prototype._adjustBody = /**\n * Adds a padding of the given width on the right of the body.\n *\n * @param {?} width\n * @return {?} a callback used to revert the padding to its previous value\n */\n function (width) {\n /** @type {?} */\n var body = this._document.body;\n /** @type {?} */\n var userSetPadding = body.style.paddingRight;\n /** @type {?} */\n var paddingAmount = parseFloat(window.getComputedStyle(body)['padding-right']);\n body.style['padding-right'] = paddingAmount + width + \"px\";\n return function () { return body.style['padding-right'] = userSetPadding; };\n };\n /**\n * Tells whether a scrollbar is currently present on the body.\n *\n * @return true if scrollbar is present, false otherwise\n */\n /**\n * Tells whether a scrollbar is currently present on the body.\n *\n * @return {?} true if scrollbar is present, false otherwise\n */\n ScrollBar.prototype._isPresent = /**\n * Tells whether a scrollbar is currently present on the body.\n *\n * @return {?} true if scrollbar is present, false otherwise\n */\n function () {\n /** @type {?} */\n var rect = this._document.body.getBoundingClientRect();\n return rect.left + rect.right < window.innerWidth;\n };\n /**\n * Calculates and returns the width of a scrollbar.\n *\n * @return the width of a scrollbar on this page\n */\n /**\n * Calculates and returns the width of a scrollbar.\n *\n * @return {?} the width of a scrollbar on this page\n */\n ScrollBar.prototype._getWidth = /**\n * Calculates and returns the width of a scrollbar.\n *\n * @return {?} the width of a scrollbar on this page\n */\n function () {\n /** @type {?} */\n var measurer = this._document.createElement('div');\n measurer.className = 'modal-scrollbar-measure';\n /** @type {?} */\n var body = this._document.body;\n body.appendChild(measurer);\n /** @type {?} */\n var width = measurer.getBoundingClientRect().width - measurer.clientWidth;\n body.removeChild(measurer);\n return width;\n };\n ScrollBar.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */\n ScrollBar.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n ]; };\n /** @nocollapse */ ScrollBar.ngInjectableDef = defineInjectable({ factory: function ScrollBar_Factory() { return new ScrollBar(inject(DOCUMENT)); }, token: ScrollBar, providedIn: \"root\" });\n return ScrollBar;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbModalBackdrop = /** @class */ (function () {\n function NgbModalBackdrop() {\n }\n NgbModalBackdrop.decorators = [\n { type: Component, args: [{\n selector: 'ngb-modal-backdrop',\n template: '',\n host: { '[class]': '\"modal-backdrop fade show\" + (backdropClass ? \" \" + backdropClass : \"\")', 'style': 'z-index: 1050' }\n }] }\n ];\n NgbModalBackdrop.propDecorators = {\n backdropClass: [{ type: Input }]\n };\n return NgbModalBackdrop;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A reference to the currently opened (active) modal.\n *\n * Instances of this class can be injected into your component passed as modal content.\n * So you can `.close()` or `.dismiss()` the modal window from your component.\n */\nvar /**\n * A reference to the currently opened (active) modal.\n *\n * Instances of this class can be injected into your component passed as modal content.\n * So you can `.close()` or `.dismiss()` the modal window from your component.\n */\nNgbActiveModal = /** @class */ (function () {\n function NgbActiveModal() {\n }\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n * @param {?=} result\n * @return {?}\n */\n NgbActiveModal.prototype.close = /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n * @param {?=} result\n * @return {?}\n */\n function (result) { };\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n * @param {?=} reason\n * @return {?}\n */\n NgbActiveModal.prototype.dismiss = /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n * @param {?=} reason\n * @return {?}\n */\n function (reason) { };\n return NgbActiveModal;\n}());\n/**\n * A reference to the newly opened modal returned by the `NgbModal.open()` method.\n */\nvar /**\n * A reference to the newly opened modal returned by the `NgbModal.open()` method.\n */\nNgbModalRef = /** @class */ (function () {\n function NgbModalRef(_windowCmptRef, _contentRef, _backdropCmptRef, _beforeDismiss) {\n var _this = this;\n this._windowCmptRef = _windowCmptRef;\n this._contentRef = _contentRef;\n this._backdropCmptRef = _backdropCmptRef;\n this._beforeDismiss = _beforeDismiss;\n _windowCmptRef.instance.dismissEvent.subscribe(function (reason) { _this.dismiss(reason); });\n this.result = new Promise(function (resolve, reject) {\n _this._resolve = resolve;\n _this._reject = reject;\n });\n this.result.then(null, function () { });\n }\n Object.defineProperty(NgbModalRef.prototype, \"componentInstance\", {\n /**\n * The instance of a component used for the modal content.\n *\n * When a `TemplateRef` is used as the content, will return `undefined`.\n */\n get: /**\n * The instance of a component used for the modal content.\n *\n * When a `TemplateRef` is used as the content, will return `undefined`.\n * @return {?}\n */\n function () {\n if (this._contentRef.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n * @param {?=} result\n * @return {?}\n */\n NgbModalRef.prototype.close = /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n * @param {?=} result\n * @return {?}\n */\n function (result) {\n if (this._windowCmptRef) {\n this._resolve(result);\n this._removeModalElements();\n }\n };\n /**\n * @param {?=} reason\n * @return {?}\n */\n NgbModalRef.prototype._dismiss = /**\n * @param {?=} reason\n * @return {?}\n */\n function (reason) {\n this._reject(reason);\n this._removeModalElements();\n };\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n * @param {?=} reason\n * @return {?}\n */\n NgbModalRef.prototype.dismiss = /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n * @param {?=} reason\n * @return {?}\n */\n function (reason) {\n var _this = this;\n if (this._windowCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n }\n else {\n /** @type {?} */\n var dismiss = this._beforeDismiss();\n if (dismiss && dismiss.then) {\n dismiss.then(function (result) {\n if (result !== false) {\n _this._dismiss(reason);\n }\n }, function () { });\n }\n else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n };\n /**\n * @return {?}\n */\n NgbModalRef.prototype._removeModalElements = /**\n * @return {?}\n */\n function () {\n /** @type {?} */\n var windowNativeEl = this._windowCmptRef.location.nativeElement;\n windowNativeEl.parentNode.removeChild(windowNativeEl);\n this._windowCmptRef.destroy();\n if (this._backdropCmptRef) {\n /** @type {?} */\n var backdropNativeEl = this._backdropCmptRef.location.nativeElement;\n backdropNativeEl.parentNode.removeChild(backdropNativeEl);\n this._backdropCmptRef.destroy();\n }\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n this._windowCmptRef = null;\n this._backdropCmptRef = null;\n this._contentRef = null;\n };\n return NgbModalRef;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @enum {number} */\nvar ModalDismissReasons = {\n BACKDROP_CLICK: 0,\n ESC: 1,\n};\nModalDismissReasons[ModalDismissReasons.BACKDROP_CLICK] = 'BACKDROP_CLICK';\nModalDismissReasons[ModalDismissReasons.ESC] = 'ESC';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbModalWindow = /** @class */ (function () {\n function NgbModalWindow(_document, _elRef) {\n this._document = _document;\n this._elRef = _elRef;\n this.backdrop = true;\n this.keyboard = true;\n this.dismissEvent = new EventEmitter();\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n NgbModalWindow.prototype.backdropClick = /**\n * @param {?} $event\n * @return {?}\n */\n function ($event) {\n if (this.backdrop === true && this._elRef.nativeElement === $event.target) {\n this.dismiss(ModalDismissReasons.BACKDROP_CLICK);\n }\n };\n /**\n * @param {?} $event\n * @return {?}\n */\n NgbModalWindow.prototype.escKey = /**\n * @param {?} $event\n * @return {?}\n */\n function ($event) {\n if (this.keyboard && !$event.defaultPrevented) {\n this.dismiss(ModalDismissReasons.ESC);\n }\n };\n /**\n * @param {?} reason\n * @return {?}\n */\n NgbModalWindow.prototype.dismiss = /**\n * @param {?} reason\n * @return {?}\n */\n function (reason) { this.dismissEvent.emit(reason); };\n /**\n * @return {?}\n */\n NgbModalWindow.prototype.ngOnInit = /**\n * @return {?}\n */\n function () { this._elWithFocus = this._document.activeElement; };\n /**\n * @return {?}\n */\n NgbModalWindow.prototype.ngAfterViewInit = /**\n * @return {?}\n */\n function () {\n if (!this._elRef.nativeElement.contains(document.activeElement)) {\n /** @type {?} */\n var autoFocusable = (/** @type {?} */ (this._elRef.nativeElement.querySelector(\"[ngbAutofocus]\")));\n /** @type {?} */\n var firstFocusable = getFocusableBoundaryElements(this._elRef.nativeElement)[0];\n /** @type {?} */\n var elementToFocus = autoFocusable || firstFocusable || this._elRef.nativeElement;\n elementToFocus.focus();\n }\n };\n /**\n * @return {?}\n */\n NgbModalWindow.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n /** @type {?} */\n var body = this._document.body;\n /** @type {?} */\n var elWithFocus = this._elWithFocus;\n /** @type {?} */\n var elementToFocus;\n if (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {\n elementToFocus = elWithFocus;\n }\n else {\n elementToFocus = body;\n }\n elementToFocus.focus();\n this._elWithFocus = null;\n };\n NgbModalWindow.decorators = [\n { type: Component, args: [{\n selector: 'ngb-modal-window',\n host: {\n '[class]': '\"modal fade show d-block\" + (windowClass ? \" \" + windowClass : \"\")',\n 'role': 'dialog',\n 'tabindex': '-1',\n '(keyup.esc)': 'escKey($event)',\n '(click)': 'backdropClick($event)',\n '[attr.aria-modal]': 'true',\n '[attr.aria-labelledby]': 'ariaLabelledBy',\n },\n template: \"\\n
\\n
\\n
\\n \"\n }] }\n ];\n /** @nocollapse */\n NgbModalWindow.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ElementRef }\n ]; };\n NgbModalWindow.propDecorators = {\n ariaLabelledBy: [{ type: Input }],\n backdrop: [{ type: Input }],\n centered: [{ type: Input }],\n keyboard: [{ type: Input }],\n size: [{ type: Input }],\n windowClass: [{ type: Input }],\n dismissEvent: [{ type: Output, args: ['dismiss',] }]\n };\n return NgbModalWindow;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbModalStack = /** @class */ (function () {\n function NgbModalStack(_applicationRef, _injector, _document, _scrollBar, _rendererFactory) {\n var _this = this;\n this._applicationRef = _applicationRef;\n this._injector = _injector;\n this._document = _document;\n this._scrollBar = _scrollBar;\n this._rendererFactory = _rendererFactory;\n this._activeWindowCmptHasChanged = new Subject();\n this._ariaHiddenValues = new Map();\n this._backdropAttributes = ['backdropClass'];\n this._modalRefs = [];\n this._windowAttributes = ['ariaLabelledBy', 'backdrop', 'centered', 'keyboard', 'size', 'windowClass'];\n this._windowCmpts = [];\n // Trap focus on active WindowCmpt\n this._activeWindowCmptHasChanged.subscribe(function () {\n if (_this._windowCmpts.length) {\n /** @type {?} */\n var activeWindowCmpt = _this._windowCmpts[_this._windowCmpts.length - 1];\n ngbFocusTrap(activeWindowCmpt.location.nativeElement, _this._activeWindowCmptHasChanged);\n _this._revertAriaHidden();\n _this._setAriaHidden(activeWindowCmpt.location.nativeElement);\n }\n });\n }\n /**\n * @param {?} moduleCFR\n * @param {?} contentInjector\n * @param {?} content\n * @param {?} options\n * @return {?}\n */\n NgbModalStack.prototype.open = /**\n * @param {?} moduleCFR\n * @param {?} contentInjector\n * @param {?} content\n * @param {?} options\n * @return {?}\n */\n function (moduleCFR, contentInjector, content, options) {\n var _this = this;\n /** @type {?} */\n var containerEl = isDefined(options.container) ? this._document.querySelector(options.container) : this._document.body;\n /** @type {?} */\n var renderer = this._rendererFactory.createRenderer(null, null);\n /** @type {?} */\n var revertPaddingForScrollBar = this._scrollBar.compensate();\n /** @type {?} */\n var removeBodyClass = function () {\n if (!_this._modalRefs.length) {\n renderer.removeClass(_this._document.body, 'modal-open');\n _this._revertAriaHidden();\n }\n };\n if (!containerEl) {\n throw new Error(\"The specified modal container \\\"\" + (options.container || 'body') + \"\\\" was not found in the DOM.\");\n }\n /** @type {?} */\n var activeModal = new NgbActiveModal();\n /** @type {?} */\n var contentRef = this._getContentRef(moduleCFR, options.injector || contentInjector, content, activeModal);\n /** @type {?} */\n var backdropCmptRef = options.backdrop !== false ? this._attachBackdrop(moduleCFR, containerEl) : null;\n /** @type {?} */\n var windowCmptRef = this._attachWindowComponent(moduleCFR, containerEl, contentRef);\n /** @type {?} */\n var ngbModalRef = new NgbModalRef(windowCmptRef, contentRef, backdropCmptRef, options.beforeDismiss);\n this._registerModalRef(ngbModalRef);\n this._registerWindowCmpt(windowCmptRef);\n ngbModalRef.result.then(revertPaddingForScrollBar, revertPaddingForScrollBar);\n ngbModalRef.result.then(removeBodyClass, removeBodyClass);\n activeModal.close = function (result) { ngbModalRef.close(result); };\n activeModal.dismiss = function (reason) { ngbModalRef.dismiss(reason); };\n this._applyWindowOptions(windowCmptRef.instance, options);\n if (this._modalRefs.length === 1) {\n renderer.addClass(this._document.body, 'modal-open');\n }\n if (backdropCmptRef && backdropCmptRef.instance) {\n this._applyBackdropOptions(backdropCmptRef.instance, options);\n }\n return ngbModalRef;\n };\n /**\n * @param {?=} reason\n * @return {?}\n */\n NgbModalStack.prototype.dismissAll = /**\n * @param {?=} reason\n * @return {?}\n */\n function (reason) { this._modalRefs.forEach(function (ngbModalRef) { return ngbModalRef.dismiss(reason); }); };\n /**\n * @return {?}\n */\n NgbModalStack.prototype.hasOpenModals = /**\n * @return {?}\n */\n function () { return this._modalRefs.length > 0; };\n /**\n * @param {?} moduleCFR\n * @param {?} containerEl\n * @return {?}\n */\n NgbModalStack.prototype._attachBackdrop = /**\n * @param {?} moduleCFR\n * @param {?} containerEl\n * @return {?}\n */\n function (moduleCFR, containerEl) {\n /** @type {?} */\n var backdropFactory = moduleCFR.resolveComponentFactory(NgbModalBackdrop);\n /** @type {?} */\n var backdropCmptRef = backdropFactory.create(this._injector);\n this._applicationRef.attachView(backdropCmptRef.hostView);\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\n return backdropCmptRef;\n };\n /**\n * @param {?} moduleCFR\n * @param {?} containerEl\n * @param {?} contentRef\n * @return {?}\n */\n NgbModalStack.prototype._attachWindowComponent = /**\n * @param {?} moduleCFR\n * @param {?} containerEl\n * @param {?} contentRef\n * @return {?}\n */\n function (moduleCFR, containerEl, contentRef) {\n /** @type {?} */\n var windowFactory = moduleCFR.resolveComponentFactory(NgbModalWindow);\n /** @type {?} */\n var windowCmptRef = windowFactory.create(this._injector, contentRef.nodes);\n this._applicationRef.attachView(windowCmptRef.hostView);\n containerEl.appendChild(windowCmptRef.location.nativeElement);\n return windowCmptRef;\n };\n /**\n * @param {?} windowInstance\n * @param {?} options\n * @return {?}\n */\n NgbModalStack.prototype._applyWindowOptions = /**\n * @param {?} windowInstance\n * @param {?} options\n * @return {?}\n */\n function (windowInstance, options) {\n this._windowAttributes.forEach(function (optionName) {\n if (isDefined(options[optionName])) {\n windowInstance[optionName] = options[optionName];\n }\n });\n };\n /**\n * @param {?} backdropInstance\n * @param {?} options\n * @return {?}\n */\n NgbModalStack.prototype._applyBackdropOptions = /**\n * @param {?} backdropInstance\n * @param {?} options\n * @return {?}\n */\n function (backdropInstance, options) {\n this._backdropAttributes.forEach(function (optionName) {\n if (isDefined(options[optionName])) {\n backdropInstance[optionName] = options[optionName];\n }\n });\n };\n /**\n * @param {?} moduleCFR\n * @param {?} contentInjector\n * @param {?} content\n * @param {?} activeModal\n * @return {?}\n */\n NgbModalStack.prototype._getContentRef = /**\n * @param {?} moduleCFR\n * @param {?} contentInjector\n * @param {?} content\n * @param {?} activeModal\n * @return {?}\n */\n function (moduleCFR, contentInjector, content, activeModal) {\n if (!content) {\n return new ContentRef([]);\n }\n else if (content instanceof TemplateRef) {\n return this._createFromTemplateRef(content, activeModal);\n }\n else if (isString(content)) {\n return this._createFromString(content);\n }\n else {\n return this._createFromComponent(moduleCFR, contentInjector, content, activeModal);\n }\n };\n /**\n * @param {?} content\n * @param {?} activeModal\n * @return {?}\n */\n NgbModalStack.prototype._createFromTemplateRef = /**\n * @param {?} content\n * @param {?} activeModal\n * @return {?}\n */\n function (content, activeModal) {\n /** @type {?} */\n var context = {\n $implicit: activeModal,\n close: /**\n * @param {?} result\n * @return {?}\n */\n function (result) { activeModal.close(result); },\n dismiss: /**\n * @param {?} reason\n * @return {?}\n */\n function (reason) { activeModal.dismiss(reason); }\n };\n /** @type {?} */\n var viewRef = content.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n };\n /**\n * @param {?} content\n * @return {?}\n */\n NgbModalStack.prototype._createFromString = /**\n * @param {?} content\n * @return {?}\n */\n function (content) {\n /** @type {?} */\n var component = this._document.createTextNode(\"\" + content);\n return new ContentRef([[component]]);\n };\n /**\n * @param {?} moduleCFR\n * @param {?} contentInjector\n * @param {?} content\n * @param {?} context\n * @return {?}\n */\n NgbModalStack.prototype._createFromComponent = /**\n * @param {?} moduleCFR\n * @param {?} contentInjector\n * @param {?} content\n * @param {?} context\n * @return {?}\n */\n function (moduleCFR, contentInjector, content, context) {\n /** @type {?} */\n var contentCmptFactory = moduleCFR.resolveComponentFactory(content);\n /** @type {?} */\n var modalContentInjector = Injector.create({ providers: [{ provide: NgbActiveModal, useValue: context }], parent: contentInjector });\n /** @type {?} */\n var componentRef = contentCmptFactory.create(modalContentInjector);\n this._applicationRef.attachView(componentRef.hostView);\n return new ContentRef([[componentRef.location.nativeElement]], componentRef.hostView, componentRef);\n };\n /**\n * @param {?} element\n * @return {?}\n */\n NgbModalStack.prototype._setAriaHidden = /**\n * @param {?} element\n * @return {?}\n */\n function (element) {\n var _this = this;\n /** @type {?} */\n var parent = element.parentElement;\n if (parent && element !== this._document.body) {\n Array.from(parent.children).forEach(function (sibling) {\n if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n _this._ariaHiddenValues.set(sibling, sibling.getAttribute('aria-hidden'));\n sibling.setAttribute('aria-hidden', 'true');\n }\n });\n this._setAriaHidden(parent);\n }\n };\n /**\n * @return {?}\n */\n NgbModalStack.prototype._revertAriaHidden = /**\n * @return {?}\n */\n function () {\n this._ariaHiddenValues.forEach(function (value, element) {\n if (value) {\n element.setAttribute('aria-hidden', value);\n }\n else {\n element.removeAttribute('aria-hidden');\n }\n });\n this._ariaHiddenValues.clear();\n };\n /**\n * @param {?} ngbModalRef\n * @return {?}\n */\n NgbModalStack.prototype._registerModalRef = /**\n * @param {?} ngbModalRef\n * @return {?}\n */\n function (ngbModalRef) {\n var _this = this;\n /** @type {?} */\n var unregisterModalRef = function () {\n /** @type {?} */\n var index = _this._modalRefs.indexOf(ngbModalRef);\n if (index > -1) {\n _this._modalRefs.splice(index, 1);\n }\n };\n this._modalRefs.push(ngbModalRef);\n ngbModalRef.result.then(unregisterModalRef, unregisterModalRef);\n };\n /**\n * @param {?} ngbWindowCmpt\n * @return {?}\n */\n NgbModalStack.prototype._registerWindowCmpt = /**\n * @param {?} ngbWindowCmpt\n * @return {?}\n */\n function (ngbWindowCmpt) {\n var _this = this;\n this._windowCmpts.push(ngbWindowCmpt);\n this._activeWindowCmptHasChanged.next();\n ngbWindowCmpt.onDestroy(function () {\n /** @type {?} */\n var index = _this._windowCmpts.indexOf(ngbWindowCmpt);\n if (index > -1) {\n _this._windowCmpts.splice(index, 1);\n _this._activeWindowCmptHasChanged.next();\n }\n });\n };\n NgbModalStack.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */\n NgbModalStack.ctorParameters = function () { return [\n { type: ApplicationRef },\n { type: Injector },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ScrollBar },\n { type: RendererFactory2 }\n ]; };\n /** @nocollapse */ NgbModalStack.ngInjectableDef = defineInjectable({ factory: function NgbModalStack_Factory() { return new NgbModalStack(inject(ApplicationRef), inject(INJECTOR), inject(DOCUMENT), inject(ScrollBar), inject(RendererFactory2)); }, token: NgbModalStack, providedIn: \"root\" });\n return NgbModalStack;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A service for opening modal windows.\n *\n * Creating a modal is straightforward: create a component or a template and pass it as an argument to\n * the `.open()` method.\n */\nvar NgbModal = /** @class */ (function () {\n function NgbModal(_moduleCFR, _injector, _modalStack, _config) {\n this._moduleCFR = _moduleCFR;\n this._injector = _injector;\n this._modalStack = _modalStack;\n this._config = _config;\n }\n /**\n * Opens a new modal window with the specified content and supplied options.\n *\n * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n * then instances of those components can be injected with an instance of the `NgbActiveModal` class. You can then\n * use `NgbActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n *\n * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options.\n */\n /**\n * Opens a new modal window with the specified content and supplied options.\n *\n * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n * then instances of those components can be injected with an instance of the `NgbActiveModal` class. You can then\n * use `NgbActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n *\n * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options.\n * @param {?} content\n * @param {?=} options\n * @return {?}\n */\n NgbModal.prototype.open = /**\n * Opens a new modal window with the specified content and supplied options.\n *\n * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n * then instances of those components can be injected with an instance of the `NgbActiveModal` class. You can then\n * use `NgbActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n *\n * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options.\n * @param {?} content\n * @param {?=} options\n * @return {?}\n */\n function (content, options) {\n if (options === void 0) { options = {}; }\n /** @type {?} */\n var combinedOptions = Object.assign({}, this._config, options);\n return this._modalStack.open(this._moduleCFR, this._injector, content, combinedOptions);\n };\n /**\n * Dismisses all currently displayed modal windows with the supplied reason.\n *\n * @since 3.1.0\n */\n /**\n * Dismisses all currently displayed modal windows with the supplied reason.\n *\n * \\@since 3.1.0\n * @param {?=} reason\n * @return {?}\n */\n NgbModal.prototype.dismissAll = /**\n * Dismisses all currently displayed modal windows with the supplied reason.\n *\n * \\@since 3.1.0\n * @param {?=} reason\n * @return {?}\n */\n function (reason) { this._modalStack.dismissAll(reason); };\n /**\n * Indicates if there are currently any open modal windows in the application.\n *\n * @since 3.3.0\n */\n /**\n * Indicates if there are currently any open modal windows in the application.\n *\n * \\@since 3.3.0\n * @return {?}\n */\n NgbModal.prototype.hasOpenModals = /**\n * Indicates if there are currently any open modal windows in the application.\n *\n * \\@since 3.3.0\n * @return {?}\n */\n function () { return this._modalStack.hasOpenModals(); };\n NgbModal.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */\n NgbModal.ctorParameters = function () { return [\n { type: ComponentFactoryResolver },\n { type: Injector },\n { type: NgbModalStack },\n { type: NgbModalConfig }\n ]; };\n /** @nocollapse */ NgbModal.ngInjectableDef = defineInjectable({ factory: function NgbModal_Factory() { return new NgbModal(inject(ComponentFactoryResolver), inject(INJECTOR), inject(NgbModalStack), inject(NgbModalConfig)); }, token: NgbModal, providedIn: \"root\" });\n return NgbModal;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbModalModule = /** @class */ (function () {\n function NgbModalModule() {\n }\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n */\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n NgbModalModule.forRoot = /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n function () { return { ngModule: NgbModalModule }; };\n NgbModalModule.decorators = [\n { type: NgModule, args: [{\n declarations: [NgbModalBackdrop, NgbModalWindow],\n entryComponents: [NgbModalBackdrop, NgbModalWindow],\n providers: [NgbModal]\n },] }\n ];\n return NgbModalModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbPagination`](#/components/pagination/api#NgbPagination) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the paginations used in the application.\n */\nvar NgbPaginationConfig = /** @class */ (function () {\n function NgbPaginationConfig() {\n this.disabled = false;\n this.boundaryLinks = false;\n this.directionLinks = true;\n this.ellipses = true;\n this.maxSize = 0;\n this.pageSize = 10;\n this.rotate = false;\n }\n NgbPaginationConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbPaginationConfig.ngInjectableDef = defineInjectable({ factory: function NgbPaginationConfig_Factory() { return new NgbPaginationConfig(); }, token: NgbPaginationConfig, providedIn: \"root\" });\n return NgbPaginationConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A directive to match the 'ellipsis' link template\n *\n * \\@since 4.1.0\n */\nvar NgbPaginationEllipsis = /** @class */ (function () {\n function NgbPaginationEllipsis(templateRef) {\n this.templateRef = templateRef;\n }\n NgbPaginationEllipsis.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbPaginationEllipsis]' },] }\n ];\n /** @nocollapse */\n NgbPaginationEllipsis.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbPaginationEllipsis;\n}());\n/**\n * A directive to match the 'first' link template\n *\n * \\@since 4.1.0\n */\nvar NgbPaginationFirst = /** @class */ (function () {\n function NgbPaginationFirst(templateRef) {\n this.templateRef = templateRef;\n }\n NgbPaginationFirst.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbPaginationFirst]' },] }\n ];\n /** @nocollapse */\n NgbPaginationFirst.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbPaginationFirst;\n}());\n/**\n * A directive to match the 'last' link template\n *\n * \\@since 4.1.0\n */\nvar NgbPaginationLast = /** @class */ (function () {\n function NgbPaginationLast(templateRef) {\n this.templateRef = templateRef;\n }\n NgbPaginationLast.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbPaginationLast]' },] }\n ];\n /** @nocollapse */\n NgbPaginationLast.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbPaginationLast;\n}());\n/**\n * A directive to match the 'next' link template\n *\n * \\@since 4.1.0\n */\nvar NgbPaginationNext = /** @class */ (function () {\n function NgbPaginationNext(templateRef) {\n this.templateRef = templateRef;\n }\n NgbPaginationNext.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbPaginationNext]' },] }\n ];\n /** @nocollapse */\n NgbPaginationNext.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbPaginationNext;\n}());\n/**\n * A directive to match the page 'number' link template\n *\n * \\@since 4.1.0\n */\nvar NgbPaginationNumber = /** @class */ (function () {\n function NgbPaginationNumber(templateRef) {\n this.templateRef = templateRef;\n }\n NgbPaginationNumber.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbPaginationNumber]' },] }\n ];\n /** @nocollapse */\n NgbPaginationNumber.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbPaginationNumber;\n}());\n/**\n * A directive to match the 'previous' link template\n *\n * \\@since 4.1.0\n */\nvar NgbPaginationPrevious = /** @class */ (function () {\n function NgbPaginationPrevious(templateRef) {\n this.templateRef = templateRef;\n }\n NgbPaginationPrevious.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbPaginationPrevious]' },] }\n ];\n /** @nocollapse */\n NgbPaginationPrevious.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbPaginationPrevious;\n}());\n/**\n * A component that displays page numbers and allows to customize them in several ways.\n */\nvar NgbPagination = /** @class */ (function () {\n function NgbPagination(config) {\n this.pageCount = 0;\n this.pages = [];\n /**\n * The current page.\n *\n * Page numbers start with `1`.\n */\n this.page = 1;\n /**\n * An event fired when the page is changed. Will fire only if collection size is set and all values are valid.\n *\n * Event payload is the number of the newly selected page.\n *\n * Page numbers start with `1`.\n */\n this.pageChange = new EventEmitter(true);\n this.disabled = config.disabled;\n this.boundaryLinks = config.boundaryLinks;\n this.directionLinks = config.directionLinks;\n this.ellipses = config.ellipses;\n this.maxSize = config.maxSize;\n this.pageSize = config.pageSize;\n this.rotate = config.rotate;\n this.size = config.size;\n }\n /**\n * @return {?}\n */\n NgbPagination.prototype.hasPrevious = /**\n * @return {?}\n */\n function () { return this.page > 1; };\n /**\n * @return {?}\n */\n NgbPagination.prototype.hasNext = /**\n * @return {?}\n */\n function () { return this.page < this.pageCount; };\n /**\n * @return {?}\n */\n NgbPagination.prototype.nextDisabled = /**\n * @return {?}\n */\n function () { return !this.hasNext() || this.disabled; };\n /**\n * @return {?}\n */\n NgbPagination.prototype.previousDisabled = /**\n * @return {?}\n */\n function () { return !this.hasPrevious() || this.disabled; };\n /**\n * @param {?} pageNumber\n * @return {?}\n */\n NgbPagination.prototype.selectPage = /**\n * @param {?} pageNumber\n * @return {?}\n */\n function (pageNumber) { this._updatePages(pageNumber); };\n /**\n * @param {?} changes\n * @return {?}\n */\n NgbPagination.prototype.ngOnChanges = /**\n * @param {?} changes\n * @return {?}\n */\n function (changes) { this._updatePages(this.page); };\n /**\n * @param {?} pageNumber\n * @return {?}\n */\n NgbPagination.prototype.isEllipsis = /**\n * @param {?} pageNumber\n * @return {?}\n */\n function (pageNumber) { return pageNumber === -1; };\n /**\n * Appends ellipses and first/last page number to the displayed pages\n */\n /**\n * Appends ellipses and first/last page number to the displayed pages\n * @param {?} start\n * @param {?} end\n * @return {?}\n */\n NgbPagination.prototype._applyEllipses = /**\n * Appends ellipses and first/last page number to the displayed pages\n * @param {?} start\n * @param {?} end\n * @return {?}\n */\n function (start, end) {\n if (this.ellipses) {\n if (start > 0) {\n if (start > 1) {\n this.pages.unshift(-1);\n }\n this.pages.unshift(1);\n }\n if (end < this.pageCount) {\n if (end < (this.pageCount - 1)) {\n this.pages.push(-1);\n }\n this.pages.push(this.pageCount);\n }\n }\n };\n /**\n * Rotates page numbers based on maxSize items visible.\n * Currently selected page stays in the middle:\n *\n * Ex. for selected page = 6:\n * [5,*6*,7] for maxSize = 3\n * [4,5,*6*,7] for maxSize = 4\n */\n /**\n * Rotates page numbers based on maxSize items visible.\n * Currently selected page stays in the middle:\n *\n * Ex. for selected page = 6:\n * [5,*6*,7] for maxSize = 3\n * [4,5,*6*,7] for maxSize = 4\n * @return {?}\n */\n NgbPagination.prototype._applyRotation = /**\n * Rotates page numbers based on maxSize items visible.\n * Currently selected page stays in the middle:\n *\n * Ex. for selected page = 6:\n * [5,*6*,7] for maxSize = 3\n * [4,5,*6*,7] for maxSize = 4\n * @return {?}\n */\n function () {\n /** @type {?} */\n var start = 0;\n /** @type {?} */\n var end = this.pageCount;\n /** @type {?} */\n var leftOffset = Math.floor(this.maxSize / 2);\n /** @type {?} */\n var rightOffset = this.maxSize % 2 === 0 ? leftOffset - 1 : leftOffset;\n if (this.page <= leftOffset) {\n // very beginning, no rotation -> [0..maxSize]\n end = this.maxSize;\n }\n else if (this.pageCount - this.page < leftOffset) {\n // very end, no rotation -> [len-maxSize..len]\n start = this.pageCount - this.maxSize;\n }\n else {\n // rotate\n start = this.page - leftOffset - 1;\n end = this.page + rightOffset;\n }\n return [start, end];\n };\n /**\n * Paginates page numbers based on maxSize items per page.\n */\n /**\n * Paginates page numbers based on maxSize items per page.\n * @return {?}\n */\n NgbPagination.prototype._applyPagination = /**\n * Paginates page numbers based on maxSize items per page.\n * @return {?}\n */\n function () {\n /** @type {?} */\n var page = Math.ceil(this.page / this.maxSize) - 1;\n /** @type {?} */\n var start = page * this.maxSize;\n /** @type {?} */\n var end = start + this.maxSize;\n return [start, end];\n };\n /**\n * @param {?} newPageNo\n * @return {?}\n */\n NgbPagination.prototype._setPageInRange = /**\n * @param {?} newPageNo\n * @return {?}\n */\n function (newPageNo) {\n /** @type {?} */\n var prevPageNo = this.page;\n this.page = getValueInRange(newPageNo, this.pageCount, 1);\n if (this.page !== prevPageNo && isNumber(this.collectionSize)) {\n this.pageChange.emit(this.page);\n }\n };\n /**\n * @param {?} newPage\n * @return {?}\n */\n NgbPagination.prototype._updatePages = /**\n * @param {?} newPage\n * @return {?}\n */\n function (newPage) {\n var _a, _b;\n this.pageCount = Math.ceil(this.collectionSize / this.pageSize);\n if (!isNumber(this.pageCount)) {\n this.pageCount = 0;\n }\n // fill-in model needed to render pages\n this.pages.length = 0;\n for (var i = 1; i <= this.pageCount; i++) {\n this.pages.push(i);\n }\n // set page within 1..max range\n this._setPageInRange(newPage);\n // apply maxSize if necessary\n if (this.maxSize > 0 && this.pageCount > this.maxSize) {\n /** @type {?} */\n var start = 0;\n /** @type {?} */\n var end = this.pageCount;\n // either paginating or rotating page numbers\n if (this.rotate) {\n _a = __read(this._applyRotation(), 2), start = _a[0], end = _a[1];\n }\n else {\n _b = __read(this._applyPagination(), 2), start = _b[0], end = _b[1];\n }\n this.pages = this.pages.slice(start, end);\n // adding ellipses\n this._applyEllipses(start, end);\n }\n };\n NgbPagination.decorators = [\n { type: Component, args: [{\n selector: 'ngb-pagination',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'role': 'navigation' },\n template: \"\\n ««\\n «\\n »\\n »»\\n ...\\n \\n {{ page }}\\n (current)\\n \\n \\n \"\n }] }\n ];\n /** @nocollapse */\n NgbPagination.ctorParameters = function () { return [\n { type: NgbPaginationConfig }\n ]; };\n NgbPagination.propDecorators = {\n tplEllipsis: [{ type: ContentChild, args: [NgbPaginationEllipsis,] }],\n tplFirst: [{ type: ContentChild, args: [NgbPaginationFirst,] }],\n tplLast: [{ type: ContentChild, args: [NgbPaginationLast,] }],\n tplNext: [{ type: ContentChild, args: [NgbPaginationNext,] }],\n tplNumber: [{ type: ContentChild, args: [NgbPaginationNumber,] }],\n tplPrevious: [{ type: ContentChild, args: [NgbPaginationPrevious,] }],\n disabled: [{ type: Input }],\n boundaryLinks: [{ type: Input }],\n directionLinks: [{ type: Input }],\n ellipses: [{ type: Input }],\n rotate: [{ type: Input }],\n collectionSize: [{ type: Input }],\n maxSize: [{ type: Input }],\n page: [{ type: Input }],\n pageSize: [{ type: Input }],\n pageChange: [{ type: Output }],\n size: [{ type: Input }]\n };\n return NgbPagination;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar DIRECTIVES = [\n NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber,\n NgbPaginationPrevious\n];\nvar NgbPaginationModule = /** @class */ (function () {\n function NgbPaginationModule() {\n }\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n */\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n NgbPaginationModule.forRoot = /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n function () { return { ngModule: NgbPaginationModule }; };\n NgbPaginationModule.decorators = [\n { type: NgModule, args: [{ declarations: DIRECTIVES, exports: DIRECTIVES, imports: [CommonModule] },] }\n ];\n return NgbPaginationModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar Trigger = /** @class */ (function () {\n function Trigger(open, close) {\n this.open = open;\n this.close = close;\n if (!close) {\n this.close = open;\n }\n }\n /**\n * @return {?}\n */\n Trigger.prototype.isManual = /**\n * @return {?}\n */\n function () { return this.open === 'manual' || this.close === 'manual'; };\n return Trigger;\n}());\n/** @type {?} */\nvar DEFAULT_ALIASES = {\n 'hover': ['mouseenter', 'mouseleave'],\n 'focus': ['focusin', 'focusout'],\n};\n/**\n * @param {?} triggers\n * @param {?=} aliases\n * @return {?}\n */\nfunction parseTriggers(triggers, aliases) {\n if (aliases === void 0) { aliases = DEFAULT_ALIASES; }\n /** @type {?} */\n var trimmedTriggers = (triggers || '').trim();\n if (trimmedTriggers.length === 0) {\n return [];\n }\n /** @type {?} */\n var parsedTriggers = trimmedTriggers.split(/\\s+/).map(function (trigger) { return trigger.split(':'); }).map(function (triggerPair) {\n /** @type {?} */\n var alias = aliases[triggerPair[0]] || triggerPair;\n return new Trigger(alias[0], alias[1]);\n });\n /** @type {?} */\n var manualTriggers = parsedTriggers.filter(function (triggerPair) { return triggerPair.isManual(); });\n if (manualTriggers.length > 1) {\n throw 'Triggers parse error: only one manual trigger is allowed';\n }\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw 'Triggers parse error: manual trigger can\\'t be mixed with other triggers';\n }\n return parsedTriggers;\n}\n/**\n * @param {?} renderer\n * @param {?} nativeElement\n * @param {?} triggers\n * @param {?} isOpenedFn\n * @return {?}\n */\nfunction observeTriggers(renderer, nativeElement, triggers, isOpenedFn) {\n return new Observable(function (subscriber) {\n /** @type {?} */\n var listeners = [];\n /** @type {?} */\n var openFn = function () { return subscriber.next(true); };\n /** @type {?} */\n var closeFn = function () { return subscriber.next(false); };\n /** @type {?} */\n var toggleFn = function () { return subscriber.next(!isOpenedFn()); };\n triggers.forEach(function (trigger) {\n if (trigger.open === trigger.close) {\n listeners.push(renderer.listen(nativeElement, trigger.open, toggleFn));\n }\n else {\n listeners.push(renderer.listen(nativeElement, trigger.open, openFn), renderer.listen(nativeElement, trigger.close, closeFn));\n }\n });\n return function () { listeners.forEach(function (unsubscribeFn) { return unsubscribeFn(); }); };\n });\n}\n/** @type {?} */\nvar delayOrNoop = function (time) { return time > 0 ? delay(time) : function (a) { return a; }; };\n/**\n * @param {?} openDelay\n * @param {?} closeDelay\n * @param {?} isOpenedFn\n * @return {?}\n */\nfunction triggerDelay(openDelay, closeDelay, isOpenedFn) {\n return function (input$) {\n /** @type {?} */\n var pending = null;\n /** @type {?} */\n var filteredInput$ = input$.pipe(map(function (open) { return ({ open: open }); }), filter(function (event) {\n /** @type {?} */\n var currentlyOpen = isOpenedFn();\n if (currentlyOpen !== event.open && (!pending || pending.open === currentlyOpen)) {\n pending = event;\n return true;\n }\n if (pending && pending.open !== event.open) {\n pending = null;\n }\n return false;\n }), share());\n /** @type {?} */\n var delayedOpen$ = filteredInput$.pipe(filter(function (event) { return event.open; }), delayOrNoop(openDelay));\n /** @type {?} */\n var delayedClose$ = filteredInput$.pipe(filter(function (event) { return !event.open; }), delayOrNoop(closeDelay));\n return merge(delayedOpen$, delayedClose$)\n .pipe(filter(function (event) {\n if (event === pending) {\n pending = null;\n return event.open !== isOpenedFn();\n }\n return false;\n }), map(function (event) { return event.open; }));\n };\n}\n/**\n * @param {?} renderer\n * @param {?} nativeElement\n * @param {?} triggers\n * @param {?} isOpenedFn\n * @param {?} openFn\n * @param {?} closeFn\n * @param {?=} openDelay\n * @param {?=} closeDelay\n * @return {?}\n */\nfunction listenToTriggers(renderer, nativeElement, triggers, isOpenedFn, openFn, closeFn, openDelay, closeDelay) {\n if (openDelay === void 0) { openDelay = 0; }\n if (closeDelay === void 0) { closeDelay = 0; }\n /** @type {?} */\n var parsedTriggers = parseTriggers(triggers);\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return function () { };\n }\n /** @type {?} */\n var subscription = observeTriggers(renderer, nativeElement, parsedTriggers, isOpenedFn)\n .pipe(triggerDelay(openDelay, closeDelay, isOpenedFn))\n .subscribe(function (open) { return (open ? openFn() : closeFn()); });\n return function () { return subscription.unsubscribe(); };\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbPopover`](#/components/popover/api#NgbPopover) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the popovers used in the application.\n */\nvar NgbPopoverConfig = /** @class */ (function () {\n function NgbPopoverConfig() {\n this.autoClose = true;\n this.placement = 'auto';\n this.triggers = 'click';\n this.disablePopover = false;\n this.openDelay = 0;\n this.closeDelay = 0;\n }\n NgbPopoverConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbPopoverConfig.ngInjectableDef = defineInjectable({ factory: function NgbPopoverConfig_Factory() { return new NgbPopoverConfig(); }, token: NgbPopoverConfig, providedIn: \"root\" });\n return NgbPopoverConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar nextId$3 = 0;\nvar NgbPopoverWindow = /** @class */ (function () {\n function NgbPopoverWindow() {\n }\n /**\n * @return {?}\n */\n NgbPopoverWindow.prototype.isTitleTemplate = /**\n * @return {?}\n */\n function () { return this.title instanceof TemplateRef; };\n NgbPopoverWindow.decorators = [\n { type: Component, args: [{\n selector: 'ngb-popover-window',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { '[class]': '\"popover\" + (popoverClass ? \" \" + popoverClass : \"\")', 'role': 'tooltip', '[id]': 'id' },\n template: \"\\n
\\n

\\n {{title}}\\n \\n

\\n
\",\n styles: [\"ngb-popover-window.bs-popover-bottom .arrow,ngb-popover-window.bs-popover-top .arrow{left:50%;margin-left:-.5rem}ngb-popover-window.bs-popover-bottom-left .arrow,ngb-popover-window.bs-popover-top-left .arrow{left:2em}ngb-popover-window.bs-popover-bottom-right .arrow,ngb-popover-window.bs-popover-top-right .arrow{left:auto;right:2em}ngb-popover-window.bs-popover-left .arrow,ngb-popover-window.bs-popover-right .arrow{top:50%;margin-top:-.5rem}ngb-popover-window.bs-popover-left-top .arrow,ngb-popover-window.bs-popover-right-top .arrow{top:.7em}ngb-popover-window.bs-popover-left-bottom .arrow,ngb-popover-window.bs-popover-right-bottom .arrow{top:auto;bottom:.7em}\"]\n }] }\n ];\n NgbPopoverWindow.propDecorators = {\n title: [{ type: Input }],\n id: [{ type: Input }],\n popoverClass: [{ type: Input }],\n context: [{ type: Input }]\n };\n return NgbPopoverWindow;\n}());\n/**\n * A lightweight and extensible directive for fancy popover creation.\n */\nvar NgbPopover = /** @class */ (function () {\n function NgbPopover(_elementRef, _renderer, injector, componentFactoryResolver, viewContainerRef, config, _ngZone, _document, _changeDetector, _applicationRef) {\n var _this = this;\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._document = _document;\n this._changeDetector = _changeDetector;\n this._applicationRef = _applicationRef;\n /**\n * An event emitted when the popover is shown. Contains no payload.\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the popover is hidden. Contains no payload.\n */\n this.hidden = new EventEmitter();\n this._ngbPopoverWindowId = \"ngb-popover-\" + nextId$3++;\n this.autoClose = config.autoClose;\n this.placement = config.placement;\n this.triggers = config.triggers;\n this.container = config.container;\n this.disablePopover = config.disablePopover;\n this.popoverClass = config.popoverClass;\n this.openDelay = config.openDelay;\n this.closeDelay = config.closeDelay;\n this._popupService = new PopupService(NgbPopoverWindow, injector, viewContainerRef, _renderer, componentFactoryResolver, _applicationRef);\n this._zoneSubscription = _ngZone.onStable.subscribe(function () {\n if (_this._windowRef) {\n positionElements(_this._elementRef.nativeElement, _this._windowRef.location.nativeElement, _this.placement, _this.container === 'body', 'bs-popover');\n }\n });\n }\n /**\n * @return {?}\n */\n NgbPopover.prototype._isDisabled = /**\n * @return {?}\n */\n function () {\n if (this.disablePopover) {\n return true;\n }\n if (!this.ngbPopover && !this.popoverTitle) {\n return true;\n }\n return false;\n };\n /**\n * Opens the popover.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the popover template when it is created.\n */\n /**\n * Opens the popover.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the popover template when it is created.\n * @param {?=} context\n * @return {?}\n */\n NgbPopover.prototype.open = /**\n * Opens the popover.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the popover template when it is created.\n * @param {?=} context\n * @return {?}\n */\n function (context) {\n var _this = this;\n if (!this._windowRef && !this._isDisabled()) {\n this._windowRef = this._popupService.open(this.ngbPopover, context);\n this._windowRef.instance.title = this.popoverTitle;\n this._windowRef.instance.context = context;\n this._windowRef.instance.popoverClass = this.popoverClass;\n this._windowRef.instance.id = this._ngbPopoverWindowId;\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ngbPopoverWindowId);\n if (this.container === 'body') {\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n // We need to detect changes, because we don't know where .open() might be called from.\n // Ex. opening popover from one of lifecycle hooks that run after the CD\n // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n this._windowRef.changeDetectorRef.detectChanges();\n // We need to mark for check, because popover won't work inside the OnPush component.\n // Ex. when we use expression like `{{ popover.isOpen() : 'opened' : 'closed' }}`\n // inside the template of an OnPush component and we change the popover from\n // open -> closed, the expression in question won't be updated unless we explicitly\n // mark the parent component to be checked.\n this._windowRef.changeDetectorRef.markForCheck();\n ngbAutoClose(this._ngZone, this._document, this.autoClose, function () { return _this.close(); }, this.hidden, [this._windowRef.location.nativeElement]);\n this.shown.emit();\n }\n };\n /**\n * Closes the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n */\n /**\n * Closes the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n * @return {?}\n */\n NgbPopover.prototype.close = /**\n * Closes the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n * @return {?}\n */\n function () {\n if (this._windowRef) {\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n this._popupService.close();\n this._windowRef = null;\n this.hidden.emit();\n this._changeDetector.markForCheck();\n }\n };\n /**\n * Toggles the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n */\n /**\n * Toggles the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n * @return {?}\n */\n NgbPopover.prototype.toggle = /**\n * Toggles the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n * @return {?}\n */\n function () {\n if (this._windowRef) {\n this.close();\n }\n else {\n this.open();\n }\n };\n /**\n * Returns `true`, if the popover is currently shown.\n */\n /**\n * Returns `true`, if the popover is currently shown.\n * @return {?}\n */\n NgbPopover.prototype.isOpen = /**\n * Returns `true`, if the popover is currently shown.\n * @return {?}\n */\n function () { return this._windowRef != null; };\n /**\n * @return {?}\n */\n NgbPopover.prototype.ngOnInit = /**\n * @return {?}\n */\n function () {\n this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\n };\n /**\n * @param {?} changes\n * @return {?}\n */\n NgbPopover.prototype.ngOnChanges = /**\n * @param {?} changes\n * @return {?}\n */\n function (changes) {\n // close popover if title and content become empty, or disablePopover set to true\n if ((changes['ngbPopover'] || changes['popoverTitle'] || changes['disablePopover']) && this._isDisabled()) {\n this.close();\n }\n };\n /**\n * @return {?}\n */\n NgbPopover.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n this.close();\n // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n if (this._unregisterListenersFn) {\n this._unregisterListenersFn();\n }\n this._zoneSubscription.unsubscribe();\n };\n NgbPopover.decorators = [\n { type: Directive, args: [{ selector: '[ngbPopover]', exportAs: 'ngbPopover' },] }\n ];\n /** @nocollapse */\n NgbPopover.ctorParameters = function () { return [\n { type: ElementRef },\n { type: Renderer2 },\n { type: Injector },\n { type: ComponentFactoryResolver },\n { type: ViewContainerRef },\n { type: NgbPopoverConfig },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ChangeDetectorRef },\n { type: ApplicationRef }\n ]; };\n NgbPopover.propDecorators = {\n autoClose: [{ type: Input }],\n ngbPopover: [{ type: Input }],\n popoverTitle: [{ type: Input }],\n placement: [{ type: Input }],\n triggers: [{ type: Input }],\n container: [{ type: Input }],\n disablePopover: [{ type: Input }],\n popoverClass: [{ type: Input }],\n openDelay: [{ type: Input }],\n closeDelay: [{ type: Input }],\n shown: [{ type: Output }],\n hidden: [{ type: Output }]\n };\n return NgbPopover;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbPopoverModule = /** @class */ (function () {\n function NgbPopoverModule() {\n }\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n */\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n NgbPopoverModule.forRoot = /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n function () { return { ngModule: NgbPopoverModule }; };\n NgbPopoverModule.decorators = [\n { type: NgModule, args: [{\n declarations: [NgbPopover, NgbPopoverWindow],\n exports: [NgbPopover],\n imports: [CommonModule],\n entryComponents: [NgbPopoverWindow]\n },] }\n ];\n return NgbPopoverModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbProgressbar`](#/components/progressbar/api#NgbProgressbar) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the progress bars used in the application.\n */\nvar NgbProgressbarConfig = /** @class */ (function () {\n function NgbProgressbarConfig() {\n this.max = 100;\n this.animated = false;\n this.striped = false;\n this.showValue = false;\n }\n NgbProgressbarConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbProgressbarConfig.ngInjectableDef = defineInjectable({ factory: function NgbProgressbarConfig_Factory() { return new NgbProgressbarConfig(); }, token: NgbProgressbarConfig, providedIn: \"root\" });\n return NgbProgressbarConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A directive that provides feedback on the progress of a workflow or an action.\n */\nvar NgbProgressbar = /** @class */ (function () {\n function NgbProgressbar(config) {\n /**\n * The current value for the progress bar.\n *\n * Should be in the `[0, max]` range.\n */\n this.value = 0;\n this.max = config.max;\n this.animated = config.animated;\n this.striped = config.striped;\n this.type = config.type;\n this.showValue = config.showValue;\n this.height = config.height;\n }\n /**\n * @return {?}\n */\n NgbProgressbar.prototype.getValue = /**\n * @return {?}\n */\n function () { return getValueInRange(this.value, this.max); };\n /**\n * @return {?}\n */\n NgbProgressbar.prototype.getPercentValue = /**\n * @return {?}\n */\n function () { return 100 * this.getValue() / this.max; };\n NgbProgressbar.decorators = [\n { type: Component, args: [{\n selector: 'ngb-progressbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: \"\\n
\\n
\\n {{getPercentValue()}}%\\n
\\n
\\n \"\n }] }\n ];\n /** @nocollapse */\n NgbProgressbar.ctorParameters = function () { return [\n { type: NgbProgressbarConfig }\n ]; };\n NgbProgressbar.propDecorators = {\n max: [{ type: Input }],\n animated: [{ type: Input }],\n striped: [{ type: Input }],\n showValue: [{ type: Input }],\n type: [{ type: Input }],\n value: [{ type: Input }],\n height: [{ type: Input }]\n };\n return NgbProgressbar;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbProgressbarModule = /** @class */ (function () {\n function NgbProgressbarModule() {\n }\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n */\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n NgbProgressbarModule.forRoot = /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n function () { return { ngModule: NgbProgressbarModule }; };\n NgbProgressbarModule.decorators = [\n { type: NgModule, args: [{ declarations: [NgbProgressbar], exports: [NgbProgressbar], imports: [CommonModule] },] }\n ];\n return NgbProgressbarModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbRating`](#/components/rating/api#NgbRating) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the ratings used in the application.\n */\nvar NgbRatingConfig = /** @class */ (function () {\n function NgbRatingConfig() {\n this.max = 10;\n this.readonly = false;\n this.resettable = false;\n }\n NgbRatingConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbRatingConfig.ngInjectableDef = defineInjectable({ factory: function NgbRatingConfig_Factory() { return new NgbRatingConfig(); }, token: NgbRatingConfig, providedIn: \"root\" });\n return NgbRatingConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_RATING_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return NgbRating; }),\n multi: true\n};\n/**\n * A directive that helps visualising and interacting with a star rating bar.\n */\nvar NgbRating = /** @class */ (function () {\n function NgbRating(config, _changeDetectorRef) {\n this._changeDetectorRef = _changeDetectorRef;\n this.contexts = [];\n this.disabled = false;\n /**\n * An event emitted when the user is hovering over a given rating.\n *\n * Event payload equals to the rating being hovered over.\n */\n this.hover = new EventEmitter();\n /**\n * An event emitted when the user stops hovering over a given rating.\n *\n * Event payload equals to the rating of the last item being hovered over.\n */\n this.leave = new EventEmitter();\n /**\n * An event emitted when the user selects a new rating.\n *\n * Event payload equals to the newly selected rating.\n */\n this.rateChange = new EventEmitter(true);\n this.onChange = function (_) { };\n this.onTouched = function () { };\n this.max = config.max;\n this.readonly = config.readonly;\n }\n /**\n * @return {?}\n */\n NgbRating.prototype.ariaValueText = /**\n * @return {?}\n */\n function () { return this.nextRate + \" out of \" + this.max; };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbRating.prototype.enter = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n if (!this.readonly && !this.disabled) {\n this._updateState(value);\n }\n this.hover.emit(value);\n };\n /**\n * @return {?}\n */\n NgbRating.prototype.handleBlur = /**\n * @return {?}\n */\n function () { this.onTouched(); };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbRating.prototype.handleClick = /**\n * @param {?} value\n * @return {?}\n */\n function (value) { this.update(this.resettable && this.rate === value ? 0 : value); };\n /**\n * @param {?} event\n * @return {?}\n */\n NgbRating.prototype.handleKeyDown = /**\n * @param {?} event\n * @return {?}\n */\n function (event) {\n // tslint:disable-next-line:deprecation\n switch (event.which) {\n case Key.ArrowDown:\n case Key.ArrowLeft:\n this.update(this.rate - 1);\n break;\n case Key.ArrowUp:\n case Key.ArrowRight:\n this.update(this.rate + 1);\n break;\n case Key.Home:\n this.update(0);\n break;\n case Key.End:\n this.update(this.max);\n break;\n default:\n return;\n }\n // note 'return' in default case\n event.preventDefault();\n };\n /**\n * @param {?} changes\n * @return {?}\n */\n NgbRating.prototype.ngOnChanges = /**\n * @param {?} changes\n * @return {?}\n */\n function (changes) {\n if (changes['rate']) {\n this.update(this.rate);\n }\n };\n /**\n * @return {?}\n */\n NgbRating.prototype.ngOnInit = /**\n * @return {?}\n */\n function () {\n this.contexts = Array.from({ length: this.max }, function (v, k) { return ({ fill: 0, index: k }); });\n this._updateState(this.rate);\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbRating.prototype.registerOnChange = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this.onChange = fn; };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbRating.prototype.registerOnTouched = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this.onTouched = fn; };\n /**\n * @return {?}\n */\n NgbRating.prototype.reset = /**\n * @return {?}\n */\n function () {\n this.leave.emit(this.nextRate);\n this._updateState(this.rate);\n };\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n NgbRating.prototype.setDisabledState = /**\n * @param {?} isDisabled\n * @return {?}\n */\n function (isDisabled) { this.disabled = isDisabled; };\n /**\n * @param {?} value\n * @param {?=} internalChange\n * @return {?}\n */\n NgbRating.prototype.update = /**\n * @param {?} value\n * @param {?=} internalChange\n * @return {?}\n */\n function (value, internalChange) {\n if (internalChange === void 0) { internalChange = true; }\n /** @type {?} */\n var newRate = getValueInRange(value, this.max, 0);\n if (!this.readonly && !this.disabled && this.rate !== newRate) {\n this.rate = newRate;\n this.rateChange.emit(this.rate);\n }\n if (internalChange) {\n this.onChange(this.rate);\n this.onTouched();\n }\n this._updateState(this.rate);\n };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbRating.prototype.writeValue = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this.update(value, false);\n this._changeDetectorRef.markForCheck();\n };\n /**\n * @param {?} index\n * @return {?}\n */\n NgbRating.prototype._getFillValue = /**\n * @param {?} index\n * @return {?}\n */\n function (index) {\n /** @type {?} */\n var diff = this.nextRate - index;\n if (diff >= 1) {\n return 100;\n }\n if (diff < 1 && diff > 0) {\n return parseInt((diff * 100).toFixed(2), 10);\n }\n return 0;\n };\n /**\n * @param {?} nextValue\n * @return {?}\n */\n NgbRating.prototype._updateState = /**\n * @param {?} nextValue\n * @return {?}\n */\n function (nextValue) {\n var _this = this;\n this.nextRate = nextValue;\n this.contexts.forEach(function (context, index) { return context.fill = _this._getFillValue(index); });\n };\n NgbRating.decorators = [\n { type: Component, args: [{\n selector: 'ngb-rating',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'd-inline-flex',\n 'tabindex': '0',\n 'role': 'slider',\n 'aria-valuemin': '0',\n '[attr.aria-valuemax]': 'max',\n '[attr.aria-valuenow]': 'nextRate',\n '[attr.aria-valuetext]': 'ariaValueText()',\n '[attr.aria-disabled]': 'readonly ? true : null',\n '(blur)': 'handleBlur()',\n '(keydown)': 'handleKeyDown($event)',\n '(mouseleave)': 'reset()'\n },\n template: \"\\n {{ fill === 100 ? '★' : '☆' }}\\n \\n ({{ index < nextRate ? '*' : ' ' }})\\n \\n \\n \\n \\n \\n \",\n providers: [NGB_RATING_VALUE_ACCESSOR]\n }] }\n ];\n /** @nocollapse */\n NgbRating.ctorParameters = function () { return [\n { type: NgbRatingConfig },\n { type: ChangeDetectorRef }\n ]; };\n NgbRating.propDecorators = {\n max: [{ type: Input }],\n rate: [{ type: Input }],\n readonly: [{ type: Input }],\n resettable: [{ type: Input }],\n starTemplate: [{ type: Input }],\n starTemplateFromContent: [{ type: ContentChild, args: [TemplateRef,] }],\n hover: [{ type: Output }],\n leave: [{ type: Output }],\n rateChange: [{ type: Output }]\n };\n return NgbRating;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbRatingModule = /** @class */ (function () {\n function NgbRatingModule() {\n }\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n */\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n NgbRatingModule.forRoot = /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n function () { return { ngModule: NgbRatingModule }; };\n NgbRatingModule.decorators = [\n { type: NgModule, args: [{ declarations: [NgbRating], exports: [NgbRating], imports: [CommonModule] },] }\n ];\n return NgbRatingModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbTabset`](#/components/tabset/api#NgbTabset) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the tabsets used in the application.\n */\nvar NgbTabsetConfig = /** @class */ (function () {\n function NgbTabsetConfig() {\n this.justify = 'start';\n this.orientation = 'horizontal';\n this.type = 'tabs';\n }\n NgbTabsetConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbTabsetConfig.ngInjectableDef = defineInjectable({ factory: function NgbTabsetConfig_Factory() { return new NgbTabsetConfig(); }, token: NgbTabsetConfig, providedIn: \"root\" });\n return NgbTabsetConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar nextId$4 = 0;\n/**\n * A directive to wrap tab titles that need to contain HTML markup or other directives.\n *\n * Alternatively you could use the `NgbTab.title` input for string titles.\n */\nvar NgbTabTitle = /** @class */ (function () {\n function NgbTabTitle(templateRef) {\n this.templateRef = templateRef;\n }\n NgbTabTitle.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbTabTitle]' },] }\n ];\n /** @nocollapse */\n NgbTabTitle.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbTabTitle;\n}());\n/**\n * A directive to wrap content to be displayed in a tab.\n */\nvar NgbTabContent = /** @class */ (function () {\n function NgbTabContent(templateRef) {\n this.templateRef = templateRef;\n }\n NgbTabContent.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbTabContent]' },] }\n ];\n /** @nocollapse */\n NgbTabContent.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbTabContent;\n}());\n/**\n * A directive representing an individual tab.\n */\nvar NgbTab = /** @class */ (function () {\n function NgbTab() {\n /**\n * The tab identifier.\n *\n * Must be unique for the entire document for proper accessibility support.\n */\n this.id = \"ngb-tab-\" + nextId$4++;\n /**\n * If `true`, the current tab is disabled and can't be toggled.\n */\n this.disabled = false;\n }\n /**\n * @return {?}\n */\n NgbTab.prototype.ngAfterContentChecked = /**\n * @return {?}\n */\n function () {\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n // only @ContentChildren allows us to specify the {descendants: false} option.\n // Without {descendants: false} we are hitting bugs described in:\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n this.titleTpl = this.titleTpls.first;\n this.contentTpl = this.contentTpls.first;\n };\n NgbTab.decorators = [\n { type: Directive, args: [{ selector: 'ngb-tab' },] }\n ];\n NgbTab.propDecorators = {\n id: [{ type: Input }],\n title: [{ type: Input }],\n disabled: [{ type: Input }],\n titleTpls: [{ type: ContentChildren, args: [NgbTabTitle, { descendants: false },] }],\n contentTpls: [{ type: ContentChildren, args: [NgbTabContent, { descendants: false },] }]\n };\n return NgbTab;\n}());\n/**\n * A component that makes it easy to create tabbed interface.\n */\nvar NgbTabset = /** @class */ (function () {\n function NgbTabset(config) {\n /**\n * If `true`, non-visible tabs content will be removed from DOM. Otherwise it will just be hidden.\n */\n this.destroyOnHide = true;\n /**\n * A tab change event emitted right before the tab change happens.\n *\n * See [`NgbTabChangeEvent`](#/components/tabset/api#NgbTabChangeEvent) for payload details.\n */\n this.tabChange = new EventEmitter();\n this.type = config.type;\n this.justify = config.justify;\n this.orientation = config.orientation;\n }\n Object.defineProperty(NgbTabset.prototype, \"justify\", {\n /**\n * The horizontal alignment of the tabs with flexbox utilities.\n */\n set: /**\n * The horizontal alignment of the tabs with flexbox utilities.\n * @param {?} className\n * @return {?}\n */\n function (className) {\n if (className === 'fill' || className === 'justified') {\n this.justifyClass = \"nav-\" + className;\n }\n else {\n this.justifyClass = \"justify-content-\" + className;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Selects the tab with the given id and shows its associated content panel.\n *\n * Any other tab that was previously selected becomes unselected and its associated pane is removed from DOM or\n * hidden depending on the `destroyOnHide` value.\n */\n /**\n * Selects the tab with the given id and shows its associated content panel.\n *\n * Any other tab that was previously selected becomes unselected and its associated pane is removed from DOM or\n * hidden depending on the `destroyOnHide` value.\n * @param {?} tabId\n * @return {?}\n */\n NgbTabset.prototype.select = /**\n * Selects the tab with the given id and shows its associated content panel.\n *\n * Any other tab that was previously selected becomes unselected and its associated pane is removed from DOM or\n * hidden depending on the `destroyOnHide` value.\n * @param {?} tabId\n * @return {?}\n */\n function (tabId) {\n /** @type {?} */\n var selectedTab = this._getTabById(tabId);\n if (selectedTab && !selectedTab.disabled && this.activeId !== selectedTab.id) {\n /** @type {?} */\n var defaultPrevented_1 = false;\n this.tabChange.emit({ activeId: this.activeId, nextId: selectedTab.id, preventDefault: function () { defaultPrevented_1 = true; } });\n if (!defaultPrevented_1) {\n this.activeId = selectedTab.id;\n }\n }\n };\n /**\n * @return {?}\n */\n NgbTabset.prototype.ngAfterContentChecked = /**\n * @return {?}\n */\n function () {\n // auto-correct activeId that might have been set incorrectly as input\n /** @type {?} */\n var activeTab = this._getTabById(this.activeId);\n this.activeId = activeTab ? activeTab.id : (this.tabs.length ? this.tabs.first.id : null);\n };\n /**\n * @param {?} id\n * @return {?}\n */\n NgbTabset.prototype._getTabById = /**\n * @param {?} id\n * @return {?}\n */\n function (id) {\n /** @type {?} */\n var tabsWithId = this.tabs.filter(function (tab) { return tab.id === id; });\n return tabsWithId.length ? tabsWithId[0] : null;\n };\n NgbTabset.decorators = [\n { type: Component, args: [{\n selector: 'ngb-tabset',\n exportAs: 'ngbTabset',\n template: \"\\n \\n
\\n \\n \\n \\n
\\n \\n \\n \"\n }] }\n ];\n /** @nocollapse */\n NgbTabset.ctorParameters = function () { return [\n { type: NgbTabsetConfig }\n ]; };\n NgbTabset.propDecorators = {\n tabs: [{ type: ContentChildren, args: [NgbTab,] }],\n activeId: [{ type: Input }],\n destroyOnHide: [{ type: Input }],\n justify: [{ type: Input }],\n orientation: [{ type: Input }],\n type: [{ type: Input }],\n tabChange: [{ type: Output }]\n };\n return NgbTabset;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_TABSET_DIRECTIVES = [NgbTabset, NgbTab, NgbTabContent, NgbTabTitle];\nvar NgbTabsetModule = /** @class */ (function () {\n function NgbTabsetModule() {\n }\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n */\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n NgbTabsetModule.forRoot = /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n function () { return { ngModule: NgbTabsetModule }; };\n NgbTabsetModule.decorators = [\n { type: NgModule, args: [{ declarations: NGB_TABSET_DIRECTIVES, exports: NGB_TABSET_DIRECTIVES, imports: [CommonModule] },] }\n ];\n return NgbTabsetModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbTime = /** @class */ (function () {\n function NgbTime(hour, minute, second) {\n this.hour = toInteger(hour);\n this.minute = toInteger(minute);\n this.second = toInteger(second);\n }\n /**\n * @param {?=} step\n * @return {?}\n */\n NgbTime.prototype.changeHour = /**\n * @param {?=} step\n * @return {?}\n */\n function (step) {\n if (step === void 0) { step = 1; }\n this.updateHour((isNaN(this.hour) ? 0 : this.hour) + step);\n };\n /**\n * @param {?} hour\n * @return {?}\n */\n NgbTime.prototype.updateHour = /**\n * @param {?} hour\n * @return {?}\n */\n function (hour) {\n if (isNumber(hour)) {\n this.hour = (hour < 0 ? 24 + hour : hour) % 24;\n }\n else {\n this.hour = NaN;\n }\n };\n /**\n * @param {?=} step\n * @return {?}\n */\n NgbTime.prototype.changeMinute = /**\n * @param {?=} step\n * @return {?}\n */\n function (step) {\n if (step === void 0) { step = 1; }\n this.updateMinute((isNaN(this.minute) ? 0 : this.minute) + step);\n };\n /**\n * @param {?} minute\n * @return {?}\n */\n NgbTime.prototype.updateMinute = /**\n * @param {?} minute\n * @return {?}\n */\n function (minute) {\n if (isNumber(minute)) {\n this.minute = minute % 60 < 0 ? 60 + minute % 60 : minute % 60;\n this.changeHour(Math.floor(minute / 60));\n }\n else {\n this.minute = NaN;\n }\n };\n /**\n * @param {?=} step\n * @return {?}\n */\n NgbTime.prototype.changeSecond = /**\n * @param {?=} step\n * @return {?}\n */\n function (step) {\n if (step === void 0) { step = 1; }\n this.updateSecond((isNaN(this.second) ? 0 : this.second) + step);\n };\n /**\n * @param {?} second\n * @return {?}\n */\n NgbTime.prototype.updateSecond = /**\n * @param {?} second\n * @return {?}\n */\n function (second) {\n if (isNumber(second)) {\n this.second = second < 0 ? 60 + second % 60 : second % 60;\n this.changeMinute(Math.floor(second / 60));\n }\n else {\n this.second = NaN;\n }\n };\n /**\n * @param {?=} checkSecs\n * @return {?}\n */\n NgbTime.prototype.isValid = /**\n * @param {?=} checkSecs\n * @return {?}\n */\n function (checkSecs) {\n if (checkSecs === void 0) { checkSecs = true; }\n return isNumber(this.hour) && isNumber(this.minute) && (checkSecs ? isNumber(this.second) : true);\n };\n /**\n * @return {?}\n */\n NgbTime.prototype.toString = /**\n * @return {?}\n */\n function () { return (this.hour || 0) + \":\" + (this.minute || 0) + \":\" + (this.second || 0); };\n return NgbTime;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbTimepicker`](#/components/timepicker/api#NgbTimepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the timepickers used in the application.\n */\nvar NgbTimepickerConfig = /** @class */ (function () {\n function NgbTimepickerConfig() {\n this.meridian = false;\n this.spinners = true;\n this.seconds = false;\n this.hourStep = 1;\n this.minuteStep = 1;\n this.secondStep = 1;\n this.disabled = false;\n this.readonlyInputs = false;\n this.size = 'medium';\n }\n NgbTimepickerConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbTimepickerConfig.ngInjectableDef = defineInjectable({ factory: function NgbTimepickerConfig_Factory() { return new NgbTimepickerConfig(); }, token: NgbTimepickerConfig, providedIn: \"root\" });\n return NgbTimepickerConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * @return {?}\n */\nfunction NGB_DATEPICKER_TIME_ADAPTER_FACTORY() {\n return new NgbTimeStructAdapter();\n}\n/**\n * An abstract service that does the conversion between the internal timepicker `NgbTimeStruct` model and\n * any provided user time model `T`, ex. a string, a native date, etc.\n *\n * The adapter is used **only** for conversion when binding timepicker to a form control,\n * ex. `[(ngModel)]=\"userTimeModel\"`. Here `userTimeModel` can be of any type.\n *\n * The default timepicker implementation assumes we use `NgbTimeStruct` as a user model.\n *\n * See the [custom time adapter demo](#/components/timepicker/examples#adapter) for an example.\n *\n * \\@since 2.2.0\n * @abstract\n * @template T\n */\nvar NgbTimeAdapter = /** @class */ (function () {\n function NgbTimeAdapter() {\n }\n NgbTimeAdapter.decorators = [\n { type: Injectable, args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY },] }\n ];\n /** @nocollapse */ NgbTimeAdapter.ngInjectableDef = defineInjectable({ factory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY, token: NgbTimeAdapter, providedIn: \"root\" });\n return NgbTimeAdapter;\n}());\nvar NgbTimeStructAdapter = /** @class */ (function (_super) {\n __extends(NgbTimeStructAdapter, _super);\n function NgbTimeStructAdapter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n */\n /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n * @param {?} time\n * @return {?}\n */\n NgbTimeStructAdapter.prototype.fromModel = /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n * @param {?} time\n * @return {?}\n */\n function (time) {\n return (time && isInteger(time.hour) && isInteger(time.minute)) ?\n { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null } :\n null;\n };\n /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n */\n /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n * @param {?} time\n * @return {?}\n */\n NgbTimeStructAdapter.prototype.toModel = /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n * @param {?} time\n * @return {?}\n */\n function (time) {\n return (time && isInteger(time.hour) && isInteger(time.minute)) ?\n { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null } :\n null;\n };\n NgbTimeStructAdapter.decorators = [\n { type: Injectable }\n ];\n return NgbTimeStructAdapter;\n}(NgbTimeAdapter));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_TIMEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return NgbTimepicker; }),\n multi: true\n};\n/**\n * A directive that helps with wth picking hours, minutes and seconds.\n */\nvar NgbTimepicker = /** @class */ (function () {\n function NgbTimepicker(_config, _ngbTimeAdapter, _cd) {\n this._config = _config;\n this._ngbTimeAdapter = _ngbTimeAdapter;\n this._cd = _cd;\n this.onChange = function (_) { };\n this.onTouched = function () { };\n this.meridian = _config.meridian;\n this.spinners = _config.spinners;\n this.seconds = _config.seconds;\n this.hourStep = _config.hourStep;\n this.minuteStep = _config.minuteStep;\n this.secondStep = _config.secondStep;\n this.disabled = _config.disabled;\n this.readonlyInputs = _config.readonlyInputs;\n this.size = _config.size;\n }\n Object.defineProperty(NgbTimepicker.prototype, \"hourStep\", {\n get: /**\n * @return {?}\n */\n function () { return this._hourStep; },\n /**\n * The number of hours to add/subtract when clicking hour spinners.\n */\n set: /**\n * The number of hours to add/subtract when clicking hour spinners.\n * @param {?} step\n * @return {?}\n */\n function (step) {\n this._hourStep = isInteger(step) ? step : this._config.hourStep;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbTimepicker.prototype, \"minuteStep\", {\n get: /**\n * @return {?}\n */\n function () { return this._minuteStep; },\n /**\n * The number of minutes to add/subtract when clicking minute spinners.\n */\n set: /**\n * The number of minutes to add/subtract when clicking minute spinners.\n * @param {?} step\n * @return {?}\n */\n function (step) {\n this._minuteStep = isInteger(step) ? step : this._config.minuteStep;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbTimepicker.prototype, \"secondStep\", {\n get: /**\n * @return {?}\n */\n function () { return this._secondStep; },\n /**\n * The number of seconds to add/subtract when clicking second spinners.\n */\n set: /**\n * The number of seconds to add/subtract when clicking second spinners.\n * @param {?} step\n * @return {?}\n */\n function (step) {\n this._secondStep = isInteger(step) ? step : this._config.secondStep;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} value\n * @return {?}\n */\n NgbTimepicker.prototype.writeValue = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n /** @type {?} */\n var structValue = this._ngbTimeAdapter.fromModel(value);\n this.model = structValue ? new NgbTime(structValue.hour, structValue.minute, structValue.second) : new NgbTime();\n if (!this.seconds && (!structValue || !isNumber(structValue.second))) {\n this.model.second = 0;\n }\n this._cd.markForCheck();\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbTimepicker.prototype.registerOnChange = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this.onChange = fn; };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbTimepicker.prototype.registerOnTouched = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this.onTouched = fn; };\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n NgbTimepicker.prototype.setDisabledState = /**\n * @param {?} isDisabled\n * @return {?}\n */\n function (isDisabled) { this.disabled = isDisabled; };\n /**\n * @param {?} step\n * @return {?}\n */\n NgbTimepicker.prototype.changeHour = /**\n * @param {?} step\n * @return {?}\n */\n function (step) {\n this.model.changeHour(step);\n this.propagateModelChange();\n };\n /**\n * @param {?} step\n * @return {?}\n */\n NgbTimepicker.prototype.changeMinute = /**\n * @param {?} step\n * @return {?}\n */\n function (step) {\n this.model.changeMinute(step);\n this.propagateModelChange();\n };\n /**\n * @param {?} step\n * @return {?}\n */\n NgbTimepicker.prototype.changeSecond = /**\n * @param {?} step\n * @return {?}\n */\n function (step) {\n this.model.changeSecond(step);\n this.propagateModelChange();\n };\n /**\n * @param {?} newVal\n * @return {?}\n */\n NgbTimepicker.prototype.updateHour = /**\n * @param {?} newVal\n * @return {?}\n */\n function (newVal) {\n /** @type {?} */\n var isPM = this.model.hour >= 12;\n /** @type {?} */\n var enteredHour = toInteger(newVal);\n if (this.meridian && (isPM && enteredHour < 12 || !isPM && enteredHour === 12)) {\n this.model.updateHour(enteredHour + 12);\n }\n else {\n this.model.updateHour(enteredHour);\n }\n this.propagateModelChange();\n };\n /**\n * @param {?} newVal\n * @return {?}\n */\n NgbTimepicker.prototype.updateMinute = /**\n * @param {?} newVal\n * @return {?}\n */\n function (newVal) {\n this.model.updateMinute(toInteger(newVal));\n this.propagateModelChange();\n };\n /**\n * @param {?} newVal\n * @return {?}\n */\n NgbTimepicker.prototype.updateSecond = /**\n * @param {?} newVal\n * @return {?}\n */\n function (newVal) {\n this.model.updateSecond(toInteger(newVal));\n this.propagateModelChange();\n };\n /**\n * @return {?}\n */\n NgbTimepicker.prototype.toggleMeridian = /**\n * @return {?}\n */\n function () {\n if (this.meridian) {\n this.changeHour(12);\n }\n };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbTimepicker.prototype.formatHour = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n if (isNumber(value)) {\n if (this.meridian) {\n return padNumber(value % 12 === 0 ? 12 : value % 12);\n }\n else {\n return padNumber(value % 24);\n }\n }\n else {\n return padNumber(NaN);\n }\n };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbTimepicker.prototype.formatMinSec = /**\n * @param {?} value\n * @return {?}\n */\n function (value) { return padNumber(value); };\n Object.defineProperty(NgbTimepicker.prototype, \"isSmallSize\", {\n get: /**\n * @return {?}\n */\n function () { return this.size === 'small'; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbTimepicker.prototype, \"isLargeSize\", {\n get: /**\n * @return {?}\n */\n function () { return this.size === 'large'; },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} changes\n * @return {?}\n */\n NgbTimepicker.prototype.ngOnChanges = /**\n * @param {?} changes\n * @return {?}\n */\n function (changes) {\n if (changes['seconds'] && !this.seconds && this.model && !isNumber(this.model.second)) {\n this.model.second = 0;\n this.propagateModelChange(false);\n }\n };\n /**\n * @param {?=} touched\n * @return {?}\n */\n NgbTimepicker.prototype.propagateModelChange = /**\n * @param {?=} touched\n * @return {?}\n */\n function (touched) {\n if (touched === void 0) { touched = true; }\n if (touched) {\n this.onTouched();\n }\n if (this.model.isValid(this.seconds)) {\n this.onChange(this._ngbTimeAdapter.toModel({ hour: this.model.hour, minute: this.model.minute, second: this.model.second }));\n }\n else {\n this.onChange(this._ngbTimeAdapter.toModel(null));\n }\n };\n NgbTimepicker.decorators = [\n { type: Component, args: [{\n selector: 'ngb-timepicker',\n encapsulation: ViewEncapsulation.None,\n template: \"\\n
\\n
\\n
\\n \\n \\n \\n
\\n
:
\\n
\\n \\n \\n \\n
\\n
:
\\n
\\n \\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \",\n providers: [NGB_TIMEPICKER_VALUE_ACCESSOR],\n styles: [\"ngb-timepicker{font-size:1rem}.ngb-tp{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.ngb-tp-input-container{width:4em}.ngb-tp-chevron::before{border-style:solid;border-width:.29em .29em 0 0;content:'';display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;-webkit-transform:rotate(135deg);transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-meridian,.ngb-tp-minute,.ngb-tp-second{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.ngb-tp-spacer{width:1em;text-align:center}\"]\n }] }\n ];\n /** @nocollapse */\n NgbTimepicker.ctorParameters = function () { return [\n { type: NgbTimepickerConfig },\n { type: NgbTimeAdapter },\n { type: ChangeDetectorRef }\n ]; };\n NgbTimepicker.propDecorators = {\n meridian: [{ type: Input }],\n spinners: [{ type: Input }],\n seconds: [{ type: Input }],\n hourStep: [{ type: Input }],\n minuteStep: [{ type: Input }],\n secondStep: [{ type: Input }],\n readonlyInputs: [{ type: Input }],\n size: [{ type: Input }]\n };\n return NgbTimepicker;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbTimepickerModule = /** @class */ (function () {\n function NgbTimepickerModule() {\n }\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n */\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n NgbTimepickerModule.forRoot = /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n function () { return { ngModule: NgbTimepickerModule }; };\n NgbTimepickerModule.decorators = [\n { type: NgModule, args: [{ declarations: [NgbTimepicker], exports: [NgbTimepicker], imports: [CommonModule] },] }\n ];\n return NgbTimepickerModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbTooltip`](#/components/tooltip/api#NgbTooltip) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the tooltips used in the application.\n */\nvar NgbTooltipConfig = /** @class */ (function () {\n function NgbTooltipConfig() {\n this.autoClose = true;\n this.placement = 'auto';\n this.triggers = 'hover focus';\n this.disableTooltip = false;\n this.openDelay = 0;\n this.closeDelay = 0;\n }\n NgbTooltipConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbTooltipConfig.ngInjectableDef = defineInjectable({ factory: function NgbTooltipConfig_Factory() { return new NgbTooltipConfig(); }, token: NgbTooltipConfig, providedIn: \"root\" });\n return NgbTooltipConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar nextId$5 = 0;\nvar NgbTooltipWindow = /** @class */ (function () {\n function NgbTooltipWindow() {\n }\n NgbTooltipWindow.decorators = [\n { type: Component, args: [{\n selector: 'ngb-tooltip-window',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { '[class]': '\"tooltip show\" + (tooltipClass ? \" \" + tooltipClass : \"\")', 'role': 'tooltip', '[id]': 'id' },\n template: \"
\",\n styles: [\"ngb-tooltip-window.bs-tooltip-bottom .arrow,ngb-tooltip-window.bs-tooltip-top .arrow{left:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-bottom-left .arrow,ngb-tooltip-window.bs-tooltip-top-left .arrow{left:1em}ngb-tooltip-window.bs-tooltip-bottom-right .arrow,ngb-tooltip-window.bs-tooltip-top-right .arrow{left:auto;right:.8rem}ngb-tooltip-window.bs-tooltip-left .arrow,ngb-tooltip-window.bs-tooltip-right .arrow{top:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-left-top .arrow,ngb-tooltip-window.bs-tooltip-right-top .arrow{top:.4rem}ngb-tooltip-window.bs-tooltip-left-bottom .arrow,ngb-tooltip-window.bs-tooltip-right-bottom .arrow{top:auto;bottom:.4rem}\"]\n }] }\n ];\n NgbTooltipWindow.propDecorators = {\n id: [{ type: Input }],\n tooltipClass: [{ type: Input }]\n };\n return NgbTooltipWindow;\n}());\n/**\n * A lightweight and extensible directive for fancy tooltip creation.\n */\nvar NgbTooltip = /** @class */ (function () {\n function NgbTooltip(_elementRef, _renderer, injector, componentFactoryResolver, viewContainerRef, config, _ngZone, _document, _changeDetector, _applicationRef) {\n var _this = this;\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._document = _document;\n this._changeDetector = _changeDetector;\n this._applicationRef = _applicationRef;\n /**\n * An event emitted when the tooltip is shown. Contains no payload.\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the popover is hidden. Contains no payload.\n */\n this.hidden = new EventEmitter();\n this._ngbTooltipWindowId = \"ngb-tooltip-\" + nextId$5++;\n this.autoClose = config.autoClose;\n this.placement = config.placement;\n this.triggers = config.triggers;\n this.container = config.container;\n this.disableTooltip = config.disableTooltip;\n this.tooltipClass = config.tooltipClass;\n this.openDelay = config.openDelay;\n this.closeDelay = config.closeDelay;\n this._popupService = new PopupService(NgbTooltipWindow, injector, viewContainerRef, _renderer, componentFactoryResolver, _applicationRef);\n this._zoneSubscription = _ngZone.onStable.subscribe(function () {\n if (_this._windowRef) {\n positionElements(_this._elementRef.nativeElement, _this._windowRef.location.nativeElement, _this.placement, _this.container === 'body', 'bs-tooltip');\n }\n });\n }\n Object.defineProperty(NgbTooltip.prototype, \"ngbTooltip\", {\n get: /**\n * @return {?}\n */\n function () { return this._ngbTooltip; },\n /**\n * The string content or a `TemplateRef` for the content to be displayed in the tooltip.\n *\n * If the content if falsy, the tooltip won't open.\n */\n set: /**\n * The string content or a `TemplateRef` for the content to be displayed in the tooltip.\n *\n * If the content if falsy, the tooltip won't open.\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._ngbTooltip = value;\n if (!value && this._windowRef) {\n this.close();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Opens the tooltip.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the tooltip template when it is created.\n */\n /**\n * Opens the tooltip.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the tooltip template when it is created.\n * @param {?=} context\n * @return {?}\n */\n NgbTooltip.prototype.open = /**\n * Opens the tooltip.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the tooltip template when it is created.\n * @param {?=} context\n * @return {?}\n */\n function (context) {\n var _this = this;\n if (!this._windowRef && this._ngbTooltip && !this.disableTooltip) {\n this._windowRef = this._popupService.open(this._ngbTooltip, context);\n this._windowRef.instance.tooltipClass = this.tooltipClass;\n this._windowRef.instance.id = this._ngbTooltipWindowId;\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ngbTooltipWindowId);\n if (this.container === 'body') {\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n // We need to detect changes, because we don't know where .open() might be called from.\n // Ex. opening tooltip from one of lifecycle hooks that run after the CD\n // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n this._windowRef.changeDetectorRef.detectChanges();\n // We need to mark for check, because tooltip won't work inside the OnPush component.\n // Ex. when we use expression like `{{ tooltip.isOpen() : 'opened' : 'closed' }}`\n // inside the template of an OnPush component and we change the tooltip from\n // open -> closed, the expression in question won't be updated unless we explicitly\n // mark the parent component to be checked.\n this._windowRef.changeDetectorRef.markForCheck();\n ngbAutoClose(this._ngZone, this._document, this.autoClose, function () { return _this.close(); }, this.hidden, [this._windowRef.location.nativeElement]);\n this.shown.emit();\n }\n };\n /**\n * Closes the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n */\n /**\n * Closes the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n * @return {?}\n */\n NgbTooltip.prototype.close = /**\n * Closes the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n * @return {?}\n */\n function () {\n if (this._windowRef != null) {\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n this._popupService.close();\n this._windowRef = null;\n this.hidden.emit();\n this._changeDetector.markForCheck();\n }\n };\n /**\n * Toggles the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n */\n /**\n * Toggles the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n * @return {?}\n */\n NgbTooltip.prototype.toggle = /**\n * Toggles the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n * @return {?}\n */\n function () {\n if (this._windowRef) {\n this.close();\n }\n else {\n this.open();\n }\n };\n /**\n * Returns `true`, if the popover is currently shown.\n */\n /**\n * Returns `true`, if the popover is currently shown.\n * @return {?}\n */\n NgbTooltip.prototype.isOpen = /**\n * Returns `true`, if the popover is currently shown.\n * @return {?}\n */\n function () { return this._windowRef != null; };\n /**\n * @return {?}\n */\n NgbTooltip.prototype.ngOnInit = /**\n * @return {?}\n */\n function () {\n this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\n };\n /**\n * @return {?}\n */\n NgbTooltip.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n this.close();\n // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n if (this._unregisterListenersFn) {\n this._unregisterListenersFn();\n }\n this._zoneSubscription.unsubscribe();\n };\n NgbTooltip.decorators = [\n { type: Directive, args: [{ selector: '[ngbTooltip]', exportAs: 'ngbTooltip' },] }\n ];\n /** @nocollapse */\n NgbTooltip.ctorParameters = function () { return [\n { type: ElementRef },\n { type: Renderer2 },\n { type: Injector },\n { type: ComponentFactoryResolver },\n { type: ViewContainerRef },\n { type: NgbTooltipConfig },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ChangeDetectorRef },\n { type: ApplicationRef }\n ]; };\n NgbTooltip.propDecorators = {\n autoClose: [{ type: Input }],\n placement: [{ type: Input }],\n triggers: [{ type: Input }],\n container: [{ type: Input }],\n disableTooltip: [{ type: Input }],\n tooltipClass: [{ type: Input }],\n openDelay: [{ type: Input }],\n closeDelay: [{ type: Input }],\n shown: [{ type: Output }],\n hidden: [{ type: Output }],\n ngbTooltip: [{ type: Input }]\n };\n return NgbTooltip;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbTooltipModule = /** @class */ (function () {\n function NgbTooltipModule() {\n }\n /**\n * No need in forRoot anymore with tree-shakeable services\n *\n * @deprecated 3.0.0\n */\n /**\n * No need in forRoot anymore with tree-shakeable services\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n NgbTooltipModule.forRoot = /**\n * No need in forRoot anymore with tree-shakeable services\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n function () { return { ngModule: NgbTooltipModule }; };\n NgbTooltipModule.decorators = [\n { type: NgModule, args: [{ declarations: [NgbTooltip, NgbTooltipWindow], exports: [NgbTooltip], entryComponents: [NgbTooltipWindow] },] }\n ];\n return NgbTooltipModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A component that helps with text highlighting.\n *\n * If splits the `result` text into parts that contain the searched `term` and generates the HTML markup to simplify\n * highlighting:\n *\n * Ex. `result=\"Alaska\"` and `term=\"as\"` will produce `Alaska`.\n */\nvar NgbHighlight = /** @class */ (function () {\n function NgbHighlight() {\n /**\n * The CSS class for `` elements wrapping the `term` inside the `result`.\n */\n this.highlightClass = 'ngb-highlight';\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n NgbHighlight.prototype.ngOnChanges = /**\n * @param {?} changes\n * @return {?}\n */\n function (changes) {\n /** @type {?} */\n var resultStr = toString(this.result);\n if (!resultStr) {\n this.parts = [resultStr];\n return;\n }\n /** @type {?} */\n var resultTerms = Array.isArray(this.term) ? this.term.map(function (x) { return toString(x); }) : [toString(this.term)];\n resultTerms = resultTerms.filter(function (x) { return x; });\n if (!resultTerms.length) {\n this.parts = [resultStr];\n return;\n }\n /** @type {?} */\n var regexStr = \"(\" + resultTerms.map(function (x) { return regExpEscape(x); }).join('|') + \")\";\n this.parts = resultStr.split(new RegExp(regexStr, 'gmi'));\n };\n NgbHighlight.decorators = [\n { type: Component, args: [{\n selector: 'ngb-highlight',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: \"\" +\n \"{{part}}{{part}}\" +\n \"\",\n styles: [\".ngb-highlight{font-weight:700}\"]\n }] }\n ];\n NgbHighlight.propDecorators = {\n highlightClass: [{ type: Input }],\n result: [{ type: Input }],\n term: [{ type: Input }]\n };\n return NgbHighlight;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbTypeaheadWindow = /** @class */ (function () {\n function NgbTypeaheadWindow() {\n this.activeIdx = 0;\n /**\n * Flag indicating if the first row should be active initially\n */\n this.focusFirst = true;\n /**\n * A function used to format a given result before display. This function should return a formatted string without any\n * HTML markup\n */\n this.formatter = toString;\n /**\n * Event raised when user selects a particular result row\n */\n this.selectEvent = new EventEmitter();\n this.activeChangeEvent = new EventEmitter();\n }\n /**\n * @return {?}\n */\n NgbTypeaheadWindow.prototype.hasActive = /**\n * @return {?}\n */\n function () { return this.activeIdx > -1 && this.activeIdx < this.results.length; };\n /**\n * @return {?}\n */\n NgbTypeaheadWindow.prototype.getActive = /**\n * @return {?}\n */\n function () { return this.results[this.activeIdx]; };\n /**\n * @param {?} activeIdx\n * @return {?}\n */\n NgbTypeaheadWindow.prototype.markActive = /**\n * @param {?} activeIdx\n * @return {?}\n */\n function (activeIdx) {\n this.activeIdx = activeIdx;\n this._activeChanged();\n };\n /**\n * @return {?}\n */\n NgbTypeaheadWindow.prototype.next = /**\n * @return {?}\n */\n function () {\n if (this.activeIdx === this.results.length - 1) {\n this.activeIdx = this.focusFirst ? (this.activeIdx + 1) % this.results.length : -1;\n }\n else {\n this.activeIdx++;\n }\n this._activeChanged();\n };\n /**\n * @return {?}\n */\n NgbTypeaheadWindow.prototype.prev = /**\n * @return {?}\n */\n function () {\n if (this.activeIdx < 0) {\n this.activeIdx = this.results.length - 1;\n }\n else if (this.activeIdx === 0) {\n this.activeIdx = this.focusFirst ? this.results.length - 1 : -1;\n }\n else {\n this.activeIdx--;\n }\n this._activeChanged();\n };\n /**\n * @return {?}\n */\n NgbTypeaheadWindow.prototype.resetActive = /**\n * @return {?}\n */\n function () {\n this.activeIdx = this.focusFirst ? 0 : -1;\n this._activeChanged();\n };\n /**\n * @param {?} item\n * @return {?}\n */\n NgbTypeaheadWindow.prototype.select = /**\n * @param {?} item\n * @return {?}\n */\n function (item) { this.selectEvent.emit(item); };\n /**\n * @return {?}\n */\n NgbTypeaheadWindow.prototype.ngOnInit = /**\n * @return {?}\n */\n function () { this.resetActive(); };\n /**\n * @return {?}\n */\n NgbTypeaheadWindow.prototype._activeChanged = /**\n * @return {?}\n */\n function () {\n this.activeChangeEvent.emit(this.activeIdx >= 0 ? this.id + '-' + this.activeIdx : undefined);\n };\n NgbTypeaheadWindow.decorators = [\n { type: Component, args: [{\n selector: 'ngb-typeahead-window',\n exportAs: 'ngbTypeaheadWindow',\n host: { '(mousedown)': '$event.preventDefault()', 'class': 'dropdown-menu show', 'role': 'listbox', '[id]': 'id' },\n template: \"\\n \\n \\n \\n \\n \\n \\n \"\n }] }\n ];\n NgbTypeaheadWindow.propDecorators = {\n id: [{ type: Input }],\n focusFirst: [{ type: Input }],\n results: [{ type: Input }],\n term: [{ type: Input }],\n formatter: [{ type: Input }],\n resultTemplate: [{ type: Input }],\n selectEvent: [{ type: Output, args: ['select',] }],\n activeChangeEvent: [{ type: Output, args: ['activeChange',] }]\n };\n return NgbTypeaheadWindow;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar ARIA_LIVE_DELAY = new InjectionToken('live announcer delay', { providedIn: 'root', factory: ARIA_LIVE_DELAY_FACTORY });\n/**\n * @return {?}\n */\nfunction ARIA_LIVE_DELAY_FACTORY() {\n return 100;\n}\n/**\n * @param {?} document\n * @param {?=} lazyCreate\n * @return {?}\n */\nfunction getLiveElement(document, lazyCreate) {\n if (lazyCreate === void 0) { lazyCreate = false; }\n /** @type {?} */\n var element = (/** @type {?} */ (document.body.querySelector('#ngb-live')));\n if (element == null && lazyCreate) {\n element = document.createElement('div');\n element.setAttribute('id', 'ngb-live');\n element.setAttribute('aria-live', 'polite');\n element.setAttribute('aria-atomic', 'true');\n element.classList.add('sr-only');\n document.body.appendChild(element);\n }\n return element;\n}\nvar Live = /** @class */ (function () {\n function Live(_document, _delay) {\n this._document = _document;\n this._delay = _delay;\n }\n /**\n * @return {?}\n */\n Live.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n /** @type {?} */\n var element = getLiveElement(this._document);\n if (element) {\n element.parentElement.removeChild(element);\n }\n };\n /**\n * @param {?} message\n * @return {?}\n */\n Live.prototype.say = /**\n * @param {?} message\n * @return {?}\n */\n function (message) {\n /** @type {?} */\n var element = getLiveElement(this._document, true);\n /** @type {?} */\n var delay$$1 = this._delay;\n element.textContent = '';\n /** @type {?} */\n var setText = function () { return element.textContent = message; };\n if (delay$$1 === null) {\n setText();\n }\n else {\n setTimeout(setText, delay$$1);\n }\n };\n Live.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */\n Live.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [ARIA_LIVE_DELAY,] }] }\n ]; };\n /** @nocollapse */ Live.ngInjectableDef = defineInjectable({ factory: function Live_Factory() { return new Live(inject(DOCUMENT), inject(ARIA_LIVE_DELAY)); }, token: Live, providedIn: \"root\" });\n return Live;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbTypeahead`](#/components/typeahead/api#NgbTypeahead) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the typeaheads used in the application.\n */\nvar NgbTypeaheadConfig = /** @class */ (function () {\n function NgbTypeaheadConfig() {\n this.editable = true;\n this.focusFirst = true;\n this.showHint = false;\n this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n }\n NgbTypeaheadConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbTypeaheadConfig.ngInjectableDef = defineInjectable({ factory: function NgbTypeaheadConfig_Factory() { return new NgbTypeaheadConfig(); }, token: NgbTypeaheadConfig, providedIn: \"root\" });\n return NgbTypeaheadConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_TYPEAHEAD_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return NgbTypeahead; }),\n multi: true\n};\n/** @type {?} */\nvar nextWindowId = 0;\n/**\n * A directive providing a simple way of creating powerful typeaheads from any text input.\n */\nvar NgbTypeahead = /** @class */ (function () {\n function NgbTypeahead(_elementRef, _viewContainerRef, _renderer, _injector, componentFactoryResolver, config, ngZone, _live, _document, _ngZone, _changeDetector, _applicationRef) {\n var _this = this;\n this._elementRef = _elementRef;\n this._viewContainerRef = _viewContainerRef;\n this._renderer = _renderer;\n this._injector = _injector;\n this._live = _live;\n this._document = _document;\n this._ngZone = _ngZone;\n this._changeDetector = _changeDetector;\n this._applicationRef = _applicationRef;\n this._closed$ = new Subject();\n /**\n * The value for the `autocomplete` attribute for the `` element.\n *\n * Defaults to `\"off\"` to disable the native browser autocomplete, but you can override it if necessary.\n *\n * \\@since 2.1.0\n */\n this.autocomplete = 'off';\n /**\n * The preferred placement of the typeahead.\n *\n * Possible values are `\"top\"`, `\"top-left\"`, `\"top-right\"`, `\"bottom\"`, `\"bottom-left\"`,\n * `\"bottom-right\"`, `\"left\"`, `\"left-top\"`, `\"left-bottom\"`, `\"right\"`, `\"right-top\"`,\n * `\"right-bottom\"`\n *\n * Accepts an array of strings or a string with space separated possible values.\n *\n * The default order of preference is `\"bottom-left bottom-right top-left top-right\"`\n *\n * Please see the [positioning overview](#/positioning) for more details.\n */\n this.placement = 'bottom-left';\n /**\n * An event emitted right before an item is selected from the result list.\n *\n * Event payload is of type [`NgbTypeaheadSelectItemEvent`](#/components/typeahead/api#NgbTypeaheadSelectItemEvent).\n */\n this.selectItem = new EventEmitter();\n this.popupId = \"ngb-typeahead-\" + nextWindowId++;\n this._onTouched = function () { };\n this._onChange = function (_) { };\n this.container = config.container;\n this.editable = config.editable;\n this.focusFirst = config.focusFirst;\n this.showHint = config.showHint;\n this.placement = config.placement;\n this._valueChanges = fromEvent(_elementRef.nativeElement, 'input')\n .pipe(map(function ($event) { return ((/** @type {?} */ ($event.target))).value; }));\n this._resubscribeTypeahead = new BehaviorSubject(null);\n this._popupService = new PopupService(NgbTypeaheadWindow, _injector, _viewContainerRef, _renderer, componentFactoryResolver, _applicationRef);\n this._zoneSubscription = ngZone.onStable.subscribe(function () {\n if (_this.isPopupOpen()) {\n positionElements(_this._elementRef.nativeElement, _this._windowRef.location.nativeElement, _this.placement, _this.container === 'body');\n }\n });\n }\n /**\n * @return {?}\n */\n NgbTypeahead.prototype.ngOnInit = /**\n * @return {?}\n */\n function () {\n var _this = this;\n /** @type {?} */\n var inputValues$ = this._valueChanges.pipe(tap(function (value) {\n _this._inputValueBackup = _this.showHint ? value : null;\n if (_this.editable) {\n _this._onChange(value);\n }\n }));\n /** @type {?} */\n var results$ = inputValues$.pipe(this.ngbTypeahead);\n /** @type {?} */\n var processedResults$ = results$.pipe(tap(function () {\n if (!_this.editable) {\n _this._onChange(undefined);\n }\n }));\n /** @type {?} */\n var userInput$ = this._resubscribeTypeahead.pipe(switchMap(function () { return processedResults$; }));\n this._subscription = this._subscribeToUserInput(userInput$);\n };\n /**\n * @return {?}\n */\n NgbTypeahead.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n this._closePopup();\n this._unsubscribeFromUserInput();\n this._zoneSubscription.unsubscribe();\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbTypeahead.prototype.registerOnChange = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this._onChange = fn; };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbTypeahead.prototype.registerOnTouched = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this._onTouched = fn; };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbTypeahead.prototype.writeValue = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._writeInputValue(this._formatItemForInput(value));\n if (this.showHint) {\n this._inputValueBackup = value;\n }\n };\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n NgbTypeahead.prototype.setDisabledState = /**\n * @param {?} isDisabled\n * @return {?}\n */\n function (isDisabled) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n };\n /**\n * Dismisses typeahead popup window\n */\n /**\n * Dismisses typeahead popup window\n * @return {?}\n */\n NgbTypeahead.prototype.dismissPopup = /**\n * Dismisses typeahead popup window\n * @return {?}\n */\n function () {\n if (this.isPopupOpen()) {\n this._resubscribeTypeahead.next(null);\n this._closePopup();\n if (this.showHint && this._inputValueBackup !== null) {\n this._writeInputValue(this._inputValueBackup);\n }\n this._changeDetector.markForCheck();\n }\n };\n /**\n * Returns true if the typeahead popup window is displayed\n */\n /**\n * Returns true if the typeahead popup window is displayed\n * @return {?}\n */\n NgbTypeahead.prototype.isPopupOpen = /**\n * Returns true if the typeahead popup window is displayed\n * @return {?}\n */\n function () { return this._windowRef != null; };\n /**\n * @return {?}\n */\n NgbTypeahead.prototype.handleBlur = /**\n * @return {?}\n */\n function () {\n this._resubscribeTypeahead.next(null);\n this._onTouched();\n };\n /**\n * @param {?} event\n * @return {?}\n */\n NgbTypeahead.prototype.handleKeyDown = /**\n * @param {?} event\n * @return {?}\n */\n function (event) {\n if (!this.isPopupOpen()) {\n return;\n }\n // tslint:disable-next-line:deprecation\n switch (event.which) {\n case Key.ArrowDown:\n event.preventDefault();\n this._windowRef.instance.next();\n this._showHint();\n break;\n case Key.ArrowUp:\n event.preventDefault();\n this._windowRef.instance.prev();\n this._showHint();\n break;\n case Key.Enter:\n case Key.Tab:\n /** @type {?} */\n var result = this._windowRef.instance.getActive();\n if (isDefined(result)) {\n event.preventDefault();\n event.stopPropagation();\n this._selectResult(result);\n }\n this._closePopup();\n break;\n }\n };\n /**\n * @return {?}\n */\n NgbTypeahead.prototype._openPopup = /**\n * @return {?}\n */\n function () {\n var _this = this;\n if (!this.isPopupOpen()) {\n this._inputValueBackup = this._elementRef.nativeElement.value;\n this._windowRef = this._popupService.open();\n this._windowRef.instance.id = this.popupId;\n this._windowRef.instance.selectEvent.subscribe(function (result) { return _this._selectResultClosePopup(result); });\n this._windowRef.instance.activeChangeEvent.subscribe(function (activeId) { return _this.activeDescendant = activeId; });\n if (this.container === 'body') {\n window.document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n this._changeDetector.markForCheck();\n ngbAutoClose(this._ngZone, this._document, 'outside', function () { return _this.dismissPopup(); }, this._closed$, [this._elementRef.nativeElement, this._windowRef.location.nativeElement]);\n }\n };\n /**\n * @return {?}\n */\n NgbTypeahead.prototype._closePopup = /**\n * @return {?}\n */\n function () {\n this._closed$.next();\n this._popupService.close();\n this._windowRef = null;\n this.activeDescendant = undefined;\n };\n /**\n * @param {?} result\n * @return {?}\n */\n NgbTypeahead.prototype._selectResult = /**\n * @param {?} result\n * @return {?}\n */\n function (result) {\n /** @type {?} */\n var defaultPrevented = false;\n this.selectItem.emit({ item: result, preventDefault: function () { defaultPrevented = true; } });\n this._resubscribeTypeahead.next(null);\n if (!defaultPrevented) {\n this.writeValue(result);\n this._onChange(result);\n }\n };\n /**\n * @param {?} result\n * @return {?}\n */\n NgbTypeahead.prototype._selectResultClosePopup = /**\n * @param {?} result\n * @return {?}\n */\n function (result) {\n this._selectResult(result);\n this._closePopup();\n };\n /**\n * @return {?}\n */\n NgbTypeahead.prototype._showHint = /**\n * @return {?}\n */\n function () {\n if (this.showHint && this._windowRef.instance.hasActive() && this._inputValueBackup != null) {\n /** @type {?} */\n var userInputLowerCase = this._inputValueBackup.toLowerCase();\n /** @type {?} */\n var formattedVal = this._formatItemForInput(this._windowRef.instance.getActive());\n if (userInputLowerCase === formattedVal.substr(0, this._inputValueBackup.length).toLowerCase()) {\n this._writeInputValue(this._inputValueBackup + formattedVal.substr(this._inputValueBackup.length));\n this._elementRef.nativeElement['setSelectionRange'].apply(this._elementRef.nativeElement, [this._inputValueBackup.length, formattedVal.length]);\n }\n else {\n this._writeInputValue(formattedVal);\n }\n }\n };\n /**\n * @param {?} item\n * @return {?}\n */\n NgbTypeahead.prototype._formatItemForInput = /**\n * @param {?} item\n * @return {?}\n */\n function (item) {\n return item != null && this.inputFormatter ? this.inputFormatter(item) : toString(item);\n };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbTypeahead.prototype._writeInputValue = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', toString(value));\n };\n /**\n * @param {?} userInput$\n * @return {?}\n */\n NgbTypeahead.prototype._subscribeToUserInput = /**\n * @param {?} userInput$\n * @return {?}\n */\n function (userInput$) {\n var _this = this;\n return userInput$.subscribe(function (results) {\n if (!results || results.length === 0) {\n _this._closePopup();\n }\n else {\n _this._openPopup();\n _this._windowRef.instance.focusFirst = _this.focusFirst;\n _this._windowRef.instance.results = results;\n _this._windowRef.instance.term = _this._elementRef.nativeElement.value;\n if (_this.resultFormatter) {\n _this._windowRef.instance.formatter = _this.resultFormatter;\n }\n if (_this.resultTemplate) {\n _this._windowRef.instance.resultTemplate = _this.resultTemplate;\n }\n _this._windowRef.instance.resetActive();\n // The observable stream we are subscribing to might have async steps\n // and if a component containing typeahead is using the OnPush strategy\n // the change detection turn wouldn't be invoked automatically.\n _this._windowRef.changeDetectorRef.detectChanges();\n _this._showHint();\n }\n // live announcer\n /** @type {?} */\n var count = results ? results.length : 0;\n _this._live.say(count === 0 ? 'No results available' : count + \" result\" + (count === 1 ? '' : 's') + \" available\");\n });\n };\n /**\n * @return {?}\n */\n NgbTypeahead.prototype._unsubscribeFromUserInput = /**\n * @return {?}\n */\n function () {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n this._subscription = null;\n };\n NgbTypeahead.decorators = [\n { type: Directive, args: [{\n selector: 'input[ngbTypeahead]',\n exportAs: 'ngbTypeahead',\n host: {\n '(blur)': 'handleBlur()',\n '[class.open]': 'isPopupOpen()',\n '(keydown)': 'handleKeyDown($event)',\n '[autocomplete]': 'autocomplete',\n 'autocapitalize': 'off',\n 'autocorrect': 'off',\n 'role': 'combobox',\n 'aria-multiline': 'false',\n '[attr.aria-autocomplete]': 'showHint ? \"both\" : \"list\"',\n '[attr.aria-activedescendant]': 'activeDescendant',\n '[attr.aria-owns]': 'isPopupOpen() ? popupId : null',\n '[attr.aria-expanded]': 'isPopupOpen()'\n },\n providers: [NGB_TYPEAHEAD_VALUE_ACCESSOR]\n },] }\n ];\n /** @nocollapse */\n NgbTypeahead.ctorParameters = function () { return [\n { type: ElementRef },\n { type: ViewContainerRef },\n { type: Renderer2 },\n { type: Injector },\n { type: ComponentFactoryResolver },\n { type: NgbTypeaheadConfig },\n { type: NgZone },\n { type: Live },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: NgZone },\n { type: ChangeDetectorRef },\n { type: ApplicationRef }\n ]; };\n NgbTypeahead.propDecorators = {\n autocomplete: [{ type: Input }],\n container: [{ type: Input }],\n editable: [{ type: Input }],\n focusFirst: [{ type: Input }],\n inputFormatter: [{ type: Input }],\n ngbTypeahead: [{ type: Input }],\n resultFormatter: [{ type: Input }],\n resultTemplate: [{ type: Input }],\n showHint: [{ type: Input }],\n placement: [{ type: Input }],\n selectItem: [{ type: Output }]\n };\n return NgbTypeahead;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar NgbTypeaheadModule = /** @class */ (function () {\n function NgbTypeaheadModule() {\n }\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n */\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n NgbTypeaheadModule.forRoot = /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n function () { return { ngModule: NgbTypeaheadModule }; };\n NgbTypeaheadModule.decorators = [\n { type: NgModule, args: [{\n declarations: [NgbTypeahead, NgbHighlight, NgbTypeaheadWindow],\n exports: [NgbTypeahead, NgbHighlight],\n imports: [CommonModule],\n entryComponents: [NgbTypeaheadWindow]\n },] }\n ];\n return NgbTypeaheadModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_MODULES = [\n NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule,\n NgbDropdownModule, NgbModalModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule,\n NgbTabsetModule, NgbTimepickerModule, NgbTooltipModule, NgbTypeaheadModule\n];\nvar NgbModule = /** @class */ (function () {\n function NgbModule() {\n }\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n */\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n NgbModule.forRoot = /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n function () { return { ngModule: NgbModule }; };\n NgbModule.decorators = [\n { type: NgModule, args: [{ imports: NGB_MODULES, exports: NGB_MODULES },] }\n ];\n return NgbModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n\nexport { NgbAccordionModule, NgbAccordionConfig, NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle, NgbAlertModule, NgbAlertConfig, NgbAlert, NgbButtonsModule, NgbButtonLabel, NgbCheckBox, NgbRadio, NgbRadioGroup, NgbCarouselModule, NgbCarouselConfig, NgbCarousel, NgbSlide, NgbCollapseModule, NgbCollapse, NgbCalendar, NgbCalendarGregorian, NgbCalendarIslamicCivil, NgbCalendarIslamicUmalqura, NgbCalendarHebrew, NgbCalendarPersian, NgbDatepickerModule, NgbDatepickerI18n, NgbDatepickerI18nHebrew, NgbDatepickerConfig, NgbDate, NgbDateParserFormatter, NgbDateAdapter, NgbDateNativeAdapter, NgbDateNativeUTCAdapter, NgbDatepicker, NgbInputDatepicker, NgbDropdownModule, NgbDropdownAnchor, NgbDropdownConfig, NgbDropdownItem, NgbDropdownMenu, NgbDropdownToggle, NgbDropdown, NgbModalModule, NgbModal, NgbModalConfig, NgbActiveModal, NgbModalRef, ModalDismissReasons, NgbPaginationModule, NgbPaginationConfig, NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPrevious, NgbPopoverModule, NgbPopoverConfig, NgbPopover, NgbProgressbarModule, NgbProgressbarConfig, NgbProgressbar, NgbRatingModule, NgbRatingConfig, NgbRating, NgbTabsetModule, NgbTabsetConfig, NgbTabset, NgbTab, NgbTabContent, NgbTabTitle, NgbTimepickerModule, NgbTimepickerConfig, NgbTimepicker, NgbTimeAdapter, NgbTooltipModule, NgbTooltipConfig, NgbTooltip, NgbHighlight, NgbTypeaheadModule, NgbTypeaheadConfig, NgbTypeahead, NgbModule, NGB_CAROUSEL_DIRECTIVES as ɵa, NGB_DATEPICKER_DATE_ADAPTER_FACTORY as ɵi, NgbDateStructAdapter as ɵj, NgbDatepickerDayView as ɵd, NGB_DATEPICKER_18N_FACTORY as ɵg, NgbDatepickerI18nDefault as ɵh, NgbDatepickerKeyMapService as ɵt, NgbDatepickerMonthView as ɵc, NgbDatepickerNavigation as ɵe, NgbDatepickerNavigationSelect as ɵf, NgbDatepickerService as ɵs, NgbCalendarHijri as ɵbb, NGB_DATEPICKER_CALENDAR_FACTORY as ɵb, NGB_DATEPICKER_PARSER_FORMATTER_FACTORY as ɵk, NgbDateISOParserFormatter as ɵl, NgbNavbar as ɵm, NgbModalBackdrop as ɵu, NgbModalStack as ɵw, NgbModalWindow as ɵv, NgbPopoverWindow as ɵn, NGB_DATEPICKER_TIME_ADAPTER_FACTORY as ɵo, NgbTimeStructAdapter as ɵp, NgbTooltipWindow as ɵq, NgbTypeaheadWindow as ɵr, ARIA_LIVE_DELAY as ɵy, ARIA_LIVE_DELAY_FACTORY as ɵz, Live as ɵba, ContentRef as ɵbc, ScrollBar as ɵx };\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYm9vdHN0cmFwLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC91dGlsL3V0aWwudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2FjY29yZGlvbi9hY2NvcmRpb24tY29uZmlnLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9hY2NvcmRpb24vYWNjb3JkaW9uLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9hY2NvcmRpb24vYWNjb3JkaW9uLm1vZHVsZS50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvYWxlcnQvYWxlcnQtY29uZmlnLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9hbGVydC9hbGVydC50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvYWxlcnQvYWxlcnQubW9kdWxlLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9idXR0b25zL2xhYmVsLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9idXR0b25zL2NoZWNrYm94LnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9idXR0b25zL3JhZGlvLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9idXR0b25zL2J1dHRvbnMubW9kdWxlLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9jYXJvdXNlbC9jYXJvdXNlbC1jb25maWcudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2Nhcm91c2VsL2Nhcm91c2VsLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9jYXJvdXNlbC9jYXJvdXNlbC5tb2R1bGUudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2NvbGxhcHNlL2NvbGxhcHNlLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9jb2xsYXBzZS9jb2xsYXBzZS5tb2R1bGUudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2RhdGVwaWNrZXIvbmdiLWRhdGUudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2RhdGVwaWNrZXIvbmdiLWNhbGVuZGFyLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9kYXRlcGlja2VyL2RhdGVwaWNrZXItdG9vbHMudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1pMThuLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9kYXRlcGlja2VyL2RhdGVwaWNrZXItc2VydmljZS50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvdXRpbC9rZXkudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1rZXltYXAtc2VydmljZS50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZGF0ZXBpY2tlci9kYXRlcGlja2VyLXZpZXctbW9kZWwudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1jb25maWcudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2RhdGVwaWNrZXIvYWRhcHRlcnMvbmdiLWRhdGUtYWRhcHRlci50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZGF0ZXBpY2tlci9kYXRlcGlja2VyLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9kYXRlcGlja2VyL2RhdGVwaWNrZXItbW9udGgtdmlldy50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZGF0ZXBpY2tlci9kYXRlcGlja2VyLW5hdmlnYXRpb24udHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL3V0aWwvYXV0b2Nsb3NlLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC91dGlsL2ZvY3VzLXRyYXAudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL3V0aWwvcG9zaXRpb25pbmcudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2RhdGVwaWNrZXIvbmdiLWRhdGUtcGFyc2VyLWZvcm1hdHRlci50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZGF0ZXBpY2tlci9kYXRlcGlja2VyLWlucHV0LnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9kYXRlcGlja2VyL2RhdGVwaWNrZXItZGF5LXZpZXcudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1uYXZpZ2F0aW9uLXNlbGVjdC50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZGF0ZXBpY2tlci9oaWpyaS9uZ2ItY2FsZW5kYXItaGlqcmkudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2RhdGVwaWNrZXIvaGlqcmkvbmdiLWNhbGVuZGFyLWlzbGFtaWMtY2l2aWwudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2RhdGVwaWNrZXIvaGlqcmkvbmdiLWNhbGVuZGFyLWlzbGFtaWMtdW1hbHF1cmEudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2RhdGVwaWNrZXIvamFsYWxpL2phbGFsaS50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZGF0ZXBpY2tlci9qYWxhbGkvbmdiLWNhbGVuZGFyLXBlcnNpYW4udHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2RhdGVwaWNrZXIvaGVicmV3L2hlYnJldy50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZGF0ZXBpY2tlci9oZWJyZXcvbmdiLWNhbGVuZGFyLWhlYnJldy50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZGF0ZXBpY2tlci9oZWJyZXcvZGF0ZXBpY2tlci1pMThuLWhlYnJldy50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZGF0ZXBpY2tlci9hZGFwdGVycy9uZ2ItZGF0ZS1uYXRpdmUtYWRhcHRlci50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZGF0ZXBpY2tlci9hZGFwdGVycy9uZ2ItZGF0ZS1uYXRpdmUtdXRjLWFkYXB0ZXIudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2Ryb3Bkb3duL2Ryb3Bkb3duLWNvbmZpZy50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZHJvcGRvd24vZHJvcGRvd24udHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2Ryb3Bkb3duL2Ryb3Bkb3duLm1vZHVsZS50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvbW9kYWwvbW9kYWwtY29uZmlnLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC91dGlsL3BvcHVwLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC91dGlsL3Njcm9sbGJhci50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvbW9kYWwvbW9kYWwtYmFja2Ryb3AudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL21vZGFsL21vZGFsLXJlZi50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvbW9kYWwvbW9kYWwtZGlzbWlzcy1yZWFzb25zLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9tb2RhbC9tb2RhbC13aW5kb3cudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL21vZGFsL21vZGFsLXN0YWNrLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9tb2RhbC9tb2RhbC50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvbW9kYWwvbW9kYWwubW9kdWxlLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9wYWdpbmF0aW9uL3BhZ2luYXRpb24tY29uZmlnLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9wYWdpbmF0aW9uL3BhZ2luYXRpb24udHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5tb2R1bGUudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL3V0aWwvdHJpZ2dlcnMudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL3BvcG92ZXIvcG9wb3Zlci1jb25maWcudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL3BvcG92ZXIvcG9wb3Zlci50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvcG9wb3Zlci9wb3BvdmVyLm1vZHVsZS50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvcHJvZ3Jlc3NiYXIvcHJvZ3Jlc3NiYXItY29uZmlnLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9wcm9ncmVzc2Jhci9wcm9ncmVzc2Jhci50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvcHJvZ3Jlc3NiYXIvcHJvZ3Jlc3NiYXIubW9kdWxlLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9yYXRpbmcvcmF0aW5nLWNvbmZpZy50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvcmF0aW5nL3JhdGluZy50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvcmF0aW5nL3JhdGluZy5tb2R1bGUudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL3RhYnNldC90YWJzZXQtY29uZmlnLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC90YWJzZXQvdGFic2V0LnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC90YWJzZXQvdGFic2V0Lm1vZHVsZS50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvdGltZXBpY2tlci9uZ2ItdGltZS50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvdGltZXBpY2tlci90aW1lcGlja2VyLWNvbmZpZy50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvdGltZXBpY2tlci9uZ2ItdGltZS1hZGFwdGVyLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC90aW1lcGlja2VyL3RpbWVwaWNrZXIudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL3RpbWVwaWNrZXIvdGltZXBpY2tlci5tb2R1bGUudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL3Rvb2x0aXAvdG9vbHRpcC1jb25maWcudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL3Rvb2x0aXAvdG9vbHRpcC50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvdG9vbHRpcC90b29sdGlwLm1vZHVsZS50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvdHlwZWFoZWFkL2hpZ2hsaWdodC50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvdHlwZWFoZWFkL3R5cGVhaGVhZC13aW5kb3cudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL3V0aWwvYWNjZXNzaWJpbGl0eS9saXZlLnRzIiwibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC90eXBlYWhlYWQvdHlwZWFoZWFkLWNvbmZpZy50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvdHlwZWFoZWFkL3R5cGVhaGVhZC50cyIsIm5nOi8vQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvdHlwZWFoZWFkL3R5cGVhaGVhZC5tb2R1bGUudHMiLCJuZzovL0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiB0b0ludGVnZXIodmFsdWU6IGFueSk6IG51bWJlciB7XG4gIHJldHVybiBwYXJzZUludChgJHt2YWx1ZX1gLCAxMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1N0cmluZyh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgcmV0dXJuICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKSA/IGAke3ZhbHVlfWAgOiAnJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlSW5SYW5nZSh2YWx1ZTogbnVtYmVyLCBtYXg6IG51bWJlciwgbWluID0gMCk6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLm1heChNYXRoLm1pbih2YWx1ZSwgbWF4KSwgbWluKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBudW1iZXIge1xuICByZXR1cm4gIWlzTmFOKHRvSW50ZWdlcih2YWx1ZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbnRlZ2VyKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBudW1iZXIge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBpc0Zpbml0ZSh2YWx1ZSkgJiYgTWF0aC5mbG9vcih2YWx1ZSkgPT09IHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEZWZpbmVkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYWROdW1iZXIodmFsdWU6IG51bWJlcikge1xuICBpZiAoaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgcmV0dXJuIGAwJHt2YWx1ZX1gLnNsaWNlKC0yKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ0V4cEVzY2FwZSh0ZXh0KSB7XG4gIHJldHVybiB0ZXh0LnJlcGxhY2UoL1stW1xcXXt9KCkqKz8uLFxcXFxeJHwjXFxzXS9nLCAnXFxcXCQmJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNDbGFzc05hbWUoZWxlbWVudDogYW55LCBjbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gZWxlbWVudCAmJiBlbGVtZW50LmNsYXNzTmFtZSAmJiBlbGVtZW50LmNsYXNzTmFtZS5zcGxpdCAmJlxuICAgICAgZWxlbWVudC5jbGFzc05hbWUuc3BsaXQoL1xccysvKS5pbmRleE9mKGNsYXNzTmFtZSkgPj0gMDtcbn1cblxuaWYgKHR5cGVvZiBFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiAhRWxlbWVudC5wcm90b3R5cGUuY2xvc2VzdCkge1xuICAvLyBQb2x5ZmlsbCBmb3IgaWUxMCtcblxuICBpZiAoIUVsZW1lbnQucHJvdG90eXBlLm1hdGNoZXMpIHtcbiAgICAvLyBJRSB1c2VzIHRoZSBub24tc3RhbmRhcmQgbmFtZTogbXNNYXRjaGVzU2VsZWN0b3JcbiAgICBFbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzID0gKEVsZW1lbnQucHJvdG90eXBlIGFzIGFueSkubXNNYXRjaGVzU2VsZWN0b3IgfHwgRWxlbWVudC5wcm90b3R5cGUud2Via2l0TWF0Y2hlc1NlbGVjdG9yO1xuICB9XG5cbiAgRWxlbWVudC5wcm90b3R5cGUuY2xvc2VzdCA9IGZ1bmN0aW9uKHM6IHN0cmluZykge1xuICAgIGxldCBlbCA9IHRoaXM7XG4gICAgaWYgKCFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY29udGFpbnMoZWwpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZG8ge1xuICAgICAgaWYgKGVsLm1hdGNoZXMocykpIHtcbiAgICAgICAgcmV0dXJuIGVsO1xuICAgICAgfVxuICAgICAgZWwgPSBlbC5wYXJlbnRFbGVtZW50IHx8IGVsLnBhcmVudE5vZGU7XG4gICAgfSB3aGlsZSAoZWwgIT09IG51bGwgJiYgZWwubm9kZVR5cGUgPT09IDEpO1xuICAgIHJldHVybiBudWxsO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VzdChlbGVtZW50OiBIVE1MRWxlbWVudCwgc2VsZWN0b3IpOiBIVE1MRWxlbWVudCB7XG4gIGlmICghc2VsZWN0b3IpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50LmNsb3Nlc3Qoc2VsZWN0b3IpO1xufVxuIiwiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBBIGNvbmZpZ3VyYXRpb24gc2VydmljZSBmb3IgdGhlIFtOZ2JBY2NvcmRpb25dKCMvY29tcG9uZW50cy9hY2NvcmRpb24vYXBpI05nYkFjY29yZGlvbikgY29tcG9uZW50LlxuICpcbiAqIFlvdSBjYW4gaW5qZWN0IHRoaXMgc2VydmljZSwgdHlwaWNhbGx5IGluIHlvdXIgcm9vdCBjb21wb25lbnQsIGFuZCBjdXN0b21pemUgaXRzIHByb3BlcnRpZXNcbiAqIHRvIHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCBhY2NvcmRpb25zIHVzZWQgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBOZ2JBY2NvcmRpb25Db25maWcge1xuICBjbG9zZU90aGVycyA9IGZhbHNlO1xuICB0eXBlOiBzdHJpbmc7XG59XG4iLCJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3QsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7aXNTdHJpbmd9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5cbmltcG9ydCB7TmdiQWNjb3JkaW9uQ29uZmlnfSBmcm9tICcuL2FjY29yZGlvbi1jb25maWcnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBUaGUgY29udGV4dCBmb3IgdGhlIFtOZ2JQYW5lbEhlYWRlcl0oIy9jb21wb25lbnRzL2FjY29yZGlvbi9hcGkjTmdiUGFuZWxIZWFkZXIpIHRlbXBsYXRlXG4gKlxuICogQHNpbmNlIDQuMS4wXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmdiUGFuZWxIZWFkZXJDb250ZXh0IHtcbiAgLyoqXG4gICAqIGBUcnVlYCBpZiBjdXJyZW50IHBhbmVsIGlzIG9wZW5lZFxuICAgKi9cbiAgb3BlbmVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRvIHB1dCBvbiBhIGJ1dHRvbiB0aGF0IHRvZ2dsZXMgcGFuZWwgb3BlbmluZyBhbmQgY2xvc2luZy5cbiAqXG4gKiBUbyBiZSB1c2VkIGluc2lkZSB0aGUgW2BOZ2JQYW5lbEhlYWRlcmBdKCMvY29tcG9uZW50cy9hY2NvcmRpb24vYXBpI05nYlBhbmVsSGVhZGVyKVxuICpcbiAqIEBzaW5jZSA0LjEuMFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdidXR0b25bbmdiUGFuZWxUb2dnbGVdJyxcbiAgaG9zdDoge1xuICAgICd0eXBlJzogJ2J1dHRvbicsXG4gICAgJ1tkaXNhYmxlZF0nOiAncGFuZWwuZGlzYWJsZWQnLFxuICAgICdbY2xhc3MuY29sbGFwc2VkXSc6ICchcGFuZWwuaXNPcGVuJyxcbiAgICAnW2F0dHIuYXJpYS1leHBhbmRlZF0nOiAncGFuZWwuaXNPcGVuJyxcbiAgICAnW2F0dHIuYXJpYS1jb250cm9sc10nOiAncGFuZWwuaWQnLFxuICAgICcoY2xpY2spJzogJ2FjY29yZGlvbi50b2dnbGUocGFuZWwuaWQpJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE5nYlBhbmVsVG9nZ2xlIHtcbiAgQElucHV0KClcbiAgc2V0IG5nYlBhbmVsVG9nZ2xlKHBhbmVsOiBOZ2JQYW5lbCkge1xuICAgIGlmIChwYW5lbCkge1xuICAgICAgdGhpcy5wYW5lbCA9IHBhbmVsO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE5nYkFjY29yZGlvbikpIHB1YmxpYyBhY2NvcmRpb246IE5nYkFjY29yZGlvbixcbiAgICAgIEBPcHRpb25hbCgpIEBIb3N0KCkgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE5nYlBhbmVsKSkgcHVibGljIHBhbmVsOiBOZ2JQYW5lbCkge31cbn1cblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0aGF0IHdyYXBzIGFuIGFjY29yZGlvbiBwYW5lbCBoZWFkZXIgd2l0aCBhbnkgSFRNTCBtYXJrdXAgYW5kIGEgdG9nZ2xpbmcgYnV0dG9uXG4gKiBtYXJrZWQgd2l0aCBbYE5nYlBhbmVsVG9nZ2xlYF0oIy9jb21wb25lbnRzL2FjY29yZGlvbi9hcGkjTmdiUGFuZWxUb2dnbGUpLlxuICogU2VlIHRoZSBbaGVhZGVyIGN1c3RvbWl6YXRpb24gZGVtb10oIy9jb21wb25lbnRzL2FjY29yZGlvbi9leGFtcGxlcyNoZWFkZXIpIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IGNhbiBhbHNvIHVzZSBbYE5nYlBhbmVsVGl0bGVgXSgjL2NvbXBvbmVudHMvYWNjb3JkaW9uL2FwaSNOZ2JQYW5lbFRpdGxlKSB0byBjdXN0b21pemUgb25seSB0aGUgcGFuZWwgdGl0bGUuXG4gKlxuICogQHNpbmNlIDQuMS4wXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbbmdiUGFuZWxIZWFkZXJdJ30pXG5leHBvcnQgY2xhc3MgTmdiUGFuZWxIZWFkZXIge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgdGhhdCB3cmFwcyBvbmx5IHRoZSBwYW5lbCB0aXRsZSB3aXRoIEhUTUwgbWFya3VwIGluc2lkZS5cbiAqXG4gKiBZb3UgY2FuIGFsc28gdXNlIFtgTmdiUGFuZWxIZWFkZXJgXSgjL2NvbXBvbmVudHMvYWNjb3JkaW9uL2FwaSNOZ2JQYW5lbEhlYWRlcikgdG8gY3VzdG9taXplIHRoZSBmdWxsIHBhbmVsIGhlYWRlci5cbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtuZ2JQYW5lbFRpdGxlXSd9KVxuZXhwb3J0IGNsYXNzIE5nYlBhbmVsVGl0bGUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgdGhhdCB3cmFwcyB0aGUgYWNjb3JkaW9uIHBhbmVsIGNvbnRlbnQuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbbmdiUGFuZWxDb250ZW50XSd9KVxuZXhwb3J0IGNsYXNzIE5nYlBhbmVsQ29udGVudCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0aGF0IHdyYXBzIGFuIGluZGl2aWR1YWwgYWNjb3JkaW9uIHBhbmVsIHdpdGggdGl0bGUgYW5kIGNvbGxhcHNpYmxlIGNvbnRlbnQuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmdiLXBhbmVsJ30pXG5leHBvcnQgY2xhc3MgTmdiUGFuZWwgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkIHtcbiAgLyoqXG4gICAqICBJZiBgdHJ1ZWAsIHRoZSBwYW5lbCBpcyBkaXNhYmxlZCBhbiBjYW4ndCBiZSB0b2dnbGVkLlxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogIEFuIG9wdGlvbmFsIGlkIGZvciB0aGUgcGFuZWwgdGhhdCBtdXN0IGJlIHVuaXF1ZSBvbiB0aGUgcGFnZS5cbiAgICpcbiAgICogIElmIG5vdCBwcm92aWRlZCwgaXQgd2lsbCBiZSBhdXRvLWdlbmVyYXRlZCBpbiB0aGUgYG5nYi1wYW5lbC14eHhgIGZvcm1hdC5cbiAgICovXG4gIEBJbnB1dCgpIGlkID0gYG5nYi1wYW5lbC0ke25leHRJZCsrfWA7XG5cbiAgaXNPcGVuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqICBUaGUgcGFuZWwgdGl0bGUuXG4gICAqXG4gICAqICBZb3UgY2FuIGFsdGVybmF0aXZlbHkgdXNlIFtgTmdiUGFuZWxUaXRsZWBdKCMvY29tcG9uZW50cy9hY2NvcmRpb24vYXBpI05nYlBhbmVsVGl0bGUpIHRvIHNldCBwYW5lbCB0aXRsZS5cbiAgICovXG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgdGhlIGN1cnJlbnQgcGFuZWwuXG4gICAqXG4gICAqIEJvb3RzdHJhcCBwcm92aWRlcyBzdHlsZXMgZm9yIHRoZSBmb2xsb3dpbmcgdHlwZXM6IGAnc3VjY2VzcydgLCBgJ2luZm8nYCwgYCd3YXJuaW5nJ2AsIGAnZGFuZ2VyJ2AsIGAncHJpbWFyeSdgLFxuICAgKiBgJ3NlY29uZGFyeSdgLCBgJ2xpZ2h0J2AgYW5kIGAnZGFyaydgLlxuICAgKi9cbiAgQElucHV0KCkgdHlwZTogc3RyaW5nO1xuXG4gIHRpdGxlVHBsOiBOZ2JQYW5lbFRpdGxlIHwgbnVsbDtcbiAgaGVhZGVyVHBsOiBOZ2JQYW5lbEhlYWRlciB8IG51bGw7XG4gIGNvbnRlbnRUcGw6IE5nYlBhbmVsQ29udGVudCB8IG51bGw7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihOZ2JQYW5lbFRpdGxlLCB7ZGVzY2VuZGFudHM6IGZhbHNlfSkgdGl0bGVUcGxzOiBRdWVyeUxpc3Q8TmdiUGFuZWxUaXRsZT47XG4gIEBDb250ZW50Q2hpbGRyZW4oTmdiUGFuZWxIZWFkZXIsIHtkZXNjZW5kYW50czogZmFsc2V9KSBoZWFkZXJUcGxzOiBRdWVyeUxpc3Q8TmdiUGFuZWxIZWFkZXI+O1xuICBAQ29udGVudENoaWxkcmVuKE5nYlBhbmVsQ29udGVudCwge2Rlc2NlbmRhbnRzOiBmYWxzZX0pIGNvbnRlbnRUcGxzOiBRdWVyeUxpc3Q8TmdiUGFuZWxDb250ZW50PjtcblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKSB7XG4gICAgLy8gV2UgYXJlIHVzaW5nIEBDb250ZW50Q2hpbGRyZW4gaW5zdGVhZCBvZiBAQ29udGVudENoaWxkIGFzIGluIHRoZSBBbmd1bGFyIHZlcnNpb24gYmVpbmcgdXNlZFxuICAgIC8vIG9ubHkgQENvbnRlbnRDaGlsZHJlbiBhbGxvd3MgdXMgdG8gc3BlY2lmeSB0aGUge2Rlc2NlbmRhbnRzOiBmYWxzZX0gb3B0aW9uLlxuICAgIC8vIFdpdGhvdXQge2Rlc2NlbmRhbnRzOiBmYWxzZX0gd2UgYXJlIGhpdHRpbmcgYnVncyBkZXNjcmliZWQgaW46XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvaXNzdWVzLzIyNDBcbiAgICB0aGlzLnRpdGxlVHBsID0gdGhpcy50aXRsZVRwbHMuZmlyc3Q7XG4gICAgdGhpcy5oZWFkZXJUcGwgPSB0aGlzLmhlYWRlclRwbHMuZmlyc3Q7XG4gICAgdGhpcy5jb250ZW50VHBsID0gdGhpcy5jb250ZW50VHBscy5maXJzdDtcbiAgfVxufVxuXG4vKipcbiAqIEFuIGV2ZW50IGVtaXR0ZWQgcmlnaHQgYmVmb3JlIHRvZ2dsaW5nIGFuIGFjY29yZGlvbiBwYW5lbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZ2JQYW5lbENoYW5nZUV2ZW50IHtcbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgYWNjb3JkaW9uIHBhbmVsIHRoYXQgaXMgYmVpbmcgdG9nZ2xlZC5cbiAgICovXG4gIHBhbmVsSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5leHQgc3RhdGUgb2YgdGhlIHBhbmVsLlxuICAgKlxuICAgKiBgdHJ1ZWAgaWYgaXQgd2lsbCBiZSBvcGVuZWQsIGBmYWxzZWAgaWYgY2xvc2VkLlxuICAgKi9cbiAgbmV4dFN0YXRlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBwcmV2ZW50IHBhbmVsIHRvZ2dsaW5nLlxuICAgKi9cbiAgcHJldmVudERlZmF1bHQ6ICgpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQWNjb3JkaW9uIGlzIGEgY29sbGVjdGlvbiBvZiBjb2xsYXBzaWJsZSBwYW5lbHMgKGJvb3RzdHJhcCBjYXJkcykuXG4gKlxuICogSXQgY2FuIGVuc3VyZSBvbmx5IG9uZSBwYW5lbCBpcyBvcGVuZWQgYXQgYSB0aW1lIGFuZCBhbGxvd3MgdG8gY3VzdG9taXplIHBhbmVsXG4gKiBoZWFkZXJzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ItYWNjb3JkaW9uJyxcbiAgZXhwb3J0QXM6ICduZ2JBY2NvcmRpb24nLFxuICBob3N0OiB7J2NsYXNzJzogJ2FjY29yZGlvbicsICdyb2xlJzogJ3RhYmxpc3QnLCAnW2F0dHIuYXJpYS1tdWx0aXNlbGVjdGFibGVdJzogJyFjbG9zZU90aGVyUGFuZWxzJ30sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLXRlbXBsYXRlICN0IG5nYlBhbmVsSGVhZGVyIGxldC1wYW5lbD5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpbmtcIiBbbmdiUGFuZWxUb2dnbGVdPVwicGFuZWxcIj5cbiAgICAgICAge3twYW5lbC50aXRsZX19PG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBhbmVsLnRpdGxlVHBsPy50ZW1wbGF0ZVJlZlwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtcGFuZWwgW25nRm9yT2ZdPVwicGFuZWxzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxuICAgICAgICA8ZGl2IHJvbGU9XCJ0YWJcIiBpZD1cInt7cGFuZWwuaWR9fS1oZWFkZXJcIiBbY2xhc3NdPVwiJ2NhcmQtaGVhZGVyICcgKyAocGFuZWwudHlwZSA/ICdiZy0nK3BhbmVsLnR5cGU6IHR5cGUgPyAnYmctJyt0eXBlIDogJycpXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBhbmVsLmhlYWRlclRwbD8udGVtcGxhdGVSZWYgfHwgdFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0OiBwYW5lbCwgb3BlbmVkOiBwYW5lbC5pc09wZW59XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJ7e3BhbmVsLmlkfX1cIiByb2xlPVwidGFicGFuZWxcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwicGFuZWwuaWQgKyAnLWhlYWRlcidcIlxuICAgICAgICAgICAgIGNsYXNzPVwiY29sbGFwc2VcIiBbY2xhc3Muc2hvd109XCJwYW5lbC5pc09wZW5cIiAqbmdJZj1cIiFkZXN0cm95T25IaWRlIHx8IHBhbmVsLmlzT3BlblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJwYW5lbC5jb250ZW50VHBsPy50ZW1wbGF0ZVJlZlwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBOZ2JBY2NvcmRpb24gaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkIHtcbiAgQENvbnRlbnRDaGlsZHJlbihOZ2JQYW5lbCkgcGFuZWxzOiBRdWVyeUxpc3Q8TmdiUGFuZWw+O1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvciBjb21tYSBzZXBhcmF0ZWQgc3RyaW5ncyBvZiBwYW5lbCBpZHMgdGhhdCBzaG91bGQgYmUgb3BlbmVkICoqaW5pdGlhbGx5KiouXG4gICAqXG4gICAqIEZvciBzdWJzZXF1ZW50IGNoYW5nZXMgdXNlIG1ldGhvZHMgbGlrZSBgZXhwYW5kKClgLCBgY29sbGFwc2UoKWAsIGV0Yy4gYW5kXG4gICAqIHRoZSBgKHBhbmVsQ2hhbmdlKWAgZXZlbnQuXG4gICAqL1xuICBASW5wdXQoKSBhY3RpdmVJZHM6IHN0cmluZyB8IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqICBJZiBgdHJ1ZWAsIG9ubHkgb25lIHBhbmVsIGNvdWxkIGJlIG9wZW5lZCBhdCBhIHRpbWUuXG4gICAqXG4gICAqICBPcGVuaW5nIGEgbmV3IHBhbmVsIHdpbGwgY2xvc2Ugb3RoZXJzLlxuICAgKi9cbiAgQElucHV0KCdjbG9zZU90aGVycycpIGNsb3NlT3RoZXJQYW5lbHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgcGFuZWwgY29udGVudCB3aWxsIGJlIGRldGFjaGVkIGZyb20gRE9NIGFuZCBub3Qgc2ltcGx5IGhpZGRlbiB3aGVuIHRoZSBwYW5lbCBpcyBjb2xsYXBzZWQuXG4gICAqL1xuICBASW5wdXQoKSBkZXN0cm95T25IaWRlID0gdHJ1ZTtcblxuICAvKipcbiAgICogVHlwZSBvZiBwYW5lbHMuXG4gICAqXG4gICAqIEJvb3RzdHJhcCBwcm92aWRlcyBzdHlsZXMgZm9yIHRoZSBmb2xsb3dpbmcgdHlwZXM6IGAnc3VjY2VzcydgLCBgJ2luZm8nYCwgYCd3YXJuaW5nJ2AsIGAnZGFuZ2VyJ2AsIGAncHJpbWFyeSdgLFxuICAgKiBgJ3NlY29uZGFyeSdgLCBgJ2xpZ2h0J2AgYW5kIGAnZGFyaydgLlxuICAgKi9cbiAgQElucHV0KCkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHJpZ2h0IGJlZm9yZSB0aGUgcGFuZWwgdG9nZ2xlIGhhcHBlbnMuXG4gICAqXG4gICAqIFNlZSBbTmdiUGFuZWxDaGFuZ2VFdmVudF0oIy9jb21wb25lbnRzL2FjY29yZGlvbi9hcGkjTmdiUGFuZWxDaGFuZ2VFdmVudCkgZm9yIHBheWxvYWQgZGV0YWlscy5cbiAgICovXG4gIEBPdXRwdXQoKSBwYW5lbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TmdiUGFuZWxDaGFuZ2VFdmVudD4oKTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IE5nYkFjY29yZGlvbkNvbmZpZykge1xuICAgIHRoaXMudHlwZSA9IGNvbmZpZy50eXBlO1xuICAgIHRoaXMuY2xvc2VPdGhlclBhbmVscyA9IGNvbmZpZy5jbG9zZU90aGVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBwYW5lbCB3aXRoIGEgZ2l2ZW4gaWQgaXMgZXhwYW5kZWQuXG4gICAqL1xuICBpc0V4cGFuZGVkKHBhbmVsSWQ6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5hY3RpdmVJZHMuaW5kZXhPZihwYW5lbElkKSA+IC0xOyB9XG5cbiAgLyoqXG4gICAqIEV4cGFuZHMgYSBwYW5lbCB3aXRoIGEgZ2l2ZW4gaWQuXG4gICAqXG4gICAqIEhhcyBubyBlZmZlY3QgaWYgdGhlIHBhbmVsIGlzIGFscmVhZHkgZXhwYW5kZWQgb3IgZGlzYWJsZWQuXG4gICAqL1xuICBleHBhbmQocGFuZWxJZDogc3RyaW5nKTogdm9pZCB7IHRoaXMuX2NoYW5nZU9wZW5TdGF0ZSh0aGlzLl9maW5kUGFuZWxCeUlkKHBhbmVsSWQpLCB0cnVlKTsgfVxuXG4gIC8qKlxuICAgKiBFeHBhbmRzIGFsbCBwYW5lbHMsIGlmIGBbY2xvc2VPdGhlcnNdYCBpcyBgZmFsc2VgLlxuICAgKlxuICAgKiBJZiBgW2Nsb3NlT3RoZXJzXWAgaXMgYHRydWVgLCBpdCB3aWxsIGV4cGFuZCB0aGUgZmlyc3QgcGFuZWwsIHVubGVzcyB0aGVyZSBpcyBhbHJlYWR5IGEgcGFuZWwgb3BlbmVkLlxuICAgKi9cbiAgZXhwYW5kQWxsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsb3NlT3RoZXJQYW5lbHMpIHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZUlkcy5sZW5ndGggPT09IDAgJiYgdGhpcy5wYW5lbHMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuX2NoYW5nZU9wZW5TdGF0ZSh0aGlzLnBhbmVscy5maXJzdCwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFuZWxzLmZvckVhY2gocGFuZWwgPT4gdGhpcy5fY2hhbmdlT3BlblN0YXRlKHBhbmVsLCB0cnVlKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbGxhcHNlcyBhIHBhbmVsIHdpdGggdGhlIGdpdmVuIGlkLlxuICAgKlxuICAgKiBIYXMgbm8gZWZmZWN0IGlmIHRoZSBwYW5lbCBpcyBhbHJlYWR5IGNvbGxhcHNlZCBvciBkaXNhYmxlZC5cbiAgICovXG4gIGNvbGxhcHNlKHBhbmVsSWQ6IHN0cmluZykgeyB0aGlzLl9jaGFuZ2VPcGVuU3RhdGUodGhpcy5fZmluZFBhbmVsQnlJZChwYW5lbElkKSwgZmFsc2UpOyB9XG5cbiAgLyoqXG4gICAqIENvbGxhcHNlcyBhbGwgb3BlbmVkIHBhbmVscy5cbiAgICovXG4gIGNvbGxhcHNlQWxsKCkge1xuICAgIHRoaXMucGFuZWxzLmZvckVhY2goKHBhbmVsKSA9PiB7IHRoaXMuX2NoYW5nZU9wZW5TdGF0ZShwYW5lbCwgZmFsc2UpOyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIGEgcGFuZWwgd2l0aCB0aGUgZ2l2ZW4gaWQuXG4gICAqXG4gICAqIEhhcyBubyBlZmZlY3QgaWYgdGhlIHBhbmVsIGlzIGRpc2FibGVkLlxuICAgKi9cbiAgdG9nZ2xlKHBhbmVsSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHBhbmVsID0gdGhpcy5fZmluZFBhbmVsQnlJZChwYW5lbElkKTtcbiAgICBpZiAocGFuZWwpIHtcbiAgICAgIHRoaXMuX2NoYW5nZU9wZW5TdGF0ZShwYW5lbCwgIXBhbmVsLmlzT3Blbik7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCkge1xuICAgIC8vIGFjdGl2ZSBpZCB1cGRhdGVzXG4gICAgaWYgKGlzU3RyaW5nKHRoaXMuYWN0aXZlSWRzKSkge1xuICAgICAgdGhpcy5hY3RpdmVJZHMgPSB0aGlzLmFjdGl2ZUlkcy5zcGxpdCgvXFxzKixcXHMqLyk7XG4gICAgfVxuXG4gICAgLy8gdXBkYXRlIHBhbmVscyBvcGVuIHN0YXRlc1xuICAgIHRoaXMucGFuZWxzLmZvckVhY2gocGFuZWwgPT4gcGFuZWwuaXNPcGVuID0gIXBhbmVsLmRpc2FibGVkICYmIHRoaXMuYWN0aXZlSWRzLmluZGV4T2YocGFuZWwuaWQpID4gLTEpO1xuXG4gICAgLy8gY2xvc2VPdGhlcnMgdXBkYXRlc1xuICAgIGlmICh0aGlzLmFjdGl2ZUlkcy5sZW5ndGggPiAxICYmIHRoaXMuY2xvc2VPdGhlclBhbmVscykge1xuICAgICAgdGhpcy5fY2xvc2VPdGhlcnModGhpcy5hY3RpdmVJZHNbMF0pO1xuICAgICAgdGhpcy5fdXBkYXRlQWN0aXZlSWRzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2hhbmdlT3BlblN0YXRlKHBhbmVsOiBOZ2JQYW5lbCwgbmV4dFN0YXRlOiBib29sZWFuKSB7XG4gICAgaWYgKHBhbmVsICYmICFwYW5lbC5kaXNhYmxlZCAmJiBwYW5lbC5pc09wZW4gIT09IG5leHRTdGF0ZSkge1xuICAgICAgbGV0IGRlZmF1bHRQcmV2ZW50ZWQgPSBmYWxzZTtcblxuICAgICAgdGhpcy5wYW5lbENoYW5nZS5lbWl0KFxuICAgICAgICAgIHtwYW5lbElkOiBwYW5lbC5pZCwgbmV4dFN0YXRlOiBuZXh0U3RhdGUsIHByZXZlbnREZWZhdWx0OiAoKSA9PiB7IGRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlOyB9fSk7XG5cbiAgICAgIGlmICghZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICBwYW5lbC5pc09wZW4gPSBuZXh0U3RhdGU7XG5cbiAgICAgICAgaWYgKG5leHRTdGF0ZSAmJiB0aGlzLmNsb3NlT3RoZXJQYW5lbHMpIHtcbiAgICAgICAgICB0aGlzLl9jbG9zZU90aGVycyhwYW5lbC5pZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdXBkYXRlQWN0aXZlSWRzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VPdGhlcnMocGFuZWxJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5wYW5lbHMuZm9yRWFjaChwYW5lbCA9PiB7XG4gICAgICBpZiAocGFuZWwuaWQgIT09IHBhbmVsSWQpIHtcbiAgICAgICAgcGFuZWwuaXNPcGVuID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9maW5kUGFuZWxCeUlkKHBhbmVsSWQ6IHN0cmluZyk6IE5nYlBhbmVsIHwgbnVsbCB7IHJldHVybiB0aGlzLnBhbmVscy5maW5kKHAgPT4gcC5pZCA9PT0gcGFuZWxJZCk7IH1cblxuICBwcml2YXRlIF91cGRhdGVBY3RpdmVJZHMoKSB7XG4gICAgdGhpcy5hY3RpdmVJZHMgPSB0aGlzLnBhbmVscy5maWx0ZXIocGFuZWwgPT4gcGFuZWwuaXNPcGVuICYmICFwYW5lbC5kaXNhYmxlZCkubWFwKHBhbmVsID0+IHBhbmVsLmlkKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtOZ2JBY2NvcmRpb24sIE5nYlBhbmVsLCBOZ2JQYW5lbFRpdGxlLCBOZ2JQYW5lbENvbnRlbnQsIE5nYlBhbmVsSGVhZGVyLCBOZ2JQYW5lbFRvZ2dsZX0gZnJvbSAnLi9hY2NvcmRpb24nO1xuXG5leHBvcnQge1xuICBOZ2JBY2NvcmRpb24sXG4gIE5nYlBhbmVsLFxuICBOZ2JQYW5lbFRpdGxlLFxuICBOZ2JQYW5lbENvbnRlbnQsXG4gIE5nYlBhbmVsQ2hhbmdlRXZlbnQsXG4gIE5nYlBhbmVsSGVhZGVyLFxuICBOZ2JQYW5lbEhlYWRlckNvbnRleHQsXG4gIE5nYlBhbmVsVG9nZ2xlXG59IGZyb20gJy4vYWNjb3JkaW9uJztcbmV4cG9ydCB7TmdiQWNjb3JkaW9uQ29uZmlnfSBmcm9tICcuL2FjY29yZGlvbi1jb25maWcnO1xuXG5jb25zdCBOR0JfQUNDT1JESU9OX0RJUkVDVElWRVMgPVxuICAgIFtOZ2JBY2NvcmRpb24sIE5nYlBhbmVsLCBOZ2JQYW5lbFRpdGxlLCBOZ2JQYW5lbENvbnRlbnQsIE5nYlBhbmVsSGVhZGVyLCBOZ2JQYW5lbFRvZ2dsZV07XG5cbkBOZ01vZHVsZSh7ZGVjbGFyYXRpb25zOiBOR0JfQUNDT1JESU9OX0RJUkVDVElWRVMsIGV4cG9ydHM6IE5HQl9BQ0NPUkRJT05fRElSRUNUSVZFUywgaW1wb3J0czogW0NvbW1vbk1vZHVsZV19KVxuZXhwb3J0IGNsYXNzIE5nYkFjY29yZGlvbk1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JBY2NvcmRpb25Nb2R1bGV9OyB9XG59XG4iLCJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBzZXJ2aWNlIGZvciB0aGUgW05nYkFsZXJ0XSgjL2NvbXBvbmVudHMvYWxlcnQvYXBpI05nYkFsZXJ0KSBjb21wb25lbnQuXG4gKlxuICogWW91IGNhbiBpbmplY3QgdGhpcyBzZXJ2aWNlLCB0eXBpY2FsbHkgaW4geW91ciByb290IGNvbXBvbmVudCwgYW5kIGN1c3RvbWl6ZSBpdHMgcHJvcGVydGllc1xuICogdG8gcHJvdmlkZSBkZWZhdWx0IHZhbHVlcyBmb3IgYWxsIGFsZXJ0cyB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTmdiQWxlcnRDb25maWcge1xuICBkaXNtaXNzaWJsZSA9IHRydWU7XG4gIHR5cGUgPSAnd2FybmluZyc7XG59XG4iLCJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIFJlbmRlcmVyMixcbiAgRWxlbWVudFJlZixcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge05nYkFsZXJ0Q29uZmlnfSBmcm9tICcuL2FsZXJ0LWNvbmZpZyc7XG5cbi8qKlxuICogQWxlcnQgaXMgYSBjb21wb25lbnQgdG8gcHJvdmlkZSBjb250ZXh0dWFsIGZlZWRiYWNrIG1lc3NhZ2VzIGZvciB1c2VyLlxuICpcbiAqIEl0IHN1cHBvcnRzIHNldmVyYWwgYWxlcnQgdHlwZXMgYW5kIGNhbiBiZSBkaXNtaXNzZWQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nYi1hbGVydCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7J3JvbGUnOiAnYWxlcnQnLCAnY2xhc3MnOiAnYWxlcnQnLCAnW2NsYXNzLmFsZXJ0LWRpc21pc3NpYmxlXSc6ICdkaXNtaXNzaWJsZSd9LFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8YnV0dG9uICpuZ0lmPVwiZGlzbWlzc2libGVcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGkxOG4tYXJpYS1sYWJlbD1cIkBAbmdiLmFsZXJ0LmNsb3NlXCJcbiAgICAgIChjbGljayk9XCJjbG9zZUhhbmRsZXIoKVwiPlxuICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICBgLFxuICBzdHlsZVVybHM6IFsnLi9hbGVydC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTmdiQWxlcnQgaW1wbGVtZW50cyBPbkluaXQsXG4gICAgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgYWxlcnQgY2FuIGJlIGRpc21pc3NlZCBieSB0aGUgdXNlci5cbiAgICpcbiAgICogVGhlIGNsb3NlIGJ1dHRvbiAow4PClykgd2lsbCBiZSBkaXNwbGF5ZWQgYW5kIHlvdSBjYW4gYmUgbm90aWZpZWRcbiAgICogb2YgdGhlIGV2ZW50IHdpdGggdGhlIGAoY2xvc2UpYCBvdXRwdXQuXG4gICAqL1xuICBASW5wdXQoKSBkaXNtaXNzaWJsZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFR5cGUgb2YgdGhlIGFsZXJ0LlxuICAgKlxuICAgKiBCb290c3RyYXAgcHJvdmlkZXMgc3R5bGVzIGZvciB0aGUgZm9sbG93aW5nIHR5cGVzOiBgJ3N1Y2Nlc3MnYCwgYCdpbmZvJ2AsIGAnd2FybmluZydgLCBgJ2RhbmdlcidgLCBgJ3ByaW1hcnknYCxcbiAgICogYCdzZWNvbmRhcnknYCwgYCdsaWdodCdgIGFuZCBgJ2RhcmsnYC5cbiAgICovXG4gIEBJbnB1dCgpIHR5cGU6IHN0cmluZztcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgY2xvc2UgYnV0dG9uIGlzIGNsaWNrZWQuIEl0IGhhcyBubyBwYXlsb2FkIGFuZCBvbmx5IHJlbGV2YW50IGZvciBkaXNtaXNzaWJsZSBhbGVydHMuXG4gICAqL1xuICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBOZ2JBbGVydENvbmZpZywgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZikge1xuICAgIHRoaXMuZGlzbWlzc2libGUgPSBjb25maWcuZGlzbWlzc2libGU7XG4gICAgdGhpcy50eXBlID0gY29uZmlnLnR5cGU7XG4gIH1cblxuICBjbG9zZUhhbmRsZXIoKSB7IHRoaXMuY2xvc2UuZW1pdChudWxsKTsgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCB0eXBlQ2hhbmdlID0gY2hhbmdlc1sndHlwZSddO1xuICAgIGlmICh0eXBlQ2hhbmdlICYmICF0eXBlQ2hhbmdlLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIGBhbGVydC0ke3R5cGVDaGFuZ2UucHJldmlvdXNWYWx1ZX1gKTtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwgYGFsZXJ0LSR7dHlwZUNoYW5nZS5jdXJyZW50VmFsdWV9YCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7IHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwgYGFsZXJ0LSR7dGhpcy50eXBlfWApOyB9XG59XG4iLCJpbXBvcnQge05nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQge05nYkFsZXJ0fSBmcm9tICcuL2FsZXJ0JztcblxuZXhwb3J0IHtOZ2JBbGVydH0gZnJvbSAnLi9hbGVydCc7XG5leHBvcnQge05nYkFsZXJ0Q29uZmlnfSBmcm9tICcuL2FsZXJ0LWNvbmZpZyc7XG5cbkBOZ01vZHVsZSh7ZGVjbGFyYXRpb25zOiBbTmdiQWxlcnRdLCBleHBvcnRzOiBbTmdiQWxlcnRdLCBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSwgZW50cnlDb21wb25lbnRzOiBbTmdiQWxlcnRdfSlcbmV4cG9ydCBjbGFzcyBOZ2JBbGVydE1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JBbGVydE1vZHVsZX07IH1cbn1cbiIsImltcG9ydCB7RGlyZWN0aXZlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25nYkJ1dHRvbkxhYmVsXScsXG4gIGhvc3Q6XG4gICAgICB7J1tjbGFzcy5idG5dJzogJ3RydWUnLCAnW2NsYXNzLmFjdGl2ZV0nOiAnYWN0aXZlJywgJ1tjbGFzcy5kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLCAnW2NsYXNzLmZvY3VzXSc6ICdmb2N1c2VkJ31cbn0pXG5leHBvcnQgY2xhc3MgTmdiQnV0dG9uTGFiZWwge1xuICBhY3RpdmU6IGJvb2xlYW47XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICBmb2N1c2VkOiBib29sZWFuO1xufVxuIiwiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBmb3J3YXJkUmVmLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge05nYkJ1dHRvbkxhYmVsfSBmcm9tICcuL2xhYmVsJztcblxuY29uc3QgTkdCX0NIRUNLQk9YX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmdiQ2hlY2tCb3gpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuXG4vKipcbiAqIEFsbG93cyB0byBlYXNpbHkgY3JlYXRlIEJvb3RzdHJhcC1zdHlsZSBjaGVja2JveCBidXR0b25zLlxuICpcbiAqIEludGVncmF0ZXMgd2l0aCBmb3Jtcywgc28gdGhlIHZhbHVlIG9mIGEgY2hlY2tlZCBidXR0b24gaXMgYm91bmQgdG8gdGhlIHVuZGVybHlpbmcgZm9ybSBjb250cm9sXG4gKiBlaXRoZXIgaW4gYSByZWFjdGl2ZSBvciB0ZW1wbGF0ZS1kcml2ZW4gd2F5LlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmdiQnV0dG9uXVt0eXBlPWNoZWNrYm94XScsXG4gIGhvc3Q6IHtcbiAgICAnYXV0b2NvbXBsZXRlJzogJ29mZicsXG4gICAgJ1tjaGVja2VkXSc6ICdjaGVja2VkJyxcbiAgICAnW2Rpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgJyhjaGFuZ2UpJzogJ29uSW5wdXRDaGFuZ2UoJGV2ZW50KScsXG4gICAgJyhmb2N1cyknOiAnZm9jdXNlZCA9IHRydWUnLFxuICAgICcoYmx1ciknOiAnZm9jdXNlZCA9IGZhbHNlJ1xuICB9LFxuICBwcm92aWRlcnM6IFtOR0JfQ0hFQ0tCT1hfVkFMVUVfQUNDRVNTT1JdXG59KVxuZXhwb3J0IGNsYXNzIE5nYkNoZWNrQm94IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBjaGVja2VkO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjaGVja2JveCBidXR0b24gd2lsbCBiZSBkaXNhYmxlZFxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGZvcm0gY29udHJvbCB2YWx1ZSB3aGVuIHRoZSBjaGVja2JveCBpcyBjaGVja2VkLlxuICAgKi9cbiAgQElucHV0KCkgdmFsdWVDaGVja2VkID0gdHJ1ZTtcblxuICAvKipcbiAgICogVGhlIGZvcm0gY29udHJvbCB2YWx1ZSB3aGVuIHRoZSBjaGVja2JveCBpcyB1bmNoZWNrZWQuXG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZVVuQ2hlY2tlZCA9IGZhbHNlO1xuXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIHNldCBmb2N1c2VkKGlzRm9jdXNlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX2xhYmVsLmZvY3VzZWQgPSBpc0ZvY3VzZWQ7XG4gICAgaWYgKCFpc0ZvY3VzZWQpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbGFiZWw6IE5nYkJ1dHRvbkxhYmVsLCBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgb25JbnB1dENoYW5nZSgkZXZlbnQpIHtcbiAgICBjb25zdCBtb2RlbFRvUHJvcGFnYXRlID0gJGV2ZW50LnRhcmdldC5jaGVja2VkID8gdGhpcy52YWx1ZUNoZWNrZWQgOiB0aGlzLnZhbHVlVW5DaGVja2VkO1xuICAgIHRoaXMub25DaGFuZ2UobW9kZWxUb1Byb3BhZ2F0ZSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLndyaXRlVmFsdWUobW9kZWxUb1Byb3BhZ2F0ZSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiBhbnkpOiB2b2lkIHsgdGhpcy5vblRvdWNoZWQgPSBmbjsgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuX2xhYmVsLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWUpIHtcbiAgICB0aGlzLmNoZWNrZWQgPSB2YWx1ZSA9PT0gdGhpcy52YWx1ZUNoZWNrZWQ7XG4gICAgdGhpcy5fbGFiZWwuYWN0aXZlID0gdGhpcy5jaGVja2VkO1xuXG4gICAgLy8gbGFiZWwgd29uJ3QgYmUgdXBkYXRlZCwgaWYgaXQgaXMgaW5zaWRlIHRoZSBPblB1c2ggY29tcG9uZW50IHdoZW4gW25nTW9kZWxdIGNoYW5nZXNcbiAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBJbnB1dCwgT25EZXN0cm95LCBSZW5kZXJlcjJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtOZ2JCdXR0b25MYWJlbH0gZnJvbSAnLi9sYWJlbCc7XG5cbmNvbnN0IE5HQl9SQURJT19WQUxVRV9BQ0NFU1NPUiA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE5nYlJhZGlvR3JvdXApLFxuICBtdWx0aTogdHJ1ZVxufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogQWxsb3dzIHRvIGVhc2lseSBjcmVhdGUgQm9vdHN0cmFwLXN0eWxlIHJhZGlvIGJ1dHRvbnMuXG4gKlxuICogSW50ZWdyYXRlcyB3aXRoIGZvcm1zLCBzbyB0aGUgdmFsdWUgb2YgYSBjaGVja2VkIGJ1dHRvbiBpcyBib3VuZCB0byB0aGUgdW5kZXJseWluZyBmb3JtIGNvbnRyb2xcbiAqIGVpdGhlciBpbiBhIHJlYWN0aXZlIG9yIHRlbXBsYXRlLWRyaXZlbiB3YXkuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnW25nYlJhZGlvR3JvdXBdJywgaG9zdDogeydyb2xlJzogJ3JhZGlvZ3JvdXAnfSwgcHJvdmlkZXJzOiBbTkdCX1JBRElPX1ZBTFVFX0FDQ0VTU09SXX0pXG5leHBvcnQgY2xhc3MgTmdiUmFkaW9Hcm91cCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgcHJpdmF0ZSBfcmFkaW9zOiBTZXQ8TmdiUmFkaW8+ID0gbmV3IFNldDxOZ2JSYWRpbz4oKTtcbiAgcHJpdmF0ZSBfdmFsdWUgPSBudWxsO1xuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbjtcblxuICBnZXQgZGlzYWJsZWQoKSB7IHJldHVybiB0aGlzLl9kaXNhYmxlZDsgfVxuICBzZXQgZGlzYWJsZWQoaXNEaXNhYmxlZDogYm9vbGVhbikgeyB0aGlzLnNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZCk7IH1cblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgcmFkaW8gZ3JvdXAgYXBwbGllZCB0byByYWRpbyBpbnB1dCBlbGVtZW50cy5cbiAgICpcbiAgICogV2lsbCBiZSBhcHBsaWVkIHRvIGFsbCByYWRpbyBpbnB1dCBlbGVtZW50cyBpbnNpZGUgdGhlIGdyb3VwLFxuICAgKiB1bmxlc3MgW2BOZ2JSYWRpb2BdKCMvY29tcG9uZW50cy9idXR0b25zL2FwaSNOZ2JSYWRpbykncyBzcGVjaWZ5IG5hbWVzIHRoZW1zZWx2ZXMuXG4gICAqXG4gICAqIElmIG5vdCBwcm92aWRlZCwgd2lsbCBiZSBnZW5lcmF0ZWQgaW4gdGhlIGBuZ2ItcmFkaW8teHhgIGZvcm1hdC5cbiAgICovXG4gIEBJbnB1dCgpIG5hbWUgPSBgbmdiLXJhZGlvLSR7bmV4dElkKyt9YDtcblxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICBvblJhZGlvQ2hhbmdlKHJhZGlvOiBOZ2JSYWRpbykge1xuICAgIHRoaXMud3JpdGVWYWx1ZShyYWRpby52YWx1ZSk7XG4gICAgdGhpcy5vbkNoYW5nZShyYWRpby52YWx1ZSk7XG4gIH1cblxuICBvblJhZGlvVmFsdWVVcGRhdGUoKSB7IHRoaXMuX3VwZGF0ZVJhZGlvc1ZhbHVlKCk7IH1cblxuICByZWdpc3RlcihyYWRpbzogTmdiUmFkaW8pIHsgdGhpcy5fcmFkaW9zLmFkZChyYWRpbyk7IH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiBhbnkpOiB2b2lkIHsgdGhpcy5vblRvdWNoZWQgPSBmbjsgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLl91cGRhdGVSYWRpb3NEaXNhYmxlZCgpO1xuICB9XG5cbiAgdW5yZWdpc3RlcihyYWRpbzogTmdiUmFkaW8pIHsgdGhpcy5fcmFkaW9zLmRlbGV0ZShyYWRpbyk7IH1cblxuICB3cml0ZVZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLl91cGRhdGVSYWRpb3NWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlUmFkaW9zVmFsdWUoKSB7IHRoaXMuX3JhZGlvcy5mb3JFYWNoKChyYWRpbykgPT4gcmFkaW8udXBkYXRlVmFsdWUodGhpcy5fdmFsdWUpKTsgfVxuICBwcml2YXRlIF91cGRhdGVSYWRpb3NEaXNhYmxlZCgpIHsgdGhpcy5fcmFkaW9zLmZvckVhY2goKHJhZGlvKSA9PiByYWRpby51cGRhdGVEaXNhYmxlZCgpKTsgfVxufVxuXG5cbi8qKlxuICogQSBkaXJlY3RpdmUgdGhhdCBtYXJrcyBhbiBpbnB1dCBvZiB0eXBlIFwicmFkaW9cIiBhcyBhIHBhcnQgb2YgdGhlXG4gKiBbYE5nYlJhZGlvR3JvdXBgXSgjL2NvbXBvbmVudHMvYnV0dG9ucy9hcGkjTmdiUmFkaW9Hcm91cCkuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ2JCdXR0b25dW3R5cGU9cmFkaW9dJyxcbiAgaG9zdDoge1xuICAgICdbY2hlY2tlZF0nOiAnY2hlY2tlZCcsXG4gICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICdbbmFtZV0nOiAnbmFtZUF0dHInLFxuICAgICcoY2hhbmdlKSc6ICdvbkNoYW5nZSgpJyxcbiAgICAnKGZvY3VzKSc6ICdmb2N1c2VkID0gdHJ1ZScsXG4gICAgJyhibHVyKSc6ICdmb2N1c2VkID0gZmFsc2UnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgTmdiUmFkaW8gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9jaGVja2VkOiBib29sZWFuO1xuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfdmFsdWU6IGFueSA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBmb3IgdGhlICduYW1lJyBwcm9wZXJ0eSBvZiB0aGUgaW5wdXQgZWxlbWVudC5cbiAgICpcbiAgICogQWxsIGlucHV0cyBvZiB0aGUgcmFkaW8gZ3JvdXAgc2hvdWxkIGhhdmUgdGhlIHNhbWUgbmFtZS4gSWYgbm90IHNwZWNpZmllZCxcbiAgICogdGhlIG5hbWUgb2YgdGhlIGVuY2xvc2luZyBncm91cCBpcyB1c2VkLlxuICAgKi9cbiAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9ybSBjb250cm9sIHZhbHVlIHdoZW4gY3VycmVudCByYWRpbyBidXR0b24gaXMgY2hlY2tlZC5cbiAgICovXG4gIEBJbnB1dCgndmFsdWUnKVxuICBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgY29uc3Qgc3RyaW5nVmFsdWUgPSB2YWx1ZSA/IHZhbHVlLnRvU3RyaW5nKCkgOiAnJztcbiAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsIHN0cmluZ1ZhbHVlKTtcbiAgICB0aGlzLl9ncm91cC5vblJhZGlvVmFsdWVVcGRhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGN1cnJlbnQgcmFkaW8gYnV0dG9uIHdpbGwgYmUgZGlzYWJsZWQuXG4gICAqL1xuICBASW5wdXQoJ2Rpc2FibGVkJylcbiAgc2V0IGRpc2FibGVkKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGlzRGlzYWJsZWQgIT09IGZhbHNlO1xuICAgIHRoaXMudXBkYXRlRGlzYWJsZWQoKTtcbiAgfVxuXG4gIHNldCBmb2N1c2VkKGlzRm9jdXNlZDogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLl9sYWJlbCkge1xuICAgICAgdGhpcy5fbGFiZWwuZm9jdXNlZCA9IGlzRm9jdXNlZDtcbiAgICB9XG4gICAgaWYgKCFpc0ZvY3VzZWQpIHtcbiAgICAgIHRoaXMuX2dyb3VwLm9uVG91Y2hlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBjaGVja2VkKCkgeyByZXR1cm4gdGhpcy5fY2hlY2tlZDsgfVxuXG4gIGdldCBkaXNhYmxlZCgpIHsgcmV0dXJuIHRoaXMuX2dyb3VwLmRpc2FibGVkIHx8IHRoaXMuX2Rpc2FibGVkOyB9XG5cbiAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gdGhpcy5fdmFsdWU7IH1cblxuICBnZXQgbmFtZUF0dHIoKSB7IHJldHVybiB0aGlzLm5hbWUgfHwgdGhpcy5fZ3JvdXAubmFtZTsgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBfZ3JvdXA6IE5nYlJhZGlvR3JvdXAsIHByaXZhdGUgX2xhYmVsOiBOZ2JCdXR0b25MYWJlbCwgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4sIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMuX2dyb3VwLnJlZ2lzdGVyKHRoaXMpO1xuICAgIHRoaXMudXBkYXRlRGlzYWJsZWQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkgeyB0aGlzLl9ncm91cC51bnJlZ2lzdGVyKHRoaXMpOyB9XG5cbiAgb25DaGFuZ2UoKSB7IHRoaXMuX2dyb3VwLm9uUmFkaW9DaGFuZ2UodGhpcyk7IH1cblxuICB1cGRhdGVWYWx1ZSh2YWx1ZSkge1xuICAgIC8vIGxhYmVsIHdvbid0IGJlIHVwZGF0ZWQsIGlmIGl0IGlzIGluc2lkZSB0aGUgT25QdXNoIGNvbXBvbmVudCB3aGVuIFtuZ01vZGVsXSBjaGFuZ2VzXG4gICAgaWYgKHRoaXMudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGVja2VkID0gdGhpcy52YWx1ZSA9PT0gdmFsdWU7XG4gICAgdGhpcy5fbGFiZWwuYWN0aXZlID0gdGhpcy5fY2hlY2tlZDtcbiAgfVxuXG4gIHVwZGF0ZURpc2FibGVkKCkgeyB0aGlzLl9sYWJlbC5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7IH1cbn1cbiIsImltcG9ydCB7TmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ2JCdXR0b25MYWJlbH0gZnJvbSAnLi9sYWJlbCc7XG5pbXBvcnQge05nYkNoZWNrQm94fSBmcm9tICcuL2NoZWNrYm94JztcbmltcG9ydCB7TmdiUmFkaW8sIE5nYlJhZGlvR3JvdXB9IGZyb20gJy4vcmFkaW8nO1xuXG5leHBvcnQge05nYkJ1dHRvbkxhYmVsfSBmcm9tICcuL2xhYmVsJztcbmV4cG9ydCB7TmdiQ2hlY2tCb3h9IGZyb20gJy4vY2hlY2tib3gnO1xuZXhwb3J0IHtOZ2JSYWRpbywgTmdiUmFkaW9Hcm91cH0gZnJvbSAnLi9yYWRpbyc7XG5cblxuY29uc3QgTkdCX0JVVFRPTl9ESVJFQ1RJVkVTID0gW05nYkJ1dHRvbkxhYmVsLCBOZ2JDaGVja0JveCwgTmdiUmFkaW9Hcm91cCwgTmdiUmFkaW9dO1xuXG5ATmdNb2R1bGUoe2RlY2xhcmF0aW9uczogTkdCX0JVVFRPTl9ESVJFQ1RJVkVTLCBleHBvcnRzOiBOR0JfQlVUVE9OX0RJUkVDVElWRVN9KVxuZXhwb3J0IGNsYXNzIE5nYkJ1dHRvbnNNb2R1bGUge1xuICAvKipcbiAgICogSW1wb3J0aW5nIHdpdGggJy5mb3JSb290KCknIGlzIG5vIGxvbmdlciBuZWNlc3NhcnksIHlvdSBjYW4gc2ltcGx5IGltcG9ydCB0aGUgbW9kdWxlLlxuICAgKiBXaWxsIGJlIHJlbW92ZWQgaW4gNC4wLjAuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIDMuMC4wXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHsgcmV0dXJuIHtuZ01vZHVsZTogTmdiQnV0dG9uc01vZHVsZX07IH1cbn1cbiIsImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQSBjb25maWd1cmF0aW9uIHNlcnZpY2UgZm9yIHRoZSBbTmdiQ2Fyb3VzZWxdKCMvY29tcG9uZW50cy9jYXJvdXNlbC9hcGkjTmdiQ2Fyb3VzZWwpIGNvbXBvbmVudC5cbiAqXG4gKiBZb3UgY2FuIGluamVjdCB0aGlzIHNlcnZpY2UsIHR5cGljYWxseSBpbiB5b3VyIHJvb3QgY29tcG9uZW50LCBhbmQgY3VzdG9taXplIGl0cyBwcm9wZXJ0aWVzXG4gKiB0byBwcm92aWRlIGRlZmF1bHQgdmFsdWVzIGZvciBhbGwgY2Fyb3VzZWxzIHVzZWQgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBOZ2JDYXJvdXNlbENvbmZpZyB7XG4gIGludGVydmFsID0gNTAwMDtcbiAgd3JhcCA9IHRydWU7XG4gIGtleWJvYXJkID0gdHJ1ZTtcbiAgcGF1c2VPbkhvdmVyID0gdHJ1ZTtcbiAgc2hvd05hdmlnYXRpb25BcnJvd3MgPSB0cnVlO1xuICBzaG93TmF2aWdhdGlvbkluZGljYXRvcnMgPSB0cnVlO1xufVxuIiwiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUExBVEZPUk1fSUQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2lzUGxhdGZvcm1Ccm93c2VyfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQge05nYkNhcm91c2VsQ29uZmlnfSBmcm9tICcuL2Nhcm91c2VsLWNvbmZpZyc7XG5cbmltcG9ydCB7bWVyZ2UsIFN1YmplY3QsIHRpbWVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRoYXQgd3JhcHMgdGhlIGluZGl2aWR1YWwgY2Fyb3VzZWwgc2xpZGUuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbbmdiU2xpZGVdJ30pXG5leHBvcnQgY2xhc3MgTmdiU2xpZGUge1xuICAvKipcbiAgICogU2xpZGUgaWQgdGhhdCBtdXN0IGJlIHVuaXF1ZSBmb3IgdGhlIGVudGlyZSBkb2N1bWVudC5cbiAgICpcbiAgICogSWYgbm90IHByb3ZpZGVkLCB3aWxsIGJlIGdlbmVyYXRlZCBpbiB0aGUgYG5nYi1zbGlkZS14eGAgZm9ybWF0LlxuICAgKi9cbiAgQElucHV0KCkgaWQgPSBgbmdiLXNsaWRlLSR7bmV4dElkKyt9YDtcbiAgY29uc3RydWN0b3IocHVibGljIHRwbFJlZjogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cblxuLyoqXG4gKiBDYXJvdXNlbCBpcyBhIGNvbXBvbmVudCB0byBlYXNpbHkgY3JlYXRlIGFuZCBjb250cm9sIHNsaWRlc2hvd3MuXG4gKlxuICogQWxsb3dzIHRvIHNldCBpbnRlcnZhbHMsIGNoYW5nZSB0aGUgd2F5IHVzZXIgaW50ZXJhY3RzIHdpdGggdGhlIHNsaWRlcyBhbmQgcHJvdmlkZXMgYSBwcm9ncmFtbWF0aWMgQVBJLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ItY2Fyb3VzZWwnLFxuICBleHBvcnRBczogJ25nYkNhcm91c2VsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnY2Fyb3VzZWwgc2xpZGUnLFxuICAgICdbc3R5bGUuZGlzcGxheV0nOiAnXCJibG9ja1wiJyxcbiAgICAndGFiSW5kZXgnOiAnMCcsXG4gICAgJyhtb3VzZWVudGVyKSc6ICdwYXVzZU9uSG92ZXIgJiYgcGF1c2UoKScsXG4gICAgJyhtb3VzZWxlYXZlKSc6ICdwYXVzZU9uSG92ZXIgJiYgY3ljbGUoKScsXG4gICAgJyhrZXlkb3duLmFycm93TGVmdCknOiAna2V5Ym9hcmQgJiYgcHJldigpJyxcbiAgICAnKGtleWRvd24uYXJyb3dSaWdodCknOiAna2V5Ym9hcmQgJiYgbmV4dCgpJ1xuICB9LFxuICB0ZW1wbGF0ZTogYFxuICAgIDxvbCBjbGFzcz1cImNhcm91c2VsLWluZGljYXRvcnNcIiAqbmdJZj1cInNob3dOYXZpZ2F0aW9uSW5kaWNhdG9yc1wiPlxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBzbGlkZSBvZiBzbGlkZXNcIiBbaWRdPVwic2xpZGUuaWRcIiBbY2xhc3MuYWN0aXZlXT1cInNsaWRlLmlkID09PSBhY3RpdmVJZFwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdChzbGlkZS5pZCk7IHBhdXNlT25Ib3ZlciAmJiBwYXVzZSgpXCI+PC9saT5cbiAgICA8L29sPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pbm5lclwiPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2xpZGUgb2Ygc2xpZGVzXCIgY2xhc3M9XCJjYXJvdXNlbC1pdGVtXCIgW2NsYXNzLmFjdGl2ZV09XCJzbGlkZS5pZCA9PT0gYWN0aXZlSWRcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNsaWRlLnRwbFJlZlwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8YSBjbGFzcz1cImNhcm91c2VsLWNvbnRyb2wtcHJldlwiIHJvbGU9XCJidXR0b25cIiAoY2xpY2spPVwicHJldigpXCIgKm5nSWY9XCJzaG93TmF2aWdhdGlvbkFycm93c1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjYXJvdXNlbC1jb250cm9sLXByZXYtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiIGkxOG49XCJAQG5nYi5jYXJvdXNlbC5wcmV2aW91c1wiPlByZXZpb3VzPC9zcGFuPlxuICAgIDwvYT5cbiAgICA8YSBjbGFzcz1cImNhcm91c2VsLWNvbnRyb2wtbmV4dFwiIHJvbGU9XCJidXR0b25cIiAoY2xpY2spPVwibmV4dCgpXCIgKm5nSWY9XCJzaG93TmF2aWdhdGlvbkFycm93c1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjYXJvdXNlbC1jb250cm9sLW5leHQtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiIGkxOG49XCJAQG5nYi5jYXJvdXNlbC5uZXh0XCI+TmV4dDwvc3Bhbj5cbiAgICA8L2E+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgTmdiQ2Fyb3VzZWwgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkLFxuICAgIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQENvbnRlbnRDaGlsZHJlbihOZ2JTbGlkZSkgc2xpZGVzOiBRdWVyeUxpc3Q8TmdiU2xpZGU+O1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfc3RhcnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfc3RvcCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBUaGUgc2xpZGUgaWQgdGhhdCBzaG91bGQgYmUgZGlzcGxheWVkICoqaW5pdGlhbGx5KiouXG4gICAqXG4gICAqIEZvciBzdWJzZXF1ZW50IGludGVyYWN0aW9ucyB1c2UgbWV0aG9kcyBgc2VsZWN0KClgLCBgbmV4dCgpYCwgZXRjLiBhbmQgdGhlIGAoc2xpZGUpYCBvdXRwdXQuXG4gICAqL1xuICBASW5wdXQoKSBhY3RpdmVJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaW1lIGluIG1pbGxpc2Vjb25kcyBiZWZvcmUgdGhlIG5leHQgc2xpZGUgaXMgc2hvd24uXG4gICAqL1xuICBASW5wdXQoKSBpbnRlcnZhbDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHdpbGwgJ3dyYXAnIHRoZSBjYXJvdXNlbCBieSBzd2l0Y2hpbmcgZnJvbSB0aGUgbGFzdCBzbGlkZSBiYWNrIHRvIHRoZSBmaXJzdC5cbiAgICovXG4gIEBJbnB1dCgpIHdyYXA6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgYWxsb3dzIHRvIGludGVyYWN0IHdpdGggY2Fyb3VzZWwgdXNpbmcga2V5Ym9hcmQgJ2Fycm93IGxlZnQnIGFuZCAnYXJyb3cgcmlnaHQnLlxuICAgKi9cbiAgQElucHV0KCkga2V5Ym9hcmQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgd2lsbCBwYXVzZSBzbGlkZSBzd2l0Y2hpbmcgd2hlbiBtb3VzZSBjdXJzb3IgaG92ZXJzIHRoZSBzbGlkZS5cbiAgICpcbiAgICogQHNpbmNlIDIuMi4wXG4gICAqL1xuICBASW5wdXQoKSBwYXVzZU9uSG92ZXI6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgJ3ByZXZpb3VzJyBhbmQgJ25leHQnIG5hdmlnYXRpb24gYXJyb3dzIHdpbGwgYmUgdmlzaWJsZSBvbiB0aGUgc2xpZGUuXG4gICAqXG4gICAqIEBzaW5jZSAyLjIuMFxuICAgKi9cbiAgQElucHV0KCkgc2hvd05hdmlnYXRpb25BcnJvd3M6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgbmF2aWdhdGlvbiBpbmRpY2F0b3JzIGF0IHRoZSBib3R0b20gb2YgdGhlIHNsaWRlIHdpbGwgYmUgdmlzaWJsZS5cbiAgICpcbiAgICogQHNpbmNlIDIuMi4wXG4gICAqL1xuICBASW5wdXQoKSBzaG93TmF2aWdhdGlvbkluZGljYXRvcnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZWQgcmlnaHQgYWZ0ZXIgdGhlIHNsaWRlIHRyYW5zaXRpb24gaXMgY29tcGxldGVkLlxuICAgKlxuICAgKiBTZWUgW2BOZ2JTbGlkZUV2ZW50YF0oIy9jb21wb25lbnRzL2Nhcm91c2VsL2FwaSNOZ2JTbGlkZUV2ZW50KSBmb3IgcGF5bG9hZCBkZXRhaWxzLlxuICAgKi9cbiAgQE91dHB1dCgpIHNsaWRlID0gbmV3IEV2ZW50RW1pdHRlcjxOZ2JTbGlkZUV2ZW50PigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgY29uZmlnOiBOZ2JDYXJvdXNlbENvbmZpZywgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBfcGxhdGZvcm1JZCwgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXG4gICAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB0aGlzLmludGVydmFsID0gY29uZmlnLmludGVydmFsO1xuICAgIHRoaXMud3JhcCA9IGNvbmZpZy53cmFwO1xuICAgIHRoaXMua2V5Ym9hcmQgPSBjb25maWcua2V5Ym9hcmQ7XG4gICAgdGhpcy5wYXVzZU9uSG92ZXIgPSBjb25maWcucGF1c2VPbkhvdmVyO1xuICAgIHRoaXMuc2hvd05hdmlnYXRpb25BcnJvd3MgPSBjb25maWcuc2hvd05hdmlnYXRpb25BcnJvd3M7XG4gICAgdGhpcy5zaG93TmF2aWdhdGlvbkluZGljYXRvcnMgPSBjb25maWcuc2hvd05hdmlnYXRpb25JbmRpY2F0b3JzO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIC8vIHNldEludGVydmFsKCkgZG9lc24ndCBwbGF5IHdlbGwgd2l0aCBTU1IgYW5kIHByb3RyYWN0b3IsXG4gICAgLy8gc28gd2Ugc2hvdWxkIHJ1biBpdCBpbiB0aGUgYnJvd3NlciBhbmQgb3V0c2lkZSBBbmd1bGFyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMuX3BsYXRmb3JtSWQpKSB7XG4gICAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zdGFydCRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmludGVydmFsKSwgZmlsdGVyKGludGVydmFsID0+IGludGVydmFsID4gMCAmJiB0aGlzLnNsaWRlcy5sZW5ndGggPiAwKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoaW50ZXJ2YWwgPT4gdGltZXIoaW50ZXJ2YWwpLnBpcGUodGFrZVVudGlsKG1lcmdlKHRoaXMuX3N0b3AkLCB0aGlzLl9kZXN0cm95JCkpKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX25nWm9uZS5ydW4oKCkgPT4gdGhpcy5uZXh0KCkpKTtcblxuICAgICAgICB0aGlzLl9zdGFydCQubmV4dCgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5zbGlkZXMuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKSk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKSB7XG4gICAgbGV0IGFjdGl2ZVNsaWRlID0gdGhpcy5fZ2V0U2xpZGVCeUlkKHRoaXMuYWN0aXZlSWQpO1xuICAgIHRoaXMuYWN0aXZlSWQgPSBhY3RpdmVTbGlkZSA/IGFjdGl2ZVNsaWRlLmlkIDogKHRoaXMuc2xpZGVzLmxlbmd0aCA/IHRoaXMuc2xpZGVzLmZpcnN0LmlkIDogbnVsbCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHsgdGhpcy5fZGVzdHJveSQubmV4dCgpOyB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlcykge1xuICAgIGlmICgnaW50ZXJ2YWwnIGluIGNoYW5nZXMgJiYgIWNoYW5nZXNbJ2ludGVydmFsJ10uaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICB0aGlzLl9zdGFydCQubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gYSBzbGlkZSB3aXRoIHRoZSBzcGVjaWZpZWQgaWRlbnRpZmllci5cbiAgICovXG4gIHNlbGVjdChzbGlkZUlkOiBzdHJpbmcpIHsgdGhpcy5fY3ljbGVUb1NlbGVjdGVkKHNsaWRlSWQsIHRoaXMuX2dldFNsaWRlRXZlbnREaXJlY3Rpb24odGhpcy5hY3RpdmVJZCwgc2xpZGVJZCkpOyB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgcHJldmlvdXMgc2xpZGUuXG4gICAqL1xuICBwcmV2KCkgeyB0aGlzLl9jeWNsZVRvU2VsZWN0ZWQodGhpcy5fZ2V0UHJldlNsaWRlKHRoaXMuYWN0aXZlSWQpLCBOZ2JTbGlkZUV2ZW50RGlyZWN0aW9uLlJJR0hUKTsgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIG5leHQgc2xpZGUuXG4gICAqL1xuICBuZXh0KCkgeyB0aGlzLl9jeWNsZVRvU2VsZWN0ZWQodGhpcy5fZ2V0TmV4dFNsaWRlKHRoaXMuYWN0aXZlSWQpLCBOZ2JTbGlkZUV2ZW50RGlyZWN0aW9uLkxFRlQpOyB9XG5cbiAgLyoqXG4gICAqIFBhdXNlcyBjeWNsaW5nIHRocm91Z2ggdGhlIHNsaWRlcy5cbiAgICovXG4gIHBhdXNlKCkgeyB0aGlzLl9zdG9wJC5uZXh0KCk7IH1cblxuICAvKipcbiAgICogUmVzdGFydHMgY3ljbGluZyB0aHJvdWdoIHRoZSBzbGlkZXMgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICAgKi9cbiAgY3ljbGUoKSB7IHRoaXMuX3N0YXJ0JC5uZXh0KCk7IH1cblxuICBwcml2YXRlIF9jeWNsZVRvU2VsZWN0ZWQoc2xpZGVJZHg6IHN0cmluZywgZGlyZWN0aW9uOiBOZ2JTbGlkZUV2ZW50RGlyZWN0aW9uKSB7XG4gICAgbGV0IHNlbGVjdGVkU2xpZGUgPSB0aGlzLl9nZXRTbGlkZUJ5SWQoc2xpZGVJZHgpO1xuICAgIGlmIChzZWxlY3RlZFNsaWRlICYmIHNlbGVjdGVkU2xpZGUuaWQgIT09IHRoaXMuYWN0aXZlSWQpIHtcbiAgICAgIHRoaXMuc2xpZGUuZW1pdCh7cHJldjogdGhpcy5hY3RpdmVJZCwgY3VycmVudDogc2VsZWN0ZWRTbGlkZS5pZCwgZGlyZWN0aW9uOiBkaXJlY3Rpb259KTtcbiAgICAgIHRoaXMuX3N0YXJ0JC5uZXh0KCk7XG4gICAgICB0aGlzLmFjdGl2ZUlkID0gc2VsZWN0ZWRTbGlkZS5pZDtcbiAgICB9XG5cbiAgICAvLyB3ZSBnZXQgaGVyZSBhZnRlciB0aGUgaW50ZXJ2YWwgZmlyZXMgb3IgYW55IGV4dGVybmFsIEFQSSBjYWxsIGxpa2UgbmV4dCgpLCBwcmV2KCkgb3Igc2VsZWN0KClcbiAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFNsaWRlRXZlbnREaXJlY3Rpb24oY3VycmVudEFjdGl2ZVNsaWRlSWQ6IHN0cmluZywgbmV4dEFjdGl2ZVNsaWRlSWQ6IHN0cmluZyk6IE5nYlNsaWRlRXZlbnREaXJlY3Rpb24ge1xuICAgIGNvbnN0IGN1cnJlbnRBY3RpdmVTbGlkZUlkeCA9IHRoaXMuX2dldFNsaWRlSWR4QnlJZChjdXJyZW50QWN0aXZlU2xpZGVJZCk7XG4gICAgY29uc3QgbmV4dEFjdGl2ZVNsaWRlSWR4ID0gdGhpcy5fZ2V0U2xpZGVJZHhCeUlkKG5leHRBY3RpdmVTbGlkZUlkKTtcblxuICAgIHJldHVybiBjdXJyZW50QWN0aXZlU2xpZGVJZHggPiBuZXh0QWN0aXZlU2xpZGVJZHggPyBOZ2JTbGlkZUV2ZW50RGlyZWN0aW9uLlJJR0hUIDogTmdiU2xpZGVFdmVudERpcmVjdGlvbi5MRUZUO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0U2xpZGVCeUlkKHNsaWRlSWQ6IHN0cmluZyk6IE5nYlNsaWRlIHsgcmV0dXJuIHRoaXMuc2xpZGVzLmZpbmQoc2xpZGUgPT4gc2xpZGUuaWQgPT09IHNsaWRlSWQpOyB9XG5cbiAgcHJpdmF0ZSBfZ2V0U2xpZGVJZHhCeUlkKHNsaWRlSWQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2xpZGVzLnRvQXJyYXkoKS5pbmRleE9mKHRoaXMuX2dldFNsaWRlQnlJZChzbGlkZUlkKSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXROZXh0U2xpZGUoY3VycmVudFNsaWRlSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2xpZGVBcnIgPSB0aGlzLnNsaWRlcy50b0FycmF5KCk7XG4gICAgY29uc3QgY3VycmVudFNsaWRlSWR4ID0gdGhpcy5fZ2V0U2xpZGVJZHhCeUlkKGN1cnJlbnRTbGlkZUlkKTtcbiAgICBjb25zdCBpc0xhc3RTbGlkZSA9IGN1cnJlbnRTbGlkZUlkeCA9PT0gc2xpZGVBcnIubGVuZ3RoIC0gMTtcblxuICAgIHJldHVybiBpc0xhc3RTbGlkZSA/ICh0aGlzLndyYXAgPyBzbGlkZUFyclswXS5pZCA6IHNsaWRlQXJyW3NsaWRlQXJyLmxlbmd0aCAtIDFdLmlkKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVBcnJbY3VycmVudFNsaWRlSWR4ICsgMV0uaWQ7XG4gIH1cblxuICBwcml2YXRlIF9nZXRQcmV2U2xpZGUoY3VycmVudFNsaWRlSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2xpZGVBcnIgPSB0aGlzLnNsaWRlcy50b0FycmF5KCk7XG4gICAgY29uc3QgY3VycmVudFNsaWRlSWR4ID0gdGhpcy5fZ2V0U2xpZGVJZHhCeUlkKGN1cnJlbnRTbGlkZUlkKTtcbiAgICBjb25zdCBpc0ZpcnN0U2xpZGUgPSBjdXJyZW50U2xpZGVJZHggPT09IDA7XG5cbiAgICByZXR1cm4gaXNGaXJzdFNsaWRlID8gKHRoaXMud3JhcCA/IHNsaWRlQXJyW3NsaWRlQXJyLmxlbmd0aCAtIDFdLmlkIDogc2xpZGVBcnJbMF0uaWQpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVBcnJbY3VycmVudFNsaWRlSWR4IC0gMV0uaWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHNsaWRlIGNoYW5nZSBldmVudCBlbWl0dGVkIHJpZ2h0IGFmdGVyIHRoZSBzbGlkZSB0cmFuc2l0aW9uIGlzIGNvbXBsZXRlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZ2JTbGlkZUV2ZW50IHtcbiAgLyoqXG4gICAqIFRoZSBwcmV2aW91cyBzbGlkZSBpZC5cbiAgICovXG4gIHByZXY6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgc2xpZGUgaWQuXG4gICAqL1xuICBjdXJyZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzbGlkZSBldmVudCBkaXJlY3Rpb24uXG4gICAqXG4gICAqIFBvc3NpYmxlIHZhbHVlcyBhcmUgYCdsZWZ0JyB8ICdyaWdodCdgLlxuICAgKi9cbiAgZGlyZWN0aW9uOiBOZ2JTbGlkZUV2ZW50RGlyZWN0aW9uO1xufVxuXG4vKipcbiAqIERlZmluZXMgdGhlIGNhcm91c2VsIHNsaWRlIHRyYW5zaXRpb24gZGlyZWN0aW9uLlxuICovXG5leHBvcnQgZW51bSBOZ2JTbGlkZUV2ZW50RGlyZWN0aW9uIHtcbiAgTEVGVCA9IDxhbnk+J2xlZnQnLFxuICBSSUdIVCA9IDxhbnk+J3JpZ2h0J1xufVxuXG5leHBvcnQgY29uc3QgTkdCX0NBUk9VU0VMX0RJUkVDVElWRVMgPSBbTmdiQ2Fyb3VzZWwsIE5nYlNsaWRlXTtcbiIsImltcG9ydCB7TmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7TkdCX0NBUk9VU0VMX0RJUkVDVElWRVN9IGZyb20gJy4vY2Fyb3VzZWwnO1xuXG5leHBvcnQge05nYkNhcm91c2VsLCBOZ2JTbGlkZSwgTmdiU2xpZGVFdmVudH0gZnJvbSAnLi9jYXJvdXNlbCc7XG5leHBvcnQge05nYkNhcm91c2VsQ29uZmlnfSBmcm9tICcuL2Nhcm91c2VsLWNvbmZpZyc7XG5cbkBOZ01vZHVsZSh7ZGVjbGFyYXRpb25zOiBOR0JfQ0FST1VTRUxfRElSRUNUSVZFUywgZXhwb3J0czogTkdCX0NBUk9VU0VMX0RJUkVDVElWRVMsIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdfSlcbmV4cG9ydCBjbGFzcyBOZ2JDYXJvdXNlbE1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JDYXJvdXNlbE1vZHVsZX07IH1cbn1cbiIsImltcG9ydCB7RGlyZWN0aXZlLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgdG8gcHJvdmlkZSBhIHNpbXBsZSB3YXkgb2YgaGlkaW5nIGFuZCBzaG93aW5nIGVsZW1lbnRzIG9uIHRoZSBwYWdlLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmdiQ29sbGFwc2VdJyxcbiAgZXhwb3J0QXM6ICduZ2JDb2xsYXBzZScsXG4gIGhvc3Q6IHsnW2NsYXNzLmNvbGxhcHNlXSc6ICd0cnVlJywgJ1tjbGFzcy5zaG93XSc6ICchY29sbGFwc2VkJ31cbn0pXG5leHBvcnQgY2xhc3MgTmdiQ29sbGFwc2Uge1xuICAvKipcbiAgICogSWYgYHRydWVgLCB3aWxsIGNvbGxhcHNlIHRoZSBlbGVtZW50IG9yIHNob3cgaXQgb3RoZXJ3aXNlLlxuICAgKi9cbiAgQElucHV0KCduZ2JDb2xsYXBzZScpIGNvbGxhcHNlZCA9IGZhbHNlO1xufVxuIiwiaW1wb3J0IHtOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nYkNvbGxhcHNlfSBmcm9tICcuL2NvbGxhcHNlJztcblxuZXhwb3J0IHtOZ2JDb2xsYXBzZX0gZnJvbSAnLi9jb2xsYXBzZSc7XG5cbkBOZ01vZHVsZSh7ZGVjbGFyYXRpb25zOiBbTmdiQ29sbGFwc2VdLCBleHBvcnRzOiBbTmdiQ29sbGFwc2VdfSlcbmV4cG9ydCBjbGFzcyBOZ2JDb2xsYXBzZU1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JDb2xsYXBzZU1vZHVsZX07IH1cbn1cbiIsImltcG9ydCB7TmdiRGF0ZVN0cnVjdH0gZnJvbSAnLi9uZ2ItZGF0ZS1zdHJ1Y3QnO1xuaW1wb3J0IHtpc0ludGVnZXJ9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5cbi8qKlxuICogQSBzaW1wbGUgY2xhc3MgdGhhdCByZXByZXNlbnRzIGEgZGF0ZSB0aGF0IGRhdGVwaWNrZXIgYWxzbyB1c2VzIGludGVybmFsbHkuXG4gKlxuICogSXQgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgTmdiRGF0ZVN0cnVjdGAgaW50ZXJmYWNlIHRoYXQgYWRkcyBzb21lIGNvbnZlbmllbmNlIG1ldGhvZHMsXG4gKiBsaWtlIGAuZXF1YWxzKClgLCBgLmJlZm9yZSgpYCwgZXRjLlxuICpcbiAqIEFsbCBkYXRlcGlja2VyIEFQSXMgY29uc3VtZSBgTmdiRGF0ZVN0cnVjdGAsIGJ1dCByZXR1cm4gYE5nYkRhdGVgLlxuICpcbiAqIEluIG1hbnkgY2FzZXMgaXQgaXMgc2ltcGxlciB0byBtYW5pcHVsYXRlIHRoZXNlIG9iamVjdHMgdG9nZXRoZXIgd2l0aFxuICogW2BOZ2JDYWxlbmRhcmBdKCMvY29tcG9uZW50cy9kYXRlcGlja2VyL2FwaSNOZ2JDYWxlbmRhcikgdGhhbiBuYXRpdmUgSlMgRGF0ZXMuXG4gKlxuICogU2VlIHRoZSBbZGF0ZSBmb3JtYXQgb3ZlcnZpZXddKCMvY29tcG9uZW50cy9kYXRlcGlja2VyL292ZXJ2aWV3I2RhdGUtbW9kZWwpIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHNpbmNlIDMuMC4wXG4gKi9cbmV4cG9ydCBjbGFzcyBOZ2JEYXRlIGltcGxlbWVudHMgTmdiRGF0ZVN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgeWVhciwgZm9yIGV4YW1wbGUgMjAxNlxuICAgKi9cbiAgeWVhcjogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9udGgsIGZvciBleGFtcGxlIDE9SmFuIC4uLiAxMj1EZWMgYXMgaW4gSVNPIDg2MDFcbiAgICovXG4gIG1vbnRoOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBkYXkgb2YgbW9udGgsIHN0YXJ0aW5nIHdpdGggMVxuICAgKi9cbiAgZGF5OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgKipzdGF0aWMgbWV0aG9kKiogdGhhdCBjcmVhdGVzIGEgbmV3IGRhdGUgb2JqZWN0IGZyb20gdGhlIGBOZ2JEYXRlU3RydWN0YCxcbiAgICpcbiAgICogZXguIGBOZ2JEYXRlLmZyb20oe3llYXI6IDIwMDAsIG1vbnRoOiA1LCBkYXk6IDF9KWAuXG4gICAqXG4gICAqIElmIHRoZSBgZGF0ZWAgaXMgYWxyZWFkeSBvZiBgTmdiRGF0ZWAgdHlwZSwgdGhlIG1ldGhvZCB3aWxsIHJldHVybiB0aGUgc2FtZSBvYmplY3QuXG4gICAqL1xuICBzdGF0aWMgZnJvbShkYXRlOiBOZ2JEYXRlU3RydWN0KTogTmdiRGF0ZSB7XG4gICAgaWYgKGRhdGUgaW5zdGFuY2VvZiBOZ2JEYXRlKSB7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGUgPyBuZXcgTmdiRGF0ZShkYXRlLnllYXIsIGRhdGUubW9udGgsIGRhdGUuZGF5KSA6IG51bGw7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyKSB7XG4gICAgdGhpcy55ZWFyID0gaXNJbnRlZ2VyKHllYXIpID8geWVhciA6IG51bGw7XG4gICAgdGhpcy5tb250aCA9IGlzSW50ZWdlcihtb250aCkgPyBtb250aCA6IG51bGw7XG4gICAgdGhpcy5kYXkgPSBpc0ludGVnZXIoZGF5KSA/IGRheSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IGRhdGUgaXMgZXF1YWwgdG8gYW5vdGhlciBkYXRlLlxuICAgKi9cbiAgZXF1YWxzKG90aGVyOiBOZ2JEYXRlU3RydWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG90aGVyICYmIHRoaXMueWVhciA9PT0gb3RoZXIueWVhciAmJiB0aGlzLm1vbnRoID09PSBvdGhlci5tb250aCAmJiB0aGlzLmRheSA9PT0gb3RoZXIuZGF5O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBkYXRlIGlzIGJlZm9yZSBhbm90aGVyIGRhdGUuXG4gICAqL1xuICBiZWZvcmUob3RoZXI6IE5nYkRhdGVTdHJ1Y3QpOiBib29sZWFuIHtcbiAgICBpZiAoIW90aGVyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMueWVhciA9PT0gb3RoZXIueWVhcikge1xuICAgICAgaWYgKHRoaXMubW9udGggPT09IG90aGVyLm1vbnRoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRheSA9PT0gb3RoZXIuZGF5ID8gZmFsc2UgOiB0aGlzLmRheSA8IG90aGVyLmRheTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vbnRoIDwgb3RoZXIubW9udGg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnllYXIgPCBvdGhlci55ZWFyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgZGF0ZSBpcyBhZnRlciBhbm90aGVyIGRhdGUuXG4gICAqL1xuICBhZnRlcihvdGhlcjogTmdiRGF0ZVN0cnVjdCk6IGJvb2xlYW4ge1xuICAgIGlmICghb3RoZXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMueWVhciA9PT0gb3RoZXIueWVhcikge1xuICAgICAgaWYgKHRoaXMubW9udGggPT09IG90aGVyLm1vbnRoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRheSA9PT0gb3RoZXIuZGF5ID8gZmFsc2UgOiB0aGlzLmRheSA+IG90aGVyLmRheTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vbnRoID4gb3RoZXIubW9udGg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnllYXIgPiBvdGhlci55ZWFyO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHtOZ2JEYXRlfSBmcm9tICcuL25nYi1kYXRlJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2lzSW50ZWdlcn0gZnJvbSAnLi4vdXRpbC91dGlsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21KU0RhdGUoanNEYXRlOiBEYXRlKSB7XG4gIHJldHVybiBuZXcgTmdiRGF0ZShqc0RhdGUuZ2V0RnVsbFllYXIoKSwganNEYXRlLmdldE1vbnRoKCkgKyAxLCBqc0RhdGUuZ2V0RGF0ZSgpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0b0pTRGF0ZShkYXRlOiBOZ2JEYXRlKSB7XG4gIGNvbnN0IGpzRGF0ZSA9IG5ldyBEYXRlKGRhdGUueWVhciwgZGF0ZS5tb250aCAtIDEsIGRhdGUuZGF5LCAxMik7XG4gIC8vIHRoaXMgaXMgZG9uZSBhdm9pZCAzMCAtPiAxOTMwIGNvbnZlcnNpb25cbiAgaWYgKCFpc05hTihqc0RhdGUuZ2V0VGltZSgpKSkge1xuICAgIGpzRGF0ZS5zZXRGdWxsWWVhcihkYXRlLnllYXIpO1xuICB9XG4gIHJldHVybiBqc0RhdGU7XG59XG5cbmV4cG9ydCB0eXBlIE5nYlBlcmlvZCA9ICd5JyB8ICdtJyB8ICdkJztcblxuZXhwb3J0IGZ1bmN0aW9uIE5HQl9EQVRFUElDS0VSX0NBTEVOREFSX0ZBQ1RPUlkoKSB7XG4gIHJldHVybiBuZXcgTmdiQ2FsZW5kYXJHcmVnb3JpYW4oKTtcbn1cblxuLyoqXG4gKiBBIHNlcnZpY2UgdGhhdCByZXByZXNlbnRzIHRoZSBjYWxlbmRhciB1c2VkIGJ5IHRoZSBkYXRlcGlja2VyLlxuICpcbiAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHVzZXMgdGhlIEdyZWdvcmlhbiBjYWxlbmRhci4gWW91IGNhbiBpbmplY3QgaXQgaW4geW91ciBvd25cbiAqIGltcGxlbWVudGF0aW9ucyBpZiBuZWNlc3NhcnkgdG8gc2ltcGxpZnkgYE5nYkRhdGVgIGNhbGN1bGF0aW9ucy5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290JywgdXNlRmFjdG9yeTogTkdCX0RBVEVQSUNLRVJfQ0FMRU5EQVJfRkFDVE9SWX0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmdiQ2FsZW5kYXIge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRheXMgcGVyIHdlZWsuXG4gICAqL1xuICBhYnN0cmFjdCBnZXREYXlzUGVyV2VlaygpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gYXJyYXkgb2YgbW9udGhzIHBlciB5ZWFyLlxuICAgKlxuICAgKiBXaXRoIGRlZmF1bHQgY2FsZW5kYXIgd2UgdXNlIElTTyA4NjAxIGFuZCByZXR1cm4gWzEsIDIsIC4uLiwgMTJdO1xuICAgKi9cbiAgYWJzdHJhY3QgZ2V0TW9udGhzKHllYXI/OiBudW1iZXIpOiBudW1iZXJbXTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHdlZWtzIHBlciBtb250aC5cbiAgICovXG4gIGFic3RyYWN0IGdldFdlZWtzUGVyTW9udGgoKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB3ZWVrZGF5IG51bWJlciBmb3IgYSBnaXZlbiBkYXkuXG4gICAqXG4gICAqIFdpdGggdGhlIGRlZmF1bHQgY2FsZW5kYXIgd2UgdXNlIElTTyA4NjAxOiAnd2Vla2RheScgaXMgMT1Nb24gLi4uIDc9U3VuXG4gICAqL1xuICBhYnN0cmFjdCBnZXRXZWVrZGF5KGRhdGU6IE5nYkRhdGUpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBudW1iZXIgb2YgeWVhcnMsIG1vbnRocyBvciBkYXlzIHRvIGEgZ2l2ZW4gZGF0ZS5cbiAgICpcbiAgICogKiBgcGVyaW9kYCBjYW4gYmUgYHlgLCBgbWAgb3IgYGRgIGFuZCBkZWZhdWx0cyB0byBkYXkuXG4gICAqICogYG51bWJlcmAgZGVmYXVsdHMgdG8gMS5cbiAgICpcbiAgICogQWx3YXlzIHJldHVybnMgYSBuZXcgZGF0ZS5cbiAgICovXG4gIGFic3RyYWN0IGdldE5leHQoZGF0ZTogTmdiRGF0ZSwgcGVyaW9kPzogTmdiUGVyaW9kLCBudW1iZXI/OiBudW1iZXIpOiBOZ2JEYXRlO1xuXG4gIC8qKlxuICAgKiBTdWJ0cmFjdHMgYSBudW1iZXIgb2YgeWVhcnMsIG1vbnRocyBvciBkYXlzIGZyb20gYSBnaXZlbiBkYXRlLlxuICAgKlxuICAgKiAqIGBwZXJpb2RgIGNhbiBiZSBgeWAsIGBtYCBvciBgZGAgYW5kIGRlZmF1bHRzIHRvIGRheS5cbiAgICogKiBgbnVtYmVyYCBkZWZhdWx0cyB0byAxLlxuICAgKlxuICAgKiBBbHdheXMgcmV0dXJucyBhIG5ldyBkYXRlLlxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0UHJldihkYXRlOiBOZ2JEYXRlLCBwZXJpb2Q/OiBOZ2JQZXJpb2QsIG51bWJlcj86IG51bWJlcik6IE5nYkRhdGU7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHdlZWsgbnVtYmVyIGZvciBhIGdpdmVuIHdlZWsuXG4gICAqL1xuICBhYnN0cmFjdCBnZXRXZWVrTnVtYmVyKHdlZWs6IE5nYkRhdGVbXSwgZmlyc3REYXlPZldlZWs6IG51bWJlcik6IG51bWJlcjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdG9kYXkncyBkYXRlLlxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0VG9kYXkoKTogTmdiRGF0ZTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgZGF0ZSBpcyB2YWxpZCBpbiB0aGUgY3VycmVudCBjYWxlbmRhci5cbiAgICovXG4gIGFic3RyYWN0IGlzVmFsaWQoZGF0ZTogTmdiRGF0ZSk6IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ2JDYWxlbmRhckdyZWdvcmlhbiBleHRlbmRzIE5nYkNhbGVuZGFyIHtcbiAgZ2V0RGF5c1BlcldlZWsoKSB7IHJldHVybiA3OyB9XG5cbiAgZ2V0TW9udGhzKCkgeyByZXR1cm4gWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTJdOyB9XG5cbiAgZ2V0V2Vla3NQZXJNb250aCgpIHsgcmV0dXJuIDY7IH1cblxuICBnZXROZXh0KGRhdGU6IE5nYkRhdGUsIHBlcmlvZDogTmdiUGVyaW9kID0gJ2QnLCBudW1iZXIgPSAxKSB7XG4gICAgbGV0IGpzRGF0ZSA9IHRvSlNEYXRlKGRhdGUpO1xuXG4gICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgIGNhc2UgJ3knOlxuICAgICAgICByZXR1cm4gbmV3IE5nYkRhdGUoZGF0ZS55ZWFyICsgbnVtYmVyLCAxLCAxKTtcbiAgICAgIGNhc2UgJ20nOlxuICAgICAgICBqc0RhdGUgPSBuZXcgRGF0ZShkYXRlLnllYXIsIGRhdGUubW9udGggKyBudW1iZXIgLSAxLCAxLCAxMik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZCc6XG4gICAgICAgIGpzRGF0ZS5zZXREYXRlKGpzRGF0ZS5nZXREYXRlKCkgKyBudW1iZXIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cblxuICAgIHJldHVybiBmcm9tSlNEYXRlKGpzRGF0ZSk7XG4gIH1cblxuICBnZXRQcmV2KGRhdGU6IE5nYkRhdGUsIHBlcmlvZDogTmdiUGVyaW9kID0gJ2QnLCBudW1iZXIgPSAxKSB7IHJldHVybiB0aGlzLmdldE5leHQoZGF0ZSwgcGVyaW9kLCAtbnVtYmVyKTsgfVxuXG4gIGdldFdlZWtkYXkoZGF0ZTogTmdiRGF0ZSkge1xuICAgIGxldCBqc0RhdGUgPSB0b0pTRGF0ZShkYXRlKTtcbiAgICBsZXQgZGF5ID0ganNEYXRlLmdldERheSgpO1xuICAgIC8vIGluIEpTIERhdGUgU3VuPTAsIGluIElTTyA4NjAxIFN1bj03XG4gICAgcmV0dXJuIGRheSA9PT0gMCA/IDcgOiBkYXk7XG4gIH1cblxuICBnZXRXZWVrTnVtYmVyKHdlZWs6IE5nYkRhdGVbXSwgZmlyc3REYXlPZldlZWs6IG51bWJlcikge1xuICAgIC8vIGluIEpTIERhdGUgU3VuPTAsIGluIElTTyA4NjAxIFN1bj03XG4gICAgaWYgKGZpcnN0RGF5T2ZXZWVrID09PSA3KSB7XG4gICAgICBmaXJzdERheU9mV2VlayA9IDA7XG4gICAgfVxuXG4gICAgY29uc3QgdGh1cnNkYXlJbmRleCA9ICg0ICsgNyAtIGZpcnN0RGF5T2ZXZWVrKSAlIDc7XG4gICAgbGV0IGRhdGUgPSB3ZWVrW3RodXJzZGF5SW5kZXhdO1xuXG4gICAgY29uc3QganNEYXRlID0gdG9KU0RhdGUoZGF0ZSk7XG4gICAganNEYXRlLnNldERhdGUoanNEYXRlLmdldERhdGUoKSArIDQgLSAoanNEYXRlLmdldERheSgpIHx8IDcpKTsgIC8vIFRodXJzZGF5XG4gICAgY29uc3QgdGltZSA9IGpzRGF0ZS5nZXRUaW1lKCk7XG4gICAganNEYXRlLnNldE1vbnRoKDApOyAgLy8gQ29tcGFyZSB3aXRoIEphbiAxXG4gICAganNEYXRlLnNldERhdGUoMSk7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yb3VuZCgodGltZSAtIGpzRGF0ZS5nZXRUaW1lKCkpIC8gODY0MDAwMDApIC8gNykgKyAxO1xuICB9XG5cbiAgZ2V0VG9kYXkoKTogTmdiRGF0ZSB7IHJldHVybiBmcm9tSlNEYXRlKG5ldyBEYXRlKCkpOyB9XG5cbiAgaXNWYWxpZChkYXRlOiBOZ2JEYXRlKTogYm9vbGVhbiB7XG4gICAgaWYgKCFkYXRlIHx8ICFpc0ludGVnZXIoZGF0ZS55ZWFyKSB8fCAhaXNJbnRlZ2VyKGRhdGUubW9udGgpIHx8ICFpc0ludGVnZXIoZGF0ZS5kYXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8geWVhciAwIGRvZXNuJ3QgZXhpc3QgaW4gR3JlZ29yaWFuIGNhbGVuZGFyXG4gICAgaWYgKGRhdGUueWVhciA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGpzRGF0ZSA9IHRvSlNEYXRlKGRhdGUpO1xuXG4gICAgcmV0dXJuICFpc05hTihqc0RhdGUuZ2V0VGltZSgpKSAmJiBqc0RhdGUuZ2V0RnVsbFllYXIoKSA9PT0gZGF0ZS55ZWFyICYmIGpzRGF0ZS5nZXRNb250aCgpICsgMSA9PT0gZGF0ZS5tb250aCAmJlxuICAgICAgICBqc0RhdGUuZ2V0RGF0ZSgpID09PSBkYXRlLmRheTtcbiAgfVxufVxuIiwiaW1wb3J0IHtOZ2JEYXRlfSBmcm9tICcuL25nYi1kYXRlJztcbmltcG9ydCB7RGF0ZXBpY2tlclZpZXdNb2RlbCwgRGF5Vmlld01vZGVsLCBNb250aFZpZXdNb2RlbH0gZnJvbSAnLi9kYXRlcGlja2VyLXZpZXctbW9kZWwnO1xuaW1wb3J0IHtOZ2JDYWxlbmRhcn0gZnJvbSAnLi9uZ2ItY2FsZW5kYXInO1xuaW1wb3J0IHtpc0RlZmluZWR9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQge05nYkRhdGVwaWNrZXJJMThufSBmcm9tICcuL2RhdGVwaWNrZXItaTE4bic7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NoYW5nZWREYXRlKHByZXY6IE5nYkRhdGUsIG5leHQ6IE5nYkRhdGUpIHtcbiAgcmV0dXJuICFkYXRlQ29tcGFyYXRvcihwcmV2LCBuZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2hhbmdlZE1vbnRoKHByZXY6IE5nYkRhdGUsIG5leHQ6IE5nYkRhdGUpIHtcbiAgcmV0dXJuICFwcmV2ICYmICFuZXh0ID8gZmFsc2UgOiAhcHJldiB8fCAhbmV4dCA/IHRydWUgOiBwcmV2LnllYXIgIT09IG5leHQueWVhciB8fCBwcmV2Lm1vbnRoICE9PSBuZXh0Lm1vbnRoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNvbXBhcmF0b3IocHJldjogTmdiRGF0ZSwgbmV4dDogTmdiRGF0ZSkge1xuICByZXR1cm4gKCFwcmV2ICYmICFuZXh0KSB8fCAoISFwcmV2ICYmICEhbmV4dCAmJiBwcmV2LmVxdWFscyhuZXh0KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja01pbkJlZm9yZU1heChtaW5EYXRlOiBOZ2JEYXRlLCBtYXhEYXRlOiBOZ2JEYXRlKSB7XG4gIGlmIChtYXhEYXRlICYmIG1pbkRhdGUgJiYgbWF4RGF0ZS5iZWZvcmUobWluRGF0ZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCdtYXhEYXRlJyAke21heERhdGV9IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gJ21pbkRhdGUnICR7bWluRGF0ZX1gKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tEYXRlSW5SYW5nZShkYXRlOiBOZ2JEYXRlLCBtaW5EYXRlOiBOZ2JEYXRlLCBtYXhEYXRlOiBOZ2JEYXRlKTogTmdiRGF0ZSB7XG4gIGlmIChkYXRlICYmIG1pbkRhdGUgJiYgZGF0ZS5iZWZvcmUobWluRGF0ZSkpIHtcbiAgICByZXR1cm4gbWluRGF0ZTtcbiAgfVxuICBpZiAoZGF0ZSAmJiBtYXhEYXRlICYmIGRhdGUuYWZ0ZXIobWF4RGF0ZSkpIHtcbiAgICByZXR1cm4gbWF4RGF0ZTtcbiAgfVxuXG4gIHJldHVybiBkYXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlU2VsZWN0YWJsZShkYXRlOiBOZ2JEYXRlLCBzdGF0ZTogRGF0ZXBpY2tlclZpZXdNb2RlbCkge1xuICBjb25zdCB7bWluRGF0ZSwgbWF4RGF0ZSwgZGlzYWJsZWQsIG1hcmtEaXNhYmxlZH0gPSBzdGF0ZTtcbiAgLy8gY2xhbmctZm9ybWF0IG9mZlxuICByZXR1cm4gIShcbiAgICAhaXNEZWZpbmVkKGRhdGUpIHx8XG4gICAgZGlzYWJsZWQgfHxcbiAgICAobWFya0Rpc2FibGVkICYmIG1hcmtEaXNhYmxlZChkYXRlLCB7eWVhcjogZGF0ZS55ZWFyLCBtb250aDogZGF0ZS5tb250aH0pKSB8fFxuICAgIChtaW5EYXRlICYmIGRhdGUuYmVmb3JlKG1pbkRhdGUpKSB8fFxuICAgIChtYXhEYXRlICYmIGRhdGUuYWZ0ZXIobWF4RGF0ZSkpXG4gICk7XG4gIC8vIGNsYW5nLWZvcm1hdCBvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVTZWxlY3RCb3hNb250aHMoY2FsZW5kYXI6IE5nYkNhbGVuZGFyLCBkYXRlOiBOZ2JEYXRlLCBtaW5EYXRlOiBOZ2JEYXRlLCBtYXhEYXRlOiBOZ2JEYXRlKSB7XG4gIGlmICghZGF0ZSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGxldCBtb250aHMgPSBjYWxlbmRhci5nZXRNb250aHMoZGF0ZS55ZWFyKTtcblxuICBpZiAobWluRGF0ZSAmJiBkYXRlLnllYXIgPT09IG1pbkRhdGUueWVhcikge1xuICAgIGNvbnN0IGluZGV4ID0gbW9udGhzLmZpbmRJbmRleChtb250aCA9PiBtb250aCA9PT0gbWluRGF0ZS5tb250aCk7XG4gICAgbW9udGhzID0gbW9udGhzLnNsaWNlKGluZGV4KTtcbiAgfVxuXG4gIGlmIChtYXhEYXRlICYmIGRhdGUueWVhciA9PT0gbWF4RGF0ZS55ZWFyKSB7XG4gICAgY29uc3QgaW5kZXggPSBtb250aHMuZmluZEluZGV4KG1vbnRoID0+IG1vbnRoID09PSBtYXhEYXRlLm1vbnRoKTtcbiAgICBtb250aHMgPSBtb250aHMuc2xpY2UoMCwgaW5kZXggKyAxKTtcbiAgfVxuXG4gIHJldHVybiBtb250aHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVNlbGVjdEJveFllYXJzKGRhdGU6IE5nYkRhdGUsIG1pbkRhdGU6IE5nYkRhdGUsIG1heERhdGU6IE5nYkRhdGUpIHtcbiAgaWYgKCFkYXRlKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3Qgc3RhcnQgPSBtaW5EYXRlICYmIG1pbkRhdGUueWVhciB8fCBkYXRlLnllYXIgLSAxMDtcbiAgY29uc3QgZW5kID0gbWF4RGF0ZSAmJiBtYXhEYXRlLnllYXIgfHwgZGF0ZS55ZWFyICsgMTA7XG5cbiAgcmV0dXJuIEFycmF5LmZyb20oe2xlbmd0aDogZW5kIC0gc3RhcnQgKyAxfSwgKGUsIGkpID0+IHN0YXJ0ICsgaSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZXh0TW9udGhEaXNhYmxlZChjYWxlbmRhcjogTmdiQ2FsZW5kYXIsIGRhdGU6IE5nYkRhdGUsIG1heERhdGU6IE5nYkRhdGUpIHtcbiAgcmV0dXJuIG1heERhdGUgJiYgY2FsZW5kYXIuZ2V0TmV4dChkYXRlLCAnbScpLmFmdGVyKG1heERhdGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJldk1vbnRoRGlzYWJsZWQoY2FsZW5kYXI6IE5nYkNhbGVuZGFyLCBkYXRlOiBOZ2JEYXRlLCBtaW5EYXRlOiBOZ2JEYXRlKSB7XG4gIGNvbnN0IHByZXZEYXRlID0gY2FsZW5kYXIuZ2V0UHJldihkYXRlLCAnbScpO1xuICByZXR1cm4gbWluRGF0ZSAmJiAocHJldkRhdGUueWVhciA9PT0gbWluRGF0ZS55ZWFyICYmIHByZXZEYXRlLm1vbnRoIDwgbWluRGF0ZS5tb250aCB8fFxuICAgICAgICAgICAgICAgICAgICAgcHJldkRhdGUueWVhciA8IG1pbkRhdGUueWVhciAmJiBtaW5EYXRlLm1vbnRoID09PSAxKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTW9udGhzKFxuICAgIGNhbGVuZGFyOiBOZ2JDYWxlbmRhciwgZGF0ZTogTmdiRGF0ZSwgc3RhdGU6IERhdGVwaWNrZXJWaWV3TW9kZWwsIGkxOG46IE5nYkRhdGVwaWNrZXJJMThuLFxuICAgIGZvcmNlOiBib29sZWFuKTogTW9udGhWaWV3TW9kZWxbXSB7XG4gIGNvbnN0IHtkaXNwbGF5TW9udGhzLCBtb250aHN9ID0gc3RhdGU7XG4gIC8vIG1vdmUgb2xkIG1vbnRocyB0byBhIHRlbXBvcmFyeSBhcnJheVxuICBjb25zdCBtb250aHNUb1JldXNlID0gbW9udGhzLnNwbGljZSgwLCBtb250aHMubGVuZ3RoKTtcblxuICAvLyBnZW5lcmF0ZSBuZXcgZmlyc3QgZGF0ZXMsIG51bGxpZnkgb3IgcmV1c2UgbW9udGhzXG4gIGNvbnN0IGZpcnN0RGF0ZXMgPSBBcnJheS5mcm9tKHtsZW5ndGg6IGRpc3BsYXlNb250aHN9LCAoXywgaSkgPT4ge1xuICAgIGNvbnN0IGZpcnN0RGF0ZSA9IGNhbGVuZGFyLmdldE5leHQoZGF0ZSwgJ20nLCBpKTtcbiAgICBtb250aHNbaV0gPSBudWxsO1xuXG4gICAgaWYgKCFmb3JjZSkge1xuICAgICAgY29uc3QgcmV1c2VkSW5kZXggPSBtb250aHNUb1JldXNlLmZpbmRJbmRleChtb250aCA9PiBtb250aC5maXJzdERhdGUuZXF1YWxzKGZpcnN0RGF0ZSkpO1xuICAgICAgLy8gbW92ZSByZXVzZWQgbW9udGggYmFjayB0byBtb250aHNcbiAgICAgIGlmIChyZXVzZWRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgbW9udGhzW2ldID0gbW9udGhzVG9SZXVzZS5zcGxpY2UocmV1c2VkSW5kZXgsIDEpWzBdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmaXJzdERhdGU7XG4gIH0pO1xuXG4gIC8vIHJlYnVpbGQgbnVsbGlmaWVkIG1vbnRoc1xuICBmaXJzdERhdGVzLmZvckVhY2goKGZpcnN0RGF0ZSwgaSkgPT4ge1xuICAgIGlmIChtb250aHNbaV0gPT09IG51bGwpIHtcbiAgICAgIG1vbnRoc1tpXSA9IGJ1aWxkTW9udGgoY2FsZW5kYXIsIGZpcnN0RGF0ZSwgc3RhdGUsIGkxOG4sIG1vbnRoc1RvUmV1c2Uuc2hpZnQoKSB8fCB7fSBhcyBNb250aFZpZXdNb2RlbCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbW9udGhzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRNb250aChcbiAgICBjYWxlbmRhcjogTmdiQ2FsZW5kYXIsIGRhdGU6IE5nYkRhdGUsIHN0YXRlOiBEYXRlcGlja2VyVmlld01vZGVsLCBpMThuOiBOZ2JEYXRlcGlja2VySTE4bixcbiAgICBtb250aDogTW9udGhWaWV3TW9kZWwgPSB7fSBhcyBNb250aFZpZXdNb2RlbCk6IE1vbnRoVmlld01vZGVsIHtcbiAgY29uc3Qge2RheVRlbXBsYXRlRGF0YSwgbWluRGF0ZSwgbWF4RGF0ZSwgZmlyc3REYXlPZldlZWssIG1hcmtEaXNhYmxlZCwgb3V0c2lkZURheXN9ID0gc3RhdGU7XG4gIGNvbnN0IGNhbGVuZGFyVG9kYXkgPSBjYWxlbmRhci5nZXRUb2RheSgpO1xuXG4gIG1vbnRoLmZpcnN0RGF0ZSA9IG51bGw7XG4gIG1vbnRoLmxhc3REYXRlID0gbnVsbDtcbiAgbW9udGgubnVtYmVyID0gZGF0ZS5tb250aDtcbiAgbW9udGgueWVhciA9IGRhdGUueWVhcjtcbiAgbW9udGgud2Vla3MgPSBtb250aC53ZWVrcyB8fCBbXTtcbiAgbW9udGgud2Vla2RheXMgPSBtb250aC53ZWVrZGF5cyB8fCBbXTtcblxuICBkYXRlID0gZ2V0Rmlyc3RWaWV3RGF0ZShjYWxlbmRhciwgZGF0ZSwgZmlyc3REYXlPZldlZWspO1xuXG4gIC8vIG1vbnRoIGhhcyB3ZWVrc1xuICBmb3IgKGxldCB3ZWVrID0gMDsgd2VlayA8IGNhbGVuZGFyLmdldFdlZWtzUGVyTW9udGgoKTsgd2VlaysrKSB7XG4gICAgbGV0IHdlZWtPYmplY3QgPSBtb250aC53ZWVrc1t3ZWVrXTtcbiAgICBpZiAoIXdlZWtPYmplY3QpIHtcbiAgICAgIHdlZWtPYmplY3QgPSBtb250aC53ZWVrc1t3ZWVrXSA9IHtudW1iZXI6IDAsIGRheXM6IFtdLCBjb2xsYXBzZWQ6IHRydWV9O1xuICAgIH1cbiAgICBjb25zdCBkYXlzID0gd2Vla09iamVjdC5kYXlzO1xuXG4gICAgLy8gd2VlayBoYXMgZGF5c1xuICAgIGZvciAobGV0IGRheSA9IDA7IGRheSA8IGNhbGVuZGFyLmdldERheXNQZXJXZWVrKCk7IGRheSsrKSB7XG4gICAgICBpZiAod2VlayA9PT0gMCkge1xuICAgICAgICBtb250aC53ZWVrZGF5c1tkYXldID0gY2FsZW5kYXIuZ2V0V2Vla2RheShkYXRlKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBOZ2JEYXRlKGRhdGUueWVhciwgZGF0ZS5tb250aCwgZGF0ZS5kYXkpO1xuICAgICAgY29uc3QgbmV4dERhdGUgPSBjYWxlbmRhci5nZXROZXh0KG5ld0RhdGUpO1xuXG4gICAgICBjb25zdCBhcmlhTGFiZWwgPSBpMThuLmdldERheUFyaWFMYWJlbChuZXdEYXRlKTtcblxuICAgICAgLy8gbWFya2luZyBkYXRlIGFzIGRpc2FibGVkXG4gICAgICBsZXQgZGlzYWJsZWQgPSAhISgobWluRGF0ZSAmJiBuZXdEYXRlLmJlZm9yZShtaW5EYXRlKSkgfHwgKG1heERhdGUgJiYgbmV3RGF0ZS5hZnRlcihtYXhEYXRlKSkpO1xuICAgICAgaWYgKCFkaXNhYmxlZCAmJiBtYXJrRGlzYWJsZWQpIHtcbiAgICAgICAgZGlzYWJsZWQgPSBtYXJrRGlzYWJsZWQobmV3RGF0ZSwge21vbnRoOiBtb250aC5udW1iZXIsIHllYXI6IG1vbnRoLnllYXJ9KTtcbiAgICAgIH1cblxuICAgICAgLy8gdG9kYXlcbiAgICAgIGxldCB0b2RheSA9IG5ld0RhdGUuZXF1YWxzKGNhbGVuZGFyVG9kYXkpO1xuXG4gICAgICAvLyBhZGRpbmcgdXNlci1wcm92aWRlZCBkYXRhIHRvIHRoZSBjb250ZXh0XG4gICAgICBsZXQgY29udGV4dFVzZXJEYXRhID1cbiAgICAgICAgICBkYXlUZW1wbGF0ZURhdGEgPyBkYXlUZW1wbGF0ZURhdGEobmV3RGF0ZSwge21vbnRoOiBtb250aC5udW1iZXIsIHllYXI6IG1vbnRoLnllYXJ9KSA6IHVuZGVmaW5lZDtcblxuICAgICAgLy8gc2F2aW5nIGZpcnN0IGRhdGUgb2YgdGhlIG1vbnRoXG4gICAgICBpZiAobW9udGguZmlyc3REYXRlID09PSBudWxsICYmIG5ld0RhdGUubW9udGggPT09IG1vbnRoLm51bWJlcikge1xuICAgICAgICBtb250aC5maXJzdERhdGUgPSBuZXdEYXRlO1xuICAgICAgfVxuXG4gICAgICAvLyBzYXZpbmcgbGFzdCBkYXRlIG9mIHRoZSBtb250aFxuICAgICAgaWYgKG5ld0RhdGUubW9udGggPT09IG1vbnRoLm51bWJlciAmJiBuZXh0RGF0ZS5tb250aCAhPT0gbW9udGgubnVtYmVyKSB7XG4gICAgICAgIG1vbnRoLmxhc3REYXRlID0gbmV3RGF0ZTtcbiAgICAgIH1cblxuICAgICAgbGV0IGRheU9iamVjdCA9IGRheXNbZGF5XTtcbiAgICAgIGlmICghZGF5T2JqZWN0KSB7XG4gICAgICAgIGRheU9iamVjdCA9IGRheXNbZGF5XSA9IHt9IGFzIERheVZpZXdNb2RlbDtcbiAgICAgIH1cbiAgICAgIGRheU9iamVjdC5kYXRlID0gbmV3RGF0ZTtcbiAgICAgIGRheU9iamVjdC5jb250ZXh0ID0gT2JqZWN0LmFzc2lnbihkYXlPYmplY3QuY29udGV4dCB8fCB7fSwge1xuICAgICAgICAkaW1wbGljaXQ6IG5ld0RhdGUsXG4gICAgICAgIGRhdGU6IG5ld0RhdGUsXG4gICAgICAgIGRhdGE6IGNvbnRleHRVc2VyRGF0YSxcbiAgICAgICAgY3VycmVudE1vbnRoOiBtb250aC5udW1iZXIsIGRpc2FibGVkLFxuICAgICAgICBmb2N1c2VkOiBmYWxzZSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLCB0b2RheVxuICAgICAgfSk7XG4gICAgICBkYXlPYmplY3QudGFiaW5kZXggPSAtMTtcbiAgICAgIGRheU9iamVjdC5hcmlhTGFiZWwgPSBhcmlhTGFiZWw7XG4gICAgICBkYXlPYmplY3QuaGlkZGVuID0gZmFsc2U7XG5cbiAgICAgIGRhdGUgPSBuZXh0RGF0ZTtcbiAgICB9XG5cbiAgICB3ZWVrT2JqZWN0Lm51bWJlciA9IGNhbGVuZGFyLmdldFdlZWtOdW1iZXIoZGF5cy5tYXAoZGF5ID0+IGRheS5kYXRlKSwgZmlyc3REYXlPZldlZWspO1xuXG4gICAgLy8gbWFya2luZyB3ZWVrIGFzIGNvbGxhcHNlZFxuICAgIHdlZWtPYmplY3QuY29sbGFwc2VkID0gb3V0c2lkZURheXMgPT09ICdjb2xsYXBzZWQnICYmIGRheXNbMF0uZGF0ZS5tb250aCAhPT0gbW9udGgubnVtYmVyICYmXG4gICAgICAgIGRheXNbZGF5cy5sZW5ndGggLSAxXS5kYXRlLm1vbnRoICE9PSBtb250aC5udW1iZXI7XG4gIH1cblxuICByZXR1cm4gbW9udGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaXJzdFZpZXdEYXRlKGNhbGVuZGFyOiBOZ2JDYWxlbmRhciwgZGF0ZTogTmdiRGF0ZSwgZmlyc3REYXlPZldlZWs6IG51bWJlcik6IE5nYkRhdGUge1xuICBjb25zdCBkYXlzUGVyV2VlayA9IGNhbGVuZGFyLmdldERheXNQZXJXZWVrKCk7XG4gIGNvbnN0IGZpcnN0TW9udGhEYXRlID0gbmV3IE5nYkRhdGUoZGF0ZS55ZWFyLCBkYXRlLm1vbnRoLCAxKTtcbiAgY29uc3QgZGF5T2ZXZWVrID0gY2FsZW5kYXIuZ2V0V2Vla2RheShmaXJzdE1vbnRoRGF0ZSkgJSBkYXlzUGVyV2VlaztcbiAgcmV0dXJuIGNhbGVuZGFyLmdldFByZXYoZmlyc3RNb250aERhdGUsICdkJywgKGRheXNQZXJXZWVrICsgZGF5T2ZXZWVrIC0gZmlyc3REYXlPZldlZWspICUgZGF5c1BlcldlZWspO1xufVxuIiwiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIExPQ0FMRV9JRH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1TdHlsZSwgZ2V0TG9jYWxlRGF5TmFtZXMsIGdldExvY2FsZU1vbnRoTmFtZXMsIFRyYW5zbGF0aW9uV2lkdGgsIGZvcm1hdERhdGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge05nYkRhdGVTdHJ1Y3R9IGZyb20gJy4vbmdiLWRhdGUtc3RydWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIE5HQl9EQVRFUElDS0VSXzE4Tl9GQUNUT1JZKGxvY2FsZSkge1xuICByZXR1cm4gbmV3IE5nYkRhdGVwaWNrZXJJMThuRGVmYXVsdChsb2NhbGUpO1xufVxuXG4vKipcbiAqIEEgc2VydmljZSBzdXBwbHlpbmcgaTE4biBkYXRhIHRvIHRoZSBkYXRlcGlja2VyIGNvbXBvbmVudC5cbiAqXG4gKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHNlcnZpY2UgdXNlcyB0aGUgQW5ndWxhciBsb2NhbGUgYW5kIHJlZ2lzdGVyZWQgbG9jYWxlIGRhdGEgZm9yXG4gKiB3ZWVrZGF5cyBhbmQgbW9udGggbmFtZXMgKGFzIGV4cGxhaW5lZCBpbiB0aGUgQW5ndWxhciBpMThuIGd1aWRlKS5cbiAqXG4gKiBJdCBhbHNvIHByb3ZpZGVzIGEgd2F5IHRvIGkxOG4gZGF0YSB0aGF0IGRlcGVuZHMgb24gY2FsZW5kYXIgY2FsY3VsYXRpb25zLCBsaWtlIGFyaWEgbGFiZWxzLCBkYXksIHdlZWsgYW5kIHllYXJcbiAqIG51bWVyYWxzLiBGb3Igb3RoZXIgc3RhdGljIGxhYmVscyB0aGUgZGF0ZXBpY2tlciB1c2VzIHRoZSBkZWZhdWx0IEFuZ3VsYXIgaTE4bi5cbiAqXG4gKiBTZWUgdGhlIFtpMThuIGRlbW9dKCMvY29tcG9uZW50cy9kYXRlcGlja2VyL2V4YW1wbGVzI2kxOG4pIGFuZFxuICogW0hlYnJldyBjYWxlbmRhciBkZW1vXSgjL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9jYWxlbmRhcnMjaGVicmV3KSBvbiBob3cgdG8gZXh0ZW5kIHRoaXMgY2xhc3MgYW5kIGRlZmluZVxuICogYSBjdXN0b20gcHJvdmlkZXIgZm9yIGkxOG4uXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCcsIHVzZUZhY3Rvcnk6IE5HQl9EQVRFUElDS0VSXzE4Tl9GQUNUT1JZLCBkZXBzOiBbTE9DQUxFX0lEXX0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmdiRGF0ZXBpY2tlckkxOG4ge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2hvcnQgd2Vla2RheSBuYW1lIHRvIGRpc3BsYXkgaW4gdGhlIGhlYWRpbmcgb2YgdGhlIG1vbnRoIHZpZXcuXG4gICAqXG4gICAqIFdpdGggZGVmYXVsdCBjYWxlbmRhciB3ZSB1c2UgSVNPIDg2MDE6ICd3ZWVrZGF5JyBpcyAxPU1vbiAuLi4gNz1TdW4uXG4gICAqL1xuICBhYnN0cmFjdCBnZXRXZWVrZGF5U2hvcnROYW1lKHdlZWtkYXk6IG51bWJlcik6IHN0cmluZztcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2hvcnQgbW9udGggbmFtZSB0byBkaXNwbGF5IGluIHRoZSBkYXRlIHBpY2tlciBuYXZpZ2F0aW9uLlxuICAgKlxuICAgKiBXaXRoIGRlZmF1bHQgY2FsZW5kYXIgd2UgdXNlIElTTyA4NjAxOiAnbW9udGgnIGlzIDE9SmFuIC4uLiAxMj1EZWMuXG4gICAqL1xuICBhYnN0cmFjdCBnZXRNb250aFNob3J0TmFtZShtb250aDogbnVtYmVyLCB5ZWFyPzogbnVtYmVyKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBmdWxsIG1vbnRoIG5hbWUgdG8gZGlzcGxheSBpbiB0aGUgZGF0ZSBwaWNrZXIgbmF2aWdhdGlvbi5cbiAgICpcbiAgICogV2l0aCBkZWZhdWx0IGNhbGVuZGFyIHdlIHVzZSBJU08gODYwMTogJ21vbnRoJyBpcyAxPUphbiAuLi4gMTI9RGVjLlxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0TW9udGhGdWxsTmFtZShtb250aDogbnVtYmVyLCB5ZWFyPzogbnVtYmVyKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSBmb3IgYSBzcGVjaWZpYyBkYXRlLlxuICAgKlxuICAgKiBAc2luY2UgMi4wLjBcbiAgICovXG4gIGFic3RyYWN0IGdldERheUFyaWFMYWJlbChkYXRlOiBOZ2JEYXRlU3RydWN0KTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIGEgZGF5IHRoYXQgaXMgcmVuZGVyZWQgaW4gYSBkYXkgY2VsbC5cbiAgICpcbiAgICogQHNpbmNlIDMuMC4wXG4gICAqL1xuICBnZXREYXlOdW1lcmFscyhkYXRlOiBOZ2JEYXRlU3RydWN0KTogc3RyaW5nIHsgcmV0dXJuIGAke2RhdGUuZGF5fWA7IH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiBhIHdlZWsgbnVtYmVyIHJlbmRlcmVkIGJ5IGRhdGVwaWNrZXIuXG4gICAqXG4gICAqIEBzaW5jZSAzLjAuMFxuICAgKi9cbiAgZ2V0V2Vla051bWVyYWxzKHdlZWtOdW1iZXI6IG51bWJlcik6IHN0cmluZyB7IHJldHVybiBgJHt3ZWVrTnVtYmVyfWA7IH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiBhIHllYXIgdGhhdCBpcyByZW5kZXJlZCBpbiB0aGUgZGF0ZXBpY2tlciB5ZWFyIHNlbGVjdCBib3guXG4gICAqXG4gICAqIEBzaW5jZSAzLjAuMFxuICAgKi9cbiAgZ2V0WWVhck51bWVyYWxzKHllYXI6IG51bWJlcik6IHN0cmluZyB7IHJldHVybiBgJHt5ZWFyfWA7IH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5nYkRhdGVwaWNrZXJJMThuRGVmYXVsdCBleHRlbmRzIE5nYkRhdGVwaWNrZXJJMThuIHtcbiAgcHJpdmF0ZSBfd2Vla2RheXNTaG9ydDogQXJyYXk8c3RyaW5nPjtcbiAgcHJpdmF0ZSBfbW9udGhzU2hvcnQ6IEFycmF5PHN0cmluZz47XG4gIHByaXZhdGUgX21vbnRoc0Z1bGw6IEFycmF5PHN0cmluZz47XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgX2xvY2FsZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGNvbnN0IHdlZWtkYXlzU3RhcnRpbmdPblN1bmRheSA9IGdldExvY2FsZURheU5hbWVzKF9sb2NhbGUsIEZvcm1TdHlsZS5TdGFuZGFsb25lLCBUcmFuc2xhdGlvbldpZHRoLlNob3J0KTtcbiAgICB0aGlzLl93ZWVrZGF5c1Nob3J0ID0gd2Vla2RheXNTdGFydGluZ09uU3VuZGF5Lm1hcCgoZGF5LCBpbmRleCkgPT4gd2Vla2RheXNTdGFydGluZ09uU3VuZGF5WyhpbmRleCArIDEpICUgN10pO1xuXG4gICAgdGhpcy5fbW9udGhzU2hvcnQgPSBnZXRMb2NhbGVNb250aE5hbWVzKF9sb2NhbGUsIEZvcm1TdHlsZS5TdGFuZGFsb25lLCBUcmFuc2xhdGlvbldpZHRoLkFiYnJldmlhdGVkKTtcbiAgICB0aGlzLl9tb250aHNGdWxsID0gZ2V0TG9jYWxlTW9udGhOYW1lcyhfbG9jYWxlLCBGb3JtU3R5bGUuU3RhbmRhbG9uZSwgVHJhbnNsYXRpb25XaWR0aC5XaWRlKTtcbiAgfVxuXG4gIGdldFdlZWtkYXlTaG9ydE5hbWUod2Vla2RheTogbnVtYmVyKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRbd2Vla2RheSAtIDFdOyB9XG5cbiAgZ2V0TW9udGhTaG9ydE5hbWUobW9udGg6IG51bWJlcik6IHN0cmluZyB7IHJldHVybiB0aGlzLl9tb250aHNTaG9ydFttb250aCAtIDFdOyB9XG5cbiAgZ2V0TW9udGhGdWxsTmFtZShtb250aDogbnVtYmVyKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX21vbnRoc0Z1bGxbbW9udGggLSAxXTsgfVxuXG4gIGdldERheUFyaWFMYWJlbChkYXRlOiBOZ2JEYXRlU3RydWN0KTogc3RyaW5nIHtcbiAgICBjb25zdCBqc0RhdGUgPSBuZXcgRGF0ZShkYXRlLnllYXIsIGRhdGUubW9udGggLSAxLCBkYXRlLmRheSk7XG4gICAgcmV0dXJuIGZvcm1hdERhdGUoanNEYXRlLCAnZnVsbERhdGUnLCB0aGlzLl9sb2NhbGUpO1xuICB9XG59XG4iLCJpbXBvcnQge05nYkNhbGVuZGFyLCBOZ2JQZXJpb2R9IGZyb20gJy4vbmdiLWNhbGVuZGFyJztcbmltcG9ydCB7TmdiRGF0ZX0gZnJvbSAnLi9uZ2ItZGF0ZSc7XG5pbXBvcnQge05nYkRhdGVTdHJ1Y3R9IGZyb20gJy4vbmdiLWRhdGUtc3RydWN0JztcbmltcG9ydCB7RGF0ZXBpY2tlclZpZXdNb2RlbCwgTmdiRGF5VGVtcGxhdGVEYXRhLCBOZ2JNYXJrRGlzYWJsZWR9IGZyb20gJy4vZGF0ZXBpY2tlci12aWV3LW1vZGVsJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2lzSW50ZWdlciwgdG9JbnRlZ2VyfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGJ1aWxkTW9udGhzLFxuICBjaGVja0RhdGVJblJhbmdlLFxuICBjaGVja01pbkJlZm9yZU1heCxcbiAgaXNDaGFuZ2VkRGF0ZSxcbiAgaXNDaGFuZ2VkTW9udGgsXG4gIGlzRGF0ZVNlbGVjdGFibGUsXG4gIGdlbmVyYXRlU2VsZWN0Qm94WWVhcnMsXG4gIGdlbmVyYXRlU2VsZWN0Qm94TW9udGhzLFxuICBwcmV2TW9udGhEaXNhYmxlZCxcbiAgbmV4dE1vbnRoRGlzYWJsZWRcbn0gZnJvbSAnLi9kYXRlcGlja2VyLXRvb2xzJztcblxuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TmdiRGF0ZXBpY2tlckkxOG59IGZyb20gJy4vZGF0ZXBpY2tlci1pMThuJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5nYkRhdGVwaWNrZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfbW9kZWwkID0gbmV3IFN1YmplY3Q8RGF0ZXBpY2tlclZpZXdNb2RlbD4oKTtcblxuICBwcml2YXRlIF9zZWxlY3QkID0gbmV3IFN1YmplY3Q8TmdiRGF0ZT4oKTtcblxuICBwcml2YXRlIF9zdGF0ZTogRGF0ZXBpY2tlclZpZXdNb2RlbCA9IHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZGlzcGxheU1vbnRoczogMSxcbiAgICBmaXJzdERheU9mV2VlazogMSxcbiAgICBmb2N1c1Zpc2libGU6IGZhbHNlLFxuICAgIG1vbnRoczogW10sXG4gICAgbmF2aWdhdGlvbjogJ3NlbGVjdCcsXG4gICAgb3V0c2lkZURheXM6ICd2aXNpYmxlJyxcbiAgICBwcmV2RGlzYWJsZWQ6IGZhbHNlLFxuICAgIG5leHREaXNhYmxlZDogZmFsc2UsXG4gICAgc2VsZWN0Qm94ZXM6IHt5ZWFyczogW10sIG1vbnRoczogW119LFxuICAgIHNlbGVjdGVkRGF0ZTogbnVsbFxuICB9O1xuXG4gIGdldCBtb2RlbCQoKTogT2JzZXJ2YWJsZTxEYXRlcGlja2VyVmlld01vZGVsPiB7IHJldHVybiB0aGlzLl9tb2RlbCQucGlwZShmaWx0ZXIobW9kZWwgPT4gbW9kZWwubW9udGhzLmxlbmd0aCA+IDApKTsgfVxuXG4gIGdldCBzZWxlY3QkKCk6IE9ic2VydmFibGU8TmdiRGF0ZT4geyByZXR1cm4gdGhpcy5fc2VsZWN0JC5waXBlKGZpbHRlcihkYXRlID0+IGRhdGUgIT09IG51bGwpKTsgfVxuXG4gIHNldCBkYXlUZW1wbGF0ZURhdGEoZGF5VGVtcGxhdGVEYXRhOiBOZ2JEYXlUZW1wbGF0ZURhdGEpIHtcbiAgICBpZiAodGhpcy5fc3RhdGUuZGF5VGVtcGxhdGVEYXRhICE9PSBkYXlUZW1wbGF0ZURhdGEpIHtcbiAgICAgIHRoaXMuX25leHRTdGF0ZSh7ZGF5VGVtcGxhdGVEYXRhfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuX3N0YXRlLmRpc2FibGVkICE9PSBkaXNhYmxlZCkge1xuICAgICAgdGhpcy5fbmV4dFN0YXRlKHtkaXNhYmxlZH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldCBkaXNwbGF5TW9udGhzKGRpc3BsYXlNb250aHM6IG51bWJlcikge1xuICAgIGRpc3BsYXlNb250aHMgPSB0b0ludGVnZXIoZGlzcGxheU1vbnRocyk7XG4gICAgaWYgKGlzSW50ZWdlcihkaXNwbGF5TW9udGhzKSAmJiBkaXNwbGF5TW9udGhzID4gMCAmJiB0aGlzLl9zdGF0ZS5kaXNwbGF5TW9udGhzICE9PSBkaXNwbGF5TW9udGhzKSB7XG4gICAgICB0aGlzLl9uZXh0U3RhdGUoe2Rpc3BsYXlNb250aHN9KTtcbiAgICB9XG4gIH1cblxuICBzZXQgZmlyc3REYXlPZldlZWsoZmlyc3REYXlPZldlZWs6IG51bWJlcikge1xuICAgIGZpcnN0RGF5T2ZXZWVrID0gdG9JbnRlZ2VyKGZpcnN0RGF5T2ZXZWVrKTtcbiAgICBpZiAoaXNJbnRlZ2VyKGZpcnN0RGF5T2ZXZWVrKSAmJiBmaXJzdERheU9mV2VlayA+PSAwICYmIHRoaXMuX3N0YXRlLmZpcnN0RGF5T2ZXZWVrICE9PSBmaXJzdERheU9mV2Vlaykge1xuICAgICAgdGhpcy5fbmV4dFN0YXRlKHtmaXJzdERheU9mV2Vla30pO1xuICAgIH1cbiAgfVxuXG4gIHNldCBmb2N1c1Zpc2libGUoZm9jdXNWaXNpYmxlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuX3N0YXRlLmZvY3VzVmlzaWJsZSAhPT0gZm9jdXNWaXNpYmxlICYmICF0aGlzLl9zdGF0ZS5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5fbmV4dFN0YXRlKHtmb2N1c1Zpc2libGV9KTtcbiAgICB9XG4gIH1cblxuICBzZXQgbWF4RGF0ZShkYXRlOiBOZ2JEYXRlKSB7XG4gICAgY29uc3QgbWF4RGF0ZSA9IHRoaXMudG9WYWxpZERhdGUoZGF0ZSwgbnVsbCk7XG4gICAgaWYgKGlzQ2hhbmdlZERhdGUodGhpcy5fc3RhdGUubWF4RGF0ZSwgbWF4RGF0ZSkpIHtcbiAgICAgIHRoaXMuX25leHRTdGF0ZSh7bWF4RGF0ZX0pO1xuICAgIH1cbiAgfVxuXG4gIHNldCBtYXJrRGlzYWJsZWQobWFya0Rpc2FibGVkOiBOZ2JNYXJrRGlzYWJsZWQpIHtcbiAgICBpZiAodGhpcy5fc3RhdGUubWFya0Rpc2FibGVkICE9PSBtYXJrRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuX25leHRTdGF0ZSh7bWFya0Rpc2FibGVkfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0IG1pbkRhdGUoZGF0ZTogTmdiRGF0ZSkge1xuICAgIGNvbnN0IG1pbkRhdGUgPSB0aGlzLnRvVmFsaWREYXRlKGRhdGUsIG51bGwpO1xuICAgIGlmIChpc0NoYW5nZWREYXRlKHRoaXMuX3N0YXRlLm1pbkRhdGUsIG1pbkRhdGUpKSB7XG4gICAgICB0aGlzLl9uZXh0U3RhdGUoe21pbkRhdGV9KTtcbiAgICB9XG4gIH1cblxuICBzZXQgbmF2aWdhdGlvbihuYXZpZ2F0aW9uOiAnc2VsZWN0JyB8ICdhcnJvd3MnIHwgJ25vbmUnKSB7XG4gICAgaWYgKHRoaXMuX3N0YXRlLm5hdmlnYXRpb24gIT09IG5hdmlnYXRpb24pIHtcbiAgICAgIHRoaXMuX25leHRTdGF0ZSh7bmF2aWdhdGlvbn0pO1xuICAgIH1cbiAgfVxuXG4gIHNldCBvdXRzaWRlRGF5cyhvdXRzaWRlRGF5czogJ3Zpc2libGUnIHwgJ2NvbGxhcHNlZCcgfCAnaGlkZGVuJykge1xuICAgIGlmICh0aGlzLl9zdGF0ZS5vdXRzaWRlRGF5cyAhPT0gb3V0c2lkZURheXMpIHtcbiAgICAgIHRoaXMuX25leHRTdGF0ZSh7b3V0c2lkZURheXN9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jYWxlbmRhcjogTmdiQ2FsZW5kYXIsIHByaXZhdGUgX2kxOG46IE5nYkRhdGVwaWNrZXJJMThuKSB7fVxuXG4gIGZvY3VzKGRhdGU6IE5nYkRhdGUpIHtcbiAgICBpZiAoIXRoaXMuX3N0YXRlLmRpc2FibGVkICYmIHRoaXMuX2NhbGVuZGFyLmlzVmFsaWQoZGF0ZSkgJiYgaXNDaGFuZ2VkRGF0ZSh0aGlzLl9zdGF0ZS5mb2N1c0RhdGUsIGRhdGUpKSB7XG4gICAgICB0aGlzLl9uZXh0U3RhdGUoe2ZvY3VzRGF0ZTogZGF0ZX0pO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzTW92ZShwZXJpb2Q/OiBOZ2JQZXJpb2QsIG51bWJlcj86IG51bWJlcikge1xuICAgIHRoaXMuZm9jdXModGhpcy5fY2FsZW5kYXIuZ2V0TmV4dCh0aGlzLl9zdGF0ZS5mb2N1c0RhdGUsIHBlcmlvZCwgbnVtYmVyKSk7XG4gIH1cblxuICBmb2N1c1NlbGVjdCgpIHtcbiAgICBpZiAoaXNEYXRlU2VsZWN0YWJsZSh0aGlzLl9zdGF0ZS5mb2N1c0RhdGUsIHRoaXMuX3N0YXRlKSkge1xuICAgICAgdGhpcy5zZWxlY3QodGhpcy5fc3RhdGUuZm9jdXNEYXRlLCB7ZW1pdEV2ZW50OiB0cnVlfSk7XG4gICAgfVxuICB9XG5cbiAgb3BlbihkYXRlOiBOZ2JEYXRlKSB7XG4gICAgY29uc3QgZmlyc3REYXRlID0gdGhpcy50b1ZhbGlkRGF0ZShkYXRlLCB0aGlzLl9jYWxlbmRhci5nZXRUb2RheSgpKTtcbiAgICBpZiAoIXRoaXMuX3N0YXRlLmRpc2FibGVkICYmICghdGhpcy5fc3RhdGUuZmlyc3REYXRlIHx8IGlzQ2hhbmdlZE1vbnRoKHRoaXMuX3N0YXRlLmZpcnN0RGF0ZSwgZGF0ZSkpKSB7XG4gICAgICB0aGlzLl9uZXh0U3RhdGUoe2ZpcnN0RGF0ZX0pO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdChkYXRlOiBOZ2JEYXRlLCBvcHRpb25zOiB7ZW1pdEV2ZW50PzogYm9vbGVhbn0gPSB7fSkge1xuICAgIGNvbnN0IHNlbGVjdGVkRGF0ZSA9IHRoaXMudG9WYWxpZERhdGUoZGF0ZSwgbnVsbCk7XG4gICAgaWYgKCF0aGlzLl9zdGF0ZS5kaXNhYmxlZCkge1xuICAgICAgaWYgKGlzQ2hhbmdlZERhdGUodGhpcy5fc3RhdGUuc2VsZWN0ZWREYXRlLCBzZWxlY3RlZERhdGUpKSB7XG4gICAgICAgIHRoaXMuX25leHRTdGF0ZSh7c2VsZWN0ZWREYXRlfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmVtaXRFdmVudCAmJiBpc0RhdGVTZWxlY3RhYmxlKHNlbGVjdGVkRGF0ZSwgdGhpcy5fc3RhdGUpKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdCQubmV4dChzZWxlY3RlZERhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRvVmFsaWREYXRlKGRhdGU6IE5nYkRhdGVTdHJ1Y3QsIGRlZmF1bHRWYWx1ZT86IE5nYkRhdGUpOiBOZ2JEYXRlIHtcbiAgICBjb25zdCBuZ2JEYXRlID0gTmdiRGF0ZS5mcm9tKGRhdGUpO1xuICAgIGlmIChkZWZhdWx0VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVmYXVsdFZhbHVlID0gdGhpcy5fY2FsZW5kYXIuZ2V0VG9kYXkoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLmlzVmFsaWQobmdiRGF0ZSkgPyBuZ2JEYXRlIDogZGVmYXVsdFZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfbmV4dFN0YXRlKHBhdGNoOiBQYXJ0aWFsPERhdGVwaWNrZXJWaWV3TW9kZWw+KSB7XG4gICAgY29uc3QgbmV3U3RhdGUgPSB0aGlzLl91cGRhdGVTdGF0ZShwYXRjaCk7XG4gICAgdGhpcy5fcGF0Y2hDb250ZXh0cyhuZXdTdGF0ZSk7XG4gICAgdGhpcy5fc3RhdGUgPSBuZXdTdGF0ZTtcbiAgICB0aGlzLl9tb2RlbCQubmV4dCh0aGlzLl9zdGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIF9wYXRjaENvbnRleHRzKHN0YXRlOiBEYXRlcGlja2VyVmlld01vZGVsKSB7XG4gICAgY29uc3Qge21vbnRocywgZGlzcGxheU1vbnRocywgc2VsZWN0ZWREYXRlLCBmb2N1c0RhdGUsIGZvY3VzVmlzaWJsZSwgZGlzYWJsZWQsIG91dHNpZGVEYXlzfSA9IHN0YXRlO1xuICAgIHN0YXRlLm1vbnRocy5mb3JFYWNoKG1vbnRoID0+IHtcbiAgICAgIG1vbnRoLndlZWtzLmZvckVhY2god2VlayA9PiB7XG4gICAgICAgIHdlZWsuZGF5cy5mb3JFYWNoKGRheSA9PiB7XG5cbiAgICAgICAgICAvLyBwYXRjaCBmb2N1cyBmbGFnXG4gICAgICAgICAgaWYgKGZvY3VzRGF0ZSkge1xuICAgICAgICAgICAgZGF5LmNvbnRleHQuZm9jdXNlZCA9IGZvY3VzRGF0ZS5lcXVhbHMoZGF5LmRhdGUpICYmIGZvY3VzVmlzaWJsZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBjYWxjdWxhdGluZyB0YWJpbmRleFxuICAgICAgICAgIGRheS50YWJpbmRleCA9ICFkaXNhYmxlZCAmJiBkYXkuZGF0ZS5lcXVhbHMoZm9jdXNEYXRlKSAmJiBmb2N1c0RhdGUubW9udGggPT09IG1vbnRoLm51bWJlciA/IDAgOiAtMTtcblxuICAgICAgICAgIC8vIG92ZXJyaWRlIGNvbnRleHQgZGlzYWJsZWRcbiAgICAgICAgICBpZiAoZGlzYWJsZWQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGRheS5jb250ZXh0LmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBwYXRjaCBzZWxlY3Rpb24gZmxhZ1xuICAgICAgICAgIGlmIChzZWxlY3RlZERhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZGF5LmNvbnRleHQuc2VsZWN0ZWQgPSBzZWxlY3RlZERhdGUgIT09IG51bGwgJiYgc2VsZWN0ZWREYXRlLmVxdWFscyhkYXkuZGF0ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gdmlzaWJpbGl0eVxuICAgICAgICAgIGlmIChtb250aC5udW1iZXIgIT09IGRheS5kYXRlLm1vbnRoKSB7XG4gICAgICAgICAgICBkYXkuaGlkZGVuID0gb3V0c2lkZURheXMgPT09ICdoaWRkZW4nIHx8IG91dHNpZGVEYXlzID09PSAnY29sbGFwc2VkJyB8fFxuICAgICAgICAgICAgICAgIChkaXNwbGF5TW9udGhzID4gMSAmJiBkYXkuZGF0ZS5hZnRlcihtb250aHNbMF0uZmlyc3REYXRlKSAmJlxuICAgICAgICAgICAgICAgICBkYXkuZGF0ZS5iZWZvcmUobW9udGhzW2Rpc3BsYXlNb250aHMgLSAxXS5sYXN0RGF0ZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVN0YXRlKHBhdGNoOiBQYXJ0aWFsPERhdGVwaWNrZXJWaWV3TW9kZWw+KTogRGF0ZXBpY2tlclZpZXdNb2RlbCB7XG4gICAgLy8gcGF0Y2hpbmcgZmllbGRzXG4gICAgY29uc3Qgc3RhdGUgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9zdGF0ZSwgcGF0Y2gpO1xuXG4gICAgbGV0IHN0YXJ0RGF0ZSA9IHN0YXRlLmZpcnN0RGF0ZTtcblxuICAgIC8vIG1pbi9tYXggZGF0ZXMgY2hhbmdlZFxuICAgIGlmICgnbWluRGF0ZScgaW4gcGF0Y2ggfHwgJ21heERhdGUnIGluIHBhdGNoKSB7XG4gICAgICBjaGVja01pbkJlZm9yZU1heChzdGF0ZS5taW5EYXRlLCBzdGF0ZS5tYXhEYXRlKTtcbiAgICAgIHN0YXRlLmZvY3VzRGF0ZSA9IGNoZWNrRGF0ZUluUmFuZ2Uoc3RhdGUuZm9jdXNEYXRlLCBzdGF0ZS5taW5EYXRlLCBzdGF0ZS5tYXhEYXRlKTtcbiAgICAgIHN0YXRlLmZpcnN0RGF0ZSA9IGNoZWNrRGF0ZUluUmFuZ2Uoc3RhdGUuZmlyc3REYXRlLCBzdGF0ZS5taW5EYXRlLCBzdGF0ZS5tYXhEYXRlKTtcbiAgICAgIHN0YXJ0RGF0ZSA9IHN0YXRlLmZvY3VzRGF0ZTtcbiAgICB9XG5cbiAgICAvLyBkaXNhYmxlZFxuICAgIGlmICgnZGlzYWJsZWQnIGluIHBhdGNoKSB7XG4gICAgICBzdGF0ZS5mb2N1c1Zpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBpbml0aWFsIHJlYnVpbGQgdmlhICdzZWxlY3QoKSdcbiAgICBpZiAoJ3NlbGVjdGVkRGF0ZScgaW4gcGF0Y2ggJiYgdGhpcy5fc3RhdGUubW9udGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgc3RhcnREYXRlID0gc3RhdGUuc2VsZWN0ZWREYXRlO1xuICAgIH1cblxuICAgIC8vIHRlcm1pbmF0ZSBlYXJseSBpZiBvbmx5IGZvY3VzIHZpc2liaWxpdHkgd2FzIGNoYW5nZWRcbiAgICBpZiAoJ2ZvY3VzVmlzaWJsZScgaW4gcGF0Y2gpIHtcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG5cbiAgICAvLyBmb2N1cyBkYXRlIGNoYW5nZWRcbiAgICBpZiAoJ2ZvY3VzRGF0ZScgaW4gcGF0Y2gpIHtcbiAgICAgIHN0YXRlLmZvY3VzRGF0ZSA9IGNoZWNrRGF0ZUluUmFuZ2Uoc3RhdGUuZm9jdXNEYXRlLCBzdGF0ZS5taW5EYXRlLCBzdGF0ZS5tYXhEYXRlKTtcbiAgICAgIHN0YXJ0RGF0ZSA9IHN0YXRlLmZvY3VzRGF0ZTtcblxuICAgICAgLy8gbm90aGluZyB0byByZWJ1aWxkIGlmIG9ubHkgZm9jdXMgY2hhbmdlZCBhbmQgaXQgaXMgc3RpbGwgdmlzaWJsZVxuICAgICAgaWYgKHN0YXRlLm1vbnRocy5sZW5ndGggIT09IDAgJiYgIXN0YXRlLmZvY3VzRGF0ZS5iZWZvcmUoc3RhdGUuZmlyc3REYXRlKSAmJlxuICAgICAgICAgICFzdGF0ZS5mb2N1c0RhdGUuYWZ0ZXIoc3RhdGUubGFzdERhdGUpKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBmaXJzdCBkYXRlIGNoYW5nZWRcbiAgICBpZiAoJ2ZpcnN0RGF0ZScgaW4gcGF0Y2gpIHtcbiAgICAgIHN0YXRlLmZpcnN0RGF0ZSA9IGNoZWNrRGF0ZUluUmFuZ2Uoc3RhdGUuZmlyc3REYXRlLCBzdGF0ZS5taW5EYXRlLCBzdGF0ZS5tYXhEYXRlKTtcbiAgICAgIHN0YXJ0RGF0ZSA9IHN0YXRlLmZpcnN0RGF0ZTtcbiAgICB9XG5cbiAgICAvLyByZWJ1aWxkaW5nIG1vbnRoc1xuICAgIGlmIChzdGFydERhdGUpIHtcbiAgICAgIGNvbnN0IGZvcmNlUmVidWlsZCA9ICdkYXlUZW1wbGF0ZURhdGEnIGluIHBhdGNoIHx8ICdmaXJzdERheU9mV2VlaycgaW4gcGF0Y2ggfHwgJ21hcmtEaXNhYmxlZCcgaW4gcGF0Y2ggfHxcbiAgICAgICAgICAnbWluRGF0ZScgaW4gcGF0Y2ggfHwgJ21heERhdGUnIGluIHBhdGNoIHx8ICdkaXNhYmxlZCcgaW4gcGF0Y2ggfHwgJ291dHNpZGVEYXlzJyBpbiBwYXRjaDtcblxuICAgICAgY29uc3QgbW9udGhzID0gYnVpbGRNb250aHModGhpcy5fY2FsZW5kYXIsIHN0YXJ0RGF0ZSwgc3RhdGUsIHRoaXMuX2kxOG4sIGZvcmNlUmVidWlsZCk7XG5cbiAgICAgIC8vIHVwZGF0aW5nIG1vbnRocyBhbmQgYm91bmRhcnkgZGF0ZXNcbiAgICAgIHN0YXRlLm1vbnRocyA9IG1vbnRocztcbiAgICAgIHN0YXRlLmZpcnN0RGF0ZSA9IG1vbnRocy5sZW5ndGggPiAwID8gbW9udGhzWzBdLmZpcnN0RGF0ZSA6IHVuZGVmaW5lZDtcbiAgICAgIHN0YXRlLmxhc3REYXRlID0gbW9udGhzLmxlbmd0aCA+IDAgPyBtb250aHNbbW9udGhzLmxlbmd0aCAtIDFdLmxhc3REYXRlIDogdW5kZWZpbmVkO1xuXG4gICAgICAvLyByZXNldCBzZWxlY3RlZCBkYXRlIGlmICdtYXJrRGlzYWJsZWQnIHJldHVybnMgdHJ1ZVxuICAgICAgaWYgKCdzZWxlY3RlZERhdGUnIGluIHBhdGNoICYmICFpc0RhdGVTZWxlY3RhYmxlKHN0YXRlLnNlbGVjdGVkRGF0ZSwgc3RhdGUpKSB7XG4gICAgICAgIHN0YXRlLnNlbGVjdGVkRGF0ZSA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIGFkanVzdGluZyBmb2N1cyBhZnRlciBtb250aHMgd2VyZSBidWlsdFxuICAgICAgaWYgKCdmaXJzdERhdGUnIGluIHBhdGNoKSB7XG4gICAgICAgIGlmIChzdGF0ZS5mb2N1c0RhdGUgPT09IHVuZGVmaW5lZCB8fCBzdGF0ZS5mb2N1c0RhdGUuYmVmb3JlKHN0YXRlLmZpcnN0RGF0ZSkgfHxcbiAgICAgICAgICAgIHN0YXRlLmZvY3VzRGF0ZS5hZnRlcihzdGF0ZS5sYXN0RGF0ZSkpIHtcbiAgICAgICAgICBzdGF0ZS5mb2N1c0RhdGUgPSBzdGFydERhdGU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gYWRqdXN0aW5nIG1vbnRocy95ZWFycyBmb3IgdGhlIHNlbGVjdCBib3ggbmF2aWdhdGlvblxuICAgICAgY29uc3QgeWVhckNoYW5nZWQgPSAhdGhpcy5fc3RhdGUuZmlyc3REYXRlIHx8IHRoaXMuX3N0YXRlLmZpcnN0RGF0ZS55ZWFyICE9PSBzdGF0ZS5maXJzdERhdGUueWVhcjtcbiAgICAgIGNvbnN0IG1vbnRoQ2hhbmdlZCA9ICF0aGlzLl9zdGF0ZS5maXJzdERhdGUgfHwgdGhpcy5fc3RhdGUuZmlyc3REYXRlLm1vbnRoICE9PSBzdGF0ZS5maXJzdERhdGUubW9udGg7XG4gICAgICBpZiAoc3RhdGUubmF2aWdhdGlvbiA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgICAgLy8geWVhcnMgLT4gIGJvdW5kYXJpZXMgKG1pbi9tYXggd2VyZSBjaGFuZ2VkKVxuICAgICAgICBpZiAoJ21pbkRhdGUnIGluIHBhdGNoIHx8ICdtYXhEYXRlJyBpbiBwYXRjaCB8fCBzdGF0ZS5zZWxlY3RCb3hlcy55ZWFycy5sZW5ndGggPT09IDAgfHwgeWVhckNoYW5nZWQpIHtcbiAgICAgICAgICBzdGF0ZS5zZWxlY3RCb3hlcy55ZWFycyA9IGdlbmVyYXRlU2VsZWN0Qm94WWVhcnMoc3RhdGUuZmlyc3REYXRlLCBzdGF0ZS5taW5EYXRlLCBzdGF0ZS5tYXhEYXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIG1vbnRocyAtPiB3aGVuIGN1cnJlbnQgeWVhciBvciBib3VuZGFyaWVzIGNoYW5nZVxuICAgICAgICBpZiAoJ21pbkRhdGUnIGluIHBhdGNoIHx8ICdtYXhEYXRlJyBpbiBwYXRjaCB8fCBzdGF0ZS5zZWxlY3RCb3hlcy5tb250aHMubGVuZ3RoID09PSAwIHx8IHllYXJDaGFuZ2VkKSB7XG4gICAgICAgICAgc3RhdGUuc2VsZWN0Qm94ZXMubW9udGhzID1cbiAgICAgICAgICAgICAgZ2VuZXJhdGVTZWxlY3RCb3hNb250aHModGhpcy5fY2FsZW5kYXIsIHN0YXRlLmZpcnN0RGF0ZSwgc3RhdGUubWluRGF0ZSwgc3RhdGUubWF4RGF0ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLnNlbGVjdEJveGVzID0ge3llYXJzOiBbXSwgbW9udGhzOiBbXX07XG4gICAgICB9XG5cbiAgICAgIC8vIHVwZGF0aW5nIG5hdmlnYXRpb24gYXJyb3dzIC0+IGJvdW5kYXJpZXMgY2hhbmdlIChtaW4vbWF4KSBvciBtb250aC95ZWFyIGNoYW5nZXNcbiAgICAgIGlmICgoc3RhdGUubmF2aWdhdGlvbiA9PT0gJ2Fycm93cycgfHwgc3RhdGUubmF2aWdhdGlvbiA9PT0gJ3NlbGVjdCcpICYmXG4gICAgICAgICAgKG1vbnRoQ2hhbmdlZCB8fCB5ZWFyQ2hhbmdlZCB8fCAnbWluRGF0ZScgaW4gcGF0Y2ggfHwgJ21heERhdGUnIGluIHBhdGNoIHx8ICdkaXNhYmxlZCcgaW4gcGF0Y2gpKSB7XG4gICAgICAgIHN0YXRlLnByZXZEaXNhYmxlZCA9IHN0YXRlLmRpc2FibGVkIHx8IHByZXZNb250aERpc2FibGVkKHRoaXMuX2NhbGVuZGFyLCBzdGF0ZS5maXJzdERhdGUsIHN0YXRlLm1pbkRhdGUpO1xuICAgICAgICBzdGF0ZS5uZXh0RGlzYWJsZWQgPSBzdGF0ZS5kaXNhYmxlZCB8fCBuZXh0TW9udGhEaXNhYmxlZCh0aGlzLl9jYWxlbmRhciwgc3RhdGUubGFzdERhdGUsIHN0YXRlLm1heERhdGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufVxuIiwiZXhwb3J0IGVudW0gS2V5IHtcbiAgVGFiID0gOSxcbiAgRW50ZXIgPSAxMyxcbiAgRXNjYXBlID0gMjcsXG4gIFNwYWNlID0gMzIsXG4gIFBhZ2VVcCA9IDMzLFxuICBQYWdlRG93biA9IDM0LFxuICBFbmQgPSAzNSxcbiAgSG9tZSA9IDM2LFxuICBBcnJvd0xlZnQgPSAzNyxcbiAgQXJyb3dVcCA9IDM4LFxuICBBcnJvd1JpZ2h0ID0gMzksXG4gIEFycm93RG93biA9IDQwXG59XG4iLCJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ2JEYXRlcGlja2VyU2VydmljZX0gZnJvbSAnLi9kYXRlcGlja2VyLXNlcnZpY2UnO1xuaW1wb3J0IHtOZ2JDYWxlbmRhcn0gZnJvbSAnLi9uZ2ItY2FsZW5kYXInO1xuaW1wb3J0IHtLZXl9IGZyb20gJy4uL3V0aWwva2V5JztcbmltcG9ydCB7TmdiRGF0ZX0gZnJvbSAnLi9uZ2ItZGF0ZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ2JEYXRlcGlja2VyS2V5TWFwU2VydmljZSB7XG4gIHByaXZhdGUgX21pbkRhdGU6IE5nYkRhdGU7XG4gIHByaXZhdGUgX21heERhdGU6IE5nYkRhdGU7XG4gIHByaXZhdGUgX2ZpcnN0Vmlld0RhdGU6IE5nYkRhdGU7XG4gIHByaXZhdGUgX2xhc3RWaWV3RGF0ZTogTmdiRGF0ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zZXJ2aWNlOiBOZ2JEYXRlcGlja2VyU2VydmljZSwgcHJpdmF0ZSBfY2FsZW5kYXI6IE5nYkNhbGVuZGFyKSB7XG4gICAgX3NlcnZpY2UubW9kZWwkLnN1YnNjcmliZShtb2RlbCA9PiB7XG4gICAgICB0aGlzLl9taW5EYXRlID0gbW9kZWwubWluRGF0ZTtcbiAgICAgIHRoaXMuX21heERhdGUgPSBtb2RlbC5tYXhEYXRlO1xuICAgICAgdGhpcy5fZmlyc3RWaWV3RGF0ZSA9IG1vZGVsLmZpcnN0RGF0ZTtcbiAgICAgIHRoaXMuX2xhc3RWaWV3RGF0ZSA9IG1vZGVsLmxhc3REYXRlO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvY2Vzc0tleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkZXByZWNhdGlvblxuICAgIHN3aXRjaCAoZXZlbnQud2hpY2gpIHtcbiAgICAgIGNhc2UgS2V5LlBhZ2VVcDpcbiAgICAgICAgdGhpcy5fc2VydmljZS5mb2N1c01vdmUoZXZlbnQuc2hpZnRLZXkgPyAneScgOiAnbScsIC0xKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEtleS5QYWdlRG93bjpcbiAgICAgICAgdGhpcy5fc2VydmljZS5mb2N1c01vdmUoZXZlbnQuc2hpZnRLZXkgPyAneScgOiAnbScsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgS2V5LkVuZDpcbiAgICAgICAgdGhpcy5fc2VydmljZS5mb2N1cyhldmVudC5zaGlmdEtleSA/IHRoaXMuX21heERhdGUgOiB0aGlzLl9sYXN0Vmlld0RhdGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgS2V5LkhvbWU6XG4gICAgICAgIHRoaXMuX3NlcnZpY2UuZm9jdXMoZXZlbnQuc2hpZnRLZXkgPyB0aGlzLl9taW5EYXRlIDogdGhpcy5fZmlyc3RWaWV3RGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBLZXkuQXJyb3dMZWZ0OlxuICAgICAgICB0aGlzLl9zZXJ2aWNlLmZvY3VzTW92ZSgnZCcsIC0xKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEtleS5BcnJvd1VwOlxuICAgICAgICB0aGlzLl9zZXJ2aWNlLmZvY3VzTW92ZSgnZCcsIC10aGlzLl9jYWxlbmRhci5nZXREYXlzUGVyV2VlaygpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEtleS5BcnJvd1JpZ2h0OlxuICAgICAgICB0aGlzLl9zZXJ2aWNlLmZvY3VzTW92ZSgnZCcsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgS2V5LkFycm93RG93bjpcbiAgICAgICAgdGhpcy5fc2VydmljZS5mb2N1c01vdmUoJ2QnLCB0aGlzLl9jYWxlbmRhci5nZXREYXlzUGVyV2VlaygpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEtleS5FbnRlcjpcbiAgICAgIGNhc2UgS2V5LlNwYWNlOlxuICAgICAgICB0aGlzLl9zZXJ2aWNlLmZvY3VzU2VsZWN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIG5vdGUgJ3JldHVybicgaW4gZGVmYXVsdCBjYXNlXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtOZ2JEYXRlfSBmcm9tICcuL25nYi1kYXRlJztcbmltcG9ydCB7TmdiRGF0ZVN0cnVjdH0gZnJvbSAnLi9uZ2ItZGF0ZS1zdHJ1Y3QnO1xuaW1wb3J0IHtEYXlUZW1wbGF0ZUNvbnRleHR9IGZyb20gJy4vZGF0ZXBpY2tlci1kYXktdGVtcGxhdGUtY29udGV4dCc7XG5cbmV4cG9ydCB0eXBlIE5nYk1hcmtEaXNhYmxlZCA9IChkYXRlOiBOZ2JEYXRlU3RydWN0LCBjdXJyZW50OiB7eWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyfSkgPT4gYm9vbGVhbjtcbmV4cG9ydCB0eXBlIE5nYkRheVRlbXBsYXRlRGF0YSA9IChkYXRlOiBOZ2JEYXRlU3RydWN0LCBjdXJyZW50OiB7eWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyfSkgPT4gYW55O1xuXG5leHBvcnQgdHlwZSBEYXlWaWV3TW9kZWwgPSB7XG4gIGRhdGU6IE5nYkRhdGUsXG4gIGNvbnRleHQ6IERheVRlbXBsYXRlQ29udGV4dCxcbiAgdGFiaW5kZXg6IG51bWJlcixcbiAgYXJpYUxhYmVsOiBzdHJpbmcsXG4gIGhpZGRlbjogYm9vbGVhblxufTtcblxuZXhwb3J0IHR5cGUgV2Vla1ZpZXdNb2RlbCA9IHtcbiAgbnVtYmVyOiBudW1iZXIsXG4gIGRheXM6IERheVZpZXdNb2RlbFtdLFxuICBjb2xsYXBzZWQ6IGJvb2xlYW5cbn07XG5cbmV4cG9ydCB0eXBlIE1vbnRoVmlld01vZGVsID0ge1xuICBmaXJzdERhdGU6IE5nYkRhdGUsXG4gIGxhc3REYXRlOiBOZ2JEYXRlLFxuICBudW1iZXI6IG51bWJlcixcbiAgeWVhcjogbnVtYmVyLFxuICB3ZWVrczogV2Vla1ZpZXdNb2RlbFtdLFxuICB3ZWVrZGF5czogbnVtYmVyW11cbn07XG5cbi8vIGNsYW5nLWZvcm1hdCBvZmZcbmV4cG9ydCB0eXBlIERhdGVwaWNrZXJWaWV3TW9kZWwgPSB7XG4gIGRheVRlbXBsYXRlRGF0YT86IE5nYkRheVRlbXBsYXRlRGF0YSxcbiAgZGlzYWJsZWQ6IGJvb2xlYW4sXG4gIGRpc3BsYXlNb250aHM6IG51bWJlcixcbiAgZmlyc3REYXRlPzogTmdiRGF0ZSxcbiAgZmlyc3REYXlPZldlZWs6IG51bWJlcixcbiAgZm9jdXNEYXRlPzogTmdiRGF0ZSxcbiAgZm9jdXNWaXNpYmxlOiBib29sZWFuLFxuICBsYXN0RGF0ZT86IE5nYkRhdGUsXG4gIG1hcmtEaXNhYmxlZD86IE5nYk1hcmtEaXNhYmxlZCxcbiAgbWF4RGF0ZT86IE5nYkRhdGUsXG4gIG1pbkRhdGU/OiBOZ2JEYXRlLFxuICBtb250aHM6IE1vbnRoVmlld01vZGVsW10sXG4gIG5hdmlnYXRpb246ICdzZWxlY3QnIHwgJ2Fycm93cycgfCAnbm9uZScsXG4gIG91dHNpZGVEYXlzOiAndmlzaWJsZScgfCAnY29sbGFwc2VkJyB8ICdoaWRkZW4nLFxuICBwcmV2RGlzYWJsZWQ6IGJvb2xlYW4sXG4gIG5leHREaXNhYmxlZDogYm9vbGVhbixcbiAgc2VsZWN0Qm94ZXM6IHtcbiAgICB5ZWFyczogbnVtYmVyW10sXG4gICAgbW9udGhzOiBudW1iZXJbXVxuICB9LFxuICBzZWxlY3RlZERhdGU6IE5nYkRhdGVcbn07XG4vLyBjbGFuZy1mb3JtYXQgb25cblxuZXhwb3J0IGVudW0gTmF2aWdhdGlvbkV2ZW50IHtcbiAgUFJFVixcbiAgTkVYVFxufVxuIiwiaW1wb3J0IHtJbmplY3RhYmxlLCBUZW1wbGF0ZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RheVRlbXBsYXRlQ29udGV4dH0gZnJvbSAnLi9kYXRlcGlja2VyLWRheS10ZW1wbGF0ZS1jb250ZXh0JztcbmltcG9ydCB7TmdiRGF0ZVN0cnVjdH0gZnJvbSAnLi9uZ2ItZGF0ZS1zdHJ1Y3QnO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBzZXJ2aWNlIGZvciB0aGUgW2BOZ2JEYXRlcGlja2VyYF0oIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI05nYkRhdGVwaWNrZXIpIGNvbXBvbmVudC5cbiAqXG4gKiBZb3UgY2FuIGluamVjdCB0aGlzIHNlcnZpY2UsIHR5cGljYWxseSBpbiB5b3VyIHJvb3QgY29tcG9uZW50LCBhbmQgY3VzdG9taXplIHRoZSB2YWx1ZXMgb2YgaXRzIHByb3BlcnRpZXMgaW5cbiAqIG9yZGVyIHRvIHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUgZGF0ZXBpY2tlcnMgdXNlZCBpbiB0aGUgYXBwbGljYXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIE5nYkRhdGVwaWNrZXJDb25maWcge1xuICBkYXlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8RGF5VGVtcGxhdGVDb250ZXh0PjtcbiAgZGF5VGVtcGxhdGVEYXRhOiAoZGF0ZTogTmdiRGF0ZVN0cnVjdCwgY3VycmVudDoge3llYXI6IG51bWJlciwgbW9udGg6IG51bWJlcn0pID0+IGFueTtcbiAgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIGRpc3BsYXlNb250aHMgPSAxO1xuICBmaXJzdERheU9mV2VlayA9IDE7XG4gIG1hcmtEaXNhYmxlZDogKGRhdGU6IE5nYkRhdGVTdHJ1Y3QsIGN1cnJlbnQ6IHt5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXJ9KSA9PiBib29sZWFuO1xuICBtaW5EYXRlOiBOZ2JEYXRlU3RydWN0O1xuICBtYXhEYXRlOiBOZ2JEYXRlU3RydWN0O1xuICBuYXZpZ2F0aW9uOiAnc2VsZWN0JyB8ICdhcnJvd3MnIHwgJ25vbmUnID0gJ3NlbGVjdCc7XG4gIG91dHNpZGVEYXlzOiAndmlzaWJsZScgfCAnY29sbGFwc2VkJyB8ICdoaWRkZW4nID0gJ3Zpc2libGUnO1xuICBzaG93V2Vla2RheXMgPSB0cnVlO1xuICBzaG93V2Vla051bWJlcnMgPSBmYWxzZTtcbiAgc3RhcnREYXRlOiB7eWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyfTtcbn1cbiIsImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nYkRhdGVTdHJ1Y3R9IGZyb20gJy4uL25nYi1kYXRlLXN0cnVjdCc7XG5pbXBvcnQge2lzSW50ZWdlcn0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcblxuZXhwb3J0IGZ1bmN0aW9uIE5HQl9EQVRFUElDS0VSX0RBVEVfQURBUFRFUl9GQUNUT1JZKCkge1xuICByZXR1cm4gbmV3IE5nYkRhdGVTdHJ1Y3RBZGFwdGVyKCk7XG59XG5cbi8qKlxuICogQW4gYWJzdHJhY3Qgc2VydmljZSB0aGF0IGRvZXMgdGhlIGNvbnZlcnNpb24gYmV0d2VlbiB0aGUgaW50ZXJuYWwgZGF0ZXBpY2tlciBgTmdiRGF0ZVN0cnVjdGAgbW9kZWwgYW5kXG4gKiBhbnkgcHJvdmlkZWQgdXNlciBkYXRlIG1vZGVsIGBEYCwgZXguIGEgc3RyaW5nLCBhIG5hdGl2ZSBkYXRlLCBldGMuXG4gKlxuICogVGhlIGFkYXB0ZXIgaXMgdXNlZCAqKm9ubHkqKiBmb3IgY29udmVyc2lvbiB3aGVuIGJpbmRpbmcgZGF0ZXBpY2tlciB0byBhIGZvcm0gY29udHJvbCxcbiAqIGV4LiBgWyhuZ01vZGVsKV09XCJ1c2VyRGF0ZU1vZGVsXCJgLiBIZXJlIGB1c2VyRGF0ZU1vZGVsYCBjYW4gYmUgb2YgYW55IHR5cGUuXG4gKlxuICogVGhlIGRlZmF1bHQgZGF0ZXBpY2tlciBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHdlIHVzZSBgTmdiRGF0ZVN0cnVjdGAgYXMgYSB1c2VyIG1vZGVsLlxuICpcbiAqIFNlZSB0aGUgW2RhdGUgZm9ybWF0IG92ZXJ2aWV3XSgjL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9vdmVydmlldyNkYXRlLW1vZGVsKSBmb3IgbW9yZSBkZXRhaWxzXG4gKiBhbmQgdGhlIFtjdXN0b20gYWRhcHRlciBkZW1vXSgjL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9leGFtcGxlcyNhZGFwdGVyKSBmb3IgYW4gZXhhbXBsZS5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290JywgdXNlRmFjdG9yeTogTkdCX0RBVEVQSUNLRVJfREFURV9BREFQVEVSX0ZBQ1RPUll9KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5nYkRhdGVBZGFwdGVyPEQ+IHtcbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgdXNlci1tb2RlbCBkYXRlIG9mIHR5cGUgYERgIHRvIGFuIGBOZ2JEYXRlU3RydWN0YCBmb3IgaW50ZXJuYWwgdXNlLlxuICAgKi9cbiAgYWJzdHJhY3QgZnJvbU1vZGVsKHZhbHVlOiBEKTogTmdiRGF0ZVN0cnVjdDtcblxuICAvKipcbiAgICogQ29udmVydHMgYW4gaW50ZXJuYWwgYE5nYkRhdGVTdHJ1Y3RgIGRhdGUgdG8gYSB1c2VyLW1vZGVsIGRhdGUgb2YgdHlwZSBgRGAuXG4gICAqL1xuICBhYnN0cmFjdCB0b01vZGVsKGRhdGU6IE5nYkRhdGVTdHJ1Y3QpOiBEO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmdiRGF0ZVN0cnVjdEFkYXB0ZXIgZXh0ZW5kcyBOZ2JEYXRlQWRhcHRlcjxOZ2JEYXRlU3RydWN0PiB7XG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIE5nYkRhdGVTdHJ1Y3QgdmFsdWUgaW50byBOZ2JEYXRlU3RydWN0IHZhbHVlXG4gICAqL1xuICBmcm9tTW9kZWwoZGF0ZTogTmdiRGF0ZVN0cnVjdCk6IE5nYkRhdGVTdHJ1Y3Qge1xuICAgIHJldHVybiAoZGF0ZSAmJiBpc0ludGVnZXIoZGF0ZS55ZWFyKSAmJiBpc0ludGVnZXIoZGF0ZS5tb250aCkgJiYgaXNJbnRlZ2VyKGRhdGUuZGF5KSkgP1xuICAgICAgICB7eWVhcjogZGF0ZS55ZWFyLCBtb250aDogZGF0ZS5tb250aCwgZGF5OiBkYXRlLmRheX0gOlxuICAgICAgICBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgTmdiRGF0ZVN0cnVjdCB2YWx1ZSBpbnRvIE5nYkRhdGVTdHJ1Y3QgdmFsdWVcbiAgICovXG4gIHRvTW9kZWwoZGF0ZTogTmdiRGF0ZVN0cnVjdCk6IE5nYkRhdGVTdHJ1Y3Qge1xuICAgIHJldHVybiAoZGF0ZSAmJiBpc0ludGVnZXIoZGF0ZS55ZWFyKSAmJiBpc0ludGVnZXIoZGF0ZS5tb250aCkgJiYgaXNJbnRlZ2VyKGRhdGUuZGF5KSkgP1xuICAgICAgICB7eWVhcjogZGF0ZS55ZWFyLCBtb250aDogZGF0ZS5tb250aCwgZGF5OiBkYXRlLmRheX0gOlxuICAgICAgICBudWxsO1xuICB9XG59XG4iLCJpbXBvcnQge2Zyb21FdmVudCwgbWVyZ2UsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXIsIHRha2UsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge05nYkNhbGVuZGFyfSBmcm9tICcuL25nYi1jYWxlbmRhcic7XG5pbXBvcnQge05nYkRhdGV9IGZyb20gJy4vbmdiLWRhdGUnO1xuaW1wb3J0IHtOZ2JEYXRlcGlja2VyU2VydmljZX0gZnJvbSAnLi9kYXRlcGlja2VyLXNlcnZpY2UnO1xuaW1wb3J0IHtOZ2JEYXRlcGlja2VyS2V5TWFwU2VydmljZX0gZnJvbSAnLi9kYXRlcGlja2VyLWtleW1hcC1zZXJ2aWNlJztcbmltcG9ydCB7RGF0ZXBpY2tlclZpZXdNb2RlbCwgTmF2aWdhdGlvbkV2ZW50fSBmcm9tICcuL2RhdGVwaWNrZXItdmlldy1tb2RlbCc7XG5pbXBvcnQge0RheVRlbXBsYXRlQ29udGV4dH0gZnJvbSAnLi9kYXRlcGlja2VyLWRheS10ZW1wbGF0ZS1jb250ZXh0JztcbmltcG9ydCB7TmdiRGF0ZXBpY2tlckNvbmZpZ30gZnJvbSAnLi9kYXRlcGlja2VyLWNvbmZpZyc7XG5pbXBvcnQge05nYkRhdGVBZGFwdGVyfSBmcm9tICcuL2FkYXB0ZXJzL25nYi1kYXRlLWFkYXB0ZXInO1xuaW1wb3J0IHtOZ2JEYXRlU3RydWN0fSBmcm9tICcuL25nYi1kYXRlLXN0cnVjdCc7XG5pbXBvcnQge05nYkRhdGVwaWNrZXJJMThufSBmcm9tICcuL2RhdGVwaWNrZXItaTE4bic7XG5pbXBvcnQge2lzQ2hhbmdlZERhdGUsIGlzQ2hhbmdlZE1vbnRofSBmcm9tICcuL2RhdGVwaWNrZXItdG9vbHMnO1xuaW1wb3J0IHtoYXNDbGFzc05hbWV9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5cbmNvbnN0IE5HQl9EQVRFUElDS0VSX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmdiRGF0ZXBpY2tlciksXG4gIG11bHRpOiB0cnVlXG59O1xuXG4vKipcbiAqIEFuIGV2ZW50IGVtaXR0ZWQgcmlnaHQgYmVmb3JlIHRoZSBuYXZpZ2F0aW9uIGhhcHBlbnMgYW5kIHRoZSBtb250aCBkaXNwbGF5ZWQgYnkgdGhlIGRhdGVwaWNrZXIgY2hhbmdlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZ2JEYXRlcGlja2VyTmF2aWdhdGVFdmVudCB7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudGx5IGRpc3BsYXllZCBtb250aC5cbiAgICovXG4gIGN1cnJlbnQ6IHt5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXJ9O1xuXG4gIC8qKlxuICAgKiBUaGUgbW9udGggd2UncmUgbmF2aWdhdGluZyB0by5cbiAgICovXG4gIG5leHQ6IHt5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXJ9O1xuXG4gIC8qKlxuICAgKiBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBwcmV2ZW50IG5hdmlnYXRpb24gZnJvbSBoYXBwZW5pbmcuXG4gICAqXG4gICAqIEBzaW5jZSA0LjEuMFxuICAgKi9cbiAgcHJldmVudERlZmF1bHQ6ICgpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQSBoaWdobHkgY29uZmlndXJhYmxlIGNvbXBvbmVudCB0aGF0IGhlbHBzIHlvdSB3aXRoIHNlbGVjdGluZyBjYWxlbmRhciBkYXRlcy5cbiAqXG4gKiBgTmdiRGF0ZXBpY2tlcmAgaXMgbWVhbnQgdG8gYmUgZGlzcGxheWVkIGlubGluZSBvbiBhIHBhZ2Ugb3IgcHV0IGluc2lkZSBhIHBvcHVwLlxuICovXG5AQ29tcG9uZW50KHtcbiAgZXhwb3J0QXM6ICduZ2JEYXRlcGlja2VyJyxcbiAgc2VsZWN0b3I6ICduZ2ItZGF0ZXBpY2tlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLnNjc3MnXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI2R0IGxldC1kYXRlPVwiZGF0ZVwiIGxldC1jdXJyZW50TW9udGg9XCJjdXJyZW50TW9udGhcIiBsZXQtc2VsZWN0ZWQ9XCJzZWxlY3RlZFwiIGxldC1kaXNhYmxlZD1cImRpc2FibGVkXCIgbGV0LWZvY3VzZWQ9XCJmb2N1c2VkXCI+XG4gICAgICA8ZGl2IG5nYkRhdGVwaWNrZXJEYXlWaWV3XG4gICAgICAgIFtkYXRlXT1cImRhdGVcIlxuICAgICAgICBbY3VycmVudE1vbnRoXT1cImN1cnJlbnRNb250aFwiXG4gICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtmb2N1c2VkXT1cImZvY3VzZWRcIj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8ZGl2IGNsYXNzPVwibmdiLWRwLWhlYWRlciBiZy1saWdodFwiPlxuICAgICAgPG5nYi1kYXRlcGlja2VyLW5hdmlnYXRpb24gKm5nSWY9XCJuYXZpZ2F0aW9uICE9PSAnbm9uZSdcIlxuICAgICAgICBbZGF0ZV09XCJtb2RlbC5maXJzdERhdGVcIlxuICAgICAgICBbbW9udGhzXT1cIm1vZGVsLm1vbnRoc1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJtb2RlbC5kaXNhYmxlZFwiXG4gICAgICAgIFtzaG93U2VsZWN0XT1cIm1vZGVsLm5hdmlnYXRpb24gPT09ICdzZWxlY3QnXCJcbiAgICAgICAgW3ByZXZEaXNhYmxlZF09XCJtb2RlbC5wcmV2RGlzYWJsZWRcIlxuICAgICAgICBbbmV4dERpc2FibGVkXT1cIm1vZGVsLm5leHREaXNhYmxlZFwiXG4gICAgICAgIFtzZWxlY3RCb3hlc109XCJtb2RlbC5zZWxlY3RCb3hlc1wiXG4gICAgICAgIChuYXZpZ2F0ZSk9XCJvbk5hdmlnYXRlRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgIChzZWxlY3QpPVwib25OYXZpZ2F0ZURhdGVTZWxlY3QoJGV2ZW50KVwiPlxuICAgICAgPC9uZ2ItZGF0ZXBpY2tlci1uYXZpZ2F0aW9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAjbW9udGhzIGNsYXNzPVwibmdiLWRwLW1vbnRoc1wiIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCI+XG4gICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LW1vbnRoIFtuZ0Zvck9mXT1cIm1vZGVsLm1vbnRoc1wiIGxldC1pPVwiaW5kZXhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5nYi1kcC1tb250aFwiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJuYXZpZ2F0aW9uID09PSAnbm9uZScgfHwgKGRpc3BsYXlNb250aHMgPiAxICYmIG5hdmlnYXRpb24gPT09ICdzZWxlY3QnKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJuZ2ItZHAtbW9udGgtbmFtZSBiZy1saWdodFwiPlxuICAgICAgICAgICAge3sgaTE4bi5nZXRNb250aEZ1bGxOYW1lKG1vbnRoLm51bWJlciwgbW9udGgueWVhcikgfX0ge3sgaTE4bi5nZXRZZWFyTnVtZXJhbHMobW9udGgueWVhcikgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bmdiLWRhdGVwaWNrZXItbW9udGgtdmlld1xuICAgICAgICAgICAgW21vbnRoXT1cIm1vbnRoXCJcbiAgICAgICAgICAgIFtkYXlUZW1wbGF0ZV09XCJkYXlUZW1wbGF0ZSB8fCBkdFwiXG4gICAgICAgICAgICBbc2hvd1dlZWtkYXlzXT1cInNob3dXZWVrZGF5c1wiXG4gICAgICAgICAgICBbc2hvd1dlZWtOdW1iZXJzXT1cInNob3dXZWVrTnVtYmVyc1wiXG4gICAgICAgICAgICAoc2VsZWN0KT1cIm9uRGF0ZVNlbGVjdCgkZXZlbnQpXCI+XG4gICAgICAgICAgPC9uZ2ItZGF0ZXBpY2tlci1tb250aC12aWV3PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICBgLFxuICBwcm92aWRlcnM6IFtOR0JfREFURVBJQ0tFUl9WQUxVRV9BQ0NFU1NPUiwgTmdiRGF0ZXBpY2tlclNlcnZpY2UsIE5nYkRhdGVwaWNrZXJLZXlNYXBTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBOZ2JEYXRlcGlja2VyIGltcGxlbWVudHMgT25EZXN0cm95LFxuICAgIE9uQ2hhbmdlcywgT25Jbml0LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIG1vZGVsOiBEYXRlcGlja2VyVmlld01vZGVsO1xuXG4gIEBWaWV3Q2hpbGQoJ21vbnRocycpIHByaXZhdGUgX21vbnRoc0VsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgcHJpdmF0ZSBfY29udHJvbFZhbHVlOiBOZ2JEYXRlO1xuICBwcml2YXRlIF9kZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKipcbiAgICogVGhlIHJlZmVyZW5jZSB0byBhIGN1c3RvbSB0ZW1wbGF0ZSBmb3IgdGhlIGRheS5cbiAgICpcbiAgICogQWxsb3dzIHRvIGNvbXBsZXRlbHkgb3ZlcnJpZGUgdGhlIHdheSBhIGRheSAnY2VsbCcgaW4gdGhlIGNhbGVuZGFyIGlzIGRpc3BsYXllZC5cbiAgICpcbiAgICogU2VlIFtgRGF5VGVtcGxhdGVDb250ZXh0YF0oIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI0RheVRlbXBsYXRlQ29udGV4dCkgZm9yIHRoZSBkYXRhIHlvdSBnZXQgaW5zaWRlLlxuICAgKi9cbiAgQElucHV0KCkgZGF5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPERheVRlbXBsYXRlQ29udGV4dD47XG5cbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayB0byBwYXNzIGFueSBhcmJpdHJhcnkgZGF0YSB0byB0aGUgdGVtcGxhdGUgY2VsbCB2aWEgdGhlXG4gICAqIFtgRGF5VGVtcGxhdGVDb250ZXh0YF0oIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI0RheVRlbXBsYXRlQ29udGV4dCkncyBgZGF0YWAgcGFyYW1ldGVyLlxuICAgKlxuICAgKiBgY3VycmVudGAgaXMgdGhlIG1vbnRoIHRoYXQgaXMgY3VycmVudGx5IGRpc3BsYXllZCBieSB0aGUgZGF0ZXBpY2tlci5cbiAgICpcbiAgICogQHNpbmNlIDMuMy4wXG4gICAqL1xuICBASW5wdXQoKSBkYXlUZW1wbGF0ZURhdGE6IChkYXRlOiBOZ2JEYXRlLCBjdXJyZW50OiB7eWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyfSkgPT4gYW55O1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIG1vbnRocyB0byBkaXNwbGF5LlxuICAgKi9cbiAgQElucHV0KCkgZGlzcGxheU1vbnRoczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgKlxuICAgKiBXaXRoIGRlZmF1bHQgY2FsZW5kYXIgd2UgdXNlIElTTyA4NjAxOiAnd2Vla2RheScgaXMgMT1Nb24gLi4uIDc9U3VuLlxuICAgKi9cbiAgQElucHV0KCkgZmlyc3REYXlPZldlZWs6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHJlZmVyZW5jZSB0byB0aGUgY3VzdG9tIHRlbXBsYXRlIGZvciB0aGUgZGF0ZXBpY2tlciBmb290ZXIuXG4gICAqXG4gICAqIEBzaW5jZSAzLjMuMFxuICAgKi9cbiAgQElucHV0KCkgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayB0byBtYXJrIHNvbWUgZGF0ZXMgYXMgZGlzYWJsZWQuXG4gICAqXG4gICAqIEl0IGlzIGNhbGxlZCBmb3IgZWFjaCBuZXcgZGF0ZSB3aGVuIG5hdmlnYXRpbmcgdG8gYSBkaWZmZXJlbnQgbW9udGguXG4gICAqXG4gICAqIGBjdXJyZW50YCBpcyB0aGUgbW9udGggdGhhdCBpcyBjdXJyZW50bHkgZGlzcGxheWVkIGJ5IHRoZSBkYXRlcGlja2VyLlxuICAgKi9cbiAgQElucHV0KCkgbWFya0Rpc2FibGVkOiAoZGF0ZTogTmdiRGF0ZSwgY3VycmVudDoge3llYXI6IG51bWJlciwgbW9udGg6IG51bWJlcn0pID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBsYXRlc3QgZGF0ZSB0aGF0IGNhbiBiZSBkaXNwbGF5ZWQgb3Igc2VsZWN0ZWQuXG4gICAqXG4gICAqIElmIG5vdCBwcm92aWRlZCwgJ3llYXInIHNlbGVjdCBib3ggd2lsbCBkaXNwbGF5IDEwIHllYXJzIGFmdGVyIHRoZSBjdXJyZW50IG1vbnRoLlxuICAgKi9cbiAgQElucHV0KCkgbWF4RGF0ZTogTmdiRGF0ZVN0cnVjdDtcblxuICAvKipcbiAgICogVGhlIGVhcmxpZXN0IGRhdGUgdGhhdCBjYW4gYmUgZGlzcGxheWVkIG9yIHNlbGVjdGVkLlxuICAgKlxuICAgKiBJZiBub3QgcHJvdmlkZWQsICd5ZWFyJyBzZWxlY3QgYm94IHdpbGwgZGlzcGxheSAxMCB5ZWFycyBiZWZvcmUgdGhlIGN1cnJlbnQgbW9udGguXG4gICAqL1xuICBASW5wdXQoKSBtaW5EYXRlOiBOZ2JEYXRlU3RydWN0O1xuXG4gIC8qKlxuICAgKiBOYXZpZ2F0aW9uIHR5cGUuXG4gICAqXG4gICAqICogYFwic2VsZWN0XCJgIC0gc2VsZWN0IGJveGVzIGZvciBtb250aCBhbmQgbmF2aWdhdGlvbiBhcnJvd3NcbiAgICogKiBgXCJhcnJvd3NcImAgLSBvbmx5IG5hdmlnYXRpb24gYXJyb3dzXG4gICAqICogYFwibm9uZVwiYCAtIG5vIG5hdmlnYXRpb24gdmlzaWJsZSBhdCBhbGxcbiAgICovXG4gIEBJbnB1dCgpIG5hdmlnYXRpb246ICdzZWxlY3QnIHwgJ2Fycm93cycgfCAnbm9uZSc7XG5cbiAgLyoqXG4gICAqIFRoZSB3YXkgb2YgZGlzcGxheWluZyBkYXlzIHRoYXQgZG9uJ3QgYmVsb25nIHRvIHRoZSBjdXJyZW50IG1vbnRoLlxuICAgKlxuICAgKiAqIGBcInZpc2libGVcImAgLSBkYXlzIGFyZSB2aXNpYmxlXG4gICAqICogYFwiaGlkZGVuXCJgIC0gZGF5cyBhcmUgaGlkZGVuLCB3aGl0ZSBzcGFjZSBwcmVzZXJ2ZWRcbiAgICogKiBgXCJjb2xsYXBzZWRcImAgLSBkYXlzIGFyZSBjb2xsYXBzZWQsIHNvIHRoZSBkYXRlcGlja2VyIGhlaWdodCBtaWdodCBjaGFuZ2UgYmV0d2VlbiBtb250aHNcbiAgICpcbiAgICogRm9yIHRoZSAyKyBtb250aHMgdmlldywgZGF5cyBpbiBiZXR3ZWVuIG1vbnRocyBhcmUgbmV2ZXIgc2hvd24uXG4gICAqL1xuICBASW5wdXQoKSBvdXRzaWRlRGF5czogJ3Zpc2libGUnIHwgJ2NvbGxhcHNlZCcgfCAnaGlkZGVuJztcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB3ZWVrZGF5cyB3aWxsIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIHNob3dXZWVrZGF5czogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB3ZWVrIG51bWJlcnMgd2lsbCBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBASW5wdXQoKSBzaG93V2Vla051bWJlcnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRlIHRvIG9wZW4gY2FsZW5kYXIgd2l0aC5cbiAgICpcbiAgICogV2l0aCB0aGUgZGVmYXVsdCBjYWxlbmRhciB3ZSB1c2UgSVNPIDg2MDE6ICdtb250aCcgaXMgMT1KYW4gLi4uIDEyPURlYy5cbiAgICogSWYgbm90aGluZyBvciBpbnZhbGlkIGRhdGUgaXMgcHJvdmlkZWQsIGNhbGVuZGFyIHdpbGwgb3BlbiB3aXRoIGN1cnJlbnQgbW9udGguXG4gICAqXG4gICAqIFlvdSBjb3VsZCB1c2UgYG5hdmlnYXRlVG8oZGF0ZSlgIG1ldGhvZCBhcyBhbiBhbHRlcm5hdGl2ZS5cbiAgICovXG4gIEBJbnB1dCgpIHN0YXJ0RGF0ZToge3llYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF5PzogbnVtYmVyfTtcblxuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlZCByaWdodCBiZWZvcmUgdGhlIG5hdmlnYXRpb24gaGFwcGVucyBhbmQgZGlzcGxheWVkIG1vbnRoIGNoYW5nZXMuXG4gICAqXG4gICAqIFNlZSBbYE5nYkRhdGVwaWNrZXJOYXZpZ2F0ZUV2ZW50YF0oIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI05nYkRhdGVwaWNrZXJOYXZpZ2F0ZUV2ZW50KSBmb3IgdGhlIHBheWxvYWQgaW5mby5cbiAgICovXG4gIEBPdXRwdXQoKSBuYXZpZ2F0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8TmdiRGF0ZXBpY2tlck5hdmlnYXRlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZWQgd2hlbiB1c2VyIHNlbGVjdHMgYSBkYXRlIHVzaW5nIGtleWJvYXJkIG9yIG1vdXNlLlxuICAgKlxuICAgKiBUaGUgcGF5bG9hZCBvZiB0aGUgZXZlbnQgaXMgY3VycmVudGx5IHNlbGVjdGVkIGBOZ2JEYXRlYC5cbiAgICovXG4gIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPE5nYkRhdGU+KCk7XG5cbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIF9rZXlNYXBTZXJ2aWNlOiBOZ2JEYXRlcGlja2VyS2V5TWFwU2VydmljZSwgcHVibGljIF9zZXJ2aWNlOiBOZ2JEYXRlcGlja2VyU2VydmljZSxcbiAgICAgIHByaXZhdGUgX2NhbGVuZGFyOiBOZ2JDYWxlbmRhciwgcHVibGljIGkxOG46IE5nYkRhdGVwaWNrZXJJMThuLCBjb25maWc6IE5nYkRhdGVwaWNrZXJDb25maWcsXG4gICAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgcHJpdmF0ZSBfbmdiRGF0ZUFkYXB0ZXI6IE5nYkRhdGVBZGFwdGVyPGFueT4sIHByaXZhdGUgX25nWm9uZTogTmdab25lKSB7XG4gICAgWydkYXlUZW1wbGF0ZScsICdkYXlUZW1wbGF0ZURhdGEnLCAnZGlzcGxheU1vbnRocycsICdmaXJzdERheU9mV2VlaycsICdmb290ZXJUZW1wbGF0ZScsICdtYXJrRGlzYWJsZWQnLCAnbWluRGF0ZScsXG4gICAgICdtYXhEYXRlJywgJ25hdmlnYXRpb24nLCAnb3V0c2lkZURheXMnLCAnc2hvd1dlZWtkYXlzJywgJ3Nob3dXZWVrTnVtYmVycycsICdzdGFydERhdGUnXVxuICAgICAgICAuZm9yRWFjaChpbnB1dCA9PiB0aGlzW2lucHV0XSA9IGNvbmZpZ1tpbnB1dF0pO1xuXG4gICAgX3NlcnZpY2Uuc2VsZWN0JC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKGRhdGUgPT4geyB0aGlzLnNlbGVjdC5lbWl0KGRhdGUpOyB9KTtcblxuICAgIF9zZXJ2aWNlLm1vZGVsJC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKG1vZGVsID0+IHtcbiAgICAgIGNvbnN0IG5ld0RhdGUgPSBtb2RlbC5maXJzdERhdGU7XG4gICAgICBjb25zdCBvbGREYXRlID0gdGhpcy5tb2RlbCA/IHRoaXMubW9kZWwuZmlyc3REYXRlIDogbnVsbDtcblxuICAgICAgbGV0IG5hdmlnYXRpb25QcmV2ZW50ZWQgPSBmYWxzZTtcbiAgICAgIC8vIGVtaXR0aW5nIG5hdmlnYXRpb24gZXZlbnQgaWYgdGhlIGZpcnN0IG1vbnRoIGNoYW5nZXNcbiAgICAgIGlmICghbmV3RGF0ZS5lcXVhbHMob2xkRGF0ZSkpIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZS5lbWl0KHtcbiAgICAgICAgICBjdXJyZW50OiBvbGREYXRlID8ge3llYXI6IG9sZERhdGUueWVhciwgbW9udGg6IG9sZERhdGUubW9udGh9IDogbnVsbCxcbiAgICAgICAgICBuZXh0OiB7eWVhcjogbmV3RGF0ZS55ZWFyLCBtb250aDogbmV3RGF0ZS5tb250aH0sXG4gICAgICAgICAgcHJldmVudERlZmF1bHQ6ICgpID0+IG5hdmlnYXRpb25QcmV2ZW50ZWQgPSB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGNhbid0IHByZXZlbnQgdGhlIHZlcnkgZmlyc3QgbmF2aWdhdGlvblxuICAgICAgICBpZiAobmF2aWdhdGlvblByZXZlbnRlZCAmJiBvbGREYXRlICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5fc2VydmljZS5vcGVuKG9sZERhdGUpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdTZWxlY3RlZERhdGUgPSBtb2RlbC5zZWxlY3RlZERhdGU7XG4gICAgICBjb25zdCBuZXdGb2N1c2VkRGF0ZSA9IG1vZGVsLmZvY3VzRGF0ZTtcbiAgICAgIGNvbnN0IG9sZEZvY3VzZWREYXRlID0gdGhpcy5tb2RlbCA/IHRoaXMubW9kZWwuZm9jdXNEYXRlIDogbnVsbDtcblxuICAgICAgdGhpcy5tb2RlbCA9IG1vZGVsO1xuXG4gICAgICAvLyBoYW5kbGluZyBzZWxlY3Rpb24gY2hhbmdlXG4gICAgICBpZiAoaXNDaGFuZ2VkRGF0ZShuZXdTZWxlY3RlZERhdGUsIHRoaXMuX2NvbnRyb2xWYWx1ZSkpIHtcbiAgICAgICAgdGhpcy5fY29udHJvbFZhbHVlID0gbmV3U2VsZWN0ZWREYXRlO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX25nYkRhdGVBZGFwdGVyLnRvTW9kZWwobmV3U2VsZWN0ZWREYXRlKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIGhhbmRsaW5nIGZvY3VzIGNoYW5nZVxuICAgICAgaWYgKGlzQ2hhbmdlZERhdGUobmV3Rm9jdXNlZERhdGUsIG9sZEZvY3VzZWREYXRlKSAmJiBvbGRGb2N1c2VkRGF0ZSAmJiBtb2RlbC5mb2N1c1Zpc2libGUpIHtcbiAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgfVxuXG4gICAgICBfY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICB0aGlzLl9uZ1pvbmUub25TdGFibGUuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPVxuICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PignZGl2Lm5nYi1kcC1kYXlbdGFiaW5kZXg9XCIwXCJdJyk7XG4gICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcbiAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIHByb3ZpZGVkIGRhdGUuXG4gICAqXG4gICAqIFdpdGggdGhlIGRlZmF1bHQgY2FsZW5kYXIgd2UgdXNlIElTTyA4NjAxOiAnbW9udGgnIGlzIDE9SmFuIC4uLiAxMj1EZWMuXG4gICAqIElmIG5vdGhpbmcgb3IgaW52YWxpZCBkYXRlIHByb3ZpZGVkIGNhbGVuZGFyIHdpbGwgb3BlbiBjdXJyZW50IG1vbnRoLlxuICAgKlxuICAgKiBVc2UgdGhlIGBbc3RhcnREYXRlXWAgaW5wdXQgYXMgYW4gYWx0ZXJuYXRpdmUuXG4gICAqL1xuICBuYXZpZ2F0ZVRvKGRhdGU/OiB7eWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXk/OiBudW1iZXJ9KSB7XG4gICAgdGhpcy5fc2VydmljZS5vcGVuKE5nYkRhdGUuZnJvbShkYXRlID8gZGF0ZS5kYXkgPyBkYXRlIGFzIE5nYkRhdGVTdHJ1Y3QgOiB7Li4uZGF0ZSwgZGF5OiAxfSA6IG51bGwpKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgY29uc3QgZm9jdXNJbnMkID0gZnJvbUV2ZW50PEZvY3VzRXZlbnQ+KHRoaXMuX21vbnRoc0VsLm5hdGl2ZUVsZW1lbnQsICdmb2N1c2luJyk7XG4gICAgICBjb25zdCBmb2N1c091dHMkID0gZnJvbUV2ZW50PEZvY3VzRXZlbnQ+KHRoaXMuX21vbnRoc0VsLm5hdGl2ZUVsZW1lbnQsICdmb2N1c291dCcpO1xuXG4gICAgICAvLyB3ZSdyZSBjaGFuZ2luZyAnZm9jdXNWaXNpYmxlJyBvbmx5IHdoZW4gZW50ZXJpbmcgb3IgbGVhdmluZyBtb250aHMgdmlld1xuICAgICAgLy8gYW5kIGlnbm9yaW5nIGFsbCBmb2N1cyBldmVudHMgd2hlcmUgYm90aCAndGFyZ2V0JyBhbmQgJ3JlbGF0ZWQnIHRhcmdldCBhcmUgZGF5IGNlbGxzXG4gICAgICBtZXJnZShmb2N1c0lucyQsIGZvY3VzT3V0cyQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgICAgICAgICh7dGFyZ2V0LCByZWxhdGVkVGFyZ2V0fSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAhKGhhc0NsYXNzTmFtZSh0YXJnZXQsICduZ2ItZHAtZGF5JykgJiYgaGFzQ2xhc3NOYW1lKHJlbGF0ZWRUYXJnZXQsICduZ2ItZHAtZGF5JykpKSxcbiAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHt0eXBlfSkgPT4gdGhpcy5fbmdab25lLnJ1bigoKSA9PiB0aGlzLl9zZXJ2aWNlLmZvY3VzVmlzaWJsZSA9IHR5cGUgPT09ICdmb2N1c2luJykpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7IHRoaXMuX2Rlc3Ryb3llZCQubmV4dCgpOyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMubW9kZWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgWydkYXlUZW1wbGF0ZURhdGEnLCAnZGlzcGxheU1vbnRocycsICdtYXJrRGlzYWJsZWQnLCAnZmlyc3REYXlPZldlZWsnLCAnbmF2aWdhdGlvbicsICdtaW5EYXRlJywgJ21heERhdGUnLFxuICAgICAgICdvdXRzaWRlRGF5cyddXG4gICAgICAgICAgLmZvckVhY2goaW5wdXQgPT4gdGhpcy5fc2VydmljZVtpbnB1dF0gPSB0aGlzW2lucHV0XSk7XG4gICAgICB0aGlzLm5hdmlnYXRlVG8odGhpcy5zdGFydERhdGUpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBbJ2RheVRlbXBsYXRlRGF0YScsICdkaXNwbGF5TW9udGhzJywgJ21hcmtEaXNhYmxlZCcsICdmaXJzdERheU9mV2VlaycsICduYXZpZ2F0aW9uJywgJ21pbkRhdGUnLCAnbWF4RGF0ZScsXG4gICAgICdvdXRzaWRlRGF5cyddXG4gICAgICAgIC5maWx0ZXIoaW5wdXQgPT4gaW5wdXQgaW4gY2hhbmdlcylcbiAgICAgICAgLmZvckVhY2goaW5wdXQgPT4gdGhpcy5fc2VydmljZVtpbnB1dF0gPSB0aGlzW2lucHV0XSk7XG5cbiAgICBpZiAoJ3N0YXJ0RGF0ZScgaW4gY2hhbmdlcykge1xuICAgICAgY29uc3Qge2N1cnJlbnRWYWx1ZSwgcHJldmlvdXNWYWx1ZX0gPSBjaGFuZ2VzLnN0YXJ0RGF0ZTtcbiAgICAgIGlmIChpc0NoYW5nZWRNb250aChwcmV2aW91c1ZhbHVlLCBjdXJyZW50VmFsdWUpKSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGVUbyh0aGlzLnN0YXJ0RGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25EYXRlU2VsZWN0KGRhdGU6IE5nYkRhdGUpIHtcbiAgICB0aGlzLl9zZXJ2aWNlLmZvY3VzKGRhdGUpO1xuICAgIHRoaXMuX3NlcnZpY2Uuc2VsZWN0KGRhdGUsIHtlbWl0RXZlbnQ6IHRydWV9KTtcbiAgfVxuXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkgeyB0aGlzLl9rZXlNYXBTZXJ2aWNlLnByb2Nlc3NLZXkoZXZlbnQpOyB9XG5cbiAgb25OYXZpZ2F0ZURhdGVTZWxlY3QoZGF0ZTogTmdiRGF0ZSkgeyB0aGlzLl9zZXJ2aWNlLm9wZW4oZGF0ZSk7IH1cblxuICBvbk5hdmlnYXRlRXZlbnQoZXZlbnQ6IE5hdmlnYXRpb25FdmVudCkge1xuICAgIHN3aXRjaCAoZXZlbnQpIHtcbiAgICAgIGNhc2UgTmF2aWdhdGlvbkV2ZW50LlBSRVY6XG4gICAgICAgIHRoaXMuX3NlcnZpY2Uub3Blbih0aGlzLl9jYWxlbmRhci5nZXRQcmV2KHRoaXMubW9kZWwuZmlyc3REYXRlLCAnbScsIDEpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE5hdmlnYXRpb25FdmVudC5ORVhUOlxuICAgICAgICB0aGlzLl9zZXJ2aWNlLm9wZW4odGhpcy5fY2FsZW5kYXIuZ2V0TmV4dCh0aGlzLm1vZGVsLmZpcnN0RGF0ZSwgJ20nLCAxKSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiBhbnkpOiB2b2lkIHsgdGhpcy5vbkNoYW5nZSA9IGZuOyB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IGFueSk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7IHRoaXMuX3NlcnZpY2UuZGlzYWJsZWQgPSBpc0Rpc2FibGVkOyB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZSkge1xuICAgIHRoaXMuX2NvbnRyb2xWYWx1ZSA9IE5nYkRhdGUuZnJvbSh0aGlzLl9uZ2JEYXRlQWRhcHRlci5mcm9tTW9kZWwodmFsdWUpKTtcbiAgICB0aGlzLl9zZXJ2aWNlLnNlbGVjdCh0aGlzLl9jb250cm9sVmFsdWUpO1xuICB9XG59XG4iLCJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNb250aFZpZXdNb2RlbCwgRGF5Vmlld01vZGVsfSBmcm9tICcuL2RhdGVwaWNrZXItdmlldy1tb2RlbCc7XG5pbXBvcnQge05nYkRhdGV9IGZyb20gJy4vbmdiLWRhdGUnO1xuaW1wb3J0IHtOZ2JEYXRlcGlja2VySTE4bn0gZnJvbSAnLi9kYXRlcGlja2VyLWkxOG4nO1xuaW1wb3J0IHtEYXlUZW1wbGF0ZUNvbnRleHR9IGZyb20gJy4vZGF0ZXBpY2tlci1kYXktdGVtcGxhdGUtY29udGV4dCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nYi1kYXRlcGlja2VyLW1vbnRoLXZpZXcnLFxuICBob3N0OiB7J3JvbGUnOiAnZ3JpZCd9LFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLW1vbnRoLXZpZXcuc2NzcyddLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgKm5nSWY9XCJzaG93V2Vla2RheXNcIiBjbGFzcz1cIm5nYi1kcC13ZWVrIG5nYi1kcC13ZWVrZGF5cyBiZy1saWdodFwiPlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dXZWVrTnVtYmVyc1wiIGNsYXNzPVwibmdiLWRwLXdlZWtkYXkgbmdiLWRwLXNob3d3ZWVrXCI+PC9kaXY+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB3IG9mIG1vbnRoLndlZWtkYXlzXCIgY2xhc3M9XCJuZ2ItZHAtd2Vla2RheSBzbWFsbFwiPlxuICAgICAgICB7eyBpMThuLmdldFdlZWtkYXlTaG9ydE5hbWUodykgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtd2VlayBbbmdGb3JPZl09XCJtb250aC53ZWVrc1wiPlxuICAgICAgPGRpdiAqbmdJZj1cIiF3ZWVrLmNvbGxhcHNlZFwiIGNsYXNzPVwibmdiLWRwLXdlZWtcIiByb2xlPVwicm93XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93V2Vla051bWJlcnNcIiBjbGFzcz1cIm5nYi1kcC13ZWVrLW51bWJlciBzbWFsbCB0ZXh0LW11dGVkXCI+e3sgaTE4bi5nZXRXZWVrTnVtZXJhbHMod2Vlay5udW1iZXIpIH19PC9kaXY+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRheSBvZiB3ZWVrLmRheXNcIiAoY2xpY2spPVwiZG9TZWxlY3QoZGF5KVwiIGNsYXNzPVwibmdiLWRwLWRheVwiIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRheS5jb250ZXh0LmRpc2FibGVkXCJcbiAgICAgICAgICBbdGFiaW5kZXhdPVwiZGF5LnRhYmluZGV4XCJcbiAgICAgICAgICBbY2xhc3MuaGlkZGVuXT1cImRheS5oaWRkZW5cIlxuICAgICAgICAgIFtjbGFzcy5uZ2ItZHAtdG9kYXldPVwiZGF5LmNvbnRleHQudG9kYXlcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZGF5LmFyaWFMYWJlbFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIhZGF5LmhpZGRlblwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRheVRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImRheS5jb250ZXh0XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgTmdiRGF0ZXBpY2tlck1vbnRoVmlldyB7XG4gIEBJbnB1dCgpIGRheVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxEYXlUZW1wbGF0ZUNvbnRleHQ+O1xuICBASW5wdXQoKSBtb250aDogTW9udGhWaWV3TW9kZWw7XG4gIEBJbnB1dCgpIHNob3dXZWVrZGF5cztcbiAgQElucHV0KCkgc2hvd1dlZWtOdW1iZXJzO1xuXG4gIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPE5nYkRhdGU+KCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGkxOG46IE5nYkRhdGVwaWNrZXJJMThuKSB7fVxuXG4gIGRvU2VsZWN0KGRheTogRGF5Vmlld01vZGVsKSB7XG4gICAgaWYgKCFkYXkuY29udGV4dC5kaXNhYmxlZCAmJiAhZGF5LmhpZGRlbikge1xuICAgICAgdGhpcy5zZWxlY3QuZW1pdChkYXkuZGF0ZSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOYXZpZ2F0aW9uRXZlbnQsIE1vbnRoVmlld01vZGVsfSBmcm9tICcuL2RhdGVwaWNrZXItdmlldy1tb2RlbCc7XG5pbXBvcnQge05nYkRhdGV9IGZyb20gJy4vbmdiLWRhdGUnO1xuaW1wb3J0IHtOZ2JEYXRlcGlja2VySTE4bn0gZnJvbSAnLi9kYXRlcGlja2VyLWkxOG4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ItZGF0ZXBpY2tlci1uYXZpZ2F0aW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0eWxlVXJsczogWycuL2RhdGVwaWNrZXItbmF2aWdhdGlvbi5zY3NzJ10sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cIm5nYi1kcC1hcnJvd1wiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpbmsgbmdiLWRwLWFycm93LWJ0blwiIChjbGljayk9XCJuYXZpZ2F0ZS5lbWl0KG5hdmlnYXRpb24uUFJFVilcIiBbZGlzYWJsZWRdPVwicHJldkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgaTE4bi1hcmlhLWxhYmVsPVwiQEBuZ2IuZGF0ZXBpY2tlci5wcmV2aW91cy1tb250aFwiIGFyaWEtbGFiZWw9XCJQcmV2aW91cyBtb250aFwiXG4gICAgICAgICAgICAgIGkxOG4tdGl0bGU9XCJAQG5nYi5kYXRlcGlja2VyLnByZXZpb3VzLW1vbnRoXCIgdGl0bGU9XCJQcmV2aW91cyBtb250aFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5nYi1kcC1uYXZpZ2F0aW9uLWNoZXZyb25cIj48L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8bmdiLWRhdGVwaWNrZXItbmF2aWdhdGlvbi1zZWxlY3QgKm5nSWY9XCJzaG93U2VsZWN0XCIgY2xhc3M9XCJuZ2ItZHAtbmF2aWdhdGlvbi1zZWxlY3RcIlxuICAgICAgW2RhdGVdPVwiZGF0ZVwiXG4gICAgICBbZGlzYWJsZWRdID0gXCJkaXNhYmxlZFwiXG4gICAgICBbbW9udGhzXT1cInNlbGVjdEJveGVzLm1vbnRoc1wiXG4gICAgICBbeWVhcnNdPVwic2VsZWN0Qm94ZXMueWVhcnNcIlxuICAgICAgKHNlbGVjdCk9XCJzZWxlY3QuZW1pdCgkZXZlbnQpXCI+XG4gICAgPC9uZ2ItZGF0ZXBpY2tlci1uYXZpZ2F0aW9uLXNlbGVjdD5cblxuICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIiFzaG93U2VsZWN0XCIgbmdGb3IgbGV0LW1vbnRoIFtuZ0Zvck9mXT1cIm1vbnRoc1wiIGxldC1pPVwiaW5kZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJuZ2ItZHAtYXJyb3dcIiAqbmdJZj1cImkgPiAwXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibmdiLWRwLW1vbnRoLW5hbWVcIj5cbiAgICAgICAge3sgaTE4bi5nZXRNb250aEZ1bGxOYW1lKG1vbnRoLm51bWJlciwgbW9udGgueWVhcikgfX0ge3sgaTE4bi5nZXRZZWFyTnVtZXJhbHMobW9udGgueWVhcikgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm5nYi1kcC1hcnJvd1wiICpuZ0lmPVwiaSAhPT0gbW9udGhzLmxlbmd0aCAtIDFcIj48L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJuZ2ItZHAtYXJyb3cgcmlnaHRcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saW5rIG5nYi1kcC1hcnJvdy1idG5cIiAoY2xpY2spPVwibmF2aWdhdGUuZW1pdChuYXZpZ2F0aW9uLk5FWFQpXCIgW2Rpc2FibGVkXT1cIm5leHREaXNhYmxlZFwiXG4gICAgICAgICAgICAgIGkxOG4tYXJpYS1sYWJlbD1cIkBAbmdiLmRhdGVwaWNrZXIubmV4dC1tb250aFwiIGFyaWEtbGFiZWw9XCJOZXh0IG1vbnRoXCJcbiAgICAgICAgICAgICAgaTE4bi10aXRsZT1cIkBAbmdiLmRhdGVwaWNrZXIubmV4dC1tb250aFwiIHRpdGxlPVwiTmV4dCBtb250aFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5nYi1kcC1uYXZpZ2F0aW9uLWNoZXZyb25cIj48L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICBgXG59KVxuZXhwb3J0IGNsYXNzIE5nYkRhdGVwaWNrZXJOYXZpZ2F0aW9uIHtcbiAgbmF2aWdhdGlvbiA9IE5hdmlnYXRpb25FdmVudDtcblxuICBASW5wdXQoKSBkYXRlOiBOZ2JEYXRlO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgbW9udGhzOiBNb250aFZpZXdNb2RlbFtdID0gW107XG4gIEBJbnB1dCgpIHNob3dTZWxlY3Q6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHByZXZEaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgbmV4dERpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBzZWxlY3RCb3hlczoge3llYXJzOiBudW1iZXJbXSwgbW9udGhzOiBudW1iZXJbXX07XG5cbiAgQE91dHB1dCgpIG5hdmlnYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxOYXZpZ2F0aW9uRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPE5nYkRhdGU+KCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGkxOG46IE5nYkRhdGVwaWNrZXJJMThuKSB7fVxufVxuIiwiaW1wb3J0IHtOZ1pvbmV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtmcm9tRXZlbnQsIE9ic2VydmFibGUsIHJhY2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkZWxheSwgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCwgd2l0aExhdGVzdEZyb219IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7S2V5fSBmcm9tICcuL2tleSc7XG5pbXBvcnQge2Nsb3Nlc3R9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IGlzQ29udGFpbmVkSW4gPSAoZWxlbWVudDogSFRNTEVsZW1lbnQsIGFycmF5PzogSFRNTEVsZW1lbnRbXSkgPT5cbiAgICBhcnJheSA/IGFycmF5LnNvbWUoaXRlbSA9PiBpdGVtLmNvbnRhaW5zKGVsZW1lbnQpKSA6IGZhbHNlO1xuXG5jb25zdCBtYXRjaGVzU2VsZWN0b3JJZkFueSA9IChlbGVtZW50OiBIVE1MRWxlbWVudCwgc2VsZWN0b3I/OiBzdHJpbmcpID0+XG4gICAgIXNlbGVjdG9yIHx8IGNsb3Nlc3QoZWxlbWVudCwgc2VsZWN0b3IpICE9IG51bGw7XG5cbi8vIHdlJ2xsIGhhdmUgdG8gdXNlICd0b3VjaCcgZXZlbnRzIGluc3RlYWQgb2YgJ21vdXNlJyBldmVudHMgb24gaU9TIGFuZCBhZGQgYSBtb3JlIHNpZ25pZmljYW50IGRlbGF5XG4vLyB0byBhdm9pZCByZS1vcGVuaW5nIHdoZW4gaGFuZGxpbmcgKGNsaWNrKSBvbiBhIHRvZ2dsaW5nIGVsZW1lbnRcbi8vIFRPRE86IHVzZSBwcm9wZXIgQW5ndWxhciBwbGF0Zm9ybSBkZXRlY3Rpb24gd2hlbiBOZ2JBdXRvQ2xvc2UgYmVjb21lcyBhIHNlcnZpY2UgYW5kIHdlIGNhbiBpbmplY3QgUExBVEZPUk1fSURcbmxldCBpT1MgPSBmYWxzZTtcbmlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJykge1xuICBpT1MgPSAhIW5hdmlnYXRvci51c2VyQWdlbnQgJiYgL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZ2JBdXRvQ2xvc2UoXG4gICAgem9uZTogTmdab25lLCBkb2N1bWVudDogYW55LCB0eXBlOiBib29sZWFuIHwgJ2luc2lkZScgfCAnb3V0c2lkZScsIGNsb3NlOiAoKSA9PiB2b2lkLCBjbG9zZWQkOiBPYnNlcnZhYmxlPGFueT4sXG4gICAgaW5zaWRlRWxlbWVudHM6IEhUTUxFbGVtZW50W10sIGlnbm9yZUVsZW1lbnRzPzogSFRNTEVsZW1lbnRbXSwgaW5zaWRlU2VsZWN0b3I/OiBzdHJpbmcpIHtcbiAgLy8gY2xvc2luZyBvbiBFU0MgYW5kIG91dHNpZGUgY2xpY2tzXG4gIGlmICh0eXBlKSB7XG4gICAgem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG5cbiAgICAgIGNvbnN0IHNob3VsZENsb3NlT25DbGljayA9IChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgaWYgKChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQgJiYgZXZlbnQuYnV0dG9uID09PSAyKSB8fCBpc0NvbnRhaW5lZEluKGVsZW1lbnQsIGlnbm9yZUVsZW1lbnRzKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2luc2lkZScpIHtcbiAgICAgICAgICByZXR1cm4gaXNDb250YWluZWRJbihlbGVtZW50LCBpbnNpZGVFbGVtZW50cykgJiYgbWF0Y2hlc1NlbGVjdG9ySWZBbnkoZWxlbWVudCwgaW5zaWRlU2VsZWN0b3IpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvdXRzaWRlJykge1xuICAgICAgICAgIHJldHVybiAhaXNDb250YWluZWRJbihlbGVtZW50LCBpbnNpZGVFbGVtZW50cyk7XG4gICAgICAgIH0gZWxzZSAvKiBpZiAodHlwZSA9PT0gdHJ1ZSkgKi8ge1xuICAgICAgICAgIHJldHVybiBtYXRjaGVzU2VsZWN0b3JJZkFueShlbGVtZW50LCBpbnNpZGVTZWxlY3RvcikgfHwgIWlzQ29udGFpbmVkSW4oZWxlbWVudCwgaW5zaWRlRWxlbWVudHMpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBlc2NhcGVzJCA9IGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleWRvd24nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKGNsb3NlZCQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkZXByZWNhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcihlID0+IGUud2hpY2ggPT09IEtleS5Fc2NhcGUpKTtcblxuXG4gICAgICAvLyB3ZSBoYXZlIHRvIHByZS1jYWxjdWxhdGUgJ3Nob3VsZENsb3NlT25DbGljaycgb24gJ21vdXNlZG93bi90b3VjaHN0YXJ0JyxcbiAgICAgIC8vIGJlY2F1c2Ugb24gJ21vdXNldXAvdG91Y2hlbmQnIERPTSBub2RlcyBtaWdodCBiZSBkZXRhY2hlZFxuICAgICAgY29uc3QgbW91c2VEb3ducyQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsIGlPUyA/ICd0b3VjaHN0YXJ0JyA6ICdtb3VzZWRvd24nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUobWFwKHNob3VsZENsb3NlT25DbGljayksIHRha2VVbnRpbChjbG9zZWQkKSk7XG5cbiAgICAgIGNvbnN0IGNsb3NlYWJsZUNsaWNrcyQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsIGlPUyA/ICd0b3VjaGVuZCcgOiAnbW91c2V1cCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aExhdGVzdEZyb20obW91c2VEb3ducyQpLCBmaWx0ZXIoKFtfLCBzaG91bGRDbG9zZV0pID0+IHNob3VsZENsb3NlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5KGlPUyA/IDE2IDogMCksIHRha2VVbnRpbChjbG9zZWQkKSk7XG5cblxuICAgICAgcmFjZTxFdmVudD4oW2VzY2FwZXMkLCBjbG9zZWFibGVDbGlja3MkXSkuc3Vic2NyaWJlKCgpID0+IHpvbmUucnVuKGNsb3NlKSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsImltcG9ydCB7ZnJvbUV2ZW50LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIHRha2VVbnRpbCwgd2l0aExhdGVzdEZyb219IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtLZXl9IGZyb20gJy4uL3V0aWwva2V5JztcblxuXG5jb25zdCBGT0NVU0FCTEVfRUxFTUVOVFNfU0VMRUNUT1IgPSBbXG4gICdhW2hyZWZdJywgJ2J1dHRvbjpub3QoW2Rpc2FibGVkXSknLCAnaW5wdXQ6bm90KFtkaXNhYmxlZF0pOm5vdChbdHlwZT1cImhpZGRlblwiXSknLCAnc2VsZWN0Om5vdChbZGlzYWJsZWRdKScsXG4gICd0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSknLCAnW2NvbnRlbnRlZGl0YWJsZV0nLCAnW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJ1xuXS5qb2luKCcsICcpO1xuXG4vKipcbiAqIFJldHVybnMgZmlyc3QgYW5kIGxhc3QgZm9jdXNhYmxlIGVsZW1lbnRzIGluc2lkZSBvZiBhIGdpdmVuIGVsZW1lbnQgYmFzZWQgb24gc3BlY2lmaWMgQ1NTIHNlbGVjdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2N1c2FibGVCb3VuZGFyeUVsZW1lbnRzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnRbXSB7XG4gIGNvbnN0IGxpc3Q6IEhUTUxFbGVtZW50W10gPVxuICAgICAgQXJyYXkuZnJvbShlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoRk9DVVNBQkxFX0VMRU1FTlRTX1NFTEVDVE9SKSBhcyBOb2RlTGlzdE9mPEhUTUxFbGVtZW50PilcbiAgICAgICAgICAuZmlsdGVyKGVsID0+IGVsLnRhYkluZGV4ICE9PSAtMSk7XG4gIHJldHVybiBbbGlzdFswXSwgbGlzdFtsaXN0Lmxlbmd0aCAtIDFdXTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiB0aGF0IGVuZm9yY2VzIGJyb3dzZXIgZm9jdXMgdG8gYmUgdHJhcHBlZCBpbnNpZGUgYSBET00gZWxlbWVudC5cbiAqXG4gKiBXb3JrcyBvbmx5IGZvciBjbGlja3MgaW5zaWRlIHRoZSBlbGVtZW50IGFuZCBuYXZpZ2F0aW9uIHdpdGggJ1RhYicsIGlnbm9yaW5nIGNsaWNrcyBvdXRzaWRlIG9mIHRoZSBlbGVtZW50XG4gKlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgYXJvdW5kIHdoaWNoIGZvY3VzIHdpbGwgYmUgdHJhcHBlZCBpbnNpZGVcbiAqIEBwYXJhbSBzdG9wRm9jdXNUcmFwJCBUaGUgb2JzZXJ2YWJsZSBzdHJlYW0uIFdoZW4gY29tcGxldGVkIHRoZSBmb2N1cyB0cmFwIHdpbGwgY2xlYW4gdXAgbGlzdGVuZXJzXG4gKiBhbmQgZnJlZSBpbnRlcm5hbCByZXNvdXJjZXNcbiAqIEBwYXJhbSByZWZvY3VzT25DbGljayBQdXQgdGhlIGZvY3VzIGJhY2sgdG8gdGhlIGxhc3QgZm9jdXNlZCBlbGVtZW50IHdoZW5ldmVyIGEgY2xpY2sgb2NjdXJzIG9uIGVsZW1lbnQgKGRlZmF1bHQgdG9cbiAqIGZhbHNlKVxuICovXG5leHBvcnQgY29uc3QgbmdiRm9jdXNUcmFwID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBzdG9wRm9jdXNUcmFwJDogT2JzZXJ2YWJsZTxhbnk+LCByZWZvY3VzT25DbGljayA9IGZhbHNlKSA9PiB7XG4gIC8vIGxhc3QgZm9jdXNlZCBlbGVtZW50XG4gIGNvbnN0IGxhc3RGb2N1c2VkRWxlbWVudCQgPVxuICAgICAgZnJvbUV2ZW50PEZvY3VzRXZlbnQ+KGVsZW1lbnQsICdmb2N1c2luJykucGlwZSh0YWtlVW50aWwoc3RvcEZvY3VzVHJhcCQpLCBtYXAoZSA9PiBlLnRhcmdldCkpO1xuXG4gIC8vICd0YWInIC8gJ3NoaWZ0K3RhYicgc3RyZWFtXG4gIGZyb21FdmVudDxLZXlib2FyZEV2ZW50PihlbGVtZW50LCAna2V5ZG93bicpXG4gICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwoc3RvcEZvY3VzVHJhcCQpLFxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlOmRlcHJlY2F0aW9uXG4gICAgICAgICAgZmlsdGVyKGUgPT4gZS53aGljaCA9PT0gS2V5LlRhYiksXG4gICAgICAgICAgLy8gdHNsaW50OmVuYWJsZTpkZXByZWNhdGlvblxuICAgICAgICAgIHdpdGhMYXRlc3RGcm9tKGxhc3RGb2N1c2VkRWxlbWVudCQpKVxuICAgICAgLnN1YnNjcmliZSgoW3RhYkV2ZW50LCBmb2N1c2VkRWxlbWVudF0pID0+IHtcbiAgICAgICAgY29uc3RbZmlyc3QsIGxhc3RdID0gZ2V0Rm9jdXNhYmxlQm91bmRhcnlFbGVtZW50cyhlbGVtZW50KTtcblxuICAgICAgICBpZiAoKGZvY3VzZWRFbGVtZW50ID09PSBmaXJzdCB8fCBmb2N1c2VkRWxlbWVudCA9PT0gZWxlbWVudCkgJiYgdGFiRXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICBsYXN0LmZvY3VzKCk7XG4gICAgICAgICAgdGFiRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmb2N1c2VkRWxlbWVudCA9PT0gbGFzdCAmJiAhdGFiRXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICBmaXJzdC5mb2N1cygpO1xuICAgICAgICAgIHRhYkV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gIC8vIGluc2lkZSBjbGlja1xuICBpZiAocmVmb2N1c09uQ2xpY2spIHtcbiAgICBmcm9tRXZlbnQoZWxlbWVudCwgJ2NsaWNrJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHN0b3BGb2N1c1RyYXAkKSwgd2l0aExhdGVzdEZyb20obGFzdEZvY3VzZWRFbGVtZW50JCksIG1hcChhcnIgPT4gYXJyWzFdIGFzIEhUTUxFbGVtZW50KSlcbiAgICAgICAgLnN1YnNjcmliZShsYXN0Rm9jdXNlZEVsZW1lbnQgPT4gbGFzdEZvY3VzZWRFbGVtZW50LmZvY3VzKCkpO1xuICB9XG59O1xuIiwiLy8gcHJldmlvdXMgdmVyc2lvbjpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyLXVpL2Jvb3RzdHJhcC9ibG9iLzA3YzMxZDA3MzFmN2NiMDY4YTE5MzJiOGUwMWQyMzEyYjc5NmI0ZWMvc3JjL3Bvc2l0aW9uL3Bvc2l0aW9uLmpzXG5leHBvcnQgY2xhc3MgUG9zaXRpb25pbmcge1xuICBwcml2YXRlIGdldEFsbFN0eWxlcyhlbGVtZW50OiBIVE1MRWxlbWVudCkgeyByZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7IH1cblxuICBwcml2YXRlIGdldFN0eWxlKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBwcm9wOiBzdHJpbmcpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5nZXRBbGxTdHlsZXMoZWxlbWVudClbcHJvcF07IH1cblxuICBwcml2YXRlIGlzU3RhdGljUG9zaXRpb25lZChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5nZXRTdHlsZShlbGVtZW50LCAncG9zaXRpb24nKSB8fCAnc3RhdGljJykgPT09ICdzdGF0aWMnO1xuICB9XG5cbiAgcHJpdmF0ZSBvZmZzZXRQYXJlbnQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XG4gICAgbGV0IG9mZnNldFBhcmVudEVsID0gPEhUTUxFbGVtZW50PmVsZW1lbnQub2Zmc2V0UGFyZW50IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICAgIHdoaWxlIChvZmZzZXRQYXJlbnRFbCAmJiBvZmZzZXRQYXJlbnRFbCAhPT0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIHRoaXMuaXNTdGF0aWNQb3NpdGlvbmVkKG9mZnNldFBhcmVudEVsKSkge1xuICAgICAgb2Zmc2V0UGFyZW50RWwgPSA8SFRNTEVsZW1lbnQ+b2Zmc2V0UGFyZW50RWwub2Zmc2V0UGFyZW50O1xuICAgIH1cblxuICAgIHJldHVybiBvZmZzZXRQYXJlbnRFbCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gIH1cblxuICBwb3NpdGlvbihlbGVtZW50OiBIVE1MRWxlbWVudCwgcm91bmQgPSB0cnVlKTogQ2xpZW50UmVjdCB7XG4gICAgbGV0IGVsUG9zaXRpb246IENsaWVudFJlY3Q7XG4gICAgbGV0IHBhcmVudE9mZnNldDogQ2xpZW50UmVjdCA9IHt3aWR0aDogMCwgaGVpZ2h0OiAwLCB0b3A6IDAsIGJvdHRvbTogMCwgbGVmdDogMCwgcmlnaHQ6IDB9O1xuXG4gICAgaWYgKHRoaXMuZ2V0U3R5bGUoZWxlbWVudCwgJ3Bvc2l0aW9uJykgPT09ICdmaXhlZCcpIHtcbiAgICAgIGVsUG9zaXRpb24gPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgZWxQb3NpdGlvbiA9IHtcbiAgICAgICAgdG9wOiBlbFBvc2l0aW9uLnRvcCxcbiAgICAgICAgYm90dG9tOiBlbFBvc2l0aW9uLmJvdHRvbSxcbiAgICAgICAgbGVmdDogZWxQb3NpdGlvbi5sZWZ0LFxuICAgICAgICByaWdodDogZWxQb3NpdGlvbi5yaWdodCxcbiAgICAgICAgaGVpZ2h0OiBlbFBvc2l0aW9uLmhlaWdodCxcbiAgICAgICAgd2lkdGg6IGVsUG9zaXRpb24ud2lkdGhcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG9mZnNldFBhcmVudEVsID0gdGhpcy5vZmZzZXRQYXJlbnQoZWxlbWVudCk7XG5cbiAgICAgIGVsUG9zaXRpb24gPSB0aGlzLm9mZnNldChlbGVtZW50LCBmYWxzZSk7XG5cbiAgICAgIGlmIChvZmZzZXRQYXJlbnRFbCAhPT0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICAgIHBhcmVudE9mZnNldCA9IHRoaXMub2Zmc2V0KG9mZnNldFBhcmVudEVsLCBmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIHBhcmVudE9mZnNldC50b3AgKz0gb2Zmc2V0UGFyZW50RWwuY2xpZW50VG9wO1xuICAgICAgcGFyZW50T2Zmc2V0LmxlZnQgKz0gb2Zmc2V0UGFyZW50RWwuY2xpZW50TGVmdDtcbiAgICB9XG5cbiAgICBlbFBvc2l0aW9uLnRvcCAtPSBwYXJlbnRPZmZzZXQudG9wO1xuICAgIGVsUG9zaXRpb24uYm90dG9tIC09IHBhcmVudE9mZnNldC50b3A7XG4gICAgZWxQb3NpdGlvbi5sZWZ0IC09IHBhcmVudE9mZnNldC5sZWZ0O1xuICAgIGVsUG9zaXRpb24ucmlnaHQgLT0gcGFyZW50T2Zmc2V0LmxlZnQ7XG5cbiAgICBpZiAocm91bmQpIHtcbiAgICAgIGVsUG9zaXRpb24udG9wID0gTWF0aC5yb3VuZChlbFBvc2l0aW9uLnRvcCk7XG4gICAgICBlbFBvc2l0aW9uLmJvdHRvbSA9IE1hdGgucm91bmQoZWxQb3NpdGlvbi5ib3R0b20pO1xuICAgICAgZWxQb3NpdGlvbi5sZWZ0ID0gTWF0aC5yb3VuZChlbFBvc2l0aW9uLmxlZnQpO1xuICAgICAgZWxQb3NpdGlvbi5yaWdodCA9IE1hdGgucm91bmQoZWxQb3NpdGlvbi5yaWdodCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsUG9zaXRpb247XG4gIH1cblxuICBvZmZzZXQoZWxlbWVudDogSFRNTEVsZW1lbnQsIHJvdW5kID0gdHJ1ZSk6IENsaWVudFJlY3Qge1xuICAgIGNvbnN0IGVsQmNyID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB2aWV3cG9ydE9mZnNldCA9IHtcbiAgICAgIHRvcDogd2luZG93LnBhZ2VZT2Zmc2V0IC0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFRvcCxcbiAgICAgIGxlZnQ6IHdpbmRvdy5wYWdlWE9mZnNldCAtIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRMZWZ0XG4gICAgfTtcblxuICAgIGxldCBlbE9mZnNldCA9IHtcbiAgICAgIGhlaWdodDogZWxCY3IuaGVpZ2h0IHx8IGVsZW1lbnQub2Zmc2V0SGVpZ2h0LFxuICAgICAgd2lkdGg6IGVsQmNyLndpZHRoIHx8IGVsZW1lbnQub2Zmc2V0V2lkdGgsXG4gICAgICB0b3A6IGVsQmNyLnRvcCArIHZpZXdwb3J0T2Zmc2V0LnRvcCxcbiAgICAgIGJvdHRvbTogZWxCY3IuYm90dG9tICsgdmlld3BvcnRPZmZzZXQudG9wLFxuICAgICAgbGVmdDogZWxCY3IubGVmdCArIHZpZXdwb3J0T2Zmc2V0LmxlZnQsXG4gICAgICByaWdodDogZWxCY3IucmlnaHQgKyB2aWV3cG9ydE9mZnNldC5sZWZ0XG4gICAgfTtcblxuICAgIGlmIChyb3VuZCkge1xuICAgICAgZWxPZmZzZXQuaGVpZ2h0ID0gTWF0aC5yb3VuZChlbE9mZnNldC5oZWlnaHQpO1xuICAgICAgZWxPZmZzZXQud2lkdGggPSBNYXRoLnJvdW5kKGVsT2Zmc2V0LndpZHRoKTtcbiAgICAgIGVsT2Zmc2V0LnRvcCA9IE1hdGgucm91bmQoZWxPZmZzZXQudG9wKTtcbiAgICAgIGVsT2Zmc2V0LmJvdHRvbSA9IE1hdGgucm91bmQoZWxPZmZzZXQuYm90dG9tKTtcbiAgICAgIGVsT2Zmc2V0LmxlZnQgPSBNYXRoLnJvdW5kKGVsT2Zmc2V0LmxlZnQpO1xuICAgICAgZWxPZmZzZXQucmlnaHQgPSBNYXRoLnJvdW5kKGVsT2Zmc2V0LnJpZ2h0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZWxPZmZzZXQ7XG4gIH1cblxuICAvKlxuICAgIFJldHVybiBmYWxzZSBpZiB0aGUgZWxlbWVudCB0byBwb3NpdGlvbiBpcyBvdXRzaWRlIHRoZSB2aWV3cG9ydFxuICAqL1xuICBwb3NpdGlvbkVsZW1lbnRzKGhvc3RFbGVtZW50OiBIVE1MRWxlbWVudCwgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQsIHBsYWNlbWVudDogc3RyaW5nLCBhcHBlbmRUb0JvZHk/OiBib29sZWFuKTpcbiAgICAgIGJvb2xlYW4ge1xuICAgIGNvbnN0W3BsYWNlbWVudFByaW1hcnkgPSAndG9wJywgcGxhY2VtZW50U2Vjb25kYXJ5ID0gJ2NlbnRlciddID0gcGxhY2VtZW50LnNwbGl0KCctJyk7XG5cbiAgICBjb25zdCBob3N0RWxQb3NpdGlvbiA9IGFwcGVuZFRvQm9keSA/IHRoaXMub2Zmc2V0KGhvc3RFbGVtZW50LCBmYWxzZSkgOiB0aGlzLnBvc2l0aW9uKGhvc3RFbGVtZW50LCBmYWxzZSk7XG4gICAgY29uc3QgdGFyZ2V0RWxTdHlsZXMgPSB0aGlzLmdldEFsbFN0eWxlcyh0YXJnZXRFbGVtZW50KTtcblxuICAgIGNvbnN0IG1hcmdpblRvcCA9IHBhcnNlRmxvYXQodGFyZ2V0RWxTdHlsZXMubWFyZ2luVG9wKTtcbiAgICBjb25zdCBtYXJnaW5Cb3R0b20gPSBwYXJzZUZsb2F0KHRhcmdldEVsU3R5bGVzLm1hcmdpbkJvdHRvbSk7XG4gICAgY29uc3QgbWFyZ2luTGVmdCA9IHBhcnNlRmxvYXQodGFyZ2V0RWxTdHlsZXMubWFyZ2luTGVmdCk7XG4gICAgY29uc3QgbWFyZ2luUmlnaHQgPSBwYXJzZUZsb2F0KHRhcmdldEVsU3R5bGVzLm1hcmdpblJpZ2h0KTtcblxuICAgIGxldCB0b3BQb3NpdGlvbiA9IDA7XG4gICAgbGV0IGxlZnRQb3NpdGlvbiA9IDA7XG5cbiAgICBzd2l0Y2ggKHBsYWNlbWVudFByaW1hcnkpIHtcbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIHRvcFBvc2l0aW9uID0gKGhvc3RFbFBvc2l0aW9uLnRvcCAtICh0YXJnZXRFbGVtZW50Lm9mZnNldEhlaWdodCArIG1hcmdpblRvcCArIG1hcmdpbkJvdHRvbSkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHRvcFBvc2l0aW9uID0gKGhvc3RFbFBvc2l0aW9uLnRvcCArIGhvc3RFbFBvc2l0aW9uLmhlaWdodCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIGxlZnRQb3NpdGlvbiA9IChob3N0RWxQb3NpdGlvbi5sZWZ0IC0gKHRhcmdldEVsZW1lbnQub2Zmc2V0V2lkdGggKyBtYXJnaW5MZWZ0ICsgbWFyZ2luUmlnaHQpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIGxlZnRQb3NpdGlvbiA9IChob3N0RWxQb3NpdGlvbi5sZWZ0ICsgaG9zdEVsUG9zaXRpb24ud2lkdGgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHBsYWNlbWVudFNlY29uZGFyeSkge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgdG9wUG9zaXRpb24gPSBob3N0RWxQb3NpdGlvbi50b3A7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgdG9wUG9zaXRpb24gPSBob3N0RWxQb3NpdGlvbi50b3AgKyBob3N0RWxQb3NpdGlvbi5oZWlnaHQgLSB0YXJnZXRFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgbGVmdFBvc2l0aW9uID0gaG9zdEVsUG9zaXRpb24ubGVmdDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIGxlZnRQb3NpdGlvbiA9IGhvc3RFbFBvc2l0aW9uLmxlZnQgKyBob3N0RWxQb3NpdGlvbi53aWR0aCAtIHRhcmdldEVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgaWYgKHBsYWNlbWVudFByaW1hcnkgPT09ICd0b3AnIHx8IHBsYWNlbWVudFByaW1hcnkgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgbGVmdFBvc2l0aW9uID0gKGhvc3RFbFBvc2l0aW9uLmxlZnQgKyBob3N0RWxQb3NpdGlvbi53aWR0aCAvIDIgLSB0YXJnZXRFbGVtZW50Lm9mZnNldFdpZHRoIC8gMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdG9wUG9zaXRpb24gPSAoaG9zdEVsUG9zaXRpb24udG9wICsgaG9zdEVsUG9zaXRpb24uaGVpZ2h0IC8gMiAtIHRhcmdldEVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMik7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8vIFRoZSB0cmFuc2xhdGUzZC9ncHUgYWNjZWxlcmF0aW9uIHJlbmRlciBhIGJsdXJyeSB0ZXh0IG9uIGNocm9tZSwgdGhlIG5leHQgbGluZSBpcyBjb21tZW50ZWQgdW50aWwgYSBicm93c2VyIGZpeFxuICAgIC8vIHRhcmdldEVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKCR7TWF0aC5yb3VuZChsZWZ0UG9zaXRpb24pfXB4LCAke01hdGguZmxvb3IodG9wUG9zaXRpb24pfXB4LCAwcHgpYDtcbiAgICB0YXJnZXRFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoJHtNYXRoLnJvdW5kKGxlZnRQb3NpdGlvbil9cHgsICR7TWF0aC5yb3VuZCh0b3BQb3NpdGlvbil9cHgpYDtcblxuICAgIC8vIENoZWNrIGlmIHRoZSB0YXJnZXRFbGVtZW50IGlzIGluc2lkZSB0aGUgdmlld3BvcnRcbiAgICBjb25zdCB0YXJnZXRFbEJDUiA9IHRhcmdldEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgaHRtbCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgfHwgaHRtbC5jbGllbnRIZWlnaHQ7XG4gICAgY29uc3Qgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCB8fCBodG1sLmNsaWVudFdpZHRoO1xuXG4gICAgcmV0dXJuIHRhcmdldEVsQkNSLmxlZnQgPj0gMCAmJiB0YXJnZXRFbEJDUi50b3AgPj0gMCAmJiB0YXJnZXRFbEJDUi5yaWdodCA8PSB3aW5kb3dXaWR0aCAmJlxuICAgICAgICB0YXJnZXRFbEJDUi5ib3R0b20gPD0gd2luZG93SGVpZ2h0O1xuICB9XG59XG5cbmNvbnN0IHBsYWNlbWVudFNlcGFyYXRvciA9IC9cXHMrLztcbmNvbnN0IHBvc2l0aW9uU2VydmljZSA9IG5ldyBQb3NpdGlvbmluZygpO1xuXG4vKlxuICogQWNjZXB0IHRoZSBwbGFjZW1lbnQgYXJyYXkgYW5kIGFwcGxpZXMgdGhlIGFwcHJvcHJpYXRlIHBsYWNlbWVudCBkZXBlbmRlbnQgb24gdGhlIHZpZXdwb3J0LlxuICogUmV0dXJucyB0aGUgYXBwbGllZCBwbGFjZW1lbnQuXG4gKiBJbiBjYXNlIG9mIGF1dG8gcGxhY2VtZW50LCBwbGFjZW1lbnRzIGFyZSBzZWxlY3RlZCBpbiBvcmRlclxuICogICAndG9wJywgJ2JvdHRvbScsICdsZWZ0JywgJ3JpZ2h0JyxcbiAqICAgJ3RvcC1sZWZ0JywgJ3RvcC1yaWdodCcsXG4gKiAgICdib3R0b20tbGVmdCcsICdib3R0b20tcmlnaHQnLFxuICogICAnbGVmdC10b3AnLCAnbGVmdC1ib3R0b20nLFxuICogICAncmlnaHQtdG9wJywgJ3JpZ2h0LWJvdHRvbScuXG4gKiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uRWxlbWVudHMoXG4gICAgaG9zdEVsZW1lbnQ6IEhUTUxFbGVtZW50LCB0YXJnZXRFbGVtZW50OiBIVE1MRWxlbWVudCwgcGxhY2VtZW50OiBzdHJpbmcgfCBQbGFjZW1lbnQgfCBQbGFjZW1lbnRBcnJheSxcbiAgICBhcHBlbmRUb0JvZHk/OiBib29sZWFuLCBiYXNlQ2xhc3M/OiBzdHJpbmcpOiBQbGFjZW1lbnQge1xuICBsZXQgcGxhY2VtZW50VmFsczogQXJyYXk8UGxhY2VtZW50PiA9XG4gICAgICBBcnJheS5pc0FycmF5KHBsYWNlbWVudCkgPyBwbGFjZW1lbnQgOiBwbGFjZW1lbnQuc3BsaXQocGxhY2VtZW50U2VwYXJhdG9yKSBhcyBBcnJheTxQbGFjZW1lbnQ+O1xuXG4gIGNvbnN0IGFsbG93ZWRQbGFjZW1lbnRzID0gW1xuICAgICd0b3AnLCAnYm90dG9tJywgJ2xlZnQnLCAncmlnaHQnLCAndG9wLWxlZnQnLCAndG9wLXJpZ2h0JywgJ2JvdHRvbS1sZWZ0JywgJ2JvdHRvbS1yaWdodCcsICdsZWZ0LXRvcCcsICdsZWZ0LWJvdHRvbScsXG4gICAgJ3JpZ2h0LXRvcCcsICdyaWdodC1ib3R0b20nXG4gIF07XG5cbiAgY29uc3QgY2xhc3NMaXN0ID0gdGFyZ2V0RWxlbWVudC5jbGFzc0xpc3Q7XG4gIGNvbnN0IGFkZENsYXNzZXNUb1RhcmdldCA9ICh0YXJnZXRQbGFjZW1lbnQ6IFBsYWNlbWVudCk6IEFycmF5PHN0cmluZz4gPT4ge1xuICAgIGNvbnN0W3ByaW1hcnksIHNlY29uZGFyeV0gPSB0YXJnZXRQbGFjZW1lbnQuc3BsaXQoJy0nKTtcbiAgICBjb25zdCBjbGFzc2VzID0gW107XG4gICAgaWYgKGJhc2VDbGFzcykge1xuICAgICAgY2xhc3Nlcy5wdXNoKGAke2Jhc2VDbGFzc30tJHtwcmltYXJ5fWApO1xuICAgICAgaWYgKHNlY29uZGFyeSkge1xuICAgICAgICBjbGFzc2VzLnB1c2goYCR7YmFzZUNsYXNzfS0ke3ByaW1hcnl9LSR7c2Vjb25kYXJ5fWApO1xuICAgICAgfVxuXG4gICAgICBjbGFzc2VzLmZvckVhY2goKGNsYXNzbmFtZSkgPT4geyBjbGFzc0xpc3QuYWRkKGNsYXNzbmFtZSk7IH0pO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfTtcblxuICAvLyBSZW1vdmUgb2xkIHBsYWNlbWVudCBjbGFzc2VzIHRvIGF2b2lkIGlzc3Vlc1xuICBpZiAoYmFzZUNsYXNzKSB7XG4gICAgYWxsb3dlZFBsYWNlbWVudHMuZm9yRWFjaCgocGxhY2VtZW50VG9SZW1vdmUpID0+IHsgY2xhc3NMaXN0LnJlbW92ZShgJHtiYXNlQ2xhc3N9LSR7cGxhY2VtZW50VG9SZW1vdmV9YCk7IH0pO1xuICB9XG5cbiAgLy8gcmVwbGFjZSBhdXRvIHBsYWNlbWVudCB3aXRoIG90aGVyIHBsYWNlbWVudHNcbiAgbGV0IGhhc0F1dG8gPSBwbGFjZW1lbnRWYWxzLmZpbmRJbmRleCh2YWwgPT4gdmFsID09PSAnYXV0bycpO1xuICBpZiAoaGFzQXV0byA+PSAwKSB7XG4gICAgYWxsb3dlZFBsYWNlbWVudHMuZm9yRWFjaChmdW5jdGlvbihvYmopIHtcbiAgICAgIGlmIChwbGFjZW1lbnRWYWxzLmZpbmQodmFsID0+IHZhbC5zZWFyY2goJ14nICsgb2JqKSAhPT0gLTEpID09IG51bGwpIHtcbiAgICAgICAgcGxhY2VtZW50VmFscy5zcGxpY2UoaGFzQXV0bysrLCAxLCBvYmogYXMgUGxhY2VtZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIGNvb3JkaW5hdGVzIHdoZXJlIHRvIHBvc2l0aW9uXG5cbiAgLy8gUmVxdWlyZWQgZm9yIHRyYW5zZm9ybTpcbiAgY29uc3Qgc3R5bGUgPSB0YXJnZXRFbGVtZW50LnN0eWxlO1xuICBzdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gIHN0eWxlLnRvcCA9ICcwJztcbiAgc3R5bGUubGVmdCA9ICcwJztcbiAgc3R5bGVbJ3dpbGwtY2hhbmdlJ10gPSAndHJhbnNmb3JtJztcblxuICBsZXQgdGVzdFBsYWNlbWVudDogUGxhY2VtZW50O1xuICBsZXQgaXNJblZpZXdwb3J0ID0gZmFsc2U7XG4gIGZvciAodGVzdFBsYWNlbWVudCBvZiBwbGFjZW1lbnRWYWxzKSB7XG4gICAgbGV0IGFkZGVkQ2xhc3NlcyA9IGFkZENsYXNzZXNUb1RhcmdldCh0ZXN0UGxhY2VtZW50KTtcblxuICAgIGlmIChwb3NpdGlvblNlcnZpY2UucG9zaXRpb25FbGVtZW50cyhob3N0RWxlbWVudCwgdGFyZ2V0RWxlbWVudCwgdGVzdFBsYWNlbWVudCwgYXBwZW5kVG9Cb2R5KSkge1xuICAgICAgaXNJblZpZXdwb3J0ID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSB0aGUgYmFzZUNsYXNzZXMgZm9yIGZ1cnRoZXIgY2FsY3VsYXRpb25cbiAgICBpZiAoYmFzZUNsYXNzKSB7XG4gICAgICBhZGRlZENsYXNzZXMuZm9yRWFjaCgoY2xhc3NuYW1lKSA9PiB7IGNsYXNzTGlzdC5yZW1vdmUoY2xhc3NuYW1lKTsgfSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFpc0luVmlld3BvcnQpIHtcbiAgICAvLyBJZiBub3RoaW5nIG1hdGNoLCB0aGUgZmlyc3QgcGxhY2VtZW50IGlzIHRoZSBkZWZhdWx0IG9uZVxuICAgIHRlc3RQbGFjZW1lbnQgPSBwbGFjZW1lbnRWYWxzWzBdO1xuICAgIGFkZENsYXNzZXNUb1RhcmdldCh0ZXN0UGxhY2VtZW50KTtcbiAgICBwb3NpdGlvblNlcnZpY2UucG9zaXRpb25FbGVtZW50cyhob3N0RWxlbWVudCwgdGFyZ2V0RWxlbWVudCwgdGVzdFBsYWNlbWVudCwgYXBwZW5kVG9Cb2R5KTtcbiAgfVxuXG4gIHJldHVybiB0ZXN0UGxhY2VtZW50O1xufVxuXG5leHBvcnQgdHlwZSBQbGFjZW1lbnQgPSAnYXV0bycgfCAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JyB8ICd0b3AtbGVmdCcgfCAndG9wLXJpZ2h0JyB8ICdib3R0b20tbGVmdCcgfFxuICAgICdib3R0b20tcmlnaHQnIHwgJ2xlZnQtdG9wJyB8ICdsZWZ0LWJvdHRvbScgfCAncmlnaHQtdG9wJyB8ICdyaWdodC1ib3R0b20nO1xuXG5leHBvcnQgdHlwZSBQbGFjZW1lbnRBcnJheSA9IFBsYWNlbWVudCB8IEFycmF5PFBsYWNlbWVudD58IHN0cmluZztcbiIsImltcG9ydCB7cGFkTnVtYmVyLCB0b0ludGVnZXIsIGlzTnVtYmVyfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IHtOZ2JEYXRlU3RydWN0fSBmcm9tICcuL25nYi1kYXRlLXN0cnVjdCc7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gTkdCX0RBVEVQSUNLRVJfUEFSU0VSX0ZPUk1BVFRFUl9GQUNUT1JZKCkge1xuICByZXR1cm4gbmV3IE5nYkRhdGVJU09QYXJzZXJGb3JtYXR0ZXIoKTtcbn1cblxuLyoqXG4gKiBBbiBhYnN0cmFjdCBzZXJ2aWNlIGZvciBwYXJzaW5nIGFuZCBmb3JtYXR0aW5nIGRhdGVzIGZvciB0aGVcbiAqIFtgTmdiSW5wdXREYXRlcGlja2VyYF0oIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI05nYklucHV0RGF0ZXBpY2tlcikgZGlyZWN0aXZlLlxuICogQ29udmVydHMgYmV0d2VlbiB0aGUgaW50ZXJuYWwgYE5nYkRhdGVTdHJ1Y3RgIG1vZGVsIHByZXNlbnRhdGlvbiBhbmQgYSBgc3RyaW5nYCB0aGF0IGlzIGRpc3BsYXllZCBpbiB0aGVcbiAqIGlucHV0IGVsZW1lbnQuXG4gKlxuICogV2hlbiB1c2VyIHR5cGVzIHNvbWV0aGluZyBpbiB0aGUgaW5wdXQgdGhpcyBzZXJ2aWNlIGF0dGVtcHRzIHRvIHBhcnNlIGl0IGludG8gYSBgTmdiRGF0ZVN0cnVjdGAgb2JqZWN0LlxuICogQW5kIHZpY2UgdmVyc2EsIHdoZW4gdXNlcnMgc2VsZWN0cyBhIGRhdGUgaW4gdGhlIGNhbGVuZGFyIHdpdGggdGhlIG1vdXNlLCBpdCBtdXN0IGJlIGRpc3BsYXllZCBhcyBhIGBzdHJpbmdgXG4gKiBpbiB0aGUgaW5wdXQuXG4gKlxuICogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiB1c2VzIHRoZSBJU08gODYwMSBmb3JtYXQsIGJ1dCB5b3UgY2FuIHByb3ZpZGUgYW5vdGhlciBpbXBsZW1lbnRhdGlvbiB2aWEgRElcbiAqIHRvIHVzZSBhbiBhbHRlcm5hdGl2ZSBzdHJpbmcgZm9ybWF0IG9yIGEgY3VzdG9tIHBhcnNpbmcgbG9naWMuXG4gKlxuICogU2VlIHRoZSBbZGF0ZSBmb3JtYXQgb3ZlcnZpZXddKCMvY29tcG9uZW50cy9kYXRlcGlja2VyL292ZXJ2aWV3I2RhdGUtbW9kZWwpIGZvciBtb3JlIGRldGFpbHMuXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCcsIHVzZUZhY3Rvcnk6IE5HQl9EQVRFUElDS0VSX1BBUlNFUl9GT1JNQVRURVJfRkFDVE9SWX0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmdiRGF0ZVBhcnNlckZvcm1hdHRlciB7XG4gIC8qKlxuICAgKiBQYXJzZXMgdGhlIGdpdmVuIGBzdHJpbmdgIHRvIGFuIGBOZ2JEYXRlU3RydWN0YC5cbiAgICpcbiAgICogSW1wbGVtZW50YXRpb25zIHNob3VsZCB0cnkgdGhlaXIgYmVzdCB0byBwcm92aWRlIGEgcmVzdWx0LCBldmVuXG4gICAqIHBhcnRpYWwuIFRoZXkgbXVzdCByZXR1cm4gYG51bGxgIGlmIHRoZSB2YWx1ZSBjYW4ndCBiZSBwYXJzZWQuXG4gICAqL1xuICBhYnN0cmFjdCBwYXJzZSh2YWx1ZTogc3RyaW5nKTogTmdiRGF0ZVN0cnVjdDtcblxuICAvKipcbiAgICogRm9ybWF0cyB0aGUgZ2l2ZW4gYE5nYkRhdGVTdHJ1Y3RgIHRvIGEgYHN0cmluZ2AuXG4gICAqXG4gICAqIEltcGxlbWVudGF0aW9ucyBzaG91bGQgcmV0dXJuIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUgZ2l2ZW4gZGF0ZSBpcyBgbnVsbGAsXG4gICAqIGFuZCB0cnkgdGhlaXIgYmVzdCB0byBwcm92aWRlIGEgcGFydGlhbCByZXN1bHQgaWYgdGhlIGdpdmVuIGRhdGUgaXMgaW5jb21wbGV0ZSBvciBpbnZhbGlkLlxuICAgKi9cbiAgYWJzdHJhY3QgZm9ybWF0KGRhdGU6IE5nYkRhdGVTdHJ1Y3QpOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ2JEYXRlSVNPUGFyc2VyRm9ybWF0dGVyIGV4dGVuZHMgTmdiRGF0ZVBhcnNlckZvcm1hdHRlciB7XG4gIHBhcnNlKHZhbHVlOiBzdHJpbmcpOiBOZ2JEYXRlU3RydWN0IHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGNvbnN0IGRhdGVQYXJ0cyA9IHZhbHVlLnRyaW0oKS5zcGxpdCgnLScpO1xuICAgICAgaWYgKGRhdGVQYXJ0cy5sZW5ndGggPT09IDEgJiYgaXNOdW1iZXIoZGF0ZVBhcnRzWzBdKSkge1xuICAgICAgICByZXR1cm4ge3llYXI6IHRvSW50ZWdlcihkYXRlUGFydHNbMF0pLCBtb250aDogbnVsbCwgZGF5OiBudWxsfTtcbiAgICAgIH0gZWxzZSBpZiAoZGF0ZVBhcnRzLmxlbmd0aCA9PT0gMiAmJiBpc051bWJlcihkYXRlUGFydHNbMF0pICYmIGlzTnVtYmVyKGRhdGVQYXJ0c1sxXSkpIHtcbiAgICAgICAgcmV0dXJuIHt5ZWFyOiB0b0ludGVnZXIoZGF0ZVBhcnRzWzBdKSwgbW9udGg6IHRvSW50ZWdlcihkYXRlUGFydHNbMV0pLCBkYXk6IG51bGx9O1xuICAgICAgfSBlbHNlIGlmIChkYXRlUGFydHMubGVuZ3RoID09PSAzICYmIGlzTnVtYmVyKGRhdGVQYXJ0c1swXSkgJiYgaXNOdW1iZXIoZGF0ZVBhcnRzWzFdKSAmJiBpc051bWJlcihkYXRlUGFydHNbMl0pKSB7XG4gICAgICAgIHJldHVybiB7eWVhcjogdG9JbnRlZ2VyKGRhdGVQYXJ0c1swXSksIG1vbnRoOiB0b0ludGVnZXIoZGF0ZVBhcnRzWzFdKSwgZGF5OiB0b0ludGVnZXIoZGF0ZVBhcnRzWzJdKX07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZm9ybWF0KGRhdGU6IE5nYkRhdGVTdHJ1Y3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRlID9cbiAgICAgICAgYCR7ZGF0ZS55ZWFyfS0ke2lzTnVtYmVyKGRhdGUubW9udGgpID8gcGFkTnVtYmVyKGRhdGUubW9udGgpIDogJyd9LSR7aXNOdW1iZXIoZGF0ZS5kYXkpID8gcGFkTnVtYmVyKGRhdGUuZGF5KSA6ICcnfWAgOlxuICAgICAgICAnJztcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29tcG9uZW50UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRvcn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge25nYkF1dG9DbG9zZX0gZnJvbSAnLi4vdXRpbC9hdXRvY2xvc2UnO1xuaW1wb3J0IHtuZ2JGb2N1c1RyYXB9IGZyb20gJy4uL3V0aWwvZm9jdXMtdHJhcCc7XG5pbXBvcnQge1BsYWNlbWVudEFycmF5LCBwb3NpdGlvbkVsZW1lbnRzfSBmcm9tICcuLi91dGlsL3Bvc2l0aW9uaW5nJztcblxuaW1wb3J0IHtOZ2JEYXRlQWRhcHRlcn0gZnJvbSAnLi9hZGFwdGVycy9uZ2ItZGF0ZS1hZGFwdGVyJztcbmltcG9ydCB7TmdiRGF0ZXBpY2tlciwgTmdiRGF0ZXBpY2tlck5hdmlnYXRlRXZlbnR9IGZyb20gJy4vZGF0ZXBpY2tlcic7XG5pbXBvcnQge0RheVRlbXBsYXRlQ29udGV4dH0gZnJvbSAnLi9kYXRlcGlja2VyLWRheS10ZW1wbGF0ZS1jb250ZXh0JztcbmltcG9ydCB7TmdiRGF0ZXBpY2tlclNlcnZpY2V9IGZyb20gJy4vZGF0ZXBpY2tlci1zZXJ2aWNlJztcbmltcG9ydCB7TmdiQ2FsZW5kYXJ9IGZyb20gJy4vbmdiLWNhbGVuZGFyJztcbmltcG9ydCB7TmdiRGF0ZX0gZnJvbSAnLi9uZ2ItZGF0ZSc7XG5pbXBvcnQge05nYkRhdGVQYXJzZXJGb3JtYXR0ZXJ9IGZyb20gJy4vbmdiLWRhdGUtcGFyc2VyLWZvcm1hdHRlcic7XG5pbXBvcnQge05nYkRhdGVTdHJ1Y3R9IGZyb20gJy4vbmdiLWRhdGUtc3RydWN0JztcblxuY29uc3QgTkdCX0RBVEVQSUNLRVJfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOZ2JJbnB1dERhdGVwaWNrZXIpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuY29uc3QgTkdCX0RBVEVQSUNLRVJfVkFMSURBVE9SID0ge1xuICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOZ2JJbnB1dERhdGVwaWNrZXIpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0aGF0IGFsbG93cyB0byBzdGljayBhIGRhdGVwaWNrZXIgcG9wdXAgdG8gYW4gaW5wdXQgZmllbGQuXG4gKlxuICogTWFuYWdlcyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBpbnB1dCBmaWVsZCBpdHNlbGYsIGRvZXMgdmFsdWUgZm9ybWF0dGluZyBhbmQgcHJvdmlkZXMgZm9ybXMgaW50ZWdyYXRpb24uXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lucHV0W25nYkRhdGVwaWNrZXJdJyxcbiAgZXhwb3J0QXM6ICduZ2JEYXRlcGlja2VyJyxcbiAgaG9zdDoge1xuICAgICcoaW5wdXQpJzogJ21hbnVhbERhdGVDaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSknLFxuICAgICcoY2hhbmdlKSc6ICdtYW51YWxEYXRlQ2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUsIHRydWUpJyxcbiAgICAnKGJsdXIpJzogJ29uQmx1cigpJyxcbiAgICAnW2Rpc2FibGVkXSc6ICdkaXNhYmxlZCdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbTkdCX0RBVEVQSUNLRVJfVkFMVUVfQUNDRVNTT1IsIE5HQl9EQVRFUElDS0VSX1ZBTElEQVRPUiwgTmdiRGF0ZXBpY2tlclNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIE5nYklucHV0RGF0ZXBpY2tlciBpbXBsZW1lbnRzIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xuICBwcml2YXRlIF9jUmVmOiBDb21wb25lbnRSZWY8TmdiRGF0ZXBpY2tlcj4gPSBudWxsO1xuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9tb2RlbDogTmdiRGF0ZTtcbiAgcHJpdmF0ZSBfaW5wdXRWYWx1ZTogc3RyaW5nO1xuICBwcml2YXRlIF96b25lU3Vic2NyaXB0aW9uOiBhbnk7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBkYXRlcGlja2VyIHBvcHVwIHNob3VsZCBiZSBjbG9zZWQgYXV0b21hdGljYWxseSBhZnRlciBkYXRlIHNlbGVjdGlvbiAvIG91dHNpZGUgY2xpY2sgb3Igbm90LlxuICAgKlxuICAgKiAqIGB0cnVlYCAtIHRoZSBwb3B1cCB3aWxsIGNsb3NlIG9uIGJvdGggZGF0ZSBzZWxlY3Rpb24gYW5kIG91dHNpZGUgY2xpY2suXG4gICAqICogYGZhbHNlYCAtIHRoZSBwb3B1cCBjYW4gb25seSBiZSBjbG9zZWQgbWFudWFsbHkgdmlhIGBjbG9zZSgpYCBvciBgdG9nZ2xlKClgIG1ldGhvZHMuXG4gICAqICogYFwiaW5zaWRlXCJgIC0gdGhlIHBvcHVwIHdpbGwgY2xvc2Ugb24gZGF0ZSBzZWxlY3Rpb24sIGJ1dCBub3Qgb3V0c2lkZSBjbGlja3MuXG4gICAqICogYFwib3V0c2lkZVwiYCAtIHRoZSBwb3B1cCB3aWxsIGNsb3NlIG9ubHkgb24gdGhlIG91dHNpZGUgY2xpY2sgYW5kIG5vdCBvbiBkYXRlIHNlbGVjdGlvbi9pbnNpZGUgY2xpY2tzLlxuICAgKlxuICAgKiBAc2luY2UgMy4wLjBcbiAgICovXG4gIEBJbnB1dCgpIGF1dG9DbG9zZTogYm9vbGVhbiB8ICdpbnNpZGUnIHwgJ291dHNpZGUnID0gdHJ1ZTtcblxuICAvKipcbiAgICogVGhlIHJlZmVyZW5jZSB0byBhIGN1c3RvbSB0ZW1wbGF0ZSBmb3IgdGhlIGRheS5cbiAgICpcbiAgICogQWxsb3dzIHRvIGNvbXBsZXRlbHkgb3ZlcnJpZGUgdGhlIHdheSBhIGRheSAnY2VsbCcgaW4gdGhlIGNhbGVuZGFyIGlzIGRpc3BsYXllZC5cbiAgICpcbiAgICogU2VlIFtgRGF5VGVtcGxhdGVDb250ZXh0YF0oIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI0RheVRlbXBsYXRlQ29udGV4dCkgZm9yIHRoZSBkYXRhIHlvdSBnZXQgaW5zaWRlLlxuICAgKi9cbiAgQElucHV0KCkgZGF5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPERheVRlbXBsYXRlQ29udGV4dD47XG5cbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayB0byBwYXNzIGFueSBhcmJpdHJhcnkgZGF0YSB0byB0aGUgdGVtcGxhdGUgY2VsbCB2aWEgdGhlXG4gICAqIFtgRGF5VGVtcGxhdGVDb250ZXh0YF0oIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI0RheVRlbXBsYXRlQ29udGV4dCkncyBgZGF0YWAgcGFyYW1ldGVyLlxuICAgKlxuICAgKiBgY3VycmVudGAgaXMgdGhlIG1vbnRoIHRoYXQgaXMgY3VycmVudGx5IGRpc3BsYXllZCBieSB0aGUgZGF0ZXBpY2tlci5cbiAgICpcbiAgICogQHNpbmNlIDMuMy4wXG4gICAqL1xuICBASW5wdXQoKSBkYXlUZW1wbGF0ZURhdGE6IChkYXRlOiBOZ2JEYXRlLCBjdXJyZW50OiB7eWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyfSkgPT4gYW55O1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIG1vbnRocyB0byBkaXNwbGF5LlxuICAgKi9cbiAgQElucHV0KCkgZGlzcGxheU1vbnRoczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgKlxuICAgKiBXaXRoIGRlZmF1bHQgY2FsZW5kYXIgd2UgdXNlIElTTyA4NjAxOiAnd2Vla2RheScgaXMgMT1Nb24gLi4uIDc9U3VuLlxuICAgKi9cbiAgQElucHV0KCkgZmlyc3REYXlPZldlZWs6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHJlZmVyZW5jZSB0byB0aGUgY3VzdG9tIHRlbXBsYXRlIGZvciB0aGUgZGF0ZXBpY2tlciBmb290ZXIuXG4gICAqXG4gICAqIEBzaW5jZSAzLjMuMFxuICAgKi9cbiAgQElucHV0KCkgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayB0byBtYXJrIHNvbWUgZGF0ZXMgYXMgZGlzYWJsZWQuXG4gICAqXG4gICAqIEl0IGlzIGNhbGxlZCBmb3IgZWFjaCBuZXcgZGF0ZSB3aGVuIG5hdmlnYXRpbmcgdG8gYSBkaWZmZXJlbnQgbW9udGguXG4gICAqXG4gICAqIGBjdXJyZW50YCBpcyB0aGUgbW9udGggdGhhdCBpcyBjdXJyZW50bHkgZGlzcGxheWVkIGJ5IHRoZSBkYXRlcGlja2VyLlxuICAgKi9cbiAgQElucHV0KCkgbWFya0Rpc2FibGVkOiAoZGF0ZTogTmdiRGF0ZSwgY3VycmVudDoge3llYXI6IG51bWJlciwgbW9udGg6IG51bWJlcn0pID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBlYXJsaWVzdCBkYXRlIHRoYXQgY2FuIGJlIGRpc3BsYXllZCBvciBzZWxlY3RlZC4gQWxzbyB1c2VkIGZvciBmb3JtIHZhbGlkYXRpb24uXG4gICAqXG4gICAqIElmIG5vdCBwcm92aWRlZCwgJ3llYXInIHNlbGVjdCBib3ggd2lsbCBkaXNwbGF5IDEwIHllYXJzIGJlZm9yZSB0aGUgY3VycmVudCBtb250aC5cbiAgICovXG4gIEBJbnB1dCgpIG1pbkRhdGU6IE5nYkRhdGVTdHJ1Y3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBsYXRlc3QgZGF0ZSB0aGF0IGNhbiBiZSBkaXNwbGF5ZWQgb3Igc2VsZWN0ZWQuIEFsc28gdXNlZCBmb3IgZm9ybSB2YWxpZGF0aW9uLlxuICAgKlxuICAgKiBJZiBub3QgcHJvdmlkZWQsICd5ZWFyJyBzZWxlY3QgYm94IHdpbGwgZGlzcGxheSAxMCB5ZWFycyBhZnRlciB0aGUgY3VycmVudCBtb250aC5cbiAgICovXG4gIEBJbnB1dCgpIG1heERhdGU6IE5nYkRhdGVTdHJ1Y3Q7XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRpb24gdHlwZS5cbiAgICpcbiAgICogKiBgXCJzZWxlY3RcImAgLSBzZWxlY3QgYm94ZXMgZm9yIG1vbnRoIGFuZCBuYXZpZ2F0aW9uIGFycm93c1xuICAgKiAqIGBcImFycm93c1wiYCAtIG9ubHkgbmF2aWdhdGlvbiBhcnJvd3NcbiAgICogKiBgXCJub25lXCJgIC0gbm8gbmF2aWdhdGlvbiB2aXNpYmxlIGF0IGFsbFxuICAgKi9cbiAgQElucHV0KCkgbmF2aWdhdGlvbjogJ3NlbGVjdCcgfCAnYXJyb3dzJyB8ICdub25lJztcblxuICAvKipcbiAgICogVGhlIHdheSBvZiBkaXNwbGF5aW5nIGRheXMgdGhhdCBkb24ndCBiZWxvbmcgdG8gdGhlIGN1cnJlbnQgbW9udGguXG4gICAqXG4gICAqICogYFwidmlzaWJsZVwiYCAtIGRheXMgYXJlIHZpc2libGVcbiAgICogKiBgXCJoaWRkZW5cImAgLSBkYXlzIGFyZSBoaWRkZW4sIHdoaXRlIHNwYWNlIHByZXNlcnZlZFxuICAgKiAqIGBcImNvbGxhcHNlZFwiYCAtIGRheXMgYXJlIGNvbGxhcHNlZCwgc28gdGhlIGRhdGVwaWNrZXIgaGVpZ2h0IG1pZ2h0IGNoYW5nZSBiZXR3ZWVuIG1vbnRoc1xuICAgKlxuICAgKiBGb3IgdGhlIDIrIG1vbnRocyB2aWV3LCBkYXlzIGluIGJldHdlZW4gbW9udGhzIGFyZSBuZXZlciBzaG93bi5cbiAgICovXG4gIEBJbnB1dCgpIG91dHNpZGVEYXlzOiAndmlzaWJsZScgfCAnY29sbGFwc2VkJyB8ICdoaWRkZW4nO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJlZmVycmVkIHBsYWNlbWVudCBvZiB0aGUgZGF0ZXBpY2tlciBwb3B1cC5cbiAgICpcbiAgICogUG9zc2libGUgdmFsdWVzIGFyZSBgXCJ0b3BcImAsIGBcInRvcC1sZWZ0XCJgLCBgXCJ0b3AtcmlnaHRcImAsIGBcImJvdHRvbVwiYCwgYFwiYm90dG9tLWxlZnRcImAsXG4gICAqIGBcImJvdHRvbS1yaWdodFwiYCwgYFwibGVmdFwiYCwgYFwibGVmdC10b3BcImAsIGBcImxlZnQtYm90dG9tXCJgLCBgXCJyaWdodFwiYCwgYFwicmlnaHQtdG9wXCJgLFxuICAgKiBgXCJyaWdodC1ib3R0b21cImBcbiAgICpcbiAgICogQWNjZXB0cyBhbiBhcnJheSBvZiBzdHJpbmdzIG9yIGEgc3RyaW5nIHdpdGggc3BhY2Ugc2VwYXJhdGVkIHBvc3NpYmxlIHZhbHVlcy5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgb3JkZXIgb2YgcHJlZmVyZW5jZSBpcyBgXCJib3R0b20tbGVmdCBib3R0b20tcmlnaHQgdG9wLWxlZnQgdG9wLXJpZ2h0XCJgXG4gICAqXG4gICAqIFBsZWFzZSBzZWUgdGhlIFtwb3NpdGlvbmluZyBvdmVydmlld10oIy9wb3NpdGlvbmluZykgZm9yIG1vcmUgZGV0YWlscy5cbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlbWVudDogUGxhY2VtZW50QXJyYXkgPSBbJ2JvdHRvbS1sZWZ0JywgJ2JvdHRvbS1yaWdodCcsICd0b3AtbGVmdCcsICd0b3AtcmlnaHQnXTtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB3ZWVrZGF5cyB3aWxsIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIHNob3dXZWVrZGF5czogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB3ZWVrIG51bWJlcnMgd2lsbCBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBASW5wdXQoKSBzaG93V2Vla051bWJlcnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRlIHRvIG9wZW4gY2FsZW5kYXIgd2l0aC5cbiAgICpcbiAgICogV2l0aCB0aGUgZGVmYXVsdCBjYWxlbmRhciB3ZSB1c2UgSVNPIDg2MDE6ICdtb250aCcgaXMgMT1KYW4gLi4uIDEyPURlYy5cbiAgICogSWYgbm90aGluZyBvciBpbnZhbGlkIGRhdGUgaXMgcHJvdmlkZWQsIGNhbGVuZGFyIHdpbGwgb3BlbiB3aXRoIGN1cnJlbnQgbW9udGguXG4gICAqXG4gICAqIFlvdSBjb3VsZCB1c2UgYG5hdmlnYXRlVG8oZGF0ZSlgIG1ldGhvZCBhcyBhbiBhbHRlcm5hdGl2ZS5cbiAgICovXG4gIEBJbnB1dCgpIHN0YXJ0RGF0ZToge3llYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF5PzogbnVtYmVyfTtcblxuICAvKipcbiAgICogQSBzZWxlY3RvciBzcGVjaWZ5aW5nIHRoZSBlbGVtZW50IHRoZSBkYXRlcGlja2VyIHBvcHVwIHNob3VsZCBiZSBhcHBlbmRlZCB0by5cbiAgICpcbiAgICogQ3VycmVudGx5IG9ubHkgc3VwcG9ydHMgYFwiYm9keVwiYC5cbiAgICovXG4gIEBJbnB1dCgpIGNvbnRhaW5lcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNzcyBzZWxlY3RvciBvciBodG1sIGVsZW1lbnQgc3BlY2lmeWluZyB0aGUgZWxlbWVudCB0aGUgZGF0ZXBpY2tlciBwb3B1cCBzaG91bGQgYmUgcG9zaXRpb25lZCBhZ2FpbnN0LlxuICAgKlxuICAgKiBCeSBkZWZhdWx0IHRoZSBpbnB1dCBpcyB1c2VkIGFzIGEgdGFyZ2V0LlxuICAgKlxuICAgKiBAc2luY2UgNC4yLjBcbiAgICovXG4gIEBJbnB1dCgpIHBvc2l0aW9uVGFyZ2V0OiBzdHJpbmcgfCBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlZCB3aGVuIHVzZXIgc2VsZWN0cyBhIGRhdGUgdXNpbmcga2V5Ym9hcmQgb3IgbW91c2UuXG4gICAqXG4gICAqIFRoZSBwYXlsb2FkIG9mIHRoZSBldmVudCBpcyBjdXJyZW50bHkgc2VsZWN0ZWQgYE5nYkRhdGVgLlxuICAgKlxuICAgKiBAc2luY2UgMS4xLjFcbiAgICovXG4gIEBPdXRwdXQoKSBkYXRlU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxOZ2JEYXRlPigpO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHJpZ2h0IGFmdGVyIHRoZSBuYXZpZ2F0aW9uIGhhcHBlbnMgYW5kIGRpc3BsYXllZCBtb250aCBjaGFuZ2VzLlxuICAgKlxuICAgKiBTZWUgW2BOZ2JEYXRlcGlja2VyTmF2aWdhdGVFdmVudGBdKCMvY29tcG9uZW50cy9kYXRlcGlja2VyL2FwaSNOZ2JEYXRlcGlja2VyTmF2aWdhdGVFdmVudCkgZm9yIHRoZSBwYXlsb2FkIGluZm8uXG4gICAqL1xuICBAT3V0cHV0KCkgbmF2aWdhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPE5nYkRhdGVwaWNrZXJOYXZpZ2F0ZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBBbiBldmVudCBmaXJlZCBhZnRlciBjbG9zaW5nIGRhdGVwaWNrZXIgd2luZG93LlxuICAgKlxuICAgKiBAc2luY2UgNC4yLjBcbiAgICovXG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGFueSkge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWUgPT09ICcnIHx8ICh2YWx1ZSAmJiB2YWx1ZSAhPT0gJ2ZhbHNlJyk7XG5cbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgdGhpcy5fY1JlZi5pbnN0YW5jZS5zZXREaXNhYmxlZFN0YXRlKHRoaXMuX2Rpc2FibGVkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuICBwcml2YXRlIF9vblRvdWNoZWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBfdmFsaWRhdG9yQ2hhbmdlID0gKCkgPT4ge307XG5cblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgX3BhcnNlckZvcm1hdHRlcjogTmdiRGF0ZVBhcnNlckZvcm1hdHRlciwgcHJpdmF0ZSBfZWxSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4sXG4gICAgICBwcml2YXRlIF92Y1JlZjogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBfY2ZyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSwgcHJpdmF0ZSBfc2VydmljZTogTmdiRGF0ZXBpY2tlclNlcnZpY2UsIHByaXZhdGUgX2NhbGVuZGFyOiBOZ2JDYWxlbmRhcixcbiAgICAgIHByaXZhdGUgX2RhdGVBZGFwdGVyOiBOZ2JEYXRlQWRhcHRlcjxhbnk+LCBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogYW55LFxuICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5fem9uZVN1YnNjcmlwdGlvbiA9IF9uZ1pvbmUub25TdGFibGUuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3VwZGF0ZVBvcHVwUG9zaXRpb24oKSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gYW55KTogdm9pZCB7IHRoaXMuX29uQ2hhbmdlID0gZm47IH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gYW55KTogdm9pZCB7IHRoaXMuX29uVG91Y2hlZCA9IGZuOyB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQgeyB0aGlzLl92YWxpZGF0b3JDaGFuZ2UgPSBmbjsgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQgeyB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDsgfVxuXG4gIHZhbGlkYXRlKGM6IEFic3RyYWN0Q29udHJvbCk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHtcbiAgICBjb25zdCB2YWx1ZSA9IGMudmFsdWU7XG5cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgbmdiRGF0ZSA9IHRoaXMuX2Zyb21EYXRlU3RydWN0KHRoaXMuX2RhdGVBZGFwdGVyLmZyb21Nb2RlbCh2YWx1ZSkpO1xuXG4gICAgaWYgKCF0aGlzLl9jYWxlbmRhci5pc1ZhbGlkKG5nYkRhdGUpKSB7XG4gICAgICByZXR1cm4geyduZ2JEYXRlJzoge2ludmFsaWQ6IGMudmFsdWV9fTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5taW5EYXRlICYmIG5nYkRhdGUuYmVmb3JlKE5nYkRhdGUuZnJvbSh0aGlzLm1pbkRhdGUpKSkge1xuICAgICAgcmV0dXJuIHsnbmdiRGF0ZSc6IHtyZXF1aXJlZEJlZm9yZTogdGhpcy5taW5EYXRlfX07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWF4RGF0ZSAmJiBuZ2JEYXRlLmFmdGVyKE5nYkRhdGUuZnJvbSh0aGlzLm1heERhdGUpKSkge1xuICAgICAgcmV0dXJuIHsnbmdiRGF0ZSc6IHtyZXF1aXJlZEFmdGVyOiB0aGlzLm1heERhdGV9fTtcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy5fbW9kZWwgPSB0aGlzLl9mcm9tRGF0ZVN0cnVjdCh0aGlzLl9kYXRlQWRhcHRlci5mcm9tTW9kZWwodmFsdWUpKTtcbiAgICB0aGlzLl93cml0ZU1vZGVsVmFsdWUodGhpcy5fbW9kZWwpO1xuICB9XG5cbiAgbWFudWFsRGF0ZUNoYW5nZSh2YWx1ZTogc3RyaW5nLCB1cGRhdGVWaWV3ID0gZmFsc2UpIHtcbiAgICBjb25zdCBpbnB1dFZhbHVlQ2hhbmdlZCA9IHZhbHVlICE9PSB0aGlzLl9pbnB1dFZhbHVlO1xuICAgIGlmIChpbnB1dFZhbHVlQ2hhbmdlZCkge1xuICAgICAgdGhpcy5faW5wdXRWYWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5fbW9kZWwgPSB0aGlzLl9mcm9tRGF0ZVN0cnVjdCh0aGlzLl9wYXJzZXJGb3JtYXR0ZXIucGFyc2UodmFsdWUpKTtcbiAgICB9XG4gICAgaWYgKGlucHV0VmFsdWVDaGFuZ2VkIHx8ICF1cGRhdGVWaWV3KSB7XG4gICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLl9tb2RlbCA/IHRoaXMuX2RhdGVBZGFwdGVyLnRvTW9kZWwodGhpcy5fbW9kZWwpIDogKHZhbHVlID09PSAnJyA/IG51bGwgOiB2YWx1ZSkpO1xuICAgIH1cbiAgICBpZiAodXBkYXRlVmlldyAmJiB0aGlzLl9tb2RlbCkge1xuICAgICAgdGhpcy5fd3JpdGVNb2RlbFZhbHVlKHRoaXMuX21vZGVsKTtcbiAgICB9XG4gIH1cblxuICBpc09wZW4oKSB7IHJldHVybiAhIXRoaXMuX2NSZWY7IH1cblxuICAvKipcbiAgICogT3BlbnMgdGhlIGRhdGVwaWNrZXIgcG9wdXAuXG4gICAqXG4gICAqIElmIHRoZSByZWxhdGVkIGZvcm0gY29udHJvbCBjb250YWlucyBhIHZhbGlkIGRhdGUsIHRoZSBjb3JyZXNwb25kaW5nIG1vbnRoIHdpbGwgYmUgb3BlbmVkLlxuICAgKi9cbiAgb3BlbigpIHtcbiAgICBpZiAoIXRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIGNvbnN0IGNmID0gdGhpcy5fY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KE5nYkRhdGVwaWNrZXIpO1xuICAgICAgdGhpcy5fY1JlZiA9IHRoaXMuX3ZjUmVmLmNyZWF0ZUNvbXBvbmVudChjZik7XG5cbiAgICAgIHRoaXMuX2FwcGx5UG9wdXBTdHlsaW5nKHRoaXMuX2NSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG4gICAgICB0aGlzLl9hcHBseURhdGVwaWNrZXJJbnB1dHModGhpcy5fY1JlZi5pbnN0YW5jZSk7XG4gICAgICB0aGlzLl9zdWJzY3JpYmVGb3JEYXRlcGlja2VyT3V0cHV0cyh0aGlzLl9jUmVmLmluc3RhbmNlKTtcbiAgICAgIHRoaXMuX2NSZWYuaW5zdGFuY2UubmdPbkluaXQoKTtcbiAgICAgIHRoaXMuX2NSZWYuaW5zdGFuY2Uud3JpdGVWYWx1ZSh0aGlzLl9kYXRlQWRhcHRlci50b01vZGVsKHRoaXMuX21vZGVsKSk7XG5cbiAgICAgIC8vIGRhdGUgc2VsZWN0aW9uIGV2ZW50IGhhbmRsaW5nXG4gICAgICB0aGlzLl9jUmVmLmluc3RhbmNlLnJlZ2lzdGVyT25DaGFuZ2UoKHNlbGVjdGVkRGF0ZSkgPT4ge1xuICAgICAgICB0aGlzLndyaXRlVmFsdWUoc2VsZWN0ZWREYXRlKTtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2Uoc2VsZWN0ZWREYXRlKTtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fY1JlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgIHRoaXMuX2NSZWYuaW5zdGFuY2Uuc2V0RGlzYWJsZWRTdGF0ZSh0aGlzLmRpc2FibGVkKTtcblxuICAgICAgaWYgKHRoaXMuY29udGFpbmVyID09PSAnYm9keScpIHtcbiAgICAgICAgd2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5jb250YWluZXIpLmFwcGVuZENoaWxkKHRoaXMuX2NSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIC8vIGZvY3VzIGhhbmRsaW5nXG4gICAgICBuZ2JGb2N1c1RyYXAodGhpcy5fY1JlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LCB0aGlzLmNsb3NlZCwgdHJ1ZSk7XG4gICAgICB0aGlzLl9jUmVmLmluc3RhbmNlLmZvY3VzKCk7XG5cbiAgICAgIG5nYkF1dG9DbG9zZShcbiAgICAgICAgICB0aGlzLl9uZ1pvbmUsIHRoaXMuX2RvY3VtZW50LCB0aGlzLmF1dG9DbG9zZSwgKCkgPT4gdGhpcy5jbG9zZSgpLCB0aGlzLmNsb3NlZCwgW10sXG4gICAgICAgICAgW3RoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuX2NSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudF0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGRhdGVwaWNrZXIgcG9wdXAuXG4gICAqL1xuICBjbG9zZSgpIHtcbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgdGhpcy5fdmNSZWYucmVtb3ZlKHRoaXMuX3ZjUmVmLmluZGV4T2YodGhpcy5fY1JlZi5ob3N0VmlldykpO1xuICAgICAgdGhpcy5fY1JlZiA9IG51bGw7XG4gICAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgZGF0ZXBpY2tlciBwb3B1cC5cbiAgICovXG4gIHRvZ2dsZSgpIHtcbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBwcm92aWRlZCBkYXRlLlxuICAgKlxuICAgKiBXaXRoIHRoZSBkZWZhdWx0IGNhbGVuZGFyIHdlIHVzZSBJU08gODYwMTogJ21vbnRoJyBpcyAxPUphbiAuLi4gMTI9RGVjLlxuICAgKiBJZiBub3RoaW5nIG9yIGludmFsaWQgZGF0ZSBwcm92aWRlZCBjYWxlbmRhciB3aWxsIG9wZW4gY3VycmVudCBtb250aC5cbiAgICpcbiAgICogVXNlIHRoZSBgW3N0YXJ0RGF0ZV1gIGlucHV0IGFzIGFuIGFsdGVybmF0aXZlLlxuICAgKi9cbiAgbmF2aWdhdGVUbyhkYXRlPzoge3llYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF5PzogbnVtYmVyfSkge1xuICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XG4gICAgICB0aGlzLl9jUmVmLmluc3RhbmNlLm5hdmlnYXRlVG8oZGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgb25CbHVyKCkgeyB0aGlzLl9vblRvdWNoZWQoKTsgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snbWluRGF0ZSddIHx8IGNoYW5nZXNbJ21heERhdGUnXSkge1xuICAgICAgdGhpcy5fdmFsaWRhdG9yQ2hhbmdlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICAgIHRoaXMuX3pvbmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5RGF0ZXBpY2tlcklucHV0cyhkYXRlcGlja2VySW5zdGFuY2U6IE5nYkRhdGVwaWNrZXIpOiB2b2lkIHtcbiAgICBbJ2RheVRlbXBsYXRlJywgJ2RheVRlbXBsYXRlRGF0YScsICdkaXNwbGF5TW9udGhzJywgJ2ZpcnN0RGF5T2ZXZWVrJywgJ2Zvb3RlclRlbXBsYXRlJywgJ21hcmtEaXNhYmxlZCcsICdtaW5EYXRlJyxcbiAgICAgJ21heERhdGUnLCAnbmF2aWdhdGlvbicsICdvdXRzaWRlRGF5cycsICdzaG93TmF2aWdhdGlvbicsICdzaG93V2Vla2RheXMnLCAnc2hvd1dlZWtOdW1iZXJzJ11cbiAgICAgICAgLmZvckVhY2goKG9wdGlvbk5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGlmICh0aGlzW29wdGlvbk5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGRhdGVwaWNrZXJJbnN0YW5jZVtvcHRpb25OYW1lXSA9IHRoaXNbb3B0aW9uTmFtZV07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICBkYXRlcGlja2VySW5zdGFuY2Uuc3RhcnREYXRlID0gdGhpcy5zdGFydERhdGUgfHwgdGhpcy5fbW9kZWw7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseVBvcHVwU3R5bGluZyhuYXRpdmVFbGVtZW50OiBhbnkpIHtcbiAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyhuYXRpdmVFbGVtZW50LCAnZHJvcGRvd24tbWVudScpO1xuICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKG5hdGl2ZUVsZW1lbnQsICdzaG93Jyk7XG5cbiAgICBpZiAodGhpcy5jb250YWluZXIgPT09ICdib2R5Jykge1xuICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3MobmF0aXZlRWxlbWVudCwgJ25nYi1kcC1ib2R5Jyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlRm9yRGF0ZXBpY2tlck91dHB1dHMoZGF0ZXBpY2tlckluc3RhbmNlOiBOZ2JEYXRlcGlja2VyKSB7XG4gICAgZGF0ZXBpY2tlckluc3RhbmNlLm5hdmlnYXRlLnN1YnNjcmliZShuYXZpZ2F0ZUV2ZW50ID0+IHRoaXMubmF2aWdhdGUuZW1pdChuYXZpZ2F0ZUV2ZW50KSk7XG4gICAgZGF0ZXBpY2tlckluc3RhbmNlLnNlbGVjdC5zdWJzY3JpYmUoZGF0ZSA9PiB7XG4gICAgICB0aGlzLmRhdGVTZWxlY3QuZW1pdChkYXRlKTtcbiAgICAgIGlmICh0aGlzLmF1dG9DbG9zZSA9PT0gdHJ1ZSB8fCB0aGlzLmF1dG9DbG9zZSA9PT0gJ2luc2lkZScpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfd3JpdGVNb2RlbFZhbHVlKG1vZGVsOiBOZ2JEYXRlKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLl9wYXJzZXJGb3JtYXR0ZXIuZm9ybWF0KG1vZGVsKTtcbiAgICB0aGlzLl9pbnB1dFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xuICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XG4gICAgICB0aGlzLl9jUmVmLmluc3RhbmNlLndyaXRlVmFsdWUodGhpcy5fZGF0ZUFkYXB0ZXIudG9Nb2RlbChtb2RlbCkpO1xuICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZnJvbURhdGVTdHJ1Y3QoZGF0ZTogTmdiRGF0ZVN0cnVjdCk6IE5nYkRhdGUge1xuICAgIGNvbnN0IG5nYkRhdGUgPSBkYXRlID8gbmV3IE5nYkRhdGUoZGF0ZS55ZWFyLCBkYXRlLm1vbnRoLCBkYXRlLmRheSkgOiBudWxsO1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5pc1ZhbGlkKG5nYkRhdGUpID8gbmdiRGF0ZSA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVQb3B1cFBvc2l0aW9uKCkge1xuICAgIGlmICghdGhpcy5fY1JlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBob3N0RWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnBvc2l0aW9uVGFyZ2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgaG9zdEVsZW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLnBvc2l0aW9uVGFyZ2V0KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucG9zaXRpb25UYXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgaG9zdEVsZW1lbnQgPSB0aGlzLnBvc2l0aW9uVGFyZ2V0O1xuICAgIH0gZWxzZSB7XG4gICAgICBob3N0RWxlbWVudCA9IHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucG9zaXRpb25UYXJnZXQgJiYgIWhvc3RFbGVtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ25nYkRhdGVwaWNrZXIgY291bGQgbm90IGZpbmQgZWxlbWVudCBkZWNsYXJlZCBpbiBbcG9zaXRpb25UYXJnZXRdIHRvIHBvc2l0aW9uIGFnYWluc3QuJyk7XG4gICAgfVxuXG4gICAgcG9zaXRpb25FbGVtZW50cyhob3N0RWxlbWVudCwgdGhpcy5fY1JlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LCB0aGlzLnBsYWNlbWVudCwgdGhpcy5jb250YWluZXIgPT09ICdib2R5Jyk7XG4gIH1cbn1cbiIsImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdiRGF0ZX0gZnJvbSAnLi9uZ2ItZGF0ZSc7XG5pbXBvcnQge05nYkRhdGVwaWNrZXJJMThufSBmcm9tICcuL2RhdGVwaWNrZXItaTE4bic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1tuZ2JEYXRlcGlja2VyRGF5Vmlld10nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZXBpY2tlci1kYXktdmlldy5zY3NzJ10sXG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnYnRuLWxpZ2h0JyxcbiAgICAnW2NsYXNzLmJnLXByaW1hcnldJzogJ3NlbGVjdGVkJyxcbiAgICAnW2NsYXNzLnRleHQtd2hpdGVdJzogJ3NlbGVjdGVkJyxcbiAgICAnW2NsYXNzLnRleHQtbXV0ZWRdJzogJ2lzTXV0ZWQoKScsXG4gICAgJ1tjbGFzcy5vdXRzaWRlXSc6ICdpc011dGVkKCknLFxuICAgICdbY2xhc3MuYWN0aXZlXSc6ICdmb2N1c2VkJ1xuICB9LFxuICB0ZW1wbGF0ZTogYHt7IGkxOG4uZ2V0RGF5TnVtZXJhbHMoZGF0ZSkgfX1gXG59KVxuZXhwb3J0IGNsYXNzIE5nYkRhdGVwaWNrZXJEYXlWaWV3IHtcbiAgQElucHV0KCkgY3VycmVudE1vbnRoOiBudW1iZXI7XG4gIEBJbnB1dCgpIGRhdGU6IE5nYkRhdGU7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBmb2N1c2VkOiBib29sZWFuO1xuICBASW5wdXQoKSBzZWxlY3RlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaTE4bjogTmdiRGF0ZXBpY2tlckkxOG4pIHt9XG5cbiAgaXNNdXRlZCgpIHsgcmV0dXJuICF0aGlzLnNlbGVjdGVkICYmICh0aGlzLmRhdGUubW9udGggIT09IHRoaXMuY3VycmVudE1vbnRoIHx8IHRoaXMuZGlzYWJsZWQpOyB9XG59XG4iLCJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ2JEYXRlfSBmcm9tICcuL25nYi1kYXRlJztcbmltcG9ydCB7dG9JbnRlZ2VyfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IHtOZ2JEYXRlcGlja2VySTE4bn0gZnJvbSAnLi9kYXRlcGlja2VyLWkxOG4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ItZGF0ZXBpY2tlci1uYXZpZ2F0aW9uLXNlbGVjdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLW5hdmlnYXRpb24tc2VsZWN0LnNjc3MnXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8c2VsZWN0XG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgY2xhc3M9XCJjdXN0b20tc2VsZWN0XCJcbiAgICAgIFt2YWx1ZV09XCJkYXRlPy5tb250aFwiXG4gICAgICBpMThuLWFyaWEtbGFiZWw9XCJAQG5nYi5kYXRlcGlja2VyLnNlbGVjdC1tb250aFwiIGFyaWEtbGFiZWw9XCJTZWxlY3QgbW9udGhcIlxuICAgICAgaTE4bi10aXRsZT1cIkBAbmdiLmRhdGVwaWNrZXIuc2VsZWN0LW1vbnRoXCIgdGl0bGU9XCJTZWxlY3QgbW9udGhcIlxuICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VNb250aCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBtIG9mIG1vbnRoc1wiIFthdHRyLmFyaWEtbGFiZWxdPVwiaTE4bi5nZXRNb250aEZ1bGxOYW1lKG0sIGRhdGU/LnllYXIpXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwibVwiPnt7IGkxOG4uZ2V0TW9udGhTaG9ydE5hbWUobSwgZGF0ZT8ueWVhcikgfX08L29wdGlvbj5cbiAgICA8L3NlbGVjdD48c2VsZWN0XG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgY2xhc3M9XCJjdXN0b20tc2VsZWN0XCJcbiAgICAgIFt2YWx1ZV09XCJkYXRlPy55ZWFyXCJcbiAgICAgIGkxOG4tYXJpYS1sYWJlbD1cIkBAbmdiLmRhdGVwaWNrZXIuc2VsZWN0LXllYXJcIiBhcmlhLWxhYmVsPVwiU2VsZWN0IHllYXJcIlxuICAgICAgaTE4bi10aXRsZT1cIkBAbmdiLmRhdGVwaWNrZXIuc2VsZWN0LXllYXJcIiB0aXRsZT1cIlNlbGVjdCB5ZWFyXCJcbiAgICAgIChjaGFuZ2UpPVwiY2hhbmdlWWVhcigkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB5IG9mIHllYXJzXCIgW3ZhbHVlXT1cInlcIj57eyBpMThuLmdldFllYXJOdW1lcmFscyh5KSB9fTwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIE5nYkRhdGVwaWNrZXJOYXZpZ2F0aW9uU2VsZWN0IHtcbiAgQElucHV0KCkgZGF0ZTogTmdiRGF0ZTtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG1vbnRoczogbnVtYmVyW107XG4gIEBJbnB1dCgpIHllYXJzOiBudW1iZXJbXTtcblxuICBAT3V0cHV0KCkgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxOZ2JEYXRlPigpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpMThuOiBOZ2JEYXRlcGlja2VySTE4bikge31cblxuICBjaGFuZ2VNb250aChtb250aDogc3RyaW5nKSB7IHRoaXMuc2VsZWN0LmVtaXQobmV3IE5nYkRhdGUodGhpcy5kYXRlLnllYXIsIHRvSW50ZWdlcihtb250aCksIDEpKTsgfVxuXG4gIGNoYW5nZVllYXIoeWVhcjogc3RyaW5nKSB7IHRoaXMuc2VsZWN0LmVtaXQobmV3IE5nYkRhdGUodG9JbnRlZ2VyKHllYXIpLCB0aGlzLmRhdGUubW9udGgsIDEpKTsgfVxufVxuIiwiaW1wb3J0IHtOZ2JEYXRlfSBmcm9tICcuLi9uZ2ItZGF0ZSc7XG5pbXBvcnQge05nYlBlcmlvZCwgTmdiQ2FsZW5kYXJ9IGZyb20gJy4uL25nYi1jYWxlbmRhcic7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtpc051bWJlcn0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5nYkNhbGVuZGFySGlqcmkgZXh0ZW5kcyBOZ2JDYWxlbmRhciB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIHNwZWNpZmljIEhpanJpIG1vbnRoLlxuICAgKiBgbW9udGhgIGlzIDEgZm9yIE11aGFycmFtLCAyIGZvciBTYWZhciwgZXRjLlxuICAgKiBgeWVhcmAgaXMgYW55IEhpanJpIHllYXIuXG4gICAqL1xuICBhYnN0cmFjdCBnZXREYXlzUGVyTW9udGgobW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBlcXVpdmFsZW50IEhpanJpIGRhdGUgdmFsdWUgZm9yIGEgZ2l2ZSBpbnB1dCBHcmVnb3JpYW4gZGF0ZS5cbiAgICogYGdEYXRlYCBpcyBzIEpTIERhdGUgdG8gYmUgY29udmVydGVkIHRvIEhpanJpLlxuICAgKi9cbiAgYWJzdHJhY3QgZnJvbUdyZWdvcmlhbihnRGF0ZTogRGF0ZSk6IE5nYkRhdGU7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBjdXJyZW50IEhpanJpIGRhdGUgdG8gR3JlZ29yaWFuLlxuICAgKi9cbiAgYWJzdHJhY3QgdG9HcmVnb3JpYW4oaERhdGU6IE5nYkRhdGUpOiBEYXRlO1xuXG4gIGdldERheXNQZXJXZWVrKCkgeyByZXR1cm4gNzsgfVxuXG4gIGdldE1vbnRocygpIHsgcmV0dXJuIFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyXTsgfVxuXG4gIGdldFdlZWtzUGVyTW9udGgoKSB7IHJldHVybiA2OyB9XG5cbiAgZ2V0TmV4dChkYXRlOiBOZ2JEYXRlLCBwZXJpb2Q6IE5nYlBlcmlvZCA9ICdkJywgbnVtYmVyID0gMSkge1xuICAgIGRhdGUgPSBuZXcgTmdiRGF0ZShkYXRlLnllYXIsIGRhdGUubW9udGgsIGRhdGUuZGF5KTtcblxuICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICBjYXNlICd5JzpcbiAgICAgICAgZGF0ZSA9IHRoaXMuX3NldFllYXIoZGF0ZSwgZGF0ZS55ZWFyICsgbnVtYmVyKTtcbiAgICAgICAgZGF0ZS5tb250aCA9IDE7XG4gICAgICAgIGRhdGUuZGF5ID0gMTtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICBjYXNlICdtJzpcbiAgICAgICAgZGF0ZSA9IHRoaXMuX3NldE1vbnRoKGRhdGUsIGRhdGUubW9udGggKyBudW1iZXIpO1xuICAgICAgICBkYXRlLmRheSA9IDE7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgY2FzZSAnZCc6XG4gICAgICAgIHJldHVybiB0aGlzLl9zZXREYXkoZGF0ZSwgZGF0ZS5kYXkgKyBudW1iZXIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJldihkYXRlOiBOZ2JEYXRlLCBwZXJpb2Q6IE5nYlBlcmlvZCA9ICdkJywgbnVtYmVyID0gMSkgeyByZXR1cm4gdGhpcy5nZXROZXh0KGRhdGUsIHBlcmlvZCwgLW51bWJlcik7IH1cblxuICBnZXRXZWVrZGF5KGRhdGU6IE5nYkRhdGUpIHtcbiAgICBjb25zdCBkYXkgPSB0aGlzLnRvR3JlZ29yaWFuKGRhdGUpLmdldERheSgpO1xuICAgIC8vIGluIEpTIERhdGUgU3VuPTAsIGluIElTTyA4NjAxIFN1bj03XG4gICAgcmV0dXJuIGRheSA9PT0gMCA/IDcgOiBkYXk7XG4gIH1cblxuICBnZXRXZWVrTnVtYmVyKHdlZWs6IE5nYkRhdGVbXSwgZmlyc3REYXlPZldlZWs6IG51bWJlcikge1xuICAgIC8vIGluIEpTIERhdGUgU3VuPTAsIGluIElTTyA4NjAxIFN1bj03XG4gICAgaWYgKGZpcnN0RGF5T2ZXZWVrID09PSA3KSB7XG4gICAgICBmaXJzdERheU9mV2VlayA9IDA7XG4gICAgfVxuXG4gICAgY29uc3QgdGh1cnNkYXlJbmRleCA9ICg0ICsgNyAtIGZpcnN0RGF5T2ZXZWVrKSAlIDc7XG4gICAgY29uc3QgZGF0ZSA9IHdlZWtbdGh1cnNkYXlJbmRleF07XG5cbiAgICBjb25zdCBqc0RhdGUgPSB0aGlzLnRvR3JlZ29yaWFuKGRhdGUpO1xuICAgIGpzRGF0ZS5zZXREYXRlKGpzRGF0ZS5nZXREYXRlKCkgKyA0IC0gKGpzRGF0ZS5nZXREYXkoKSB8fCA3KSk7ICAvLyBUaHVyc2RheVxuICAgIGNvbnN0IHRpbWUgPSBqc0RhdGUuZ2V0VGltZSgpO1xuICAgIGNvbnN0IE11aERhdGUgPSB0aGlzLnRvR3JlZ29yaWFuKG5ldyBOZ2JEYXRlKGRhdGUueWVhciwgMSwgMSkpOyAgLy8gQ29tcGFyZSB3aXRoIE11aGFycmFtIDFcbiAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJvdW5kKCh0aW1lIC0gTXVoRGF0ZS5nZXRUaW1lKCkpIC8gODY0MDAwMDApIC8gNykgKyAxO1xuICB9XG5cbiAgZ2V0VG9kYXkoKTogTmdiRGF0ZSB7IHJldHVybiB0aGlzLmZyb21HcmVnb3JpYW4obmV3IERhdGUoKSk7IH1cblxuXG4gIGlzVmFsaWQoZGF0ZTogTmdiRGF0ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkYXRlICYmIGlzTnVtYmVyKGRhdGUueWVhcikgJiYgaXNOdW1iZXIoZGF0ZS5tb250aCkgJiYgaXNOdW1iZXIoZGF0ZS5kYXkpICYmXG4gICAgICAgICFpc05hTih0aGlzLnRvR3JlZ29yaWFuKGRhdGUpLmdldFRpbWUoKSk7XG4gIH1cblxuICBwcml2YXRlIF9zZXREYXkoZGF0ZTogTmdiRGF0ZSwgZGF5OiBudW1iZXIpOiBOZ2JEYXRlIHtcbiAgICBkYXkgPSArZGF5O1xuICAgIGxldCBtRGF5cyA9IHRoaXMuZ2V0RGF5c1Blck1vbnRoKGRhdGUubW9udGgsIGRhdGUueWVhcik7XG4gICAgaWYgKGRheSA8PSAwKSB7XG4gICAgICB3aGlsZSAoZGF5IDw9IDApIHtcbiAgICAgICAgZGF0ZSA9IHRoaXMuX3NldE1vbnRoKGRhdGUsIGRhdGUubW9udGggLSAxKTtcbiAgICAgICAgbURheXMgPSB0aGlzLmdldERheXNQZXJNb250aChkYXRlLm1vbnRoLCBkYXRlLnllYXIpO1xuICAgICAgICBkYXkgKz0gbURheXM7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkYXkgPiBtRGF5cykge1xuICAgICAgd2hpbGUgKGRheSA+IG1EYXlzKSB7XG4gICAgICAgIGRheSAtPSBtRGF5cztcbiAgICAgICAgZGF0ZSA9IHRoaXMuX3NldE1vbnRoKGRhdGUsIGRhdGUubW9udGggKyAxKTtcbiAgICAgICAgbURheXMgPSB0aGlzLmdldERheXNQZXJNb250aChkYXRlLm1vbnRoLCBkYXRlLnllYXIpO1xuICAgICAgfVxuICAgIH1cbiAgICBkYXRlLmRheSA9IGRheTtcbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldE1vbnRoKGRhdGU6IE5nYkRhdGUsIG1vbnRoOiBudW1iZXIpOiBOZ2JEYXRlIHtcbiAgICBtb250aCA9ICttb250aDtcbiAgICBkYXRlLnllYXIgPSBkYXRlLnllYXIgKyBNYXRoLmZsb29yKChtb250aCAtIDEpIC8gMTIpO1xuICAgIGRhdGUubW9udGggPSBNYXRoLmZsb29yKCgobW9udGggLSAxKSAlIDEyICsgMTIpICUgMTIpICsgMTtcbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldFllYXIoZGF0ZTogTmdiRGF0ZSwgeWVhcjogbnVtYmVyKTogTmdiRGF0ZSB7XG4gICAgZGF0ZS55ZWFyID0gK3llYXI7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cbn1cbiIsImltcG9ydCB7TmdiQ2FsZW5kYXJIaWpyaX0gZnJvbSAnLi9uZ2ItY2FsZW5kYXItaGlqcmknO1xuaW1wb3J0IHtOZ2JEYXRlfSBmcm9tICcuLi9uZ2ItZGF0ZSc7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIENoZWNrcyBpZiBpc2xhbWljIHllYXIgaXMgYSBsZWFwIHllYXJcbiAqL1xuZnVuY3Rpb24gaXNJc2xhbWljTGVhcFllYXIoaFllYXI6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gKDE0ICsgMTEgKiBoWWVhcikgJSAzMCA8IDExO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBncmVnb3JpYW4geWVhcnMgaXMgYSBsZWFwIHllYXJcbiAqL1xuZnVuY3Rpb24gaXNHcmVnb3JpYW5MZWFwWWVhcihnRGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICBjb25zdCB5ZWFyID0gZ0RhdGUuZ2V0RnVsbFllYXIoKTtcbiAgcmV0dXJuIHllYXIgJSA0ID09PSAwICYmIHllYXIgJSAxMDAgIT09IDAgfHwgeWVhciAlIDQwMCA9PT0gMDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBzdGFydCBvZiBIaWpyaSBNb250aC5cbiAqIGBoTW9udGhgIGlzIDAgZm9yIE11aGFycmFtLCAxIGZvciBTYWZhciwgZXRjLlxuICogYGhZZWFyYCBpcyBhbnkgSGlqcmkgaFllYXIuXG4gKi9cbmZ1bmN0aW9uIGdldElzbGFtaWNNb250aFN0YXJ0KGhZZWFyOiBudW1iZXIsIGhNb250aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGguY2VpbCgyOS41ICogaE1vbnRoKSArIChoWWVhciAtIDEpICogMzU0ICsgTWF0aC5mbG9vcigoMyArIDExICogaFllYXIpIC8gMzAuMCk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgc3RhcnQgb2YgSGlqcmkgeWVhci5cbiAqIGB5ZWFyYCBpcyBhbnkgSGlqcmkgeWVhci5cbiAqL1xuZnVuY3Rpb24gZ2V0SXNsYW1pY1llYXJTdGFydCh5ZWFyOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gKHllYXIgLSAxKSAqIDM1NCArIE1hdGguZmxvb3IoKDMgKyAxMSAqIHllYXIpIC8gMzAuMCk7XG59XG5cbmZ1bmN0aW9uIG1vZChhOiBudW1iZXIsIGI6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBhIC0gYiAqIE1hdGguZmxvb3IoYSAvIGIpO1xufVxuXG4vKipcbiAqIFRoZSBjaXZpbCBjYWxlbmRhciBpcyBvbmUgdHlwZSBvZiBIaWpyaSBjYWxlbmRhcnMgdXNlZCBpbiBpc2xhbWljIGNvdW50cmllcy5cbiAqIFVzZXMgYSBmaXhlZCBjeWNsZSBvZiBhbHRlcm5hdGluZyAyOS0gYW5kIDMwLWRheSBtb250aHMsXG4gKiB3aXRoIGEgbGVhcCBkYXkgYWRkZWQgdG8gdGhlIGxhc3QgbW9udGggb2YgMTEgb3V0IG9mIGV2ZXJ5IDMwIHllYXJzLlxuICogaHR0cDovL2NsZHIudW5pY29kZS5vcmcvZGV2ZWxvcG1lbnQvZGV2ZWxvcG1lbnQtcHJvY2Vzcy9kZXNpZ24tcHJvcG9zYWxzL2lzbGFtaWMtY2FsZW5kYXItdHlwZXNcbiAqIEFsbCB0aGUgY2FsY3VsYXRpb25zIGhlcmUgYXJlIGJhc2VkIG9uIHRoZSBlcXVhdGlvbnMgZnJvbSBcIkNhbGVuZHJpY2FsIENhbGN1bGF0aW9uc1wiIEJ5IEVkd2FyZCBNLiBSZWluZ29sZCwgTmFjaHVtXG4gKiBEZXJzaG93aXR6LlxuICovXG5cbmNvbnN0IEdSRUdPUklBTl9FUE9DSCA9IDE3MjE0MjUuNTtcbmNvbnN0IElTTEFNSUNfRVBPQ0ggPSAxOTQ4NDM5LjU7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ2JDYWxlbmRhcklzbGFtaWNDaXZpbCBleHRlbmRzIE5nYkNhbGVuZGFySGlqcmkge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgZXF1aXZhbGVudCBpc2xhbWljKGNpdmlsKSBkYXRlIHZhbHVlIGZvciBhIGdpdmUgaW5wdXQgR3JlZ29yaWFuIGRhdGUuXG4gICAqIGBnRGF0ZWAgaXMgYSBKUyBEYXRlIHRvIGJlIGNvbnZlcnRlZCB0byBIaWpyaS5cbiAgICovXG4gIGZyb21HcmVnb3JpYW4oZ0RhdGU6IERhdGUpOiBOZ2JEYXRlIHtcbiAgICBjb25zdCBnWWVhciA9IGdEYXRlLmdldEZ1bGxZZWFyKCksIGdNb250aCA9IGdEYXRlLmdldE1vbnRoKCksIGdEYXkgPSBnRGF0ZS5nZXREYXRlKCk7XG5cbiAgICBsZXQganVsaWFuRGF5ID0gR1JFR09SSUFOX0VQT0NIIC0gMSArIDM2NSAqIChnWWVhciAtIDEpICsgTWF0aC5mbG9vcigoZ1llYXIgLSAxKSAvIDQpICtcbiAgICAgICAgLU1hdGguZmxvb3IoKGdZZWFyIC0gMSkgLyAxMDApICsgTWF0aC5mbG9vcigoZ1llYXIgLSAxKSAvIDQwMCkgK1xuICAgICAgICBNYXRoLmZsb29yKFxuICAgICAgICAgICAgKDM2NyAqIChnTW9udGggKyAxKSAtIDM2MikgLyAxMiArIChnTW9udGggKyAxIDw9IDIgPyAwIDogaXNHcmVnb3JpYW5MZWFwWWVhcihnRGF0ZSkgPyAtMSA6IC0yKSArIGdEYXkpO1xuICAgIGp1bGlhbkRheSA9IE1hdGguZmxvb3IoanVsaWFuRGF5KSArIDAuNTtcblxuICAgIGNvbnN0IGRheXMgPSBqdWxpYW5EYXkgLSBJU0xBTUlDX0VQT0NIO1xuICAgIGNvbnN0IGhZZWFyID0gTWF0aC5mbG9vcigoMzAgKiBkYXlzICsgMTA2NDYpIC8gMTA2MzEuMCk7XG4gICAgbGV0IGhNb250aCA9IE1hdGguY2VpbCgoZGF5cyAtIDI5IC0gZ2V0SXNsYW1pY1llYXJTdGFydChoWWVhcikpIC8gMjkuNSk7XG4gICAgaE1vbnRoID0gTWF0aC5taW4oaE1vbnRoLCAxMSk7XG4gICAgY29uc3QgaERheSA9IE1hdGguY2VpbChkYXlzIC0gZ2V0SXNsYW1pY01vbnRoU3RhcnQoaFllYXIsIGhNb250aCkpICsgMTtcbiAgICByZXR1cm4gbmV3IE5nYkRhdGUoaFllYXIsIGhNb250aCArIDEsIGhEYXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGVxdWl2YWxlbnQgSlMgZGF0ZSB2YWx1ZSBmb3IgYSBnaXZlIGlucHV0IGlzbGFtaWMoY2l2aWwpIGRhdGUuXG4gICAqIGBoRGF0ZWAgaXMgYW4gaXNsYW1pYyhjaXZpbCkgZGF0ZSB0byBiZSBjb252ZXJ0ZWQgdG8gR3JlZ29yaWFuLlxuICAgKi9cbiAgdG9HcmVnb3JpYW4oaERhdGU6IE5nYkRhdGUpOiBEYXRlIHtcbiAgICBjb25zdCBoWWVhciA9IGhEYXRlLnllYXI7XG4gICAgY29uc3QgaE1vbnRoID0gaERhdGUubW9udGggLSAxO1xuICAgIGNvbnN0IGhEYXkgPSBoRGF0ZS5kYXk7XG4gICAgY29uc3QganVsaWFuRGF5ID1cbiAgICAgICAgaERheSArIE1hdGguY2VpbCgyOS41ICogaE1vbnRoKSArIChoWWVhciAtIDEpICogMzU0ICsgTWF0aC5mbG9vcigoMyArIDExICogaFllYXIpIC8gMzApICsgSVNMQU1JQ19FUE9DSCAtIDE7XG5cbiAgICBjb25zdCB3amQgPSBNYXRoLmZsb29yKGp1bGlhbkRheSAtIDAuNSkgKyAwLjUsIGRlcG9jaCA9IHdqZCAtIEdSRUdPUklBTl9FUE9DSCxcbiAgICAgICAgICBxdWFkcmljZW50ID0gTWF0aC5mbG9vcihkZXBvY2ggLyAxNDYwOTcpLCBkcWMgPSBtb2QoZGVwb2NoLCAxNDYwOTcpLCBjZW50ID0gTWF0aC5mbG9vcihkcWMgLyAzNjUyNCksXG4gICAgICAgICAgZGNlbnQgPSBtb2QoZHFjLCAzNjUyNCksIHF1YWQgPSBNYXRoLmZsb29yKGRjZW50IC8gMTQ2MSksIGRxdWFkID0gbW9kKGRjZW50LCAxNDYxKSxcbiAgICAgICAgICB5aW5kZXggPSBNYXRoLmZsb29yKGRxdWFkIC8gMzY1KTtcbiAgICBsZXQgeWVhciA9IHF1YWRyaWNlbnQgKiA0MDAgKyBjZW50ICogMTAwICsgcXVhZCAqIDQgKyB5aW5kZXg7XG4gICAgaWYgKCEoY2VudCA9PT0gNCB8fCB5aW5kZXggPT09IDQpKSB7XG4gICAgICB5ZWFyKys7XG4gICAgfVxuXG4gICAgY29uc3QgZ1llYXJTdGFydCA9IEdSRUdPUklBTl9FUE9DSCArIDM2NSAqICh5ZWFyIC0gMSkgKyBNYXRoLmZsb29yKCh5ZWFyIC0gMSkgLyA0KSAtIE1hdGguZmxvb3IoKHllYXIgLSAxKSAvIDEwMCkgK1xuICAgICAgICBNYXRoLmZsb29yKCh5ZWFyIC0gMSkgLyA0MDApO1xuXG4gICAgY29uc3QgeWVhcmRheSA9IHdqZCAtIGdZZWFyU3RhcnQ7XG5cbiAgICBjb25zdCB0amQgPSBHUkVHT1JJQU5fRVBPQ0ggLSAxICsgMzY1ICogKHllYXIgLSAxKSArIE1hdGguZmxvb3IoKHllYXIgLSAxKSAvIDQpIC0gTWF0aC5mbG9vcigoeWVhciAtIDEpIC8gMTAwKSArXG4gICAgICAgIE1hdGguZmxvb3IoKHllYXIgLSAxKSAvIDQwMCkgKyBNYXRoLmZsb29yKDczOSAvIDEyICsgKGlzR3JlZ29yaWFuTGVhcFllYXIobmV3IERhdGUoeWVhciwgMywgMSkpID8gLTEgOiAtMikgKyAxKTtcblxuICAgIGNvbnN0IGxlYXBhZGogPSB3amQgPCB0amQgPyAwIDogaXNHcmVnb3JpYW5MZWFwWWVhcihuZXcgRGF0ZSh5ZWFyLCAzLCAxKSkgPyAxIDogMjtcblxuICAgIGNvbnN0IG1vbnRoID0gTWF0aC5mbG9vcigoKHllYXJkYXkgKyBsZWFwYWRqKSAqIDEyICsgMzczKSAvIDM2Nyk7XG4gICAgY29uc3QgdGpkMiA9IEdSRUdPUklBTl9FUE9DSCAtIDEgKyAzNjUgKiAoeWVhciAtIDEpICsgTWF0aC5mbG9vcigoeWVhciAtIDEpIC8gNCkgLSBNYXRoLmZsb29yKCh5ZWFyIC0gMSkgLyAxMDApICtcbiAgICAgICAgTWF0aC5mbG9vcigoeWVhciAtIDEpIC8gNDAwKSArXG4gICAgICAgIE1hdGguZmxvb3IoXG4gICAgICAgICAgICAoMzY3ICogbW9udGggLSAzNjIpIC8gMTIgKyAobW9udGggPD0gMiA/IDAgOiBpc0dyZWdvcmlhbkxlYXBZZWFyKG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgMSkpID8gLTEgOiAtMikgK1xuICAgICAgICAgICAgMSk7XG5cbiAgICBjb25zdCBkYXkgPSB3amQgLSB0amQyICsgMTtcblxuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSBzcGVjaWZpYyBIaWpyaSBtb250aC5cbiAgICogYG1vbnRoYCBpcyAxIGZvciBNdWhhcnJhbSwgMiBmb3IgU2FmYXIsIGV0Yy5cbiAgICogYHllYXJgIGlzIGFueSBIaWpyaSB5ZWFyLlxuICAgKi9cbiAgZ2V0RGF5c1Blck1vbnRoKG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlcik6IG51bWJlciB7XG4gICAgeWVhciA9IHllYXIgKyBNYXRoLmZsb29yKG1vbnRoIC8gMTMpO1xuICAgIG1vbnRoID0gKChtb250aCAtIDEpICUgMTIpICsgMTtcbiAgICBsZXQgbGVuZ3RoID0gMjkgKyBtb250aCAlIDI7XG4gICAgaWYgKG1vbnRoID09PSAxMiAmJiBpc0lzbGFtaWNMZWFwWWVhcih5ZWFyKSkge1xuICAgICAgbGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiBsZW5ndGg7XG4gIH1cbn1cbiIsImltcG9ydCB7TmdiQ2FsZW5kYXJJc2xhbWljQ2l2aWx9IGZyb20gJy4vbmdiLWNhbGVuZGFyLWlzbGFtaWMtY2l2aWwnO1xuaW1wb3J0IHtOZ2JEYXRlfSBmcm9tICcuLi9uZ2ItZGF0ZSc7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFVtYWxxdXJhIGNhbGVuZGFyIGlzIG9uZSB0eXBlIG9mIEhpanJpIGNhbGVuZGFycyB1c2VkIGluIGlzbGFtaWMgY291bnRyaWVzLlxuICogVGhpcyBDYWxlbmRhciBpcyB1c2VkIGJ5IFNhdWRpIEFyYWJpYSBmb3IgYWRtaW5pc3RyYXRpdmUgcHVycG9zZS5cbiAqIFVubGlrZSB0YWJ1bGFyIGNhbGVuZGFycywgdGhlIGFsZ29yaXRobSBpbnZvbHZlcyBhc3Ryb25vbWljYWwgY2FsY3VsYXRpb24sIGJ1dCBpdCdzIHN0aWxsIGRldGVybWluaXN0aWMuXG4gKiBodHRwOi8vY2xkci51bmljb2RlLm9yZy9kZXZlbG9wbWVudC9kZXZlbG9wbWVudC1wcm9jZXNzL2Rlc2lnbi1wcm9wb3NhbHMvaXNsYW1pYy1jYWxlbmRhci10eXBlc1xuICovXG5cbmNvbnN0IEdSRUdPUklBTl9GSVJTVF9EQVRFID0gbmV3IERhdGUoMTg4MiwgMTAsIDEyKTtcbmNvbnN0IEdSRUdPUklBTl9MQVNUX0RBVEUgPSBuZXcgRGF0ZSgyMTc0LCAxMCwgMjUpO1xuY29uc3QgSElKUklfQkVHSU4gPSAxMzAwO1xuY29uc3QgSElKUklfRU5EID0gMTYwMDtcbmNvbnN0IE9ORV9EQVkgPSAxMDAwICogNjAgKiA2MCAqIDI0O1xuXG5jb25zdCBNT05USF9MRU5HVEggPSBbXG4gIC8vIDEzMDAtMTMwNFxuICAnMTAxMDEwMTAxMDEwJywgJzExMDEwMTAxMDEwMCcsICcxMTEwMTEwMDEwMDEnLCAnMDExMDExMDEwMTAwJywgJzAxMTAxMTEwMTAxMCcsXG4gIC8vIDEzMDUtMTMwOVxuICAnMDAxMTAxMTAxMTAwJywgJzEwMTAxMDEwMTEwMScsICcwMTAxMDEwMTAxMDEnLCAnMDExMDEwMTAxMDAxJywgJzAxMTExMDAxMDAxMCcsXG4gIC8vIDEzMTAtMTMxNFxuICAnMTAxMTEwMTAxMDAxJywgJzAxMDExMTAxMDEwMCcsICcxMDEwMTEwMTEwMTAnLCAnMDEwMTAxMDExMTAwJywgJzExMDEwMDEwMTEwMScsXG4gIC8vIDEzMTUtMTMxOVxuICAnMDExMDEwMDEwMTAxJywgJzAxMTEwMTAwMTAxMCcsICcxMDExMDEwMTAxMDAnLCAnMTAxMTAxMTAxMDEwJywgJzAxMDExMDEwMTEwMScsXG4gIC8vIDEzMjAtMTMyNFxuICAnMDEwMDEwMTAxMTEwJywgJzEwMTAwMTAwMTExMScsICcwMTAxMDAwMTAxMTEnLCAnMDExMDEwMDAxMDExJywgJzAxMTAxMDEwMDEwMScsXG4gIC8vIDEzMjUtMTMyOVxuICAnMTAxMDExMDEwMTAxJywgJzAwMTAxMTAxMDExMCcsICcxMDAxMDEwMTEwMTEnLCAnMDEwMDEwMDExMTAxJywgJzEwMTAwMTAwMTEwMScsXG4gIC8vIDEzMzAtMTMzNFxuICAnMTEwMTAwMTAwMTEwJywgJzExMDExMDAxMDEwMScsICcwMTAxMTAxMDExMDAnLCAnMTAwMTEwMTEwMTEwJywgJzAwMTAxMDExMTAxMCcsXG4gIC8vIDEzMzUtMTMzOVxuICAnMTAxMDAxMDExMDExJywgJzAxMDEwMDEwMTAxMScsICcxMDEwMTAwMTAxMDEnLCAnMDExMDExMDAxMDEwJywgJzEwMTAxMTEwMTAwMScsXG4gIC8vIDEzNDAtMTM0NFxuICAnMDAxMDExMTEwMTAwJywgJzEwMDEwMTExMDExMCcsICcwMDEwMTAxMTAxMTAnLCAnMTAwMTAxMDEwMTEwJywgJzEwMTAxMTAwMTAxMCcsXG4gIC8vIDEzNDUtMTM0OVxuICAnMTAxMTEwMTAwMTAwJywgJzEwMTExMTAxMDAxMCcsICcwMTAxMTEwMTEwMDEnLCAnMDAxMDExMDExMTAwJywgJzEwMDEwMTEwMTEwMScsXG4gIC8vIDEzNTAtMTM1NFxuICAnMDEwMTAxMDAxMTAxJywgJzEwMTAxMDEwMDEwMScsICcxMDExMDEwMTAwMTAnLCAnMTAxMTEwMTAwMTAxJywgJzAxMDExMDExMDEwMCcsXG4gIC8vIDEzNTUtMTM1OVxuICAnMTAwMTEwMTEwMTEwJywgJzAxMDEwMTAxMDExMScsICcwMDEwMTAwMTAxMTEnLCAnMDEwMTAxMDAxMDExJywgJzAxMTAxMDEwMDAxMScsXG4gIC8vIDEzNjAtMTM2NFxuICAnMDExMTAxMDEwMDEwJywgJzEwMTEwMTEwMDEwMScsICcwMTAxMDExMDEwMTAnLCAnMTAxMDEwMTAxMDExJywgJzAxMDEwMDEwMTAxMScsXG4gIC8vIDEzNjUtMTM2OVxuICAnMTEwMDEwMDEwMTAxJywgJzExMDEwMTAwMTAxMCcsICcxMTAxMTAxMDAxMDEnLCAnMDEwMTExMDAxMDEwJywgJzEwMTAxMTAxMDExMCcsXG4gIC8vIDEzNzAtMTM3NFxuICAnMTAwMTAxMDEwMTExJywgJzAxMDAxMDEwMTAxMScsICcxMDAxMDEwMDEwMTEnLCAnMTAxMDEwMTAwMTAxJywgJzEwMTEwMTAxMDAxMCcsXG4gIC8vIDEzNzUtMTM3OVxuICAnMTAxMTAxMTAxMDEwJywgJzAxMDEwMTExMDEwMScsICcwMDEwMDExMTAxMTAnLCAnMTAwMDEwMTEwMTExJywgJzAxMDAwMTAxMTAxMScsXG4gIC8vIDEzODAtMTM4NFxuICAnMDEwMTAxMDEwMTAxJywgJzAxMDExMDEwMTAwMScsICcwMTAxMTAxMTAxMDAnLCAnMTAwMTExMDExMDEwJywgJzAxMDAxMTAxMTEwMScsXG4gIC8vIDEzODUtMTM4OVxuICAnMDAxMDAxMTAxMTEwJywgJzEwMDEwMDExMDExMCcsICcxMDEwMTAxMDEwMTAnLCAnMTEwMTAxMDEwMTAwJywgJzExMDExMDExMDAxMCcsXG4gIC8vIDEzOTAtMTM5NFxuICAnMDEwMTExMDEwMTAxJywgJzAwMTAxMTAxMTAxMCcsICcxMDAxMDEwMTEwMTEnLCAnMDEwMDEwMTAxMDExJywgJzEwMTAwMTAxMDEwMScsXG4gIC8vIDEzOTUtMTM5OVxuICAnMTAxMTAxMDAxMDAxJywgJzEwMTEwMTEwMDEwMCcsICcxMDExMDExMTAwMDEnLCAnMDEwMTEwMTEwMTAwJywgJzEwMTAxMDExMDEwMScsXG4gIC8vIDE0MDAtMTQwNFxuICAnMTAxMDAxMDEwMTAxJywgJzExMDEwMDEwMDEwMScsICcxMTEwMTAwMTAwMTAnLCAnMTExMDExMDAxMDAxJywgJzAxMTAxMTAxMDEwMCcsXG4gIC8vIDE0MDUtMTQwOVxuICAnMTAxMDExMTAxMDAxJywgJzEwMDEwMTEwMTAxMScsICcwMTAwMTAxMDEwMTEnLCAnMTAxMDEwMDEwMDExJywgJzExMDEwMTAwMTAwMScsXG4gIC8vIDE0MTAtMTQxNFxuICAnMTEwMTEwMTAwMTAwJywgJzExMDExMDExMDAxMCcsICcxMDEwMTAxMTEwMDEnLCAnMDEwMDEwMTExMDEwJywgJzEwMTAwMTAxMTAxMScsXG4gIC8vIDE0MTUtMTQxOVxuICAnMDEwMTAwMTAxMDExJywgJzEwMTAxMDAxMDEwMScsICcxMDExMDAxMDEwMTAnLCAnMTAxMTAxMDEwMTAxJywgJzAxMDEwMTAxMTEwMCcsXG4gIC8vIDE0MjAtMTQyNFxuICAnMDEwMDEwMTExMTAxJywgJzAwMTAwMDExMTEwMScsICcxMDAxMDAwMTExMDEnLCAnMTAxMDEwMDEwMTAxJywgJzEwMTEwMTAwMTAxMCcsXG4gIC8vIDE0MjUtMTQyOVxuICAnMTAxMTAxMDExMDEwJywgJzAxMDEwMTEwMTEwMScsICcwMDEwMTAxMTAxMTAnLCAnMTAwMTAwMTExMDExJywgJzAxMDAxMDAxMTAxMScsXG4gIC8vIDE0MzAtMTQzNFxuICAnMDExMDAxMDEwMTAxJywgJzAxMTAxMDEwMTAwMScsICcwMTExMDEwMTAxMDAnLCAnMTAxMTAxMTAxMDEwJywgJzAxMDEwMTEwMTEwMCcsXG4gIC8vIDE0MzUtMTQzOVxuICAnMTAxMDEwMTAxMTAxJywgJzAxMDEwMTAxMDEwMScsICcxMDExMDAxMDEwMDEnLCAnMTAxMTEwMDEwMDEwJywgJzEwMTExMDEwMTAwMScsXG4gIC8vIDE0NDAtMTQ0NFxuICAnMDEwMTExMDEwMTAwJywgJzEwMTAxMTAxMTAxMCcsICcwMTAxMDEwMTEwMTAnLCAnMTAxMDEwMTAxMDExJywgJzAxMDExMDAxMDEwMScsXG4gIC8vIDE0NDUtMTQ0OVxuICAnMDExMTAxMDAxMDAxJywgJzAxMTEwMTEwMDEwMCcsICcxMDExMTAxMDEwMTAnLCAnMDEwMTEwMTEwMTAxJywgJzAwMTAxMDExMDExMCcsXG4gIC8vIDE0NTAtMTQ1NFxuICAnMTAxMDAxMDEwMTEwJywgJzExMTAwMTAwMTEwMScsICcxMDExMDAxMDAxMDEnLCAnMTAxMTAxMDEwMDEwJywgJzEwMTEwMTEwMTAxMCcsXG4gIC8vIDE0NTUtMTQ1OVxuICAnMDEwMTEwMTAxMTAxJywgJzAwMTAxMDEwMTExMCcsICcxMDAxMDAxMDExMTEnLCAnMDEwMDEwMDEwMTExJywgJzAxMTAwMTAwMTAxMScsXG4gIC8vIDE0NjAtMTQ2NFxuICAnMDExMDEwMTAwMTAxJywgJzAxMTAxMDEwMTEwMCcsICcxMDEwMTEwMTAxMTAnLCAnMDEwMTAxMDExMTAxJywgJzAxMDAxMDAxMTEwMScsXG4gIC8vIDE0NjUtMTQ2OVxuICAnMTAxMDAxMDAxMTAxJywgJzExMDEwMDAxMDExMCcsICcxMTAxMTAwMTAxMDEnLCAnMDEwMTEwMTAxMDEwJywgJzAxMDExMDExMDEwMScsXG4gIC8vIDE0NzAtMTQ3NFxuICAnMDAxMDExMDExMDEwJywgJzEwMDEwMTAxMTAxMScsICcwMTAwMTAxMDExMDEnLCAnMDEwMTEwMDEwMTAxJywgJzAxMTAxMTAwMTAxMCcsXG4gIC8vIDE0NzUtMTQ3OVxuICAnMDExMDExMTAwMTAwJywgJzEwMTAxMTEwMTAxMCcsICcwMTAwMTExMTAxMDEnLCAnMDAxMDEwMTEwMTEwJywgJzEwMDEwMTAxMDExMCcsXG4gIC8vIDE0ODAtMTQ4NFxuICAnMTAxMDEwMTAxMDEwJywgJzEwMTEwMTAxMDEwMCcsICcxMDExMTEwMTAwMTAnLCAnMDEwMTExMDExMDAxJywgJzAwMTAxMTEwMTAxMCcsXG4gIC8vIDE0ODUtMTQ4OVxuICAnMTAwMTAxMTAxMTAxJywgJzAxMDAxMDEwMTEwMScsICcxMDEwMTAwMTAxMDEnLCAnMTAxMTAxMDAxMDEwJywgJzEwMTExMDEwMDEwMScsXG4gIC8vIDE0OTAtMTQ5NFxuICAnMDEwMTEwMTEwMDEwJywgJzEwMDExMDExMDEwMScsICcwMTAwMTEwMTAxMTAnLCAnMTAxMDEwMDEwMTExJywgJzAxMDEwMTAwMDExMScsXG4gIC8vIDE0OTUtMTQ5OVxuICAnMDExMDEwMDEwMDExJywgJzAxMTEwMTAwMTAwMScsICcxMDExMDEwMTAxMDEnLCAnMDEwMTAxMTAxMDEwJywgJzEwMTAwMTEwMTAxMScsXG4gIC8vIDE1MDAtMTUwNFxuICAnMDEwMTAwMTAxMDExJywgJzEwMTAxMDAwMTAxMScsICcxMTAxMDEwMDAxMTAnLCAnMTEwMTEwMTAwMDExJywgJzAxMDExMTAwMTAxMCcsXG4gIC8vIDE1MDUtMTUwOVxuICAnMTAxMDExMDEwMTEwJywgJzAxMDAxMTAxMTAxMScsICcwMDEwMDExMDEwMTEnLCAnMTAwMTAxMDAxMDExJywgJzEwMTAxMDEwMDEwMScsXG4gIC8vIDE1MTAtMTUxNFxuICAnMTAxMTAxMDEwMDEwJywgJzEwMTEwMTEwMTAwMScsICcwMTAxMDExMTAxMDEnLCAnMDAwMTAxMTEwMTEwJywgJzEwMDAxMDExMDExMScsXG4gIC8vIDE1MTUtMTUxOVxuICAnMDAxMDAxMDExMDExJywgJzAxMDEwMDEwMTAxMScsICcwMTAxMDExMDAxMDEnLCAnMDEwMTEwMTEwMTAwJywgJzEwMDExMTAxMTAxMCcsXG4gIC8vIDE1MjAtMTUyNFxuICAnMDEwMDExMTAxMTAxJywgJzAwMDEwMTEwMTEwMScsICcxMDAwMTAxMTAxMTAnLCAnMTAxMDEwMTAwMTEwJywgJzExMDEwMTAxMDAxMCcsXG4gIC8vIDE1MjUtMTUyOVxuICAnMTEwMTEwMTAxMDAxJywgJzAxMDExMTAxMDEwMCcsICcxMDEwMTEwMTEwMTAnLCAnMTAwMTAxMDExMDExJywgJzAxMDAxMDEwMTAxMScsXG4gIC8vIDE1MzAtMTUzNFxuICAnMDExMDAxMDEwMDExJywgJzAxMTEwMDEwMTAwMScsICcwMTExMDExMDAwMTAnLCAnMTAxMTEwMTAxMDAxJywgJzAxMDExMDExMDAxMCcsXG4gIC8vIDE1MzUtMTUzOVxuICAnMTAxMDEwMTEwMTAxJywgJzAxMDEwMTAxMDEwMScsICcxMDExMDAxMDAxMDEnLCAnMTEwMTEwMDEwMDEwJywgJzExMTAxMTAwMTAwMScsXG4gIC8vIDE1NDAtMTU0NFxuICAnMDExMDExMDEwMDEwJywgJzEwMTAxMTEwMTAwMScsICcwMTAxMDExMDEwMTEnLCAnMDEwMDEwMTAxMDExJywgJzEwMTAwMTAxMDEwMScsXG4gIC8vIDE1NDUtMTU0OVxuICAnMTEwMTAwMTAxMDAxJywgJzExMDEwMTAxMDEwMCcsICcxMTAxMTAxMDEwMTAnLCAnMTAwMTEwMTEwMTAxJywgJzAxMDAxMDExMTAxMCcsXG4gIC8vIDE1NTAtMTU1NFxuICAnMTAxMDAwMTExMDExJywgJzAxMDAxMDAxMTAxMScsICcxMDEwMDEwMDExMDEnLCAnMTAxMDEwMTAxMDEwJywgJzEwMTAxMTAxMDEwMScsXG4gIC8vIDE1NTUtMTU1OVxuICAnMDAxMDExMDExMDEwJywgJzEwMDEwMTAxMTEwMScsICcwMTAwMDEwMTExMTAnLCAnMTAxMDAwMTAxMTEwJywgJzExMDAxMDAxMTAxMCcsXG4gIC8vIDE1NjAtMTU2NFxuICAnMTEwMTAxMDEwMTAxJywgJzAxMTAxMDExMDAxMCcsICcwMTEwMTAxMTEwMDEnLCAnMDEwMDEwMTExMDEwJywgJzEwMTAwMTAxMTEwMScsXG4gIC8vIDE1NjUtMTU2OVxuICAnMDEwMTAwMTAxMTAxJywgJzEwMTAxMDAxMDEwMScsICcxMDExMDEwMTAwMTAnLCAnMTAxMTEwMTAxMDAwJywgJzEwMTExMDExMDEwMCcsXG4gIC8vIDE1NzAtMTU3NFxuICAnMDEwMTEwMTExMDAxJywgJzAwMTAxMTAxMTAxMCcsICcxMDAxMDEwMTEwMTAnLCAnMTAxMTAxMDAxMDEwJywgJzExMDExMDEwMDEwMCcsXG4gIC8vIDE1NzUtMTU3OVxuICAnMTExMDExMDEwMDAxJywgJzAxMTAxMTEwMTAwMCcsICcxMDExMDExMDEwMTAnLCAnMDEwMTAxMTAxMTAxJywgJzAxMDEwMDExMDEwMScsXG4gIC8vIDE1ODAtMTU4NFxuICAnMDExMDEwMDEwMTAxJywgJzExMDEwMTAwMTAxMCcsICcxMTAxMTAxMDEwMDAnLCAnMTEwMTExMDEwMTAwJywgJzAxMTAxMTAxMTAxMCcsXG4gIC8vIDE1ODUtMTU4OVxuICAnMDEwMTAxMDExMDExJywgJzAwMTAxMDAxMTEwMScsICcwMTEwMDAxMDEwMTEnLCAnMTAxMTAwMDEwMTAxJywgJzEwMTEwMTAwMTAxMCcsXG4gIC8vIDE1OTAtMTU5NFxuICAnMTAxMTEwMDEwMTAxJywgJzAxMDExMDEwMTAxMCcsICcxMDEwMTAxMDExMTAnLCAnMTAwMTAwMTAxMTEwJywgJzExMDAxMDAwMTExMScsXG4gIC8vIDE1OTUtMTU5OVxuICAnMDEwMTAwMTAwMTExJywgJzAxMTAxMDAxMDEwMScsICcwMTEwMTAxMDEwMTAnLCAnMTAxMDExMDEwMTEwJywgJzAxMDEwMTAxMTEwMScsXG4gIC8vIDE2MDBcbiAgJzAwMTAxMDAxMTEwMSdcbl07XG5cbmZ1bmN0aW9uIGdldERheXNEaWZmKGRhdGUxOiBEYXRlLCBkYXRlMjogRGF0ZSk6IG51bWJlciB7XG4gIGNvbnN0IGRpZmYgPSBNYXRoLmFicyhkYXRlMS5nZXRUaW1lKCkgLSBkYXRlMi5nZXRUaW1lKCkpO1xuICByZXR1cm4gTWF0aC5yb3VuZChkaWZmIC8gT05FX0RBWSk7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ2JDYWxlbmRhcklzbGFtaWNVbWFscXVyYSBleHRlbmRzIE5nYkNhbGVuZGFySXNsYW1pY0NpdmlsIHtcbiAgLyoqXG4gICogUmV0dXJucyB0aGUgZXF1aXZhbGVudCBpc2xhbWljKFVtYWxxdXJhKSBkYXRlIHZhbHVlIGZvciBhIGdpdmUgaW5wdXQgR3JlZ29yaWFuIGRhdGUuXG4gICogYGdkYXRlYCBpcyBzIEpTIERhdGUgdG8gYmUgY29udmVydGVkIHRvIEhpanJpLlxuICAqL1xuICBmcm9tR3JlZ29yaWFuKGdEYXRlOiBEYXRlKTogTmdiRGF0ZSB7XG4gICAgbGV0IGhEYXkgPSAxLCBoTW9udGggPSAwLCBoWWVhciA9IDEzMDA7XG4gICAgbGV0IGRheXNEaWZmID0gZ2V0RGF5c0RpZmYoZ0RhdGUsIEdSRUdPUklBTl9GSVJTVF9EQVRFKTtcbiAgICBpZiAoZ0RhdGUuZ2V0VGltZSgpIC0gR1JFR09SSUFOX0ZJUlNUX0RBVEUuZ2V0VGltZSgpID49IDAgJiYgZ0RhdGUuZ2V0VGltZSgpIC0gR1JFR09SSUFOX0xBU1RfREFURS5nZXRUaW1lKCkgPD0gMCkge1xuICAgICAgbGV0IHllYXIgPSAxMzAwO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNT05USF9MRU5HVEgubGVuZ3RoOyBpKyssIHllYXIrKykge1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IDEyOyBqKyspIHtcbiAgICAgICAgICBsZXQgbnVtT2ZEYXlzID0gK01PTlRIX0xFTkdUSFtpXVtqXSArIDI5O1xuICAgICAgICAgIGlmIChkYXlzRGlmZiA8PSBudW1PZkRheXMpIHtcbiAgICAgICAgICAgIGhEYXkgPSBkYXlzRGlmZiArIDE7XG4gICAgICAgICAgICBpZiAoaERheSA+IG51bU9mRGF5cykge1xuICAgICAgICAgICAgICBoRGF5ID0gMTtcbiAgICAgICAgICAgICAgaisrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGogPiAxMSkge1xuICAgICAgICAgICAgICBqID0gMDtcbiAgICAgICAgICAgICAgeWVhcisrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaE1vbnRoID0gajtcbiAgICAgICAgICAgIGhZZWFyID0geWVhcjtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTmdiRGF0ZShoWWVhciwgaE1vbnRoICsgMSwgaERheSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRheXNEaWZmID0gZGF5c0RpZmYgLSBudW1PZkRheXM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHN1cGVyLmZyb21HcmVnb3JpYW4oZ0RhdGUpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgKiBDb252ZXJ0cyB0aGUgY3VycmVudCBIaWpyaSBkYXRlIHRvIEdyZWdvcmlhbi5cbiAgKi9cbiAgdG9HcmVnb3JpYW4oaERhdGU6IE5nYkRhdGUpOiBEYXRlIHtcbiAgICBjb25zdCBoWWVhciA9IGhEYXRlLnllYXI7XG4gICAgY29uc3QgaE1vbnRoID0gaERhdGUubW9udGggLSAxO1xuICAgIGNvbnN0IGhEYXkgPSBoRGF0ZS5kYXk7XG4gICAgbGV0IGdEYXRlID0gbmV3IERhdGUoR1JFR09SSUFOX0ZJUlNUX0RBVEUpO1xuICAgIGxldCBkYXlEaWZmID0gaERheSAtIDE7XG4gICAgaWYgKGhZZWFyID49IEhJSlJJX0JFR0lOICYmIGhZZWFyIDw9IEhJSlJJX0VORCkge1xuICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCBoWWVhciAtIEhJSlJJX0JFR0lOOyB5KyspIHtcbiAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCAxMjsgbSsrKSB7XG4gICAgICAgICAgZGF5RGlmZiArPSArTU9OVEhfTEVOR1RIW3ldW21dICsgMjk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgaE1vbnRoOyBtKyspIHtcbiAgICAgICAgZGF5RGlmZiArPSArTU9OVEhfTEVOR1RIW2hZZWFyIC0gSElKUklfQkVHSU5dW21dICsgMjk7XG4gICAgICB9XG4gICAgICBnRGF0ZS5zZXREYXRlKEdSRUdPUklBTl9GSVJTVF9EQVRFLmdldERhdGUoKSArIGRheURpZmYpO1xuICAgIH0gZWxzZSB7XG4gICAgICBnRGF0ZSA9IHN1cGVyLnRvR3JlZ29yaWFuKGhEYXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIGdEYXRlO1xuICB9XG4gIC8qKlxuICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIGEgc3BlY2lmaWMgSGlqcmkgaE1vbnRoLlxuICAqIGBoTW9udGhgIGlzIDEgZm9yIE11aGFycmFtLCAyIGZvciBTYWZhciwgZXRjLlxuICAqIGBoWWVhcmAgaXMgYW55IEhpanJpIGhZZWFyLlxuICAqL1xuICBnZXREYXlzUGVyTW9udGgoaE1vbnRoOiBudW1iZXIsIGhZZWFyOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmIChoWWVhciA+PSBISUpSSV9CRUdJTiAmJiBoWWVhciA8PSBISUpSSV9FTkQpIHtcbiAgICAgIGNvbnN0IHBvcyA9IGhZZWFyIC0gSElKUklfQkVHSU47XG4gICAgICByZXR1cm4gK01PTlRIX0xFTkdUSFtwb3NdW2hNb250aCAtIDFdICsgMjk7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5nZXREYXlzUGVyTW9udGgoaE1vbnRoLCBoWWVhcik7XG4gIH1cbn1cbiIsImltcG9ydCB7TmdiRGF0ZX0gZnJvbSAnLi4vbmdiLWRhdGUnO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGVxdWl2YWxlbnQgSlMgZGF0ZSB2YWx1ZSBmb3IgYSBnaXZlIGlucHV0IEphbGFsaSBkYXRlLlxuICogYGphbGFsaURhdGVgIGlzIGFuIEphbGFsaSBkYXRlIHRvIGJlIGNvbnZlcnRlZCB0byBHcmVnb3JpYW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0dyZWdvcmlhbihqYWxhbGlEYXRlOiBOZ2JEYXRlKTogRGF0ZSB7XG4gIGxldCBqZG4gPSBqYWxhbGlUb0p1bGlhbihqYWxhbGlEYXRlLnllYXIsIGphbGFsaURhdGUubW9udGgsIGphbGFsaURhdGUuZGF5KTtcbiAgbGV0IGRhdGUgPSBqdWxpYW5Ub0dyZWdvcmlhbihqZG4pO1xuICBkYXRlLnNldEhvdXJzKDYsIDMwLCAzLCAyMDApO1xuICByZXR1cm4gZGF0ZTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBlcXVpdmFsZW50IGphbGFsaSBkYXRlIHZhbHVlIGZvciBhIGdpdmUgaW5wdXQgR3JlZ29yaWFuIGRhdGUuXG4gKiBgZ2RhdGVgIGlzIGEgSlMgRGF0ZSB0byBiZSBjb252ZXJ0ZWQgdG8gamFsYWxpLlxuICogdXRjIHRvIGxvY2FsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tR3JlZ29yaWFuKGdkYXRlOiBEYXRlKTogTmdiRGF0ZSB7XG4gIGxldCBnMmQgPSBncmVnb3JpYW5Ub0p1bGlhbihnZGF0ZS5nZXRGdWxsWWVhcigpLCBnZGF0ZS5nZXRNb250aCgpICsgMSwgZ2RhdGUuZ2V0RGF0ZSgpKTtcbiAgcmV0dXJuIGp1bGlhblRvSmFsYWxpKGcyZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRKYWxhbGlZZWFyKGRhdGU6IE5nYkRhdGUsIHllYXJWYWx1ZTogbnVtYmVyKTogTmdiRGF0ZSB7XG4gIGRhdGUueWVhciA9ICt5ZWFyVmFsdWU7XG4gIHJldHVybiBkYXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0SmFsYWxpTW9udGgoZGF0ZTogTmdiRGF0ZSwgbW9udGg6IG51bWJlcik6IE5nYkRhdGUge1xuICBtb250aCA9ICttb250aDtcbiAgZGF0ZS55ZWFyID0gZGF0ZS55ZWFyICsgTWF0aC5mbG9vcigobW9udGggLSAxKSAvIDEyKTtcbiAgZGF0ZS5tb250aCA9IE1hdGguZmxvb3IoKChtb250aCAtIDEpICUgMTIgKyAxMikgJSAxMikgKyAxO1xuICByZXR1cm4gZGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEphbGFsaURheShkYXRlOiBOZ2JEYXRlLCBkYXk6IG51bWJlcik6IE5nYkRhdGUge1xuICBsZXQgbURheXMgPSBnZXREYXlzUGVyTW9udGgoZGF0ZS5tb250aCwgZGF0ZS55ZWFyKTtcbiAgaWYgKGRheSA8PSAwKSB7XG4gICAgd2hpbGUgKGRheSA8PSAwKSB7XG4gICAgICBkYXRlID0gc2V0SmFsYWxpTW9udGgoZGF0ZSwgZGF0ZS5tb250aCAtIDEpO1xuICAgICAgbURheXMgPSBnZXREYXlzUGVyTW9udGgoZGF0ZS5tb250aCwgZGF0ZS55ZWFyKTtcbiAgICAgIGRheSArPSBtRGF5cztcbiAgICB9XG4gIH0gZWxzZSBpZiAoZGF5ID4gbURheXMpIHtcbiAgICB3aGlsZSAoZGF5ID4gbURheXMpIHtcbiAgICAgIGRheSAtPSBtRGF5cztcbiAgICAgIGRhdGUgPSBzZXRKYWxhbGlNb250aChkYXRlLCBkYXRlLm1vbnRoICsgMSk7XG4gICAgICBtRGF5cyA9IGdldERheXNQZXJNb250aChkYXRlLm1vbnRoLCBkYXRlLnllYXIpO1xuICAgIH1cbiAgfVxuICBkYXRlLmRheSA9IGRheTtcbiAgcmV0dXJuIGRhdGU7XG59XG5cbmZ1bmN0aW9uIG1vZChhOiBudW1iZXIsIGI6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBhIC0gYiAqIE1hdGguZmxvb3IoYSAvIGIpO1xufVxuXG5mdW5jdGlvbiBkaXYoYTogbnVtYmVyLCBiOiBudW1iZXIpIHtcbiAgcmV0dXJuIE1hdGgudHJ1bmMoYSAvIGIpO1xufVxuXG4vKlxuIFRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyBpZiB0aGUgSmFsYWxpIChQZXJzaWFuKSB5ZWFyIGlzXG4gbGVhcCAoMzY2LWRheSBsb25nKSBvciBpcyB0aGUgY29tbW9uIHllYXIgKDM2NSBkYXlzKSwgYW5kXG4gZmluZHMgdGhlIGRheSBpbiBNYXJjaCAoR3JlZ29yaWFuIGNhbGVuZGFyKSBvZiB0aGUgZmlyc3RcbiBkYXkgb2YgdGhlIEphbGFsaSB5ZWFyIChqYWxhbGlZZWFyKS5cbiBAcGFyYW0gamFsYWxpWWVhciBKYWxhbGkgY2FsZW5kYXIgeWVhciAoLTYxIHRvIDMxNzcpXG4gQHJldHVyblxuIGxlYXA6IG51bWJlciBvZiB5ZWFycyBzaW5jZSB0aGUgbGFzdCBsZWFwIHllYXIgKDAgdG8gNClcbiBnWWVhcjogR3JlZ29yaWFuIHllYXIgb2YgdGhlIGJlZ2lubmluZyBvZiBKYWxhbGkgeWVhclxuIG1hcmNoOiB0aGUgTWFyY2ggZGF5IG9mIEZhcnZhcmRpbiB0aGUgMXN0ICgxc3QgZGF5IG9mIGphbGFsaVllYXIpXG4gQHNlZTogaHR0cDovL3d3dy5hc3Ryby51bmkudG9ydW4ucGwvfmtiL1BhcGVycy9FTVAvUGVyc2lhbkMtRU1QLmh0bVxuIEBzZWU6IGh0dHA6Ly93d3cuZm91cm1pbGFiLmNoL2RvY3VtZW50cy9jYWxlbmRhci9cbiAqL1xuZnVuY3Rpb24gamFsQ2FsKGphbGFsaVllYXI6IG51bWJlcikge1xuICAvLyBKYWxhbGkgeWVhcnMgc3RhcnRpbmcgdGhlIDMzLXllYXIgcnVsZS5cbiAgbGV0IGJyZWFrcyA9XG4gICAgICBbLTYxLCA5LCAzOCwgMTk5LCA0MjYsIDY4NiwgNzU2LCA4MTgsIDExMTEsIDExODEsIDEyMTAsIDE2MzUsIDIwNjAsIDIwOTcsIDIxOTIsIDIyNjIsIDIzMjQsIDIzOTQsIDI0NTYsIDMxNzhdO1xuICBjb25zdCBicmVha3NMZW5ndGggPSBicmVha3MubGVuZ3RoO1xuICBjb25zdCBnWWVhciA9IGphbGFsaVllYXIgKyA2MjE7XG4gIGxldCBsZWFwSiA9IC0xNDtcbiAgbGV0IGpwID0gYnJlYWtzWzBdO1xuXG4gIGlmIChqYWxhbGlZZWFyIDwganAgfHwgamFsYWxpWWVhciA+PSBicmVha3NbYnJlYWtzTGVuZ3RoIC0gMV0pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSmFsYWxpIHllYXIgJyArIGphbGFsaVllYXIpO1xuICB9XG5cbiAgLy8gRmluZCB0aGUgbGltaXRpbmcgeWVhcnMgZm9yIHRoZSBKYWxhbGkgeWVhciBqYWxhbGlZZWFyLlxuICBsZXQganVtcDtcbiAgZm9yIChsZXQgaSA9IDE7IGkgPCBicmVha3NMZW5ndGg7IGkgKz0gMSkge1xuICAgIGNvbnN0IGptID0gYnJlYWtzW2ldO1xuICAgIGp1bXAgPSBqbSAtIGpwO1xuICAgIGlmIChqYWxhbGlZZWFyIDwgam0pIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBsZWFwSiA9IGxlYXBKICsgZGl2KGp1bXAsIDMzKSAqIDggKyBkaXYobW9kKGp1bXAsIDMzKSwgNCk7XG4gICAganAgPSBqbTtcbiAgfVxuICBsZXQgbiA9IGphbGFsaVllYXIgLSBqcDtcblxuICAvLyBGaW5kIHRoZSBudW1iZXIgb2YgbGVhcCB5ZWFycyBmcm9tIEFEIDYyMSB0byB0aGUgYmVnaW5uaW5nXG4gIC8vIG9mIHRoZSBjdXJyZW50IEphbGFsaSB5ZWFyIGluIHRoZSBQZXJzaWFuIGNhbGVuZGFyLlxuICBsZWFwSiA9IGxlYXBKICsgZGl2KG4sIDMzKSAqIDggKyBkaXYobW9kKG4sIDMzKSArIDMsIDQpO1xuICBpZiAobW9kKGp1bXAsIDMzKSA9PT0gNCAmJiBqdW1wIC0gbiA9PT0gNCkge1xuICAgIGxlYXBKICs9IDE7XG4gIH1cblxuICAvLyBBbmQgdGhlIHNhbWUgaW4gdGhlIEdyZWdvcmlhbiBjYWxlbmRhciAodW50aWwgdGhlIHllYXIgZ1llYXIpLlxuICBjb25zdCBsZWFwRyA9IGRpdihnWWVhciwgNCkgLSBkaXYoKGRpdihnWWVhciwgMTAwKSArIDEpICogMywgNCkgLSAxNTA7XG5cbiAgLy8gRGV0ZXJtaW5lIHRoZSBHcmVnb3JpYW4gZGF0ZSBvZiBGYXJ2YXJkaW4gdGhlIDFzdC5cbiAgY29uc3QgbWFyY2ggPSAyMCArIGxlYXBKIC0gbGVhcEc7XG5cbiAgLy8gRmluZCBob3cgbWFueSB5ZWFycyBoYXZlIHBhc3NlZCBzaW5jZSB0aGUgbGFzdCBsZWFwIHllYXIuXG4gIGlmIChqdW1wIC0gbiA8IDYpIHtcbiAgICBuID0gbiAtIGp1bXAgKyBkaXYoanVtcCArIDQsIDMzKSAqIDMzO1xuICB9XG4gIGxldCBsZWFwID0gbW9kKG1vZChuICsgMSwgMzMpIC0gMSwgNCk7XG4gIGlmIChsZWFwID09PSAtMSkge1xuICAgIGxlYXAgPSA0O1xuICB9XG5cbiAgcmV0dXJuIHtsZWFwOiBsZWFwLCBneTogZ1llYXIsIG1hcmNoOiBtYXJjaH07XG59XG5cbi8qXG4gQ2FsY3VsYXRlcyBHcmVnb3JpYW4gYW5kIEp1bGlhbiBjYWxlbmRhciBkYXRlcyBmcm9tIHRoZSBKdWxpYW4gRGF5IG51bWJlclxuIChqZG4pIGZvciB0aGUgcGVyaW9kIHNpbmNlIGpkbj0tMzQ4Mzk2NTUgKGkuZS4gdGhlIHllYXIgLTEwMDEwMCBvZiBib3RoXG4gY2FsZW5kYXJzKSB0byBzb21lIG1pbGxpb25zIHllYXJzIGFoZWFkIG9mIHRoZSBwcmVzZW50LlxuIEBwYXJhbSBqZG4gSnVsaWFuIERheSBudW1iZXJcbiBAcmV0dXJuXG4gZ1llYXI6IENhbGVuZGFyIHllYXIgKHllYXJzIEJDIG51bWJlcmVkIDAsIC0xLCAtMiwgLi4uKVxuIGdNb250aDogQ2FsZW5kYXIgbW9udGggKDEgdG8gMTIpXG4gZ0RheTogQ2FsZW5kYXIgZGF5IG9mIHRoZSBtb250aCBNICgxIHRvIDI4LzI5LzMwLzMxKVxuICovXG5mdW5jdGlvbiBqdWxpYW5Ub0dyZWdvcmlhbihqdWxpYW5EYXlOdW1iZXI6IG51bWJlcikge1xuICBsZXQgaiA9IDQgKiBqdWxpYW5EYXlOdW1iZXIgKyAxMzkzNjE2MzE7XG4gIGogPSBqICsgZGl2KGRpdig0ICoganVsaWFuRGF5TnVtYmVyICsgMTgzMTg3NzIwLCAxNDYwOTcpICogMywgNCkgKiA0IC0gMzkwODtcbiAgY29uc3QgaSA9IGRpdihtb2QoaiwgMTQ2MSksIDQpICogNSArIDMwODtcbiAgY29uc3QgZ0RheSA9IGRpdihtb2QoaSwgMTUzKSwgNSkgKyAxO1xuICBjb25zdCBnTW9udGggPSBtb2QoZGl2KGksIDE1MyksIDEyKSArIDE7XG4gIGNvbnN0IGdZZWFyID0gZGl2KGosIDE0NjEpIC0gMTAwMTAwICsgZGl2KDggLSBnTW9udGgsIDYpO1xuXG4gIHJldHVybiBuZXcgRGF0ZShnWWVhciwgZ01vbnRoIC0gMSwgZ0RheSk7XG59XG5cbi8qXG4gQ29udmVydHMgYSBkYXRlIG9mIHRoZSBKYWxhbGkgY2FsZW5kYXIgdG8gdGhlIEp1bGlhbiBEYXkgbnVtYmVyLlxuIEBwYXJhbSBqeSBKYWxhbGkgeWVhciAoMSB0byAzMTAwKVxuIEBwYXJhbSBqbSBKYWxhbGkgbW9udGggKDEgdG8gMTIpXG4gQHBhcmFtIGpkIEphbGFsaSBkYXkgKDEgdG8gMjkvMzEpXG4gQHJldHVybiBKdWxpYW4gRGF5IG51bWJlclxuICovXG5mdW5jdGlvbiBncmVnb3JpYW5Ub0p1bGlhbihneTogbnVtYmVyLCBnbTogbnVtYmVyLCBnZDogbnVtYmVyKSB7XG4gIGxldCBkID0gZGl2KChneSArIGRpdihnbSAtIDgsIDYpICsgMTAwMTAwKSAqIDE0NjEsIDQpICsgZGl2KDE1MyAqIG1vZChnbSArIDksIDEyKSArIDIsIDUpICsgZ2QgLSAzNDg0MDQwODtcbiAgZCA9IGQgLSBkaXYoZGl2KGd5ICsgMTAwMTAwICsgZGl2KGdtIC0gOCwgNiksIDEwMCkgKiAzLCA0KSArIDc1MjtcbiAgcmV0dXJuIGQ7XG59XG5cbi8qXG4gQ29udmVydHMgdGhlIEp1bGlhbiBEYXkgbnVtYmVyIHRvIGEgZGF0ZSBpbiB0aGUgSmFsYWxpIGNhbGVuZGFyLlxuIEBwYXJhbSBqdWxpYW5EYXlOdW1iZXIgSnVsaWFuIERheSBudW1iZXJcbiBAcmV0dXJuXG4gamFsYWxpWWVhcjogSmFsYWxpIHllYXIgKDEgdG8gMzEwMClcbiBqYWxhbGlNb250aDogSmFsYWxpIG1vbnRoICgxIHRvIDEyKVxuIGphbGFsaURheTogSmFsYWxpIGRheSAoMSB0byAyOS8zMSlcbiAqL1xuZnVuY3Rpb24ganVsaWFuVG9KYWxhbGkoanVsaWFuRGF5TnVtYmVyOiBudW1iZXIpIHtcbiAgbGV0IGd5ID0ganVsaWFuVG9HcmVnb3JpYW4oanVsaWFuRGF5TnVtYmVyKS5nZXRGdWxsWWVhcigpICAvLyBDYWxjdWxhdGUgR3JlZ29yaWFuIHllYXIgKGd5KS5cbiAgICAgICxcbiAgICAgIGphbGFsaVllYXIgPSBneSAtIDYyMSwgciA9IGphbENhbChqYWxhbGlZZWFyKSwgZ3JlZ29yaWFuRGF5ID0gZ3JlZ29yaWFuVG9KdWxpYW4oZ3ksIDMsIHIubWFyY2gpLCBqYWxhbGlEYXksXG4gICAgICBqYWxhbGlNb250aCwgbnVtYmVyT2ZEYXlzO1xuXG4gIC8vIEZpbmQgbnVtYmVyIG9mIGRheXMgdGhhdCBwYXNzZWQgc2luY2UgMSBGYXJ2YXJkaW4uXG4gIG51bWJlck9mRGF5cyA9IGp1bGlhbkRheU51bWJlciAtIGdyZWdvcmlhbkRheTtcbiAgaWYgKG51bWJlck9mRGF5cyA+PSAwKSB7XG4gICAgaWYgKG51bWJlck9mRGF5cyA8PSAxODUpIHtcbiAgICAgIC8vIFRoZSBmaXJzdCA2IG1vbnRocy5cbiAgICAgIGphbGFsaU1vbnRoID0gMSArIGRpdihudW1iZXJPZkRheXMsIDMxKTtcbiAgICAgIGphbGFsaURheSA9IG1vZChudW1iZXJPZkRheXMsIDMxKSArIDE7XG4gICAgICByZXR1cm4gbmV3IE5nYkRhdGUoamFsYWxpWWVhciwgamFsYWxpTW9udGgsIGphbGFsaURheSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZSByZW1haW5pbmcgbW9udGhzLlxuICAgICAgbnVtYmVyT2ZEYXlzIC09IDE4NjtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gUHJldmlvdXMgSmFsYWxpIHllYXIuXG4gICAgamFsYWxpWWVhciAtPSAxO1xuICAgIG51bWJlck9mRGF5cyArPSAxNzk7XG4gICAgaWYgKHIubGVhcCA9PT0gMSkge1xuICAgICAgbnVtYmVyT2ZEYXlzICs9IDE7XG4gICAgfVxuICB9XG4gIGphbGFsaU1vbnRoID0gNyArIGRpdihudW1iZXJPZkRheXMsIDMwKTtcbiAgamFsYWxpRGF5ID0gbW9kKG51bWJlck9mRGF5cywgMzApICsgMTtcblxuICByZXR1cm4gbmV3IE5nYkRhdGUoamFsYWxpWWVhciwgamFsYWxpTW9udGgsIGphbGFsaURheSk7XG59XG5cbi8qXG4gQ29udmVydHMgYSBkYXRlIG9mIHRoZSBKYWxhbGkgY2FsZW5kYXIgdG8gdGhlIEp1bGlhbiBEYXkgbnVtYmVyLlxuIEBwYXJhbSBqWWVhciBKYWxhbGkgeWVhciAoMSB0byAzMTAwKVxuIEBwYXJhbSBqTW9udGggSmFsYWxpIG1vbnRoICgxIHRvIDEyKVxuIEBwYXJhbSBqRGF5IEphbGFsaSBkYXkgKDEgdG8gMjkvMzEpXG4gQHJldHVybiBKdWxpYW4gRGF5IG51bWJlclxuICovXG5mdW5jdGlvbiBqYWxhbGlUb0p1bGlhbihqWWVhcjogbnVtYmVyLCBqTW9udGg6IG51bWJlciwgakRheTogbnVtYmVyKSB7XG4gIGxldCByID0gamFsQ2FsKGpZZWFyKTtcbiAgcmV0dXJuIGdyZWdvcmlhblRvSnVsaWFuKHIuZ3ksIDMsIHIubWFyY2gpICsgKGpNb250aCAtIDEpICogMzEgLSBkaXYoak1vbnRoLCA3KSAqIChqTW9udGggLSA3KSArIGpEYXkgLSAxO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIGEgc3BlY2lmaWMgamFsYWxpIG1vbnRoLlxuICovXG5mdW5jdGlvbiBnZXREYXlzUGVyTW9udGgobW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKG1vbnRoIDw9IDYpIHtcbiAgICByZXR1cm4gMzE7XG4gIH1cbiAgaWYgKG1vbnRoIDw9IDExKSB7XG4gICAgcmV0dXJuIDMwO1xuICB9XG4gIGlmIChqYWxDYWwoeWVhcikubGVhcCA9PT0gMCkge1xuICAgIHJldHVybiAzMDtcbiAgfVxuICByZXR1cm4gMjk7XG59XG4iLCJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ2JEYXRlfSBmcm9tICcuLi9uZ2ItZGF0ZSc7XG5pbXBvcnQge05nYkNhbGVuZGFyLCBOZ2JQZXJpb2R9IGZyb20gJy4uL25nYi1jYWxlbmRhcic7XG5pbXBvcnQge2lzSW50ZWdlcn0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcblxuaW1wb3J0IHtmcm9tR3JlZ29yaWFuLCBzZXRKYWxhbGlEYXksIHNldEphbGFsaU1vbnRoLCBzZXRKYWxhbGlZZWFyLCB0b0dyZWdvcmlhbn0gZnJvbSAnLi9qYWxhbGknO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmdiQ2FsZW5kYXJQZXJzaWFuIGV4dGVuZHMgTmdiQ2FsZW5kYXIge1xuICBnZXREYXlzUGVyV2VlaygpIHsgcmV0dXJuIDc7IH1cblxuICBnZXRNb250aHMoKSB7IHJldHVybiBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMl07IH1cblxuICBnZXRXZWVrc1Blck1vbnRoKCkgeyByZXR1cm4gNjsgfVxuXG4gIGdldE5leHQoZGF0ZTogTmdiRGF0ZSwgcGVyaW9kOiBOZ2JQZXJpb2QgPSAnZCcsIG51bWJlciA9IDEpIHtcbiAgICBkYXRlID0gbmV3IE5nYkRhdGUoZGF0ZS55ZWFyLCBkYXRlLm1vbnRoLCBkYXRlLmRheSk7XG5cbiAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgY2FzZSAneSc6XG4gICAgICAgIGRhdGUgPSBzZXRKYWxhbGlZZWFyKGRhdGUsIGRhdGUueWVhciArIG51bWJlcik7XG4gICAgICAgIGRhdGUubW9udGggPSAxO1xuICAgICAgICBkYXRlLmRheSA9IDE7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgY2FzZSAnbSc6XG4gICAgICAgIGRhdGUgPSBzZXRKYWxhbGlNb250aChkYXRlLCBkYXRlLm1vbnRoICsgbnVtYmVyKTtcbiAgICAgICAgZGF0ZS5kYXkgPSAxO1xuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgIGNhc2UgJ2QnOlxuICAgICAgICByZXR1cm4gc2V0SmFsYWxpRGF5KGRhdGUsIGRhdGUuZGF5ICsgbnVtYmVyKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfVxuXG4gIGdldFByZXYoZGF0ZTogTmdiRGF0ZSwgcGVyaW9kOiBOZ2JQZXJpb2QgPSAnZCcsIG51bWJlciA9IDEpIHsgcmV0dXJuIHRoaXMuZ2V0TmV4dChkYXRlLCBwZXJpb2QsIC1udW1iZXIpOyB9XG5cbiAgZ2V0V2Vla2RheShkYXRlOiBOZ2JEYXRlKSB7XG4gICAgY29uc3QgZGF5ID0gdG9HcmVnb3JpYW4oZGF0ZSkuZ2V0RGF5KCk7XG4gICAgLy8gaW4gSlMgRGF0ZSBTdW49MCwgaW4gSVNPIDg2MDEgU3VuPTdcbiAgICByZXR1cm4gZGF5ID09PSAwID8gNyA6IGRheTtcbiAgfVxuXG4gIGdldFdlZWtOdW1iZXIod2VlazogTmdiRGF0ZVtdLCBmaXJzdERheU9mV2VlazogbnVtYmVyKSB7XG4gICAgLy8gaW4gSlMgRGF0ZSBTdW49MCwgaW4gSVNPIDg2MDEgU3VuPTdcbiAgICBpZiAoZmlyc3REYXlPZldlZWsgPT09IDcpIHtcbiAgICAgIGZpcnN0RGF5T2ZXZWVrID0gMDtcbiAgICB9XG5cbiAgICBjb25zdCB0aHVyc2RheUluZGV4ID0gKDQgKyA3IC0gZmlyc3REYXlPZldlZWspICUgNztcbiAgICBjb25zdCBkYXRlID0gd2Vla1t0aHVyc2RheUluZGV4XTtcblxuICAgIGNvbnN0IGpzRGF0ZSA9IHRvR3JlZ29yaWFuKGRhdGUpO1xuICAgIGpzRGF0ZS5zZXREYXRlKGpzRGF0ZS5nZXREYXRlKCkgKyA0IC0gKGpzRGF0ZS5nZXREYXkoKSB8fCA3KSk7ICAvLyBUaHVyc2RheVxuICAgIGNvbnN0IHRpbWUgPSBqc0RhdGUuZ2V0VGltZSgpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRvR3JlZ29yaWFuKG5ldyBOZ2JEYXRlKGRhdGUueWVhciwgMSwgMSkpO1xuICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucm91bmQoKHRpbWUgLSBzdGFydERhdGUuZ2V0VGltZSgpKSAvIDg2NDAwMDAwKSAvIDcpICsgMTtcbiAgfVxuXG4gIGdldFRvZGF5KCk6IE5nYkRhdGUgeyByZXR1cm4gZnJvbUdyZWdvcmlhbihuZXcgRGF0ZSgpKTsgfVxuXG4gIGlzVmFsaWQoZGF0ZTogTmdiRGF0ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkYXRlICYmIGlzSW50ZWdlcihkYXRlLnllYXIpICYmIGlzSW50ZWdlcihkYXRlLm1vbnRoKSAmJiBpc0ludGVnZXIoZGF0ZS5kYXkpICYmXG4gICAgICAgICFpc05hTih0b0dyZWdvcmlhbihkYXRlKS5nZXRUaW1lKCkpO1xuICB9XG59XG4iLCJpbXBvcnQge05nYkRhdGV9IGZyb20gJy4uL25nYi1kYXRlJztcbmltcG9ydCB7TmdiRGF0ZVN0cnVjdH0gZnJvbSAnLi4vbmdiLWRhdGUtc3RydWN0JztcblxuY29uc3QgUEFSVFNfUEVSX0hPVVIgPSAxMDgwO1xuY29uc3QgUEFSVFNfUEVSX0RBWSA9IDI0ICogUEFSVFNfUEVSX0hPVVI7XG5jb25zdCBQQVJUU19GUkFDVElPTkFMX01PTlRIID0gMTIgKiBQQVJUU19QRVJfSE9VUiArIDc5MztcbmNvbnN0IFBBUlRTX1BFUl9NT05USCA9IDI5ICogUEFSVFNfUEVSX0RBWSArIFBBUlRTX0ZSQUNUSU9OQUxfTU9OVEg7XG5jb25zdCBCQUhBUkFEID0gMTEgKiBQQVJUU19QRVJfSE9VUiArIDIwNDtcbmNvbnN0IEhFQlJFV19EQVlfT05fSkFOXzFfMTk3MCA9IDIwOTI1OTE7XG5jb25zdCBHUkVHT1JJQU5fRVBPQ0ggPSAxNzIxNDI1LjU7XG5cbmZ1bmN0aW9uIGlzR3JlZ29yaWFuTGVhcFllYXIoeWVhcjogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiB5ZWFyICUgNCA9PT0gMCAmJiB5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDA7XG59XG5cbmZ1bmN0aW9uIG51bWJlck9mRmlyc3REYXlJblllYXIoeWVhcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgbGV0IG1vbnRoc0JlZm9yZVllYXIgPSBNYXRoLmZsb29yKCgyMzUgKiB5ZWFyIC0gMjM0KSAvIDE5KTtcbiAgbGV0IGZyYWN0aW9uYWxNb250aHNCZWZvcmVZZWFyID0gbW9udGhzQmVmb3JlWWVhciAqIFBBUlRTX0ZSQUNUSU9OQUxfTU9OVEggKyBCQUhBUkFEO1xuICBsZXQgZGF5TnVtYmVyID0gbW9udGhzQmVmb3JlWWVhciAqIDI5ICsgTWF0aC5mbG9vcihmcmFjdGlvbmFsTW9udGhzQmVmb3JlWWVhciAvIFBBUlRTX1BFUl9EQVkpO1xuICBsZXQgdGltZU9mRGF5ID0gZnJhY3Rpb25hbE1vbnRoc0JlZm9yZVllYXIgJSBQQVJUU19QRVJfREFZO1xuXG4gIGxldCBkYXlPZldlZWsgPSBkYXlOdW1iZXIgJSA3OyAgLy8gMCA9PSBNb25kYXlcblxuICBpZiAoZGF5T2ZXZWVrID09PSAyIHx8IGRheU9mV2VlayA9PT0gNCB8fCBkYXlPZldlZWsgPT09IDYpIHtcbiAgICBkYXlOdW1iZXIrKztcbiAgICBkYXlPZldlZWsgPSBkYXlOdW1iZXIgJSA3O1xuICB9XG4gIGlmIChkYXlPZldlZWsgPT09IDEgJiYgdGltZU9mRGF5ID4gMTUgKiBQQVJUU19QRVJfSE9VUiArIDIwNCAmJiAhaXNIZWJyZXdMZWFwWWVhcih5ZWFyKSkge1xuICAgIGRheU51bWJlciArPSAyO1xuICB9IGVsc2UgaWYgKGRheU9mV2VlayA9PT0gMCAmJiB0aW1lT2ZEYXkgPiAyMSAqIFBBUlRTX1BFUl9IT1VSICsgNTg5ICYmIGlzSGVicmV3TGVhcFllYXIoeWVhciAtIDEpKSB7XG4gICAgZGF5TnVtYmVyKys7XG4gIH1cbiAgcmV0dXJuIGRheU51bWJlcjtcbn1cblxuZnVuY3Rpb24gZ2V0RGF5c0luR3JlZ29yaWFuTW9udGgobW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgbGV0IGRheXMgPSBbMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV07XG4gIGlmIChpc0dyZWdvcmlhbkxlYXBZZWFyKHllYXIpKSB7XG4gICAgZGF5c1sxXSsrO1xuICB9XG4gIHJldHVybiBkYXlzW21vbnRoIC0gMV07XG59XG5cbmZ1bmN0aW9uIGdldEhlYnJld01vbnRocyh5ZWFyOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gaXNIZWJyZXdMZWFwWWVhcih5ZWFyKSA/IDEzIDogMTI7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSBzcGVjaWZpYyBIZWJyZXcgeWVhci5cbiAqIGB5ZWFyYCBpcyBhbnkgSGVicmV3IHllYXIuXG4gKi9cbmZ1bmN0aW9uIGdldERheXNJbkhlYnJld1llYXIoeWVhcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIG51bWJlck9mRmlyc3REYXlJblllYXIoeWVhciArIDEpIC0gbnVtYmVyT2ZGaXJzdERheUluWWVhcih5ZWFyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSGVicmV3TGVhcFllYXIoeWVhcjogbnVtYmVyKTogYm9vbGVhbiB7XG4gIGxldCBiID0gKHllYXIgKiAxMiArIDE3KSAlIDE5O1xuICByZXR1cm4gYiA+PSAoKGIgPCAwKSA/IC03IDogMTIpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIGEgc3BlY2lmaWMgSGVicmV3IG1vbnRoLlxuICogYG1vbnRoYCBpcyAxIGZvciBOaXNhbiwgMiBmb3IgSXlhciBldGMuIE5vdGU6IEhlYnJldyBsZWFwIHllYXIgY29udGFpbnMgMTMgbW9udGhzLlxuICogYHllYXJgIGlzIGFueSBIZWJyZXcgeWVhci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERheXNJbkhlYnJld01vbnRoKG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlcik6IG51bWJlciB7XG4gIGxldCB5ZWFyTGVuZ3RoID0gbnVtYmVyT2ZGaXJzdERheUluWWVhcih5ZWFyICsgMSkgLSBudW1iZXJPZkZpcnN0RGF5SW5ZZWFyKHllYXIpO1xuICBsZXQgeWVhclR5cGUgPSAoeWVhckxlbmd0aCA8PSAzODAgPyB5ZWFyTGVuZ3RoIDogKHllYXJMZW5ndGggLSAzMCkpIC0gMzUzO1xuICBsZXQgbGVhcFllYXIgPSBpc0hlYnJld0xlYXBZZWFyKHllYXIpO1xuICBsZXQgZGF5c0luTW9udGggPSBsZWFwWWVhciA/IFszMCwgMjksIDI5LCAyOSwgMzAsIDMwLCAyOSwgMzAsIDI5LCAzMCwgMjksIDMwLCAyOV0gOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFszMCwgMjksIDI5LCAyOSwgMzAsIDI5LCAzMCwgMjksIDMwLCAyOSwgMzAsIDI5XTtcbiAgaWYgKHllYXJUeXBlID4gMCkge1xuICAgIGRheXNJbk1vbnRoWzJdKys7ICAvLyBLaXNsZXYgZ2V0cyBhbiBleHRyYSBkYXkgaW4gbm9ybWFsIG9yIGNvbXBsZXRlIHllYXJzLlxuICB9XG4gIGlmICh5ZWFyVHlwZSA+IDEpIHtcbiAgICBkYXlzSW5Nb250aFsxXSsrOyAgLy8gSGVzaHZhbiBnZXRzIGFuIGV4dHJhIGRheSBpbiBjb21wbGV0ZSB5ZWFycyBvbmx5LlxuICB9XG4gIHJldHVybiBkYXlzSW5Nb250aFttb250aCAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF5TnVtYmVySW5IZWJyZXdZZWFyKGRhdGU6IE5nYkRhdGUpOiBudW1iZXIge1xuICBsZXQgbnVtYmVyT2ZEYXkgPSAwO1xuICBmb3IgKGxldCBpID0gMTsgaSA8IGRhdGUubW9udGg7IGkrKykge1xuICAgIG51bWJlck9mRGF5ICs9IGdldERheXNJbkhlYnJld01vbnRoKGksIGRhdGUueWVhcik7XG4gIH1cbiAgcmV0dXJuIG51bWJlck9mRGF5ICsgZGF0ZS5kYXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRIZWJyZXdNb250aChkYXRlOiBOZ2JEYXRlLCB2YWw6IG51bWJlcik6IE5nYkRhdGUge1xuICBsZXQgYWZ0ZXIgPSB2YWwgPj0gMDtcbiAgaWYgKCFhZnRlcikge1xuICAgIHZhbCA9IC12YWw7XG4gIH1cbiAgd2hpbGUgKHZhbCA+IDApIHtcbiAgICBpZiAoYWZ0ZXIpIHtcbiAgICAgIGlmICh2YWwgPiBnZXRIZWJyZXdNb250aHMoZGF0ZS55ZWFyKSAtIGRhdGUubW9udGgpIHtcbiAgICAgICAgdmFsIC09IGdldEhlYnJld01vbnRocyhkYXRlLnllYXIpIC0gZGF0ZS5tb250aCArIDE7XG4gICAgICAgIGRhdGUueWVhcisrO1xuICAgICAgICBkYXRlLm1vbnRoID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGUubW9udGggKz0gdmFsO1xuICAgICAgICB2YWwgPSAwO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodmFsID49IGRhdGUubW9udGgpIHtcbiAgICAgICAgZGF0ZS55ZWFyLS07XG4gICAgICAgIHZhbCAtPSBkYXRlLm1vbnRoO1xuICAgICAgICBkYXRlLm1vbnRoID0gZ2V0SGVicmV3TW9udGhzKGRhdGUueWVhcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRlLm1vbnRoIC09IHZhbDtcbiAgICAgICAgdmFsID0gMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRIZWJyZXdEYXkoZGF0ZTogTmdiRGF0ZSwgdmFsOiBudW1iZXIpOiBOZ2JEYXRlIHtcbiAgbGV0IGFmdGVyID0gdmFsID49IDA7XG4gIGlmICghYWZ0ZXIpIHtcbiAgICB2YWwgPSAtdmFsO1xuICB9XG4gIHdoaWxlICh2YWwgPiAwKSB7XG4gICAgaWYgKGFmdGVyKSB7XG4gICAgICBpZiAodmFsID4gZ2V0RGF5c0luSGVicmV3WWVhcihkYXRlLnllYXIpIC0gZ2V0RGF5TnVtYmVySW5IZWJyZXdZZWFyKGRhdGUpKSB7XG4gICAgICAgIHZhbCAtPSBnZXREYXlzSW5IZWJyZXdZZWFyKGRhdGUueWVhcikgLSBnZXREYXlOdW1iZXJJbkhlYnJld1llYXIoZGF0ZSkgKyAxO1xuICAgICAgICBkYXRlLnllYXIrKztcbiAgICAgICAgZGF0ZS5tb250aCA9IDE7XG4gICAgICAgIGRhdGUuZGF5ID0gMTtcbiAgICAgIH0gZWxzZSBpZiAodmFsID4gZ2V0RGF5c0luSGVicmV3TW9udGgoZGF0ZS5tb250aCwgZGF0ZS55ZWFyKSAtIGRhdGUuZGF5KSB7XG4gICAgICAgIHZhbCAtPSBnZXREYXlzSW5IZWJyZXdNb250aChkYXRlLm1vbnRoLCBkYXRlLnllYXIpIC0gZGF0ZS5kYXkgKyAxO1xuICAgICAgICBkYXRlLm1vbnRoKys7XG4gICAgICAgIGRhdGUuZGF5ID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGUuZGF5ICs9IHZhbDtcbiAgICAgICAgdmFsID0gMDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHZhbCA+PSBkYXRlLmRheSkge1xuICAgICAgICB2YWwgLT0gZGF0ZS5kYXk7XG4gICAgICAgIGRhdGUubW9udGgtLTtcbiAgICAgICAgaWYgKGRhdGUubW9udGggPT09IDApIHtcbiAgICAgICAgICBkYXRlLnllYXItLTtcbiAgICAgICAgICBkYXRlLm1vbnRoID0gZ2V0SGVicmV3TW9udGhzKGRhdGUueWVhcik7XG4gICAgICAgIH1cbiAgICAgICAgZGF0ZS5kYXkgPSBnZXREYXlzSW5IZWJyZXdNb250aChkYXRlLm1vbnRoLCBkYXRlLnllYXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0ZS5kYXkgLT0gdmFsO1xuICAgICAgICB2YWwgPSAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0ZTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBlcXVpdmFsZW50IEhlYnJldyBkYXRlIHZhbHVlIGZvciBhIGdpdmUgaW5wdXQgR3JlZ29yaWFuIGRhdGUuXG4gKiBgZ2RhdGVgIGlzIGEgSlMgRGF0ZSB0byBiZSBjb252ZXJ0ZWQgdG8gSGVicmV3IGRhdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tR3JlZ29yaWFuKGdkYXRlOiBEYXRlKTogTmdiRGF0ZSB7XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShnZGF0ZSk7XG4gIGNvbnN0IGdZZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpLCBnTW9udGggPSBkYXRlLmdldE1vbnRoKCksIGdEYXkgPSBkYXRlLmdldERhdGUoKTtcbiAgbGV0IGp1bGlhbkRheSA9IEdSRUdPUklBTl9FUE9DSCAtIDEgKyAzNjUgKiAoZ1llYXIgLSAxKSArIE1hdGguZmxvb3IoKGdZZWFyIC0gMSkgLyA0KSAtXG4gICAgICBNYXRoLmZsb29yKChnWWVhciAtIDEpIC8gMTAwKSArIE1hdGguZmxvb3IoKGdZZWFyIC0gMSkgLyA0MDApICtcbiAgICAgIE1hdGguZmxvb3IoKDM2NyAqIChnTW9udGggKyAxKSAtIDM2MikgLyAxMiArIChnTW9udGggKyAxIDw9IDIgPyAwIDogaXNHcmVnb3JpYW5MZWFwWWVhcihnWWVhcikgPyAtMSA6IC0yKSArIGdEYXkpO1xuICBqdWxpYW5EYXkgPSBNYXRoLmZsb29yKGp1bGlhbkRheSArIDAuNSk7XG4gIGxldCBkYXlzU2luY2VIZWJFcG9jaCA9IGp1bGlhbkRheSAtIDM0Nzk5NztcbiAgbGV0IG1vbnRoc1NpbmNlSGViRXBvY2ggPSBNYXRoLmZsb29yKGRheXNTaW5jZUhlYkVwb2NoICogUEFSVFNfUEVSX0RBWSAvIFBBUlRTX1BFUl9NT05USCk7XG4gIGxldCBoWWVhciA9IE1hdGguZmxvb3IoKG1vbnRoc1NpbmNlSGViRXBvY2ggKiAxOSArIDIzNCkgLyAyMzUpICsgMTtcbiAgbGV0IGZpcnN0RGF5T2ZUaGlzWWVhciA9IG51bWJlck9mRmlyc3REYXlJblllYXIoaFllYXIpO1xuICBsZXQgZGF5T2ZZZWFyID0gZGF5c1NpbmNlSGViRXBvY2ggLSBmaXJzdERheU9mVGhpc1llYXI7XG4gIHdoaWxlIChkYXlPZlllYXIgPCAxKSB7XG4gICAgaFllYXItLTtcbiAgICBmaXJzdERheU9mVGhpc1llYXIgPSBudW1iZXJPZkZpcnN0RGF5SW5ZZWFyKGhZZWFyKTtcbiAgICBkYXlPZlllYXIgPSBkYXlzU2luY2VIZWJFcG9jaCAtIGZpcnN0RGF5T2ZUaGlzWWVhcjtcbiAgfVxuICBsZXQgaE1vbnRoID0gMTtcbiAgbGV0IGhEYXkgPSBkYXlPZlllYXI7XG4gIHdoaWxlIChoRGF5ID4gZ2V0RGF5c0luSGVicmV3TW9udGgoaE1vbnRoLCBoWWVhcikpIHtcbiAgICBoRGF5IC09IGdldERheXNJbkhlYnJld01vbnRoKGhNb250aCwgaFllYXIpO1xuICAgIGhNb250aCsrO1xuICB9XG4gIHJldHVybiBuZXcgTmdiRGF0ZShoWWVhciwgaE1vbnRoLCBoRGF5KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBlcXVpdmFsZW50IEpTIGRhdGUgdmFsdWUgZm9yIGEgZ2l2ZW4gSGVicmV3IGRhdGUuXG4gKiBgaGVicmV3RGF0ZWAgaXMgYW4gSGVicmV3IGRhdGUgdG8gYmUgY29udmVydGVkIHRvIEdyZWdvcmlhbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvR3JlZ29yaWFuKGhlYnJld0RhdGU6IE5nYkRhdGVTdHJ1Y3QgfCBOZ2JEYXRlKTogRGF0ZSB7XG4gIGNvbnN0IGhZZWFyID0gaGVicmV3RGF0ZS55ZWFyO1xuICBjb25zdCBoTW9udGggPSBoZWJyZXdEYXRlLm1vbnRoO1xuICBjb25zdCBoRGF5ID0gaGVicmV3RGF0ZS5kYXk7XG4gIGxldCBkYXlzID0gbnVtYmVyT2ZGaXJzdERheUluWWVhcihoWWVhcik7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgaE1vbnRoOyBpKyspIHtcbiAgICBkYXlzICs9IGdldERheXNJbkhlYnJld01vbnRoKGksIGhZZWFyKTtcbiAgfVxuICBkYXlzICs9IGhEYXk7XG4gIGxldCBkaWZmRGF5cyA9IGRheXMgLSBIRUJSRVdfREFZX09OX0pBTl8xXzE5NzA7XG4gIGxldCBhZnRlciA9IGRpZmZEYXlzID49IDA7XG4gIGlmICghYWZ0ZXIpIHtcbiAgICBkaWZmRGF5cyA9IC1kaWZmRGF5cztcbiAgfVxuICBsZXQgZ1llYXIgPSAxOTcwO1xuICBsZXQgZ01vbnRoID0gMTtcbiAgbGV0IGdEYXkgPSAxO1xuICB3aGlsZSAoZGlmZkRheXMgPiAwKSB7XG4gICAgaWYgKGFmdGVyKSB7XG4gICAgICBpZiAoZGlmZkRheXMgPj0gKGlzR3JlZ29yaWFuTGVhcFllYXIoZ1llYXIpID8gMzY2IDogMzY1KSkge1xuICAgICAgICBkaWZmRGF5cyAtPSBpc0dyZWdvcmlhbkxlYXBZZWFyKGdZZWFyKSA/IDM2NiA6IDM2NTtcbiAgICAgICAgZ1llYXIrKztcbiAgICAgIH0gZWxzZSBpZiAoZGlmZkRheXMgPj0gZ2V0RGF5c0luR3JlZ29yaWFuTW9udGgoZ01vbnRoLCBnWWVhcikpIHtcbiAgICAgICAgZGlmZkRheXMgLT0gZ2V0RGF5c0luR3JlZ29yaWFuTW9udGgoZ01vbnRoLCBnWWVhcik7XG4gICAgICAgIGdNb250aCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ0RheSArPSBkaWZmRGF5cztcbiAgICAgICAgZGlmZkRheXMgPSAwO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZGlmZkRheXMgPj0gKGlzR3JlZ29yaWFuTGVhcFllYXIoZ1llYXIgLSAxKSA/IDM2NiA6IDM2NSkpIHtcbiAgICAgICAgZGlmZkRheXMgLT0gaXNHcmVnb3JpYW5MZWFwWWVhcihnWWVhciAtIDEpID8gMzY2IDogMzY1O1xuICAgICAgICBnWWVhci0tO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGdNb250aCA+IDEpIHtcbiAgICAgICAgICBnTW9udGgtLTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBnTW9udGggPSAxMjtcbiAgICAgICAgICBnWWVhci0tO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkaWZmRGF5cyA+PSBnZXREYXlzSW5HcmVnb3JpYW5Nb250aChnTW9udGgsIGdZZWFyKSkge1xuICAgICAgICAgIGRpZmZEYXlzIC09IGdldERheXNJbkdyZWdvcmlhbk1vbnRoKGdNb250aCwgZ1llYXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdEYXkgPSBnZXREYXlzSW5HcmVnb3JpYW5Nb250aChnTW9udGgsIGdZZWFyKSAtIGRpZmZEYXlzICsgMTtcbiAgICAgICAgICBkaWZmRGF5cyA9IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBEYXRlKGdZZWFyLCBnTW9udGggLSAxLCBnRGF5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhlYnJld051bWVyYWxzKG51bWVyYWxzOiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAoIW51bWVyYWxzKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGNvbnN0IGhBcnJheTBfOSA9IFsnJywgJ1xcdTA1ZDAnLCAnXFx1MDVkMScsICdcXHUwNWQyJywgJ1xcdTA1ZDMnLCAnXFx1MDVkNCcsICdcXHUwNWQ1JywgJ1xcdTA1ZDYnLCAnXFx1MDVkNycsICdcXHUwNWQ4J107XG4gIGNvbnN0IGhBcnJheTEwXzE5ID0gW1xuICAgICdcXHUwNWQ5JywgJ1xcdTA1ZDlcXHUwNWQwJywgJ1xcdTA1ZDlcXHUwNWQxJywgJ1xcdTA1ZDlcXHUwNWQyJywgJ1xcdTA1ZDlcXHUwNWQzJywgJ1xcdTA1ZDhcXHUwNWQ1JywgJ1xcdTA1ZDhcXHUwNWQ2JyxcbiAgICAnXFx1MDVkOVxcdTA1ZDYnLCAnXFx1MDVkOVxcdTA1ZDcnLCAnXFx1MDVkOVxcdTA1ZDgnXG4gIF07XG4gIGNvbnN0IGhBcnJheTIwXzkwID0gWycnLCAnJywgJ1xcdTA1ZGInLCAnXFx1MDVkYycsICdcXHUwNWRlJywgJ1xcdTA1ZTAnLCAnXFx1MDVlMScsICdcXHUwNWUyJywgJ1xcdTA1ZTQnLCAnXFx1MDVlNiddO1xuICBjb25zdCBoQXJyYXkxMDBfOTAwID0gW1xuICAgICcnLCAnXFx1MDVlNycsICdcXHUwNWU4JywgJ1xcdTA1ZTknLCAnXFx1MDVlYScsICdcXHUwNWVhXFx1MDVlNycsICdcXHUwNWVhXFx1MDVlOCcsICdcXHUwNWVhXFx1MDVlOScsICdcXHUwNWVhXFx1MDVlYScsXG4gICAgJ1xcdTA1ZWFcXHUwNWVhXFx1MDVlNydcbiAgXTtcbiAgY29uc3QgaEFycmF5MTAwMF85MDAwID0gW1xuICAgICcnLCAnXFx1MDVkMCcsICdcXHUwNWQxJywgJ1xcdTA1ZDFcXHUwNWQwJywgJ1xcdTA1ZDFcXHUwNWQxJywgJ1xcdTA1ZDQnLCAnXFx1MDVkNFxcdTA1ZDAnLCAnXFx1MDVkNFxcdTA1ZDEnLFxuICAgICdcXHUwNWQ0XFx1MDVkMVxcdTA1ZDAnLCAnXFx1MDVkNFxcdTA1ZDFcXHUwNWQxJ1xuICBdO1xuICBjb25zdCBnZXJlc2ggPSAnXFx1MDVmMycsIGdlcnNoYWltID0gJ1xcdTA1ZjQnO1xuICBsZXQgbWVtID0gMDtcbiAgbGV0IHJlc3VsdCA9IFtdO1xuICBsZXQgc3RlcCA9IDA7XG4gIHdoaWxlIChudW1lcmFscyA+IDApIHtcbiAgICBsZXQgbSA9IG51bWVyYWxzICUgMTA7XG4gICAgaWYgKHN0ZXAgPT09IDApIHtcbiAgICAgIG1lbSA9IG07XG4gICAgfSBlbHNlIGlmIChzdGVwID09PSAxKSB7XG4gICAgICBpZiAobSAhPT0gMSkge1xuICAgICAgICByZXN1bHQudW5zaGlmdChoQXJyYXkyMF85MFttXSwgaEFycmF5MF85W21lbV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0LnVuc2hpZnQoaEFycmF5MTBfMTlbbWVtXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzdGVwID09PSAyKSB7XG4gICAgICByZXN1bHQudW5zaGlmdChoQXJyYXkxMDBfOTAwW21dKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG0gIT09IDUpIHtcbiAgICAgICAgcmVzdWx0LnVuc2hpZnQoaEFycmF5MTAwMF85MDAwW21dLCBnZXJlc2gsICcgJyk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgbnVtZXJhbHMgPSBNYXRoLmZsb29yKG51bWVyYWxzIC8gMTApO1xuICAgIGlmIChzdGVwID09PSAwICYmIG51bWVyYWxzID09PSAwKSB7XG4gICAgICByZXN1bHQudW5zaGlmdChoQXJyYXkwXzlbbV0pO1xuICAgIH1cbiAgICBzdGVwKys7XG4gIH1cbiAgcmVzdWx0ID0gcmVzdWx0LmpvaW4oJycpLnNwbGl0KCcnKTtcbiAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDEpIHtcbiAgICByZXN1bHQucHVzaChnZXJlc2gpO1xuICB9IGVsc2UgaWYgKHJlc3VsdC5sZW5ndGggPiAxKSB7XG4gICAgcmVzdWx0LnNwbGljZShyZXN1bHQubGVuZ3RoIC0gMSwgMCwgZ2Vyc2hhaW0pO1xuICB9XG4gIHJldHVybiByZXN1bHQuam9pbignJyk7XG59XG4iLCJpbXBvcnQge05nYkRhdGV9IGZyb20gJy4uL25nYi1kYXRlJztcbmltcG9ydCB7ZnJvbUpTRGF0ZSwgTmdiQ2FsZW5kYXIsIE5nYlBlcmlvZCwgdG9KU0RhdGV9IGZyb20gJy4uL25nYi1jYWxlbmRhcic7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtpc051bWJlcn0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7XG4gIGZyb21HcmVnb3JpYW4sXG4gIGdldERheU51bWJlckluSGVicmV3WWVhcixcbiAgZ2V0RGF5c0luSGVicmV3TW9udGgsXG4gIGlzSGVicmV3TGVhcFllYXIsXG4gIHRvR3JlZ29yaWFuLFxuICBzZXRIZWJyZXdEYXksXG4gIHNldEhlYnJld01vbnRoXG59IGZyb20gJy4vaGVicmV3JztcblxuLyoqXG4gKiBAc2luY2UgMy4yLjBcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5nYkNhbGVuZGFySGVicmV3IGV4dGVuZHMgTmdiQ2FsZW5kYXIge1xuICBnZXREYXlzUGVyV2VlaygpIHsgcmV0dXJuIDc7IH1cblxuICBnZXRNb250aHMoeWVhcj86IG51bWJlcikge1xuICAgIGlmICh5ZWFyICYmIGlzSGVicmV3TGVhcFllYXIoeWVhcikpIHtcbiAgICAgIHJldHVybiBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTNdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTJdO1xuICAgIH1cbiAgfVxuXG4gIGdldFdlZWtzUGVyTW9udGgoKSB7IHJldHVybiA2OyB9XG5cbiAgaXNWYWxpZChkYXRlOiBOZ2JEYXRlKTogYm9vbGVhbiB7XG4gICAgbGV0IGIgPSBkYXRlICYmIGlzTnVtYmVyKGRhdGUueWVhcikgJiYgaXNOdW1iZXIoZGF0ZS5tb250aCkgJiYgaXNOdW1iZXIoZGF0ZS5kYXkpO1xuICAgIGIgPSBiICYmIGRhdGUubW9udGggPiAwICYmIGRhdGUubW9udGggPD0gKGlzSGVicmV3TGVhcFllYXIoZGF0ZS55ZWFyKSA/IDEzIDogMTIpO1xuICAgIGIgPSBiICYmIGRhdGUuZGF5ID4gMCAmJiBkYXRlLmRheSA8PSBnZXREYXlzSW5IZWJyZXdNb250aChkYXRlLm1vbnRoLCBkYXRlLnllYXIpO1xuICAgIHJldHVybiBiICYmICFpc05hTih0b0dyZWdvcmlhbihkYXRlKS5nZXRUaW1lKCkpO1xuICB9XG5cbiAgZ2V0TmV4dChkYXRlOiBOZ2JEYXRlLCBwZXJpb2Q6IE5nYlBlcmlvZCA9ICdkJywgbnVtYmVyID0gMSkge1xuICAgIGRhdGUgPSBuZXcgTmdiRGF0ZShkYXRlLnllYXIsIGRhdGUubW9udGgsIGRhdGUuZGF5KTtcblxuICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICBjYXNlICd5JzpcbiAgICAgICAgZGF0ZS55ZWFyICs9IG51bWJlcjtcbiAgICAgICAgZGF0ZS5tb250aCA9IDE7XG4gICAgICAgIGRhdGUuZGF5ID0gMTtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICBjYXNlICdtJzpcbiAgICAgICAgZGF0ZSA9IHNldEhlYnJld01vbnRoKGRhdGUsIG51bWJlcik7XG4gICAgICAgIGRhdGUuZGF5ID0gMTtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICBjYXNlICdkJzpcbiAgICAgICAgcmV0dXJuIHNldEhlYnJld0RheShkYXRlLCBudW1iZXIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJldihkYXRlOiBOZ2JEYXRlLCBwZXJpb2Q6IE5nYlBlcmlvZCA9ICdkJywgbnVtYmVyID0gMSkgeyByZXR1cm4gdGhpcy5nZXROZXh0KGRhdGUsIHBlcmlvZCwgLW51bWJlcik7IH1cblxuICBnZXRXZWVrZGF5KGRhdGU6IE5nYkRhdGUpIHtcbiAgICBjb25zdCBkYXkgPSB0b0dyZWdvcmlhbihkYXRlKS5nZXREYXkoKTtcbiAgICAvLyBpbiBKUyBEYXRlIFN1bj0wLCBpbiBJU08gODYwMSBTdW49N1xuICAgIHJldHVybiBkYXkgPT09IDAgPyA3IDogZGF5O1xuICB9XG5cbiAgZ2V0V2Vla051bWJlcih3ZWVrOiBOZ2JEYXRlW10sIGZpcnN0RGF5T2ZXZWVrOiBudW1iZXIpIHtcbiAgICBjb25zdCBkYXRlID0gd2Vla1t3ZWVrLmxlbmd0aCAtIDFdO1xuICAgIHJldHVybiBNYXRoLmNlaWwoZ2V0RGF5TnVtYmVySW5IZWJyZXdZZWFyKGRhdGUpIC8gNyk7XG4gIH1cblxuICBnZXRUb2RheSgpOiBOZ2JEYXRlIHsgcmV0dXJuIGZyb21HcmVnb3JpYW4obmV3IERhdGUoKSk7IH1cblxuICAvKipcbiAgICogQHNpbmNlIDMuNC4wXG4gICAqL1xuICB0b0dyZWdvcmlhbihkYXRlOiBOZ2JEYXRlKTogTmdiRGF0ZSB7IHJldHVybiBmcm9tSlNEYXRlKHRvR3JlZ29yaWFuKGRhdGUpKTsgfVxuXG4gIC8qKlxuICAgKiBAc2luY2UgMy40LjBcbiAgICovXG4gIGZyb21HcmVnb3JpYW4oZGF0ZTogTmdiRGF0ZSk6IE5nYkRhdGUgeyByZXR1cm4gZnJvbUdyZWdvcmlhbih0b0pTRGF0ZShkYXRlKSk7IH1cbn1cbiIsImltcG9ydCB7TmdiRGF0ZXBpY2tlckkxOG59IGZyb20gJy4uL2RhdGVwaWNrZXItaTE4bic7XG5pbXBvcnQge05nYkRhdGVTdHJ1Y3R9IGZyb20gJy4uLy4uL2luZGV4JztcbmltcG9ydCB7aGVicmV3TnVtZXJhbHMsIGlzSGVicmV3TGVhcFllYXJ9IGZyb20gJy4vaGVicmV3JztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuY29uc3QgV0VFS0RBWVMgPSBbJ8OXwqnDl8Kgw5fCmScsICfDl8Kpw5fCnMOXwpnDl8Kpw5fCmScsICfDl8Kow5fCkcOXwpnDl8Kiw5fCmScsICfDl8KXw5fCnsOXwpnDl8Kpw5fCmScsICfDl8Kpw5fCmcOXwqnDl8KZJywgJ8OXwqnDl8KRw5fCqicsICfDl8Kow5fCkMOXwqnDl8KVw5fCnyddO1xuY29uc3QgTU9OVEhTID0gWyfDl8Kqw5fCqcOXwqjDl8KZJywgJ8OXwpfDl8Kpw5fClcOXwp8nLCAnw5fCm8OXwqHDl8Kcw5fClScsICfDl8KYw5fCkcOXwqonLCAnw5fCqcOXwpHDl8KYJywgJ8OXwpDDl8KTw5fCqCcsICfDl8Kgw5fCmcOXwqHDl8KfJywgJ8OXwpDDl8KZw5fCmcOXwqgnLCAnw5fCocOXwpnDl8KVw5fCnycsICfDl8Kqw5fCnsOXwpXDl8KWJywgJ8OXwpDDl8KRJywgJ8OXwpDDl8Kcw5fClcOXwpwnXTtcbmNvbnN0IE1PTlRIU19MRUFQID1cbiAgICBbJ8OXwqrDl8Kpw5fCqMOXwpknLCAnw5fCl8OXwqnDl8KVw5fCnycsICfDl8Kbw5fCocOXwpzDl8KVJywgJ8OXwpjDl8KRw5fCqicsICfDl8Kpw5fCkcOXwpgnLCAnw5fCkMOXwpPDl8KoIMOXwpDDl8KzJywgJ8OXwpDDl8KTw5fCqCDDl8KRw5fCsycsICfDl8Kgw5fCmcOXwqHDl8KfJywgJ8OXwpDDl8KZw5fCmcOXwqgnLCAnw5fCocOXwpnDl8KVw5fCnycsICfDl8Kqw5fCnsOXwpXDl8KWJywgJ8OXwpDDl8KRJywgJ8OXwpDDl8Kcw5fClcOXwpwnXTtcblxuLyoqXG4gKiBAc2luY2UgMy4yLjBcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5nYkRhdGVwaWNrZXJJMThuSGVicmV3IGV4dGVuZHMgTmdiRGF0ZXBpY2tlckkxOG4ge1xuICBnZXRNb250aFNob3J0TmFtZShtb250aDogbnVtYmVyLCB5ZWFyPzogbnVtYmVyKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuZ2V0TW9udGhGdWxsTmFtZShtb250aCwgeWVhcik7IH1cblxuICBnZXRNb250aEZ1bGxOYW1lKG1vbnRoOiBudW1iZXIsIHllYXI/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBpc0hlYnJld0xlYXBZZWFyKHllYXIpID8gTU9OVEhTX0xFQVBbbW9udGggLSAxXSA6IE1PTlRIU1ttb250aCAtIDFdO1xuICB9XG5cbiAgZ2V0V2Vla2RheVNob3J0TmFtZSh3ZWVrZGF5OiBudW1iZXIpOiBzdHJpbmcgeyByZXR1cm4gV0VFS0RBWVNbd2Vla2RheSAtIDFdOyB9XG5cbiAgZ2V0RGF5QXJpYUxhYmVsKGRhdGU6IE5nYkRhdGVTdHJ1Y3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtoZWJyZXdOdW1lcmFscyhkYXRlLmRheSl9ICR7dGhpcy5nZXRNb250aEZ1bGxOYW1lKGRhdGUubW9udGgsIGRhdGUueWVhcil9ICR7aGVicmV3TnVtZXJhbHMoZGF0ZS55ZWFyKX1gO1xuICB9XG5cbiAgZ2V0RGF5TnVtZXJhbHMoZGF0ZTogTmdiRGF0ZVN0cnVjdCk6IHN0cmluZyB7IHJldHVybiBoZWJyZXdOdW1lcmFscyhkYXRlLmRheSk7IH1cblxuICBnZXRXZWVrTnVtZXJhbHMod2Vla051bWJlcjogbnVtYmVyKTogc3RyaW5nIHsgcmV0dXJuIGhlYnJld051bWVyYWxzKHdlZWtOdW1iZXIpOyB9XG5cbiAgZ2V0WWVhck51bWVyYWxzKHllYXI6IG51bWJlcik6IHN0cmluZyB7IHJldHVybiBoZWJyZXdOdW1lcmFscyh5ZWFyKTsgfVxufVxuIiwiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdiRGF0ZUFkYXB0ZXJ9IGZyb20gJy4vbmdiLWRhdGUtYWRhcHRlcic7XG5pbXBvcnQge05nYkRhdGVTdHJ1Y3R9IGZyb20gJy4uL25nYi1kYXRlLXN0cnVjdCc7XG5pbXBvcnQge2lzSW50ZWdlcn0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcblxuLyoqXG4gKiBbYE5nYkRhdGVBZGFwdGVyYF0oIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI05nYkRhdGVBZGFwdGVyKSBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXNcbiAqIG5hdGl2ZSBqYXZhc2NyaXB0IGRhdGVzIGFzIGEgdXNlciBkYXRlIG1vZGVsLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmdiRGF0ZU5hdGl2ZUFkYXB0ZXIgZXh0ZW5kcyBOZ2JEYXRlQWRhcHRlcjxEYXRlPiB7XG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIG5hdGl2ZSBgRGF0ZWAgdG8gYSBgTmdiRGF0ZVN0cnVjdGAuXG4gICAqL1xuICBmcm9tTW9kZWwoZGF0ZTogRGF0ZSk6IE5nYkRhdGVTdHJ1Y3Qge1xuICAgIHJldHVybiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKGRhdGUuZ2V0VGltZSgpKSkgPyB0aGlzLl9mcm9tTmF0aXZlRGF0ZShkYXRlKSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBgTmdiRGF0ZVN0cnVjdGAgdG8gYSBuYXRpdmUgYERhdGVgLlxuICAgKi9cbiAgdG9Nb2RlbChkYXRlOiBOZ2JEYXRlU3RydWN0KTogRGF0ZSB7XG4gICAgcmV0dXJuIGRhdGUgJiYgaXNJbnRlZ2VyKGRhdGUueWVhcikgJiYgaXNJbnRlZ2VyKGRhdGUubW9udGgpICYmIGlzSW50ZWdlcihkYXRlLmRheSkgPyB0aGlzLl90b05hdGl2ZURhdGUoZGF0ZSkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBfZnJvbU5hdGl2ZURhdGUoZGF0ZTogRGF0ZSk6IE5nYkRhdGVTdHJ1Y3Qge1xuICAgIHJldHVybiB7eWVhcjogZGF0ZS5nZXRGdWxsWWVhcigpLCBtb250aDogZGF0ZS5nZXRNb250aCgpICsgMSwgZGF5OiBkYXRlLmdldERhdGUoKX07XG4gIH1cblxuICBwcm90ZWN0ZWQgX3RvTmF0aXZlRGF0ZShkYXRlOiBOZ2JEYXRlU3RydWN0KTogRGF0ZSB7XG4gICAgY29uc3QganNEYXRlID0gbmV3IERhdGUoZGF0ZS55ZWFyLCBkYXRlLm1vbnRoIC0gMSwgZGF0ZS5kYXksIDEyKTtcbiAgICAvLyBhdm9pZCAzMCAtPiAxOTMwIGNvbnZlcnNpb25cbiAgICBqc0RhdGUuc2V0RnVsbFllYXIoZGF0ZS55ZWFyKTtcbiAgICByZXR1cm4ganNEYXRlO1xuICB9XG59XG4iLCJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ2JEYXRlU3RydWN0fSBmcm9tICcuLi9uZ2ItZGF0ZS1zdHJ1Y3QnO1xuaW1wb3J0IHtOZ2JEYXRlTmF0aXZlQWRhcHRlcn0gZnJvbSAnLi9uZ2ItZGF0ZS1uYXRpdmUtYWRhcHRlcic7XG5cbi8qKlxuICogU2FtZSBhcyBbYE5nYkRhdGVOYXRpdmVBZGFwdGVyYF0oIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI05nYkRhdGVOYXRpdmVBZGFwdGVyKSwgYnV0IHdpdGggVVRDIGRhdGVzLlxuICpcbiAqIEBzaW5jZSAzLjIuMFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmdiRGF0ZU5hdGl2ZVVUQ0FkYXB0ZXIgZXh0ZW5kcyBOZ2JEYXRlTmF0aXZlQWRhcHRlciB7XG4gIHByb3RlY3RlZCBfZnJvbU5hdGl2ZURhdGUoZGF0ZTogRGF0ZSk6IE5nYkRhdGVTdHJ1Y3Qge1xuICAgIHJldHVybiB7eWVhcjogZGF0ZS5nZXRVVENGdWxsWWVhcigpLCBtb250aDogZGF0ZS5nZXRVVENNb250aCgpICsgMSwgZGF5OiBkYXRlLmdldFVUQ0RhdGUoKX07XG4gIH1cblxuICBwcm90ZWN0ZWQgX3RvTmF0aXZlRGF0ZShkYXRlOiBOZ2JEYXRlU3RydWN0KTogRGF0ZSB7XG4gICAgY29uc3QganNEYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMoZGF0ZS55ZWFyLCBkYXRlLm1vbnRoIC0gMSwgZGF0ZS5kYXkpKTtcbiAgICAvLyBhdm9pZCAzMCAtPiAxOTMwIGNvbnZlcnNpb25cbiAgICBqc0RhdGUuc2V0VVRDRnVsbFllYXIoZGF0ZS55ZWFyKTtcbiAgICByZXR1cm4ganNEYXRlO1xuICB9XG59XG4iLCJpbXBvcnQge05nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtOZ2JEYXRlcGlja2VyfSBmcm9tICcuL2RhdGVwaWNrZXInO1xuaW1wb3J0IHtOZ2JEYXRlcGlja2VyTW9udGhWaWV3fSBmcm9tICcuL2RhdGVwaWNrZXItbW9udGgtdmlldyc7XG5pbXBvcnQge05nYkRhdGVwaWNrZXJOYXZpZ2F0aW9ufSBmcm9tICcuL2RhdGVwaWNrZXItbmF2aWdhdGlvbic7XG5pbXBvcnQge05nYklucHV0RGF0ZXBpY2tlcn0gZnJvbSAnLi9kYXRlcGlja2VyLWlucHV0JztcbmltcG9ydCB7TmdiRGF0ZXBpY2tlckRheVZpZXd9IGZyb20gJy4vZGF0ZXBpY2tlci1kYXktdmlldyc7XG5pbXBvcnQge05nYkRhdGVwaWNrZXJOYXZpZ2F0aW9uU2VsZWN0fSBmcm9tICcuL2RhdGVwaWNrZXItbmF2aWdhdGlvbi1zZWxlY3QnO1xuXG5leHBvcnQge05nYkRhdGVwaWNrZXIsIE5nYkRhdGVwaWNrZXJOYXZpZ2F0ZUV2ZW50fSBmcm9tICcuL2RhdGVwaWNrZXInO1xuZXhwb3J0IHtOZ2JJbnB1dERhdGVwaWNrZXJ9IGZyb20gJy4vZGF0ZXBpY2tlci1pbnB1dCc7XG5leHBvcnQge05nYkNhbGVuZGFyLCBOZ2JQZXJpb2QsIE5nYkNhbGVuZGFyR3JlZ29yaWFufSBmcm9tICcuL25nYi1jYWxlbmRhcic7XG5leHBvcnQge05nYkNhbGVuZGFySXNsYW1pY0NpdmlsfSBmcm9tICcuL2hpanJpL25nYi1jYWxlbmRhci1pc2xhbWljLWNpdmlsJztcbmV4cG9ydCB7TmdiQ2FsZW5kYXJJc2xhbWljVW1hbHF1cmF9IGZyb20gJy4vaGlqcmkvbmdiLWNhbGVuZGFyLWlzbGFtaWMtdW1hbHF1cmEnO1xuZXhwb3J0IHtOZ2JDYWxlbmRhclBlcnNpYW59IGZyb20gJy4vamFsYWxpL25nYi1jYWxlbmRhci1wZXJzaWFuJztcbmV4cG9ydCB7TmdiQ2FsZW5kYXJIZWJyZXd9IGZyb20gJy4vaGVicmV3L25nYi1jYWxlbmRhci1oZWJyZXcnO1xuZXhwb3J0IHtOZ2JEYXRlcGlja2VySTE4bkhlYnJld30gZnJvbSAnLi9oZWJyZXcvZGF0ZXBpY2tlci1pMThuLWhlYnJldyc7XG5leHBvcnQge05nYkRhdGVwaWNrZXJNb250aFZpZXd9IGZyb20gJy4vZGF0ZXBpY2tlci1tb250aC12aWV3JztcbmV4cG9ydCB7TmdiRGF0ZXBpY2tlckRheVZpZXd9IGZyb20gJy4vZGF0ZXBpY2tlci1kYXktdmlldyc7XG5leHBvcnQge05nYkRhdGVwaWNrZXJOYXZpZ2F0aW9ufSBmcm9tICcuL2RhdGVwaWNrZXItbmF2aWdhdGlvbic7XG5leHBvcnQge05nYkRhdGVwaWNrZXJOYXZpZ2F0aW9uU2VsZWN0fSBmcm9tICcuL2RhdGVwaWNrZXItbmF2aWdhdGlvbi1zZWxlY3QnO1xuZXhwb3J0IHtOZ2JEYXRlcGlja2VyQ29uZmlnfSBmcm9tICcuL2RhdGVwaWNrZXItY29uZmlnJztcbmV4cG9ydCB7TmdiRGF0ZXBpY2tlckkxOG59IGZyb20gJy4vZGF0ZXBpY2tlci1pMThuJztcbmV4cG9ydCB7TmdiRGF0ZVN0cnVjdH0gZnJvbSAnLi9uZ2ItZGF0ZS1zdHJ1Y3QnO1xuZXhwb3J0IHtOZ2JEYXRlfSBmcm9tICcuL25nYi1kYXRlJztcbmV4cG9ydCB7TmdiRGF0ZUFkYXB0ZXJ9IGZyb20gJy4vYWRhcHRlcnMvbmdiLWRhdGUtYWRhcHRlcic7XG5leHBvcnQge05nYkRhdGVOYXRpdmVBZGFwdGVyfSBmcm9tICcuL2FkYXB0ZXJzL25nYi1kYXRlLW5hdGl2ZS1hZGFwdGVyJztcbmV4cG9ydCB7TmdiRGF0ZU5hdGl2ZVVUQ0FkYXB0ZXJ9IGZyb20gJy4vYWRhcHRlcnMvbmdiLWRhdGUtbmF0aXZlLXV0Yy1hZGFwdGVyJztcbmV4cG9ydCB7TmdiRGF0ZVBhcnNlckZvcm1hdHRlcn0gZnJvbSAnLi9uZ2ItZGF0ZS1wYXJzZXItZm9ybWF0dGVyJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgTmdiRGF0ZXBpY2tlciwgTmdiRGF0ZXBpY2tlck1vbnRoVmlldywgTmdiRGF0ZXBpY2tlck5hdmlnYXRpb24sIE5nYkRhdGVwaWNrZXJOYXZpZ2F0aW9uU2VsZWN0LCBOZ2JEYXRlcGlja2VyRGF5VmlldyxcbiAgICBOZ2JJbnB1dERhdGVwaWNrZXJcbiAgXSxcbiAgZXhwb3J0czogW05nYkRhdGVwaWNrZXIsIE5nYklucHV0RGF0ZXBpY2tlcl0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlXSxcbiAgZW50cnlDb21wb25lbnRzOiBbTmdiRGF0ZXBpY2tlcl1cbn0pXG5leHBvcnQgY2xhc3MgTmdiRGF0ZXBpY2tlck1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JEYXRlcGlja2VyTW9kdWxlfTsgfVxufVxuIiwiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGxhY2VtZW50QXJyYXl9IGZyb20gJy4uL3V0aWwvcG9zaXRpb25pbmcnO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBzZXJ2aWNlIGZvciB0aGUgW2BOZ2JEcm9wZG93bmBdKCMvY29tcG9uZW50cy9kcm9wZG93bi9hcGkjTmdiRHJvcGRvd24pIGNvbXBvbmVudC5cbiAqXG4gKiBZb3UgY2FuIGluamVjdCB0aGlzIHNlcnZpY2UsIHR5cGljYWxseSBpbiB5b3VyIHJvb3QgY29tcG9uZW50LCBhbmQgY3VzdG9taXplIHRoZSB2YWx1ZXMgb2YgaXRzIHByb3BlcnRpZXMgaW5cbiAqIG9yZGVyIHRvIHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUgZHJvcGRvd25zIHVzZWQgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBOZ2JEcm9wZG93bkNvbmZpZyB7XG4gIGF1dG9DbG9zZTogYm9vbGVhbiB8ICdvdXRzaWRlJyB8ICdpbnNpZGUnID0gdHJ1ZTtcbiAgcGxhY2VtZW50OiBQbGFjZW1lbnRBcnJheSA9IFsnYm90dG9tLWxlZnQnLCAnYm90dG9tLXJpZ2h0JywgJ3RvcC1sZWZ0JywgJ3RvcC1yaWdodCddO1xuICBjb250YWluZXI6IG51bGwgfCAnYm9keSc7XG59XG4iLCJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPcHRpb25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1N1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7UGxhY2VtZW50LCBQbGFjZW1lbnRBcnJheSwgcG9zaXRpb25FbGVtZW50c30gZnJvbSAnLi4vdXRpbC9wb3NpdGlvbmluZyc7XG5pbXBvcnQge25nYkF1dG9DbG9zZX0gZnJvbSAnLi4vdXRpbC9hdXRvY2xvc2UnO1xuaW1wb3J0IHtLZXl9IGZyb20gJy4uL3V0aWwva2V5JztcblxuaW1wb3J0IHtOZ2JEcm9wZG93bkNvbmZpZ30gZnJvbSAnLi9kcm9wZG93bi1jb25maWcnO1xuXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJy5uYXZiYXInfSlcbmV4cG9ydCBjbGFzcyBOZ2JOYXZiYXIge1xufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHlvdSBzaG91bGQgcHV0IHB1dCBvbiBhIGRyb3Bkb3duIGl0ZW0gdG8gZW5hYmxlIGtleWJvYXJkIG5hdmlnYXRpb24uXG4gKiBBcnJvdyBrZXlzIHdpbGwgbW92ZSBmb2N1cyBiZXR3ZWVuIGl0ZW1zIG1hcmtlZCB3aXRoIHRoaXMgZGlyZWN0aXZlLlxuICpcbiAqIEBzaW5jZSA0LjEuMFxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ1tuZ2JEcm9wZG93bkl0ZW1dJywgaG9zdDogeydjbGFzcyc6ICdkcm9wZG93bi1pdGVtJywgJ1tjbGFzcy5kaXNhYmxlZF0nOiAnZGlzYWJsZWQnfX0pXG5leHBvcnQgY2xhc3MgTmdiRHJvcGRvd25JdGVtIHtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IDxhbnk+dmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSB0cnVlOyAgLy8gYWNjZXB0IGFuIGVtcHR5IGF0dHJpYnV0ZSBhcyB0cnVlXG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9kaXNhYmxlZDsgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cbn1cblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0aGF0IHdyYXBzIGRyb3Bkb3duIG1lbnUgY29udGVudCBhbmQgZHJvcGRvd24gaXRlbXMuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ2JEcm9wZG93bk1lbnVdJyxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuZHJvcGRvd24tbWVudV0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5zaG93XSc6ICdkcm9wZG93bi5pc09wZW4oKScsXG4gICAgJ1thdHRyLngtcGxhY2VtZW50XSc6ICdwbGFjZW1lbnQnLFxuICAgICcoa2V5ZG93bi5BcnJvd1VwKSc6ICdkcm9wZG93bi5vbktleURvd24oJGV2ZW50KScsXG4gICAgJyhrZXlkb3duLkFycm93RG93biknOiAnZHJvcGRvd24ub25LZXlEb3duKCRldmVudCknLFxuICAgICcoa2V5ZG93bi5Ib21lKSc6ICdkcm9wZG93bi5vbktleURvd24oJGV2ZW50KScsXG4gICAgJyhrZXlkb3duLkVuZCknOiAnZHJvcGRvd24ub25LZXlEb3duKCRldmVudCknLFxuICAgICcoa2V5ZG93bi5FbnRlciknOiAnZHJvcGRvd24ub25LZXlEb3duKCRldmVudCknLFxuICAgICcoa2V5ZG93bi5TcGFjZSknOiAnZHJvcGRvd24ub25LZXlEb3duKCRldmVudCknXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgTmdiRHJvcGRvd25NZW51IHtcbiAgcGxhY2VtZW50OiBQbGFjZW1lbnQgPSAnYm90dG9tJztcbiAgaXNPcGVuID0gZmFsc2U7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihOZ2JEcm9wZG93bkl0ZW0pIG1lbnVJdGVtczogUXVlcnlMaXN0PE5nYkRyb3Bkb3duSXRlbT47XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE5nYkRyb3Bkb3duKSkgcHVibGljIGRyb3Bkb3duOiBOZ2JEcm9wZG93bikge31cbn1cblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0byBtYXJrIGFuIGVsZW1lbnQgdG8gd2hpY2ggZHJvcGRvd24gbWVudSB3aWxsIGJlIGFuY2hvcmVkLlxuICpcbiAqIFRoaXMgaXMgYSBzaW1wbGUgdmVyc2lvbiBvZiB0aGUgYE5nYkRyb3Bkb3duVG9nZ2xlYCBkaXJlY3RpdmUuXG4gKiBJdCBwbGF5cyB0aGUgc2FtZSByb2xlLCBidXQgZG9lc24ndCBsaXN0ZW4gdG8gY2xpY2sgZXZlbnRzIHRvIHRvZ2dsZSBkcm9wZG93biBtZW51IHRodXMgZW5hYmxpbmcgc3VwcG9ydFxuICogZm9yIGV2ZW50cyBvdGhlciB0aGFuIGNsaWNrLlxuICpcbiAqIEBzaW5jZSAxLjEuMFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmdiRHJvcGRvd25BbmNob3JdJyxcbiAgaG9zdDogeydjbGFzcyc6ICdkcm9wZG93bi10b2dnbGUnLCAnYXJpYS1oYXNwb3B1cCc6ICd0cnVlJywgJ1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ2Ryb3Bkb3duLmlzT3BlbigpJ31cbn0pXG5leHBvcnQgY2xhc3MgTmdiRHJvcGRvd25BbmNob3Ige1xuICBhbmNob3JFbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBOZ2JEcm9wZG93bikpIHB1YmxpYyBkcm9wZG93bjogTmdiRHJvcGRvd24sXG4gICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIHRoaXMuYW5jaG9yRWwgPSBfZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgZ2V0TmF0aXZlRWxlbWVudCgpIHsgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDsgfVxufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRvIG1hcmsgYW4gZWxlbWVudCB0aGF0IHdpbGwgdG9nZ2xlIGRyb3Bkb3duIHZpYSB0aGUgYGNsaWNrYCBldmVudC5cbiAqXG4gKiBZb3UgY2FuIGFsc28gdXNlIGBOZ2JEcm9wZG93bkFuY2hvcmAgYXMgYW4gYWx0ZXJuYXRpdmUuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ2JEcm9wZG93blRvZ2dsZV0nLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ2Ryb3Bkb3duLXRvZ2dsZScsXG4gICAgJ2FyaWEtaGFzcG9wdXAnOiAndHJ1ZScsXG4gICAgJ1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ2Ryb3Bkb3duLmlzT3BlbigpJyxcbiAgICAnKGNsaWNrKSc6ICdkcm9wZG93bi50b2dnbGUoKScsXG4gICAgJyhrZXlkb3duLkFycm93VXApJzogJ2Ryb3Bkb3duLm9uS2V5RG93bigkZXZlbnQpJyxcbiAgICAnKGtleWRvd24uQXJyb3dEb3duKSc6ICdkcm9wZG93bi5vbktleURvd24oJGV2ZW50KScsXG4gICAgJyhrZXlkb3duLkhvbWUpJzogJ2Ryb3Bkb3duLm9uS2V5RG93bigkZXZlbnQpJyxcbiAgICAnKGtleWRvd24uRW5kKSc6ICdkcm9wZG93bi5vbktleURvd24oJGV2ZW50KSdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbe3Byb3ZpZGU6IE5nYkRyb3Bkb3duQW5jaG9yLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOZ2JEcm9wZG93blRvZ2dsZSl9XVxufSlcbmV4cG9ydCBjbGFzcyBOZ2JEcm9wZG93blRvZ2dsZSBleHRlbmRzIE5nYkRyb3Bkb3duQW5jaG9yIHtcbiAgY29uc3RydWN0b3IoQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE5nYkRyb3Bkb3duKSkgZHJvcGRvd246IE5nYkRyb3Bkb3duLCBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIHN1cGVyKGRyb3Bkb3duLCBlbGVtZW50UmVmKTtcbiAgfVxufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRoYXQgcHJvdmlkZXMgY29udGV4dHVhbCBvdmVybGF5cyBmb3IgZGlzcGxheWluZyBsaXN0cyBvZiBsaW5rcyBhbmQgbW9yZS5cbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbbmdiRHJvcGRvd25dJywgZXhwb3J0QXM6ICduZ2JEcm9wZG93bicsIGhvc3Q6IHsnW2NsYXNzLnNob3ddJzogJ2lzT3BlbigpJ319KVxuZXhwb3J0IGNsYXNzIE5nYkRyb3Bkb3duIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9jbG9zZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfem9uZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF9ib2R5Q29udGFpbmVyOiBIVE1MRWxlbWVudDtcblxuICBAQ29udGVudENoaWxkKE5nYkRyb3Bkb3duTWVudSkgcHJpdmF0ZSBfbWVudTogTmdiRHJvcGRvd25NZW51O1xuICBAQ29udGVudENoaWxkKE5nYkRyb3Bkb3duTWVudSwge3JlYWQ6IEVsZW1lbnRSZWZ9KSBwcml2YXRlIF9tZW51RWxlbWVudDogRWxlbWVudFJlZjtcblxuICBAQ29udGVudENoaWxkKE5nYkRyb3Bkb3duQW5jaG9yKSBwcml2YXRlIF9hbmNob3I6IE5nYkRyb3Bkb3duQW5jaG9yO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZHJvcGRvd24gc2hvdWxkIGJlIGNsb3NlZCB3aGVuIGNsaWNraW5nIG9uZSBvZiBkcm9wZG93biBpdGVtcyBvciBwcmVzc2luZyBFU0MuXG4gICAqXG4gICAqICogYHRydWVgIC0gdGhlIGRyb3Bkb3duIHdpbGwgY2xvc2Ugb24gYm90aCBvdXRzaWRlIGFuZCBpbnNpZGUgKG1lbnUpIGNsaWNrcy5cbiAgICogKiBgZmFsc2VgIC0gdGhlIGRyb3Bkb3duIGNhbiBvbmx5IGJlIGNsb3NlZCBtYW51YWxseSB2aWEgYGNsb3NlKClgIG9yIGB0b2dnbGUoKWAgbWV0aG9kcy5cbiAgICogKiBgXCJpbnNpZGVcImAgLSB0aGUgZHJvcGRvd24gd2lsbCBjbG9zZSBvbiBpbnNpZGUgbWVudSBjbGlja3MsIGJ1dCBub3Qgb3V0c2lkZSBjbGlja3MuXG4gICAqICogYFwib3V0c2lkZVwiYCAtIHRoZSBkcm9wZG93biB3aWxsIGNsb3NlIG9ubHkgb24gdGhlIG91dHNpZGUgY2xpY2tzIGFuZCBub3Qgb24gbWVudSBjbGlja3MuXG4gICAqL1xuICBASW5wdXQoKSBhdXRvQ2xvc2U6IGJvb2xlYW4gfCAnb3V0c2lkZScgfCAnaW5zaWRlJztcblxuICAvKipcbiAgICogRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgZHJvcGRvd24gbWVudSBpcyBvcGVuZWQgaW5pdGlhbGx5LlxuICAgKi9cbiAgQElucHV0KCdvcGVuJykgX29wZW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIHByZWZlcnJlZCBwbGFjZW1lbnQgb2YgdGhlIGRyb3Bkb3duLlxuICAgKlxuICAgKiBQb3NzaWJsZSB2YWx1ZXMgYXJlIGBcInRvcFwiYCwgYFwidG9wLWxlZnRcImAsIGBcInRvcC1yaWdodFwiYCwgYFwiYm90dG9tXCJgLCBgXCJib3R0b20tbGVmdFwiYCxcbiAgICogYFwiYm90dG9tLXJpZ2h0XCJgLCBgXCJsZWZ0XCJgLCBgXCJsZWZ0LXRvcFwiYCwgYFwibGVmdC1ib3R0b21cImAsIGBcInJpZ2h0XCJgLCBgXCJyaWdodC10b3BcImAsXG4gICAqIGBcInJpZ2h0LWJvdHRvbVwiYFxuICAgKlxuICAgKiBBY2NlcHRzIGFuIGFycmF5IG9mIHN0cmluZ3Mgb3IgYSBzdHJpbmcgd2l0aCBzcGFjZSBzZXBhcmF0ZWQgcG9zc2libGUgdmFsdWVzLlxuICAgKlxuICAgKiBUaGUgZGVmYXVsdCBvcmRlciBvZiBwcmVmZXJlbmNlIGlzIGBcImJvdHRvbS1sZWZ0IGJvdHRvbS1yaWdodCB0b3AtbGVmdCB0b3AtcmlnaHRcImBcbiAgICpcbiAgICogUGxlYXNlIHNlZSB0aGUgW3Bvc2l0aW9uaW5nIG92ZXJ2aWV3XSgjL3Bvc2l0aW9uaW5nKSBmb3IgbW9yZSBkZXRhaWxzLlxuICAgKi9cbiAgQElucHV0KCkgcGxhY2VtZW50OiBQbGFjZW1lbnRBcnJheTtcblxuICAvKipcbiAgKiBBIHNlbGVjdG9yIHNwZWNpZnlpbmcgdGhlIGVsZW1lbnQgdGhlIGRyb3Bkb3duIHNob3VsZCBiZSBhcHBlbmRlZCB0by5cbiAgKiBDdXJyZW50bHkgb25seSBzdXBwb3J0cyBcImJvZHlcIi5cbiAgKlxuICAqIEBzaW5jZSA0LjEuMFxuICAqL1xuICBASW5wdXQoKSBjb250YWluZXI6IG51bGwgfCAnYm9keSc7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBvciBkaXNhYmxlIHRoZSBkeW5hbWljIHBvc2l0aW9uaW5nXG4gICAqXG4gICAqIEBzaW5jZSA0LjIuMFxuICAgKi9cbiAgQElucHV0KCkgZGlzcGxheTogJ2R5bmFtaWMnIHwgJ3N0YXRpYyc7XG5cbiAgLyoqXG4gICAqIEFuIGV2ZW50IGZpcmVkIHdoZW4gdGhlIGRyb3Bkb3duIGlzIG9wZW5lZCBvciBjbG9zZWQuXG4gICAqXG4gICAqIFRoZSBldmVudCBwYXlsb2FkIGlzIGEgYGJvb2xlYW5gOlxuICAgKiAqIGB0cnVlYCAtIHRoZSBkcm9wZG93biB3YXMgb3BlbmVkXG4gICAqICogYGZhbHNlYCAtIHRoZSBkcm9wZG93biB3YXMgY2xvc2VkXG4gICAqL1xuICBAT3V0cHV0KCkgb3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZiwgY29uZmlnOiBOZ2JEcm9wZG93bkNvbmZpZywgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueSxcbiAgICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLCBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiwgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgIEBPcHRpb25hbCgpIG5nYk5hdmJhcjogTmdiTmF2YmFyKSB7XG4gICAgdGhpcy5wbGFjZW1lbnQgPSBjb25maWcucGxhY2VtZW50O1xuICAgIHRoaXMuY29udGFpbmVyID0gY29uZmlnLmNvbnRhaW5lcjtcbiAgICB0aGlzLmF1dG9DbG9zZSA9IGNvbmZpZy5hdXRvQ2xvc2U7XG5cbiAgICB0aGlzLmRpc3BsYXkgPSBuZ2JOYXZiYXIgPyAnc3RhdGljJyA6ICdkeW5hbWljJztcblxuICAgIHRoaXMuX3pvbmVTdWJzY3JpcHRpb24gPSBfbmdab25lLm9uU3RhYmxlLnN1YnNjcmliZSgoKSA9PiB7IHRoaXMuX3Bvc2l0aW9uTWVudSgpOyB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX2FwcGx5UGxhY2VtZW50Q2xhc3NlcygpO1xuICAgIGlmICh0aGlzLl9vcGVuKSB7XG4gICAgICB0aGlzLl9zZXRDbG9zZUhhbmRsZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmNvbnRhaW5lciAmJiB0aGlzLl9vcGVuKSB7XG4gICAgICB0aGlzLl9hcHBseUNvbnRhaW5lcih0aGlzLmNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMucGxhY2VtZW50ICYmICFjaGFuZ2VzLnBsYWNlbWVudC5pc0ZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLl9hcHBseVBsYWNlbWVudENsYXNzZXMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBkcm9wZG93biBtZW51IGlzIG9wZW4uXG4gICAqL1xuICBpc09wZW4oKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9vcGVuOyB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBkcm9wZG93biBtZW51LlxuICAgKi9cbiAgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX29wZW4pIHtcbiAgICAgIHRoaXMuX29wZW4gPSB0cnVlO1xuICAgICAgdGhpcy5fYXBwbHlDb250YWluZXIodGhpcy5jb250YWluZXIpO1xuICAgICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgICB0aGlzLl9zZXRDbG9zZUhhbmRsZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0Q2xvc2VIYW5kbGVycygpIHtcbiAgICBuZ2JBdXRvQ2xvc2UoXG4gICAgICAgIHRoaXMuX25nWm9uZSwgdGhpcy5fZG9jdW1lbnQsIHRoaXMuYXV0b0Nsb3NlLCAoKSA9PiB0aGlzLmNsb3NlKCksIHRoaXMuX2Nsb3NlZCQsXG4gICAgICAgIHRoaXMuX21lbnUgPyBbdGhpcy5fbWVudUVsZW1lbnQubmF0aXZlRWxlbWVudF0gOiBbXSwgdGhpcy5fYW5jaG9yID8gW3RoaXMuX2FuY2hvci5nZXROYXRpdmVFbGVtZW50KCldIDogW10sXG4gICAgICAgICcuZHJvcGRvd24taXRlbSwuZHJvcGRvd24tZGl2aWRlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgZHJvcGRvd24gbWVudS5cbiAgICovXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9vcGVuKSB7XG4gICAgICB0aGlzLl9vcGVuID0gZmFsc2U7XG4gICAgICB0aGlzLl9yZXNldENvbnRhaW5lcigpO1xuICAgICAgdGhpcy5fY2xvc2VkJC5uZXh0KCk7XG4gICAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgZHJvcGRvd24gbWVudS5cbiAgICovXG4gIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9yZXNldENvbnRhaW5lcigpO1xuXG4gICAgdGhpcy5fY2xvc2VkJC5uZXh0KCk7XG4gICAgdGhpcy5fem9uZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmRlcHJlY2F0aW9uXG4gICAgY29uc3Qga2V5ID0gZXZlbnQud2hpY2g7XG4gICAgY29uc3QgaXRlbUVsZW1lbnRzID0gdGhpcy5fZ2V0TWVudUVsZW1lbnRzKCk7XG5cbiAgICBsZXQgcG9zaXRpb24gPSAtMTtcbiAgICBsZXQgaXNFdmVudEZyb21JdGVtcyA9IGZhbHNlO1xuICAgIGNvbnN0IGlzRXZlbnRGcm9tVG9nZ2xlID0gdGhpcy5faXNFdmVudEZyb21Ub2dnbGUoZXZlbnQpO1xuXG4gICAgaWYgKCFpc0V2ZW50RnJvbVRvZ2dsZSAmJiBpdGVtRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICBpdGVtRWxlbWVudHMuZm9yRWFjaCgoaXRlbUVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChpdGVtRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgaXNFdmVudEZyb21JdGVtcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW1FbGVtZW50ID09PSB0aGlzLl9kb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgcG9zaXRpb24gPSBpbmRleDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gY2xvc2luZyBvbiBFbnRlciAvIFNwYWNlXG4gICAgaWYgKGtleSA9PT0gS2V5LlNwYWNlIHx8IGtleSA9PT0gS2V5LkVudGVyKSB7XG4gICAgICBpZiAoaXNFdmVudEZyb21JdGVtcyAmJiAodGhpcy5hdXRvQ2xvc2UgPT09IHRydWUgfHwgdGhpcy5hdXRvQ2xvc2UgPT09ICdpbnNpZGUnKSkge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gb3BlbmluZyAvIG5hdmlnYXRpbmdcbiAgICBpZiAoaXNFdmVudEZyb21Ub2dnbGUgfHwgaXNFdmVudEZyb21JdGVtcykge1xuICAgICAgdGhpcy5vcGVuKCk7XG5cbiAgICAgIGlmIChpdGVtRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgY2FzZSBLZXkuQXJyb3dEb3duOlxuICAgICAgICAgICAgcG9zaXRpb24gPSBNYXRoLm1pbihwb3NpdGlvbiArIDEsIGl0ZW1FbGVtZW50cy5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgS2V5LkFycm93VXA6XG4gICAgICAgICAgICBpZiAodGhpcy5faXNEcm9wdXAoKSAmJiBwb3NpdGlvbiA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgcG9zaXRpb24gPSBpdGVtRWxlbWVudHMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb3NpdGlvbiA9IE1hdGgubWF4KHBvc2l0aW9uIC0gMSwgMCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIEtleS5Ib21lOlxuICAgICAgICAgICAgcG9zaXRpb24gPSAwO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBLZXkuRW5kOlxuICAgICAgICAgICAgcG9zaXRpb24gPSBpdGVtRWxlbWVudHMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGl0ZW1FbGVtZW50c1twb3NpdGlvbl0uZm9jdXMoKTtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNEcm9wdXAoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkcm9wdXAnKTsgfVxuXG4gIHByaXZhdGUgX2lzRXZlbnRGcm9tVG9nZ2xlKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgcmV0dXJuIHRoaXMuX2FuY2hvci5nZXROYXRpdmVFbGVtZW50KCkuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE1lbnVFbGVtZW50cygpOiBIVE1MRWxlbWVudFtdIHtcbiAgICBpZiAodGhpcy5fbWVudSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9tZW51Lm1lbnVJdGVtcy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5kaXNhYmxlZCkubWFwKGl0ZW0gPT4gaXRlbS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcG9zaXRpb25NZW51KCkge1xuICAgIGlmICh0aGlzLmlzT3BlbigpICYmIHRoaXMuX21lbnUpIHtcbiAgICAgIHRoaXMuX2FwcGx5UGxhY2VtZW50Q2xhc3NlcyhcbiAgICAgICAgICB0aGlzLmRpc3BsYXkgPT09ICdkeW5hbWljJyA/XG4gICAgICAgICAgICAgIHBvc2l0aW9uRWxlbWVudHMoXG4gICAgICAgICAgICAgICAgICB0aGlzLl9hbmNob3IuYW5jaG9yRWwsIHRoaXMuX2JvZHlDb250YWluZXIgfHwgdGhpcy5fbWVudUVsZW1lbnQubmF0aXZlRWxlbWVudCwgdGhpcy5wbGFjZW1lbnQsXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lciA9PT0gJ2JvZHknKSA6XG4gICAgICAgICAgICAgIHRoaXMuX2dldEZpcnN0UGxhY2VtZW50KHRoaXMucGxhY2VtZW50KSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Rmlyc3RQbGFjZW1lbnQocGxhY2VtZW50OiBQbGFjZW1lbnRBcnJheSk6IFBsYWNlbWVudCB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocGxhY2VtZW50KSA/IHBsYWNlbWVudFswXSA6IHBsYWNlbWVudC5zcGxpdCgnICcpWzBdIGFzIFBsYWNlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0Q29udGFpbmVyKCkge1xuICAgIGNvbnN0IHJlbmRlcmVyID0gdGhpcy5fcmVuZGVyZXI7XG4gICAgaWYgKHRoaXMuX21lbnVFbGVtZW50KSB7XG4gICAgICBjb25zdCBkcm9wZG93bkVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBjb25zdCBkcm9wZG93bk1lbnVFbGVtZW50ID0gdGhpcy5fbWVudUVsZW1lbnQubmF0aXZlRWxlbWVudDtcblxuICAgICAgcmVuZGVyZXIuYXBwZW5kQ2hpbGQoZHJvcGRvd25FbGVtZW50LCBkcm9wZG93bk1lbnVFbGVtZW50KTtcbiAgICAgIHJlbmRlcmVyLnJlbW92ZVN0eWxlKGRyb3Bkb3duTWVudUVsZW1lbnQsICdwb3NpdGlvbicpO1xuICAgICAgcmVuZGVyZXIucmVtb3ZlU3R5bGUoZHJvcGRvd25NZW51RWxlbWVudCwgJ3RyYW5zZm9ybScpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fYm9keUNvbnRhaW5lcikge1xuICAgICAgcmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5fZG9jdW1lbnQuYm9keSwgdGhpcy5fYm9keUNvbnRhaW5lcik7XG4gICAgICB0aGlzLl9ib2R5Q29udGFpbmVyID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hcHBseUNvbnRhaW5lcihjb250YWluZXI6IG51bGwgfCAnYm9keScgPSBudWxsKSB7XG4gICAgdGhpcy5fcmVzZXRDb250YWluZXIoKTtcbiAgICBpZiAoY29udGFpbmVyID09PSAnYm9keScpIHtcbiAgICAgIGNvbnN0IHJlbmRlcmVyID0gdGhpcy5fcmVuZGVyZXI7XG4gICAgICBjb25zdCBkcm9wZG93bk1lbnVFbGVtZW50ID0gdGhpcy5fbWVudUVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgIGNvbnN0IGJvZHlDb250YWluZXIgPSB0aGlzLl9ib2R5Q29udGFpbmVyID0gdGhpcy5fYm9keUNvbnRhaW5lciB8fCByZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICAgICAgLy8gT3ZlcnJpZGUgc29tZSBzdHlsZXMgdG8gaGF2ZSB0aGUgcG9zaXRpb25uaW5nIHdvcmtpbmdcbiAgICAgIHJlbmRlcmVyLnNldFN0eWxlKGJvZHlDb250YWluZXIsICdwb3NpdGlvbicsICdhYnNvbHV0ZScpO1xuICAgICAgcmVuZGVyZXIuc2V0U3R5bGUoZHJvcGRvd25NZW51RWxlbWVudCwgJ3Bvc2l0aW9uJywgJ3N0YXRpYycpO1xuICAgICAgcmVuZGVyZXIuc2V0U3R5bGUoYm9keUNvbnRhaW5lciwgJ3otaW5kZXgnLCAnMTA1MCcpO1xuXG4gICAgICByZW5kZXJlci5hcHBlbmRDaGlsZChib2R5Q29udGFpbmVyLCBkcm9wZG93bk1lbnVFbGVtZW50KTtcbiAgICAgIHJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuX2RvY3VtZW50LmJvZHksIGJvZHlDb250YWluZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5UGxhY2VtZW50Q2xhc3NlcyhwbGFjZW1lbnQ/OiBQbGFjZW1lbnQpIHtcbiAgICBpZiAodGhpcy5fbWVudSkge1xuICAgICAgaWYgKCFwbGFjZW1lbnQpIHtcbiAgICAgICAgcGxhY2VtZW50ID0gdGhpcy5fZ2V0Rmlyc3RQbGFjZW1lbnQodGhpcy5wbGFjZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZW5kZXJlciA9IHRoaXMuX3JlbmRlcmVyO1xuICAgICAgY29uc3QgZHJvcGRvd25FbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAvLyByZW1vdmUgdGhlIGN1cnJlbnQgcGxhY2VtZW50IGNsYXNzZXNcbiAgICAgIHJlbmRlcmVyLnJlbW92ZUNsYXNzKGRyb3Bkb3duRWxlbWVudCwgJ2Ryb3B1cCcpO1xuICAgICAgcmVuZGVyZXIucmVtb3ZlQ2xhc3MoZHJvcGRvd25FbGVtZW50LCAnZHJvcGRvd24nKTtcbiAgICAgIHRoaXMuX21lbnUucGxhY2VtZW50ID0gcGxhY2VtZW50O1xuXG4gICAgICAvKlxuICAgICAgKiBhcHBseSB0aGUgbmV3IHBsYWNlbWVudFxuICAgICAgKiBpbiBjYXNlIG9mIHRvcCB1c2UgdXAtYXJyb3cgb3IgZG93bi1hcnJvdyBvdGhlcndpc2VcbiAgICAgICovXG4gICAgICBjb25zdCBkcm9wZG93bkNsYXNzID0gcGxhY2VtZW50LnNlYXJjaCgnXnRvcCcpICE9PSAtMSA/ICdkcm9wdXAnIDogJ2Ryb3Bkb3duJztcbiAgICAgIHJlbmRlcmVyLmFkZENsYXNzKGRyb3Bkb3duRWxlbWVudCwgZHJvcGRvd25DbGFzcyk7XG5cbiAgICAgIGNvbnN0IGJvZHlDb250YWluZXIgPSB0aGlzLl9ib2R5Q29udGFpbmVyO1xuICAgICAgaWYgKGJvZHlDb250YWluZXIpIHtcbiAgICAgICAgcmVuZGVyZXIucmVtb3ZlQ2xhc3MoYm9keUNvbnRhaW5lciwgJ2Ryb3B1cCcpO1xuICAgICAgICByZW5kZXJlci5yZW1vdmVDbGFzcyhib2R5Q29udGFpbmVyLCAnZHJvcGRvd24nKTtcbiAgICAgICAgcmVuZGVyZXIuYWRkQ2xhc3MoYm9keUNvbnRhaW5lciwgZHJvcGRvd25DbGFzcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQge05nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE5nYkRyb3Bkb3duLFxuICBOZ2JEcm9wZG93bkFuY2hvcixcbiAgTmdiRHJvcGRvd25Ub2dnbGUsXG4gIE5nYkRyb3Bkb3duTWVudSxcbiAgTmdiRHJvcGRvd25JdGVtLFxuICBOZ2JOYXZiYXJcbn0gZnJvbSAnLi9kcm9wZG93bic7XG5cbmV4cG9ydCB7TmdiRHJvcGRvd24sIE5nYkRyb3Bkb3duQW5jaG9yLCBOZ2JEcm9wZG93blRvZ2dsZSwgTmdiRHJvcGRvd25NZW51LCBOZ2JEcm9wZG93bkl0ZW19IGZyb20gJy4vZHJvcGRvd24nO1xuZXhwb3J0IHtOZ2JEcm9wZG93bkNvbmZpZ30gZnJvbSAnLi9kcm9wZG93bi1jb25maWcnO1xuXG5jb25zdCBOR0JfRFJPUERPV05fRElSRUNUSVZFUyA9XG4gICAgW05nYkRyb3Bkb3duLCBOZ2JEcm9wZG93bkFuY2hvciwgTmdiRHJvcGRvd25Ub2dnbGUsIE5nYkRyb3Bkb3duTWVudSwgTmdiRHJvcGRvd25JdGVtLCBOZ2JOYXZiYXJdO1xuXG5ATmdNb2R1bGUoe2RlY2xhcmF0aW9uczogTkdCX0RST1BET1dOX0RJUkVDVElWRVMsIGV4cG9ydHM6IE5HQl9EUk9QRE9XTl9ESVJFQ1RJVkVTfSlcbmV4cG9ydCBjbGFzcyBOZ2JEcm9wZG93bk1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JEcm9wZG93bk1vZHVsZX07IH1cbn1cbiIsImltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0b3J9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIE9wdGlvbnMgYXZhaWxhYmxlIHdoZW4gb3BlbmluZyBuZXcgbW9kYWwgd2luZG93cyB3aXRoIGBOZ2JNb2RhbC5vcGVuKClgIG1ldGhvZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZ2JNb2RhbE9wdGlvbnMge1xuICAvKipcbiAgICogYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlIHZhbHVlIHRvIHNldCBvbiB0aGUgbW9kYWwgd2luZG93LlxuICAgKlxuICAgKiBAc2luY2UgMi4yLjBcbiAgICovXG4gIGFyaWFMYWJlbGxlZEJ5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBiYWNrZHJvcCBlbGVtZW50IHdpbGwgYmUgY3JlYXRlZCBmb3IgYSBnaXZlbiBtb2RhbC5cbiAgICpcbiAgICogQWx0ZXJuYXRpdmVseSwgc3BlY2lmeSBgJ3N0YXRpYydgIGZvciBhIGJhY2tkcm9wIHdoaWNoIGRvZXNuJ3QgY2xvc2UgdGhlIG1vZGFsIG9uIGNsaWNrLlxuICAgKlxuICAgKiBEZWZhdWx0IHZhbHVlIGlzIGB0cnVlYC5cbiAgICovXG4gIGJhY2tkcm9wPzogYm9vbGVhbiB8ICdzdGF0aWMnO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayByaWdodCBiZWZvcmUgdGhlIG1vZGFsIHdpbGwgYmUgZGlzbWlzc2VkLlxuICAgKlxuICAgKiBJZiB0aGlzIGZ1bmN0aW9uIHJldHVybnM6XG4gICAqICogYGZhbHNlYFxuICAgKiAqIGEgcHJvbWlzZSByZXNvbHZlZCB3aXRoIGBmYWxzZWBcbiAgICogKiBhIHByb21pc2UgdGhhdCBpcyByZWplY3RlZFxuICAgKlxuICAgKiB0aGVuIHRoZSBtb2RhbCB3b24ndCBiZSBkaXNtaXNzZWQuXG4gICAqL1xuICBiZWZvcmVEaXNtaXNzPzogKCkgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIG1vZGFsIHdpbGwgYmUgY2VudGVyZWQgdmVydGljYWxseS5cbiAgICpcbiAgICogRGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLlxuICAgKlxuICAgKiBAc2luY2UgMS4xLjBcbiAgICovXG4gIGNlbnRlcmVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBzZWxlY3RvciBzcGVjaWZ5aW5nIHRoZSBlbGVtZW50IGFsbCBuZXcgbW9kYWwgd2luZG93cyBzaG91bGQgYmUgYXBwZW5kZWQgdG8uXG4gICAqXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIHdpbGwgYmUgYGJvZHlgLlxuICAgKi9cbiAgY29udGFpbmVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYEluamVjdG9yYCB0byB1c2UgZm9yIG1vZGFsIGNvbnRlbnQuXG4gICAqL1xuICBpbmplY3Rvcj86IEluamVjdG9yO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBtb2RhbCB3aWxsIGJlIGNsb3NlZCB3aGVuIGBFc2NhcGVgIGtleSBpcyBwcmVzc2VkXG4gICAqXG4gICAqIERlZmF1bHQgdmFsdWUgaXMgYHRydWVgLlxuICAgKi9cbiAga2V5Ym9hcmQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaXplIG9mIGEgbmV3IG1vZGFsIHdpbmRvdy5cbiAgICovXG4gIHNpemU/OiAnc20nIHwgJ2xnJztcblxuICAvKipcbiAgICogQSBjdXN0b20gY2xhc3MgdG8gYXBwZW5kIHRvIHRoZSBtb2RhbCB3aW5kb3cuXG4gICAqL1xuICB3aW5kb3dDbGFzcz86IHN0cmluZztcblxuICAvKipcbiAgICogQSBjdXN0b20gY2xhc3MgdG8gYXBwZW5kIHRvIHRoZSBtb2RhbCBiYWNrZHJvcC5cbiAgICpcbiAgICogQHNpbmNlIDEuMS4wXG4gICAqL1xuICBiYWNrZHJvcENsYXNzPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBzZXJ2aWNlIGZvciB0aGUgW2BOZ2JNb2RhbGBdKCMvY29tcG9uZW50cy9tb2RhbC9hcGkjTmdiTW9kYWwpIHNlcnZpY2UuXG4gKlxuICogWW91IGNhbiBpbmplY3QgdGhpcyBzZXJ2aWNlLCB0eXBpY2FsbHkgaW4geW91ciByb290IGNvbXBvbmVudCwgYW5kIGN1c3RvbWl6ZSB0aGUgdmFsdWVzIG9mIGl0cyBwcm9wZXJ0aWVzIGluXG4gKiBvcmRlciB0byBwcm92aWRlIGRlZmF1bHQgdmFsdWVzIGZvciBhbGwgbW9kYWxzIHVzZWQgaW4gdGhlIGFwcGxpY2F0aW9uLlxuKlxuKiBAc2luY2UgMy4xLjBcbiovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBOZ2JNb2RhbENvbmZpZyBpbXBsZW1lbnRzIE5nYk1vZGFsT3B0aW9ucyB7XG4gIGJhY2tkcm9wOiBib29sZWFuIHwgJ3N0YXRpYycgPSB0cnVlO1xuICBrZXlib2FyZCA9IHRydWU7XG59XG4iLCJpbXBvcnQge1xuICBJbmplY3RvcixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFJlbmRlcmVyMixcbiAgQ29tcG9uZW50UmVmLFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIEFwcGxpY2F0aW9uUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgQ29udGVudFJlZiB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBub2RlczogYW55W10sIHB1YmxpYyB2aWV3UmVmPzogVmlld1JlZiwgcHVibGljIGNvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxhbnk+KSB7fVxufVxuXG5leHBvcnQgY2xhc3MgUG9wdXBTZXJ2aWNlPFQ+IHtcbiAgcHJpdmF0ZSBfd2luZG93UmVmOiBDb21wb25lbnRSZWY8VD47XG4gIHByaXZhdGUgX2NvbnRlbnRSZWY6IENvbnRlbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIF90eXBlOiBhbnksIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgcHJpdmF0ZSBfYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmKSB7fVxuXG4gIG9wZW4oY29udGVudD86IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4sIGNvbnRleHQ/OiBhbnkpOiBDb21wb25lbnRSZWY8VD4ge1xuICAgIGlmICghdGhpcy5fd2luZG93UmVmKSB7XG4gICAgICB0aGlzLl9jb250ZW50UmVmID0gdGhpcy5fZ2V0Q29udGVudFJlZihjb250ZW50LCBjb250ZXh0KTtcbiAgICAgIHRoaXMuX3dpbmRvd1JlZiA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgICAgIHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeTxUPih0aGlzLl90eXBlKSwgMCwgdGhpcy5faW5qZWN0b3IsXG4gICAgICAgICAgdGhpcy5fY29udGVudFJlZi5ub2Rlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvd1JlZjtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIGlmICh0aGlzLl93aW5kb3dSZWYpIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYucmVtb3ZlKHRoaXMuX3ZpZXdDb250YWluZXJSZWYuaW5kZXhPZih0aGlzLl93aW5kb3dSZWYuaG9zdFZpZXcpKTtcbiAgICAgIHRoaXMuX3dpbmRvd1JlZiA9IG51bGw7XG5cbiAgICAgIGlmICh0aGlzLl9jb250ZW50UmVmLnZpZXdSZWYpIHtcbiAgICAgICAgdGhpcy5fYXBwbGljYXRpb25SZWYuZGV0YWNoVmlldyh0aGlzLl9jb250ZW50UmVmLnZpZXdSZWYpO1xuICAgICAgICB0aGlzLl9jb250ZW50UmVmLnZpZXdSZWYuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLl9jb250ZW50UmVmID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRDb250ZW50UmVmKGNvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4sIGNvbnRleHQ/OiBhbnkpOiBDb250ZW50UmVmIHtcbiAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgIHJldHVybiBuZXcgQ29udGVudFJlZihbXSk7XG4gICAgfSBlbHNlIGlmIChjb250ZW50IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcbiAgICAgIGNvbnN0IHZpZXdSZWYgPSBjb250ZW50LmNyZWF0ZUVtYmVkZGVkVmlldyhjb250ZXh0KTtcbiAgICAgIHRoaXMuX2FwcGxpY2F0aW9uUmVmLmF0dGFjaFZpZXcodmlld1JlZik7XG4gICAgICByZXR1cm4gbmV3IENvbnRlbnRSZWYoW3ZpZXdSZWYucm9vdE5vZGVzXSwgdmlld1JlZik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgQ29udGVudFJlZihbW3RoaXMuX3JlbmRlcmVyLmNyZWF0ZVRleHQoYCR7Y29udGVudH1gKV1dKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG5cblxuLyoqIFR5cGUgZm9yIHRoZSBjYWxsYmFjayB1c2VkIHRvIHJldmVydCB0aGUgc2Nyb2xsYmFyIGNvbXBlbnNhdGlvbi4gKi9cbmV4cG9ydCB0eXBlIENvbXBlbnNhdGlvblJldmVydGVyID0gKCkgPT4gdm9pZDtcblxuXG5cbi8qKlxuICogVXRpbGl0eSB0byBoYW5kbGUgdGhlIHNjcm9sbGJhci5cbiAqXG4gKiBJdCBhbGxvd3MgdG8gY29tcGVuc2F0ZSB0aGUgbGFjayBvZiBhIHZlcnRpY2FsIHNjcm9sbGJhciBieSBhZGRpbmcgYW5cbiAqIGVxdWl2YWxlbnQgcGFkZGluZyBvbiB0aGUgcmlnaHQgb2YgdGhlIGJvZHksIGFuZCB0byByZW1vdmUgdGhpcyBjb21wZW5zYXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFNjcm9sbEJhciB7XG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnkpIHt9XG5cbiAgLyoqXG4gICAqIERldGVjdHMgaWYgYSBzY3JvbGxiYXIgaXMgcHJlc2VudCBhbmQgaWYgeWVzLCBhbHJlYWR5IGNvbXBlbnNhdGVzIGZvciBpdHNcbiAgICogcmVtb3ZhbCBieSBhZGRpbmcgYW4gZXF1aXZhbGVudCBwYWRkaW5nIG9uIHRoZSByaWdodCBvZiB0aGUgYm9keS5cbiAgICpcbiAgICogQHJldHVybiBhIGNhbGxiYWNrIHVzZWQgdG8gcmV2ZXJ0IHRoZSBjb21wZW5zYXRpb24gKG5vb3AgaWYgdGhlcmUgd2FzIG5vbmUsXG4gICAqIG90aGVyd2lzZSBhIGZ1bmN0aW9uIHJlbW92aW5nIHRoZSBwYWRkaW5nKVxuICAgKi9cbiAgY29tcGVuc2F0ZSgpOiBDb21wZW5zYXRpb25SZXZlcnRlciB7IHJldHVybiAhdGhpcy5faXNQcmVzZW50KCkgPyBub29wIDogdGhpcy5fYWRqdXN0Qm9keSh0aGlzLl9nZXRXaWR0aCgpKTsgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcGFkZGluZyBvZiB0aGUgZ2l2ZW4gd2lkdGggb24gdGhlIHJpZ2h0IG9mIHRoZSBib2R5LlxuICAgKlxuICAgKiBAcmV0dXJuIGEgY2FsbGJhY2sgdXNlZCB0byByZXZlcnQgdGhlIHBhZGRpbmcgdG8gaXRzIHByZXZpb3VzIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIF9hZGp1c3RCb2R5KHdpZHRoOiBudW1iZXIpOiBDb21wZW5zYXRpb25SZXZlcnRlciB7XG4gICAgY29uc3QgYm9keSA9IHRoaXMuX2RvY3VtZW50LmJvZHk7XG4gICAgY29uc3QgdXNlclNldFBhZGRpbmcgPSBib2R5LnN0eWxlLnBhZGRpbmdSaWdodDtcbiAgICBjb25zdCBwYWRkaW5nQW1vdW50ID0gcGFyc2VGbG9hdCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShib2R5KVsncGFkZGluZy1yaWdodCddKTtcbiAgICBib2R5LnN0eWxlWydwYWRkaW5nLXJpZ2h0J10gPSBgJHtwYWRkaW5nQW1vdW50ICsgd2lkdGh9cHhgO1xuICAgIHJldHVybiAoKSA9PiBib2R5LnN0eWxlWydwYWRkaW5nLXJpZ2h0J10gPSB1c2VyU2V0UGFkZGluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBUZWxscyB3aGV0aGVyIGEgc2Nyb2xsYmFyIGlzIGN1cnJlbnRseSBwcmVzZW50IG9uIHRoZSBib2R5LlxuICAgKlxuICAgKiBAcmV0dXJuIHRydWUgaWYgc2Nyb2xsYmFyIGlzIHByZXNlbnQsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgcHJpdmF0ZSBfaXNQcmVzZW50KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlY3QgPSB0aGlzLl9kb2N1bWVudC5ib2R5LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHJldHVybiByZWN0LmxlZnQgKyByZWN0LnJpZ2h0IDwgd2luZG93LmlubmVyV2lkdGg7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyBhbmQgcmV0dXJucyB0aGUgd2lkdGggb2YgYSBzY3JvbGxiYXIuXG4gICAqXG4gICAqIEByZXR1cm4gdGhlIHdpZHRoIG9mIGEgc2Nyb2xsYmFyIG9uIHRoaXMgcGFnZVxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0V2lkdGgoKTogbnVtYmVyIHtcbiAgICBjb25zdCBtZWFzdXJlciA9IHRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIG1lYXN1cmVyLmNsYXNzTmFtZSA9ICdtb2RhbC1zY3JvbGxiYXItbWVhc3VyZSc7XG5cbiAgICBjb25zdCBib2R5ID0gdGhpcy5fZG9jdW1lbnQuYm9keTtcbiAgICBib2R5LmFwcGVuZENoaWxkKG1lYXN1cmVyKTtcbiAgICBjb25zdCB3aWR0aCA9IG1lYXN1cmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIC0gbWVhc3VyZXIuY2xpZW50V2lkdGg7XG4gICAgYm9keS5yZW1vdmVDaGlsZChtZWFzdXJlcik7XG5cbiAgICByZXR1cm4gd2lkdGg7XG4gIH1cbn1cbiIsImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nYi1tb2RhbC1iYWNrZHJvcCcsXG4gIHRlbXBsYXRlOiAnJyxcbiAgaG9zdDpcbiAgICAgIHsnW2NsYXNzXSc6ICdcIm1vZGFsLWJhY2tkcm9wIGZhZGUgc2hvd1wiICsgKGJhY2tkcm9wQ2xhc3MgPyBcIiBcIiArIGJhY2tkcm9wQ2xhc3MgOiBcIlwiKScsICdzdHlsZSc6ICd6LWluZGV4OiAxMDUwJ31cbn0pXG5leHBvcnQgY2xhc3MgTmdiTW9kYWxCYWNrZHJvcCB7XG4gIEBJbnB1dCgpIGJhY2tkcm9wQ2xhc3M6IHN0cmluZztcbn1cbiIsImltcG9ydCB7Q29tcG9uZW50UmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtOZ2JNb2RhbEJhY2tkcm9wfSBmcm9tICcuL21vZGFsLWJhY2tkcm9wJztcbmltcG9ydCB7TmdiTW9kYWxXaW5kb3d9IGZyb20gJy4vbW9kYWwtd2luZG93JztcblxuaW1wb3J0IHtDb250ZW50UmVmfSBmcm9tICcuLi91dGlsL3BvcHVwJztcblxuLyoqXG4gKiBBIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudGx5IG9wZW5lZCAoYWN0aXZlKSBtb2RhbC5cbiAqXG4gKiBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBjYW4gYmUgaW5qZWN0ZWQgaW50byB5b3VyIGNvbXBvbmVudCBwYXNzZWQgYXMgbW9kYWwgY29udGVudC5cbiAqIFNvIHlvdSBjYW4gYC5jbG9zZSgpYCBvciBgLmRpc21pc3MoKWAgdGhlIG1vZGFsIHdpbmRvdyBmcm9tIHlvdXIgY29tcG9uZW50LlxuICovXG5leHBvcnQgY2xhc3MgTmdiQWN0aXZlTW9kYWwge1xuICAvKipcbiAgICogQ2xvc2VzIHRoZSBtb2RhbCB3aXRoIGFuIG9wdGlvbmFsIGByZXN1bHRgIHZhbHVlLlxuICAgKlxuICAgKiBUaGUgYE5nYk1vYmFsUmVmLnJlc3VsdGAgcHJvbWlzZSB3aWxsIGJlIHJlc29sdmVkIHdpdGggdGhlIHByb3ZpZGVkIHZhbHVlLlxuICAgKi9cbiAgY2xvc2UocmVzdWx0PzogYW55KTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBEaXNtaXNzZXMgdGhlIG1vZGFsIHdpdGggYW4gb3B0aW9uYWwgYHJlYXNvbmAgdmFsdWUuXG4gICAqXG4gICAqIFRoZSBgTmdiTW9kYWxSZWYucmVzdWx0YCBwcm9taXNlIHdpbGwgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgcHJvdmlkZWQgdmFsdWUuXG4gICAqL1xuICBkaXNtaXNzKHJlYXNvbj86IGFueSk6IHZvaWQge31cbn1cblxuLyoqXG4gKiBBIHJlZmVyZW5jZSB0byB0aGUgbmV3bHkgb3BlbmVkIG1vZGFsIHJldHVybmVkIGJ5IHRoZSBgTmdiTW9kYWwub3BlbigpYCBtZXRob2QuXG4gKi9cbmV4cG9ydCBjbGFzcyBOZ2JNb2RhbFJlZiB7XG4gIHByaXZhdGUgX3Jlc29sdmU6IChyZXN1bHQ/OiBhbnkpID0+IHZvaWQ7XG4gIHByaXZhdGUgX3JlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZDtcblxuICAvKipcbiAgICogVGhlIGluc3RhbmNlIG9mIGEgY29tcG9uZW50IHVzZWQgZm9yIHRoZSBtb2RhbCBjb250ZW50LlxuICAgKlxuICAgKiBXaGVuIGEgYFRlbXBsYXRlUmVmYCBpcyB1c2VkIGFzIHRoZSBjb250ZW50LCB3aWxsIHJldHVybiBgdW5kZWZpbmVkYC5cbiAgICovXG4gIGdldCBjb21wb25lbnRJbnN0YW5jZSgpOiBhbnkge1xuICAgIGlmICh0aGlzLl9jb250ZW50UmVmLmNvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRSZWYuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdoZW4gdGhlIG1vZGFsIGlzIGNsb3NlZCBhbmQgcmVqZWN0ZWQgd2hlbiB0aGUgbW9kYWwgaXMgZGlzbWlzc2VkLlxuICAgKi9cbiAgcmVzdWx0OiBQcm9taXNlPGFueT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIF93aW5kb3dDbXB0UmVmOiBDb21wb25lbnRSZWY8TmdiTW9kYWxXaW5kb3c+LCBwcml2YXRlIF9jb250ZW50UmVmOiBDb250ZW50UmVmLFxuICAgICAgcHJpdmF0ZSBfYmFja2Ryb3BDbXB0UmVmPzogQ29tcG9uZW50UmVmPE5nYk1vZGFsQmFja2Ryb3A+LCBwcml2YXRlIF9iZWZvcmVEaXNtaXNzPzogRnVuY3Rpb24pIHtcbiAgICBfd2luZG93Q21wdFJlZi5pbnN0YW5jZS5kaXNtaXNzRXZlbnQuc3Vic2NyaWJlKChyZWFzb246IGFueSkgPT4geyB0aGlzLmRpc21pc3MocmVhc29uKTsgfSk7XG5cbiAgICB0aGlzLnJlc3VsdCA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuX3Jlc29sdmUgPSByZXNvbHZlO1xuICAgICAgdGhpcy5fcmVqZWN0ID0gcmVqZWN0O1xuICAgIH0pO1xuICAgIHRoaXMucmVzdWx0LnRoZW4obnVsbCwgKCkgPT4ge30pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgbW9kYWwgd2l0aCBhbiBvcHRpb25hbCBgcmVzdWx0YCB2YWx1ZS5cbiAgICpcbiAgICogVGhlIGBOZ2JNb2JhbFJlZi5yZXN1bHRgIHByb21pc2Ugd2lsbCBiZSByZXNvbHZlZCB3aXRoIHRoZSBwcm92aWRlZCB2YWx1ZS5cbiAgICovXG4gIGNsb3NlKHJlc3VsdD86IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93aW5kb3dDbXB0UmVmKSB7XG4gICAgICB0aGlzLl9yZXNvbHZlKHJlc3VsdCk7XG4gICAgICB0aGlzLl9yZW1vdmVNb2RhbEVsZW1lbnRzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGlzbWlzcyhyZWFzb24/OiBhbnkpIHtcbiAgICB0aGlzLl9yZWplY3QocmVhc29uKTtcbiAgICB0aGlzLl9yZW1vdmVNb2RhbEVsZW1lbnRzKCk7XG4gIH1cblxuICAvKipcbiAgICogRGlzbWlzc2VzIHRoZSBtb2RhbCB3aXRoIGFuIG9wdGlvbmFsIGByZWFzb25gIHZhbHVlLlxuICAgKlxuICAgKiBUaGUgYE5nYk1vZGFsUmVmLnJlc3VsdGAgcHJvbWlzZSB3aWxsIGJlIHJlamVjdGVkIHdpdGggdGhlIHByb3ZpZGVkIHZhbHVlLlxuICAgKi9cbiAgZGlzbWlzcyhyZWFzb24/OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fd2luZG93Q21wdFJlZikge1xuICAgICAgaWYgKCF0aGlzLl9iZWZvcmVEaXNtaXNzKSB7XG4gICAgICAgIHRoaXMuX2Rpc21pc3MocmVhc29uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRpc21pc3MgPSB0aGlzLl9iZWZvcmVEaXNtaXNzKCk7XG4gICAgICAgIGlmIChkaXNtaXNzICYmIGRpc21pc3MudGhlbikge1xuICAgICAgICAgIGRpc21pc3MudGhlbihcbiAgICAgICAgICAgICAgcmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fZGlzbWlzcyhyZWFzb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKCkgPT4ge30pO1xuICAgICAgICB9IGVsc2UgaWYgKGRpc21pc3MgIT09IGZhbHNlKSB7XG4gICAgICAgICAgdGhpcy5fZGlzbWlzcyhyZWFzb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlTW9kYWxFbGVtZW50cygpIHtcbiAgICBjb25zdCB3aW5kb3dOYXRpdmVFbCA9IHRoaXMuX3dpbmRvd0NtcHRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgICB3aW5kb3dOYXRpdmVFbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHdpbmRvd05hdGl2ZUVsKTtcbiAgICB0aGlzLl93aW5kb3dDbXB0UmVmLmRlc3Ryb3koKTtcblxuICAgIGlmICh0aGlzLl9iYWNrZHJvcENtcHRSZWYpIHtcbiAgICAgIGNvbnN0IGJhY2tkcm9wTmF0aXZlRWwgPSB0aGlzLl9iYWNrZHJvcENtcHRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgICAgIGJhY2tkcm9wTmF0aXZlRWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiYWNrZHJvcE5hdGl2ZUVsKTtcbiAgICAgIHRoaXMuX2JhY2tkcm9wQ21wdFJlZi5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NvbnRlbnRSZWYgJiYgdGhpcy5fY29udGVudFJlZi52aWV3UmVmKSB7XG4gICAgICB0aGlzLl9jb250ZW50UmVmLnZpZXdSZWYuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHRoaXMuX3dpbmRvd0NtcHRSZWYgPSBudWxsO1xuICAgIHRoaXMuX2JhY2tkcm9wQ21wdFJlZiA9IG51bGw7XG4gICAgdGhpcy5fY29udGVudFJlZiA9IG51bGw7XG4gIH1cbn1cbiIsImV4cG9ydCBlbnVtIE1vZGFsRGlzbWlzc1JlYXNvbnMge1xuICBCQUNLRFJPUF9DTElDSyxcbiAgRVNDXG59XG4iLCJpbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7Z2V0Rm9jdXNhYmxlQm91bmRhcnlFbGVtZW50c30gZnJvbSAnLi4vdXRpbC9mb2N1cy10cmFwJztcbmltcG9ydCB7TW9kYWxEaXNtaXNzUmVhc29uc30gZnJvbSAnLi9tb2RhbC1kaXNtaXNzLXJlYXNvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ItbW9kYWwtd2luZG93JyxcbiAgaG9zdDoge1xuICAgICdbY2xhc3NdJzogJ1wibW9kYWwgZmFkZSBzaG93IGQtYmxvY2tcIiArICh3aW5kb3dDbGFzcyA/IFwiIFwiICsgd2luZG93Q2xhc3MgOiBcIlwiKScsXG4gICAgJ3JvbGUnOiAnZGlhbG9nJyxcbiAgICAndGFiaW5kZXgnOiAnLTEnLFxuICAgICcoa2V5dXAuZXNjKSc6ICdlc2NLZXkoJGV2ZW50KScsXG4gICAgJyhjbGljayknOiAnYmFja2Ryb3BDbGljaygkZXZlbnQpJyxcbiAgICAnW2F0dHIuYXJpYS1tb2RhbF0nOiAndHJ1ZScsXG4gICAgJ1thdHRyLmFyaWEtbGFiZWxsZWRieV0nOiAnYXJpYUxhYmVsbGVkQnknLFxuICB9LFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW2NsYXNzXT1cIidtb2RhbC1kaWFsb2cnICsgKHNpemUgPyAnIG1vZGFsLScgKyBzaXplIDogJycpICsgKGNlbnRlcmVkID8gJyBtb2RhbC1kaWFsb2ctY2VudGVyZWQnIDogJycpXCIgcm9sZT1cImRvY3VtZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIGBcbn0pXG5leHBvcnQgY2xhc3MgTmdiTW9kYWxXaW5kb3cgaW1wbGVtZW50cyBPbkluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfZWxXaXRoRm9jdXM6IEVsZW1lbnQ7ICAvLyBlbGVtZW50IHRoYXQgaXMgZm9jdXNlZCBwcmlvciB0byBtb2RhbCBvcGVuaW5nXG5cbiAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZztcbiAgQElucHV0KCkgYmFja2Ryb3A6IGJvb2xlYW4gfCBzdHJpbmcgPSB0cnVlO1xuICBASW5wdXQoKSBjZW50ZXJlZDogc3RyaW5nO1xuICBASW5wdXQoKSBrZXlib2FyZCA9IHRydWU7XG4gIEBJbnB1dCgpIHNpemU6IHN0cmluZztcbiAgQElucHV0KCkgd2luZG93Q2xhc3M6IHN0cmluZztcblxuICBAT3V0cHV0KCdkaXNtaXNzJykgZGlzbWlzc0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnksIHByaXZhdGUgX2VsUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cblxuICBiYWNrZHJvcENsaWNrKCRldmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmJhY2tkcm9wID09PSB0cnVlICYmIHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQgPT09ICRldmVudC50YXJnZXQpIHtcbiAgICAgIHRoaXMuZGlzbWlzcyhNb2RhbERpc21pc3NSZWFzb25zLkJBQ0tEUk9QX0NMSUNLKTtcbiAgICB9XG4gIH1cblxuICBlc2NLZXkoJGV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMua2V5Ym9hcmQgJiYgISRldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICB0aGlzLmRpc21pc3MoTW9kYWxEaXNtaXNzUmVhc29ucy5FU0MpO1xuICAgIH1cbiAgfVxuXG4gIGRpc21pc3MocmVhc29uKTogdm9pZCB7IHRoaXMuZGlzbWlzc0V2ZW50LmVtaXQocmVhc29uKTsgfVxuXG4gIG5nT25Jbml0KCkgeyB0aGlzLl9lbFdpdGhGb2N1cyA9IHRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7IH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKCF0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICBjb25zdCBhdXRvRm9jdXNhYmxlID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGBbbmdiQXV0b2ZvY3VzXWApIGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3QgZmlyc3RGb2N1c2FibGUgPSBnZXRGb2N1c2FibGVCb3VuZGFyeUVsZW1lbnRzKHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQpWzBdO1xuXG4gICAgICBjb25zdCBlbGVtZW50VG9Gb2N1cyA9IGF1dG9Gb2N1c2FibGUgfHwgZmlyc3RGb2N1c2FibGUgfHwgdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgIGVsZW1lbnRUb0ZvY3VzLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgY29uc3QgYm9keSA9IHRoaXMuX2RvY3VtZW50LmJvZHk7XG4gICAgY29uc3QgZWxXaXRoRm9jdXMgPSB0aGlzLl9lbFdpdGhGb2N1cztcblxuICAgIGxldCBlbGVtZW50VG9Gb2N1cztcbiAgICBpZiAoZWxXaXRoRm9jdXMgJiYgZWxXaXRoRm9jdXNbJ2ZvY3VzJ10gJiYgYm9keS5jb250YWlucyhlbFdpdGhGb2N1cykpIHtcbiAgICAgIGVsZW1lbnRUb0ZvY3VzID0gZWxXaXRoRm9jdXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnRUb0ZvY3VzID0gYm9keTtcbiAgICB9XG4gICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcbiAgICB0aGlzLl9lbFdpdGhGb2N1cyA9IG51bGw7XG4gIH1cbn1cbiIsImltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0b3IsXG4gIFJlbmRlcmVyRmFjdG9yeTIsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7bmdiRm9jdXNUcmFwfSBmcm9tICcuLi91dGlsL2ZvY3VzLXRyYXAnO1xuaW1wb3J0IHtDb250ZW50UmVmfSBmcm9tICcuLi91dGlsL3BvcHVwJztcbmltcG9ydCB7U2Nyb2xsQmFyfSBmcm9tICcuLi91dGlsL3Njcm9sbGJhcic7XG5pbXBvcnQge2lzRGVmaW5lZCwgaXNTdHJpbmd9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQge05nYk1vZGFsQmFja2Ryb3B9IGZyb20gJy4vbW9kYWwtYmFja2Ryb3AnO1xuaW1wb3J0IHtOZ2JBY3RpdmVNb2RhbCwgTmdiTW9kYWxSZWZ9IGZyb20gJy4vbW9kYWwtcmVmJztcbmltcG9ydCB7TmdiTW9kYWxXaW5kb3d9IGZyb20gJy4vbW9kYWwtd2luZG93JztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTmdiTW9kYWxTdGFjayB7XG4gIHByaXZhdGUgX2FjdGl2ZVdpbmRvd0NtcHRIYXNDaGFuZ2VkID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfYXJpYUhpZGRlblZhbHVlczogTWFwPEVsZW1lbnQsIHN0cmluZz4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgX2JhY2tkcm9wQXR0cmlidXRlcyA9IFsnYmFja2Ryb3BDbGFzcyddO1xuICBwcml2YXRlIF9tb2RhbFJlZnM6IE5nYk1vZGFsUmVmW10gPSBbXTtcbiAgcHJpdmF0ZSBfd2luZG93QXR0cmlidXRlcyA9IFsnYXJpYUxhYmVsbGVkQnknLCAnYmFja2Ryb3AnLCAnY2VudGVyZWQnLCAna2V5Ym9hcmQnLCAnc2l6ZScsICd3aW5kb3dDbGFzcyddO1xuICBwcml2YXRlIF93aW5kb3dDbXB0czogQ29tcG9uZW50UmVmPE5nYk1vZGFsV2luZG93PltdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIF9hcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYsIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvciwgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueSxcbiAgICAgIHByaXZhdGUgX3Njcm9sbEJhcjogU2Nyb2xsQmFyLCBwcml2YXRlIF9yZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIpIHtcbiAgICAvLyBUcmFwIGZvY3VzIG9uIGFjdGl2ZSBXaW5kb3dDbXB0XG4gICAgdGhpcy5fYWN0aXZlV2luZG93Q21wdEhhc0NoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl93aW5kb3dDbXB0cy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgYWN0aXZlV2luZG93Q21wdCA9IHRoaXMuX3dpbmRvd0NtcHRzW3RoaXMuX3dpbmRvd0NtcHRzLmxlbmd0aCAtIDFdO1xuICAgICAgICBuZ2JGb2N1c1RyYXAoYWN0aXZlV2luZG93Q21wdC5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LCB0aGlzLl9hY3RpdmVXaW5kb3dDbXB0SGFzQ2hhbmdlZCk7XG4gICAgICAgIHRoaXMuX3JldmVydEFyaWFIaWRkZW4oKTtcbiAgICAgICAgdGhpcy5fc2V0QXJpYUhpZGRlbihhY3RpdmVXaW5kb3dDbXB0LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb3Blbihtb2R1bGVDRlI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgY29udGVudEluamVjdG9yOiBJbmplY3RvciwgY29udGVudDogYW55LCBvcHRpb25zKTogTmdiTW9kYWxSZWYge1xuICAgIGNvbnN0IGNvbnRhaW5lckVsID1cbiAgICAgICAgaXNEZWZpbmVkKG9wdGlvbnMuY29udGFpbmVyKSA/IHRoaXMuX2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iob3B0aW9ucy5jb250YWluZXIpIDogdGhpcy5fZG9jdW1lbnQuYm9keTtcbiAgICBjb25zdCByZW5kZXJlciA9IHRoaXMuX3JlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcblxuICAgIGNvbnN0IHJldmVydFBhZGRpbmdGb3JTY3JvbGxCYXIgPSB0aGlzLl9zY3JvbGxCYXIuY29tcGVuc2F0ZSgpO1xuICAgIGNvbnN0IHJlbW92ZUJvZHlDbGFzcyA9ICgpID0+IHtcbiAgICAgIGlmICghdGhpcy5fbW9kYWxSZWZzLmxlbmd0aCkge1xuICAgICAgICByZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLl9kb2N1bWVudC5ib2R5LCAnbW9kYWwtb3BlbicpO1xuICAgICAgICB0aGlzLl9yZXZlcnRBcmlhSGlkZGVuKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmICghY29udGFpbmVyRWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHNwZWNpZmllZCBtb2RhbCBjb250YWluZXIgXCIke29wdGlvbnMuY29udGFpbmVyIHx8ICdib2R5J31cIiB3YXMgbm90IGZvdW5kIGluIHRoZSBET00uYCk7XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aXZlTW9kYWwgPSBuZXcgTmdiQWN0aXZlTW9kYWwoKTtcbiAgICBjb25zdCBjb250ZW50UmVmID0gdGhpcy5fZ2V0Q29udGVudFJlZihtb2R1bGVDRlIsIG9wdGlvbnMuaW5qZWN0b3IgfHwgY29udGVudEluamVjdG9yLCBjb250ZW50LCBhY3RpdmVNb2RhbCk7XG5cbiAgICBsZXQgYmFja2Ryb3BDbXB0UmVmOiBDb21wb25lbnRSZWY8TmdiTW9kYWxCYWNrZHJvcD4gPVxuICAgICAgICBvcHRpb25zLmJhY2tkcm9wICE9PSBmYWxzZSA/IHRoaXMuX2F0dGFjaEJhY2tkcm9wKG1vZHVsZUNGUiwgY29udGFpbmVyRWwpIDogbnVsbDtcbiAgICBsZXQgd2luZG93Q21wdFJlZjogQ29tcG9uZW50UmVmPE5nYk1vZGFsV2luZG93PiA9IHRoaXMuX2F0dGFjaFdpbmRvd0NvbXBvbmVudChtb2R1bGVDRlIsIGNvbnRhaW5lckVsLCBjb250ZW50UmVmKTtcbiAgICBsZXQgbmdiTW9kYWxSZWY6IE5nYk1vZGFsUmVmID0gbmV3IE5nYk1vZGFsUmVmKHdpbmRvd0NtcHRSZWYsIGNvbnRlbnRSZWYsIGJhY2tkcm9wQ21wdFJlZiwgb3B0aW9ucy5iZWZvcmVEaXNtaXNzKTtcblxuICAgIHRoaXMuX3JlZ2lzdGVyTW9kYWxSZWYobmdiTW9kYWxSZWYpO1xuICAgIHRoaXMuX3JlZ2lzdGVyV2luZG93Q21wdCh3aW5kb3dDbXB0UmVmKTtcbiAgICBuZ2JNb2RhbFJlZi5yZXN1bHQudGhlbihyZXZlcnRQYWRkaW5nRm9yU2Nyb2xsQmFyLCByZXZlcnRQYWRkaW5nRm9yU2Nyb2xsQmFyKTtcbiAgICBuZ2JNb2RhbFJlZi5yZXN1bHQudGhlbihyZW1vdmVCb2R5Q2xhc3MsIHJlbW92ZUJvZHlDbGFzcyk7XG4gICAgYWN0aXZlTW9kYWwuY2xvc2UgPSAocmVzdWx0OiBhbnkpID0+IHsgbmdiTW9kYWxSZWYuY2xvc2UocmVzdWx0KTsgfTtcbiAgICBhY3RpdmVNb2RhbC5kaXNtaXNzID0gKHJlYXNvbjogYW55KSA9PiB7IG5nYk1vZGFsUmVmLmRpc21pc3MocmVhc29uKTsgfTtcblxuICAgIHRoaXMuX2FwcGx5V2luZG93T3B0aW9ucyh3aW5kb3dDbXB0UmVmLmluc3RhbmNlLCBvcHRpb25zKTtcbiAgICBpZiAodGhpcy5fbW9kYWxSZWZzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5fZG9jdW1lbnQuYm9keSwgJ21vZGFsLW9wZW4nKTtcbiAgICB9XG5cbiAgICBpZiAoYmFja2Ryb3BDbXB0UmVmICYmIGJhY2tkcm9wQ21wdFJlZi5pbnN0YW5jZSkge1xuICAgICAgdGhpcy5fYXBwbHlCYWNrZHJvcE9wdGlvbnMoYmFja2Ryb3BDbXB0UmVmLmluc3RhbmNlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIG5nYk1vZGFsUmVmO1xuICB9XG5cbiAgZGlzbWlzc0FsbChyZWFzb24/OiBhbnkpIHsgdGhpcy5fbW9kYWxSZWZzLmZvckVhY2gobmdiTW9kYWxSZWYgPT4gbmdiTW9kYWxSZWYuZGlzbWlzcyhyZWFzb24pKTsgfVxuXG4gIGhhc09wZW5Nb2RhbHMoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9tb2RhbFJlZnMubGVuZ3RoID4gMDsgfVxuXG4gIHByaXZhdGUgX2F0dGFjaEJhY2tkcm9wKG1vZHVsZUNGUjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBjb250YWluZXJFbDogYW55KTogQ29tcG9uZW50UmVmPE5nYk1vZGFsQmFja2Ryb3A+IHtcbiAgICBsZXQgYmFja2Ryb3BGYWN0b3J5ID0gbW9kdWxlQ0ZSLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KE5nYk1vZGFsQmFja2Ryb3ApO1xuICAgIGxldCBiYWNrZHJvcENtcHRSZWYgPSBiYWNrZHJvcEZhY3RvcnkuY3JlYXRlKHRoaXMuX2luamVjdG9yKTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvblJlZi5hdHRhY2hWaWV3KGJhY2tkcm9wQ21wdFJlZi5ob3N0Vmlldyk7XG4gICAgY29udGFpbmVyRWwuYXBwZW5kQ2hpbGQoYmFja2Ryb3BDbXB0UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHJldHVybiBiYWNrZHJvcENtcHRSZWY7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hXaW5kb3dDb21wb25lbnQobW9kdWxlQ0ZSOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIGNvbnRhaW5lckVsOiBhbnksIGNvbnRlbnRSZWY6IGFueSk6XG4gICAgICBDb21wb25lbnRSZWY8TmdiTW9kYWxXaW5kb3c+IHtcbiAgICBsZXQgd2luZG93RmFjdG9yeSA9IG1vZHVsZUNGUi5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShOZ2JNb2RhbFdpbmRvdyk7XG4gICAgbGV0IHdpbmRvd0NtcHRSZWYgPSB3aW5kb3dGYWN0b3J5LmNyZWF0ZSh0aGlzLl9pbmplY3RvciwgY29udGVudFJlZi5ub2Rlcyk7XG4gICAgdGhpcy5fYXBwbGljYXRpb25SZWYuYXR0YWNoVmlldyh3aW5kb3dDbXB0UmVmLmhvc3RWaWV3KTtcbiAgICBjb250YWluZXJFbC5hcHBlbmRDaGlsZCh3aW5kb3dDbXB0UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHJldHVybiB3aW5kb3dDbXB0UmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXBwbHlXaW5kb3dPcHRpb25zKHdpbmRvd0luc3RhbmNlOiBOZ2JNb2RhbFdpbmRvdywgb3B0aW9uczogT2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy5fd2luZG93QXR0cmlidXRlcy5mb3JFYWNoKChvcHRpb25OYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChpc0RlZmluZWQob3B0aW9uc1tvcHRpb25OYW1lXSkpIHtcbiAgICAgICAgd2luZG93SW5zdGFuY2Vbb3B0aW9uTmFtZV0gPSBvcHRpb25zW29wdGlvbk5hbWVdO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXBwbHlCYWNrZHJvcE9wdGlvbnMoYmFja2Ryb3BJbnN0YW5jZTogTmdiTW9kYWxCYWNrZHJvcCwgb3B0aW9uczogT2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy5fYmFja2Ryb3BBdHRyaWJ1dGVzLmZvckVhY2goKG9wdGlvbk5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGlzRGVmaW5lZChvcHRpb25zW29wdGlvbk5hbWVdKSkge1xuICAgICAgICBiYWNrZHJvcEluc3RhbmNlW29wdGlvbk5hbWVdID0gb3B0aW9uc1tvcHRpb25OYW1lXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldENvbnRlbnRSZWYoXG4gICAgICBtb2R1bGVDRlI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgY29udGVudEluamVjdG9yOiBJbmplY3RvciwgY29udGVudDogYW55LFxuICAgICAgYWN0aXZlTW9kYWw6IE5nYkFjdGl2ZU1vZGFsKTogQ29udGVudFJlZiB7XG4gICAgaWYgKCFjb250ZW50KSB7XG4gICAgICByZXR1cm4gbmV3IENvbnRlbnRSZWYoW10pO1xuICAgIH0gZWxzZSBpZiAoY29udGVudCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY3JlYXRlRnJvbVRlbXBsYXRlUmVmKGNvbnRlbnQsIGFjdGl2ZU1vZGFsKTtcbiAgICB9IGVsc2UgaWYgKGlzU3RyaW5nKGNvbnRlbnQpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY3JlYXRlRnJvbVN0cmluZyhjb250ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUZyb21Db21wb25lbnQobW9kdWxlQ0ZSLCBjb250ZW50SW5qZWN0b3IsIGNvbnRlbnQsIGFjdGl2ZU1vZGFsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVGcm9tVGVtcGxhdGVSZWYoY29udGVudDogVGVtcGxhdGVSZWY8YW55PiwgYWN0aXZlTW9kYWw6IE5nYkFjdGl2ZU1vZGFsKTogQ29udGVudFJlZiB7XG4gICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgICRpbXBsaWNpdDogYWN0aXZlTW9kYWwsXG4gICAgICBjbG9zZShyZXN1bHQpIHsgYWN0aXZlTW9kYWwuY2xvc2UocmVzdWx0KTsgfSxcbiAgICAgIGRpc21pc3MocmVhc29uKSB7IGFjdGl2ZU1vZGFsLmRpc21pc3MocmVhc29uKTsgfVxuICAgIH07XG4gICAgY29uc3Qgdmlld1JlZiA9IGNvbnRlbnQuY3JlYXRlRW1iZWRkZWRWaWV3KGNvbnRleHQpO1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uUmVmLmF0dGFjaFZpZXcodmlld1JlZik7XG4gICAgcmV0dXJuIG5ldyBDb250ZW50UmVmKFt2aWV3UmVmLnJvb3ROb2Rlc10sIHZpZXdSZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlRnJvbVN0cmluZyhjb250ZW50OiBzdHJpbmcpOiBDb250ZW50UmVmIHtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLl9kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgJHtjb250ZW50fWApO1xuICAgIHJldHVybiBuZXcgQ29udGVudFJlZihbW2NvbXBvbmVudF1dKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUZyb21Db21wb25lbnQoXG4gICAgICBtb2R1bGVDRlI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgY29udGVudEluamVjdG9yOiBJbmplY3RvciwgY29udGVudDogYW55LFxuICAgICAgY29udGV4dDogTmdiQWN0aXZlTW9kYWwpOiBDb250ZW50UmVmIHtcbiAgICBjb25zdCBjb250ZW50Q21wdEZhY3RvcnkgPSBtb2R1bGVDRlIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29udGVudCk7XG4gICAgY29uc3QgbW9kYWxDb250ZW50SW5qZWN0b3IgPVxuICAgICAgICBJbmplY3Rvci5jcmVhdGUoe3Byb3ZpZGVyczogW3twcm92aWRlOiBOZ2JBY3RpdmVNb2RhbCwgdXNlVmFsdWU6IGNvbnRleHR9XSwgcGFyZW50OiBjb250ZW50SW5qZWN0b3J9KTtcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSBjb250ZW50Q21wdEZhY3RvcnkuY3JlYXRlKG1vZGFsQ29udGVudEluamVjdG9yKTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvblJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgcmV0dXJuIG5ldyBDb250ZW50UmVmKFtbY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnRdXSwgY29tcG9uZW50UmVmLmhvc3RWaWV3LCBjb21wb25lbnRSZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0QXJpYUhpZGRlbihlbGVtZW50OiBFbGVtZW50KSB7XG4gICAgY29uc3QgcGFyZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIGlmIChwYXJlbnQgJiYgZWxlbWVudCAhPT0gdGhpcy5fZG9jdW1lbnQuYm9keSkge1xuICAgICAgQXJyYXkuZnJvbShwYXJlbnQuY2hpbGRyZW4pLmZvckVhY2goc2libGluZyA9PiB7XG4gICAgICAgIGlmIChzaWJsaW5nICE9PSBlbGVtZW50ICYmIHNpYmxpbmcubm9kZU5hbWUgIT09ICdTQ1JJUFQnKSB7XG4gICAgICAgICAgdGhpcy5fYXJpYUhpZGRlblZhbHVlcy5zZXQoc2libGluZywgc2libGluZy5nZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJykpO1xuICAgICAgICAgIHNpYmxpbmcuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9zZXRBcmlhSGlkZGVuKHBhcmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmV2ZXJ0QXJpYUhpZGRlbigpIHtcbiAgICB0aGlzLl9hcmlhSGlkZGVuVmFsdWVzLmZvckVhY2goKHZhbHVlLCBlbGVtZW50KSA9PiB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5fYXJpYUhpZGRlblZhbHVlcy5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVnaXN0ZXJNb2RhbFJlZihuZ2JNb2RhbFJlZjogTmdiTW9kYWxSZWYpIHtcbiAgICBjb25zdCB1bnJlZ2lzdGVyTW9kYWxSZWYgPSAoKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuX21vZGFsUmVmcy5pbmRleE9mKG5nYk1vZGFsUmVmKTtcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIHRoaXMuX21vZGFsUmVmcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5fbW9kYWxSZWZzLnB1c2gobmdiTW9kYWxSZWYpO1xuICAgIG5nYk1vZGFsUmVmLnJlc3VsdC50aGVuKHVucmVnaXN0ZXJNb2RhbFJlZiwgdW5yZWdpc3Rlck1vZGFsUmVmKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlZ2lzdGVyV2luZG93Q21wdChuZ2JXaW5kb3dDbXB0OiBDb21wb25lbnRSZWY8TmdiTW9kYWxXaW5kb3c+KSB7XG4gICAgdGhpcy5fd2luZG93Q21wdHMucHVzaChuZ2JXaW5kb3dDbXB0KTtcbiAgICB0aGlzLl9hY3RpdmVXaW5kb3dDbXB0SGFzQ2hhbmdlZC5uZXh0KCk7XG5cbiAgICBuZ2JXaW5kb3dDbXB0Lm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuX3dpbmRvd0NtcHRzLmluZGV4T2YobmdiV2luZG93Q21wdCk7XG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICB0aGlzLl93aW5kb3dDbXB0cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB0aGlzLl9hY3RpdmVXaW5kb3dDbXB0SGFzQ2hhbmdlZC5uZXh0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsImltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0b3IsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7TmdiTW9kYWxPcHRpb25zLCBOZ2JNb2RhbENvbmZpZ30gZnJvbSAnLi9tb2RhbC1jb25maWcnO1xuaW1wb3J0IHtOZ2JNb2RhbFJlZn0gZnJvbSAnLi9tb2RhbC1yZWYnO1xuaW1wb3J0IHtOZ2JNb2RhbFN0YWNrfSBmcm9tICcuL21vZGFsLXN0YWNrJztcblxuLyoqXG4gKiBBIHNlcnZpY2UgZm9yIG9wZW5pbmcgbW9kYWwgd2luZG93cy5cbiAqXG4gKiBDcmVhdGluZyBhIG1vZGFsIGlzIHN0cmFpZ2h0Zm9yd2FyZDogY3JlYXRlIGEgY29tcG9uZW50IG9yIGEgdGVtcGxhdGUgYW5kIHBhc3MgaXQgYXMgYW4gYXJndW1lbnQgdG9cbiAqIHRoZSBgLm9wZW4oKWAgbWV0aG9kLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBOZ2JNb2RhbCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBfbW9kdWxlQ0ZSOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSBfbW9kYWxTdGFjazogTmdiTW9kYWxTdGFjayxcbiAgICAgIHByaXZhdGUgX2NvbmZpZzogTmdiTW9kYWxDb25maWcpIHt9XG5cbiAgLyoqXG4gICAqIE9wZW5zIGEgbmV3IG1vZGFsIHdpbmRvdyB3aXRoIHRoZSBzcGVjaWZpZWQgY29udGVudCBhbmQgc3VwcGxpZWQgb3B0aW9ucy5cbiAgICpcbiAgICogQ29udGVudCBjYW4gYmUgcHJvdmlkZWQgYXMgYSBgVGVtcGxhdGVSZWZgIG9yIGEgY29tcG9uZW50IHR5cGUuIElmIHlvdSBwYXNzIGEgY29tcG9uZW50IHR5cGUgYXMgY29udGVudCxcbiAgICogdGhlbiBpbnN0YW5jZXMgb2YgdGhvc2UgY29tcG9uZW50cyBjYW4gYmUgaW5qZWN0ZWQgd2l0aCBhbiBpbnN0YW5jZSBvZiB0aGUgYE5nYkFjdGl2ZU1vZGFsYCBjbGFzcy4gWW91IGNhbiB0aGVuXG4gICAqIHVzZSBgTmdiQWN0aXZlTW9kYWxgIG1ldGhvZHMgdG8gY2xvc2UgLyBkaXNtaXNzIG1vZGFscyBmcm9tIFwiaW5zaWRlXCIgb2YgeW91ciBjb21wb25lbnQuXG4gICAqXG4gICAqIEFsc28gc2VlIHRoZSBbYE5nYk1vZGFsT3B0aW9uc2BdKCMvY29tcG9uZW50cy9tb2RhbC9hcGkjTmdiTW9kYWxPcHRpb25zKSBmb3IgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIG9wdGlvbnMuXG4gICAqL1xuICBvcGVuKGNvbnRlbnQ6IGFueSwgb3B0aW9uczogTmdiTW9kYWxPcHRpb25zID0ge30pOiBOZ2JNb2RhbFJlZiB7XG4gICAgY29uc3QgY29tYmluZWRPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fY29uZmlnLCBvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcy5fbW9kYWxTdGFjay5vcGVuKHRoaXMuX21vZHVsZUNGUiwgdGhpcy5faW5qZWN0b3IsIGNvbnRlbnQsIGNvbWJpbmVkT3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogRGlzbWlzc2VzIGFsbCBjdXJyZW50bHkgZGlzcGxheWVkIG1vZGFsIHdpbmRvd3Mgd2l0aCB0aGUgc3VwcGxpZWQgcmVhc29uLlxuICAgKlxuICAgKiBAc2luY2UgMy4xLjBcbiAgICovXG4gIGRpc21pc3NBbGwocmVhc29uPzogYW55KSB7IHRoaXMuX21vZGFsU3RhY2suZGlzbWlzc0FsbChyZWFzb24pOyB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGVyZSBhcmUgY3VycmVudGx5IGFueSBvcGVuIG1vZGFsIHdpbmRvd3MgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAc2luY2UgMy4zLjBcbiAgICovXG4gIGhhc09wZW5Nb2RhbHMoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9tb2RhbFN0YWNrLmhhc09wZW5Nb2RhbHMoKTsgfVxufVxuIiwiaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7TmdiTW9kYWx9IGZyb20gJy4vbW9kYWwnO1xuaW1wb3J0IHtOZ2JNb2RhbEJhY2tkcm9wfSBmcm9tICcuL21vZGFsLWJhY2tkcm9wJztcbmltcG9ydCB7TmdiTW9kYWxXaW5kb3d9IGZyb20gJy4vbW9kYWwtd2luZG93JztcblxuZXhwb3J0IHtOZ2JNb2RhbH0gZnJvbSAnLi9tb2RhbCc7XG5leHBvcnQge05nYk1vZGFsQ29uZmlnLCBOZ2JNb2RhbE9wdGlvbnN9IGZyb20gJy4vbW9kYWwtY29uZmlnJztcbmV4cG9ydCB7TmdiTW9kYWxSZWYsIE5nYkFjdGl2ZU1vZGFsfSBmcm9tICcuL21vZGFsLXJlZic7XG5leHBvcnQge01vZGFsRGlzbWlzc1JlYXNvbnN9IGZyb20gJy4vbW9kYWwtZGlzbWlzcy1yZWFzb25zJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTmdiTW9kYWxCYWNrZHJvcCwgTmdiTW9kYWxXaW5kb3ddLFxuICBlbnRyeUNvbXBvbmVudHM6IFtOZ2JNb2RhbEJhY2tkcm9wLCBOZ2JNb2RhbFdpbmRvd10sXG4gIHByb3ZpZGVyczogW05nYk1vZGFsXVxufSlcbmV4cG9ydCBjbGFzcyBOZ2JNb2RhbE1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JNb2RhbE1vZHVsZX07IH1cbn1cbiIsImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQSBjb25maWd1cmF0aW9uIHNlcnZpY2UgZm9yIHRoZSBbYE5nYlBhZ2luYXRpb25gXSgjL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9hcGkjTmdiUGFnaW5hdGlvbikgY29tcG9uZW50LlxuICpcbiAqIFlvdSBjYW4gaW5qZWN0IHRoaXMgc2VydmljZSwgdHlwaWNhbGx5IGluIHlvdXIgcm9vdCBjb21wb25lbnQsIGFuZCBjdXN0b21pemUgdGhlIHZhbHVlcyBvZiBpdHMgcHJvcGVydGllcyBpblxuICogb3JkZXIgdG8gcHJvdmlkZSBkZWZhdWx0IHZhbHVlcyBmb3IgYWxsIHRoZSBwYWdpbmF0aW9ucyB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTmdiUGFnaW5hdGlvbkNvbmZpZyB7XG4gIGRpc2FibGVkID0gZmFsc2U7XG4gIGJvdW5kYXJ5TGlua3MgPSBmYWxzZTtcbiAgZGlyZWN0aW9uTGlua3MgPSB0cnVlO1xuICBlbGxpcHNlcyA9IHRydWU7XG4gIG1heFNpemUgPSAwO1xuICBwYWdlU2l6ZSA9IDEwO1xuICByb3RhdGUgPSBmYWxzZTtcbiAgc2l6ZTogJ3NtJyB8ICdsZyc7XG59XG4iLCJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIE9uQ2hhbmdlcyxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtnZXRWYWx1ZUluUmFuZ2UsIGlzTnVtYmVyfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IHtOZ2JQYWdpbmF0aW9uQ29uZmlnfSBmcm9tICcuL3BhZ2luYXRpb24tY29uZmlnJztcblxuLyoqXG4gKiBBIGNvbnRleHQgZm9yIHRoZVxuICogKiBgTmdiUGFnaW5hdGlvbkZpcnN0YFxuICogKiBgTmdiUGFnaW5hdGlvblByZXZpb3VzYFxuICogKiBgTmdiUGFnaW5hdGlvbk5leHRgXG4gKiAqIGBOZ2JQYWdpbmF0aW9uTGFzdGBcbiAqICogYE5nYlBhZ2luYXRpb25FbGxpcHNpc2BcbiAqXG4gKiBsaW5rIHRlbXBsYXRlcyBpbiBjYXNlIHlvdSB3YW50IHRvIG92ZXJyaWRlIG9uZS5cbiAqXG4gKiBAc2luY2UgNC4xLjBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZ2JQYWdpbmF0aW9uTGlua0NvbnRleHQge1xuICAvKipcbiAgICogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBwYWdlIG51bWJlclxuICAgKi9cbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY3VycmVudCBsaW5rIGlzIGRpc2FibGVkXG4gICAqL1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIGNvbnRleHQgZm9yIHRoZSBgTmdiUGFnaW5hdGlvbk51bWJlcmAgbGluayB0ZW1wbGF0ZSBpbiBjYXNlIHlvdSB3YW50IHRvIG92ZXJyaWRlIG9uZS5cbiAqXG4gKiBFeHRlbmRzIGBOZ2JQYWdpbmF0aW9uTGlua0NvbnRleHRgLlxuICpcbiAqIEBzaW5jZSA0LjEuMFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5nYlBhZ2luYXRpb25OdW1iZXJDb250ZXh0IGV4dGVuZHMgTmdiUGFnaW5hdGlvbkxpbmtDb250ZXh0IHtcbiAgLyoqXG4gICAqIFRoZSBwYWdlIG51bWJlciwgZGlzcGxheWVkIGJ5IHRoZSBjdXJyZW50IHBhZ2UgbGluay5cbiAgICovXG4gICRpbXBsaWNpdDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRvIG1hdGNoIHRoZSAnZWxsaXBzaXMnIGxpbmsgdGVtcGxhdGVcbiAqXG4gKiBAc2luY2UgNC4xLjBcbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtuZ2JQYWdpbmF0aW9uRWxsaXBzaXNdJ30pXG5leHBvcnQgY2xhc3MgTmdiUGFnaW5hdGlvbkVsbGlwc2lzIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxOZ2JQYWdpbmF0aW9uTGlua0NvbnRleHQ+KSB7fVxufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRvIG1hdGNoIHRoZSAnZmlyc3QnIGxpbmsgdGVtcGxhdGVcbiAqXG4gKiBAc2luY2UgNC4xLjBcbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtuZ2JQYWdpbmF0aW9uRmlyc3RdJ30pXG5leHBvcnQgY2xhc3MgTmdiUGFnaW5hdGlvbkZpcnN0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxOZ2JQYWdpbmF0aW9uTGlua0NvbnRleHQ+KSB7fVxufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRvIG1hdGNoIHRoZSAnbGFzdCcgbGluayB0ZW1wbGF0ZVxuICpcbiAqIEBzaW5jZSA0LjEuMFxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ25nLXRlbXBsYXRlW25nYlBhZ2luYXRpb25MYXN0XSd9KVxuZXhwb3J0IGNsYXNzIE5nYlBhZ2luYXRpb25MYXN0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxOZ2JQYWdpbmF0aW9uTGlua0NvbnRleHQ+KSB7fVxufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRvIG1hdGNoIHRoZSAnbmV4dCcgbGluayB0ZW1wbGF0ZVxuICpcbiAqIEBzaW5jZSA0LjEuMFxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ25nLXRlbXBsYXRlW25nYlBhZ2luYXRpb25OZXh0XSd9KVxuZXhwb3J0IGNsYXNzIE5nYlBhZ2luYXRpb25OZXh0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxOZ2JQYWdpbmF0aW9uTGlua0NvbnRleHQ+KSB7fVxufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRvIG1hdGNoIHRoZSBwYWdlICdudW1iZXInIGxpbmsgdGVtcGxhdGVcbiAqXG4gKiBAc2luY2UgNC4xLjBcbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtuZ2JQYWdpbmF0aW9uTnVtYmVyXSd9KVxuZXhwb3J0IGNsYXNzIE5nYlBhZ2luYXRpb25OdW1iZXIge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPE5nYlBhZ2luYXRpb25OdW1iZXJDb250ZXh0Pikge31cbn1cblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0byBtYXRjaCB0aGUgJ3ByZXZpb3VzJyBsaW5rIHRlbXBsYXRlXG4gKlxuICogQHNpbmNlIDQuMS4wXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbbmdiUGFnaW5hdGlvblByZXZpb3VzXSd9KVxuZXhwb3J0IGNsYXNzIE5nYlBhZ2luYXRpb25QcmV2aW91cyB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8TmdiUGFnaW5hdGlvbkxpbmtDb250ZXh0Pikge31cbn1cblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIHBhZ2UgbnVtYmVycyBhbmQgYWxsb3dzIHRvIGN1c3RvbWl6ZSB0aGVtIGluIHNldmVyYWwgd2F5cy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdiLXBhZ2luYXRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDogeydyb2xlJzogJ25hdmlnYXRpb24nfSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI2ZpcnN0PjxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGkxOG49XCJAQG5nYi5wYWdpbmF0aW9uLmZpcnN0XCI+JmxhcXVvOyZsYXF1bzs8L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI3ByZXZpb3VzPjxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGkxOG49XCJAQG5nYi5wYWdpbmF0aW9uLnByZXZpb3VzXCI+JmxhcXVvOzwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjbmV4dD48c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBpMThuPVwiQEBuZ2IucGFnaW5hdGlvbi5uZXh0XCI+JnJhcXVvOzwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjbGFzdD48c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBpMThuPVwiQEBuZ2IucGFnaW5hdGlvbi5sYXN0XCI+JnJhcXVvOyZyYXF1bzs8L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2VsbGlwc2lzPi4uLjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TnVtYmVyIGxldC1wYWdlIGxldC1jdXJyZW50UGFnZT1cImN1cnJlbnRQYWdlXCI+XG4gICAgICB7eyBwYWdlIH19XG4gICAgICA8c3BhbiAqbmdJZj1cInBhZ2UgPT09IGN1cnJlbnRQYWdlXCIgY2xhc3M9XCJzci1vbmx5XCI+KGN1cnJlbnQpPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPHVsIFtjbGFzc109XCIncGFnaW5hdGlvbicgKyAoc2l6ZSA/ICcgcGFnaW5hdGlvbi0nICsgc2l6ZSA6ICcnKVwiPlxuICAgICAgPGxpICpuZ0lmPVwiYm91bmRhcnlMaW5rc1wiIGNsYXNzPVwicGFnZS1pdGVtXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInByZXZpb3VzRGlzYWJsZWQoKVwiPlxuICAgICAgICA8YSBhcmlhLWxhYmVsPVwiRmlyc3RcIiBpMThuLWFyaWEtbGFiZWw9XCJAQG5nYi5wYWdpbmF0aW9uLmZpcnN0LWFyaWFcIiBjbGFzcz1cInBhZ2UtbGlua1wiIGhyZWZcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGFnZSgxKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiBbYXR0ci50YWJpbmRleF09XCIoaGFzUHJldmlvdXMoKSA/IG51bGwgOiAnLTEnKVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cGxGaXJzdD8udGVtcGxhdGVSZWYgfHwgZmlyc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2Rpc2FibGVkOiBwcmV2aW91c0Rpc2FibGVkKCksIGN1cnJlbnRQYWdlOiBwYWdlfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSAqbmdJZj1cImRpcmVjdGlvbkxpbmtzXCIgY2xhc3M9XCJwYWdlLWl0ZW1cIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwicHJldmlvdXNEaXNhYmxlZCgpXCI+XG4gICAgICAgIDxhIGFyaWEtbGFiZWw9XCJQcmV2aW91c1wiIGkxOG4tYXJpYS1sYWJlbD1cIkBAbmdiLnBhZ2luYXRpb24ucHJldmlvdXMtYXJpYVwiIGNsYXNzPVwicGFnZS1saW5rXCIgaHJlZlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQYWdlKHBhZ2UtMSk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCIgW2F0dHIudGFiaW5kZXhdPVwiKGhhc1ByZXZpb3VzKCkgPyBudWxsIDogJy0xJylcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidHBsUHJldmlvdXM/LnRlbXBsYXRlUmVmIHx8IHByZXZpb3VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntkaXNhYmxlZDogcHJldmlvdXNEaXNhYmxlZCgpfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IHBhZ2VOdW1iZXIgb2YgcGFnZXNcIiBjbGFzcz1cInBhZ2UtaXRlbVwiIFtjbGFzcy5hY3RpdmVdPVwicGFnZU51bWJlciA9PT0gcGFnZVwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJpc0VsbGlwc2lzKHBhZ2VOdW1iZXIpIHx8IGRpc2FibGVkXCI+XG4gICAgICAgIDxhICpuZ0lmPVwiaXNFbGxpcHNpcyhwYWdlTnVtYmVyKVwiIGNsYXNzPVwicGFnZS1saW5rXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRwbEVsbGlwc2lzPy50ZW1wbGF0ZVJlZiB8fCBlbGxpcHNpc1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ZGlzYWJsZWQ6IHRydWUsIGN1cnJlbnRQYWdlOiBwYWdlfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGEgKm5nSWY9XCIhaXNFbGxpcHNpcyhwYWdlTnVtYmVyKVwiIGNsYXNzPVwicGFnZS1saW5rXCIgaHJlZiAoY2xpY2spPVwic2VsZWN0UGFnZShwYWdlTnVtYmVyKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidHBsTnVtYmVyPy50ZW1wbGF0ZVJlZiB8fCBkZWZhdWx0TnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntkaXNhYmxlZDogZGlzYWJsZWQsICRpbXBsaWNpdDogcGFnZU51bWJlciwgY3VycmVudFBhZ2U6IHBhZ2V9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9hPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSAqbmdJZj1cImRpcmVjdGlvbkxpbmtzXCIgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbY2xhc3MuZGlzYWJsZWRdPVwibmV4dERpc2FibGVkKClcIj5cbiAgICAgICAgPGEgYXJpYS1sYWJlbD1cIk5leHRcIiBpMThuLWFyaWEtbGFiZWw9XCJAQG5nYi5wYWdpbmF0aW9uLm5leHQtYXJpYVwiIGNsYXNzPVwicGFnZS1saW5rXCIgaHJlZlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQYWdlKHBhZ2UrMSk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCIgW2F0dHIudGFiaW5kZXhdPVwiKGhhc05leHQoKSA/IG51bGwgOiAnLTEnKVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cGxOZXh0Py50ZW1wbGF0ZVJlZiB8fCBuZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntkaXNhYmxlZDogbmV4dERpc2FibGVkKCksIGN1cnJlbnRQYWdlOiBwYWdlfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSAqbmdJZj1cImJvdW5kYXJ5TGlua3NcIiBjbGFzcz1cInBhZ2UtaXRlbVwiIFtjbGFzcy5kaXNhYmxlZF09XCJuZXh0RGlzYWJsZWQoKVwiPlxuICAgICAgICA8YSBhcmlhLWxhYmVsPVwiTGFzdFwiIGkxOG4tYXJpYS1sYWJlbD1cIkBAbmdiLnBhZ2luYXRpb24ubGFzdC1hcmlhXCIgY2xhc3M9XCJwYWdlLWxpbmtcIiBocmVmXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBhZ2UocGFnZUNvdW50KTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiBbYXR0ci50YWJpbmRleF09XCIoaGFzTmV4dCgpID8gbnVsbCA6ICctMScpXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRwbExhc3Q/LnRlbXBsYXRlUmVmIHx8IGxhc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2Rpc2FibGVkOiBuZXh0RGlzYWJsZWQoKSwgY3VycmVudFBhZ2U6IHBhZ2V9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9hPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIE5nYlBhZ2luYXRpb24gaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBwYWdlQ291bnQgPSAwO1xuICBwYWdlczogbnVtYmVyW10gPSBbXTtcblxuICBAQ29udGVudENoaWxkKE5nYlBhZ2luYXRpb25FbGxpcHNpcykgdHBsRWxsaXBzaXM6IE5nYlBhZ2luYXRpb25FbGxpcHNpcztcbiAgQENvbnRlbnRDaGlsZChOZ2JQYWdpbmF0aW9uRmlyc3QpIHRwbEZpcnN0OiBOZ2JQYWdpbmF0aW9uRmlyc3Q7XG4gIEBDb250ZW50Q2hpbGQoTmdiUGFnaW5hdGlvbkxhc3QpIHRwbExhc3Q6IE5nYlBhZ2luYXRpb25MYXN0O1xuICBAQ29udGVudENoaWxkKE5nYlBhZ2luYXRpb25OZXh0KSB0cGxOZXh0OiBOZ2JQYWdpbmF0aW9uTmV4dDtcbiAgQENvbnRlbnRDaGlsZChOZ2JQYWdpbmF0aW9uTnVtYmVyKSB0cGxOdW1iZXI6IE5nYlBhZ2luYXRpb25OdW1iZXI7XG4gIEBDb250ZW50Q2hpbGQoTmdiUGFnaW5hdGlvblByZXZpb3VzKSB0cGxQcmV2aW91czogTmdiUGFnaW5hdGlvblByZXZpb3VzO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHBhZ2luYXRpb24gbGlua3Mgd2lsbCBiZSBkaXNhYmxlZC5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBcIkZpcnN0XCIgYW5kIFwiTGFzdFwiIHBhZ2UgbGlua3MgYXJlIHNob3duLlxuICAgKi9cbiAgQElucHV0KCkgYm91bmRhcnlMaW5rczogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgXCJOZXh0XCIgYW5kIFwiUHJldmlvdXNcIiBwYWdlIGxpbmtzIGFyZSBzaG93bi5cbiAgICovXG4gIEBJbnB1dCgpIGRpcmVjdGlvbkxpbmtzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBlbGxpcHNpcyBzeW1ib2xzIGFuZCBmaXJzdC9sYXN0IHBhZ2UgbnVtYmVycyB3aWxsIGJlIHNob3duIHdoZW4gYG1heFNpemVgID4gbnVtYmVyIG9mIHBhZ2VzLlxuICAgKi9cbiAgQElucHV0KCkgZWxsaXBzZXM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcm90YXRlIHBhZ2VzIHdoZW4gYG1heFNpemVgID4gbnVtYmVyIG9mIHBhZ2VzLlxuICAgKlxuICAgKiBUaGUgY3VycmVudCBwYWdlIGFsd2F5cyBzdGF5cyBpbiB0aGUgbWlkZGxlIGlmIGB0cnVlYC5cbiAgICovXG4gIEBJbnB1dCgpIHJvdGF0ZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogIFRoZSBudW1iZXIgb2YgaXRlbXMgaW4geW91ciBwYWdpbmF0ZWQgY29sbGVjdGlvbi5cbiAgICpcbiAgICogIE5vdGUsIHRoYXQgdGhpcyBpcyBub3QgdGhlIG51bWJlciBvZiBwYWdlcy4gUGFnZSBudW1iZXJzIGFyZSBjYWxjdWxhdGVkIGR5bmFtaWNhbGx5IGJhc2VkIG9uXG4gICAqICBgY29sbGVjdGlvblNpemVgIGFuZCBgcGFnZVNpemVgLiBFeC4gaWYgeW91IGhhdmUgMTAwIGl0ZW1zIGluIHlvdXIgY29sbGVjdGlvbiBhbmQgZGlzcGxheWluZyAyMCBpdGVtcyBwZXIgcGFnZSxcbiAgICogIHlvdSdsbCBlbmQgdXAgd2l0aCA1IHBhZ2VzLlxuICAgKi9cbiAgQElucHV0KCkgY29sbGVjdGlvblNpemU6IG51bWJlcjtcblxuICAvKipcbiAgICogIFRoZSBtYXhpbXVtIG51bWJlciBvZiBwYWdlcyB0byBkaXNwbGF5LlxuICAgKi9cbiAgQElucHV0KCkgbWF4U2l6ZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiAgVGhlIGN1cnJlbnQgcGFnZS5cbiAgICpcbiAgICogIFBhZ2UgbnVtYmVycyBzdGFydCB3aXRoIGAxYC5cbiAgICovXG4gIEBJbnB1dCgpIHBhZ2UgPSAxO1xuXG4gIC8qKlxuICAgKiAgVGhlIG51bWJlciBvZiBpdGVtcyBwZXIgcGFnZS5cbiAgICovXG4gIEBJbnB1dCgpIHBhZ2VTaXplOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqICBBbiBldmVudCBmaXJlZCB3aGVuIHRoZSBwYWdlIGlzIGNoYW5nZWQuIFdpbGwgZmlyZSBvbmx5IGlmIGNvbGxlY3Rpb24gc2l6ZSBpcyBzZXQgYW5kIGFsbCB2YWx1ZXMgYXJlIHZhbGlkLlxuICAgKlxuICAgKiAgRXZlbnQgcGF5bG9hZCBpcyB0aGUgbnVtYmVyIG9mIHRoZSBuZXdseSBzZWxlY3RlZCBwYWdlLlxuICAgKlxuICAgKiAgUGFnZSBudW1iZXJzIHN0YXJ0IHdpdGggYDFgLlxuICAgKi9cbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4odHJ1ZSk7XG5cbiAgLyoqXG4gICAqIFRoZSBwYWdpbmF0aW9uIGRpc3BsYXkgc2l6ZS5cbiAgICpcbiAgICogQm9vdHN0cmFwIGN1cnJlbnRseSBzdXBwb3J0cyBzbWFsbCBhbmQgbGFyZ2Ugc2l6ZXMuXG4gICAqL1xuICBASW5wdXQoKSBzaXplOiAnc20nIHwgJ2xnJztcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IE5nYlBhZ2luYXRpb25Db25maWcpIHtcbiAgICB0aGlzLmRpc2FibGVkID0gY29uZmlnLmRpc2FibGVkO1xuICAgIHRoaXMuYm91bmRhcnlMaW5rcyA9IGNvbmZpZy5ib3VuZGFyeUxpbmtzO1xuICAgIHRoaXMuZGlyZWN0aW9uTGlua3MgPSBjb25maWcuZGlyZWN0aW9uTGlua3M7XG4gICAgdGhpcy5lbGxpcHNlcyA9IGNvbmZpZy5lbGxpcHNlcztcbiAgICB0aGlzLm1heFNpemUgPSBjb25maWcubWF4U2l6ZTtcbiAgICB0aGlzLnBhZ2VTaXplID0gY29uZmlnLnBhZ2VTaXplO1xuICAgIHRoaXMucm90YXRlID0gY29uZmlnLnJvdGF0ZTtcbiAgICB0aGlzLnNpemUgPSBjb25maWcuc2l6ZTtcbiAgfVxuXG4gIGhhc1ByZXZpb3VzKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5wYWdlID4gMTsgfVxuXG4gIGhhc05leHQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLnBhZ2UgPCB0aGlzLnBhZ2VDb3VudDsgfVxuXG4gIG5leHREaXNhYmxlZCgpOiBib29sZWFuIHsgcmV0dXJuICF0aGlzLmhhc05leHQoKSB8fCB0aGlzLmRpc2FibGVkOyB9XG5cbiAgcHJldmlvdXNEaXNhYmxlZCgpOiBib29sZWFuIHsgcmV0dXJuICF0aGlzLmhhc1ByZXZpb3VzKCkgfHwgdGhpcy5kaXNhYmxlZDsgfVxuXG4gIHNlbGVjdFBhZ2UocGFnZU51bWJlcjogbnVtYmVyKTogdm9pZCB7IHRoaXMuX3VwZGF0ZVBhZ2VzKHBhZ2VOdW1iZXIpOyB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQgeyB0aGlzLl91cGRhdGVQYWdlcyh0aGlzLnBhZ2UpOyB9XG5cbiAgaXNFbGxpcHNpcyhwYWdlTnVtYmVyKTogYm9vbGVhbiB7IHJldHVybiBwYWdlTnVtYmVyID09PSAtMTsgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmRzIGVsbGlwc2VzIGFuZCBmaXJzdC9sYXN0IHBhZ2UgbnVtYmVyIHRvIHRoZSBkaXNwbGF5ZWQgcGFnZXNcbiAgICovXG4gIHByaXZhdGUgX2FwcGx5RWxsaXBzZXMoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5lbGxpcHNlcykge1xuICAgICAgaWYgKHN0YXJ0ID4gMCkge1xuICAgICAgICBpZiAoc3RhcnQgPiAxKSB7XG4gICAgICAgICAgdGhpcy5wYWdlcy51bnNoaWZ0KC0xKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhZ2VzLnVuc2hpZnQoMSk7XG4gICAgICB9XG4gICAgICBpZiAoZW5kIDwgdGhpcy5wYWdlQ291bnQpIHtcbiAgICAgICAgaWYgKGVuZCA8ICh0aGlzLnBhZ2VDb3VudCAtIDEpKSB7XG4gICAgICAgICAgdGhpcy5wYWdlcy5wdXNoKC0xKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhZ2VzLnB1c2godGhpcy5wYWdlQ291bnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSb3RhdGVzIHBhZ2UgbnVtYmVycyBiYXNlZCBvbiBtYXhTaXplIGl0ZW1zIHZpc2libGUuXG4gICAqIEN1cnJlbnRseSBzZWxlY3RlZCBwYWdlIHN0YXlzIGluIHRoZSBtaWRkbGU6XG4gICAqXG4gICAqIEV4LiBmb3Igc2VsZWN0ZWQgcGFnZSA9IDY6XG4gICAqIFs1LCo2Kiw3XSBmb3IgbWF4U2l6ZSA9IDNcbiAgICogWzQsNSwqNiosN10gZm9yIG1heFNpemUgPSA0XG4gICAqL1xuICBwcml2YXRlIF9hcHBseVJvdGF0aW9uKCk6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgIGxldCBzdGFydCA9IDA7XG4gICAgbGV0IGVuZCA9IHRoaXMucGFnZUNvdW50O1xuICAgIGxldCBsZWZ0T2Zmc2V0ID0gTWF0aC5mbG9vcih0aGlzLm1heFNpemUgLyAyKTtcbiAgICBsZXQgcmlnaHRPZmZzZXQgPSB0aGlzLm1heFNpemUgJSAyID09PSAwID8gbGVmdE9mZnNldCAtIDEgOiBsZWZ0T2Zmc2V0O1xuXG4gICAgaWYgKHRoaXMucGFnZSA8PSBsZWZ0T2Zmc2V0KSB7XG4gICAgICAvLyB2ZXJ5IGJlZ2lubmluZywgbm8gcm90YXRpb24gLT4gWzAuLm1heFNpemVdXG4gICAgICBlbmQgPSB0aGlzLm1heFNpemU7XG4gICAgfSBlbHNlIGlmICh0aGlzLnBhZ2VDb3VudCAtIHRoaXMucGFnZSA8IGxlZnRPZmZzZXQpIHtcbiAgICAgIC8vIHZlcnkgZW5kLCBubyByb3RhdGlvbiAtPiBbbGVuLW1heFNpemUuLmxlbl1cbiAgICAgIHN0YXJ0ID0gdGhpcy5wYWdlQ291bnQgLSB0aGlzLm1heFNpemU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJvdGF0ZVxuICAgICAgc3RhcnQgPSB0aGlzLnBhZ2UgLSBsZWZ0T2Zmc2V0IC0gMTtcbiAgICAgIGVuZCA9IHRoaXMucGFnZSArIHJpZ2h0T2Zmc2V0O1xuICAgIH1cblxuICAgIHJldHVybiBbc3RhcnQsIGVuZF07XG4gIH1cblxuICAvKipcbiAgICogUGFnaW5hdGVzIHBhZ2UgbnVtYmVycyBiYXNlZCBvbiBtYXhTaXplIGl0ZW1zIHBlciBwYWdlLlxuICAgKi9cbiAgcHJpdmF0ZSBfYXBwbHlQYWdpbmF0aW9uKCk6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgIGxldCBwYWdlID0gTWF0aC5jZWlsKHRoaXMucGFnZSAvIHRoaXMubWF4U2l6ZSkgLSAxO1xuICAgIGxldCBzdGFydCA9IHBhZ2UgKiB0aGlzLm1heFNpemU7XG4gICAgbGV0IGVuZCA9IHN0YXJ0ICsgdGhpcy5tYXhTaXplO1xuXG4gICAgcmV0dXJuIFtzdGFydCwgZW5kXTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldFBhZ2VJblJhbmdlKG5ld1BhZ2VObykge1xuICAgIGNvbnN0IHByZXZQYWdlTm8gPSB0aGlzLnBhZ2U7XG4gICAgdGhpcy5wYWdlID0gZ2V0VmFsdWVJblJhbmdlKG5ld1BhZ2VObywgdGhpcy5wYWdlQ291bnQsIDEpO1xuXG4gICAgaWYgKHRoaXMucGFnZSAhPT0gcHJldlBhZ2VObyAmJiBpc051bWJlcih0aGlzLmNvbGxlY3Rpb25TaXplKSkge1xuICAgICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQodGhpcy5wYWdlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVQYWdlcyhuZXdQYWdlOiBudW1iZXIpIHtcbiAgICB0aGlzLnBhZ2VDb3VudCA9IE1hdGguY2VpbCh0aGlzLmNvbGxlY3Rpb25TaXplIC8gdGhpcy5wYWdlU2l6ZSk7XG5cbiAgICBpZiAoIWlzTnVtYmVyKHRoaXMucGFnZUNvdW50KSkge1xuICAgICAgdGhpcy5wYWdlQ291bnQgPSAwO1xuICAgIH1cblxuICAgIC8vIGZpbGwtaW4gbW9kZWwgbmVlZGVkIHRvIHJlbmRlciBwYWdlc1xuICAgIHRoaXMucGFnZXMubGVuZ3RoID0gMDtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB0aGlzLnBhZ2VDb3VudDsgaSsrKSB7XG4gICAgICB0aGlzLnBhZ2VzLnB1c2goaSk7XG4gICAgfVxuXG4gICAgLy8gc2V0IHBhZ2Ugd2l0aGluIDEuLm1heCByYW5nZVxuICAgIHRoaXMuX3NldFBhZ2VJblJhbmdlKG5ld1BhZ2UpO1xuXG4gICAgLy8gYXBwbHkgbWF4U2l6ZSBpZiBuZWNlc3NhcnlcbiAgICBpZiAodGhpcy5tYXhTaXplID4gMCAmJiB0aGlzLnBhZ2VDb3VudCA+IHRoaXMubWF4U2l6ZSkge1xuICAgICAgbGV0IHN0YXJ0ID0gMDtcbiAgICAgIGxldCBlbmQgPSB0aGlzLnBhZ2VDb3VudDtcblxuICAgICAgLy8gZWl0aGVyIHBhZ2luYXRpbmcgb3Igcm90YXRpbmcgcGFnZSBudW1iZXJzXG4gICAgICBpZiAodGhpcy5yb3RhdGUpIHtcbiAgICAgICAgW3N0YXJ0LCBlbmRdID0gdGhpcy5fYXBwbHlSb3RhdGlvbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgW3N0YXJ0LCBlbmRdID0gdGhpcy5fYXBwbHlQYWdpbmF0aW9uKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucGFnZXMgPSB0aGlzLnBhZ2VzLnNsaWNlKHN0YXJ0LCBlbmQpO1xuXG4gICAgICAvLyBhZGRpbmcgZWxsaXBzZXNcbiAgICAgIHRoaXMuX2FwcGx5RWxsaXBzZXMoc3RhcnQsIGVuZCk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQge05nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQge1xuICBOZ2JQYWdpbmF0aW9uLFxuICBOZ2JQYWdpbmF0aW9uRWxsaXBzaXMsXG4gIE5nYlBhZ2luYXRpb25GaXJzdCxcbiAgTmdiUGFnaW5hdGlvbkxhc3QsXG4gIE5nYlBhZ2luYXRpb25OZXh0LFxuICBOZ2JQYWdpbmF0aW9uTnVtYmVyLFxuICBOZ2JQYWdpbmF0aW9uUHJldmlvdXNcbn0gZnJvbSAnLi9wYWdpbmF0aW9uJztcblxuZXhwb3J0IHtcbiAgTmdiUGFnaW5hdGlvbixcbiAgTmdiUGFnaW5hdGlvbkVsbGlwc2lzLFxuICBOZ2JQYWdpbmF0aW9uRmlyc3QsXG4gIE5nYlBhZ2luYXRpb25MYXN0LFxuICBOZ2JQYWdpbmF0aW9uTmV4dCxcbiAgTmdiUGFnaW5hdGlvbk51bWJlcixcbiAgTmdiUGFnaW5hdGlvblByZXZpb3VzXG59IGZyb20gJy4vcGFnaW5hdGlvbic7XG5leHBvcnQge05nYlBhZ2luYXRpb25Db25maWd9IGZyb20gJy4vcGFnaW5hdGlvbi1jb25maWcnO1xuXG5jb25zdCBESVJFQ1RJVkVTID0gW1xuICBOZ2JQYWdpbmF0aW9uLCBOZ2JQYWdpbmF0aW9uRWxsaXBzaXMsIE5nYlBhZ2luYXRpb25GaXJzdCwgTmdiUGFnaW5hdGlvbkxhc3QsIE5nYlBhZ2luYXRpb25OZXh0LCBOZ2JQYWdpbmF0aW9uTnVtYmVyLFxuICBOZ2JQYWdpbmF0aW9uUHJldmlvdXNcbl07XG5cbkBOZ01vZHVsZSh7ZGVjbGFyYXRpb25zOiBESVJFQ1RJVkVTLCBleHBvcnRzOiBESVJFQ1RJVkVTLCBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXX0pXG5leHBvcnQgY2xhc3MgTmdiUGFnaW5hdGlvbk1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JQYWdpbmF0aW9uTW9kdWxlfTsgfVxufVxuIiwiaW1wb3J0IHtPYnNlcnZhYmxlLCBtZXJnZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3NoYXJlLCBmaWx0ZXIsIGRlbGF5LCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGNsYXNzIFRyaWdnZXIge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3Blbjogc3RyaW5nLCBwdWJsaWMgY2xvc2U/OiBzdHJpbmcpIHtcbiAgICBpZiAoIWNsb3NlKSB7XG4gICAgICB0aGlzLmNsb3NlID0gb3BlbjtcbiAgICB9XG4gIH1cblxuICBpc01hbnVhbCgpIHsgcmV0dXJuIHRoaXMub3BlbiA9PT0gJ21hbnVhbCcgfHwgdGhpcy5jbG9zZSA9PT0gJ21hbnVhbCc7IH1cbn1cblxuY29uc3QgREVGQVVMVF9BTElBU0VTID0ge1xuICAnaG92ZXInOiBbJ21vdXNlZW50ZXInLCAnbW91c2VsZWF2ZSddLFxuICAnZm9jdXMnOiBbJ2ZvY3VzaW4nLCAnZm9jdXNvdXQnXSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRyaWdnZXJzKHRyaWdnZXJzOiBzdHJpbmcsIGFsaWFzZXMgPSBERUZBVUxUX0FMSUFTRVMpOiBUcmlnZ2VyW10ge1xuICBjb25zdCB0cmltbWVkVHJpZ2dlcnMgPSAodHJpZ2dlcnMgfHwgJycpLnRyaW0oKTtcblxuICBpZiAodHJpbW1lZFRyaWdnZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHBhcnNlZFRyaWdnZXJzID0gdHJpbW1lZFRyaWdnZXJzLnNwbGl0KC9cXHMrLykubWFwKHRyaWdnZXIgPT4gdHJpZ2dlci5zcGxpdCgnOicpKS5tYXAoKHRyaWdnZXJQYWlyKSA9PiB7XG4gICAgbGV0IGFsaWFzID0gYWxpYXNlc1t0cmlnZ2VyUGFpclswXV0gfHwgdHJpZ2dlclBhaXI7XG4gICAgcmV0dXJuIG5ldyBUcmlnZ2VyKGFsaWFzWzBdLCBhbGlhc1sxXSk7XG4gIH0pO1xuXG4gIGNvbnN0IG1hbnVhbFRyaWdnZXJzID0gcGFyc2VkVHJpZ2dlcnMuZmlsdGVyKHRyaWdnZXJQYWlyID0+IHRyaWdnZXJQYWlyLmlzTWFudWFsKCkpO1xuXG4gIGlmIChtYW51YWxUcmlnZ2Vycy5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgJ1RyaWdnZXJzIHBhcnNlIGVycm9yOiBvbmx5IG9uZSBtYW51YWwgdHJpZ2dlciBpcyBhbGxvd2VkJztcbiAgfVxuXG4gIGlmIChtYW51YWxUcmlnZ2Vycy5sZW5ndGggPT09IDEgJiYgcGFyc2VkVHJpZ2dlcnMubGVuZ3RoID4gMSkge1xuICAgIHRocm93ICdUcmlnZ2VycyBwYXJzZSBlcnJvcjogbWFudWFsIHRyaWdnZXIgY2FuXFwndCBiZSBtaXhlZCB3aXRoIG90aGVyIHRyaWdnZXJzJztcbiAgfVxuXG4gIHJldHVybiBwYXJzZWRUcmlnZ2Vycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmVUcmlnZ2VycyhyZW5kZXJlcjogYW55LCBuYXRpdmVFbGVtZW50OiBhbnksIHRyaWdnZXJzOiBUcmlnZ2VyW10sIGlzT3BlbmVkRm46ICgpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KHN1YnNjcmliZXIgPT4ge1xuICAgIGNvbnN0IGxpc3RlbmVycyA9IFtdO1xuICAgIGNvbnN0IG9wZW5GbiA9ICgpID0+IHN1YnNjcmliZXIubmV4dCh0cnVlKTtcbiAgICBjb25zdCBjbG9zZUZuID0gKCkgPT4gc3Vic2NyaWJlci5uZXh0KGZhbHNlKTtcbiAgICBjb25zdCB0b2dnbGVGbiA9ICgpID0+IHN1YnNjcmliZXIubmV4dCghaXNPcGVuZWRGbigpKTtcblxuICAgIHRyaWdnZXJzLmZvckVhY2goKHRyaWdnZXI6IFRyaWdnZXIpID0+IHtcbiAgICAgIGlmICh0cmlnZ2VyLm9wZW4gPT09IHRyaWdnZXIuY2xvc2UpIHtcbiAgICAgICAgbGlzdGVuZXJzLnB1c2gocmVuZGVyZXIubGlzdGVuKG5hdGl2ZUVsZW1lbnQsIHRyaWdnZXIub3BlbiwgdG9nZ2xlRm4pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpc3RlbmVycy5wdXNoKFxuICAgICAgICAgICAgcmVuZGVyZXIubGlzdGVuKG5hdGl2ZUVsZW1lbnQsIHRyaWdnZXIub3Blbiwgb3BlbkZuKSxcbiAgICAgICAgICAgIHJlbmRlcmVyLmxpc3RlbihuYXRpdmVFbGVtZW50LCB0cmlnZ2VyLmNsb3NlLCBjbG9zZUZuKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4geyBsaXN0ZW5lcnMuZm9yRWFjaCh1bnN1YnNjcmliZUZuID0+IHVuc3Vic2NyaWJlRm4oKSk7IH07XG4gIH0pO1xufVxuXG5jb25zdCBkZWxheU9yTm9vcCA9IDxUPih0aW1lOiBudW1iZXIpID0+IHRpbWUgPiAwID8gZGVsYXk8VD4odGltZSkgOiAoYTogT2JzZXJ2YWJsZTxUPikgPT4gYTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRyaWdnZXJEZWxheShvcGVuRGVsYXk6IG51bWJlciwgY2xvc2VEZWxheTogbnVtYmVyLCBpc09wZW5lZEZuOiAoKSA9PiBib29sZWFuKSB7XG4gIHJldHVybiAoaW5wdXQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+KSA9PiB7XG4gICAgbGV0IHBlbmRpbmcgPSBudWxsO1xuICAgIGNvbnN0IGZpbHRlcmVkSW5wdXQkID0gaW5wdXQkLnBpcGUoXG4gICAgICAgIG1hcChvcGVuID0+ICh7b3Blbn0pKSwgZmlsdGVyKGV2ZW50ID0+IHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50bHlPcGVuID0gaXNPcGVuZWRGbigpO1xuICAgICAgICAgIGlmIChjdXJyZW50bHlPcGVuICE9PSBldmVudC5vcGVuICYmICghcGVuZGluZyB8fCBwZW5kaW5nLm9wZW4gPT09IGN1cnJlbnRseU9wZW4pKSB7XG4gICAgICAgICAgICBwZW5kaW5nID0gZXZlbnQ7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBlbmRpbmcgJiYgcGVuZGluZy5vcGVuICE9PSBldmVudC5vcGVuKSB7XG4gICAgICAgICAgICBwZW5kaW5nID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmUoKSk7XG4gICAgY29uc3QgZGVsYXllZE9wZW4kID0gZmlsdGVyZWRJbnB1dCQucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQub3BlbiksIGRlbGF5T3JOb29wKG9wZW5EZWxheSkpO1xuICAgIGNvbnN0IGRlbGF5ZWRDbG9zZSQgPSBmaWx0ZXJlZElucHV0JC5waXBlKGZpbHRlcihldmVudCA9PiAhZXZlbnQub3BlbiksIGRlbGF5T3JOb29wKGNsb3NlRGVsYXkpKTtcbiAgICByZXR1cm4gbWVyZ2UoZGVsYXllZE9wZW4kLCBkZWxheWVkQ2xvc2UkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiB7XG4gICAgICAgICAgICAgIGlmIChldmVudCA9PT0gcGVuZGluZykge1xuICAgICAgICAgICAgICAgIHBlbmRpbmcgPSBudWxsO1xuICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5vcGVuICE9PSBpc09wZW5lZEZuKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoZXZlbnQgPT4gZXZlbnQub3BlbikpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlzdGVuVG9UcmlnZ2VycyhcbiAgICByZW5kZXJlcjogYW55LCBuYXRpdmVFbGVtZW50OiBhbnksIHRyaWdnZXJzOiBzdHJpbmcsIGlzT3BlbmVkRm46ICgpID0+IGJvb2xlYW4sIG9wZW5GbiwgY2xvc2VGbiwgb3BlbkRlbGF5ID0gMCxcbiAgICBjbG9zZURlbGF5ID0gMCkge1xuICBjb25zdCBwYXJzZWRUcmlnZ2VycyA9IHBhcnNlVHJpZ2dlcnModHJpZ2dlcnMpO1xuXG4gIGlmIChwYXJzZWRUcmlnZ2Vycy5sZW5ndGggPT09IDEgJiYgcGFyc2VkVHJpZ2dlcnNbMF0uaXNNYW51YWwoKSkge1xuICAgIHJldHVybiAoKSA9PiB7fTtcbiAgfVxuXG4gIGNvbnN0IHN1YnNjcmlwdGlvbiA9IG9ic2VydmVUcmlnZ2VycyhyZW5kZXJlciwgbmF0aXZlRWxlbWVudCwgcGFyc2VkVHJpZ2dlcnMsIGlzT3BlbmVkRm4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZSh0cmlnZ2VyRGVsYXkob3BlbkRlbGF5LCBjbG9zZURlbGF5LCBpc09wZW5lZEZuKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUob3BlbiA9PiAob3BlbiA/IG9wZW5GbigpIDogY2xvc2VGbigpKSk7XG5cbiAgcmV0dXJuICgpID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xufVxuIiwiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGxhY2VtZW50QXJyYXl9IGZyb20gJy4uL3V0aWwvcG9zaXRpb25pbmcnO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBzZXJ2aWNlIGZvciB0aGUgW2BOZ2JQb3BvdmVyYF0oIy9jb21wb25lbnRzL3BvcG92ZXIvYXBpI05nYlBvcG92ZXIpIGNvbXBvbmVudC5cbiAqXG4gKiBZb3UgY2FuIGluamVjdCB0aGlzIHNlcnZpY2UsIHR5cGljYWxseSBpbiB5b3VyIHJvb3QgY29tcG9uZW50LCBhbmQgY3VzdG9taXplIHRoZSB2YWx1ZXMgb2YgaXRzIHByb3BlcnRpZXMgaW5cbiAqIG9yZGVyIHRvIHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUgcG9wb3ZlcnMgdXNlZCBpbiB0aGUgYXBwbGljYXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIE5nYlBvcG92ZXJDb25maWcge1xuICBhdXRvQ2xvc2U6IGJvb2xlYW4gfCAnaW5zaWRlJyB8ICdvdXRzaWRlJyA9IHRydWU7XG4gIHBsYWNlbWVudDogUGxhY2VtZW50QXJyYXkgPSAnYXV0byc7XG4gIHRyaWdnZXJzID0gJ2NsaWNrJztcbiAgY29udGFpbmVyOiBzdHJpbmc7XG4gIGRpc2FibGVQb3BvdmVyID0gZmFsc2U7XG4gIHBvcG92ZXJDbGFzczogc3RyaW5nO1xuICBvcGVuRGVsYXkgPSAwO1xuICBjbG9zZURlbGF5ID0gMDtcbn1cbiIsImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgT25DaGFuZ2VzLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBSZW5kZXJlcjIsXG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgTmdab25lLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEFwcGxpY2F0aW9uUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtsaXN0ZW5Ub1RyaWdnZXJzfSBmcm9tICcuLi91dGlsL3RyaWdnZXJzJztcbmltcG9ydCB7bmdiQXV0b0Nsb3NlfSBmcm9tICcuLi91dGlsL2F1dG9jbG9zZSc7XG5pbXBvcnQge3Bvc2l0aW9uRWxlbWVudHMsIFBsYWNlbWVudEFycmF5fSBmcm9tICcuLi91dGlsL3Bvc2l0aW9uaW5nJztcbmltcG9ydCB7UG9wdXBTZXJ2aWNlfSBmcm9tICcuLi91dGlsL3BvcHVwJztcblxuaW1wb3J0IHtOZ2JQb3BvdmVyQ29uZmlnfSBmcm9tICcuL3BvcG92ZXItY29uZmlnJztcblxubGV0IG5leHRJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nYi1wb3BvdmVyLXdpbmRvdycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7J1tjbGFzc10nOiAnXCJwb3BvdmVyXCIgKyAocG9wb3ZlckNsYXNzID8gXCIgXCIgKyBwb3BvdmVyQ2xhc3MgOiBcIlwiKScsICdyb2xlJzogJ3Rvb2x0aXAnLCAnW2lkXSc6ICdpZCd9LFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJhcnJvd1wiPjwvZGl2PlxuICAgIDxoMyBjbGFzcz1cInBvcG92ZXItaGVhZGVyXCIgKm5nSWY9XCJ0aXRsZSAhPSBudWxsXCI+XG4gICAgICA8bmctdGVtcGxhdGUgI3NpbXBsZVRpdGxlPnt7dGl0bGV9fTwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXNUaXRsZVRlbXBsYXRlKCkgPyB0aXRsZSA6IHNpbXBsZVRpdGxlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImNvbnRleHRcIj48L25nLXRlbXBsYXRlPlxuICAgIDwvaDM+XG4gICAgPGRpdiBjbGFzcz1cInBvcG92ZXItYm9keVwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5gLFxuICBzdHlsZVVybHM6IFsnLi9wb3BvdmVyLnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZ2JQb3BvdmVyV2luZG93IHtcbiAgQElucHV0KCkgdGl0bGU6IHVuZGVmaW5lZCB8IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBvcG92ZXJDbGFzczogc3RyaW5nO1xuICBASW5wdXQoKSBjb250ZXh0OiBhbnk7XG5cbiAgaXNUaXRsZVRlbXBsYXRlKCkgeyByZXR1cm4gdGhpcy50aXRsZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmOyB9XG59XG5cbi8qKlxuICogQSBsaWdodHdlaWdodCBhbmQgZXh0ZW5zaWJsZSBkaXJlY3RpdmUgZm9yIGZhbmN5IHBvcG92ZXIgY3JlYXRpb24uXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnW25nYlBvcG92ZXJdJywgZXhwb3J0QXM6ICduZ2JQb3BvdmVyJ30pXG5leHBvcnQgY2xhc3MgTmdiUG9wb3ZlciBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHBvcG92ZXIgc2hvdWxkIGJlIGNsb3NlZCBvbiBgRXNjYXBlYCBrZXkgYW5kIGluc2lkZS9vdXRzaWRlIGNsaWNrczpcbiAgICpcbiAgICogKiBgdHJ1ZWAgLSBjbG9zZXMgb24gYm90aCBvdXRzaWRlIGFuZCBpbnNpZGUgY2xpY2tzIGFzIHdlbGwgYXMgYEVzY2FwZWAgcHJlc3Nlc1xuICAgKiAqIGBmYWxzZWAgLSBkaXNhYmxlcyB0aGUgYXV0b0Nsb3NlIGZlYXR1cmUgKE5COiB0cmlnZ2VycyBzdGlsbCBhcHBseSlcbiAgICogKiBgXCJpbnNpZGVcImAgLSBjbG9zZXMgb24gaW5zaWRlIGNsaWNrcyBhcyB3ZWxsIGFzIEVzY2FwZSBwcmVzc2VzXG4gICAqICogYFwib3V0c2lkZVwiYCAtIGNsb3NlcyBvbiBvdXRzaWRlIGNsaWNrcyAoc29tZXRpbWVzIGFsc28gYWNoaWV2YWJsZSB0aHJvdWdoIHRyaWdnZXJzKVxuICAgKiBhcyB3ZWxsIGFzIGBFc2NhcGVgIHByZXNzZXNcbiAgICpcbiAgICogQHNpbmNlIDMuMC4wXG4gICAqL1xuICBASW5wdXQoKSBhdXRvQ2xvc2U6IGJvb2xlYW4gfCAnaW5zaWRlJyB8ICdvdXRzaWRlJztcblxuICAvKipcbiAgICogVGhlIHN0cmluZyBjb250ZW50IG9yIGEgYFRlbXBsYXRlUmVmYCBmb3IgdGhlIGNvbnRlbnQgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBwb3BvdmVyLlxuICAgKlxuICAgKiBJZiB0aGUgdGl0bGUgYW5kIHRoZSBjb250ZW50IGFyZSBlbXB0eSwgdGhlIHBvcG92ZXIgd29uJ3Qgb3Blbi5cbiAgICovXG4gIEBJbnB1dCgpIG5nYlBvcG92ZXI6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgcG9wb3Zlci5cbiAgICpcbiAgICogSWYgdGhlIHRpdGxlIGFuZCB0aGUgY29udGVudCBhcmUgZW1wdHksIHRoZSBwb3BvdmVyIHdvbid0IG9wZW4uXG4gICAqL1xuICBASW5wdXQoKSBwb3BvdmVyVGl0bGU6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmZXJyZWQgcGxhY2VtZW50IG9mIHRoZSBwb3BvdmVyLlxuICAgKlxuICAgKiBQb3NzaWJsZSB2YWx1ZXMgYXJlIGBcInRvcFwiYCwgYFwidG9wLWxlZnRcImAsIGBcInRvcC1yaWdodFwiYCwgYFwiYm90dG9tXCJgLCBgXCJib3R0b20tbGVmdFwiYCxcbiAgICogYFwiYm90dG9tLXJpZ2h0XCJgLCBgXCJsZWZ0XCJgLCBgXCJsZWZ0LXRvcFwiYCwgYFwibGVmdC1ib3R0b21cImAsIGBcInJpZ2h0XCJgLCBgXCJyaWdodC10b3BcImAsXG4gICAqIGBcInJpZ2h0LWJvdHRvbVwiYFxuICAgKlxuICAgKiBBY2NlcHRzIGFuIGFycmF5IG9mIHN0cmluZ3Mgb3IgYSBzdHJpbmcgd2l0aCBzcGFjZSBzZXBhcmF0ZWQgcG9zc2libGUgdmFsdWVzLlxuICAgKlxuICAgKiBUaGUgZGVmYXVsdCBvcmRlciBvZiBwcmVmZXJlbmNlIGlzIGBcImF1dG9cImAgKHNhbWUgYXMgdGhlIHNlcXVlbmNlIGFib3ZlKS5cbiAgICpcbiAgICogUGxlYXNlIHNlZSB0aGUgW3Bvc2l0aW9uaW5nIG92ZXJ2aWV3XSgjL3Bvc2l0aW9uaW5nKSBmb3IgbW9yZSBkZXRhaWxzLlxuICAgKi9cbiAgQElucHV0KCkgcGxhY2VtZW50OiBQbGFjZW1lbnRBcnJheTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGV2ZW50cyB0aGF0IHNob3VsZCB0cmlnZ2VyIHRoZSB0b29sdGlwLlxuICAgKlxuICAgKiBTdXBwb3J0cyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGV2ZW50IG5hbWVzLlxuICAgKiBGb3IgbW9yZSBkZXRhaWxzIHNlZSB0aGUgW3RyaWdnZXJzIGRlbW9dKCMvY29tcG9uZW50cy9wb3BvdmVyL2V4YW1wbGVzI3RyaWdnZXJzKS5cbiAgICovXG4gIEBJbnB1dCgpIHRyaWdnZXJzOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc2VsZWN0b3Igc3BlY2lmeWluZyB0aGUgZWxlbWVudCB0aGUgcG9wb3ZlciBzaG91bGQgYmUgYXBwZW5kZWQgdG8uXG4gICAqXG4gICAqIEN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIGBib2R5YC5cbiAgICovXG4gIEBJbnB1dCgpIGNvbnRhaW5lcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHBvcG92ZXIgaXMgZGlzYWJsZWQgYW5kIHdvbid0IGJlIGRpc3BsYXllZC5cbiAgICpcbiAgICogQHNpbmNlIDEuMS4wXG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlUG9wb3ZlcjogYm9vbGVhbjtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgY2xhc3MgYXBwbGllZCB0byB0aGUgcG9wb3ZlciB3aW5kb3cgZWxlbWVudC5cbiAgICpcbiAgICogQHNpbmNlIDIuMi4wXG4gICAqL1xuICBASW5wdXQoKSBwb3BvdmVyQ2xhc3M6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG9wZW5pbmcgZGVsYXkgaW4gbXMuIFdvcmtzIG9ubHkgZm9yIFwibm9uLW1hbnVhbFwiIG9wZW5pbmcgdHJpZ2dlcnMgZGVmaW5lZCBieSB0aGUgYHRyaWdnZXJzYCBpbnB1dC5cbiAgICpcbiAgICogQHNpbmNlIDQuMS4wXG4gICAqL1xuICBASW5wdXQoKSBvcGVuRGVsYXk6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGNsb3NpbmcgZGVsYXkgaW4gbXMuIFdvcmtzIG9ubHkgZm9yIFwibm9uLW1hbnVhbFwiIG9wZW5pbmcgdHJpZ2dlcnMgZGVmaW5lZCBieSB0aGUgYHRyaWdnZXJzYCBpbnB1dC5cbiAgICpcbiAgICogQHNpbmNlIDQuMS4wXG4gICAqL1xuICBASW5wdXQoKSBjbG9zZURlbGF5OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgcG9wb3ZlciBpcyBzaG93bi4gQ29udGFpbnMgbm8gcGF5bG9hZC5cbiAgICovXG4gIEBPdXRwdXQoKSBzaG93biA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwb3BvdmVyIGlzIGhpZGRlbi4gQ29udGFpbnMgbm8gcGF5bG9hZC5cbiAgICovXG4gIEBPdXRwdXQoKSBoaWRkZW4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBfbmdiUG9wb3ZlcldpbmRvd0lkID0gYG5nYi1wb3BvdmVyLSR7bmV4dElkKyt9YDtcbiAgcHJpdmF0ZSBfcG9wdXBTZXJ2aWNlOiBQb3B1cFNlcnZpY2U8TmdiUG9wb3ZlcldpbmRvdz47XG4gIHByaXZhdGUgX3dpbmRvd1JlZjogQ29tcG9uZW50UmVmPE5nYlBvcG92ZXJXaW5kb3c+O1xuICBwcml2YXRlIF91bnJlZ2lzdGVyTGlzdGVuZXJzRm47XG4gIHByaXZhdGUgX3pvbmVTdWJzY3JpcHRpb246IGFueTtcbiAgcHJpdmF0ZSBfaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlUG9wb3Zlcikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICghdGhpcy5uZ2JQb3BvdmVyICYmICF0aGlzLnBvcG92ZXJUaXRsZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBjb25maWc6IE5nYlBvcG92ZXJDb25maWcsXG4gICAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSwgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueSwgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgcHJpdmF0ZSBfYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmKSB7XG4gICAgdGhpcy5hdXRvQ2xvc2UgPSBjb25maWcuYXV0b0Nsb3NlO1xuICAgIHRoaXMucGxhY2VtZW50ID0gY29uZmlnLnBsYWNlbWVudDtcbiAgICB0aGlzLnRyaWdnZXJzID0gY29uZmlnLnRyaWdnZXJzO1xuICAgIHRoaXMuY29udGFpbmVyID0gY29uZmlnLmNvbnRhaW5lcjtcbiAgICB0aGlzLmRpc2FibGVQb3BvdmVyID0gY29uZmlnLmRpc2FibGVQb3BvdmVyO1xuICAgIHRoaXMucG9wb3ZlckNsYXNzID0gY29uZmlnLnBvcG92ZXJDbGFzcztcbiAgICB0aGlzLm9wZW5EZWxheSA9IGNvbmZpZy5vcGVuRGVsYXk7XG4gICAgdGhpcy5jbG9zZURlbGF5ID0gY29uZmlnLmNsb3NlRGVsYXk7XG4gICAgdGhpcy5fcG9wdXBTZXJ2aWNlID0gbmV3IFBvcHVwU2VydmljZTxOZ2JQb3BvdmVyV2luZG93PihcbiAgICAgICAgTmdiUG9wb3ZlcldpbmRvdywgaW5qZWN0b3IsIHZpZXdDb250YWluZXJSZWYsIF9yZW5kZXJlciwgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBfYXBwbGljYXRpb25SZWYpO1xuXG4gICAgdGhpcy5fem9uZVN1YnNjcmlwdGlvbiA9IF9uZ1pvbmUub25TdGFibGUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl93aW5kb3dSZWYpIHtcbiAgICAgICAgcG9zaXRpb25FbGVtZW50cyhcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5fd2luZG93UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsIHRoaXMucGxhY2VtZW50LFxuICAgICAgICAgICAgdGhpcy5jb250YWluZXIgPT09ICdib2R5JywgJ2JzLXBvcG92ZXInKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgcG9wb3Zlci5cbiAgICpcbiAgICogVGhpcyBpcyBjb25zaWRlcmVkIHRvIGJlIGEgXCJtYW51YWxcIiB0cmlnZ2VyaW5nLlxuICAgKiBUaGUgYGNvbnRleHRgIGlzIGFuIG9wdGlvbmFsIHZhbHVlIHRvIGJlIGluamVjdGVkIGludG8gdGhlIHBvcG92ZXIgdGVtcGxhdGUgd2hlbiBpdCBpcyBjcmVhdGVkLlxuICAgKi9cbiAgb3Blbihjb250ZXh0PzogYW55KSB7XG4gICAgaWYgKCF0aGlzLl93aW5kb3dSZWYgJiYgIXRoaXMuX2lzRGlzYWJsZWQoKSkge1xuICAgICAgdGhpcy5fd2luZG93UmVmID0gdGhpcy5fcG9wdXBTZXJ2aWNlLm9wZW4odGhpcy5uZ2JQb3BvdmVyLCBjb250ZXh0KTtcbiAgICAgIHRoaXMuX3dpbmRvd1JlZi5pbnN0YW5jZS50aXRsZSA9IHRoaXMucG9wb3ZlclRpdGxlO1xuICAgICAgdGhpcy5fd2luZG93UmVmLmluc3RhbmNlLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgdGhpcy5fd2luZG93UmVmLmluc3RhbmNlLnBvcG92ZXJDbGFzcyA9IHRoaXMucG9wb3ZlckNsYXNzO1xuICAgICAgdGhpcy5fd2luZG93UmVmLmluc3RhbmNlLmlkID0gdGhpcy5fbmdiUG9wb3ZlcldpbmRvd0lkO1xuXG4gICAgICB0aGlzLl9yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnYXJpYS1kZXNjcmliZWRieScsIHRoaXMuX25nYlBvcG92ZXJXaW5kb3dJZCk7XG5cbiAgICAgIGlmICh0aGlzLmNvbnRhaW5lciA9PT0gJ2JvZHknKSB7XG4gICAgICAgIHRoaXMuX2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5jb250YWluZXIpLmFwcGVuZENoaWxkKHRoaXMuX3dpbmRvd1JlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgIH1cblxuICAgICAgLy8gV2UgbmVlZCB0byBkZXRlY3QgY2hhbmdlcywgYmVjYXVzZSB3ZSBkb24ndCBrbm93IHdoZXJlIC5vcGVuKCkgbWlnaHQgYmUgY2FsbGVkIGZyb20uXG4gICAgICAvLyBFeC4gb3BlbmluZyBwb3BvdmVyIGZyb20gb25lIG9mIGxpZmVjeWNsZSBob29rcyB0aGF0IHJ1biBhZnRlciB0aGUgQ0RcbiAgICAgIC8vIChzYXkgZnJvbSBuZ0FmdGVyVmlld0luaXQpIHdpbGwgcmVzdWx0IGluICdFeHByZXNzaW9uSGFzQ2hhbmdlZCcgZXhjZXB0aW9uXG4gICAgICB0aGlzLl93aW5kb3dSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAvLyBXZSBuZWVkIHRvIG1hcmsgZm9yIGNoZWNrLCBiZWNhdXNlIHBvcG92ZXIgd29uJ3Qgd29yayBpbnNpZGUgdGhlIE9uUHVzaCBjb21wb25lbnQuXG4gICAgICAvLyBFeC4gd2hlbiB3ZSB1c2UgZXhwcmVzc2lvbiBsaWtlIGB7eyBwb3BvdmVyLmlzT3BlbigpIDogJ29wZW5lZCcgOiAnY2xvc2VkJyB9fWBcbiAgICAgIC8vIGluc2lkZSB0aGUgdGVtcGxhdGUgb2YgYW4gT25QdXNoIGNvbXBvbmVudCBhbmQgd2UgY2hhbmdlIHRoZSBwb3BvdmVyIGZyb21cbiAgICAgIC8vIG9wZW4gLT4gY2xvc2VkLCB0aGUgZXhwcmVzc2lvbiBpbiBxdWVzdGlvbiB3b24ndCBiZSB1cGRhdGVkIHVubGVzcyB3ZSBleHBsaWNpdGx5XG4gICAgICAvLyBtYXJrIHRoZSBwYXJlbnQgY29tcG9uZW50IHRvIGJlIGNoZWNrZWQuXG4gICAgICB0aGlzLl93aW5kb3dSZWYuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgIG5nYkF1dG9DbG9zZShcbiAgICAgICAgICB0aGlzLl9uZ1pvbmUsIHRoaXMuX2RvY3VtZW50LCB0aGlzLmF1dG9DbG9zZSwgKCkgPT4gdGhpcy5jbG9zZSgpLCB0aGlzLmhpZGRlbixcbiAgICAgICAgICBbdGhpcy5fd2luZG93UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnRdKTtcbiAgICAgIHRoaXMuc2hvd24uZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIHBvcG92ZXIuXG4gICAqXG4gICAqIFRoaXMgaXMgY29uc2lkZXJlZCB0byBiZSBhIFwibWFudWFsXCIgdHJpZ2dlcmluZyBvZiB0aGUgcG9wb3Zlci5cbiAgICovXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93aW5kb3dSZWYpIHtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdhcmlhLWRlc2NyaWJlZGJ5Jyk7XG4gICAgICB0aGlzLl9wb3B1cFNlcnZpY2UuY2xvc2UoKTtcbiAgICAgIHRoaXMuX3dpbmRvd1JlZiA9IG51bGw7XG4gICAgICB0aGlzLmhpZGRlbi5lbWl0KCk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgcG9wb3Zlci5cbiAgICpcbiAgICogVGhpcyBpcyBjb25zaWRlcmVkIHRvIGJlIGEgXCJtYW51YWxcIiB0cmlnZ2VyaW5nIG9mIHRoZSBwb3BvdmVyLlxuICAgKi9cbiAgdG9nZ2xlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93aW5kb3dSZWYpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYHRydWVgLCBpZiB0aGUgcG9wb3ZlciBpcyBjdXJyZW50bHkgc2hvd24uXG4gICAqL1xuICBpc09wZW4oKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl93aW5kb3dSZWYgIT0gbnVsbDsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX3VucmVnaXN0ZXJMaXN0ZW5lcnNGbiA9IGxpc3RlblRvVHJpZ2dlcnMoXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLCB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMudHJpZ2dlcnMsIHRoaXMuaXNPcGVuLmJpbmQodGhpcyksIHRoaXMub3Blbi5iaW5kKHRoaXMpLFxuICAgICAgICB0aGlzLmNsb3NlLmJpbmQodGhpcyksICt0aGlzLm9wZW5EZWxheSwgK3RoaXMuY2xvc2VEZWxheSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgLy8gY2xvc2UgcG9wb3ZlciBpZiB0aXRsZSBhbmQgY29udGVudCBiZWNvbWUgZW1wdHksIG9yIGRpc2FibGVQb3BvdmVyIHNldCB0byB0cnVlXG4gICAgaWYgKChjaGFuZ2VzWyduZ2JQb3BvdmVyJ10gfHwgY2hhbmdlc1sncG9wb3ZlclRpdGxlJ10gfHwgY2hhbmdlc1snZGlzYWJsZVBvcG92ZXInXSkgJiYgdGhpcy5faXNEaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICAgIC8vIFRoaXMgY2hlY2sgaXMgbmVlZGVkIGFzIGl0IG1pZ2h0IGhhcHBlbiB0aGF0IG5nT25EZXN0cm95IGlzIGNhbGxlZCBiZWZvcmUgbmdPbkluaXRcbiAgICAvLyB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL25nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvaXNzdWVzLzIxOTlcbiAgICBpZiAodGhpcy5fdW5yZWdpc3Rlckxpc3RlbmVyc0ZuKSB7XG4gICAgICB0aGlzLl91bnJlZ2lzdGVyTGlzdGVuZXJzRm4oKTtcbiAgICB9XG4gICAgdGhpcy5fem9uZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCJpbXBvcnQge05nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtOZ2JQb3BvdmVyLCBOZ2JQb3BvdmVyV2luZG93fSBmcm9tICcuL3BvcG92ZXInO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmV4cG9ydCB7TmdiUG9wb3Zlcn0gZnJvbSAnLi9wb3BvdmVyJztcbmV4cG9ydCB7TmdiUG9wb3ZlckNvbmZpZ30gZnJvbSAnLi9wb3BvdmVyLWNvbmZpZyc7XG5leHBvcnQge1BsYWNlbWVudH0gZnJvbSAnLi4vdXRpbC9wb3NpdGlvbmluZyc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW05nYlBvcG92ZXIsIE5nYlBvcG92ZXJXaW5kb3ddLFxuICBleHBvcnRzOiBbTmdiUG9wb3Zlcl0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBlbnRyeUNvbXBvbmVudHM6IFtOZ2JQb3BvdmVyV2luZG93XVxufSlcbmV4cG9ydCBjbGFzcyBOZ2JQb3BvdmVyTW9kdWxlIHtcbiAgLyoqXG4gICAqIEltcG9ydGluZyB3aXRoICcuZm9yUm9vdCgpJyBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LCB5b3UgY2FuIHNpbXBseSBpbXBvcnQgdGhlIG1vZHVsZS5cbiAgICogV2lsbCBiZSByZW1vdmVkIGluIDQuMC4wLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCAzLjAuMFxuICAgKi9cbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVycyB7IHJldHVybiB7bmdNb2R1bGU6IE5nYlBvcG92ZXJNb2R1bGV9OyB9XG59XG4iLCJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBzZXJ2aWNlIGZvciB0aGUgW2BOZ2JQcm9ncmVzc2JhcmBdKCMvY29tcG9uZW50cy9wcm9ncmVzc2Jhci9hcGkjTmdiUHJvZ3Jlc3NiYXIpIGNvbXBvbmVudC5cbiAqXG4gKiBZb3UgY2FuIGluamVjdCB0aGlzIHNlcnZpY2UsIHR5cGljYWxseSBpbiB5b3VyIHJvb3QgY29tcG9uZW50LCBhbmQgY3VzdG9taXplIHRoZSB2YWx1ZXMgb2YgaXRzIHByb3BlcnRpZXMgaW5cbiAqIG9yZGVyIHRvIHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUgcHJvZ3Jlc3MgYmFycyB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTmdiUHJvZ3Jlc3NiYXJDb25maWcge1xuICBtYXggPSAxMDA7XG4gIGFuaW1hdGVkID0gZmFsc2U7XG4gIHN0cmlwZWQgPSBmYWxzZTtcbiAgdHlwZTogc3RyaW5nO1xuICBzaG93VmFsdWUgPSBmYWxzZTtcbiAgaGVpZ2h0OiBzdHJpbmc7XG59XG4iLCJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Z2V0VmFsdWVJblJhbmdlfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IHtOZ2JQcm9ncmVzc2JhckNvbmZpZ30gZnJvbSAnLi9wcm9ncmVzc2Jhci1jb25maWcnO1xuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRoYXQgcHJvdmlkZXMgZmVlZGJhY2sgb24gdGhlIHByb2dyZXNzIG9mIGEgd29ya2Zsb3cgb3IgYW4gYWN0aW9uLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ItcHJvZ3Jlc3NiYXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIiBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhcnt7dHlwZSA/ICcgYmctJyArIHR5cGUgOiAnJ319e3thbmltYXRlZCA/ICcgcHJvZ3Jlc3MtYmFyLWFuaW1hdGVkJyA6ICcnfX17e3N0cmlwZWQgP1xuICAgICcgcHJvZ3Jlc3MtYmFyLXN0cmlwZWQnIDogJyd9fVwiIHJvbGU9XCJwcm9ncmVzc2JhclwiIFtzdHlsZS53aWR0aC4lXT1cImdldFBlcmNlbnRWYWx1ZSgpXCJcbiAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cImdldFZhbHVlKClcIiBhcmlhLXZhbHVlbWluPVwiMFwiIFthdHRyLmFyaWEtdmFsdWVtYXhdPVwibWF4XCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd1ZhbHVlXCIgaTE4bj1cIkBAbmdiLnByb2dyZXNzYmFyLnZhbHVlXCI+e3tnZXRQZXJjZW50VmFsdWUoKX19JTwvc3Bhbj48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBOZ2JQcm9ncmVzc2JhciB7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW1hbCB2YWx1ZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHByb2dyZXNzYmFyLlxuICAgKi9cbiAgQElucHV0KCkgbWF4OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHN0cmlwZXMgb24gdGhlIHByb2dyZXNzYmFyIGFyZSBhbmltYXRlZC5cbiAgICpcbiAgICogVGFrZXMgZWZmZWN0IG9ubHkgZm9yIGJyb3dzZXJzIHN1cHBvcnRpbmcgQ1NTMyBhbmltYXRpb25zLCBhbmQgaWYgYHN0cmlwZWRgIGlzIGB0cnVlYC5cbiAgICovXG4gIEBJbnB1dCgpIGFuaW1hdGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBwcm9ncmVzcyBiYXJzIHdpbGwgYmUgZGlzcGxheWVkIGFzIHN0cmlwZWQuXG4gICAqL1xuICBASW5wdXQoKSBzdHJpcGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjdXJyZW50IHBlcmNlbnRhZ2Ugd2lsbCBiZSBzaG93biBpbiB0aGUgYHh4JWAgZm9ybWF0LlxuICAgKi9cbiAgQElucHV0KCkgc2hvd1ZhbHVlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgcHJvZ3Jlc3MgYmFyLlxuICAgKlxuICAgKiBDdXJyZW50bHkgQm9vdHN0cmFwIHN1cHBvcnRzIGBcInN1Y2Nlc3NcImAsIGBcImluZm9cImAsIGBcIndhcm5pbmdcImAgb3IgYFwiZGFuZ2VyXCJgLlxuICAgKi9cbiAgQElucHV0KCkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCB2YWx1ZSBmb3IgdGhlIHByb2dyZXNzIGJhci5cbiAgICpcbiAgICogU2hvdWxkIGJlIGluIHRoZSBgWzAsIG1heF1gIHJhbmdlLlxuICAgKi9cbiAgQElucHV0KCkgdmFsdWUgPSAwO1xuXG4gIC8qKlxuICAgKiBUSGUgaGVpZ2h0IG9mIHRoZSBwcm9ncmVzcyBiYXIuXG4gICAqXG4gICAqIEFjY2VwdHMgYW55IHZhbGlkIENTUyBoZWlnaHQgdmFsdWVzLCBleC4gYFwiMnJlbVwiYFxuICAgKi9cbiAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBOZ2JQcm9ncmVzc2JhckNvbmZpZykge1xuICAgIHRoaXMubWF4ID0gY29uZmlnLm1heDtcbiAgICB0aGlzLmFuaW1hdGVkID0gY29uZmlnLmFuaW1hdGVkO1xuICAgIHRoaXMuc3RyaXBlZCA9IGNvbmZpZy5zdHJpcGVkO1xuICAgIHRoaXMudHlwZSA9IGNvbmZpZy50eXBlO1xuICAgIHRoaXMuc2hvd1ZhbHVlID0gY29uZmlnLnNob3dWYWx1ZTtcbiAgICB0aGlzLmhlaWdodCA9IGNvbmZpZy5oZWlnaHQ7XG4gIH1cblxuICBnZXRWYWx1ZSgpIHsgcmV0dXJuIGdldFZhbHVlSW5SYW5nZSh0aGlzLnZhbHVlLCB0aGlzLm1heCk7IH1cblxuICBnZXRQZXJjZW50VmFsdWUoKSB7IHJldHVybiAxMDAgKiB0aGlzLmdldFZhbHVlKCkgLyB0aGlzLm1heDsgfVxufVxuIiwiaW1wb3J0IHtOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtOZ2JQcm9ncmVzc2Jhcn0gZnJvbSAnLi9wcm9ncmVzc2Jhcic7XG5cbmV4cG9ydCB7TmdiUHJvZ3Jlc3NiYXJ9IGZyb20gJy4vcHJvZ3Jlc3NiYXInO1xuZXhwb3J0IHtOZ2JQcm9ncmVzc2JhckNvbmZpZ30gZnJvbSAnLi9wcm9ncmVzc2Jhci1jb25maWcnO1xuXG5ATmdNb2R1bGUoe2RlY2xhcmF0aW9uczogW05nYlByb2dyZXNzYmFyXSwgZXhwb3J0czogW05nYlByb2dyZXNzYmFyXSwgaW1wb3J0czogW0NvbW1vbk1vZHVsZV19KVxuZXhwb3J0IGNsYXNzIE5nYlByb2dyZXNzYmFyTW9kdWxlIHtcbiAgLyoqXG4gICAqIEltcG9ydGluZyB3aXRoICcuZm9yUm9vdCgpJyBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LCB5b3UgY2FuIHNpbXBseSBpbXBvcnQgdGhlIG1vZHVsZS5cbiAgICogV2lsbCBiZSByZW1vdmVkIGluIDQuMC4wLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCAzLjAuMFxuICAgKi9cbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVycyB7IHJldHVybiB7bmdNb2R1bGU6IE5nYlByb2dyZXNzYmFyTW9kdWxlfTsgfVxufVxuIiwiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBBIGNvbmZpZ3VyYXRpb24gc2VydmljZSBmb3IgdGhlIFtgTmdiUmF0aW5nYF0oIy9jb21wb25lbnRzL3JhdGluZy9hcGkjTmdiUmF0aW5nKSBjb21wb25lbnQuXG4gKlxuICogWW91IGNhbiBpbmplY3QgdGhpcyBzZXJ2aWNlLCB0eXBpY2FsbHkgaW4geW91ciByb290IGNvbXBvbmVudCwgYW5kIGN1c3RvbWl6ZSB0aGUgdmFsdWVzIG9mIGl0cyBwcm9wZXJ0aWVzIGluXG4gKiBvcmRlciB0byBwcm92aWRlIGRlZmF1bHQgdmFsdWVzIGZvciBhbGwgdGhlIHJhdGluZ3MgdXNlZCBpbiB0aGUgYXBwbGljYXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIE5nYlJhdGluZ0NvbmZpZyB7XG4gIG1heCA9IDEwO1xuICByZWFkb25seSA9IGZhbHNlO1xuICByZXNldHRhYmxlID0gZmFsc2U7XG59XG4iLCJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQ29udGVudENoaWxkLFxuICBmb3J3YXJkUmVmLFxuICBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdiUmF0aW5nQ29uZmlnfSBmcm9tICcuL3JhdGluZy1jb25maWcnO1xuaW1wb3J0IHtnZXRWYWx1ZUluUmFuZ2V9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQge0tleX0gZnJvbSAnLi4vdXRpbC9rZXknO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiBUaGUgY29udGV4dCBmb3IgdGhlIGN1c3RvbSBzdGFyIGRpc3BsYXkgdGVtcGxhdGUgZGVmaW5lZCBpbiB0aGUgYHN0YXJUZW1wbGF0ZWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhclRlbXBsYXRlQ29udGV4dCB7XG4gIC8qKlxuICAgKiBUaGUgc3RhciBmaWxsIHBlcmNlbnRhZ2UsIGFuIGludGVnZXIgaW4gdGhlIGBbMCwgMTAwXWAgcmFuZ2UuXG4gICAqL1xuICBmaWxsOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEluZGV4IG9mIHRoZSBzdGFyLCBzdGFydHMgd2l0aCBgMGAuXG4gICAqL1xuICBpbmRleDogbnVtYmVyO1xufVxuXG5jb25zdCBOR0JfUkFUSU5HX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmdiUmF0aW5nKSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgdGhhdCBoZWxwcyB2aXN1YWxpc2luZyBhbmQgaW50ZXJhY3Rpbmcgd2l0aCBhIHN0YXIgcmF0aW5nIGJhci5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdiLXJhdGluZycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ2QtaW5saW5lLWZsZXgnLFxuICAgICd0YWJpbmRleCc6ICcwJyxcbiAgICAncm9sZSc6ICdzbGlkZXInLFxuICAgICdhcmlhLXZhbHVlbWluJzogJzAnLFxuICAgICdbYXR0ci5hcmlhLXZhbHVlbWF4XSc6ICdtYXgnLFxuICAgICdbYXR0ci5hcmlhLXZhbHVlbm93XSc6ICduZXh0UmF0ZScsXG4gICAgJ1thdHRyLmFyaWEtdmFsdWV0ZXh0XSc6ICdhcmlhVmFsdWVUZXh0KCknLFxuICAgICdbYXR0ci5hcmlhLWRpc2FibGVkXSc6ICdyZWFkb25seSA/IHRydWUgOiBudWxsJyxcbiAgICAnKGJsdXIpJzogJ2hhbmRsZUJsdXIoKScsXG4gICAgJyhrZXlkb3duKSc6ICdoYW5kbGVLZXlEb3duKCRldmVudCknLFxuICAgICcobW91c2VsZWF2ZSknOiAncmVzZXQoKSdcbiAgfSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI3QgbGV0LWZpbGw9XCJmaWxsXCI+e3sgZmlsbCA9PT0gMTAwID8gJyYjOTczMzsnIDogJyYjOTczNDsnIH19PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgbmdGb3IgW25nRm9yT2ZdPVwiY29udGV4dHNcIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+KHt7IGluZGV4IDwgbmV4dFJhdGUgPyAnKicgOiAnICcgfX0pPC9zcGFuPlxuICAgICAgPHNwYW4gKG1vdXNlZW50ZXIpPVwiZW50ZXIoaW5kZXggKyAxKVwiIChjbGljayk9XCJoYW5kbGVDbGljayhpbmRleCArIDEpXCIgW3N0eWxlLmN1cnNvcl09XCJyZWFkb25seSB8fCBkaXNhYmxlZCA/ICdkZWZhdWx0JyA6ICdwb2ludGVyJ1wiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RhclRlbXBsYXRlIHx8IHN0YXJUZW1wbGF0ZUZyb21Db250ZW50IHx8IHRcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiY29udGV4dHNbaW5kZXhdXCI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbTkdCX1JBVElOR19WQUxVRV9BQ0NFU1NPUl1cbn0pXG5leHBvcnQgY2xhc3MgTmdiUmF0aW5nIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgT25Jbml0LCBPbkNoYW5nZXMge1xuICBjb250ZXh0czogU3RhclRlbXBsYXRlQ29udGV4dFtdID0gW107XG4gIGRpc2FibGVkID0gZmFsc2U7XG4gIG5leHRSYXRlOiBudW1iZXI7XG5cblxuICAvKipcbiAgICogVGhlIG1heGltYWwgcmF0aW5nIHRoYXQgY2FuIGJlIGdpdmVuLlxuICAgKi9cbiAgQElucHV0KCkgbWF4OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHJhdGluZy4gQ291bGQgYmUgYSBkZWNpbWFsIHZhbHVlIGxpa2UgYDMuNzVgLlxuICAgKi9cbiAgQElucHV0KCkgcmF0ZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSByYXRpbmcgY2FuJ3QgYmUgY2hhbmdlZC5cbiAgICovXG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSByYXRpbmcgY2FuIGJlIHJlc2V0IHRvIGAwYCBieSBtb3VzZSBjbGlja2luZyBjdXJyZW50bHkgc2V0IHJhdGluZy5cbiAgICovXG4gIEBJbnB1dCgpIHJlc2V0dGFibGU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSB0ZW1wbGF0ZSB0byBvdmVycmlkZSB0aGUgd2F5IGVhY2ggc3RhciBpcyBkaXNwbGF5ZWQuXG4gICAqXG4gICAqIEFsdGVybmF0aXZlbHkgcHV0IGFuIGA8bmctdGVtcGxhdGU+YCBhcyB0aGUgb25seSBjaGlsZCBvZiB5b3VyIGA8bmdiLXJhdGluZz5gIGVsZW1lbnRcbiAgICovXG4gIEBJbnB1dCgpIHN0YXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8U3RhclRlbXBsYXRlQ29udGV4dD47XG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpIHN0YXJUZW1wbGF0ZUZyb21Db250ZW50OiBUZW1wbGF0ZVJlZjxTdGFyVGVtcGxhdGVDb250ZXh0PjtcblxuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIGlzIGhvdmVyaW5nIG92ZXIgYSBnaXZlbiByYXRpbmcuXG4gICAqXG4gICAqIEV2ZW50IHBheWxvYWQgZXF1YWxzIHRvIHRoZSByYXRpbmcgYmVpbmcgaG92ZXJlZCBvdmVyLlxuICAgKi9cbiAgQE91dHB1dCgpIGhvdmVyID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgdXNlciBzdG9wcyBob3ZlcmluZyBvdmVyIGEgZ2l2ZW4gcmF0aW5nLlxuICAgKlxuICAgKiBFdmVudCBwYXlsb2FkIGVxdWFscyB0byB0aGUgcmF0aW5nIG9mIHRoZSBsYXN0IGl0ZW0gYmVpbmcgaG92ZXJlZCBvdmVyLlxuICAgKi9cbiAgQE91dHB1dCgpIGxlYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgbmV3IHJhdGluZy5cbiAgICpcbiAgICogRXZlbnQgcGF5bG9hZCBlcXVhbHMgdG8gdGhlIG5ld2x5IHNlbGVjdGVkIHJhdGluZy5cbiAgICovXG4gIEBPdXRwdXQoKSByYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KHRydWUpO1xuXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogTmdiUmF0aW5nQ29uZmlnLCBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB0aGlzLm1heCA9IGNvbmZpZy5tYXg7XG4gICAgdGhpcy5yZWFkb25seSA9IGNvbmZpZy5yZWFkb25seTtcbiAgfVxuXG4gIGFyaWFWYWx1ZVRleHQoKSB7IHJldHVybiBgJHt0aGlzLm5leHRSYXRlfSBvdXQgb2YgJHt0aGlzLm1heH1gOyB9XG5cbiAgZW50ZXIodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZWFkb25seSAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5fdXBkYXRlU3RhdGUodmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLmhvdmVyLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgaGFuZGxlQmx1cigpIHsgdGhpcy5vblRvdWNoZWQoKTsgfVxuXG4gIGhhbmRsZUNsaWNrKHZhbHVlOiBudW1iZXIpIHsgdGhpcy51cGRhdGUodGhpcy5yZXNldHRhYmxlICYmIHRoaXMucmF0ZSA9PT0gdmFsdWUgPyAwIDogdmFsdWUpOyB9XG5cbiAgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkZXByZWNhdGlvblxuICAgIHN3aXRjaCAoZXZlbnQud2hpY2gpIHtcbiAgICAgIGNhc2UgS2V5LkFycm93RG93bjpcbiAgICAgIGNhc2UgS2V5LkFycm93TGVmdDpcbiAgICAgICAgdGhpcy51cGRhdGUodGhpcy5yYXRlIC0gMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBLZXkuQXJyb3dVcDpcbiAgICAgIGNhc2UgS2V5LkFycm93UmlnaHQ6XG4gICAgICAgIHRoaXMudXBkYXRlKHRoaXMucmF0ZSArIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgS2V5LkhvbWU6XG4gICAgICAgIHRoaXMudXBkYXRlKDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgS2V5LkVuZDpcbiAgICAgICAgdGhpcy51cGRhdGUodGhpcy5tYXgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBub3RlICdyZXR1cm4nIGluIGRlZmF1bHQgY2FzZVxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ3JhdGUnXSkge1xuICAgICAgdGhpcy51cGRhdGUodGhpcy5yYXRlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHRzID0gQXJyYXkuZnJvbSh7bGVuZ3RoOiB0aGlzLm1heH0sICh2LCBrKSA9PiAoe2ZpbGw6IDAsIGluZGV4OiBrfSkpO1xuICAgIHRoaXMuX3VwZGF0ZVN0YXRlKHRoaXMucmF0ZSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiBhbnkpOiB2b2lkIHsgdGhpcy5vblRvdWNoZWQgPSBmbjsgfVxuXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMubGVhdmUuZW1pdCh0aGlzLm5leHRSYXRlKTtcbiAgICB0aGlzLl91cGRhdGVTdGF0ZSh0aGlzLnJhdGUpO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7IHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkOyB9XG5cbiAgdXBkYXRlKHZhbHVlOiBudW1iZXIsIGludGVybmFsQ2hhbmdlID0gdHJ1ZSk6IHZvaWQge1xuICAgIGNvbnN0IG5ld1JhdGUgPSBnZXRWYWx1ZUluUmFuZ2UodmFsdWUsIHRoaXMubWF4LCAwKTtcbiAgICBpZiAoIXRoaXMucmVhZG9ubHkgJiYgIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5yYXRlICE9PSBuZXdSYXRlKSB7XG4gICAgICB0aGlzLnJhdGUgPSBuZXdSYXRlO1xuICAgICAgdGhpcy5yYXRlQ2hhbmdlLmVtaXQodGhpcy5yYXRlKTtcbiAgICB9XG4gICAgaWYgKGludGVybmFsQ2hhbmdlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMucmF0ZSk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cbiAgICB0aGlzLl91cGRhdGVTdGF0ZSh0aGlzLnJhdGUpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZSkge1xuICAgIHRoaXMudXBkYXRlKHZhbHVlLCBmYWxzZSk7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRGaWxsVmFsdWUoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgZGlmZiA9IHRoaXMubmV4dFJhdGUgLSBpbmRleDtcblxuICAgIGlmIChkaWZmID49IDEpIHtcbiAgICAgIHJldHVybiAxMDA7XG4gICAgfVxuICAgIGlmIChkaWZmIDwgMSAmJiBkaWZmID4gMCkge1xuICAgICAgcmV0dXJuIHBhcnNlSW50KChkaWZmICogMTAwKS50b0ZpeGVkKDIpLCAxMCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVTdGF0ZShuZXh0VmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMubmV4dFJhdGUgPSBuZXh0VmFsdWU7XG4gICAgdGhpcy5jb250ZXh0cy5mb3JFYWNoKChjb250ZXh0LCBpbmRleCkgPT4gY29udGV4dC5maWxsID0gdGhpcy5fZ2V0RmlsbFZhbHVlKGluZGV4KSk7XG4gIH1cbn1cbiIsImltcG9ydCB7TmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7TmdiUmF0aW5nfSBmcm9tICcuL3JhdGluZyc7XG5cbmV4cG9ydCB7TmdiUmF0aW5nfSBmcm9tICcuL3JhdGluZyc7XG5leHBvcnQge05nYlJhdGluZ0NvbmZpZ30gZnJvbSAnLi9yYXRpbmctY29uZmlnJztcblxuQE5nTW9kdWxlKHtkZWNsYXJhdGlvbnM6IFtOZ2JSYXRpbmddLCBleHBvcnRzOiBbTmdiUmF0aW5nXSwgaW1wb3J0czogW0NvbW1vbk1vZHVsZV19KVxuZXhwb3J0IGNsYXNzIE5nYlJhdGluZ01vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JSYXRpbmdNb2R1bGV9OyB9XG59XG4iLCJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBzZXJ2aWNlIGZvciB0aGUgW2BOZ2JUYWJzZXRgXSgjL2NvbXBvbmVudHMvdGFic2V0L2FwaSNOZ2JUYWJzZXQpIGNvbXBvbmVudC5cbiAqXG4gKiBZb3UgY2FuIGluamVjdCB0aGlzIHNlcnZpY2UsIHR5cGljYWxseSBpbiB5b3VyIHJvb3QgY29tcG9uZW50LCBhbmQgY3VzdG9taXplIHRoZSB2YWx1ZXMgb2YgaXRzIHByb3BlcnRpZXMgaW5cbiAqIG9yZGVyIHRvIHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUgdGFic2V0cyB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTmdiVGFic2V0Q29uZmlnIHtcbiAganVzdGlmeTogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCcgfCAnZmlsbCcgfCAnanVzdGlmaWVkJyA9ICdzdGFydCc7XG4gIG9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnID0gJ2hvcml6b250YWwnO1xuICB0eXBlOiAndGFicycgfCAncGlsbHMnID0gJ3RhYnMnO1xufVxuIiwiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBRdWVyeUxpc3QsXG4gIERpcmVjdGl2ZSxcbiAgVGVtcGxhdGVSZWYsXG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ2JUYWJzZXRDb25maWd9IGZyb20gJy4vdGFic2V0LWNvbmZpZyc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRvIHdyYXAgdGFiIHRpdGxlcyB0aGF0IG5lZWQgdG8gY29udGFpbiBIVE1MIG1hcmt1cCBvciBvdGhlciBkaXJlY3RpdmVzLlxuICpcbiAqIEFsdGVybmF0aXZlbHkgeW91IGNvdWxkIHVzZSB0aGUgYE5nYlRhYi50aXRsZWAgaW5wdXQgZm9yIHN0cmluZyB0aXRsZXMuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbbmdiVGFiVGl0bGVdJ30pXG5leHBvcnQgY2xhc3MgTmdiVGFiVGl0bGUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgdG8gd3JhcCBjb250ZW50IHRvIGJlIGRpc3BsYXllZCBpbiBhIHRhYi5cbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtuZ2JUYWJDb250ZW50XSd9KVxuZXhwb3J0IGNsYXNzIE5nYlRhYkNvbnRlbnQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgcmVwcmVzZW50aW5nIGFuIGluZGl2aWR1YWwgdGFiLlxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ25nYi10YWInfSlcbmV4cG9ydCBjbGFzcyBOZ2JUYWIgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkIHtcbiAgLyoqXG4gICAqIFRoZSB0YWIgaWRlbnRpZmllci5cbiAgICpcbiAgICogTXVzdCBiZSB1bmlxdWUgZm9yIHRoZSBlbnRpcmUgZG9jdW1lbnQgZm9yIHByb3BlciBhY2Nlc3NpYmlsaXR5IHN1cHBvcnQuXG4gICAqL1xuICBASW5wdXQoKSBpZCA9IGBuZ2ItdGFiLSR7bmV4dElkKyt9YDtcblxuICAvKipcbiAgICogVGhlIHRhYiB0aXRsZS5cbiAgICpcbiAgICogVXNlIHRoZSBbYE5nYlRhYlRpdGxlYF0oIy9jb21wb25lbnRzL3RhYnNldC9hcGkjTmdiVGFiVGl0bGUpIGRpcmVjdGl2ZSBmb3Igbm9uLXN0cmluZyB0aXRsZXMuXG4gICAqL1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjdXJyZW50IHRhYiBpcyBkaXNhYmxlZCBhbmQgY2FuJ3QgYmUgdG9nZ2xlZC5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgdGl0bGVUcGw6IE5nYlRhYlRpdGxlIHwgbnVsbDtcbiAgY29udGVudFRwbDogTmdiVGFiQ29udGVudCB8IG51bGw7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihOZ2JUYWJUaXRsZSwge2Rlc2NlbmRhbnRzOiBmYWxzZX0pIHRpdGxlVHBsczogUXVlcnlMaXN0PE5nYlRhYlRpdGxlPjtcbiAgQENvbnRlbnRDaGlsZHJlbihOZ2JUYWJDb250ZW50LCB7ZGVzY2VuZGFudHM6IGZhbHNlfSkgY29udGVudFRwbHM6IFF1ZXJ5TGlzdDxOZ2JUYWJDb250ZW50PjtcblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKSB7XG4gICAgLy8gV2UgYXJlIHVzaW5nIEBDb250ZW50Q2hpbGRyZW4gaW5zdGVhZCBvZiBAQ29udGVudENoaWxkIGFzIGluIHRoZSBBbmd1bGFyIHZlcnNpb24gYmVpbmcgdXNlZFxuICAgIC8vIG9ubHkgQENvbnRlbnRDaGlsZHJlbiBhbGxvd3MgdXMgdG8gc3BlY2lmeSB0aGUge2Rlc2NlbmRhbnRzOiBmYWxzZX0gb3B0aW9uLlxuICAgIC8vIFdpdGhvdXQge2Rlc2NlbmRhbnRzOiBmYWxzZX0gd2UgYXJlIGhpdHRpbmcgYnVncyBkZXNjcmliZWQgaW46XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvaXNzdWVzLzIyNDBcbiAgICB0aGlzLnRpdGxlVHBsID0gdGhpcy50aXRsZVRwbHMuZmlyc3Q7XG4gICAgdGhpcy5jb250ZW50VHBsID0gdGhpcy5jb250ZW50VHBscy5maXJzdDtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBwYXlsb2FkIG9mIHRoZSBjaGFuZ2UgZXZlbnQgZmlyZWQgcmlnaHQgYmVmb3JlIHRoZSB0YWIgY2hhbmdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5nYlRhYkNoYW5nZUV2ZW50IHtcbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSB0YWIuXG4gICAqL1xuICBhY3RpdmVJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIG5ld2x5IHNlbGVjdGVkIHRhYi5cbiAgICovXG4gIG5leHRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBwcmV2ZW50IHRhYiBzd2l0Y2hpbmcuXG4gICAqL1xuICBwcmV2ZW50RGVmYXVsdDogKCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IG1ha2VzIGl0IGVhc3kgdG8gY3JlYXRlIHRhYmJlZCBpbnRlcmZhY2UuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nYi10YWJzZXQnLFxuICBleHBvcnRBczogJ25nYlRhYnNldCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHVsIFtjbGFzc109XCInbmF2IG5hdi0nICsgdHlwZSArIChvcmllbnRhdGlvbiA9PSAnaG9yaXpvbnRhbCc/ICAnICcgKyBqdXN0aWZ5Q2xhc3MgOiAnIGZsZXgtY29sdW1uJylcIiByb2xlPVwidGFibGlzdFwiPlxuICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIj5cbiAgICAgICAgPGEgW2lkXT1cInRhYi5pZFwiIGNsYXNzPVwibmF2LWxpbmtcIiBbY2xhc3MuYWN0aXZlXT1cInRhYi5pZCA9PT0gYWN0aXZlSWRcIiBbY2xhc3MuZGlzYWJsZWRdPVwidGFiLmRpc2FibGVkXCJcbiAgICAgICAgICBocmVmIChjbGljayk9XCJzZWxlY3QodGFiLmlkKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiByb2xlPVwidGFiXCIgW2F0dHIudGFiaW5kZXhdPVwiKHRhYi5kaXNhYmxlZCA/ICctMSc6IHVuZGVmaW5lZClcIlxuICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiKCFkZXN0cm95T25IaWRlIHx8IHRhYi5pZCA9PT0gYWN0aXZlSWQgPyB0YWIuaWQgKyAnLXBhbmVsJyA6IG51bGwpXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInRhYi5pZCA9PT0gYWN0aXZlSWRcIiBbYXR0ci5hcmlhLWRpc2FibGVkXT1cInRhYi5kaXNhYmxlZFwiPlxuICAgICAgICAgIHt7dGFiLnRpdGxlfX08bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFiLnRpdGxlVHBsPy50ZW1wbGF0ZVJlZlwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8ZGl2IGNsYXNzPVwidGFiLWNvbnRlbnRcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtdGFiIFtuZ0Zvck9mXT1cInRhYnNcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidGFiLXBhbmUge3t0YWIuaWQgPT09IGFjdGl2ZUlkID8gJ2FjdGl2ZScgOiBudWxsfX1cIlxuICAgICAgICAgICpuZ0lmPVwiIWRlc3Ryb3lPbkhpZGUgfHwgdGFiLmlkID09PSBhY3RpdmVJZFwiXG4gICAgICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidGFiLmlkXCIgaWQ9XCJ7e3RhYi5pZH19LXBhbmVsXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYi5jb250ZW50VHBsPy50ZW1wbGF0ZVJlZlwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBOZ2JUYWJzZXQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkIHtcbiAganVzdGlmeUNsYXNzOiBzdHJpbmc7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihOZ2JUYWIpIHRhYnM6IFF1ZXJ5TGlzdDxOZ2JUYWI+O1xuXG4gIC8qKlxuICAgKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgdGFiIHRoYXQgc2hvdWxkIGJlIG9wZW5lZCAqKmluaXRpYWxseSoqLlxuICAgKlxuICAgKiBGb3Igc3Vic2VxdWVudCB0YWIgc3dpdGNoZXMgdXNlIHRoZSBgLnNlbGVjdCgpYCBtZXRob2QgYW5kIHRoZSBgKHRhYkNoYW5nZSlgIGV2ZW50LlxuICAgKi9cbiAgQElucHV0KCkgYWN0aXZlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogSWYgYHRydWVgLCBub24tdmlzaWJsZSB0YWJzIGNvbnRlbnQgd2lsbCBiZSByZW1vdmVkIGZyb20gRE9NLiBPdGhlcndpc2UgaXQgd2lsbCBqdXN0IGJlIGhpZGRlbi5cbiAgICovXG4gIEBJbnB1dCgpIGRlc3Ryb3lPbkhpZGUgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBUaGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgdGhlIHRhYnMgd2l0aCBmbGV4Ym94IHV0aWxpdGllcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBqdXN0aWZ5KGNsYXNzTmFtZTogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCcgfCAnZmlsbCcgfCAnanVzdGlmaWVkJykge1xuICAgIGlmIChjbGFzc05hbWUgPT09ICdmaWxsJyB8fCBjbGFzc05hbWUgPT09ICdqdXN0aWZpZWQnKSB7XG4gICAgICB0aGlzLmp1c3RpZnlDbGFzcyA9IGBuYXYtJHtjbGFzc05hbWV9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5qdXN0aWZ5Q2xhc3MgPSBganVzdGlmeS1jb250ZW50LSR7Y2xhc3NOYW1lfWA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBvcmllbnRhdGlvbiBvZiB0aGUgdGFic2V0LlxuICAgKi9cbiAgQElucHV0KCkgb3JpZW50YXRpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCc7XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgbmF2aWdhdGlvbiB0byBiZSB1c2VkIGZvciB0YWJzLlxuICAgKlxuICAgKiBDdXJyZW50bHkgQm9vdHN0cmFwIHN1cHBvcnRzIG9ubHkgYFwidGFic1wiYCBhbmQgYFwicGlsbHNcImAuXG4gICAqXG4gICAqIFNpbmNlIGAzLjAuMGAgY2FuIGFsc28gYmUgYW4gYXJiaXRyYXJ5IHN0cmluZyAoZXguIGZvciBjdXN0b20gdGhlbWVzKS5cbiAgICovXG4gIEBJbnB1dCgpIHR5cGU6ICd0YWJzJyB8ICdwaWxscycgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgdGFiIGNoYW5nZSBldmVudCBlbWl0dGVkIHJpZ2h0IGJlZm9yZSB0aGUgdGFiIGNoYW5nZSBoYXBwZW5zLlxuICAgKlxuICAgKiBTZWUgW2BOZ2JUYWJDaGFuZ2VFdmVudGBdKCMvY29tcG9uZW50cy90YWJzZXQvYXBpI05nYlRhYkNoYW5nZUV2ZW50KSBmb3IgcGF5bG9hZCBkZXRhaWxzLlxuICAgKi9cbiAgQE91dHB1dCgpIHRhYkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TmdiVGFiQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBOZ2JUYWJzZXRDb25maWcpIHtcbiAgICB0aGlzLnR5cGUgPSBjb25maWcudHlwZTtcbiAgICB0aGlzLmp1c3RpZnkgPSBjb25maWcuanVzdGlmeTtcbiAgICB0aGlzLm9yaWVudGF0aW9uID0gY29uZmlnLm9yaWVudGF0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgdGhlIHRhYiB3aXRoIHRoZSBnaXZlbiBpZCBhbmQgc2hvd3MgaXRzIGFzc29jaWF0ZWQgY29udGVudCBwYW5lbC5cbiAgICpcbiAgICogQW55IG90aGVyIHRhYiB0aGF0IHdhcyBwcmV2aW91c2x5IHNlbGVjdGVkIGJlY29tZXMgdW5zZWxlY3RlZCBhbmQgaXRzIGFzc29jaWF0ZWQgcGFuZSBpcyByZW1vdmVkIGZyb20gRE9NIG9yXG4gICAqIGhpZGRlbiBkZXBlbmRpbmcgb24gdGhlIGBkZXN0cm95T25IaWRlYCB2YWx1ZS5cbiAgICovXG4gIHNlbGVjdCh0YWJJZDogc3RyaW5nKSB7XG4gICAgbGV0IHNlbGVjdGVkVGFiID0gdGhpcy5fZ2V0VGFiQnlJZCh0YWJJZCk7XG4gICAgaWYgKHNlbGVjdGVkVGFiICYmICFzZWxlY3RlZFRhYi5kaXNhYmxlZCAmJiB0aGlzLmFjdGl2ZUlkICE9PSBzZWxlY3RlZFRhYi5pZCkge1xuICAgICAgbGV0IGRlZmF1bHRQcmV2ZW50ZWQgPSBmYWxzZTtcblxuICAgICAgdGhpcy50YWJDaGFuZ2UuZW1pdChcbiAgICAgICAgICB7YWN0aXZlSWQ6IHRoaXMuYWN0aXZlSWQsIG5leHRJZDogc2VsZWN0ZWRUYWIuaWQsIHByZXZlbnREZWZhdWx0OiAoKSA9PiB7IGRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlOyB9fSk7XG5cbiAgICAgIGlmICghZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICB0aGlzLmFjdGl2ZUlkID0gc2VsZWN0ZWRUYWIuaWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCkge1xuICAgIC8vIGF1dG8tY29ycmVjdCBhY3RpdmVJZCB0aGF0IG1pZ2h0IGhhdmUgYmVlbiBzZXQgaW5jb3JyZWN0bHkgYXMgaW5wdXRcbiAgICBsZXQgYWN0aXZlVGFiID0gdGhpcy5fZ2V0VGFiQnlJZCh0aGlzLmFjdGl2ZUlkKTtcbiAgICB0aGlzLmFjdGl2ZUlkID0gYWN0aXZlVGFiID8gYWN0aXZlVGFiLmlkIDogKHRoaXMudGFicy5sZW5ndGggPyB0aGlzLnRhYnMuZmlyc3QuaWQgOiBudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFRhYkJ5SWQoaWQ6IHN0cmluZyk6IE5nYlRhYiB7XG4gICAgbGV0IHRhYnNXaXRoSWQ6IE5nYlRhYltdID0gdGhpcy50YWJzLmZpbHRlcih0YWIgPT4gdGFiLmlkID09PSBpZCk7XG4gICAgcmV0dXJuIHRhYnNXaXRoSWQubGVuZ3RoID8gdGFic1dpdGhJZFswXSA6IG51bGw7XG4gIH1cbn1cbiIsImltcG9ydCB7TmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7TmdiVGFic2V0LCBOZ2JUYWIsIE5nYlRhYkNvbnRlbnQsIE5nYlRhYlRpdGxlfSBmcm9tICcuL3RhYnNldCc7XG5cbmV4cG9ydCB7TmdiVGFic2V0LCBOZ2JUYWIsIE5nYlRhYkNvbnRlbnQsIE5nYlRhYlRpdGxlLCBOZ2JUYWJDaGFuZ2VFdmVudH0gZnJvbSAnLi90YWJzZXQnO1xuZXhwb3J0IHtOZ2JUYWJzZXRDb25maWd9IGZyb20gJy4vdGFic2V0LWNvbmZpZyc7XG5cbmNvbnN0IE5HQl9UQUJTRVRfRElSRUNUSVZFUyA9IFtOZ2JUYWJzZXQsIE5nYlRhYiwgTmdiVGFiQ29udGVudCwgTmdiVGFiVGl0bGVdO1xuXG5ATmdNb2R1bGUoe2RlY2xhcmF0aW9uczogTkdCX1RBQlNFVF9ESVJFQ1RJVkVTLCBleHBvcnRzOiBOR0JfVEFCU0VUX0RJUkVDVElWRVMsIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdfSlcbmV4cG9ydCBjbGFzcyBOZ2JUYWJzZXRNb2R1bGUge1xuICAvKipcbiAgICogSW1wb3J0aW5nIHdpdGggJy5mb3JSb290KCknIGlzIG5vIGxvbmdlciBuZWNlc3NhcnksIHlvdSBjYW4gc2ltcGx5IGltcG9ydCB0aGUgbW9kdWxlLlxuICAgKiBXaWxsIGJlIHJlbW92ZWQgaW4gNC4wLjAuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIDMuMC4wXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHsgcmV0dXJuIHtuZ01vZHVsZTogTmdiVGFic2V0TW9kdWxlfTsgfVxufVxuIiwiaW1wb3J0IHtpc051bWJlciwgdG9JbnRlZ2VyfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuXG5leHBvcnQgY2xhc3MgTmdiVGltZSB7XG4gIGhvdXI6IG51bWJlcjtcbiAgbWludXRlOiBudW1iZXI7XG4gIHNlY29uZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGhvdXI/OiBudW1iZXIsIG1pbnV0ZT86IG51bWJlciwgc2Vjb25kPzogbnVtYmVyKSB7XG4gICAgdGhpcy5ob3VyID0gdG9JbnRlZ2VyKGhvdXIpO1xuICAgIHRoaXMubWludXRlID0gdG9JbnRlZ2VyKG1pbnV0ZSk7XG4gICAgdGhpcy5zZWNvbmQgPSB0b0ludGVnZXIoc2Vjb25kKTtcbiAgfVxuXG4gIGNoYW5nZUhvdXIoc3RlcCA9IDEpIHsgdGhpcy51cGRhdGVIb3VyKChpc05hTih0aGlzLmhvdXIpID8gMCA6IHRoaXMuaG91cikgKyBzdGVwKTsgfVxuXG4gIHVwZGF0ZUhvdXIoaG91cjogbnVtYmVyKSB7XG4gICAgaWYgKGlzTnVtYmVyKGhvdXIpKSB7XG4gICAgICB0aGlzLmhvdXIgPSAoaG91ciA8IDAgPyAyNCArIGhvdXIgOiBob3VyKSAlIDI0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhvdXIgPSBOYU47XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlTWludXRlKHN0ZXAgPSAxKSB7IHRoaXMudXBkYXRlTWludXRlKChpc05hTih0aGlzLm1pbnV0ZSkgPyAwIDogdGhpcy5taW51dGUpICsgc3RlcCk7IH1cblxuICB1cGRhdGVNaW51dGUobWludXRlOiBudW1iZXIpIHtcbiAgICBpZiAoaXNOdW1iZXIobWludXRlKSkge1xuICAgICAgdGhpcy5taW51dGUgPSBtaW51dGUgJSA2MCA8IDAgPyA2MCArIG1pbnV0ZSAlIDYwIDogbWludXRlICUgNjA7XG4gICAgICB0aGlzLmNoYW5nZUhvdXIoTWF0aC5mbG9vcihtaW51dGUgLyA2MCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1pbnV0ZSA9IE5hTjtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VTZWNvbmQoc3RlcCA9IDEpIHsgdGhpcy51cGRhdGVTZWNvbmQoKGlzTmFOKHRoaXMuc2Vjb25kKSA/IDAgOiB0aGlzLnNlY29uZCkgKyBzdGVwKTsgfVxuXG4gIHVwZGF0ZVNlY29uZChzZWNvbmQ6IG51bWJlcikge1xuICAgIGlmIChpc051bWJlcihzZWNvbmQpKSB7XG4gICAgICB0aGlzLnNlY29uZCA9IHNlY29uZCA8IDAgPyA2MCArIHNlY29uZCAlIDYwIDogc2Vjb25kICUgNjA7XG4gICAgICB0aGlzLmNoYW5nZU1pbnV0ZShNYXRoLmZsb29yKHNlY29uZCAvIDYwKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2Vjb25kID0gTmFOO1xuICAgIH1cbiAgfVxuXG4gIGlzVmFsaWQoY2hlY2tTZWNzID0gdHJ1ZSkge1xuICAgIHJldHVybiBpc051bWJlcih0aGlzLmhvdXIpICYmIGlzTnVtYmVyKHRoaXMubWludXRlKSAmJiAoY2hlY2tTZWNzID8gaXNOdW1iZXIodGhpcy5zZWNvbmQpIDogdHJ1ZSk7XG4gIH1cblxuICB0b1N0cmluZygpIHsgcmV0dXJuIGAke3RoaXMuaG91ciB8fCAwfToke3RoaXMubWludXRlIHx8IDB9OiR7dGhpcy5zZWNvbmQgfHwgMH1gOyB9XG59XG4iLCJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBzZXJ2aWNlIGZvciB0aGUgW2BOZ2JUaW1lcGlja2VyYF0oIy9jb21wb25lbnRzL3RpbWVwaWNrZXIvYXBpI05nYlRpbWVwaWNrZXIpIGNvbXBvbmVudC5cbiAqXG4gKiBZb3UgY2FuIGluamVjdCB0aGlzIHNlcnZpY2UsIHR5cGljYWxseSBpbiB5b3VyIHJvb3QgY29tcG9uZW50LCBhbmQgY3VzdG9taXplIHRoZSB2YWx1ZXMgb2YgaXRzIHByb3BlcnRpZXMgaW5cbiAqIG9yZGVyIHRvIHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUgdGltZXBpY2tlcnMgdXNlZCBpbiB0aGUgYXBwbGljYXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIE5nYlRpbWVwaWNrZXJDb25maWcge1xuICBtZXJpZGlhbiA9IGZhbHNlO1xuICBzcGlubmVycyA9IHRydWU7XG4gIHNlY29uZHMgPSBmYWxzZTtcbiAgaG91clN0ZXAgPSAxO1xuICBtaW51dGVTdGVwID0gMTtcbiAgc2Vjb25kU3RlcCA9IDE7XG4gIGRpc2FibGVkID0gZmFsc2U7XG4gIHJlYWRvbmx5SW5wdXRzID0gZmFsc2U7XG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgPSAnbWVkaXVtJztcbn1cbiIsImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nYlRpbWVTdHJ1Y3R9IGZyb20gJy4vbmdiLXRpbWUtc3RydWN0JztcbmltcG9ydCB7aXNJbnRlZ2VyfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gTkdCX0RBVEVQSUNLRVJfVElNRV9BREFQVEVSX0ZBQ1RPUlkoKSB7XG4gIHJldHVybiBuZXcgTmdiVGltZVN0cnVjdEFkYXB0ZXIoKTtcbn1cblxuLyoqXG4gKiBBbiBhYnN0cmFjdCBzZXJ2aWNlIHRoYXQgZG9lcyB0aGUgY29udmVyc2lvbiBiZXR3ZWVuIHRoZSBpbnRlcm5hbCB0aW1lcGlja2VyIGBOZ2JUaW1lU3RydWN0YCBtb2RlbCBhbmRcbiAqIGFueSBwcm92aWRlZCB1c2VyIHRpbWUgbW9kZWwgYFRgLCBleC4gYSBzdHJpbmcsIGEgbmF0aXZlIGRhdGUsIGV0Yy5cbiAqXG4gKiBUaGUgYWRhcHRlciBpcyB1c2VkICoqb25seSoqIGZvciBjb252ZXJzaW9uIHdoZW4gYmluZGluZyB0aW1lcGlja2VyIHRvIGEgZm9ybSBjb250cm9sLFxuICogZXguIGBbKG5nTW9kZWwpXT1cInVzZXJUaW1lTW9kZWxcImAuIEhlcmUgYHVzZXJUaW1lTW9kZWxgIGNhbiBiZSBvZiBhbnkgdHlwZS5cbiAqXG4gKiBUaGUgZGVmYXVsdCB0aW1lcGlja2VyIGltcGxlbWVudGF0aW9uIGFzc3VtZXMgd2UgdXNlIGBOZ2JUaW1lU3RydWN0YCBhcyBhIHVzZXIgbW9kZWwuXG4gKlxuICogU2VlIHRoZSBbY3VzdG9tIHRpbWUgYWRhcHRlciBkZW1vXSgjL2NvbXBvbmVudHMvdGltZXBpY2tlci9leGFtcGxlcyNhZGFwdGVyKSBmb3IgYW4gZXhhbXBsZS5cbiAqXG4gKiBAc2luY2UgMi4yLjBcbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290JywgdXNlRmFjdG9yeTogTkdCX0RBVEVQSUNLRVJfVElNRV9BREFQVEVSX0ZBQ1RPUll9KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5nYlRpbWVBZGFwdGVyPFQ+IHtcbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgdXNlci1tb2RlbCB0aW1lIG9mIHR5cGUgYFRgIHRvIGFuIGBOZ2JUaW1lU3RydWN0YCBmb3IgaW50ZXJuYWwgdXNlLlxuICAgKi9cbiAgYWJzdHJhY3QgZnJvbU1vZGVsKHZhbHVlOiBUKTogTmdiVGltZVN0cnVjdDtcblxuICAvKipcbiAgICogQ29udmVydHMgYW4gaW50ZXJuYWwgYE5nYlRpbWVTdHJ1Y3RgIHRpbWUgdG8gYSB1c2VyLW1vZGVsIHRpbWUgb2YgdHlwZSBgVGAuXG4gICAqL1xuICBhYnN0cmFjdCB0b01vZGVsKHRpbWU6IE5nYlRpbWVTdHJ1Y3QpOiBUO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmdiVGltZVN0cnVjdEFkYXB0ZXIgZXh0ZW5kcyBOZ2JUaW1lQWRhcHRlcjxOZ2JUaW1lU3RydWN0PiB7XG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIE5nYlRpbWVTdHJ1Y3QgdmFsdWUgaW50byBOZ2JUaW1lU3RydWN0IHZhbHVlXG4gICAqL1xuICBmcm9tTW9kZWwodGltZTogTmdiVGltZVN0cnVjdCk6IE5nYlRpbWVTdHJ1Y3Qge1xuICAgIHJldHVybiAodGltZSAmJiBpc0ludGVnZXIodGltZS5ob3VyKSAmJiBpc0ludGVnZXIodGltZS5taW51dGUpKSA/XG4gICAgICAgIHtob3VyOiB0aW1lLmhvdXIsIG1pbnV0ZTogdGltZS5taW51dGUsIHNlY29uZDogaXNJbnRlZ2VyKHRpbWUuc2Vjb25kKSA/IHRpbWUuc2Vjb25kIDogbnVsbH0gOlxuICAgICAgICBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgTmdiVGltZVN0cnVjdCB2YWx1ZSBpbnRvIE5nYlRpbWVTdHJ1Y3QgdmFsdWVcbiAgICovXG4gIHRvTW9kZWwodGltZTogTmdiVGltZVN0cnVjdCk6IE5nYlRpbWVTdHJ1Y3Qge1xuICAgIHJldHVybiAodGltZSAmJiBpc0ludGVnZXIodGltZS5ob3VyKSAmJiBpc0ludGVnZXIodGltZS5taW51dGUpKSA/XG4gICAgICAgIHtob3VyOiB0aW1lLmhvdXIsIG1pbnV0ZTogdGltZS5taW51dGUsIHNlY29uZDogaXNJbnRlZ2VyKHRpbWUuc2Vjb25kKSA/IHRpbWUuc2Vjb25kIDogbnVsbH0gOlxuICAgICAgICBudWxsO1xuICB9XG59XG4iLCJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7aXNJbnRlZ2VyLCBpc051bWJlciwgcGFkTnVtYmVyLCB0b0ludGVnZXJ9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQge05nYlRpbWV9IGZyb20gJy4vbmdiLXRpbWUnO1xuaW1wb3J0IHtOZ2JUaW1lcGlja2VyQ29uZmlnfSBmcm9tICcuL3RpbWVwaWNrZXItY29uZmlnJztcbmltcG9ydCB7TmdiVGltZUFkYXB0ZXJ9IGZyb20gJy4vbmdiLXRpbWUtYWRhcHRlcic7XG5cbmNvbnN0IE5HQl9USU1FUElDS0VSX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmdiVGltZXBpY2tlciksXG4gIG11bHRpOiB0cnVlXG59O1xuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRoYXQgaGVscHMgd2l0aCB3dGggcGlja2luZyBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdiLXRpbWVwaWNrZXInLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdHlsZVVybHM6IFsnLi90aW1lcGlja2VyLnNjc3MnXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZmllbGRzZXQgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibmdiLXRwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuZ2ItdHAtaW5wdXQtY29udGFpbmVyIG5nYi10cC1ob3VyXCI+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNwaW5uZXJzXCIgdGFiaW5kZXg9XCItMVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2hhbmdlSG91cihob3VyU3RlcClcIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIiBbY2xhc3MuYnRuLXNtXT1cImlzU21hbGxTaXplXCIgW2NsYXNzLmJ0bi1sZ109XCJpc0xhcmdlU2l6ZVwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hldnJvbiBuZ2ItdHAtY2hldnJvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiIGkxOG49XCJAQG5nYi50aW1lcGlja2VyLmluY3JlbWVudC1ob3Vyc1wiPkluY3JlbWVudCBob3Vyczwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIm5nYi10cC1pbnB1dCBmb3JtLWNvbnRyb2xcIiBbY2xhc3MuZm9ybS1jb250cm9sLXNtXT1cImlzU21hbGxTaXplXCIgW2NsYXNzLmZvcm0tY29udHJvbC1sZ109XCJpc0xhcmdlU2l6ZVwiXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCIyXCIgcGxhY2Vob2xkZXI9XCJISFwiIGkxOG4tcGxhY2Vob2xkZXI9XCJAQG5nYi50aW1lcGlja2VyLkhIXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtYXRIb3VyKG1vZGVsPy5ob3VyKVwiIChjaGFuZ2UpPVwidXBkYXRlSG91cigkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZG9ubHlJbnB1dHNcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBhcmlhLWxhYmVsPVwiSG91cnNcIiBpMThuLWFyaWEtbGFiZWw9XCJAQG5nYi50aW1lcGlja2VyLmhvdXJzXCJcbiAgICAgICAgICAgIChrZXlkb3duLkFycm93VXApPVwiY2hhbmdlSG91cihob3VyU3RlcCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgIChrZXlkb3duLkFycm93RG93bik9XCJjaGFuZ2VIb3VyKC1ob3VyU3RlcCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCI+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNwaW5uZXJzXCIgdGFiaW5kZXg9XCItMVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2hhbmdlSG91cigtaG91clN0ZXApXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCIgW2NsYXNzLmJ0bi1zbV09XCJpc1NtYWxsU2l6ZVwiIFtjbGFzcy5idG4tbGddPVwiaXNMYXJnZVNpemVcIiBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXZyb24gbmdiLXRwLWNoZXZyb24gYm90dG9tXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCIgaTE4bj1cIkBAbmdiLnRpbWVwaWNrZXIuZGVjcmVtZW50LWhvdXJzXCI+RGVjcmVtZW50IGhvdXJzPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5nYi10cC1zcGFjZXJcIj46PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuZ2ItdHAtaW5wdXQtY29udGFpbmVyIG5nYi10cC1taW51dGVcIj5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic3Bpbm5lcnNcIiB0YWJpbmRleD1cIi0xXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjaGFuZ2VNaW51dGUobWludXRlU3RlcClcIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIiBbY2xhc3MuYnRuLXNtXT1cImlzU21hbGxTaXplXCIgW2NsYXNzLmJ0bi1sZ109XCJpc0xhcmdlU2l6ZVwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hldnJvbiBuZ2ItdHAtY2hldnJvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiIGkxOG49XCJAQG5nYi50aW1lcGlja2VyLmluY3JlbWVudC1taW51dGVzXCI+SW5jcmVtZW50IG1pbnV0ZXM8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJuZ2ItdHAtaW5wdXQgZm9ybS1jb250cm9sXCIgW2NsYXNzLmZvcm0tY29udHJvbC1zbV09XCJpc1NtYWxsU2l6ZVwiIFtjbGFzcy5mb3JtLWNvbnRyb2wtbGddPVwiaXNMYXJnZVNpemVcIlxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiIHBsYWNlaG9sZGVyPVwiTU1cIiBpMThuLXBsYWNlaG9sZGVyPVwiQEBuZ2IudGltZXBpY2tlci5NTVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZm9ybWF0TWluU2VjKG1vZGVsPy5taW51dGUpXCIgKGNoYW5nZSk9XCJ1cGRhdGVNaW51dGUoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRvbmx5SW5wdXRzXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgYXJpYS1sYWJlbD1cIk1pbnV0ZXNcIiBpMThuLWFyaWEtbGFiZWw9XCJAQG5nYi50aW1lcGlja2VyLm1pbnV0ZXNcIlxuICAgICAgICAgICAgKGtleWRvd24uQXJyb3dVcCk9XCJjaGFuZ2VNaW51dGUobWludXRlU3RlcCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgIChrZXlkb3duLkFycm93RG93bik9XCJjaGFuZ2VNaW51dGUoLW1pbnV0ZVN0ZXApOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiPlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzcGlubmVyc1wiIHRhYmluZGV4PVwiLTFcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNoYW5nZU1pbnV0ZSgtbWludXRlU3RlcClcIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIiBbY2xhc3MuYnRuLXNtXT1cImlzU21hbGxTaXplXCIgW2NsYXNzLmJ0bi1sZ109XCJpc0xhcmdlU2l6ZVwiICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXZyb24gbmdiLXRwLWNoZXZyb24gYm90dG9tXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCIgIGkxOG49XCJAQG5nYi50aW1lcGlja2VyLmRlY3JlbWVudC1taW51dGVzXCI+RGVjcmVtZW50IG1pbnV0ZXM8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2Vjb25kc1wiIGNsYXNzPVwibmdiLXRwLXNwYWNlclwiPjo8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInNlY29uZHNcIiBjbGFzcz1cIm5nYi10cC1pbnB1dC1jb250YWluZXIgbmdiLXRwLXNlY29uZFwiPlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzcGlubmVyc1wiIHRhYmluZGV4PVwiLTFcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNoYW5nZVNlY29uZChzZWNvbmRTdGVwKVwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiIFtjbGFzcy5idG4tc21dPVwiaXNTbWFsbFNpemVcIiBbY2xhc3MuYnRuLWxnXT1cImlzTGFyZ2VTaXplXCIgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGV2cm9uIG5nYi10cC1jaGV2cm9uXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCIgaTE4bj1cIkBAbmdiLnRpbWVwaWNrZXIuaW5jcmVtZW50LXNlY29uZHNcIj5JbmNyZW1lbnQgc2Vjb25kczwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIm5nYi10cC1pbnB1dCBmb3JtLWNvbnRyb2xcIiBbY2xhc3MuZm9ybS1jb250cm9sLXNtXT1cImlzU21hbGxTaXplXCIgW2NsYXNzLmZvcm0tY29udHJvbC1sZ109XCJpc0xhcmdlU2l6ZVwiXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCIyXCIgcGxhY2Vob2xkZXI9XCJTU1wiIGkxOG4tcGxhY2Vob2xkZXI9XCJAQG5nYi50aW1lcGlja2VyLlNTXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtYXRNaW5TZWMobW9kZWw/LnNlY29uZClcIiAoY2hhbmdlKT1cInVwZGF0ZVNlY29uZCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZG9ubHlJbnB1dHNcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBhcmlhLWxhYmVsPVwiU2Vjb25kc1wiIGkxOG4tYXJpYS1sYWJlbD1cIkBAbmdiLnRpbWVwaWNrZXIuc2Vjb25kc1wiXG4gICAgICAgICAgICAoa2V5ZG93bi5BcnJvd1VwKT1cImNoYW5nZVNlY29uZChzZWNvbmRTdGVwKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgKGtleWRvd24uQXJyb3dEb3duKT1cImNoYW5nZVNlY29uZCgtc2Vjb25kU3RlcCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCI+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNwaW5uZXJzXCIgdGFiaW5kZXg9XCItMVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2hhbmdlU2Vjb25kKC1zZWNvbmRTdGVwKVwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiIFtjbGFzcy5idG4tc21dPVwiaXNTbWFsbFNpemVcIiBbY2xhc3MuYnRuLWxnXT1cImlzTGFyZ2VTaXplXCIgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hldnJvbiBuZ2ItdHAtY2hldnJvbiBib3R0b21cIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIiBpMThuPVwiQEBuZ2IudGltZXBpY2tlci5kZWNyZW1lbnQtc2Vjb25kc1wiPkRlY3JlbWVudCBzZWNvbmRzPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm1lcmlkaWFuXCIgY2xhc3M9XCJuZ2ItdHAtc3BhY2VyXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtZXJpZGlhblwiIGNsYXNzPVwibmdiLXRwLW1lcmlkaWFuXCI+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeVwiIFtjbGFzcy5idG4tc21dPVwiaXNTbWFsbFNpemVcIiBbY2xhc3MuYnRuLWxnXT1cImlzTGFyZ2VTaXplXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTWVyaWRpYW4oKVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGVsPy5ob3VyID49IDEyOyBlbHNlIGFtXCIgaTE4bj1cIkBAbmdiLnRpbWVwaWNrZXIuUE1cIj5QTTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNhbSBpMThuPVwiQEBuZ2IudGltZXBpY2tlci5BTVwiPkFNPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICBgLFxuICBwcm92aWRlcnM6IFtOR0JfVElNRVBJQ0tFUl9WQUxVRV9BQ0NFU1NPUl1cbn0pXG5leHBvcnQgY2xhc3MgTmdiVGltZXBpY2tlciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIE9uQ2hhbmdlcyB7XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICBtb2RlbDogTmdiVGltZTtcblxuICBwcml2YXRlIF9ob3VyU3RlcDogbnVtYmVyO1xuICBwcml2YXRlIF9taW51dGVTdGVwOiBudW1iZXI7XG4gIHByaXZhdGUgX3NlY29uZFN0ZXA6IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNwbGF5IDEySCBvciAyNEggbW9kZS5cbiAgICovXG4gIEBJbnB1dCgpIG1lcmlkaWFuOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBzcGlubmVycyBhYm92ZSBhbmQgYmVsb3cgaW5wdXRzIGFyZSB2aXNpYmxlLlxuICAgKi9cbiAgQElucHV0KCkgc3Bpbm5lcnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgaXQgaXMgcG9zc2libGUgdG8gc2VsZWN0IHNlY29uZHMuXG4gICAqL1xuICBASW5wdXQoKSBzZWNvbmRzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGhvdXJzIHRvIGFkZC9zdWJ0cmFjdCB3aGVuIGNsaWNraW5nIGhvdXIgc3Bpbm5lcnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgaG91clN0ZXAoc3RlcDogbnVtYmVyKSB7XG4gICAgdGhpcy5faG91clN0ZXAgPSBpc0ludGVnZXIoc3RlcCkgPyBzdGVwIDogdGhpcy5fY29uZmlnLmhvdXJTdGVwO1xuICB9XG5cbiAgZ2V0IGhvdXJTdGVwKCk6IG51bWJlciB7IHJldHVybiB0aGlzLl9ob3VyU3RlcDsgfVxuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIG1pbnV0ZXMgdG8gYWRkL3N1YnRyYWN0IHdoZW4gY2xpY2tpbmcgbWludXRlIHNwaW5uZXJzLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IG1pbnV0ZVN0ZXAoc3RlcDogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWludXRlU3RlcCA9IGlzSW50ZWdlcihzdGVwKSA/IHN0ZXAgOiB0aGlzLl9jb25maWcubWludXRlU3RlcDtcbiAgfVxuXG4gIGdldCBtaW51dGVTdGVwKCk6IG51bWJlciB7IHJldHVybiB0aGlzLl9taW51dGVTdGVwOyB9XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0byBhZGQvc3VidHJhY3Qgd2hlbiBjbGlja2luZyBzZWNvbmQgc3Bpbm5lcnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgc2Vjb25kU3RlcChzdGVwOiBudW1iZXIpIHtcbiAgICB0aGlzLl9zZWNvbmRTdGVwID0gaXNJbnRlZ2VyKHN0ZXApID8gc3RlcCA6IHRoaXMuX2NvbmZpZy5zZWNvbmRTdGVwO1xuICB9XG5cbiAgZ2V0IHNlY29uZFN0ZXAoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX3NlY29uZFN0ZXA7IH1cblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgdGltZXBpY2tlciBpcyByZWFkb25seSBhbmQgY2FuJ3QgYmUgY2hhbmdlZC5cbiAgICovXG4gIEBJbnB1dCgpIHJlYWRvbmx5SW5wdXRzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiBpbnB1dHMgYW5kIGJ1dHRvbnMuXG4gICAqL1xuICBASW5wdXQoKSBzaXplOiAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnOiBOZ2JUaW1lcGlja2VyQ29uZmlnLCBwcml2YXRlIF9uZ2JUaW1lQWRhcHRlcjogTmdiVGltZUFkYXB0ZXI8YW55PixcbiAgICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMubWVyaWRpYW4gPSBfY29uZmlnLm1lcmlkaWFuO1xuICAgIHRoaXMuc3Bpbm5lcnMgPSBfY29uZmlnLnNwaW5uZXJzO1xuICAgIHRoaXMuc2Vjb25kcyA9IF9jb25maWcuc2Vjb25kcztcbiAgICB0aGlzLmhvdXJTdGVwID0gX2NvbmZpZy5ob3VyU3RlcDtcbiAgICB0aGlzLm1pbnV0ZVN0ZXAgPSBfY29uZmlnLm1pbnV0ZVN0ZXA7XG4gICAgdGhpcy5zZWNvbmRTdGVwID0gX2NvbmZpZy5zZWNvbmRTdGVwO1xuICAgIHRoaXMuZGlzYWJsZWQgPSBfY29uZmlnLmRpc2FibGVkO1xuICAgIHRoaXMucmVhZG9ubHlJbnB1dHMgPSBfY29uZmlnLnJlYWRvbmx5SW5wdXRzO1xuICAgIHRoaXMuc2l6ZSA9IF9jb25maWcuc2l6ZTtcbiAgfVxuXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIHdyaXRlVmFsdWUodmFsdWUpIHtcbiAgICBjb25zdCBzdHJ1Y3RWYWx1ZSA9IHRoaXMuX25nYlRpbWVBZGFwdGVyLmZyb21Nb2RlbCh2YWx1ZSk7XG4gICAgdGhpcy5tb2RlbCA9IHN0cnVjdFZhbHVlID8gbmV3IE5nYlRpbWUoc3RydWN0VmFsdWUuaG91ciwgc3RydWN0VmFsdWUubWludXRlLCBzdHJ1Y3RWYWx1ZS5zZWNvbmQpIDogbmV3IE5nYlRpbWUoKTtcbiAgICBpZiAoIXRoaXMuc2Vjb25kcyAmJiAoIXN0cnVjdFZhbHVlIHx8ICFpc051bWJlcihzdHJ1Y3RWYWx1ZS5zZWNvbmQpKSkge1xuICAgICAgdGhpcy5tb2RlbC5zZWNvbmQgPSAwO1xuICAgIH1cbiAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiBhbnkpOiB2b2lkIHsgdGhpcy5vbkNoYW5nZSA9IGZuOyB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IGFueSk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7IHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkOyB9XG5cbiAgY2hhbmdlSG91cihzdGVwOiBudW1iZXIpIHtcbiAgICB0aGlzLm1vZGVsLmNoYW5nZUhvdXIoc3RlcCk7XG4gICAgdGhpcy5wcm9wYWdhdGVNb2RlbENoYW5nZSgpO1xuICB9XG5cbiAgY2hhbmdlTWludXRlKHN0ZXA6IG51bWJlcikge1xuICAgIHRoaXMubW9kZWwuY2hhbmdlTWludXRlKHN0ZXApO1xuICAgIHRoaXMucHJvcGFnYXRlTW9kZWxDaGFuZ2UoKTtcbiAgfVxuXG4gIGNoYW5nZVNlY29uZChzdGVwOiBudW1iZXIpIHtcbiAgICB0aGlzLm1vZGVsLmNoYW5nZVNlY29uZChzdGVwKTtcbiAgICB0aGlzLnByb3BhZ2F0ZU1vZGVsQ2hhbmdlKCk7XG4gIH1cblxuICB1cGRhdGVIb3VyKG5ld1ZhbDogc3RyaW5nKSB7XG4gICAgY29uc3QgaXNQTSA9IHRoaXMubW9kZWwuaG91ciA+PSAxMjtcbiAgICBjb25zdCBlbnRlcmVkSG91ciA9IHRvSW50ZWdlcihuZXdWYWwpO1xuICAgIGlmICh0aGlzLm1lcmlkaWFuICYmIChpc1BNICYmIGVudGVyZWRIb3VyIDwgMTIgfHwgIWlzUE0gJiYgZW50ZXJlZEhvdXIgPT09IDEyKSkge1xuICAgICAgdGhpcy5tb2RlbC51cGRhdGVIb3VyKGVudGVyZWRIb3VyICsgMTIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vZGVsLnVwZGF0ZUhvdXIoZW50ZXJlZEhvdXIpO1xuICAgIH1cbiAgICB0aGlzLnByb3BhZ2F0ZU1vZGVsQ2hhbmdlKCk7XG4gIH1cblxuICB1cGRhdGVNaW51dGUobmV3VmFsOiBzdHJpbmcpIHtcbiAgICB0aGlzLm1vZGVsLnVwZGF0ZU1pbnV0ZSh0b0ludGVnZXIobmV3VmFsKSk7XG4gICAgdGhpcy5wcm9wYWdhdGVNb2RlbENoYW5nZSgpO1xuICB9XG5cbiAgdXBkYXRlU2Vjb25kKG5ld1ZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5tb2RlbC51cGRhdGVTZWNvbmQodG9JbnRlZ2VyKG5ld1ZhbCkpO1xuICAgIHRoaXMucHJvcGFnYXRlTW9kZWxDaGFuZ2UoKTtcbiAgfVxuXG4gIHRvZ2dsZU1lcmlkaWFuKCkge1xuICAgIGlmICh0aGlzLm1lcmlkaWFuKSB7XG4gICAgICB0aGlzLmNoYW5nZUhvdXIoMTIpO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdEhvdXIodmFsdWU6IG51bWJlcikge1xuICAgIGlmIChpc051bWJlcih2YWx1ZSkpIHtcbiAgICAgIGlmICh0aGlzLm1lcmlkaWFuKSB7XG4gICAgICAgIHJldHVybiBwYWROdW1iZXIodmFsdWUgJSAxMiA9PT0gMCA/IDEyIDogdmFsdWUgJSAxMik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcGFkTnVtYmVyKHZhbHVlICUgMjQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcGFkTnVtYmVyKE5hTik7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0TWluU2VjKHZhbHVlOiBudW1iZXIpIHsgcmV0dXJuIHBhZE51bWJlcih2YWx1ZSk7IH1cblxuICBnZXQgaXNTbWFsbFNpemUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLnNpemUgPT09ICdzbWFsbCc7IH1cblxuICBnZXQgaXNMYXJnZVNpemUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLnNpemUgPT09ICdsYXJnZSc7IH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3NlY29uZHMnXSAmJiAhdGhpcy5zZWNvbmRzICYmIHRoaXMubW9kZWwgJiYgIWlzTnVtYmVyKHRoaXMubW9kZWwuc2Vjb25kKSkge1xuICAgICAgdGhpcy5tb2RlbC5zZWNvbmQgPSAwO1xuICAgICAgdGhpcy5wcm9wYWdhdGVNb2RlbENoYW5nZShmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm9wYWdhdGVNb2RlbENoYW5nZSh0b3VjaGVkID0gdHJ1ZSkge1xuICAgIGlmICh0b3VjaGVkKSB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5tb2RlbC5pc1ZhbGlkKHRoaXMuc2Vjb25kcykpIHtcbiAgICAgIHRoaXMub25DaGFuZ2UoXG4gICAgICAgICAgdGhpcy5fbmdiVGltZUFkYXB0ZXIudG9Nb2RlbCh7aG91cjogdGhpcy5tb2RlbC5ob3VyLCBtaW51dGU6IHRoaXMubW9kZWwubWludXRlLCBzZWNvbmQ6IHRoaXMubW9kZWwuc2Vjb25kfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX25nYlRpbWVBZGFwdGVyLnRvTW9kZWwobnVsbCkpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHtOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtOZ2JUaW1lcGlja2VyfSBmcm9tICcuL3RpbWVwaWNrZXInO1xuXG5leHBvcnQge05nYlRpbWVwaWNrZXJ9IGZyb20gJy4vdGltZXBpY2tlcic7XG5leHBvcnQge05nYlRpbWVwaWNrZXJDb25maWd9IGZyb20gJy4vdGltZXBpY2tlci1jb25maWcnO1xuZXhwb3J0IHtOZ2JUaW1lU3RydWN0fSBmcm9tICcuL25nYi10aW1lLXN0cnVjdCc7XG5leHBvcnQge05nYlRpbWVBZGFwdGVyfSBmcm9tICcuL25nYi10aW1lLWFkYXB0ZXInO1xuXG5ATmdNb2R1bGUoe2RlY2xhcmF0aW9uczogW05nYlRpbWVwaWNrZXJdLCBleHBvcnRzOiBbTmdiVGltZXBpY2tlcl0sIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdfSlcbmV4cG9ydCBjbGFzcyBOZ2JUaW1lcGlja2VyTW9kdWxlIHtcbiAgLyoqXG4gICAqIEltcG9ydGluZyB3aXRoICcuZm9yUm9vdCgpJyBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LCB5b3UgY2FuIHNpbXBseSBpbXBvcnQgdGhlIG1vZHVsZS5cbiAgICogV2lsbCBiZSByZW1vdmVkIGluIDQuMC4wLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCAzLjAuMFxuICAgKi9cbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVycyB7IHJldHVybiB7bmdNb2R1bGU6IE5nYlRpbWVwaWNrZXJNb2R1bGV9OyB9XG59XG4iLCJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQbGFjZW1lbnRBcnJheX0gZnJvbSAnLi4vdXRpbC9wb3NpdGlvbmluZyc7XG5cbi8qKlxuICogQSBjb25maWd1cmF0aW9uIHNlcnZpY2UgZm9yIHRoZSBbYE5nYlRvb2x0aXBgXSgjL2NvbXBvbmVudHMvdG9vbHRpcC9hcGkjTmdiVG9vbHRpcCkgY29tcG9uZW50LlxuICpcbiAqIFlvdSBjYW4gaW5qZWN0IHRoaXMgc2VydmljZSwgdHlwaWNhbGx5IGluIHlvdXIgcm9vdCBjb21wb25lbnQsIGFuZCBjdXN0b21pemUgdGhlIHZhbHVlcyBvZiBpdHMgcHJvcGVydGllcyBpblxuICogb3JkZXIgdG8gcHJvdmlkZSBkZWZhdWx0IHZhbHVlcyBmb3IgYWxsIHRoZSB0b29sdGlwcyB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTmdiVG9vbHRpcENvbmZpZyB7XG4gIGF1dG9DbG9zZTogYm9vbGVhbiB8ICdpbnNpZGUnIHwgJ291dHNpZGUnID0gdHJ1ZTtcbiAgcGxhY2VtZW50OiBQbGFjZW1lbnRBcnJheSA9ICdhdXRvJztcbiAgdHJpZ2dlcnMgPSAnaG92ZXIgZm9jdXMnO1xuICBjb250YWluZXI6IHN0cmluZztcbiAgZGlzYWJsZVRvb2x0aXAgPSBmYWxzZTtcbiAgdG9vbHRpcENsYXNzOiBzdHJpbmc7XG4gIG9wZW5EZWxheSA9IDA7XG4gIGNsb3NlRGVsYXkgPSAwO1xufVxuIiwiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBSZW5kZXJlcjIsXG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgTmdab25lLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEFwcGxpY2F0aW9uUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtsaXN0ZW5Ub1RyaWdnZXJzfSBmcm9tICcuLi91dGlsL3RyaWdnZXJzJztcbmltcG9ydCB7bmdiQXV0b0Nsb3NlfSBmcm9tICcuLi91dGlsL2F1dG9jbG9zZSc7XG5pbXBvcnQge3Bvc2l0aW9uRWxlbWVudHMsIFBsYWNlbWVudEFycmF5fSBmcm9tICcuLi91dGlsL3Bvc2l0aW9uaW5nJztcbmltcG9ydCB7UG9wdXBTZXJ2aWNlfSBmcm9tICcuLi91dGlsL3BvcHVwJztcblxuaW1wb3J0IHtOZ2JUb29sdGlwQ29uZmlnfSBmcm9tICcuL3Rvb2x0aXAtY29uZmlnJztcblxubGV0IG5leHRJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nYi10b29sdGlwLXdpbmRvdycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7J1tjbGFzc10nOiAnXCJ0b29sdGlwIHNob3dcIiArICh0b29sdGlwQ2xhc3MgPyBcIiBcIiArIHRvb2x0aXBDbGFzcyA6IFwiXCIpJywgJ3JvbGUnOiAndG9vbHRpcCcsICdbaWRdJzogJ2lkJ30sXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cImFycm93XCI+PC9kaXY+PGRpdiBjbGFzcz1cInRvb2x0aXAtaW5uZXJcIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9kaXY+YCxcbiAgc3R5bGVVcmxzOiBbJy4vdG9vbHRpcC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTmdiVG9vbHRpcFdpbmRvdyB7XG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRvb2x0aXBDbGFzczogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgbGlnaHR3ZWlnaHQgYW5kIGV4dGVuc2libGUgZGlyZWN0aXZlIGZvciBmYW5jeSB0b29sdGlwIGNyZWF0aW9uLlxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ1tuZ2JUb29sdGlwXScsIGV4cG9ydEFzOiAnbmdiVG9vbHRpcCd9KVxuZXhwb3J0IGNsYXNzIE5nYlRvb2x0aXAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgdG9vbHRpcCBzaG91bGQgYmUgY2xvc2VkIG9uIGBFc2NhcGVgIGtleSBhbmQgaW5zaWRlL291dHNpZGUgY2xpY2tzOlxuICAgKlxuICAgKiAqIGB0cnVlYCAtIGNsb3NlcyBvbiBib3RoIG91dHNpZGUgYW5kIGluc2lkZSBjbGlja3MgYXMgd2VsbCBhcyBgRXNjYXBlYCBwcmVzc2VzXG4gICAqICogYGZhbHNlYCAtIGRpc2FibGVzIHRoZSBhdXRvQ2xvc2UgZmVhdHVyZSAoTkI6IHRyaWdnZXJzIHN0aWxsIGFwcGx5KVxuICAgKiAqIGBcImluc2lkZVwiYCAtIGNsb3NlcyBvbiBpbnNpZGUgY2xpY2tzIGFzIHdlbGwgYXMgRXNjYXBlIHByZXNzZXNcbiAgICogKiBgXCJvdXRzaWRlXCJgIC0gY2xvc2VzIG9uIG91dHNpZGUgY2xpY2tzIChzb21ldGltZXMgYWxzbyBhY2hpZXZhYmxlIHRocm91Z2ggdHJpZ2dlcnMpXG4gICAqIGFzIHdlbGwgYXMgYEVzY2FwZWAgcHJlc3Nlc1xuICAgKlxuICAgKiBAc2luY2UgMy4wLjBcbiAgICovXG4gIEBJbnB1dCgpIGF1dG9DbG9zZTogYm9vbGVhbiB8ICdpbnNpZGUnIHwgJ291dHNpZGUnO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJlZmVycmVkIHBsYWNlbWVudCBvZiB0aGUgdG9vbHRpcC5cbiAgICpcbiAgICogUG9zc2libGUgdmFsdWVzIGFyZSBgXCJ0b3BcImAsIGBcInRvcC1sZWZ0XCJgLCBgXCJ0b3AtcmlnaHRcImAsIGBcImJvdHRvbVwiYCwgYFwiYm90dG9tLWxlZnRcImAsXG4gICAqIGBcImJvdHRvbS1yaWdodFwiYCwgYFwibGVmdFwiYCwgYFwibGVmdC10b3BcImAsIGBcImxlZnQtYm90dG9tXCJgLCBgXCJyaWdodFwiYCwgYFwicmlnaHQtdG9wXCJgLFxuICAgKiBgXCJyaWdodC1ib3R0b21cImBcbiAgICpcbiAgICogQWNjZXB0cyBhbiBhcnJheSBvZiBzdHJpbmdzIG9yIGEgc3RyaW5nIHdpdGggc3BhY2Ugc2VwYXJhdGVkIHBvc3NpYmxlIHZhbHVlcy5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgb3JkZXIgb2YgcHJlZmVyZW5jZSBpcyBgXCJhdXRvXCJgIChzYW1lIGFzIHRoZSBzZXF1ZW5jZSBhYm92ZSkuXG4gICAqXG4gICAqIFBsZWFzZSBzZWUgdGhlIFtwb3NpdGlvbmluZyBvdmVydmlld10oIy9wb3NpdGlvbmluZykgZm9yIG1vcmUgZGV0YWlscy5cbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlbWVudDogUGxhY2VtZW50QXJyYXk7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBldmVudHMgdGhhdCBzaG91bGQgdHJpZ2dlciB0aGUgdG9vbHRpcC5cbiAgICpcbiAgICogU3VwcG9ydHMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBldmVudCBuYW1lcy5cbiAgICogRm9yIG1vcmUgZGV0YWlscyBzZWUgdGhlIFt0cmlnZ2VycyBkZW1vXSgjL2NvbXBvbmVudHMvdG9vbHRpcC9leGFtcGxlcyN0cmlnZ2VycykuXG4gICAqL1xuICBASW5wdXQoKSB0cmlnZ2Vyczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHNlbGVjdG9yIHNwZWNpZnlpbmcgdGhlIGVsZW1lbnQgdGhlIHRvb2x0aXAgc2hvdWxkIGJlIGFwcGVuZGVkIHRvLlxuICAgKlxuICAgKiBDdXJyZW50bHkgb25seSBzdXBwb3J0cyBgXCJib2R5XCJgLlxuICAgKi9cbiAgQElucHV0KCkgY29udGFpbmVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdG9vbHRpcCBpcyBkaXNhYmxlZCBhbmQgd29uJ3QgYmUgZGlzcGxheWVkLlxuICAgKlxuICAgKiBAc2luY2UgMS4xLjBcbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVUb29sdGlwOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBjbGFzcyBhcHBsaWVkIHRvIHRoZSB0b29sdGlwIHdpbmRvdyBlbGVtZW50LlxuICAgKlxuICAgKiBAc2luY2UgMy4yLjBcbiAgICovXG4gIEBJbnB1dCgpIHRvb2x0aXBDbGFzczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgb3BlbmluZyBkZWxheSBpbiBtcy4gV29ya3Mgb25seSBmb3IgXCJub24tbWFudWFsXCIgb3BlbmluZyB0cmlnZ2VycyBkZWZpbmVkIGJ5IHRoZSBgdHJpZ2dlcnNgIGlucHV0LlxuICAgKlxuICAgKiBAc2luY2UgNC4xLjBcbiAgICovXG4gIEBJbnB1dCgpIG9wZW5EZWxheTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgY2xvc2luZyBkZWxheSBpbiBtcy4gV29ya3Mgb25seSBmb3IgXCJub24tbWFudWFsXCIgb3BlbmluZyB0cmlnZ2VycyBkZWZpbmVkIGJ5IHRoZSBgdHJpZ2dlcnNgIGlucHV0LlxuICAgKlxuICAgKiBAc2luY2UgNC4xLjBcbiAgICovXG4gIEBJbnB1dCgpIGNsb3NlRGVsYXk6IG51bWJlcjtcblxuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB0b29sdGlwIGlzIHNob3duLiBDb250YWlucyBubyBwYXlsb2FkLlxuICAgKi9cbiAgQE91dHB1dCgpIHNob3duID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwb3BvdmVyIGlzIGhpZGRlbi4gQ29udGFpbnMgbm8gcGF5bG9hZC5cbiAgICovXG4gIEBPdXRwdXQoKSBoaWRkZW4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSBfbmdiVG9vbHRpcDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcbiAgcHJpdmF0ZSBfbmdiVG9vbHRpcFdpbmRvd0lkID0gYG5nYi10b29sdGlwLSR7bmV4dElkKyt9YDtcbiAgcHJpdmF0ZSBfcG9wdXBTZXJ2aWNlOiBQb3B1cFNlcnZpY2U8TmdiVG9vbHRpcFdpbmRvdz47XG4gIHByaXZhdGUgX3dpbmRvd1JlZjogQ29tcG9uZW50UmVmPE5nYlRvb2x0aXBXaW5kb3c+O1xuICBwcml2YXRlIF91bnJlZ2lzdGVyTGlzdGVuZXJzRm47XG4gIHByaXZhdGUgX3pvbmVTdWJzY3JpcHRpb246IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LCBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgY29uZmlnOiBOZ2JUb29sdGlwQ29uZmlnLFxuICAgICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnksIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgIHByaXZhdGUgX2FwcGxpY2F0aW9uUmVmOiBBcHBsaWNhdGlvblJlZikge1xuICAgIHRoaXMuYXV0b0Nsb3NlID0gY29uZmlnLmF1dG9DbG9zZTtcbiAgICB0aGlzLnBsYWNlbWVudCA9IGNvbmZpZy5wbGFjZW1lbnQ7XG4gICAgdGhpcy50cmlnZ2VycyA9IGNvbmZpZy50cmlnZ2VycztcbiAgICB0aGlzLmNvbnRhaW5lciA9IGNvbmZpZy5jb250YWluZXI7XG4gICAgdGhpcy5kaXNhYmxlVG9vbHRpcCA9IGNvbmZpZy5kaXNhYmxlVG9vbHRpcDtcbiAgICB0aGlzLnRvb2x0aXBDbGFzcyA9IGNvbmZpZy50b29sdGlwQ2xhc3M7XG4gICAgdGhpcy5vcGVuRGVsYXkgPSBjb25maWcub3BlbkRlbGF5O1xuICAgIHRoaXMuY2xvc2VEZWxheSA9IGNvbmZpZy5jbG9zZURlbGF5O1xuICAgIHRoaXMuX3BvcHVwU2VydmljZSA9IG5ldyBQb3B1cFNlcnZpY2U8TmdiVG9vbHRpcFdpbmRvdz4oXG4gICAgICAgIE5nYlRvb2x0aXBXaW5kb3csIGluamVjdG9yLCB2aWV3Q29udGFpbmVyUmVmLCBfcmVuZGVyZXIsIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgX2FwcGxpY2F0aW9uUmVmKTtcblxuICAgIHRoaXMuX3pvbmVTdWJzY3JpcHRpb24gPSBfbmdab25lLm9uU3RhYmxlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fd2luZG93UmVmKSB7XG4gICAgICAgIHBvc2l0aW9uRWxlbWVudHMoXG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuX3dpbmRvd1JlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LCB0aGlzLnBsYWNlbWVudCxcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyID09PSAnYm9keScsICdicy10b29sdGlwJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHN0cmluZyBjb250ZW50IG9yIGEgYFRlbXBsYXRlUmVmYCBmb3IgdGhlIGNvbnRlbnQgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB0b29sdGlwLlxuICAgKlxuICAgKiBJZiB0aGUgY29udGVudCBpZiBmYWxzeSwgdGhlIHRvb2x0aXAgd29uJ3Qgb3Blbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBuZ2JUb29sdGlwKHZhbHVlOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5fbmdiVG9vbHRpcCA9IHZhbHVlO1xuICAgIGlmICghdmFsdWUgJiYgdGhpcy5fd2luZG93UmVmKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG5nYlRvb2x0aXAoKSB7IHJldHVybiB0aGlzLl9uZ2JUb29sdGlwOyB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSB0b29sdGlwLlxuICAgKlxuICAgKiBUaGlzIGlzIGNvbnNpZGVyZWQgdG8gYmUgYSBcIm1hbnVhbFwiIHRyaWdnZXJpbmcuXG4gICAqIFRoZSBgY29udGV4dGAgaXMgYW4gb3B0aW9uYWwgdmFsdWUgdG8gYmUgaW5qZWN0ZWQgaW50byB0aGUgdG9vbHRpcCB0ZW1wbGF0ZSB3aGVuIGl0IGlzIGNyZWF0ZWQuXG4gICAqL1xuICBvcGVuKGNvbnRleHQ/OiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuX3dpbmRvd1JlZiAmJiB0aGlzLl9uZ2JUb29sdGlwICYmICF0aGlzLmRpc2FibGVUb29sdGlwKSB7XG4gICAgICB0aGlzLl93aW5kb3dSZWYgPSB0aGlzLl9wb3B1cFNlcnZpY2Uub3Blbih0aGlzLl9uZ2JUb29sdGlwLCBjb250ZXh0KTtcbiAgICAgIHRoaXMuX3dpbmRvd1JlZi5pbnN0YW5jZS50b29sdGlwQ2xhc3MgPSB0aGlzLnRvb2x0aXBDbGFzcztcbiAgICAgIHRoaXMuX3dpbmRvd1JlZi5pbnN0YW5jZS5pZCA9IHRoaXMuX25nYlRvb2x0aXBXaW5kb3dJZDtcblxuICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2FyaWEtZGVzY3JpYmVkYnknLCB0aGlzLl9uZ2JUb29sdGlwV2luZG93SWQpO1xuXG4gICAgICBpZiAodGhpcy5jb250YWluZXIgPT09ICdib2R5Jykge1xuICAgICAgICB0aGlzLl9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuY29udGFpbmVyKS5hcHBlbmRDaGlsZCh0aGlzLl93aW5kb3dSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFdlIG5lZWQgdG8gZGV0ZWN0IGNoYW5nZXMsIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGVyZSAub3BlbigpIG1pZ2h0IGJlIGNhbGxlZCBmcm9tLlxuICAgICAgLy8gRXguIG9wZW5pbmcgdG9vbHRpcCBmcm9tIG9uZSBvZiBsaWZlY3ljbGUgaG9va3MgdGhhdCBydW4gYWZ0ZXIgdGhlIENEXG4gICAgICAvLyAoc2F5IGZyb20gbmdBZnRlclZpZXdJbml0KSB3aWxsIHJlc3VsdCBpbiAnRXhwcmVzc2lvbkhhc0NoYW5nZWQnIGV4Y2VwdGlvblxuICAgICAgdGhpcy5fd2luZG93UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgLy8gV2UgbmVlZCB0byBtYXJrIGZvciBjaGVjaywgYmVjYXVzZSB0b29sdGlwIHdvbid0IHdvcmsgaW5zaWRlIHRoZSBPblB1c2ggY29tcG9uZW50LlxuICAgICAgLy8gRXguIHdoZW4gd2UgdXNlIGV4cHJlc3Npb24gbGlrZSBge3sgdG9vbHRpcC5pc09wZW4oKSA6ICdvcGVuZWQnIDogJ2Nsb3NlZCcgfX1gXG4gICAgICAvLyBpbnNpZGUgdGhlIHRlbXBsYXRlIG9mIGFuIE9uUHVzaCBjb21wb25lbnQgYW5kIHdlIGNoYW5nZSB0aGUgdG9vbHRpcCBmcm9tXG4gICAgICAvLyBvcGVuIC0+IGNsb3NlZCwgdGhlIGV4cHJlc3Npb24gaW4gcXVlc3Rpb24gd29uJ3QgYmUgdXBkYXRlZCB1bmxlc3Mgd2UgZXhwbGljaXRseVxuICAgICAgLy8gbWFyayB0aGUgcGFyZW50IGNvbXBvbmVudCB0byBiZSBjaGVja2VkLlxuICAgICAgdGhpcy5fd2luZG93UmVmLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICBuZ2JBdXRvQ2xvc2UoXG4gICAgICAgICAgdGhpcy5fbmdab25lLCB0aGlzLl9kb2N1bWVudCwgdGhpcy5hdXRvQ2xvc2UsICgpID0+IHRoaXMuY2xvc2UoKSwgdGhpcy5oaWRkZW4sXG4gICAgICAgICAgW3RoaXMuX3dpbmRvd1JlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50XSk7XG5cbiAgICAgIHRoaXMuc2hvd24uZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIHRvb2x0aXAuXG4gICAqXG4gICAqIFRoaXMgaXMgY29uc2lkZXJlZCB0byBiZSBhIFwibWFudWFsXCIgdHJpZ2dlcmluZyBvZiB0aGUgdG9vbHRpcC5cbiAgICovXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93aW5kb3dSZWYgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2FyaWEtZGVzY3JpYmVkYnknKTtcbiAgICAgIHRoaXMuX3BvcHVwU2VydmljZS5jbG9zZSgpO1xuICAgICAgdGhpcy5fd2luZG93UmVmID0gbnVsbDtcbiAgICAgIHRoaXMuaGlkZGVuLmVtaXQoKTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSB0b29sdGlwLlxuICAgKlxuICAgKiBUaGlzIGlzIGNvbnNpZGVyZWQgdG8gYmUgYSBcIm1hbnVhbFwiIHRyaWdnZXJpbmcgb2YgdGhlIHRvb2x0aXAuXG4gICAqL1xuICB0b2dnbGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3dpbmRvd1JlZikge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBgdHJ1ZWAsIGlmIHRoZSBwb3BvdmVyIGlzIGN1cnJlbnRseSBzaG93bi5cbiAgICovXG4gIGlzT3BlbigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3dpbmRvd1JlZiAhPSBudWxsOyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fdW5yZWdpc3Rlckxpc3RlbmVyc0ZuID0gbGlzdGVuVG9UcmlnZ2VycyhcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIsIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy50cmlnZ2VycywgdGhpcy5pc09wZW4uYmluZCh0aGlzKSwgdGhpcy5vcGVuLmJpbmQodGhpcyksXG4gICAgICAgIHRoaXMuY2xvc2UuYmluZCh0aGlzKSwgK3RoaXMub3BlbkRlbGF5LCArdGhpcy5jbG9zZURlbGF5KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgICAvLyBUaGlzIGNoZWNrIGlzIG5lZWRlZCBhcyBpdCBtaWdodCBoYXBwZW4gdGhhdCBuZ09uRGVzdHJveSBpcyBjYWxsZWQgYmVmb3JlIG5nT25Jbml0XG4gICAgLy8gdW5kZXIgY2VydGFpbiBjb25kaXRpb25zLCBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2lzc3Vlcy8yMTk5XG4gICAgaWYgKHRoaXMuX3VucmVnaXN0ZXJMaXN0ZW5lcnNGbikge1xuICAgICAgdGhpcy5fdW5yZWdpc3Rlckxpc3RlbmVyc0ZuKCk7XG4gICAgfVxuICAgIHRoaXMuX3pvbmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7TmdiVG9vbHRpcCwgTmdiVG9vbHRpcFdpbmRvd30gZnJvbSAnLi90b29sdGlwJztcblxuZXhwb3J0IHtOZ2JUb29sdGlwQ29uZmlnfSBmcm9tICcuL3Rvb2x0aXAtY29uZmlnJztcbmV4cG9ydCB7TmdiVG9vbHRpcH0gZnJvbSAnLi90b29sdGlwJztcbmV4cG9ydCB7UGxhY2VtZW50fSBmcm9tICcuLi91dGlsL3Bvc2l0aW9uaW5nJztcblxuQE5nTW9kdWxlKHtkZWNsYXJhdGlvbnM6IFtOZ2JUb29sdGlwLCBOZ2JUb29sdGlwV2luZG93XSwgZXhwb3J0czogW05nYlRvb2x0aXBdLCBlbnRyeUNvbXBvbmVudHM6IFtOZ2JUb29sdGlwV2luZG93XX0pXG5leHBvcnQgY2xhc3MgTmdiVG9vbHRpcE1vZHVsZSB7XG4gIC8qKlxuICAgKiBObyBuZWVkIGluIGZvclJvb3QgYW55bW9yZSB3aXRoIHRyZWUtc2hha2VhYmxlIHNlcnZpY2VzXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIDMuMC4wXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHsgcmV0dXJuIHtuZ01vZHVsZTogTmdiVG9vbHRpcE1vZHVsZX07IH1cbn1cbiIsImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtyZWdFeHBFc2NhcGUsIHRvU3RyaW5nfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgaGVscHMgd2l0aCB0ZXh0IGhpZ2hsaWdodGluZy5cbiAqXG4gKiBJZiBzcGxpdHMgdGhlIGByZXN1bHRgIHRleHQgaW50byBwYXJ0cyB0aGF0IGNvbnRhaW4gdGhlIHNlYXJjaGVkIGB0ZXJtYCBhbmQgZ2VuZXJhdGVzIHRoZSBIVE1MIG1hcmt1cCB0byBzaW1wbGlmeVxuICogaGlnaGxpZ2h0aW5nOlxuICpcbiAqIEV4LiBgcmVzdWx0PVwiQWxhc2thXCJgIGFuZCBgdGVybT1cImFzXCJgIHdpbGwgcHJvZHVjZSBgQWw8c3BhbiBjbGFzcz1cIm5nYi1oaWdobGlnaHRcIj5hczwvc3Bhbj5rYWAuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nYi1oaWdobGlnaHQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IGA8bmctdGVtcGxhdGUgbmdGb3IgW25nRm9yT2ZdPVwicGFydHNcIiBsZXQtcGFydCBsZXQtaXNPZGQ9XCJvZGRcIj5gICtcbiAgICAgIGA8c3BhbiAqbmdJZj1cImlzT2RkOyBlbHNlIGV2ZW5cIiBbY2xhc3NdPVwiaGlnaGxpZ2h0Q2xhc3NcIj57e3BhcnR9fTwvc3Bhbj48bmctdGVtcGxhdGUgI2V2ZW4+e3twYXJ0fX08L25nLXRlbXBsYXRlPmAgK1xuICAgICAgYDwvbmctdGVtcGxhdGU+YCwgIC8vIHRlbXBsYXRlIG5lZWRzIHRvIGJlIGZvcm1hdHRlZCBpbiBhIGNlcnRhaW4gd2F5IHNvIHdlIGRvbid0IGFkZCBlbXB0eSB0ZXh0IG5vZGVzXG4gIHN0eWxlVXJsczogWycuL2hpZ2hsaWdodC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTmdiSGlnaGxpZ2h0IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgcGFydHM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIGZvciBgPHNwYW4+YCBlbGVtZW50cyB3cmFwcGluZyB0aGUgYHRlcm1gIGluc2lkZSB0aGUgYHJlc3VsdGAuXG4gICAqL1xuICBASW5wdXQoKSBoaWdobGlnaHRDbGFzcyA9ICduZ2ItaGlnaGxpZ2h0JztcblxuICAvKipcbiAgICogVGhlIHRleHQgaGlnaGxpZ2h0aW5nIGlzIGFkZGVkIHRvLlxuICAgKlxuICAgKiBJZiB0aGUgYHRlcm1gIGlzIGZvdW5kIGluc2lkZSB0aGlzIHRleHQsIGl0IHdpbGwgYmUgaGlnaGxpZ2h0ZWQuXG4gICAqIElmIHRoZSBgdGVybWAgY29udGFpbnMgYXJyYXkgdGhlbiBhbGwgdGhlIGl0ZW1zIGZyb20gaXQgd2lsbCBiZSBoaWdobGlnaHRlZCBpbnNpZGUgdGhlIHRleHQuXG4gICAqL1xuICBASW5wdXQoKSByZXN1bHQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRlcm0gb3IgYXJyYXkgb2YgdGVybXMgdG8gYmUgaGlnaGxpZ2h0ZWQuXG4gICAqIFNpbmNlIHZlcnNpb24gYHY0LjIuMGAgdGVybSBjb3VsZCBiZSBhIGBzdHJpbmdbXWBcbiAgICovXG4gIEBJbnB1dCgpIHRlcm06IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCByZXN1bHRTdHIgPSB0b1N0cmluZyh0aGlzLnJlc3VsdCk7XG4gICAgaWYgKCFyZXN1bHRTdHIpIHtcbiAgICAgIHRoaXMucGFydHMgPSBbcmVzdWx0U3RyXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IHJlc3VsdFRlcm1zOiBzdHJpbmdbXSA9IEFycmF5LmlzQXJyYXkodGhpcy50ZXJtKSA/IHRoaXMudGVybS5tYXAoeCA9PiB0b1N0cmluZyh4KSkgOiBbdG9TdHJpbmcodGhpcy50ZXJtKV07XG5cbiAgICByZXN1bHRUZXJtcyA9IHJlc3VsdFRlcm1zLmZpbHRlcih4ID0+IHgpO1xuICAgIGlmICghcmVzdWx0VGVybXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnBhcnRzID0gW3Jlc3VsdFN0cl07XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVnZXhTdHIgPSBgKCR7cmVzdWx0VGVybXMubWFwKHggPT4gcmVnRXhwRXNjYXBlKHgpKS5qb2luKCd8Jyl9KWA7XG4gICAgdGhpcy5wYXJ0cyA9IHJlc3VsdFN0ci5zcGxpdChuZXcgUmVnRXhwKHJlZ2V4U3RyLCAnZ21pJykpO1xuICB9XG59XG4iLCJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBUZW1wbGF0ZVJlZiwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHt0b1N0cmluZ30gZnJvbSAnLi4vdXRpbC91dGlsJztcblxuLyoqXG4gKiBUaGUgY29udGV4dCBmb3IgdGhlIHR5cGVhaGVhZCByZXN1bHQgdGVtcGxhdGUgaW4gY2FzZSB5b3Ugd2FudCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBvbmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdWx0VGVtcGxhdGVDb250ZXh0IHtcbiAgLyoqXG4gICAqIFlvdXIgdHlwZWFoZWFkIHJlc3VsdCBpdGVtLlxuICAgKi9cbiAgcmVzdWx0OiBhbnk7XG5cbiAgLyoqXG4gICAqIFNlYXJjaCB0ZXJtIGZyb20gdGhlIGA8aW5wdXQ+YCB1c2VkIHRvIGdldCBjdXJyZW50IHJlc3VsdC5cbiAgICovXG4gIHRlcm06IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdiLXR5cGVhaGVhZC13aW5kb3cnLFxuICBleHBvcnRBczogJ25nYlR5cGVhaGVhZFdpbmRvdycsXG4gIGhvc3Q6IHsnKG1vdXNlZG93biknOiAnJGV2ZW50LnByZXZlbnREZWZhdWx0KCknLCAnY2xhc3MnOiAnZHJvcGRvd24tbWVudSBzaG93JywgJ3JvbGUnOiAnbGlzdGJveCcsICdbaWRdJzogJ2lkJ30sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLXRlbXBsYXRlICNydCBsZXQtcmVzdWx0PVwicmVzdWx0XCIgbGV0LXRlcm09XCJ0ZXJtXCIgbGV0LWZvcm1hdHRlcj1cImZvcm1hdHRlclwiPlxuICAgICAgPG5nYi1oaWdobGlnaHQgW3Jlc3VsdF09XCJmb3JtYXR0ZXIocmVzdWx0KVwiIFt0ZXJtXT1cInRlcm1cIj48L25nYi1oaWdobGlnaHQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgbmdGb3IgW25nRm9yT2ZdPVwicmVzdWx0c1wiIGxldC1yZXN1bHQgbGV0LWlkeD1cImluZGV4XCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgW2lkXT1cImlkICsgJy0nICsgaWR4XCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpZHggPT09IGFjdGl2ZUlkeFwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cIm1hcmtBY3RpdmUoaWR4KVwiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3QocmVzdWx0KVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJyZXN1bHRUZW1wbGF0ZSB8fCBydFwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyZXN1bHQ6IHJlc3VsdCwgdGVybTogdGVybSwgZm9ybWF0dGVyOiBmb3JtYXR0ZXJ9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgTmdiVHlwZWFoZWFkV2luZG93IGltcGxlbWVudHMgT25Jbml0IHtcbiAgYWN0aXZlSWR4ID0gMDtcblxuICAvKipcbiAgICogIFRoZSBpZCBmb3IgdGhlIHR5cGVhaGVhZCB3aW5kb3cuIFRoZSBpZCBzaG91bGQgYmUgdW5pcXVlIGFuZCB0aGUgc2FtZVxuICAgKiAgYXMgdGhlIGFzc29jaWF0ZWQgdHlwZWFoZWFkJ3MgaWQuXG4gICAqL1xuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGbGFnIGluZGljYXRpbmcgaWYgdGhlIGZpcnN0IHJvdyBzaG91bGQgYmUgYWN0aXZlIGluaXRpYWxseVxuICAgKi9cbiAgQElucHV0KCkgZm9jdXNGaXJzdCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFR5cGVhaGVhZCBtYXRjaCByZXN1bHRzIHRvIGJlIGRpc3BsYXllZFxuICAgKi9cbiAgQElucHV0KCkgcmVzdWx0cztcblxuICAvKipcbiAgICogU2VhcmNoIHRlcm0gdXNlZCB0byBnZXQgY3VycmVudCByZXN1bHRzXG4gICAqL1xuICBASW5wdXQoKSB0ZXJtOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdXNlZCB0byBmb3JtYXQgYSBnaXZlbiByZXN1bHQgYmVmb3JlIGRpc3BsYXkuIFRoaXMgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBhIGZvcm1hdHRlZCBzdHJpbmcgd2l0aG91dCBhbnlcbiAgICogSFRNTCBtYXJrdXBcbiAgICovXG4gIEBJbnB1dCgpIGZvcm1hdHRlciA9IHRvU3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHRlbXBsYXRlIHRvIG92ZXJyaWRlIGEgbWF0Y2hpbmcgcmVzdWx0IGRlZmF1bHQgZGlzcGxheVxuICAgKi9cbiAgQElucHV0KCkgcmVzdWx0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPFJlc3VsdFRlbXBsYXRlQ29udGV4dD47XG5cbiAgLyoqXG4gICAqIEV2ZW50IHJhaXNlZCB3aGVuIHVzZXIgc2VsZWN0cyBhIHBhcnRpY3VsYXIgcmVzdWx0IHJvd1xuICAgKi9cbiAgQE91dHB1dCgnc2VsZWN0Jykgc2VsZWN0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgnYWN0aXZlQ2hhbmdlJykgYWN0aXZlQ2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgaGFzQWN0aXZlKCkgeyByZXR1cm4gdGhpcy5hY3RpdmVJZHggPiAtMSAmJiB0aGlzLmFjdGl2ZUlkeCA8IHRoaXMucmVzdWx0cy5sZW5ndGg7IH1cblxuICBnZXRBY3RpdmUoKSB7IHJldHVybiB0aGlzLnJlc3VsdHNbdGhpcy5hY3RpdmVJZHhdOyB9XG5cbiAgbWFya0FjdGl2ZShhY3RpdmVJZHg6IG51bWJlcikge1xuICAgIHRoaXMuYWN0aXZlSWR4ID0gYWN0aXZlSWR4O1xuICAgIHRoaXMuX2FjdGl2ZUNoYW5nZWQoKTtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgaWYgKHRoaXMuYWN0aXZlSWR4ID09PSB0aGlzLnJlc3VsdHMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5hY3RpdmVJZHggPSB0aGlzLmZvY3VzRmlyc3QgPyAodGhpcy5hY3RpdmVJZHggKyAxKSAlIHRoaXMucmVzdWx0cy5sZW5ndGggOiAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY3RpdmVJZHgrKztcbiAgICB9XG4gICAgdGhpcy5fYWN0aXZlQ2hhbmdlZCgpO1xuICB9XG5cbiAgcHJldigpIHtcbiAgICBpZiAodGhpcy5hY3RpdmVJZHggPCAwKSB7XG4gICAgICB0aGlzLmFjdGl2ZUlkeCA9IHRoaXMucmVzdWx0cy5sZW5ndGggLSAxO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVJZHggPT09IDApIHtcbiAgICAgIHRoaXMuYWN0aXZlSWR4ID0gdGhpcy5mb2N1c0ZpcnN0ID8gdGhpcy5yZXN1bHRzLmxlbmd0aCAtIDEgOiAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY3RpdmVJZHgtLTtcbiAgICB9XG4gICAgdGhpcy5fYWN0aXZlQ2hhbmdlZCgpO1xuICB9XG5cbiAgcmVzZXRBY3RpdmUoKSB7XG4gICAgdGhpcy5hY3RpdmVJZHggPSB0aGlzLmZvY3VzRmlyc3QgPyAwIDogLTE7XG4gICAgdGhpcy5fYWN0aXZlQ2hhbmdlZCgpO1xuICB9XG5cbiAgc2VsZWN0KGl0ZW0pIHsgdGhpcy5zZWxlY3RFdmVudC5lbWl0KGl0ZW0pOyB9XG5cbiAgbmdPbkluaXQoKSB7IHRoaXMucmVzZXRBY3RpdmUoKTsgfVxuXG4gIHByaXZhdGUgX2FjdGl2ZUNoYW5nZWQoKSB7XG4gICAgdGhpcy5hY3RpdmVDaGFuZ2VFdmVudC5lbWl0KHRoaXMuYWN0aXZlSWR4ID49IDAgPyB0aGlzLmlkICsgJy0nICsgdGhpcy5hY3RpdmVJZHggOiB1bmRlZmluZWQpO1xuICB9XG59XG4iLCJpbXBvcnQge0luamVjdGFibGUsIEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5cblxuLy8gdXNlZnVsbmVzcyAoYW5kIGRlZmF1bHQgdmFsdWUpIG9mIGRlbGF5IGRvY3VtZW50ZWQgaW4gTWF0ZXJpYWwncyBDREtcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL21hdGVyaWFsMi9ibG9iLzY0MDVkYTliOGU4NTMyYTdlNWM4NTRjOTIwZWUxODE1YzI3NWQ3MzQvc3JjL2Nkay9hMTF5L2xpdmUtYW5ub3VuY2VyL2xpdmUtYW5ub3VuY2VyLnRzI0w1MFxuZXhwb3J0IHR5cGUgQVJJQV9MSVZFX0RFTEFZX1RZUEUgPSBudW1iZXIgfCBudWxsO1xuZXhwb3J0IGNvbnN0IEFSSUFfTElWRV9ERUxBWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBUklBX0xJVkVfREVMQVlfVFlQRT4oXG4gICAgJ2xpdmUgYW5ub3VuY2VyIGRlbGF5Jywge3Byb3ZpZGVkSW46ICdyb290JywgZmFjdG9yeTogQVJJQV9MSVZFX0RFTEFZX0ZBQ1RPUll9KTtcbmV4cG9ydCBmdW5jdGlvbiBBUklBX0xJVkVfREVMQVlfRkFDVE9SWSgpOiBudW1iZXIge1xuICByZXR1cm4gMTAwO1xufVxuXG5cbmZ1bmN0aW9uIGdldExpdmVFbGVtZW50KGRvY3VtZW50OiBhbnksIGxhenlDcmVhdGUgPSBmYWxzZSk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yKCcjbmdiLWxpdmUnKSBhcyBIVE1MRWxlbWVudDtcblxuICBpZiAoZWxlbWVudCA9PSBudWxsICYmIGxhenlDcmVhdGUpIHtcbiAgICBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnaWQnLCAnbmdiLWxpdmUnKTtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1saXZlJywgJ3BvbGl0ZScpO1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWF0b21pYycsICd0cnVlJyk7XG5cbiAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3NyLW9ubHknKTtcblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudDtcbn1cblxuXG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIExpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogYW55LCBASW5qZWN0KEFSSUFfTElWRV9ERUxBWSkgcHJpdmF0ZSBfZGVsYXk6IGFueSkge31cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZ2V0TGl2ZUVsZW1lbnQodGhpcy5fZG9jdW1lbnQpO1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICBlbGVtZW50LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgc2F5KG1lc3NhZ2U6IHN0cmluZykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBnZXRMaXZlRWxlbWVudCh0aGlzLl9kb2N1bWVudCwgdHJ1ZSk7XG4gICAgY29uc3QgZGVsYXkgPSB0aGlzLl9kZWxheTtcblxuICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSAnJztcbiAgICBjb25zdCBzZXRUZXh0ID0gKCkgPT4gZWxlbWVudC50ZXh0Q29udGVudCA9IG1lc3NhZ2U7XG4gICAgaWYgKGRlbGF5ID09PSBudWxsKSB7XG4gICAgICBzZXRUZXh0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRpbWVvdXQoc2V0VGV4dCwgZGVsYXkpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGxhY2VtZW50QXJyYXl9IGZyb20gJy4uL3V0aWwvcG9zaXRpb25pbmcnO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBzZXJ2aWNlIGZvciB0aGUgW2BOZ2JUeXBlYWhlYWRgXSgjL2NvbXBvbmVudHMvdHlwZWFoZWFkL2FwaSNOZ2JUeXBlYWhlYWQpIGNvbXBvbmVudC5cbiAqXG4gKiBZb3UgY2FuIGluamVjdCB0aGlzIHNlcnZpY2UsIHR5cGljYWxseSBpbiB5b3VyIHJvb3QgY29tcG9uZW50LCBhbmQgY3VzdG9taXplIHRoZSB2YWx1ZXMgb2YgaXRzIHByb3BlcnRpZXMgaW5cbiAqIG9yZGVyIHRvIHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUgdHlwZWFoZWFkcyB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTmdiVHlwZWFoZWFkQ29uZmlnIHtcbiAgY29udGFpbmVyO1xuICBlZGl0YWJsZSA9IHRydWU7XG4gIGZvY3VzRmlyc3QgPSB0cnVlO1xuICBzaG93SGludCA9IGZhbHNlO1xuICBwbGFjZW1lbnQ6IFBsYWNlbWVudEFycmF5ID0gWydib3R0b20tbGVmdCcsICdib3R0b20tcmlnaHQnLCAndG9wLWxlZnQnLCAndG9wLXJpZ2h0J107XG59XG4iLCJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBBcHBsaWNhdGlvblJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0xpdmV9IGZyb20gJy4uL3V0aWwvYWNjZXNzaWJpbGl0eS9saXZlJztcbmltcG9ydCB7bmdiQXV0b0Nsb3NlfSBmcm9tICcuLi91dGlsL2F1dG9jbG9zZSc7XG5pbXBvcnQge0tleX0gZnJvbSAnLi4vdXRpbC9rZXknO1xuaW1wb3J0IHtQb3B1cFNlcnZpY2V9IGZyb20gJy4uL3V0aWwvcG9wdXAnO1xuaW1wb3J0IHtQbGFjZW1lbnRBcnJheSwgcG9zaXRpb25FbGVtZW50c30gZnJvbSAnLi4vdXRpbC9wb3NpdGlvbmluZyc7XG5pbXBvcnQge2lzRGVmaW5lZCwgdG9TdHJpbmd9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5cbmltcG9ydCB7TmdiVHlwZWFoZWFkQ29uZmlnfSBmcm9tICcuL3R5cGVhaGVhZC1jb25maWcnO1xuaW1wb3J0IHtOZ2JUeXBlYWhlYWRXaW5kb3csIFJlc3VsdFRlbXBsYXRlQ29udGV4dH0gZnJvbSAnLi90eXBlYWhlYWQtd2luZG93JztcblxuXG5jb25zdCBOR0JfVFlQRUFIRUFEX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmdiVHlwZWFoZWFkKSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbi8qKlxuICogQW4gZXZlbnQgZW1pdHRlZCByaWdodCBiZWZvcmUgYW4gaXRlbSBpcyBzZWxlY3RlZCBmcm9tIHRoZSByZXN1bHQgbGlzdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZ2JUeXBlYWhlYWRTZWxlY3RJdGVtRXZlbnQge1xuICAvKipcbiAgICogVGhlIGl0ZW0gZnJvbSB0aGUgcmVzdWx0IGxpc3QgYWJvdXQgdG8gYmUgc2VsZWN0ZWQuXG4gICAqL1xuICBpdGVtOiBhbnk7XG5cbiAgLyoqXG4gICAqIENhbGxpbmcgdGhpcyBmdW5jdGlvbiB3aWxsIHByZXZlbnQgaXRlbSBzZWxlY3Rpb24gZnJvbSBoYXBwZW5pbmcuXG4gICAqL1xuICBwcmV2ZW50RGVmYXVsdDogKCkgPT4gdm9pZDtcbn1cblxubGV0IG5leHRXaW5kb3dJZCA9IDA7XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgcHJvdmlkaW5nIGEgc2ltcGxlIHdheSBvZiBjcmVhdGluZyBwb3dlcmZ1bCB0eXBlYWhlYWRzIGZyb20gYW55IHRleHQgaW5wdXQuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lucHV0W25nYlR5cGVhaGVhZF0nLFxuICBleHBvcnRBczogJ25nYlR5cGVhaGVhZCcsXG4gIGhvc3Q6IHtcbiAgICAnKGJsdXIpJzogJ2hhbmRsZUJsdXIoKScsXG4gICAgJ1tjbGFzcy5vcGVuXSc6ICdpc1BvcHVwT3BlbigpJyxcbiAgICAnKGtleWRvd24pJzogJ2hhbmRsZUtleURvd24oJGV2ZW50KScsXG4gICAgJ1thdXRvY29tcGxldGVdJzogJ2F1dG9jb21wbGV0ZScsXG4gICAgJ2F1dG9jYXBpdGFsaXplJzogJ29mZicsXG4gICAgJ2F1dG9jb3JyZWN0JzogJ29mZicsXG4gICAgJ3JvbGUnOiAnY29tYm9ib3gnLFxuICAgICdhcmlhLW11bHRpbGluZSc6ICdmYWxzZScsXG4gICAgJ1thdHRyLmFyaWEtYXV0b2NvbXBsZXRlXSc6ICdzaG93SGludCA/IFwiYm90aFwiIDogXCJsaXN0XCInLFxuICAgICdbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdJzogJ2FjdGl2ZURlc2NlbmRhbnQnLFxuICAgICdbYXR0ci5hcmlhLW93bnNdJzogJ2lzUG9wdXBPcGVuKCkgPyBwb3B1cElkIDogbnVsbCcsXG4gICAgJ1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ2lzUG9wdXBPcGVuKCknXG4gIH0sXG4gIHByb3ZpZGVyczogW05HQl9UWVBFQUhFQURfVkFMVUVfQUNDRVNTT1JdXG59KVxuZXhwb3J0IGNsYXNzIE5nYlR5cGVhaGVhZCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfcG9wdXBTZXJ2aWNlOiBQb3B1cFNlcnZpY2U8TmdiVHlwZWFoZWFkV2luZG93PjtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgX2Nsb3NlZCQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIF9pbnB1dFZhbHVlQmFja3VwOiBzdHJpbmc7XG4gIHByaXZhdGUgX3ZhbHVlQ2hhbmdlczogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBwcml2YXRlIF9yZXN1YnNjcmliZVR5cGVhaGVhZDogQmVoYXZpb3JTdWJqZWN0PGFueT47XG4gIHByaXZhdGUgX3dpbmRvd1JlZjogQ29tcG9uZW50UmVmPE5nYlR5cGVhaGVhZFdpbmRvdz47XG4gIHByaXZhdGUgX3pvbmVTdWJzY3JpcHRpb246IGFueTtcblxuICAvKipcbiAgICogVGhlIHZhbHVlIGZvciB0aGUgYGF1dG9jb21wbGV0ZWAgYXR0cmlidXRlIGZvciB0aGUgYDxpbnB1dD5gIGVsZW1lbnQuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGBcIm9mZlwiYCB0byBkaXNhYmxlIHRoZSBuYXRpdmUgYnJvd3NlciBhdXRvY29tcGxldGUsIGJ1dCB5b3UgY2FuIG92ZXJyaWRlIGl0IGlmIG5lY2Vzc2FyeS5cbiAgICpcbiAgICogQHNpbmNlIDIuMS4wXG4gICAqL1xuICBASW5wdXQoKSBhdXRvY29tcGxldGUgPSAnb2ZmJztcblxuICAvKipcbiAgICogQSBzZWxlY3RvciBzcGVjaWZ5aW5nIHRoZSBlbGVtZW50IHRoZSB0eXBlYWhlYWQgcG9wdXAgd2lsbCBiZSBhcHBlbmRlZCB0by5cbiAgICpcbiAgICogQ3VycmVudGx5IG9ubHkgc3VwcG9ydHMgYFwiYm9keVwiYC5cbiAgICovXG4gIEBJbnB1dCgpIGNvbnRhaW5lcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIG1vZGVsIHZhbHVlcyB3aWxsIG5vdCBiZSByZXN0cmljdGVkIG9ubHkgdG8gaXRlbXMgc2VsZWN0ZWQgZnJvbSB0aGUgcG9wdXAuXG4gICAqL1xuICBASW5wdXQoKSBlZGl0YWJsZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgcmVzdWx0IGxpc3Qgd2lsbCBhbHdheXMgc3RheSBmb2N1c2VkIHdoaWxlIHR5cGluZy5cbiAgICovXG4gIEBJbnB1dCgpIGZvY3VzRmlyc3Q6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiB0aGF0IGNvbnZlcnRzIGFuIGl0ZW0gZnJvbSB0aGUgcmVzdWx0IGxpc3QgdG8gYSBgc3RyaW5nYCB0byBkaXNwbGF5IGluIHRoZSBgPGlucHV0PmAgZmllbGQuXG4gICAqXG4gICAqIEl0IGlzIGNhbGxlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgc29tZXRoaW5nIGluIHRoZSBwb3B1cCBvciB0aGUgbW9kZWwgdmFsdWUgY2hhbmdlcywgc28gdGhlIGlucHV0IG5lZWRzIHRvXG4gICAqIGJlIHVwZGF0ZWQuXG4gICAqL1xuICBASW5wdXQoKSBpbnB1dEZvcm1hdHRlcjogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyBhIHN0cmVhbSBvZiB0ZXh0IHZhbHVlcyBmcm9tIHRoZSBgPGlucHV0PmAgZWxlbWVudCB0byB0aGUgc3RyZWFtIG9mIHRoZSBhcnJheSBvZiBpdGVtc1xuICAgKiB0byBkaXNwbGF5IGluIHRoZSB0eXBlYWhlYWQgcG9wdXAuXG4gICAqXG4gICAqIElmIHRoZSByZXN1bHRpbmcgb2JzZXJ2YWJsZSBlbWl0cyBhIG5vbi1lbXB0eSBhcnJheSAtIHRoZSBwb3B1cCB3aWxsIGJlIHNob3duLiBJZiBpdCBlbWl0cyBhbiBlbXB0eSBhcnJheSAtIHRoZVxuICAgKiBwb3B1cCB3aWxsIGJlIGNsb3NlZC5cbiAgICpcbiAgICogU2VlIHRoZSBbYmFzaWMgZXhhbXBsZV0oIy9jb21wb25lbnRzL3R5cGVhaGVhZC9leGFtcGxlcyNiYXNpYykgZm9yIG1vcmUgZGV0YWlscy5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoZSBgdGhpc2AgYXJndW1lbnQgaXMgYHVuZGVmaW5lZGAgc28geW91IG5lZWQgdG8gZXhwbGljaXRseSBiaW5kIGl0IHRvIGEgZGVzaXJlZCBcInRoaXNcIiB0YXJnZXQuXG4gICAqL1xuICBASW5wdXQoKSBuZ2JUeXBlYWhlYWQ6ICh0ZXh0OiBPYnNlcnZhYmxlPHN0cmluZz4pID0+IE9ic2VydmFibGU8YW55W10+O1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyBhbiBpdGVtIGZyb20gdGhlIHJlc3VsdCBsaXN0IHRvIGEgYHN0cmluZ2AgdG8gZGlzcGxheSBpbiB0aGUgcG9wdXAuXG4gICAqXG4gICAqIE11c3QgYmUgcHJvdmlkZWQsIGlmIHlvdXIgYG5nYlR5cGVhaGVhZGAgcmV0dXJucyBzb21ldGhpbmcgb3RoZXIgdGhhbiBgT2JzZXJ2YWJsZTxzdHJpbmdbXT5gLlxuICAgKlxuICAgKiBBbHRlcm5hdGl2ZWx5IGZvciBtb3JlIGNvbXBsZXggbWFya3VwIGluIHRoZSBwb3B1cCB5b3Ugc2hvdWxkIHVzZSBgcmVzdWx0VGVtcGxhdGVgLlxuICAgKi9cbiAgQElucHV0KCkgcmVzdWx0Rm9ybWF0dGVyOiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZW1wbGF0ZSB0byBvdmVycmlkZSB0aGUgd2F5IHJlc3VsdGluZyBpdGVtcyBhcmUgZGlzcGxheWVkIGluIHRoZSBwb3B1cC5cbiAgICpcbiAgICogU2VlIHRoZSBbUmVzdWx0VGVtcGxhdGVDb250ZXh0XSgjL2NvbXBvbmVudHMvdHlwZWFoZWFkL2FwaSNSZXN1bHRUZW1wbGF0ZUNvbnRleHQpIGZvciB0aGUgdGVtcGxhdGUgY29udGV4dC5cbiAgICpcbiAgICogQWxzbyBzZWUgdGhlIFt0ZW1wbGF0ZSBmb3IgcmVzdWx0cyBkZW1vXSgjL2NvbXBvbmVudHMvdHlwZWFoZWFkL2V4YW1wbGVzI3RlbXBsYXRlKSBmb3IgbW9yZSBkZXRhaWxzLlxuICAgKi9cbiAgQElucHV0KCkgcmVzdWx0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPFJlc3VsdFRlbXBsYXRlQ29udGV4dD47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgd2lsbCBzaG93IHRoZSBoaW50IGluIHRoZSBgPGlucHV0PmAgd2hlbiBhbiBpdGVtIGluIHRoZSByZXN1bHQgbGlzdCBtYXRjaGVzLlxuICAgKi9cbiAgQElucHV0KCkgc2hvd0hpbnQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmZXJyZWQgcGxhY2VtZW50IG9mIHRoZSB0eXBlYWhlYWQuXG4gICAqXG4gICAqIFBvc3NpYmxlIHZhbHVlcyBhcmUgYFwidG9wXCJgLCBgXCJ0b3AtbGVmdFwiYCwgYFwidG9wLXJpZ2h0XCJgLCBgXCJib3R0b21cImAsIGBcImJvdHRvbS1sZWZ0XCJgLFxuICAgKiBgXCJib3R0b20tcmlnaHRcImAsIGBcImxlZnRcImAsIGBcImxlZnQtdG9wXCJgLCBgXCJsZWZ0LWJvdHRvbVwiYCwgYFwicmlnaHRcImAsIGBcInJpZ2h0LXRvcFwiYCxcbiAgICogYFwicmlnaHQtYm90dG9tXCJgXG4gICAqXG4gICAqIEFjY2VwdHMgYW4gYXJyYXkgb2Ygc3RyaW5ncyBvciBhIHN0cmluZyB3aXRoIHNwYWNlIHNlcGFyYXRlZCBwb3NzaWJsZSB2YWx1ZXMuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IG9yZGVyIG9mIHByZWZlcmVuY2UgaXMgYFwiYm90dG9tLWxlZnQgYm90dG9tLXJpZ2h0IHRvcC1sZWZ0IHRvcC1yaWdodFwiYFxuICAgKlxuICAgKiBQbGVhc2Ugc2VlIHRoZSBbcG9zaXRpb25pbmcgb3ZlcnZpZXddKCMvcG9zaXRpb25pbmcpIGZvciBtb3JlIGRldGFpbHMuXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZW1lbnQ6IFBsYWNlbWVudEFycmF5ID0gJ2JvdHRvbS1sZWZ0JztcblxuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlZCByaWdodCBiZWZvcmUgYW4gaXRlbSBpcyBzZWxlY3RlZCBmcm9tIHRoZSByZXN1bHQgbGlzdC5cbiAgICpcbiAgICogRXZlbnQgcGF5bG9hZCBpcyBvZiB0eXBlIFtgTmdiVHlwZWFoZWFkU2VsZWN0SXRlbUV2ZW50YF0oIy9jb21wb25lbnRzL3R5cGVhaGVhZC9hcGkjTmdiVHlwZWFoZWFkU2VsZWN0SXRlbUV2ZW50KS5cbiAgICovXG4gIEBPdXRwdXQoKSBzZWxlY3RJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxOZ2JUeXBlYWhlYWRTZWxlY3RJdGVtRXZlbnQ+KCk7XG5cbiAgYWN0aXZlRGVzY2VuZGFudDogc3RyaW5nO1xuICBwb3B1cElkID0gYG5nYi10eXBlYWhlYWQtJHtuZXh0V2luZG93SWQrK31gO1xuXG4gIHByaXZhdGUgX29uVG91Y2hlZCA9ICgpID0+IHt9O1xuICBwcml2YXRlIF9vbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiwgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvciwgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICBjb25maWc6IE5nYlR5cGVhaGVhZENvbmZpZywgbmdab25lOiBOZ1pvbmUsIHByaXZhdGUgX2xpdmU6IExpdmUsIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnksXG4gICAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSwgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIF9hcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYpIHtcbiAgICB0aGlzLmNvbnRhaW5lciA9IGNvbmZpZy5jb250YWluZXI7XG4gICAgdGhpcy5lZGl0YWJsZSA9IGNvbmZpZy5lZGl0YWJsZTtcbiAgICB0aGlzLmZvY3VzRmlyc3QgPSBjb25maWcuZm9jdXNGaXJzdDtcbiAgICB0aGlzLnNob3dIaW50ID0gY29uZmlnLnNob3dIaW50O1xuICAgIHRoaXMucGxhY2VtZW50ID0gY29uZmlnLnBsYWNlbWVudDtcblxuICAgIHRoaXMuX3ZhbHVlQ2hhbmdlcyA9IGZyb21FdmVudDxFdmVudD4oX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2lucHV0JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUobWFwKCRldmVudCA9PiAoJGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSkpO1xuXG4gICAgdGhpcy5fcmVzdWJzY3JpYmVUeXBlYWhlYWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuXG4gICAgdGhpcy5fcG9wdXBTZXJ2aWNlID0gbmV3IFBvcHVwU2VydmljZTxOZ2JUeXBlYWhlYWRXaW5kb3c+KFxuICAgICAgICBOZ2JUeXBlYWhlYWRXaW5kb3csIF9pbmplY3RvciwgX3ZpZXdDb250YWluZXJSZWYsIF9yZW5kZXJlciwgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBfYXBwbGljYXRpb25SZWYpO1xuXG4gICAgdGhpcy5fem9uZVN1YnNjcmlwdGlvbiA9IG5nWm9uZS5vblN0YWJsZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNQb3B1cE9wZW4oKSkge1xuICAgICAgICBwb3NpdGlvbkVsZW1lbnRzKFxuICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLl93aW5kb3dSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCwgdGhpcy5wbGFjZW1lbnQsXG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lciA9PT0gJ2JvZHknKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0VmFsdWVzJCA9IHRoaXMuX3ZhbHVlQ2hhbmdlcy5waXBlKHRhcCh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLl9pbnB1dFZhbHVlQmFja3VwID0gdGhpcy5zaG93SGludCA/IHZhbHVlIDogbnVsbDtcbiAgICAgIGlmICh0aGlzLmVkaXRhYmxlKSB7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gICAgY29uc3QgcmVzdWx0cyQgPSBpbnB1dFZhbHVlcyQucGlwZSh0aGlzLm5nYlR5cGVhaGVhZCk7XG4gICAgY29uc3QgcHJvY2Vzc2VkUmVzdWx0cyQgPSByZXN1bHRzJC5waXBlKHRhcCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuZWRpdGFibGUpIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2UodW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gICAgY29uc3QgdXNlcklucHV0JCA9IHRoaXMuX3Jlc3Vic2NyaWJlVHlwZWFoZWFkLnBpcGUoc3dpdGNoTWFwKCgpID0+IHByb2Nlc3NlZFJlc3VsdHMkKSk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gdGhpcy5fc3Vic2NyaWJlVG9Vc2VySW5wdXQodXNlcklucHV0JCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9zZVBvcHVwKCk7XG4gICAgdGhpcy5fdW5zdWJzY3JpYmVGcm9tVXNlcklucHV0KCk7XG4gICAgdGhpcy5fem9uZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IGFueSk6IHZvaWQgeyB0aGlzLl9vbkNoYW5nZSA9IGZuOyB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IGFueSk6IHZvaWQgeyB0aGlzLl9vblRvdWNoZWQgPSBmbjsgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWUpIHtcbiAgICB0aGlzLl93cml0ZUlucHV0VmFsdWUodGhpcy5fZm9ybWF0SXRlbUZvcklucHV0KHZhbHVlKSk7XG4gICAgaWYgKHRoaXMuc2hvd0hpbnQpIHtcbiAgICAgIHRoaXMuX2lucHV0VmFsdWVCYWNrdXAgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcsIGlzRGlzYWJsZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc21pc3NlcyB0eXBlYWhlYWQgcG9wdXAgd2luZG93XG4gICAqL1xuICBkaXNtaXNzUG9wdXAoKSB7XG4gICAgaWYgKHRoaXMuaXNQb3B1cE9wZW4oKSkge1xuICAgICAgdGhpcy5fcmVzdWJzY3JpYmVUeXBlYWhlYWQubmV4dChudWxsKTtcbiAgICAgIHRoaXMuX2Nsb3NlUG9wdXAoKTtcbiAgICAgIGlmICh0aGlzLnNob3dIaW50ICYmIHRoaXMuX2lucHV0VmFsdWVCYWNrdXAgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5fd3JpdGVJbnB1dFZhbHVlKHRoaXMuX2lucHV0VmFsdWVCYWNrdXApO1xuICAgICAgfVxuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdHlwZWFoZWFkIHBvcHVwIHdpbmRvdyBpcyBkaXNwbGF5ZWRcbiAgICovXG4gIGlzUG9wdXBPcGVuKCkgeyByZXR1cm4gdGhpcy5fd2luZG93UmVmICE9IG51bGw7IH1cblxuICBoYW5kbGVCbHVyKCkge1xuICAgIHRoaXMuX3Jlc3Vic2NyaWJlVHlwZWFoZWFkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gIH1cblxuICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzUG9wdXBPcGVuKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6ZGVwcmVjYXRpb25cbiAgICBzd2l0Y2ggKGV2ZW50LndoaWNoKSB7XG4gICAgICBjYXNlIEtleS5BcnJvd0Rvd246XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuX3dpbmRvd1JlZi5pbnN0YW5jZS5uZXh0KCk7XG4gICAgICAgIHRoaXMuX3Nob3dIaW50KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBLZXkuQXJyb3dVcDpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5fd2luZG93UmVmLmluc3RhbmNlLnByZXYoKTtcbiAgICAgICAgdGhpcy5fc2hvd0hpbnQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEtleS5FbnRlcjpcbiAgICAgIGNhc2UgS2V5LlRhYjpcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fd2luZG93UmVmLmluc3RhbmNlLmdldEFjdGl2ZSgpO1xuICAgICAgICBpZiAoaXNEZWZpbmVkKHJlc3VsdCkpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMuX3NlbGVjdFJlc3VsdChyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2Nsb3NlUG9wdXAoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb3BlblBvcHVwKCkge1xuICAgIGlmICghdGhpcy5pc1BvcHVwT3BlbigpKSB7XG4gICAgICB0aGlzLl9pbnB1dFZhbHVlQmFja3VwID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgdGhpcy5fd2luZG93UmVmID0gdGhpcy5fcG9wdXBTZXJ2aWNlLm9wZW4oKTtcbiAgICAgIHRoaXMuX3dpbmRvd1JlZi5pbnN0YW5jZS5pZCA9IHRoaXMucG9wdXBJZDtcbiAgICAgIHRoaXMuX3dpbmRvd1JlZi5pbnN0YW5jZS5zZWxlY3RFdmVudC5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB0aGlzLl9zZWxlY3RSZXN1bHRDbG9zZVBvcHVwKHJlc3VsdCkpO1xuICAgICAgdGhpcy5fd2luZG93UmVmLmluc3RhbmNlLmFjdGl2ZUNoYW5nZUV2ZW50LnN1YnNjcmliZSgoYWN0aXZlSWQ6IHN0cmluZykgPT4gdGhpcy5hY3RpdmVEZXNjZW5kYW50ID0gYWN0aXZlSWQpO1xuXG4gICAgICBpZiAodGhpcy5jb250YWluZXIgPT09ICdib2R5Jykge1xuICAgICAgICB3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLmNvbnRhaW5lcikuYXBwZW5kQ2hpbGQodGhpcy5fd2luZG93UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgbmdiQXV0b0Nsb3NlKFxuICAgICAgICAgIHRoaXMuX25nWm9uZSwgdGhpcy5fZG9jdW1lbnQsICdvdXRzaWRlJywgKCkgPT4gdGhpcy5kaXNtaXNzUG9wdXAoKSwgdGhpcy5fY2xvc2VkJCxcbiAgICAgICAgICBbdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLl93aW5kb3dSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudF0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Nsb3NlUG9wdXAoKSB7XG4gICAgdGhpcy5fY2xvc2VkJC5uZXh0KCk7XG4gICAgdGhpcy5fcG9wdXBTZXJ2aWNlLmNsb3NlKCk7XG4gICAgdGhpcy5fd2luZG93UmVmID0gbnVsbDtcbiAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3RSZXN1bHQocmVzdWx0OiBhbnkpIHtcbiAgICBsZXQgZGVmYXVsdFByZXZlbnRlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0SXRlbS5lbWl0KHtpdGVtOiByZXN1bHQsIHByZXZlbnREZWZhdWx0OiAoKSA9PiB7IGRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlOyB9fSk7XG4gICAgdGhpcy5fcmVzdWJzY3JpYmVUeXBlYWhlYWQubmV4dChudWxsKTtcblxuICAgIGlmICghZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKHJlc3VsdCk7XG4gICAgICB0aGlzLl9vbkNoYW5nZShyZXN1bHQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdFJlc3VsdENsb3NlUG9wdXAocmVzdWx0OiBhbnkpIHtcbiAgICB0aGlzLl9zZWxlY3RSZXN1bHQocmVzdWx0KTtcbiAgICB0aGlzLl9jbG9zZVBvcHVwKCk7XG4gIH1cblxuICBwcml2YXRlIF9zaG93SGludCgpIHtcbiAgICBpZiAodGhpcy5zaG93SGludCAmJiB0aGlzLl93aW5kb3dSZWYuaW5zdGFuY2UuaGFzQWN0aXZlKCkgJiYgdGhpcy5faW5wdXRWYWx1ZUJhY2t1cCAhPSBudWxsKSB7XG4gICAgICBjb25zdCB1c2VySW5wdXRMb3dlckNhc2UgPSB0aGlzLl9pbnB1dFZhbHVlQmFja3VwLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCBmb3JtYXR0ZWRWYWwgPSB0aGlzLl9mb3JtYXRJdGVtRm9ySW5wdXQodGhpcy5fd2luZG93UmVmLmluc3RhbmNlLmdldEFjdGl2ZSgpKTtcblxuICAgICAgaWYgKHVzZXJJbnB1dExvd2VyQ2FzZSA9PT0gZm9ybWF0dGVkVmFsLnN1YnN0cigwLCB0aGlzLl9pbnB1dFZhbHVlQmFja3VwLmxlbmd0aCkudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICB0aGlzLl93cml0ZUlucHV0VmFsdWUodGhpcy5faW5wdXRWYWx1ZUJhY2t1cCArIGZvcm1hdHRlZFZhbC5zdWJzdHIodGhpcy5faW5wdXRWYWx1ZUJhY2t1cC5sZW5ndGgpKTtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50WydzZXRTZWxlY3Rpb25SYW5nZSddLmFwcGx5KFxuICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBbdGhpcy5faW5wdXRWYWx1ZUJhY2t1cC5sZW5ndGgsIGZvcm1hdHRlZFZhbC5sZW5ndGhdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3dyaXRlSW5wdXRWYWx1ZShmb3JtYXR0ZWRWYWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Zvcm1hdEl0ZW1Gb3JJbnB1dChpdGVtOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBpdGVtICE9IG51bGwgJiYgdGhpcy5pbnB1dEZvcm1hdHRlciA/IHRoaXMuaW5wdXRGb3JtYXR0ZXIoaXRlbSkgOiB0b1N0cmluZyhpdGVtKTtcbiAgfVxuXG4gIHByaXZhdGUgX3dyaXRlSW5wdXRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndmFsdWUnLCB0b1N0cmluZyh2YWx1ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9Vc2VySW5wdXQodXNlcklucHV0JDogT2JzZXJ2YWJsZTxhbnlbXT4pOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB1c2VySW5wdXQkLnN1YnNjcmliZSgocmVzdWx0cykgPT4ge1xuICAgICAgaWYgKCFyZXN1bHRzIHx8IHJlc3VsdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuX2Nsb3NlUG9wdXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX29wZW5Qb3B1cCgpO1xuICAgICAgICB0aGlzLl93aW5kb3dSZWYuaW5zdGFuY2UuZm9jdXNGaXJzdCA9IHRoaXMuZm9jdXNGaXJzdDtcbiAgICAgICAgdGhpcy5fd2luZG93UmVmLmluc3RhbmNlLnJlc3VsdHMgPSByZXN1bHRzO1xuICAgICAgICB0aGlzLl93aW5kb3dSZWYuaW5zdGFuY2UudGVybSA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMucmVzdWx0Rm9ybWF0dGVyKSB7XG4gICAgICAgICAgdGhpcy5fd2luZG93UmVmLmluc3RhbmNlLmZvcm1hdHRlciA9IHRoaXMucmVzdWx0Rm9ybWF0dGVyO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlc3VsdFRlbXBsYXRlKSB7XG4gICAgICAgICAgdGhpcy5fd2luZG93UmVmLmluc3RhbmNlLnJlc3VsdFRlbXBsYXRlID0gdGhpcy5yZXN1bHRUZW1wbGF0ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl93aW5kb3dSZWYuaW5zdGFuY2UucmVzZXRBY3RpdmUoKTtcblxuICAgICAgICAvLyBUaGUgb2JzZXJ2YWJsZSBzdHJlYW0gd2UgYXJlIHN1YnNjcmliaW5nIHRvIG1pZ2h0IGhhdmUgYXN5bmMgc3RlcHNcbiAgICAgICAgLy8gYW5kIGlmIGEgY29tcG9uZW50IGNvbnRhaW5pbmcgdHlwZWFoZWFkIGlzIHVzaW5nIHRoZSBPblB1c2ggc3RyYXRlZ3lcbiAgICAgICAgLy8gdGhlIGNoYW5nZSBkZXRlY3Rpb24gdHVybiB3b3VsZG4ndCBiZSBpbnZva2VkIGF1dG9tYXRpY2FsbHkuXG4gICAgICAgIHRoaXMuX3dpbmRvd1JlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgdGhpcy5fc2hvd0hpbnQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gbGl2ZSBhbm5vdW5jZXJcbiAgICAgIGNvbnN0IGNvdW50ID0gcmVzdWx0cyA/IHJlc3VsdHMubGVuZ3RoIDogMDtcbiAgICAgIHRoaXMuX2xpdmUuc2F5KGNvdW50ID09PSAwID8gJ05vIHJlc3VsdHMgYXZhaWxhYmxlJyA6IGAke2NvdW50fSByZXN1bHQke2NvdW50ID09PSAxID8gJycgOiAncyd9IGF2YWlsYWJsZWApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVGcm9tVXNlcklucHV0KCkge1xuICAgIGlmICh0aGlzLl9zdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSBudWxsO1xuICB9XG59XG4iLCJpbXBvcnQge05nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQge05nYkhpZ2hsaWdodH0gZnJvbSAnLi9oaWdobGlnaHQnO1xuaW1wb3J0IHtOZ2JUeXBlYWhlYWRXaW5kb3d9IGZyb20gJy4vdHlwZWFoZWFkLXdpbmRvdyc7XG5pbXBvcnQge05nYlR5cGVhaGVhZH0gZnJvbSAnLi90eXBlYWhlYWQnO1xuXG5leHBvcnQge05nYkhpZ2hsaWdodH0gZnJvbSAnLi9oaWdobGlnaHQnO1xuZXhwb3J0IHtOZ2JUeXBlYWhlYWRXaW5kb3d9IGZyb20gJy4vdHlwZWFoZWFkLXdpbmRvdyc7XG5leHBvcnQge05nYlR5cGVhaGVhZENvbmZpZ30gZnJvbSAnLi90eXBlYWhlYWQtY29uZmlnJztcbmV4cG9ydCB7TmdiVHlwZWFoZWFkLCBOZ2JUeXBlYWhlYWRTZWxlY3RJdGVtRXZlbnR9IGZyb20gJy4vdHlwZWFoZWFkJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTmdiVHlwZWFoZWFkLCBOZ2JIaWdobGlnaHQsIE5nYlR5cGVhaGVhZFdpbmRvd10sXG4gIGV4cG9ydHM6IFtOZ2JUeXBlYWhlYWQsIE5nYkhpZ2hsaWdodF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBlbnRyeUNvbXBvbmVudHM6IFtOZ2JUeXBlYWhlYWRXaW5kb3ddXG59KVxuZXhwb3J0IGNsYXNzIE5nYlR5cGVhaGVhZE1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JUeXBlYWhlYWRNb2R1bGV9OyB9XG59XG4iLCJpbXBvcnQge05nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtOZ2JBY2NvcmRpb25Nb2R1bGV9IGZyb20gJy4vYWNjb3JkaW9uL2FjY29yZGlvbi5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JBbGVydE1vZHVsZX0gZnJvbSAnLi9hbGVydC9hbGVydC5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JCdXR0b25zTW9kdWxlfSBmcm9tICcuL2J1dHRvbnMvYnV0dG9ucy5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JDYXJvdXNlbE1vZHVsZX0gZnJvbSAnLi9jYXJvdXNlbC9jYXJvdXNlbC5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JDb2xsYXBzZU1vZHVsZX0gZnJvbSAnLi9jb2xsYXBzZS9jb2xsYXBzZS5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JEYXRlcGlja2VyTW9kdWxlfSBmcm9tICcuL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JEcm9wZG93bk1vZHVsZX0gZnJvbSAnLi9kcm9wZG93bi9kcm9wZG93bi5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JNb2RhbE1vZHVsZX0gZnJvbSAnLi9tb2RhbC9tb2RhbC5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JQYWdpbmF0aW9uTW9kdWxlfSBmcm9tICcuL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JQb3BvdmVyTW9kdWxlfSBmcm9tICcuL3BvcG92ZXIvcG9wb3Zlci5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JQcm9ncmVzc2Jhck1vZHVsZX0gZnJvbSAnLi9wcm9ncmVzc2Jhci9wcm9ncmVzc2Jhci5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JSYXRpbmdNb2R1bGV9IGZyb20gJy4vcmF0aW5nL3JhdGluZy5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JUYWJzZXRNb2R1bGV9IGZyb20gJy4vdGFic2V0L3RhYnNldC5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JUaW1lcGlja2VyTW9kdWxlfSBmcm9tICcuL3RpbWVwaWNrZXIvdGltZXBpY2tlci5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JUb29sdGlwTW9kdWxlfSBmcm9tICcuL3Rvb2x0aXAvdG9vbHRpcC5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JUeXBlYWhlYWRNb2R1bGV9IGZyb20gJy4vdHlwZWFoZWFkL3R5cGVhaGVhZC5tb2R1bGUnO1xuXG5leHBvcnQge1xuICBOZ2JBY2NvcmRpb25Nb2R1bGUsXG4gIE5nYlBhbmVsQ2hhbmdlRXZlbnQsXG4gIE5nYkFjY29yZGlvbkNvbmZpZyxcbiAgTmdiQWNjb3JkaW9uLFxuICBOZ2JQYW5lbCxcbiAgTmdiUGFuZWxUaXRsZSxcbiAgTmdiUGFuZWxDb250ZW50LFxuICBOZ2JQYW5lbEhlYWRlcixcbiAgTmdiUGFuZWxIZWFkZXJDb250ZXh0LFxuICBOZ2JQYW5lbFRvZ2dsZVxufSBmcm9tICcuL2FjY29yZGlvbi9hY2NvcmRpb24ubW9kdWxlJztcbmV4cG9ydCB7TmdiQWxlcnRNb2R1bGUsIE5nYkFsZXJ0Q29uZmlnLCBOZ2JBbGVydH0gZnJvbSAnLi9hbGVydC9hbGVydC5tb2R1bGUnO1xuZXhwb3J0IHtOZ2JCdXR0b25zTW9kdWxlLCBOZ2JCdXR0b25MYWJlbCwgTmdiQ2hlY2tCb3gsIE5nYlJhZGlvLCBOZ2JSYWRpb0dyb3VwfSBmcm9tICcuL2J1dHRvbnMvYnV0dG9ucy5tb2R1bGUnO1xuZXhwb3J0IHtOZ2JDYXJvdXNlbE1vZHVsZSwgTmdiQ2Fyb3VzZWxDb25maWcsIE5nYkNhcm91c2VsLCBOZ2JTbGlkZX0gZnJvbSAnLi9jYXJvdXNlbC9jYXJvdXNlbC5tb2R1bGUnO1xuZXhwb3J0IHtOZ2JDb2xsYXBzZU1vZHVsZSwgTmdiQ29sbGFwc2V9IGZyb20gJy4vY29sbGFwc2UvY29sbGFwc2UubW9kdWxlJztcbmV4cG9ydCB7XG4gIE5nYkNhbGVuZGFyLFxuICBOZ2JQZXJpb2QsXG4gIE5nYkNhbGVuZGFyR3JlZ29yaWFuLFxuICBOZ2JDYWxlbmRhcklzbGFtaWNDaXZpbCxcbiAgTmdiQ2FsZW5kYXJJc2xhbWljVW1hbHF1cmEsXG4gIE5nYkNhbGVuZGFySGVicmV3LFxuICBOZ2JDYWxlbmRhclBlcnNpYW4sXG4gIE5nYkRhdGVwaWNrZXJNb2R1bGUsXG4gIE5nYkRhdGVwaWNrZXJJMThuLFxuICBOZ2JEYXRlcGlja2VySTE4bkhlYnJldyxcbiAgTmdiRGF0ZXBpY2tlckNvbmZpZyxcbiAgTmdiRGF0ZXBpY2tlck5hdmlnYXRlRXZlbnQsXG4gIE5nYkRhdGVTdHJ1Y3QsXG4gIE5nYkRhdGUsXG4gIE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsXG4gIE5nYkRhdGVBZGFwdGVyLFxuICBOZ2JEYXRlTmF0aXZlQWRhcHRlcixcbiAgTmdiRGF0ZU5hdGl2ZVVUQ0FkYXB0ZXIsXG4gIE5nYkRhdGVwaWNrZXIsXG4gIE5nYklucHV0RGF0ZXBpY2tlclxufSBmcm9tICcuL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUnO1xuZXhwb3J0IHtcbiAgTmdiRHJvcGRvd25Nb2R1bGUsXG4gIE5nYkRyb3Bkb3duQW5jaG9yLFxuICBOZ2JEcm9wZG93bkNvbmZpZyxcbiAgTmdiRHJvcGRvd25JdGVtLFxuICBOZ2JEcm9wZG93bk1lbnUsXG4gIE5nYkRyb3Bkb3duVG9nZ2xlLFxuICBOZ2JEcm9wZG93blxufSBmcm9tICcuL2Ryb3Bkb3duL2Ryb3Bkb3duLm1vZHVsZSc7XG5leHBvcnQge1xuICBOZ2JNb2RhbE1vZHVsZSxcbiAgTmdiTW9kYWwsXG4gIE5nYk1vZGFsQ29uZmlnLFxuICBOZ2JNb2RhbE9wdGlvbnMsXG4gIE5nYkFjdGl2ZU1vZGFsLFxuICBOZ2JNb2RhbFJlZixcbiAgTW9kYWxEaXNtaXNzUmVhc29uc1xufSBmcm9tICcuL21vZGFsL21vZGFsLm1vZHVsZSc7XG5leHBvcnQge1xuICBOZ2JQYWdpbmF0aW9uTW9kdWxlLFxuICBOZ2JQYWdpbmF0aW9uQ29uZmlnLFxuICBOZ2JQYWdpbmF0aW9uLFxuICBOZ2JQYWdpbmF0aW9uRWxsaXBzaXMsXG4gIE5nYlBhZ2luYXRpb25GaXJzdCxcbiAgTmdiUGFnaW5hdGlvbkxhc3QsXG4gIE5nYlBhZ2luYXRpb25OZXh0LFxuICBOZ2JQYWdpbmF0aW9uTnVtYmVyLFxuICBOZ2JQYWdpbmF0aW9uUHJldmlvdXNcbn0gZnJvbSAnLi9wYWdpbmF0aW9uL3BhZ2luYXRpb24ubW9kdWxlJztcbmV4cG9ydCB7TmdiUG9wb3Zlck1vZHVsZSwgTmdiUG9wb3ZlckNvbmZpZywgTmdiUG9wb3Zlcn0gZnJvbSAnLi9wb3BvdmVyL3BvcG92ZXIubW9kdWxlJztcbmV4cG9ydCB7TmdiUHJvZ3Jlc3NiYXJNb2R1bGUsIE5nYlByb2dyZXNzYmFyQ29uZmlnLCBOZ2JQcm9ncmVzc2Jhcn0gZnJvbSAnLi9wcm9ncmVzc2Jhci9wcm9ncmVzc2Jhci5tb2R1bGUnO1xuZXhwb3J0IHtOZ2JSYXRpbmdNb2R1bGUsIE5nYlJhdGluZ0NvbmZpZywgTmdiUmF0aW5nfSBmcm9tICcuL3JhdGluZy9yYXRpbmcubW9kdWxlJztcbmV4cG9ydCB7XG4gIE5nYlRhYnNldE1vZHVsZSxcbiAgTmdiVGFiQ2hhbmdlRXZlbnQsXG4gIE5nYlRhYnNldENvbmZpZyxcbiAgTmdiVGFic2V0LFxuICBOZ2JUYWIsXG4gIE5nYlRhYkNvbnRlbnQsXG4gIE5nYlRhYlRpdGxlXG59IGZyb20gJy4vdGFic2V0L3RhYnNldC5tb2R1bGUnO1xuZXhwb3J0IHtcbiAgTmdiVGltZXBpY2tlck1vZHVsZSxcbiAgTmdiVGltZXBpY2tlckNvbmZpZyxcbiAgTmdiVGltZVN0cnVjdCxcbiAgTmdiVGltZXBpY2tlcixcbiAgTmdiVGltZUFkYXB0ZXJcbn0gZnJvbSAnLi90aW1lcGlja2VyL3RpbWVwaWNrZXIubW9kdWxlJztcbmV4cG9ydCB7TmdiVG9vbHRpcE1vZHVsZSwgTmdiVG9vbHRpcENvbmZpZywgTmdiVG9vbHRpcH0gZnJvbSAnLi90b29sdGlwL3Rvb2x0aXAubW9kdWxlJztcbmV4cG9ydCB7XG4gIE5nYkhpZ2hsaWdodCxcbiAgTmdiVHlwZWFoZWFkTW9kdWxlLFxuICBOZ2JUeXBlYWhlYWRDb25maWcsXG4gIE5nYlR5cGVhaGVhZFNlbGVjdEl0ZW1FdmVudCxcbiAgTmdiVHlwZWFoZWFkXG59IGZyb20gJy4vdHlwZWFoZWFkL3R5cGVhaGVhZC5tb2R1bGUnO1xuXG5leHBvcnQge1BsYWNlbWVudH0gZnJvbSAnLi91dGlsL3Bvc2l0aW9uaW5nJztcblxuY29uc3QgTkdCX01PRFVMRVMgPSBbXG4gIE5nYkFjY29yZGlvbk1vZHVsZSwgTmdiQWxlcnRNb2R1bGUsIE5nYkJ1dHRvbnNNb2R1bGUsIE5nYkNhcm91c2VsTW9kdWxlLCBOZ2JDb2xsYXBzZU1vZHVsZSwgTmdiRGF0ZXBpY2tlck1vZHVsZSxcbiAgTmdiRHJvcGRvd25Nb2R1bGUsIE5nYk1vZGFsTW9kdWxlLCBOZ2JQYWdpbmF0aW9uTW9kdWxlLCBOZ2JQb3BvdmVyTW9kdWxlLCBOZ2JQcm9ncmVzc2Jhck1vZHVsZSwgTmdiUmF0aW5nTW9kdWxlLFxuICBOZ2JUYWJzZXRNb2R1bGUsIE5nYlRpbWVwaWNrZXJNb2R1bGUsIE5nYlRvb2x0aXBNb2R1bGUsIE5nYlR5cGVhaGVhZE1vZHVsZVxuXTtcblxuQE5nTW9kdWxlKHtpbXBvcnRzOiBOR0JfTU9EVUxFUywgZXhwb3J0czogTkdCX01PRFVMRVN9KVxuZXhwb3J0IGNsYXNzIE5nYk1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JNb2R1bGV9OyB9XG59XG4iXSwibmFtZXMiOlsibmV4dElkIiwidHNsaWJfMS5fX2V4dGVuZHMiLCJ0c2xpYl8xLl9fdmFsdWVzIiwiTkdCX0RBVEVQSUNLRVJfVkFMVUVfQUNDRVNTT1IiLCJtb2QiLCJHUkVHT1JJQU5fRVBPQ0giLCJpc0dyZWdvcmlhbkxl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QUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDOztZQUNsQyxJQUFJLEdBQUcsVUFBVSxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsTUFBTTtRQUM1RCxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsSUFBSSxNQUFNLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDakMsSUFBSSxFQUFFLENBQUM7U0FDUjs7WUFFSyxVQUFVLEdBQUcsZUFBZSxHQUFHLEdBQUcsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDO1lBQzdHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQzs7WUFFMUIsT0FBTyxHQUFHLEdBQUcsR0FBRyxVQUFVOztZQUUxQixHQUFHLEdBQUcsZUFBZSxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQztZQUMxRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxFQUFFLElBQUksbUJBQW1CLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDOztZQUU3RyxPQUFPLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDOztZQUUzRSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQzs7WUFDMUQsSUFBSSxHQUFHLGVBQWUsR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7WUFDM0csSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQ04sQ0FBQyxHQUFHLEdBQUcsS0FBSyxHQUFHLEdBQUcsSUFBSSxFQUFFLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDekcsQ0FBQyxDQUFDOztZQUVKLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFFMUIsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztLQUN2Qzs7Ozs7Ozs7Ozs7Ozs7SUFPRCxpREFBZTs7Ozs7Ozs7SUFBZixVQUFnQixLQUFhLEVBQUUsSUFBWTtRQUN6QyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDOztZQUMzQixNQUFNLEdBQUcsRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDO1FBQzNCLElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMzQyxNQUFNLEVBQUUsQ0FBQztTQUNWO1FBQ0QsT0FBTyxNQUFNLENBQUM7S0FDZjs7Z0JBOUVGLFVBQVU7O0lBK0VYLDhCQUFDO0NBQUEsQ0E5RTRDLGdCQUFnQjs7Ozs7Ozs7Ozs7OztJQzFDdkQsb0JBQW9CLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7O0lBQzdDLG1CQUFtQixHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDOztJQUM1QyxXQUFXLEdBQUcsSUFBSTs7SUFDbEIsU0FBUyxHQUFHLElBQUk7O0lBQ2hCLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFOztJQUU3QixZQUFZLEdBQUc7O0lBRW5CLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjOztJQUU5RSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYzs7SUFFOUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7O0lBRTlFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjOztJQUU5RSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYzs7SUFFOUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7O0lBRTlFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjOztJQUU5RSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYzs7SUFFOUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7O0lBRTlFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjOztJQUU5RSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYzs7SUFFOUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7O0lBRTlFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjOztJQUU5RSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYzs7SUFFOUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7O0lBRTlFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjOztJQUU5RSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYzs7SUFFOUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7O0lBRTlFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjOztJQUU5RSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYzs7SUFFOUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7O0lBRTlFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjOztJQUU5RSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYzs7SUFFOUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7O0lBRTlFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjOztJQUU5RSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYzs7SUFFOUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7O0lBRTlFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjOztJQUU5RSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYzs7SUFFOUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7O0lBRTlFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjOztJQUU5RSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYzs7SUFFOUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7O0lBRTlFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjOztJQUU5RSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYzs7SUFFOUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7O0lBRTlFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjOztJQUU5RSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYzs7SUFFOUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7O0lBRTlFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjOztJQUU5RSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYzs7SUFFOUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7O0lBRTlFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjOztJQUU5RSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYzs7SUFFOUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7O0lBRTlFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjOztJQUU5RSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYzs7SUFFOUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7O0lBRTlFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjOztJQUU5RSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYzs7SUFFOUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7O0lBRTlFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjOztJQUU5RSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYzs7SUFFOUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7O0lBRTlFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjOztJQUU5RSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYzs7SUFFOUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7O0lBRTlFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjOztJQUU5RSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMs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QUUsSUFBSSxDQUFDOztRQUMzRyxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU07O1FBQzVCLEtBQUssR0FBRyxVQUFVLEdBQUcsR0FBRzs7UUFDMUIsS0FBSyxHQUFHLENBQUMsRUFBRTs7UUFDWCxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUVsQixJQUFJLFVBQVUsR0FBRyxFQUFFLElBQUksVUFBVSxJQUFJLE1BQU0sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEVBQUU7UUFDN0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsR0FBRyxVQUFVLENBQUMsQ0FBQztLQUN0RDs7O1FBR0csSUFBSTtJQUNSLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTs7WUFDbEMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLFVBQVUsR0FBRyxFQUFFLEVBQUU7WUFDbkIsTUFBTTtTQUNQO1FBQ0QsS0FBSyxHQUFHLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUNBLEtBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUQsRUFBRSxHQUFHLEVBQUUsQ0FBQztLQUNUOztRQUNHLENBQUMsR0FBRyxVQUFVLEdBQUcsRUFBRTs7O0lBSXZCLEtBQUssR0FBRyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDQSxLQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RCxJQUFJQSxLQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN6QyxLQUFLLElBQUksQ0FBQyxDQUFDO0tBQ1o7OztRQUdLLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHOzs7UUFHL0QsS0FBSyxHQUFHLEVBQUUsR0FBRyxLQUFLLEdBQUcsS0FBSzs7SUFHaEMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNoQixDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDdkM7O1FBQ0csSUFBSSxHQUFHQSxLQUFHLENBQUNBLEtBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckMsSUFBSSxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDZixJQUFJLEdBQUcsQ0FBQyxDQUFDO0tBQ1Y7SUFFRCxPQUFPLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUMsQ0FBQztDQUM5Qzs7Ozs7Ozs7Ozs7Ozs7O0FBWUQsU0FBUyxpQkFBaUIsQ0FBQyxlQUF1Qjs7UUFDNUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxlQUFlLEdBQUcsU0FBUztJQUN2QyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLGVBQWUsR0FBRyxTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7O1FBQ3RFLENBQUMsR0FBRyxHQUFHLENBQUNBLEtBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUc7O1FBQ2xDLElBQUksR0FBRyxHQUFHLENBQUNBLEtBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQzs7UUFDOUIsTUFBTSxHQUFHQSxLQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDOztRQUNqQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRXhELE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDMUM7Ozs7Ozs7Ozs7Ozs7O0FBU0QsU0FBUyxpQkFBaUIsQ0FBQyxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVU7O1FBQ3ZELENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHQSxLQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLFFBQVE7SUFDekcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxNQUFNLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNqRSxPQUFPLENBQUMsQ0FBQztDQUNWOzs7Ozs7Ozs7Ozs7O0FBVUQsU0FBUyxjQUFjLENBQUMsZUFBdUI7O1FBQ3pDLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxXQUFXLEVBQUU7OztRQUVyRCxVQUFVLEdBQUcsRUFBRSxHQUFHLEdBQUc7O1FBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7O1FBQUUsWUFBWSxHQUFHLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQzs7UUFBRSxTQUFTOztRQUMxRyxXQUFXOztRQUFFLFlBQVk7O0lBRzdCLFlBQVksR0FBRyxlQUFlLEdBQUcsWUFBWSxDQUFDO0lBQzlDLElBQUksWUFBWSxJQUFJLENBQUMsRUFBRTtRQUNyQixJQUFJLFlBQVksSUFBSSxHQUFHLEVBQUU7O1lBRXZCLFdBQVcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN4QyxTQUFTLEdBQUdBLEtBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RDLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUN4RDthQUFNOztZQUVMLFlBQVksSUFBSSxHQUFHLENBQUM7U0FDckI7S0FDRjtTQUFNOztRQUVMLFVBQVUsSUFBSSxDQUFDLENBQUM7UUFDaEIsWUFBWSxJQUFJLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO1lBQ2hCLFlBQVksSUFBSSxDQUFDLENBQUM7U0FDbkI7S0FDRjtJQUNELFdBQVcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QyxTQUFTLEdBQUdBLEtBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXRDLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztDQUN4RDs7Ozs7Ozs7Ozs7Ozs7QUFTRCxTQUFTLGNBQWMsQ0FBQyxLQUFhLEVBQUUsTUFBYyxFQUFFLElBQVk7O1FBQzdELENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ3JCLE9BQU8saUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztDQUMzRzs7Ozs7OztBQUtELFNBQVMsZUFBZSxDQUFDLEtBQWEsRUFBRSxJQUFZO0lBQ2xELElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtRQUNkLE9BQU8sRUFBRSxDQUFDO0tBQ1g7SUFDRCxJQUFJLEtBQUssSUFBSSxFQUFFLEVBQUU7UUFDZixPQUFPLEVBQUUsQ0FBQztLQUNYO0lBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtRQUMzQixPQUFPLEVBQUUsQ0FBQztLQUNYO0lBQ0QsT0FBTyxFQUFFLENBQUM7Q0FDWDs7Ozs7OztJQzFOdUNILHNDQUFXO0lBRG5EOztLQTBEQzs7OztJQXhEQywyQ0FBYzs7O0lBQWQsY0FBbUIsT0FBTyxDQUFDLENBQUMsRUFBRTs7OztJQUU5QixzQ0FBUzs7O0lBQVQsY0FBYyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFOzs7O0lBRS9ELDZDQUFnQjs7O0lBQWhCLGNBQXFCLE9BQU8sQ0FBQyxDQUFDLEVBQUU7Ozs7Ozs7SUFFaEMsb0NBQU87Ozs7OztJQUFQLFVBQVEsSUFBYSxFQUFFLE1BQXVCLEVBQUUsTUFBVTtRQUFuQyx1QkFBQSxFQUFBLFlBQXVCO1FBQUUsdUJBQUEsRUFBQSxVQUFVO1FBQ3hELElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXBELFFBQVEsTUFBTTtZQUNaLEtBQUssR0FBRztnQkFDTixJQUFJLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDZixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDYixPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssR0FBRztnQkFDTixJQUFJLEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDYixPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssR0FBRztnQkFDTixPQUFPLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQztZQUMvQztnQkFDRSxPQUFPLElBQUksQ0FBQztTQUNmO0tBQ0Y7Ozs7Ozs7SUFFRCxvQ0FBTzs7Ozs7O0lBQVAsVUFBUSxJQUFhLEVBQUUsTUFBdUIsRUFBRSxNQUFVO1FBQW5DLHVCQUFBLEVBQUEsWUFBdUI7UUFBRSx1QkFBQSxFQUFBLFVBQVU7UUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQUU7Ozs7O0lBRTNHLHVDQUFVOzs7O0lBQVYsVUFBVyxJQUFhOztZQUNoQixHQUFHLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRTs7UUFFdEMsT0FBTyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7S0FDNUI7Ozs7OztJQUVELDBDQUFhOzs7OztJQUFiLFVBQWMsSUFBZSxFQUFFLGNBQXNCOztRQUVuRCxJQUFJLGNBQWMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsY0FBYyxHQUFHLENBQUMsQ0FBQztTQUNwQjs7WUFFSyxhQUFhLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGNBQWMsSUFBSSxDQUFDOztZQUM1QyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQzs7WUFFMUIsTUFBTSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDaEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDOzs7WUFDeEQsSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUU7O1lBQ3ZCLFNBQVMsR0FBRyxXQUFXLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNoRjs7OztJQUVELHFDQUFROzs7SUFBUixjQUFzQixPQUFPLGFBQWEsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTs7Ozs7SUFFekQsb0NBQU87Ozs7SUFBUCxVQUFRLElBQWE7UUFDbkIsT0FBTyxJQUFJLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQy9FLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0tBQ3pDOztnQkF6REYsVUFBVTs7SUEwRFgseUJBQUM7Q0FBQSxDQXpEdUMsV0FBVzs7Ozs7O0FDUm5EO0lBR00sY0FBYyxHQUFHLElBQUk7O0lBQ3JCLGFBQWEsR0FBRyxFQUFFLEdBQUcsY0FBYzs7SUFDbkMsc0JBQXNCLEdBQUcsRUFBRSxHQUFHLGNBQWMsR0FBRyxHQUFHOztJQUNsRCxlQUFlLEdBQUcsRUFBRSxHQUFHLGFBQWEsR0FBRyxzQkFBc0I7O0lBQzdELE9BQU8sR0FBRyxFQUFFLEdBQUcsY0FBYyxHQUFHLEdBQUc7O0lBQ25DLHdCQUF3QixHQUFHLE9BQU87O0lBQ2xDSSxpQkFBZSxHQUFHLFNBQVM7Ozs7O0FBRWpDLFNBQVNDLHFCQUFtQixDQUFDLElBQVk7SUFDdkMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQztDQUMvRDs7Ozs7QUFFRCxTQUFTLHNCQUFzQixDQUFDLElBQVk7O1FBQ3RDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsSUFBSSxFQUFFLENBQUM7O1FBQ3RELDBCQUEwQixHQUFHLGdCQUFnQixHQUFHLHNCQUFzQixHQUFHLE9BQU87O1FBQ2hGLFNBQVMsR0FBRyxnQkFBZ0IsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsR0FBRyxhQUFhLENBQUM7O1FBQzFGLFNBQVMsR0FBRywwQkFBMEIsR0FBRyxhQUFhOztRQUV0RCxTQUFTLEdBQUcsU0FBUyxHQUFHLENBQUM7SUFFN0IsSUFBSSxTQUFTLEtBQUssQ0FBQyxJQUFJLFNBQVMsS0FBSyxDQUFDLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRTtRQUN6RCxTQUFTLEVBQUUsQ0FBQztRQUNaLFNBQVMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0tBQzNCO0lBQ0QsSUFBSSxTQUFTLEtBQUssQ0FBQyxJQUFJLFNBQVMsR0FBRyxFQUFFLEdBQUcsY0FBYyxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3ZGLFNBQVMsSUFBSSxDQUFDLENBQUM7S0FDaEI7U0FBTSxJQUFJLFNBQVMsS0FBSyxDQUFDLElBQUksU0FBUyxHQUFHLEVBQUUsR0FBRyxjQUFjLEdBQUcsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRTtRQUNqRyxTQUFTLEVBQUUsQ0FBQztLQUNiO0lBQ0QsT0FBTyxTQUFTLENBQUM7Q0FDbEI7Ozs7OztBQUVELFNBQVMsdUJBQXVCLENBQUMsS0FBYSxFQUFFLElBQVk7O1FBQ3RELElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzNELElBQUlBLHFCQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzdCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ1g7SUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDeEI7Ozs7O0FBRUQsU0FBUyxlQUFlLENBQUMsSUFBWTtJQUNuQyxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7Q0FDekM7Ozs7Ozs7QUFNRCxTQUFTLG1CQUFtQixDQUFDLElBQVk7SUFDdkMsT0FBTyxzQkFBc0IsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDeEU7Ozs7O0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsSUFBWTs7UUFDdkMsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM3QixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7Q0FDakM7Ozs7Ozs7OztBQU9ELFNBQWdCLG9CQUFvQixDQUFDLEtBQWEsRUFBRSxJQUFZOztRQUMxRCxVQUFVLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQzs7UUFDNUUsUUFBUSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsR0FBRyxVQUFVLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEdBQUc7O1FBQ3JFLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7O1FBQ2pDLFdBQVcsR0FBRyxRQUFRLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDcEQsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUM3RSxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUU7UUFDaEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDbEI7SUFDRCxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUU7UUFDaEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDbEI7SUFDRCxPQUFPLFdBQVcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDL0I7Ozs7O0FBRUQsU0FBZ0Isd0JBQXdCLENBQUMsSUFBYTs7UUFDaEQsV0FBVyxHQUFHLENBQUM7SUFDbkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbkMsV0FBVyxJQUFJLG9CQUFvQixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbkQ7SUFDRCxPQUFPLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0NBQy9COzs7Ozs7QUFFRCxTQUFnQixjQUFjLENBQUMsSUFBYSxFQUFFLEdBQVc7O1FBQ25ELEtBQUssR0FBRyxHQUFHLElBQUksQ0FBQztJQUNwQixJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ1YsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO0tBQ1o7SUFDRCxPQUFPLEdBQUcsR0FBRyxDQUFDLEVBQUU7UUFDZCxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksR0FBRyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDakQsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDWixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQzthQUNoQjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQztnQkFDbEIsR0FBRyxHQUFHLENBQUMsQ0FBQzthQUNUO1NBQ0Y7YUFBTTtZQUNMLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDWixHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3pDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDO2dCQUNsQixHQUFHLEdBQUcsQ0FBQyxDQUFDO2FBQ1Q7U0FDRjtLQUNGO0lBQ0QsT0FBTyxJQUFJLENBQUM7Q0FDYjs7Ozs7O0FBRUQsU0FBZ0IsWUFBWSxDQUFDLElBQWEsRUFBRSxHQUFXOztRQUNqRCxLQUFLLEdBQUcsR0FBRyxJQUFJLENBQUM7SUFDcEIsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztLQUNaO0lBQ0QsT0FBTyxHQUFHLEdBQUcsQ0FBQyxFQUFFO1FBQ2QsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3pFLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMzRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1osSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7YUFDZDtpQkFBTSxJQUFJLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUN2RSxHQUFHLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7Z0JBQ2xFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDYixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQzthQUNkO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDO2dCQUNoQixHQUFHLEdBQUcsQ0FBQyxDQUFDO2FBQ1Q7U0FDRjthQUFNO1lBQ0wsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDbkIsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDYixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO29CQUNwQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ1osSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN6QztnQkFDRCxJQUFJLENBQUMsR0FBRyxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3hEO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDO2dCQUNoQixHQUFHLEdBQUcsQ0FBQyxDQUFDO2FBQ1Q7U0FDRjtLQUNGO0lBQ0QsT0FBTyxJQUFJLENBQUM7Q0FDYjs7Ozs7OztBQU1ELFNBQWdCQyxlQUFhLENBQUMsS0FBVzs7UUFDakMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQzs7UUFDdEIsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUU7O1FBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUU7O1FBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7O1FBQzdFLFNBQVMsR0FBR0YsaUJBQWUsR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDO1FBQzdELElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxFQUFFLElBQUksTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHQyxxQkFBbUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNySCxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUM7O1FBQ3BDLGlCQUFpQixHQUFHLFNBQVMsR0FBRyxNQUFNOztRQUN0QyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixHQUFHLGFBQWEsR0FBRyxlQUFlLENBQUM7O1FBQ3JGLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDOztRQUM5RCxrQkFBa0IsR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLENBQUM7O1FBQ2xELFNBQVMsR0FBRyxpQkFBaUIsR0FBRyxrQkFBa0I7SUFDdEQsT0FBTyxTQUFTLEdBQUcsQ0FBQyxFQUFFO1FBQ3BCLEtBQUssRUFBRSxDQUFDO1FBQ1Isa0JBQWtCLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkQsU0FBUyxHQUFHLGlCQUFpQixHQUFHLGtCQUFrQixDQUFDO0tBQ3BEOztRQUNHLE1BQU0sR0FBRyxDQUFDOztRQUNWLElBQUksR0FBRyxTQUFTO0lBQ3BCLE9BQU8sSUFBSSxHQUFHLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRTtRQUNqRCxJQUFJLElBQUksb0JBQW9CLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVDLE1BQU0sRUFBRSxDQUFDO0tBQ1Y7SUFDRCxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDekM7Ozs7Ozs7QUFNRCxTQUFnQkUsYUFBVyxDQUFDLFVBQW1DOztRQUN2RCxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUk7O1FBQ3ZCLE1BQU0sR0FBRyxVQUFVLENBQUMsS0FBSzs7UUFDekIsSUFBSSxHQUFHLFVBQVUsQ0FBQyxHQUFHOztRQUN2QixJQUFJLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxDQUFDO0lBQ3hDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDL0IsSUFBSSxJQUFJLG9CQUFvQixDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUN4QztJQUNELElBQUksSUFBSSxJQUFJLENBQUM7O1FBQ1QsUUFBUSxHQUFHLElBQUksR0FBRyx3QkFBd0I7O1FBQzFDLEtBQUssR0FBRyxRQUFRLElBQUksQ0FBQztJQUN6QixJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ1YsUUFBUSxHQUFHLENBQUMsUUFBUSxDQUFDO0tBQ3RCOztRQUNHLEtBQUssR0FBRyxJQUFJOztRQUNaLE1BQU0sR0FBRyxDQUFDOztRQUNWLElBQUksR0FBRyxDQUFDO0lBQ1osT0FBTyxRQUFRLEdBQUcsQ0FBQyxFQUFFO1FBQ25CLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxRQUFRLEtBQUtGLHFCQUFtQixDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRTtnQkFDeEQsUUFBUSxJQUFJQSxxQkFBbUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO2dCQUNuRCxLQUFLLEVBQUUsQ0FBQzthQUNUO2lCQUFNLElBQUksUUFBUSxJQUFJLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDN0QsUUFBUSxJQUFJLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDbkQsTUFBTSxFQUFFLENBQUM7YUFDVjtpQkFBTTtnQkFDTCxJQUFJLElBQUksUUFBUSxDQUFDO2dCQUNqQixRQUFRLEdBQUcsQ0FBQyxDQUFDO2FBQ2Q7U0FDRjthQUFNO1lBQ0wsSUFBSSxRQUFRLEtBQUtBLHFCQUFtQixDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUU7Z0JBQzVELFFBQVEsSUFBSUEscUJBQW1CLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7Z0JBQ3ZELEtBQUssRUFBRSxDQUFDO2FBQ1Q7aUJBQU07Z0JBQ0wsSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUNkLE1BQU0sRUFBRSxDQUFDO2lCQUNWO3FCQUFNO29CQUNMLE1BQU0sR0FBRyxFQUFFLENBQUM7b0JBQ1osS0FBSyxFQUFFLENBQUM7aUJBQ1Q7Z0JBQ0QsSUFBSSxRQUFRLElBQUksdUJBQXVCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFO29CQUN0RCxRQUFRLElBQUksdUJBQXVCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO2lCQUNwRDtxQkFBTTtvQkFDTCxJQUFJLEdBQUcsdUJBQXVCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUM7b0JBQzdELFFBQVEsR0FBRyxDQUFDLENBQUM7aUJBQ2Q7YUFDRjtTQUNGO0tBQ0Y7SUFDRCxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQzFDOzs7OztBQUVELFNBQWdCLGNBQWMsQ0FBQyxRQUFnQjtJQUM3QyxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ2IsT0FBTyxFQUFFLENBQUM7S0FDWDs7UUFDSyxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7O1FBQzFHLFdBQVcsR0FBRztRQUNsQixRQUFRLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO1FBQ3hHLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztLQUMvQzs7UUFDSyxXQUFXLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7O1FBQ3RHLGFBQWEsR0FBRztRQUNwQixFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7UUFDMUcsb0JBQW9CO0tBQ3JCOztRQUNLLGVBQWUsR0FBRztRQUN0QixFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsY0FBYztRQUNoRyxvQkFBb0IsRUFBRSxvQkFBb0I7S0FDM0M7O1FBQ0ssTUFBTSxHQUFHLFFBQVE7O1FBQUUsUUFBUSxHQUFHLFFBQVE7O1FBQ3hDLEdBQUcsR0FBRyxDQUFDOztRQUNQLE1BQU0sR0FBRyxFQUFFOztRQUNYLElBQUksR0FBRyxDQUFDO0lBQ1osT0FBTyxRQUFRLEdBQUcsQ0FBQyxFQUFFOztZQUNmLENBQUMsR0FBRyxRQUFRLEdBQUcsRUFBRTtRQUNyQixJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDZCxHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQ1Q7YUFBTSxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNYLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ2hEO2lCQUFNO2dCQUNMLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDbEM7U0FDRjthQUFNLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRTtZQUNyQixNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2xDO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ1gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQ2pEO1lBQ0QsTUFBTTtTQUNQO1FBQ0QsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxRQUFRLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDOUI7UUFDRCxJQUFJLEVBQUUsQ0FBQztLQUNSO0lBQ0QsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNyQjtTQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDL0M7SUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDeEI7Ozs7Ozs7OztBQ3JSRDtJQUN1Q0wscUNBQVc7SUFEbEQ7O0tBaUVDOzs7O0lBL0RDLDBDQUFjOzs7SUFBZCxjQUFtQixPQUFPLENBQUMsQ0FBQyxFQUFFOzs7OztJQUU5QixxQ0FBUzs7OztJQUFULFVBQVUsSUFBYTtRQUNyQixJQUFJLElBQUksSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNsQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDcEQ7YUFBTTtZQUNMLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ2hEO0tBQ0Y7Ozs7SUFFRCw0Q0FBZ0I7OztJQUFoQixjQUFxQixPQUFPLENBQUMsQ0FBQyxFQUFFOzs7OztJQUVoQyxtQ0FBTzs7OztJQUFQLFVBQVEsSUFBYTs7WUFDZixDQUFDLEdBQUcsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNqRixDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNqRixDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakYsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUNPLGFBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0tBQ2pEOzs7Ozs7O0lBRUQsbUNBQU87Ozs7OztJQUFQLFVBQVEsSUFBYSxFQUFFLE1BQXVCLEVBQUUsTUFBVTtRQUFuQyx1QkFBQSxFQUFBLFlBQXVCO1FBQUUsdUJBQUEsRUFBQSxVQUFVO1FBQ3hELElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXBELFFBQVEsTUFBTTtZQUNaLEtBQUssR0FBRztnQkFDTixJQUFJLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQztnQkFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7Z0JBQ2IsT0FBTyxJQUFJLENBQUM7WUFDZCxLQUFLLEdBQUc7Z0JBQ04sSUFBSSxHQUFHLGNBQWMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUNiLE9BQU8sSUFBSSxDQUFDO1lBQ2QsS0FBSyxHQUFHO2dCQUNOLE9BQU8sWUFBWSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNwQztnQkFDRSxPQUFPLElBQUksQ0FBQztTQUNmO0tBQ0Y7Ozs7Ozs7SUFFRCxtQ0FBTzs7Ozs7O0lBQVAsVUFBUSxJQUFhLEVBQUUsTUFBdUIsRUFBRSxNQUFVO1FBQW5DLHVCQUFBLEVBQUEsWUFBdUI7UUFBRSx1QkFBQSxFQUFBLFVBQVU7UUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQUU7Ozs7O0lBRTNHLHNDQUFVOzs7O0lBQVYsVUFBVyxJQUFhOztZQUNoQixHQUFHLEdBQUdBLGFBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUU7O1FBRXRDLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0tBQzVCOzs7Ozs7SUFFRCx5Q0FBYTs7Ozs7SUFBYixVQUFjLElBQWUsRUFBRSxjQUFzQjs7WUFDN0MsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDdEQ7Ozs7SUFFRCxvQ0FBUTs7O0lBQVIsY0FBc0IsT0FBT0QsZUFBYSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFOzs7Ozs7Ozs7SUFLekQsdUNBQVc7Ozs7O0lBQVgsVUFBWSxJQUFhLElBQWEsT0FBTyxVQUFVLENBQUNDLGFBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7Ozs7Ozs7OztJQUs3RSx5Q0FBYTs7Ozs7SUFBYixVQUFjLElBQWEsSUFBYSxPQUFPRCxlQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTs7Z0JBaEVoRixVQUFVOztJQWlFWCx3QkFBQztDQUFBLENBaEVzQyxXQUFXOzs7Ozs7O0lDWjVDLFFBQVEsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQzs7SUFDckUsTUFBTSxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUM7O0lBQ3BHLFdBQVcsR0FDYixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQzs7OztBQUs1RztJQUM2Q04sMkNBQWlCO0lBRDlEOztLQW1CQzs7Ozs7O0lBakJDLG1EQUFpQjs7Ozs7SUFBakIsVUFBa0IsS0FBYSxFQUFFLElBQWEsSUFBWSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTs7Ozs7O0lBRXRHLGtEQUFnQjs7Ozs7SUFBaEIsVUFBaUIsS0FBYSxFQUFFLElBQWE7UUFDM0MsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDNUU7Ozs7O0lBRUQscURBQW1COzs7O0lBQW5CLFVBQW9CLE9BQWUsSUFBWSxPQUFPLFFBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTs7Ozs7SUFFOUUsaURBQWU7Ozs7SUFBZixVQUFnQixJQUFtQjtRQUNqQyxPQUFVLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFHLENBQUM7S0FDbkg7Ozs7O0lBRUQsZ0RBQWM7Ozs7SUFBZCxVQUFlLElBQW1CLElBQVksT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Ozs7O0lBRWhGLGlEQUFlOzs7O0lBQWYsVUFBZ0IsVUFBa0IsSUFBWSxPQUFPLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFOzs7OztJQUVsRixpREFBZTs7OztJQUFmLFVBQWdCLElBQVksSUFBWSxPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFOztnQkFsQnZFLFVBQVU7O0lBbUJYLDhCQUFDO0NBQUEsQ0FsQjRDLGlCQUFpQjs7Ozs7Ozs7OztBQ045RDtJQUMwQ0Esd0NBQW9CO0lBRDlEOztLQTJCQzs7Ozs7Ozs7O0lBdEJDLHdDQUFTOzs7OztJQUFULFVBQVUsSUFBVTtRQUNsQixPQUFPLENBQUMsSUFBSSxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztLQUM3Rjs7Ozs7Ozs7O0lBS0Qsc0NBQU87Ozs7O0lBQVAsVUFBUSxJQUFtQjtRQUN6QixPQUFPLElBQUksSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUM7S0FDNUY7Ozs7O0lBRVMsOENBQWU7Ozs7SUFBekIsVUFBMEIsSUFBVTtRQUNsQyxPQUFPLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFDLENBQUM7S0FDcEY7Ozs7O0lBRVMsNENBQWE7Ozs7SUFBdkIsVUFBd0IsSUFBbUI7O1lBQ25DLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDOztRQUVoRSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixPQUFPLE1BQU0sQ0FBQztLQUNmOztnQkExQkYsVUFBVTs7SUEyQlgsMkJBQUM7Q0FBQSxDQTFCeUMsY0FBYzs7Ozs7Ozs7Ozs7QUNEeEQ7SUFDNkNBLDJDQUFvQjtJQURqRTs7S0FZQzs7Ozs7SUFWVyxpREFBZTs7OztJQUF6QixVQUEwQixJQUFVO1FBQ2xDLE9BQU8sRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUMsQ0FBQztLQUM3Rjs7Ozs7SUFFUywrQ0FBYTs7OztJQUF2QixVQUF3QixJQUFtQjs7WUFDbkMsTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7O1FBRXRFLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sTUFBTSxDQUFDO0tBQ2Y7O2dCQVhGLFVBQVU7O0lBWVgsOEJBQUM7Q0FBQSxDQVg0QyxvQkFBb0I7Ozs7OztBQ1ZqRTtJQStCQTtLQWlCQzs7Ozs7Ozs7Ozs7Ozs7SUFEUSwyQkFBTzs7Ozs7OztJQUFkLGNBQXdDLE9BQU8sRUFBQyxRQUFRLEVBQUUsbUJBQW1CLEVBQUMsQ0FBQyxFQUFFOztnQkFoQmxGLFFBQVEsU0FBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osYUFBYSxFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixFQUFFLDZCQUE2QixFQUFFLG9CQUFvQjt3QkFDbkgsa0JBQWtCO3FCQUNuQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxhQUFhLEVBQUUsa0JBQWtCLENBQUM7b0JBQzVDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7b0JBQ3BDLGVBQWUsRUFBRSxDQUFDLGFBQWEsQ0FBQztpQkFDakM7O0lBU0QsMEJBQUM7Q0FqQkQ7Ozs7OztBQy9CQTs7Ozs7O0FBU0E7SUFBQTtRQUVFLGNBQVMsR0FBbUMsSUFBSSxDQUFDO1FBQ2pELGNBQVMsR0FBbUIsQ0FBQyxhQUFhLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztLQUV0Rjs7Z0JBTEEsVUFBVSxTQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzs7OzRCQVRoQztDQVNBOzs7Ozs7O0lDbUJBO0tBRUM7O2dCQUZBLFNBQVMsU0FBQyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUM7O0lBRWhDLGdCQUFDO0NBRkQsSUFFQzs7Ozs7OztBQVFEO0lBV0UseUJBQW1CLFVBQW1DO1FBQW5DLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBVDlDLGNBQVMsR0FBRyxLQUFLLENBQUM7S0FTZ0M7SUFQMUQsc0JBQ0kscUNBQVE7Ozs7UUFJWixjQUEwQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTs7Ozs7UUFMbEQsVUFDYSxLQUFjO1lBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsbUJBQUssS0FBSyxPQUFLLEVBQUUsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDO1NBQ3REOzs7T0FBQTs7Z0JBUEYsU0FBUyxTQUFDLEVBQUMsUUFBUSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxFQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFDLEVBQUM7Ozs7Z0JBakMxRyxVQUFVOzs7MkJBcUNULEtBQUs7O0lBUVIsc0JBQUM7Q0FaRCxJQVlDOzs7O0FBS0Q7SUFvQkUseUJBQTBELFFBQXFCO1FBQXJCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFML0UsY0FBUyxHQUFjLFFBQVEsQ0FBQztRQUNoQyxXQUFNLEdBQUcsS0FBSyxDQUFDO0tBSW9FOztnQkFwQnBGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixJQUFJLEVBQUU7d0JBQ0osdUJBQXVCLEVBQUUsTUFBTTt3QkFDL0IsY0FBYyxFQUFFLG1CQUFtQjt3QkFDbkMsb0JBQW9CLEVBQUUsV0FBVzt3QkFDakMsbUJBQW1CLEVBQUUsNEJBQTRCO3dCQUNqRCxxQkFBcUIsRUFBRSw0QkFBNEI7d0JBQ25ELGdCQUFnQixFQUFFLDRCQUE0Qjt3QkFDOUMsZUFBZSxFQUFFLDRCQUE0Qjt3QkFDN0MsaUJBQWlCLEVBQUUsNEJBQTRCO3dCQUMvQyxpQkFBaUIsRUFBRSw0QkFBNEI7cUJBQ2hEO2lCQUNGOzs7O2dCQU9xRSxXQUFXLHVCQUFsRSxNQUFNLFNBQUMsVUFBVSxDQUFDLGNBQU0sT0FBQSxXQUFXLEdBQUEsQ0FBQzs7OzRCQUZoRCxlQUFlLFNBQUMsZUFBZTs7SUFHbEMsc0JBQUM7Q0FyQkQsSUFxQkM7Ozs7Ozs7Ozs7QUFXRDtJQU9FLDJCQUNrRCxRQUFxQixFQUMzRCxXQUFvQztRQURFLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDM0QsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQztLQUMzQzs7OztJQUVELDRDQUFnQjs7O0lBQWhCLGNBQXFCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRTs7Z0JBYjlELFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixJQUFJLEVBQUUsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBQztpQkFDekc7Ozs7Z0JBSzZELFdBQVcsdUJBQWxFLE1BQU0sU0FBQyxVQUFVLENBQUMsY0FBTSxPQUFBLFdBQVcsR0FBQSxDQUFDO2dCQTFGekMsVUFBVTs7SUFnR1osd0JBQUM7Q0FkRCxJQWNDOzs7Ozs7QUFPRDtJQWN1Q0EscUNBQWlCO0lBQ3RELDJCQUFtRCxRQUFxQixFQUFFLFVBQW1DO2VBQzNHLGtCQUFNLFFBQVEsRUFBRSxVQUFVLENBQUM7S0FDNUI7O2dCQWpCRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsSUFBSSxFQUFFO3dCQUNKLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLGVBQWUsRUFBRSxNQUFNO3dCQUN2QixzQkFBc0IsRUFBRSxtQkFBbUI7d0JBQzNDLFNBQVMsRUFBRSxtQkFBbUI7d0JBQzlCLG1CQUFtQixFQUFFLDRCQUE0Qjt3QkFDakQscUJBQXFCLEVBQUUsNEJBQTRCO3dCQUNuRCxnQkFBZ0IsRUFBRSw0QkFBNEI7d0JBQzlDLGVBQWUsRUFBRSw0QkFBNEI7cUJBQzlDO29CQUNELFNBQVMsRUFBRSxDQUFDLEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBTSxPQUFBLGlCQUFpQixHQUFBLENBQUMsRUFBQyxDQUFDO2lCQUM1Rjs7OztnQkFFOEQsV0FBVyx1QkFBM0QsTUFBTSxTQUFDLFVBQVUsQ0FBQyxjQUFNLE9BQUEsV0FBVyxHQUFBLENBQUM7Z0JBdEhqRCxVQUFVOztJQXlIWix3QkFBQztDQUFBLENBSnNDLGlCQUFpQixHQUl2RDs7OztBQUtEO0lBaUVFLHFCQUNZLGVBQWtDLEVBQUUsTUFBeUIsRUFBNEIsU0FBYyxFQUN2RyxPQUFlLEVBQVUsV0FBb0MsRUFBVSxTQUFvQixFQUN2RixTQUFvQjtRQUhwQyxpQkFXQztRQVZXLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUF1RCxjQUFTLEdBQVQsU0FBUyxDQUFLO1FBQ3ZHLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBakUvRixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQzs7OztRQXNCeEIsVUFBSyxHQUFHLEtBQUssQ0FBQzs7Ozs7Ozs7UUF1Q25CLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBTWpELElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBRWxDLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxHQUFHLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFFaEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLGNBQVEsS0FBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ3RGOzs7O0lBRUQsOEJBQVE7OztJQUFSO1FBQ0UsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDMUI7S0FDRjs7Ozs7SUFFRCxpQ0FBVzs7OztJQUFYLFVBQVksT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDdEM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRTtZQUN6RCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztTQUMvQjtLQUNGOzs7Ozs7OztJQUtELDRCQUFNOzs7O0lBQU4sY0FBb0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Ozs7Ozs7O0lBS3hDLDBCQUFJOzs7O0lBQUo7UUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzFCO0tBQ0Y7Ozs7SUFFTyx1Q0FBaUI7OztJQUF6QjtRQUFBLGlCQUtDO1FBSkMsWUFBWSxDQUNSLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsS0FBSyxFQUFFLEdBQUEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUMvRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFDMUcsa0NBQWtDLENBQUMsQ0FBQztLQUN6Qzs7Ozs7Ozs7SUFLRCwyQkFBSzs7OztJQUFMO1FBQ0UsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbkIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQztLQUNGOzs7Ozs7OztJQUtELDRCQUFNOzs7O0lBQU47UUFDRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNqQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDZDthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2I7S0FDRjs7OztJQUVELGlDQUFXOzs7SUFBWDtRQUNFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUN0Qzs7Ozs7SUFFRCwrQkFBUzs7OztJQUFULFVBQVUsS0FBb0I7UUFBOUIsaUJBdURDOzs7WUFyRE8sR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLOztZQUNqQixZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFOztZQUV4QyxRQUFRLEdBQUcsQ0FBQyxDQUFDOztZQUNiLGdCQUFnQixHQUFHLEtBQUs7O1lBQ3RCLGlCQUFpQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7UUFFeEQsSUFBSSxDQUFDLGlCQUFpQixJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDN0MsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFDLFdBQVcsRUFBRSxLQUFLO2dCQUN0QyxJQUFJLFdBQVcsQ0FBQyxRQUFRLG9CQUFDLEtBQUssQ0FBQyxNQUFNLEdBQWdCLEVBQUU7b0JBQ3JELGdCQUFnQixHQUFHLElBQUksQ0FBQztpQkFDekI7Z0JBQ0QsSUFBSSxXQUFXLEtBQUssS0FBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUU7b0JBQ2hELFFBQVEsR0FBRyxLQUFLLENBQUM7aUJBQ2xCO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7O1FBR0QsSUFBSSxHQUFHLEtBQUssR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLEtBQUssR0FBRyxDQUFDLEtBQUssRUFBRTtZQUMxQyxJQUFJLGdCQUFnQixLQUFLLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUSxDQUFDLEVBQUU7Z0JBQ2hGLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNkO1lBQ0QsT0FBTztTQUNSOztRQUdELElBQUksaUJBQWlCLElBQUksZ0JBQWdCLEVBQUU7WUFDekMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRVosSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFO2dCQUN2QixRQUFRLEdBQUc7b0JBQ1QsS0FBSyxHQUFHLENBQUMsU0FBUzt3QkFDaEIsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO3dCQUMzRCxNQUFNO29CQUNSLEtBQUssR0FBRyxDQUFDLE9BQU87d0JBQ2QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksUUFBUSxLQUFLLENBQUMsQ0FBQyxFQUFFOzRCQUN2QyxRQUFRLEdBQUcsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7NEJBQ25DLE1BQU07eUJBQ1A7d0JBQ0QsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDckMsTUFBTTtvQkFDUixLQUFLLEdBQUcsQ0FBQyxJQUFJO3dCQUNYLFFBQVEsR0FBRyxDQUFDLENBQUM7d0JBQ2IsTUFBTTtvQkFDUixLQUFLLEdBQUcsQ0FBQyxHQUFHO3dCQUNWLFFBQVEsR0FBRyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzt3QkFDbkMsTUFBTTtpQkFDVDtnQkFDRCxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDaEM7WUFDRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDeEI7S0FDRjs7OztJQUVPLCtCQUFTOzs7SUFBakIsY0FBK0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUU7Ozs7O0lBRTVGLHdDQUFrQjs7OztJQUExQixVQUEyQixLQUFvQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLG9CQUFDLEtBQUssQ0FBQyxNQUFNLEdBQWdCLENBQUM7S0FDOUU7Ozs7SUFFTyxzQ0FBZ0I7OztJQUF4QjtRQUNFLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDdEIsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQUEsSUFBSSxJQUFJLE9BQUEsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFBLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsR0FBQSxDQUFDLENBQUM7S0FDdkc7Ozs7SUFFTyxtQ0FBYTs7O0lBQXJCO1FBQ0UsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUMvQixJQUFJLENBQUMsc0JBQXNCLENBQ3ZCLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUztnQkFDdEIsZ0JBQWdCLENBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUM3RixJQUFJLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQztnQkFDOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQ2xEO0tBQ0Y7Ozs7O0lBRU8sd0NBQWtCOzs7O0lBQTFCLFVBQTJCLFNBQXlCO1FBQ2xELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLHNCQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQWEsQ0FBQztLQUN2Rjs7OztJQUVPLHFDQUFlOzs7SUFBdkI7O1lBQ1EsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTO1FBQy9CLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTs7Z0JBQ2YsZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYTs7Z0JBQ2hELG1CQUFtQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYTtZQUUzRCxRQUFRLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1lBQzNELFFBQVEsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDdEQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLENBQUMsQ0FBQztTQUN4RDtRQUNELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztTQUM1QjtLQUNGOzs7OztJQUVPLHFDQUFlOzs7O0lBQXZCLFVBQXdCLFNBQStCO1FBQS9CLDBCQUFBLEVBQUEsZ0JBQStCO1FBQ3JELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLFNBQVMsS0FBSyxNQUFNLEVBQUU7O2dCQUNsQixRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVM7O2dCQUN6QixtQkFBbUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWE7O2dCQUNyRCxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDOztZQUdoRyxRQUFRLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDekQsUUFBUSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDN0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRXBELFFBQVEsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLG1CQUFtQixDQUFDLENBQUM7WUFDekQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztTQUMxRDtLQUNGOzs7OztJQUVPLDRDQUFzQjs7OztJQUE5QixVQUErQixTQUFxQjtRQUNsRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNkLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3JEOztnQkFFSyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVM7O2dCQUN6QixlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhOztZQUd0RCxRQUFRLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNoRCxRQUFRLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7Ozs7OztnQkFNM0IsYUFBYSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsUUFBUSxHQUFHLFVBQVU7WUFDN0UsUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDLENBQUM7O2dCQUU1QyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWM7WUFDekMsSUFBSSxhQUFhLEVBQUU7Z0JBQ2pCLFFBQVEsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUM5QyxRQUFRLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDaEQsUUFBUSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUM7YUFDakQ7U0FDRjtLQUNGOztnQkF4U0YsU0FBUyxTQUFDLEVBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxFQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUMsRUFBQzs7OztnQkFsSWpHLGlCQUFpQjtnQkF5QlgsaUJBQWlCO2dEQTJLcUQsTUFBTSxTQUFDLFFBQVE7Z0JBM0wzRixNQUFNO2dCQUxOLFVBQVU7Z0JBVVYsU0FBUztnQkF3TGtCLFNBQVMsdUJBQS9CLFFBQVE7Ozt3QkE5RFosWUFBWSxTQUFDLGVBQWU7K0JBQzVCLFlBQVksU0FBQyxlQUFlLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDOzBCQUVoRCxZQUFZLFNBQUMsaUJBQWlCOzRCQVU5QixLQUFLO3dCQUtMLEtBQUssU0FBQyxNQUFNOzRCQWVaLEtBQUs7NEJBUUwsS0FBSzswQkFPTCxLQUFLOzZCQVNMLE1BQU07O0lBME9ULGtCQUFDO0NBelNEOzs7Ozs7QUNuSUE7SUFhTSx1QkFBdUIsR0FDekIsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxTQUFTLENBQUM7QUFFcEc7SUFBQTtLQVNDOzs7Ozs7Ozs7Ozs7OztJQURRLHlCQUFPOzs7Ozs7O0lBQWQsY0FBd0MsT0FBTyxFQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBQyxDQUFDLEVBQUU7O2dCQVJoRixRQUFRLFNBQUMsRUFBQyxZQUFZLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFDOztJQVNuRix3QkFBQztDQVREOzs7Ozs7QUNoQkE7Ozs7Ozs7O0FBd0ZBO0lBQUE7UUFFRSxhQUFRLEdBQXVCLElBQUksQ0FBQztRQUNwQyxhQUFRLEdBQUcsSUFBSSxDQUFDO0tBQ2pCOztnQkFKQSxVQUFVLFNBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzs7eUJBeEZoQztDQXdGQTs7Ozs7O0FDeEZBO0lBWUUsb0JBQW1CLEtBQVksRUFBUyxPQUFpQixFQUFTLFlBQWdDO1FBQS9FLFVBQUssR0FBTCxLQUFLLENBQU87UUFBUyxZQUFPLEdBQVAsT0FBTyxDQUFVO1FBQVMsaUJBQVksR0FBWixZQUFZLENBQW9CO0tBQUk7SUFDeEcsaUJBQUM7Q0FBQSxJQUFBOzs7O0FBRUQ7Ozs7SUFJRSxzQkFDWSxLQUFVLEVBQVUsU0FBbUIsRUFBVSxpQkFBbUMsRUFDcEYsU0FBb0IsRUFBVSx5QkFBbUQsRUFDakYsZUFBK0I7UUFGL0IsVUFBSyxHQUFMLEtBQUssQ0FBSztRQUFVLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ3BGLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBVSw4QkFBeUIsR0FBekIseUJBQXlCLENBQTBCO1FBQ2pGLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtLQUFJOzs7Ozs7SUFFL0MsMkJBQUk7Ozs7O0lBQUosVUFBSyxPQUFtQyxFQUFFLE9BQWE7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQ3BELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyx1QkFBdUIsQ0FBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQ3hGLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0I7UUFFRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7S0FDeEI7Ozs7SUFFRCw0QkFBSzs7O0lBQUw7UUFDRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUN4RixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUV2QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFO2dCQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDekI7U0FDRjtLQUNGOzs7Ozs7SUFFTyxxQ0FBYzs7Ozs7SUFBdEIsVUFBdUIsT0FBa0MsRUFBRSxPQUFhO1FBQ3RFLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixPQUFPLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzNCO2FBQU0sSUFBSSxPQUFPLFlBQVksV0FBVyxFQUFFOztnQkFDbkMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7WUFDbkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNyRDthQUFNO1lBQ0wsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBRyxPQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwRTtLQUNGO0lBQ0gsbUJBQUM7Q0FBQSxJQUFBOzs7Ozs7QUMzREQ7SUFJTSxJQUFJLEdBQUcsZUFBUTs7Ozs7OztBQWVyQjtJQUVFLG1CQUFzQyxTQUFjO1FBQWQsY0FBUyxHQUFULFNBQVMsQ0FBSztLQUFJOzs7Ozs7Ozs7Ozs7Ozs7SUFTeEQsOEJBQVU7Ozs7Ozs7SUFBVixjQUFxQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Ozs7Ozs7Ozs7OztJQU9yRywrQkFBVzs7Ozs7O0lBQW5CLFVBQW9CLEtBQWE7O1lBQ3pCLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUk7O1lBQzFCLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVk7O1lBQ3hDLGFBQWEsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQU0sYUFBYSxHQUFHLEtBQUssT0FBSSxDQUFDO1FBQzNELE9BQU8sY0FBTSxPQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQUcsY0FBYyxHQUFBLENBQUM7S0FDM0Q7Ozs7Ozs7Ozs7O0lBT08sOEJBQVU7Ozs7O0lBQWxCOztZQUNRLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtRQUN4RCxPQUFPLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0tBQ25EOzs7Ozs7Ozs7OztJQU9PLDZCQUFTOzs7OztJQUFqQjs7WUFDUSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQ3BELFFBQVEsQ0FBQyxTQUFTLEdBQUcseUJBQXlCLENBQUM7O1lBRXpDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUk7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7WUFDckIsS0FBSyxHQUFHLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVztRQUMzRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTNCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7O2dCQW5ERixVQUFVLFNBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzs7O2dEQUVqQixNQUFNLFNBQUMsUUFBUTs7O29CQXJCOUI7Q0FtQkE7Ozs7OztBQ25CQTtJQUVBO0tBUUM7O2dCQVJBLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsRUFBRTtvQkFDWixJQUFJLEVBQ0EsRUFBQyxTQUFTLEVBQUUseUVBQXlFLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBQztpQkFDckg7OztnQ0FFRSxLQUFLOztJQUNSLHVCQUFDO0NBUkQ7Ozs7Ozs7Ozs7OztBQ1dBOzs7Ozs7O0lBQUE7S0FjQzs7Ozs7Ozs7Ozs7OztJQVJDLDhCQUFLOzs7Ozs7O0lBQUwsVUFBTSxNQUFZLEtBQVU7Ozs7Ozs7Ozs7Ozs7SUFPNUIsZ0NBQU87Ozs7Ozs7SUFBUCxVQUFRLE1BQVksS0FBVTtJQUNoQyxxQkFBQztDQUFBLElBQUE7Ozs7QUFLRDs7OztJQW9CRSxxQkFDWSxjQUE0QyxFQUFVLFdBQXVCLEVBQzdFLGdCQUFpRCxFQUFVLGNBQXlCO1FBRmhHLGlCQVVDO1FBVFcsbUJBQWMsR0FBZCxjQUFjLENBQThCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDN0UscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQztRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFXO1FBQzlGLGNBQWMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFDLE1BQVcsSUFBTyxLQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTNGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBQyxPQUFPLEVBQUUsTUFBTTtZQUN4QyxLQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztZQUN4QixLQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztTQUN2QixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsZUFBUSxDQUFDLENBQUM7S0FDbEM7SUFyQkQsc0JBQUksMENBQWlCOzs7Ozs7Ozs7Ozs7UUFBckI7WUFDRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFO2dCQUNqQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQzthQUMvQztTQUNGOzs7T0FBQTs7Ozs7Ozs7Ozs7OztJQXdCRCwyQkFBSzs7Ozs7OztJQUFMLFVBQU0sTUFBWTtRQUNoQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztTQUM3QjtLQUNGOzs7OztJQUVPLDhCQUFROzs7O0lBQWhCLFVBQWlCLE1BQVk7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztLQUM3Qjs7Ozs7Ozs7Ozs7OztJQU9ELDZCQUFPOzs7Ozs7O0lBQVAsVUFBUSxNQUFZO1FBQXBCLGlCQW1CQztRQWxCQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDdkI7aUJBQU07O29CQUNDLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUNyQyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO29CQUMzQixPQUFPLENBQUMsSUFBSSxDQUNSLFVBQUEsTUFBTTt3QkFDSixJQUFJLE1BQU0sS0FBSyxLQUFLLEVBQUU7NEJBQ3BCLEtBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7eUJBQ3ZCO3FCQUNGLEVBQ0QsZUFBUSxDQUFDLENBQUM7aUJBQ2Y7cUJBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxFQUFFO29CQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUN2QjthQUNGO1NBQ0Y7S0FDRjs7OztJQUVPLDBDQUFvQjs7O0lBQTVCOztZQUNRLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxhQUFhO1FBQ2pFLGNBQWMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFOUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7O2dCQUNuQixnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWE7WUFDckUsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNqQztRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTtZQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNwQztRQUVELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7S0FDekI7SUFDSCxrQkFBQztDQUFBOzs7Ozs7OztJQzdIQyxpQkFBYztJQUNkLE1BQUc7Ozs7Ozs7OztBQ0ZMO0lBOENFLHdCQUFzQyxTQUFjLEVBQVUsTUFBK0I7UUFBdkQsY0FBUyxHQUFULFNBQVMsQ0FBSztRQUFVLFdBQU0sR0FBTixNQUFNLENBQXlCO1FBUnBGLGFBQVEsR0FBcUIsSUFBSSxDQUFDO1FBRWxDLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFJTixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7S0FFNEM7Ozs7O0lBRWpHLHNDQUFhOzs7O0lBQWIsVUFBYyxNQUFNO1FBQ2xCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUN6RSxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ2xEO0tBQ0Y7Ozs7O0lBRUQsK0JBQU07Ozs7SUFBTixVQUFPLE1BQU07UUFDWCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUU7WUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN2QztLQUNGOzs7OztJQUVELGdDQUFPOzs7O0lBQVAsVUFBUSxNQUFNLElBQVUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTs7OztJQUV6RCxpQ0FBUTs7O0lBQVIsY0FBYSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUU7Ozs7SUFFaEUsd0NBQWU7OztJQUFmO1FBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUU7O2dCQUN6RCxhQUFhLHNCQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFlOztnQkFDeEYsY0FBYyxHQUFHLDRCQUE0QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDOztnQkFFM0UsY0FBYyxHQUFHLGFBQWEsSUFBSSxjQUFjLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhO1lBQ25GLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN4QjtLQUNGOzs7O0lBRUQsb0NBQVc7OztJQUFYOztZQUNRLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUk7O1lBQzFCLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWTs7WUFFakMsY0FBYztRQUNsQixJQUFJLFdBQVcsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNyRSxjQUFjLEdBQUcsV0FBVyxDQUFDO1NBQzlCO2FBQU07WUFDTCxjQUFjLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO1FBQ0QsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0tBQzFCOztnQkF0RUYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLElBQUksRUFBRTt3QkFDSixTQUFTLEVBQUUsb0VBQW9FO3dCQUMvRSxNQUFNLEVBQUUsUUFBUTt3QkFDaEIsVUFBVSxFQUFFLElBQUk7d0JBQ2hCLGFBQWEsRUFBRSxnQkFBZ0I7d0JBQy9CLFNBQVMsRUFBRSx1QkFBdUI7d0JBQ2xDLG1CQUFtQixFQUFFLE1BQU07d0JBQzNCLHdCQUF3QixFQUFFLGdCQUFnQjtxQkFDM0M7b0JBQ0QsUUFBUSxFQUFFLGdPQUlQO2lCQUNKOzs7O2dEQWNjLE1BQU0sU0FBQyxRQUFRO2dCQTFDNUIsVUFBVTs7O2lDQWlDVCxLQUFLOzJCQUNMLEtBQUs7MkJBQ0wsS0FBSzsyQkFDTCxLQUFLO3VCQUNMLEtBQUs7OEJBQ0wsS0FBSzsrQkFFTCxNQUFNLFNBQUMsU0FBUzs7SUEyQ25CLHFCQUFDO0NBdkVEOzs7Ozs7QUNoQkE7SUE4QkUsdUJBQ1ksZUFBK0IsRUFBVSxTQUFtQixFQUE0QixTQUFjLEVBQ3RHLFVBQXFCLEVBQVUsZ0JBQWtDO1FBRjdFLGlCQVlDO1FBWFcsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUE0QixjQUFTLEdBQVQsU0FBUyxDQUFLO1FBQ3RHLGVBQVUsR0FBVixVQUFVLENBQVc7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBVHJFLGdDQUEyQixHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDNUMsc0JBQWlCLEdBQXlCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDcEQsd0JBQW1CLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4QyxlQUFVLEdBQWtCLEVBQUUsQ0FBQztRQUMvQixzQkFBaUIsR0FBRyxDQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNsRyxpQkFBWSxHQUFtQyxFQUFFLENBQUM7O1FBTXhELElBQUksQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLENBQUM7WUFDekMsSUFBSSxLQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTs7b0JBQ3RCLGdCQUFnQixHQUFHLEtBQUksQ0FBQyxZQUFZLENBQUMsS0FBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2dCQUN4RSxZQUFZLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxLQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztnQkFDeEYsS0FBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3pCLEtBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQzlEO1NBQ0YsQ0FBQyxDQUFDO0tBQ0o7Ozs7Ozs7O0lBRUQsNEJBQUk7Ozs7Ozs7SUFBSixVQUFLLFNBQW1DLEVBQUUsZUFBeUIsRUFBRSxPQUFZLEVBQUUsT0FBTztRQUExRixpQkF5Q0M7O1lBeENPLFdBQVcsR0FDYixTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUk7O1lBQ2xHLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7O1lBRTNELHlCQUF5QixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFOztZQUN4RCxlQUFlLEdBQUc7WUFDdEIsSUFBSSxDQUFDLEtBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO2dCQUMzQixRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUN4RCxLQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUMxQjtTQUNGO1FBRUQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFrQyxPQUFPLENBQUMsU0FBUyxJQUFJLE1BQU0sa0NBQTZCLENBQUMsQ0FBQztTQUM3Rzs7WUFFSyxXQUFXLEdBQUcsSUFBSSxjQUFjLEVBQUU7O1lBQ2xDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsUUFBUSxJQUFJLGVBQWUsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDOztZQUV4RyxlQUFlLEdBQ2YsT0FBTyxDQUFDLFFBQVEsS0FBSyxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLEdBQUcsSUFBSTs7WUFDaEYsYUFBYSxHQUFpQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUM7O1lBQzdHLFdBQVcsR0FBZ0IsSUFBSSxXQUFXLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUVqSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFDOUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQzFELFdBQVcsQ0FBQyxLQUFLLEdBQUcsVUFBQyxNQUFXLElBQU8sV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDcEUsV0FBVyxDQUFDLE9BQU8sR0FBRyxVQUFDLE1BQVcsSUFBTyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUV4RSxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNoQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQ3REO1FBRUQsSUFBSSxlQUFlLElBQUksZUFBZSxDQUFDLFFBQVEsRUFBRTtZQUMvQyxJQUFJLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUMvRDtRQUNELE9BQU8sV0FBVyxDQUFDO0tBQ3BCOzs7OztJQUVELGtDQUFVOzs7O0lBQVYsVUFBVyxNQUFZLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBQSxXQUFXLElBQUksT0FBQSxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFBLENBQUMsQ0FBQyxFQUFFOzs7O0lBRWpHLHFDQUFhOzs7SUFBYixjQUEyQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFOzs7Ozs7SUFFdkQsdUNBQWU7Ozs7O0lBQXZCLFVBQXdCLFNBQW1DLEVBQUUsV0FBZ0I7O1lBQ3ZFLGVBQWUsR0FBRyxTQUFTLENBQUMsdUJBQXVCLENBQUMsZ0JBQWdCLENBQUM7O1lBQ3JFLGVBQWUsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDNUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFELFdBQVcsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRSxPQUFPLGVBQWUsQ0FBQztLQUN4Qjs7Ozs7OztJQUVPLDhDQUFzQjs7Ozs7O0lBQTlCLFVBQStCLFNBQW1DLEVBQUUsV0FBZ0IsRUFBRSxVQUFlOztZQUUvRixhQUFhLEdBQUcsU0FBUyxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQzs7WUFDakUsYUFBYSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQzFFLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4RCxXQUFXLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUQsT0FBTyxhQUFhLENBQUM7S0FDdEI7Ozs7OztJQUVPLDJDQUFtQjs7Ozs7SUFBM0IsVUFBNEIsY0FBOEIsRUFBRSxPQUFlO1FBQ3pFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsVUFBQyxVQUFrQjtZQUNoRCxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRTtnQkFDbEMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNsRDtTQUNGLENBQUMsQ0FBQztLQUNKOzs7Ozs7SUFFTyw2Q0FBcUI7Ozs7O0lBQTdCLFVBQThCLGdCQUFrQyxFQUFFLE9BQWU7UUFDL0UsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxVQUFDLFVBQWtCO1lBQ2xELElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFO2dCQUNsQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDcEQ7U0FDRixDQUFDLENBQUM7S0FDSjs7Ozs7Ozs7SUFFTyxzQ0FBYzs7Ozs7OztJQUF0QixVQUNJLFNBQW1DLEVBQUUsZUFBeUIsRUFBRSxPQUFZLEVBQzVFLFdBQTJCO1FBQzdCLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixPQUFPLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzNCO2FBQU0sSUFBSSxPQUFPLFlBQVksV0FBVyxFQUFFO1lBQ3pDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztTQUMxRDthQUFNLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzVCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3hDO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztTQUNwRjtLQUNGOzs7Ozs7SUFFTyw4Q0FBc0I7Ozs7O0lBQTlCLFVBQStCLE9BQXlCLEVBQUUsV0FBMkI7O1lBQzdFLE9BQU8sR0FBRztZQUNkLFNBQVMsRUFBRSxXQUFXO1lBQ3RCLEtBQUs7Ozs7c0JBQUMsTUFBTSxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtZQUM1QyxPQUFPOzs7O3NCQUFDLE1BQU0sSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7U0FDakQ7O1lBQ0ssT0FBTyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7UUFDbkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNyRDs7Ozs7SUFFTyx5Q0FBaUI7Ozs7SUFBekIsVUFBMEIsT0FBZTs7WUFDakMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEtBQUcsT0FBUyxDQUFDO1FBQzdELE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN0Qzs7Ozs7Ozs7SUFFTyw0Q0FBb0I7Ozs7Ozs7SUFBNUIsVUFDSSxTQUFtQyxFQUFFLGVBQXlCLEVBQUUsT0FBWSxFQUM1RSxPQUF1Qjs7WUFDbkIsa0JBQWtCLEdBQUcsU0FBUyxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQzs7WUFDL0Qsb0JBQW9CLEdBQ3RCLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBQyxTQUFTLEVBQUUsQ0FBQyxFQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBQyxDQUFDOztZQUNuRyxZQUFZLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDO1FBQ3BFLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2RCxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztLQUNyRzs7Ozs7SUFFTyxzQ0FBYzs7OztJQUF0QixVQUF1QixPQUFnQjtRQUF2QyxpQkFZQzs7WUFYTyxNQUFNLEdBQUcsT0FBTyxDQUFDLGFBQWE7UUFDcEMsSUFBSSxNQUFNLElBQUksT0FBTyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFO1lBQzdDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFBLE9BQU87Z0JBQ3pDLElBQUksT0FBTyxLQUFLLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRTtvQkFDeEQsS0FBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO29CQUN6RSxPQUFPLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztpQkFDN0M7YUFDRixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzdCO0tBQ0Y7Ozs7SUFFTyx5Q0FBaUI7OztJQUF6QjtRQUNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsVUFBQyxLQUFLLEVBQUUsT0FBTztZQUM1QyxJQUFJLEtBQUssRUFBRTtnQkFDVCxPQUFPLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUM1QztpQkFBTTtnQkFDTCxPQUFPLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ3hDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO0tBQ2hDOzs7OztJQUVPLHlDQUFpQjs7OztJQUF6QixVQUEwQixXQUF3QjtRQUFsRCxpQkFTQzs7WUFSTyxrQkFBa0IsR0FBRzs7Z0JBQ25CLEtBQUssR0FBRyxLQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7WUFDbEQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2QsS0FBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ2xDO1NBQ0Y7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0tBQ2pFOzs7OztJQUVPLDJDQUFtQjs7OztJQUEzQixVQUE0QixhQUEyQztRQUF2RSxpQkFXQztRQVZDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV4QyxhQUFhLENBQUMsU0FBUyxDQUFDOztnQkFDaEIsS0FBSyxHQUFHLEtBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztZQUN0RCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDZCxLQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ25DLEtBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUN6QztTQUNGLENBQUMsQ0FBQztLQUNKOztnQkEvTEYsVUFBVSxTQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzs7OztnQkFuQjlCLGNBQWM7Z0JBS2QsUUFBUTtnREF3Qm1FLE1BQU0sU0FBQyxRQUFRO2dCQWhCcEYsU0FBUztnQkFQZixnQkFBZ0I7Ozt3QkFSbEI7Q0FxQkE7Ozs7OztBQ3JCQTs7Ozs7O0FBWUE7SUFFRSxrQkFDWSxVQUFvQyxFQUFVLFNBQW1CLEVBQVUsV0FBMEIsRUFDckcsT0FBdUI7UUFEdkIsZUFBVSxHQUFWLFVBQVUsQ0FBMEI7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWU7UUFDckcsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7S0FBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQVd2Qyx1QkFBSTs7Ozs7Ozs7Ozs7O0lBQUosVUFBSyxPQUFZLEVBQUUsT0FBNkI7UUFBN0Isd0JBQUEsRUFBQSxZQUE2Qjs7WUFDeEMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQztLQUN6Rjs7Ozs7Ozs7Ozs7OztJQU9ELDZCQUFVOzs7Ozs7O0lBQVYsVUFBVyxNQUFZLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTs7Ozs7Ozs7Ozs7O0lBT2pFLGdDQUFhOzs7Ozs7SUFBYixjQUEyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUMsRUFBRTs7Z0JBaEN0RSxVQUFVLFNBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzs7O2dCQVpGLHdCQUF3QjtnQkFBbEMsUUFBUTtnQkFJcEIsYUFBYTtnQkFGSSxjQUFjOzs7bUJBRnZDO0NBWUE7Ozs7OztBQ1pBO0lBV0E7S0FhQzs7Ozs7Ozs7Ozs7Ozs7SUFEUSxzQkFBTzs7Ozs7OztJQUFkLGNBQXdDLE9BQU8sRUFBQyxRQUFRLEVBQUUsY0FBYyxFQUFDLENBQUMsRUFBRTs7Z0JBWjdFLFFBQVEsU0FBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQUM7b0JBQ2hELGVBQWUsRUFBRSxDQUFDLGdCQUFnQixFQUFFLGNBQWMsQ0FBQztvQkFDbkQsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2lCQUN0Qjs7SUFTRCxxQkFBQztDQWJEOzs7Ozs7QUNYQTs7Ozs7O0FBUUE7SUFBQTtRQUVFLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ1osYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLFdBQU0sR0FBRyxLQUFLLENBQUM7S0FFaEI7O2dCQVZBLFVBQVUsU0FBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7Ozs4QkFSaEM7Q0FRQTs7Ozs7Ozs7Ozs7QUNrREE7SUFFRSwrQkFBbUIsV0FBa0Q7UUFBbEQsZ0JBQVcsR0FBWCxXQUFXLENBQXVDO0tBQUk7O2dCQUYxRSxTQUFTLFNBQUMsRUFBQyxRQUFRLEVBQUUsb0NBQW9DLEVBQUM7Ozs7Z0JBaER6RCxXQUFXOztJQW1EYiw0QkFBQztDQUhELElBR0M7Ozs7OztBQU9EO0lBRUUsNEJBQW1CLFdBQWtEO1FBQWxELGdCQUFXLEdBQVgsV0FBVyxDQUF1QztLQUFJOztnQkFGMUUsU0FBUyxTQUFDLEVBQUMsUUFBUSxFQUFFLGlDQUFpQyxFQUFDOzs7O2dCQTFEdEQsV0FBVzs7SUE2RGIseUJBQUM7Q0FIRCxJQUdDOzs7Ozs7QUFPRDtJQUVFLDJCQUFtQixXQUFrRDtRQUFsRCxnQkFBVyxHQUFYLFdBQVcsQ0FBdUM7S0FBSTs7Z0JBRjFFLFNBQVMsU0FBQyxFQUFDLFFBQVEsRUFBRSxnQ0FBZ0MsRUFBQzs7OztnQkFwRXJELFdBQVc7O0lBdUViLHdCQUFDO0NBSEQsSUFHQzs7Ozs7O0FBT0Q7SUFFRSwyQkFBbUIsV0FBa0Q7UUFBbEQsZ0JBQVcsR0FBWCxXQUFXLENBQXVDO0tBQUk7O2dCQUYxRSxTQUFTLFNBQUMsRUFBQyxRQUFRLEVBQUUsZ0NBQWdDLEVBQUM7Ozs7Z0JBOUVyRCxXQUFXOztJQWlGYix3QkFBQztDQUhELElBR0M7Ozs7OztBQU9EO0lBRUUsNkJBQW1CLFdBQW9EO1FBQXBELGdCQUFXLEdBQVgsV0FBVyxDQUF5QztLQUFJOztnQkFGNUUsU0FBUyxTQUFDLEVBQUMsUUFBUSxFQUFFLGtDQUFrQyxFQUFDOzs7O2dCQXhGdkQsV0FBVzs7SUEyRmIsMEJBQUM7Q0FIRCxJQUdDOzs7Ozs7QUFPRDtJQUVFLCtCQUFtQixXQUFrRDtRQUFsRCxnQkFBVyxHQUFYLFdBQVcsQ0FBdUM7S0FBSTs7Z0JBRjFFLFNBQVMsU0FBQyxFQUFDLFFBQVEsRUFBRSxvQ0FBb0MsRUFBQzs7OztnQkFsR3pELFdBQVc7O0lBcUdiLDRCQUFDO0NBSEQsSUFHQzs7OztBQUtEO0lBNklFLHVCQUFZLE1BQTJCO1FBL0V2QyxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsVUFBSyxHQUFhLEVBQUUsQ0FBQzs7Ozs7O1FBdURaLFNBQUksR0FBRyxDQUFDLENBQUM7Ozs7Ozs7O1FBY1IsZUFBVSxHQUFHLElBQUksWUFBWSxDQUFTLElBQUksQ0FBQyxDQUFDO1FBVXBELElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7UUFDMUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7S0FDekI7Ozs7SUFFRCxtQ0FBVzs7O0lBQVgsY0FBeUIsT0FBTyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFOzs7O0lBRWhELCtCQUFPOzs7SUFBUCxjQUFxQixPQUFPLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFOzs7O0lBRXpELG9DQUFZOzs7SUFBWixjQUEwQixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTs7OztJQUVwRSx3Q0FBZ0I7OztJQUFoQixjQUE4QixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTs7Ozs7SUFFNUUsa0NBQVU7Ozs7SUFBVixVQUFXLFVBQWtCLElBQVUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFOzs7OztJQUV2RSxtQ0FBVzs7OztJQUFYLFVBQVksT0FBc0IsSUFBVSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFOzs7OztJQUUzRSxrQ0FBVTs7OztJQUFWLFVBQVcsVUFBVSxJQUFhLE9BQU8sVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7Ozs7Ozs7Ozs7SUFLckQsc0NBQWM7Ozs7OztJQUF0QixVQUF1QixLQUFhLEVBQUUsR0FBVztRQUMvQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO2dCQUNiLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtvQkFDYixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN4QjtnQkFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN2QjtZQUNELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ3hCLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3JCO2dCQUNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNqQztTQUNGO0tBQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQVVPLHNDQUFjOzs7Ozs7Ozs7SUFBdEI7O1lBQ00sS0FBSyxHQUFHLENBQUM7O1lBQ1QsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTOztZQUNwQixVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQzs7WUFDekMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxHQUFHLFVBQVU7UUFFdEUsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFVBQVUsRUFBRTs7WUFFM0IsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDcEI7YUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLEVBQUU7O1lBRWxELEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDdkM7YUFBTTs7WUFFTCxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztTQUMvQjtRQUVELE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDckI7Ozs7Ozs7O0lBS08sd0NBQWdCOzs7O0lBQXhCOztZQUNNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7O1lBQzlDLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU87O1lBQzNCLEdBQUcsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU87UUFFOUIsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztLQUNyQjs7Ozs7SUFFTyx1Q0FBZTs7OztJQUF2QixVQUF3QixTQUFTOztZQUN6QixVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUk7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxlQUFlLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFMUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQzdELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQztLQUNGOzs7OztJQUVPLG9DQUFZOzs7O0lBQXBCLFVBQXFCLE9BQWU7O1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVoRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztTQUNwQjs7UUFHRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDdEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEI7O1FBR0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQzs7UUFHOUIsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7O2dCQUNqRCxLQUFLLEdBQUcsQ0FBQzs7Z0JBQ1QsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTOztZQUd4QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2YscUNBQW9DLEVBQW5DLGFBQUssRUFBRSxXQUFHLENBQTBCO2FBQ3RDO2lCQUFNO2dCQUNMLHVDQUFzQyxFQUFyQyxhQUFLLEVBQUUsV0FBRyxDQUE0QjthQUN4QztZQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDOztZQUcxQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNqQztLQUNGOztnQkE1UUYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxJQUFJLEVBQUUsRUFBQyxNQUFNLEVBQUUsWUFBWSxFQUFDO29CQUM1QixRQUFRLEVBQUUsNnJIQXVEVDtpQkFDRjs7OztnQkFuS08sbUJBQW1COzs7OEJBd0t4QixZQUFZLFNBQUMscUJBQXFCOzJCQUNsQyxZQUFZLFNBQUMsa0JBQWtCOzBCQUMvQixZQUFZLFNBQUMsaUJBQWlCOzBCQUM5QixZQUFZLFNBQUMsaUJBQWlCOzRCQUM5QixZQUFZLFNBQUMsbUJBQW1COzhCQUNoQyxZQUFZLFNBQUMscUJBQXFCOzJCQUtsQyxLQUFLO2dDQUtMLEtBQUs7aUNBS0wsS0FBSzsyQkFLTCxLQUFLO3lCQU9MLEtBQUs7aUNBU0wsS0FBSzswQkFLTCxLQUFLO3VCQU9MLEtBQUs7MkJBS0wsS0FBSzs2QkFTTCxNQUFNO3VCQU9OLEtBQUs7O0lBa0lSLG9CQUFDO0NBN1FEOzs7Ozs7QUNwSEE7SUF3Qk0sVUFBVSxHQUFHO0lBQ2pCLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUI7SUFDbkgscUJBQXFCO0NBQ3RCO0FBRUQ7SUFBQTtLQVNDOzs7Ozs7Ozs7Ozs7OztJQURRLDJCQUFPOzs7Ozs7O0lBQWQsY0FBd0MsT0FBTyxFQUFDLFFBQVEsRUFBRSxtQkFBbUIsRUFBQyxDQUFDLEVBQUU7O2dCQVJsRixRQUFRLFNBQUMsRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUM7O0lBU2xGLDBCQUFDO0NBVEQ7Ozs7OztBQzdCQSxBQUdBO0lBQ0UsaUJBQW1CLElBQVksRUFBUyxLQUFjO1FBQW5DLFNBQUksR0FBSixJQUFJLENBQVE7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFTO1FBQ3BELElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNuQjtLQUNGOzs7O0lBRUQsMEJBQVE7OztJQUFSLGNBQWEsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQyxFQUFFO0lBQzFFLGNBQUM7Q0FBQSxJQUFBOztJQUVLLGVBQWUsR0FBRztJQUN0QixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDO0lBQ3JDLE9BQU8sRUFBRSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUM7Q0FDakM7Ozs7OztBQUVELFNBQWdCLGFBQWEsQ0FBQyxRQUFnQixFQUFFLE9BQXlCO0lBQXpCLHdCQUFBLEVBQUEseUJBQXlCOztRQUNqRSxlQUFlLEdBQUcsQ0FBQyxRQUFRLElBQUksRUFBRSxFQUFFLElBQUksRUFBRTtJQUUvQyxJQUFJLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ2hDLE9BQU8sRUFBRSxDQUFDO0tBQ1g7O1FBRUssY0FBYyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUEsT0FBTyxJQUFJLE9BQUEsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBQSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUMsV0FBVzs7WUFDakcsS0FBSyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXO1FBQ2xELE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3hDLENBQUM7O1FBRUksY0FBYyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsVUFBQSxXQUFXLElBQUksT0FBQSxXQUFXLENBQUMsUUFBUSxFQUFFLEdBQUEsQ0FBQztJQUVuRixJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzdCLE1BQU0sMERBQTBELENBQUM7S0FDbEU7SUFFRCxJQUFJLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzVELE1BQU0sMEVBQTBFLENBQUM7S0FDbEY7SUFFRCxPQUFPLGNBQWMsQ0FBQztDQUN2Qjs7Ozs7Ozs7QUFFRCxTQUFnQixlQUFlLENBQUMsUUFBYSxFQUFFLGFBQWtCLEVBQUUsUUFBbUIsRUFBRSxVQUF5QjtJQUMvRyxPQUFPLElBQUksVUFBVSxDQUFVLFVBQUEsVUFBVTs7WUFDakMsU0FBUyxHQUFHLEVBQUU7O1lBQ2QsTUFBTSxHQUFHLGNBQU0sT0FBQSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFBOztZQUNwQyxPQUFPLEdBQUcsY0FBTSxPQUFBLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUE7O1lBQ3RDLFFBQVEsR0FBRyxjQUFNLE9BQUEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLEdBQUE7UUFFckQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFDLE9BQWdCO1lBQ2hDLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsS0FBSyxFQUFFO2dCQUNsQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUN4RTtpQkFBTTtnQkFDTCxTQUFTLENBQUMsSUFBSSxDQUNWLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQ3BELFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUM3RDtTQUNGLENBQUMsQ0FBQztRQUVILE9BQU8sY0FBUSxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQUEsYUFBYSxJQUFJLE9BQUEsYUFBYSxFQUFFLEdBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUN2RSxDQUFDLENBQUM7Q0FDSjs7SUFFSyxXQUFXLEdBQUcsVUFBSSxJQUFZLElBQUssT0FBQSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBSSxJQUFJLENBQUMsR0FBRyxVQUFDLENBQWdCLElBQUssT0FBQSxDQUFDLEdBQUEsR0FBQTs7Ozs7OztBQUU1RixTQUFnQixZQUFZLENBQUMsU0FBaUIsRUFBRSxVQUFrQixFQUFFLFVBQXlCO0lBQzNGLE9BQU8sVUFBQyxNQUEyQjs7WUFDN0IsT0FBTyxHQUFHLElBQUk7O1lBQ1osY0FBYyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQzlCLEdBQUcsQ0FBQyxVQUFBLElBQUksSUFBSSxRQUFDLEVBQUMsSUFBSSxNQUFBLEVBQUMsSUFBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFVBQUEsS0FBSzs7Z0JBQzNCLGFBQWEsR0FBRyxVQUFVLEVBQUU7WUFDbEMsSUFBSSxhQUFhLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxFQUFFO2dCQUNoRixPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNoQixPQUFPLElBQUksQ0FBQzthQUNiO1lBQ0QsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUMxQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2FBQ2hCO1lBQ0QsT0FBTyxLQUFLLENBQUM7U0FDZCxDQUFDLEVBQ0YsS0FBSyxFQUFFLENBQUM7O1lBQ04sWUFBWSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsS0FBSyxDQUFDLElBQUksR0FBQSxDQUFDLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDOztZQUN2RixhQUFhLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUEsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRyxPQUFPLEtBQUssQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDO2FBQ3BDLElBQUksQ0FDRCxNQUFNLENBQUMsVUFBQSxLQUFLO1lBQ1YsSUFBSSxLQUFLLEtBQUssT0FBTyxFQUFFO2dCQUNyQixPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUNmLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQzthQUNwQztZQUNELE9BQU8sS0FBSyxDQUFDO1NBQ2QsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssQ0FBQyxJQUFJLEdBQUEsQ0FBQyxDQUFDLENBQUM7S0FDbkMsQ0FBQztDQUNIOzs7Ozs7Ozs7Ozs7QUFFRCxTQUFnQixnQkFBZ0IsQ0FDNUIsUUFBYSxFQUFFLGFBQWtCLEVBQUUsUUFBZ0IsRUFBRSxVQUF5QixFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBYSxFQUM5RyxVQUFjO0lBRG1GLDBCQUFBLEVBQUEsYUFBYTtJQUM5RywyQkFBQSxFQUFBLGNBQWM7O1FBQ1YsY0FBYyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUM7SUFFOUMsSUFBSSxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7UUFDL0QsT0FBTyxlQUFRLENBQUM7S0FDakI7O1FBRUssWUFBWSxHQUFHLGVBQWUsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxVQUFVLENBQUM7U0FDL0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ3JELFNBQVMsQ0FBQyxVQUFBLElBQUksSUFBSSxRQUFDLElBQUksR0FBRyxNQUFNLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBQyxDQUFDO0lBRTFFLE9BQU8sY0FBTSxPQUFBLFlBQVksQ0FBQyxXQUFXLEVBQUUsR0FBQSxDQUFDO0NBQ3pDOzs7Ozs7QUMvR0Q7Ozs7OztBQVNBO0lBQUE7UUFFRSxjQUFTLEdBQW1DLElBQUksQ0FBQztRQUNqRCxjQUFTLEdBQW1CLE1BQU0sQ0FBQztRQUNuQyxhQUFRLEdBQUcsT0FBTyxDQUFDO1FBRW5CLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRXZCLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFDZCxlQUFVLEdBQUcsQ0FBQyxDQUFDO0tBQ2hCOztnQkFWQSxVQUFVLFNBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzs7MkJBVGhDO0NBU0E7Ozs7OztBQ1RBO0lBaUNJRCxRQUFNLEdBQUcsQ0FBQztBQUVkO0lBQUE7S0FxQkM7Ozs7SUFEQywwQ0FBZTs7O0lBQWYsY0FBb0IsT0FBTyxJQUFJLENBQUMsS0FBSyxZQUFZLFdBQVcsQ0FBQyxFQUFFOztnQkFwQmhFLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLElBQUksRUFBRSxFQUFDLFNBQVMsRUFBRSxzREFBc0QsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUM7b0JBQzFHLFFBQVEsRUFBRSwyV0FNa0Q7O2lCQUU3RDs7O3dCQUVFLEtBQUs7cUJBQ0wsS0FBSzsrQkFDTCxLQUFLOzBCQUNMLEtBQUs7O0lBR1IsdUJBQUM7Q0FyQkQsSUFxQkM7Ozs7QUFLRDtJQWdIRSxvQkFDWSxXQUFvQyxFQUFVLFNBQW9CLEVBQUUsUUFBa0IsRUFDOUYsd0JBQWtELEVBQUUsZ0JBQWtDLEVBQUUsTUFBd0IsRUFDeEcsT0FBZSxFQUE0QixTQUFjLEVBQVUsZUFBa0MsRUFDckcsZUFBK0I7UUFKM0MsaUJBdUJDO1FBdEJXLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFFbEUsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUE0QixjQUFTLEdBQVQsU0FBUyxDQUFLO1FBQVUsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBQ3JHLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjs7OztRQTFCakMsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7Ozs7UUFLakMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFcEMsd0JBQW1CLEdBQUcsaUJBQWVBLFFBQU0sRUFBSSxDQUFDO1FBb0J0RCxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQzVDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUN4QyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxZQUFZLENBQ2pDLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsd0JBQXdCLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFeEcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1lBQ2xELElBQUksS0FBSSxDQUFDLFVBQVUsRUFBRTtnQkFDbkIsZ0JBQWdCLENBQ1osS0FBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsS0FBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLEtBQUksQ0FBQyxTQUFTLEVBQ3RGLEtBQUksQ0FBQyxTQUFTLEtBQUssTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO2FBQzlDO1NBQ0YsQ0FBQyxDQUFDO0tBQ0o7Ozs7SUFqQ08sZ0NBQVc7OztJQUFuQjtRQUNFLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzFDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztLQUNkOzs7Ozs7Ozs7Ozs7Ozs7SUFpQ0QseUJBQUk7Ozs7Ozs7O0lBQUosVUFBSyxPQUFhO1FBQWxCLGlCQStCQztRQTlCQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUMzQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUMxRCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBRXZELElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLGtCQUFrQixFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBRTFHLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxNQUFNLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDbEc7Ozs7WUFLRCxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDOzs7Ozs7WUFPbEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUVqRCxZQUFZLENBQ1IsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsY0FBTSxPQUFBLEtBQUksQ0FBQyxLQUFLLEVBQUUsR0FBQSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQzdFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ25CO0tBQ0Y7Ozs7Ozs7Ozs7OztJQU9ELDBCQUFLOzs7Ozs7SUFBTDtRQUNFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1lBQ25GLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JDO0tBQ0Y7Ozs7Ozs7Ozs7OztJQU9ELDJCQUFNOzs7Ozs7SUFBTjtRQUNFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDZDthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2I7S0FDRjs7Ozs7Ozs7SUFLRCwyQkFBTTs7OztJQUFOLGNBQW9CLE9BQU8sSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsRUFBRTs7OztJQUVyRCw2QkFBUTs7O0lBQVI7UUFDRSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsZ0JBQWdCLENBQzFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDM0csSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQy9EOzs7OztJQUVELGdDQUFXOzs7O0lBQVgsVUFBWSxPQUFzQjs7UUFFaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3pHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNkO0tBQ0Y7Ozs7SUFFRCxnQ0FBVzs7O0lBQVg7UUFDRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7OztRQUdiLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQy9CLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO0tBQ3RDOztnQkF0T0YsU0FBUyxTQUFDLEVBQUMsUUFBUSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFDOzs7O2dCQS9DM0QsVUFBVTtnQkFGVixTQUFTO2dCQURULFFBQVE7Z0JBTVIsd0JBQXdCO2dCQUR4QixnQkFBZ0I7Z0JBZVYsZ0JBQWdCO2dCQWJ0QixNQUFNO2dEQThKd0IsTUFBTSxTQUFDLFFBQVE7Z0JBM0o3QyxpQkFBaUI7Z0JBQ2pCLGNBQWM7Ozs0QkFvRGIsS0FBSzs2QkFPTCxLQUFLOytCQU9MLEtBQUs7NEJBZUwsS0FBSzsyQkFRTCxLQUFLOzRCQU9MLEtBQUs7aUNBT0wsS0FBSzsrQkFPTCxLQUFLOzRCQU9MLEtBQUs7NkJBT0wsS0FBSzt3QkFLTCxNQUFNO3lCQUtOLE1BQU07O0lBd0lULGlCQUFDO0NBdk9EOzs7Ozs7QUM3REE7SUFTQTtLQWNDOzs7Ozs7Ozs7Ozs7OztJQURRLHdCQUFPOzs7Ozs7O0lBQWQsY0FBd0MsT0FBTyxFQUFDLFFBQVEsRUFBRSxnQkFBZ0IsRUFBQyxDQUFDLEVBQUU7O2dCQWIvRSxRQUFRLFNBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDO29CQUM1QyxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUM7b0JBQ3JCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsZUFBZSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7aUJBQ3BDOztJQVNELHVCQUFDO0NBZEQ7Ozs7OztBQ1RBOzs7Ozs7QUFRQTtJQUFBO1FBRUUsUUFBRyxHQUFHLEdBQUcsQ0FBQztRQUNWLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQixjQUFTLEdBQUcsS0FBSyxDQUFDO0tBRW5COztnQkFSQSxVQUFVLFNBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzs7K0JBUmhDO0NBUUE7Ozs7OztBQ1JBOzs7QUFPQTtJQXlERSx3QkFBWSxNQUE0Qjs7Ozs7O1FBVC9CLFVBQUssR0FBRyxDQUFDLENBQUM7UUFVakIsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDOUIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7S0FDN0I7Ozs7SUFFRCxpQ0FBUTs7O0lBQVIsY0FBYSxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFOzs7O0lBRTVELHdDQUFlOzs7SUFBZixjQUFvQixPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFOztnQkFwRS9ELFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsUUFBUSxFQUFFLG9nQkFRVDtpQkFDRjs7OztnQkFqQk8sb0JBQW9COzs7c0JBc0J6QixLQUFLOzJCQU9MLEtBQUs7MEJBS0wsS0FBSzs0QkFLTCxLQUFLO3VCQU9MLEtBQUs7d0JBT0wsS0FBSzt5QkFPTCxLQUFLOztJQWNSLHFCQUFDO0NBckVEOzs7Ozs7QUNQQTtJQVFBO0tBU0M7Ozs7Ozs7Ozs7Ozs7O0lBRFEsNEJBQU87Ozs7Ozs7SUFBZCxjQUF3QyxPQUFPLEVBQUMsUUFBUSxFQUFFLG9CQUFvQixFQUFDLENBQUMsRUFBRTs7Z0JBUm5GLFFBQVEsU0FBQyxFQUFDLFlBQVksRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFDOztJQVM5RiwyQkFBQztDQVREOzs7Ozs7QUNSQTs7Ozs7O0FBUUE7SUFBQTtRQUVFLFFBQUcsR0FBRyxFQUFFLENBQUM7UUFDVCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxLQUFLLENBQUM7S0FDcEI7O2dCQUxBLFVBQVUsU0FBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7OzswQkFSaEM7Q0FRQTs7Ozs7O0FDUkE7SUFrQ00seUJBQXlCLEdBQUc7SUFDaEMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLGNBQU0sT0FBQSxTQUFTLEdBQUEsQ0FBQztJQUN4QyxLQUFLLEVBQUUsSUFBSTtDQUNaOzs7O0FBS0Q7SUF1RkUsbUJBQVksTUFBdUIsRUFBVSxrQkFBcUM7UUFBckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQXpEbEYsYUFBUSxHQUEwQixFQUFFLENBQUM7UUFDckMsYUFBUSxHQUFHLEtBQUssQ0FBQzs7Ozs7O1FBcUNQLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDOzs7Ozs7UUFPbkMsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7Ozs7OztRQU9uQyxlQUFVLEdBQUcsSUFBSSxZQUFZLENBQVMsSUFBSSxDQUFDLENBQUM7UUFFdEQsYUFBUSxHQUFHLFVBQUMsQ0FBTSxLQUFPLENBQUM7UUFDMUIsY0FBUyxHQUFHLGVBQVEsQ0FBQztRQUduQixJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO0tBQ2pDOzs7O0lBRUQsaUNBQWE7OztJQUFiLGNBQWtCLE9BQVUsSUFBSSxDQUFDLFFBQVEsZ0JBQVcsSUFBSSxDQUFDLEdBQUssQ0FBQyxFQUFFOzs7OztJQUVqRSx5QkFBSzs7OztJQUFMLFVBQU0sS0FBYTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMxQjtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3hCOzs7O0lBRUQsOEJBQVU7OztJQUFWLGNBQWUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUU7Ozs7O0lBRWxDLCtCQUFXOzs7O0lBQVgsVUFBWSxLQUFhLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFOzs7OztJQUUvRixpQ0FBYTs7OztJQUFiLFVBQWMsS0FBb0I7O1FBRWhDLFFBQVEsS0FBSyxDQUFDLEtBQUs7WUFDakIsS0FBSyxHQUFHLENBQUMsU0FBUyxDQUFDO1lBQ25CLEtBQUssR0FBRyxDQUFDLFNBQVM7Z0JBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDM0IsTUFBTTtZQUNSLEtBQUssR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUNqQixLQUFLLEdBQUcsQ0FBQyxVQUFVO2dCQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLE1BQU07WUFDUixLQUFLLEdBQUcsQ0FBQyxJQUFJO2dCQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2YsTUFBTTtZQUNSLEtBQUssR0FBRyxDQUFDLEdBQUc7Z0JBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3RCLE1BQU07WUFDUjtnQkFDRSxPQUFPO1NBQ1Y7O1FBR0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0tBQ3hCOzs7OztJQUVELCtCQUFXOzs7O0lBQVgsVUFBWSxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtLQUNGOzs7O0lBRUQsNEJBQVE7OztJQUFSO1FBQ0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUMsRUFBRSxVQUFDLENBQUMsRUFBRSxDQUFDLElBQUssUUFBQyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBQyxJQUFDLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM5Qjs7Ozs7SUFFRCxvQ0FBZ0I7Ozs7SUFBaEIsVUFBaUIsRUFBdUIsSUFBVSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxFQUFFOzs7OztJQUV2RSxxQ0FBaUI7Ozs7SUFBakIsVUFBa0IsRUFBYSxJQUFVLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLEVBQUU7Ozs7SUFFL0QseUJBQUs7OztJQUFMO1FBQ0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCOzs7OztJQUVELG9DQUFnQjs7OztJQUFoQixVQUFpQixVQUFtQixJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLEVBQUU7Ozs7OztJQUVyRSwwQkFBTTs7Ozs7SUFBTixVQUFPLEtBQWEsRUFBRSxjQUFxQjtRQUFyQiwrQkFBQSxFQUFBLHFCQUFxQjs7WUFDbkMsT0FBTyxHQUFHLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO1lBQzdELElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQztRQUNELElBQUksY0FBYyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNsQjtRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCOzs7OztJQUVELDhCQUFVOzs7O0lBQVYsVUFBVyxLQUFLO1FBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0tBQ3hDOzs7OztJQUVPLGlDQUFhOzs7O0lBQXJCLFVBQXNCLEtBQWE7O1lBQzNCLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUs7UUFFbEMsSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO1lBQ2IsT0FBTyxHQUFHLENBQUM7U0FDWjtRQUNELElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLE9BQU8sUUFBUSxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDOUM7UUFFRCxPQUFPLENBQUMsQ0FBQztLQUNWOzs7OztJQUVPLGdDQUFZOzs7O0lBQXBCLFVBQXFCLFNBQWlCO1FBQXRDLGlCQUdDO1FBRkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBQyxPQUFPLEVBQUUsS0FBSyxJQUFLLE9BQUEsT0FBTyxDQUFDLElBQUksR0FBRyxLQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFBLENBQUMsQ0FBQztLQUNyRjs7Z0JBMUxGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLElBQUksRUFBRTt3QkFDSixPQUFPLEVBQUUsZUFBZTt3QkFDeEIsVUFBVSxFQUFFLEdBQUc7d0JBQ2YsTUFBTSxFQUFFLFFBQVE7d0JBQ2hCLGVBQWUsRUFBRSxHQUFHO3dCQUNwQixzQkFBc0IsRUFBRSxLQUFLO3dCQUM3QixzQkFBc0IsRUFBRSxVQUFVO3dCQUNsQyx1QkFBdUIsRUFBRSxpQkFBaUI7d0JBQzFDLHNCQUFzQixFQUFFLHdCQUF3Qjt3QkFDaEQsUUFBUSxFQUFFLGNBQWM7d0JBQ3hCLFdBQVcsRUFBRSx1QkFBdUI7d0JBQ3BDLGNBQWMsRUFBRSxTQUFTO3FCQUMxQjtvQkFDRCxRQUFRLEVBQUUsNGtCQVNUO29CQUNELFNBQVMsRUFBRSxDQUFDLHlCQUF5QixDQUFDO2lCQUN2Qzs7OztnQkF4RE8sZUFBZTtnQkFGckIsaUJBQWlCOzs7c0JBcUVoQixLQUFLO3VCQUtMLEtBQUs7MkJBS0wsS0FBSzs2QkFLTCxLQUFLOytCQU9MLEtBQUs7MENBQ0wsWUFBWSxTQUFDLFdBQVc7d0JBT3hCLE1BQU07d0JBT04sTUFBTTs2QkFPTixNQUFNOztJQXlHVCxnQkFBQztDQTNMRDs7Ozs7O0FDM0NBO0lBUUE7S0FTQzs7Ozs7Ozs7Ozs7Ozs7SUFEUSx1QkFBTzs7Ozs7OztJQUFkLGNBQXdDLE9BQU8sRUFBQyxRQUFRLEVBQUUsZUFBZSxFQUFDLENBQUMsRUFBRTs7Z0JBUjlFLFFBQVEsU0FBQyxFQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFDOztJQVNwRixzQkFBQztDQVREOzs7Ozs7QUNSQTs7Ozs7O0FBUUE7SUFBQTtRQUVFLFlBQU8sR0FBc0QsT0FBTyxDQUFDO1FBQ3JFLGdCQUFXLEdBQThCLFlBQVksQ0FBQztRQUN0RCxTQUFJLEdBQXFCLE1BQU0sQ0FBQztLQUNqQzs7Z0JBTEEsVUFBVSxTQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzs7OzBCQVJoQztDQVFBOzs7Ozs7QUNSQTtJQWFJQSxRQUFNLEdBQUcsQ0FBQzs7Ozs7O0FBT2Q7SUFFRSxxQkFBbUIsV0FBNkI7UUFBN0IsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO0tBQUk7O2dCQUZyRCxTQUFTLFNBQUMsRUFBQyxRQUFRLEVBQUUsMEJBQTBCLEVBQUM7Ozs7Z0JBZC9DLFdBQVc7O0lBaUJiLGtCQUFDO0NBSEQsSUFHQzs7OztBQUtEO0lBRUUsdUJBQW1CLFdBQTZCO1FBQTdCLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtLQUFJOztnQkFGckQsU0FBUyxTQUFDLEVBQUMsUUFBUSxFQUFFLDRCQUE0QixFQUFDOzs7O2dCQXRCakQsV0FBVzs7SUF5QmIsb0JBQUM7Q0FIRCxJQUdDOzs7O0FBS0Q7SUFBQTs7Ozs7O1FBT1csT0FBRSxHQUFHLGFBQVdBLFFBQU0sRUFBSSxDQUFDOzs7O1FBWTNCLGFBQVEsR0FBRyxLQUFLLENBQUM7S0FnQjNCOzs7O0lBUkMsc0NBQXFCOzs7SUFBckI7Ozs7O1FBS0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO0tBQzFDOztnQkFsQ0YsU0FBUyxTQUFDLEVBQUMsUUFBUSxFQUFFLFNBQVMsRUFBQzs7O3FCQU83QixLQUFLO3dCQU9MLEtBQUs7MkJBS0wsS0FBSzs0QkFLTCxlQUFlLFNBQUMsV0FBVyxFQUFFLEVBQUMsV0FBVyxFQUFFLEtBQUssRUFBQzs4QkFDakQsZUFBZSxTQUFDLGFBQWEsRUFBRSxFQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUM7O0lBVXRELGFBQUM7Q0FuQ0QsSUFtQ0M7Ozs7QUF5QkQ7SUE2RUUsbUJBQVksTUFBdUI7Ozs7UUFuQzFCLGtCQUFhLEdBQUcsSUFBSSxDQUFDOzs7Ozs7UUFpQ3BCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUcxRCxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztLQUN2QztJQWxDRCxzQkFDSSw4QkFBTzs7Ozs7Ozs7O1FBRFgsVUFDWSxTQUE0RDtZQUN0RSxJQUFJLFNBQVMsS0FBSyxNQUFNLElBQUksU0FBUyxLQUFLLFdBQVcsRUFBRTtnQkFDckQsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFPLFNBQVcsQ0FBQzthQUN4QztpQkFBTTtnQkFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLHFCQUFtQixTQUFXLENBQUM7YUFDcEQ7U0FDRjs7O09BQUE7Ozs7Ozs7Ozs7Ozs7OztJQW1DRCwwQkFBTTs7Ozs7Ozs7SUFBTixVQUFPLEtBQWE7O1lBQ2QsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQ3pDLElBQUksV0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFdBQVcsQ0FBQyxFQUFFLEVBQUU7O2dCQUN4RSxrQkFBZ0IsR0FBRyxLQUFLO1lBRTVCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUNmLEVBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsY0FBYyxFQUFFLGNBQVEsa0JBQWdCLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUM7WUFFM0csSUFBSSxDQUFDLGtCQUFnQixFQUFFO2dCQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxFQUFFLENBQUM7YUFDaEM7U0FDRjtLQUNGOzs7O0lBRUQseUNBQXFCOzs7SUFBckI7OztZQUVNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDL0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLEdBQUcsU0FBUyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDM0Y7Ozs7O0lBRU8sK0JBQVc7Ozs7SUFBbkIsVUFBb0IsRUFBVTs7WUFDeEIsVUFBVSxHQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUEsQ0FBQztRQUNqRSxPQUFPLFVBQVUsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztLQUNqRDs7Z0JBaEhGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRSxxdUNBc0JUO2lCQUNGOzs7O2dCQS9HTyxlQUFlOzs7dUJBbUhwQixlQUFlLFNBQUMsTUFBTTsyQkFPdEIsS0FBSztnQ0FLTCxLQUFLOzBCQUtMLEtBQUs7OEJBWUwsS0FBSzt1QkFTTCxLQUFLOzRCQU9MLE1BQU07O0lBc0NULGdCQUFDO0NBakhEOzs7Ozs7QUNoR0E7SUFRTSxxQkFBcUIsR0FBRyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQztBQUU3RTtJQUFBO0tBU0M7Ozs7Ozs7Ozs7Ozs7O0lBRFEsdUJBQU87Ozs7Ozs7SUFBZCxjQUF3QyxPQUFPLEVBQUMsUUFBUSxFQUFFLGVBQWUsRUFBQyxDQUFDLEVBQUU7O2dCQVI5RSxRQUFRLFNBQUMsRUFBQyxZQUFZLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFDOztJQVN4RyxzQkFBQztDQVREOzs7Ozs7QUNWQSxBQUVBO0lBS0UsaUJBQVksSUFBYSxFQUFFLE1BQWUsRUFBRSxNQUFlO1FBQ3pELElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ2pDOzs7OztJQUVELDRCQUFVOzs7O0lBQVYsVUFBVyxJQUFRO1FBQVIscUJBQUEsRUFBQSxRQUFRO1FBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUM7S0FBRTs7Ozs7SUFFcEYsNEJBQVU7Ozs7SUFBVixVQUFXLElBQVk7UUFDckIsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1NBQ2hEO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztTQUNqQjtLQUNGOzs7OztJQUVELDhCQUFZOzs7O0lBQVosVUFBYSxJQUFRO1FBQVIscUJBQUEsRUFBQSxRQUFRO1FBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUM7S0FBRTs7Ozs7SUFFNUYsOEJBQVk7Ozs7SUFBWixVQUFhLE1BQWM7UUFDekIsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsTUFBTSxHQUFHLEVBQUUsR0FBRyxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQy9ELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMxQzthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7U0FDbkI7S0FDRjs7Ozs7SUFFRCw4QkFBWTs7OztJQUFaLFVBQWEsSUFBUTtRQUFSLHFCQUFBLEVBQUEsUUFBUTtRQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDO0tBQUU7Ozs7O0lBRTVGLDhCQUFZOzs7O0lBQVosVUFBYSxNQUFjO1FBQ3pCLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsTUFBTSxHQUFHLEVBQUUsR0FBRyxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM1QzthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7U0FDbkI7S0FDRjs7Ozs7SUFFRCx5QkFBTzs7OztJQUFQLFVBQVEsU0FBZ0I7UUFBaEIsMEJBQUEsRUFBQSxnQkFBZ0I7UUFDdEIsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDbkc7Ozs7SUFFRCwwQkFBUTs7O0lBQVIsY0FBYSxPQUFPLENBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLFdBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUUsQ0FBQyxFQUFFO0lBQ3BGLGNBQUM7Q0FBQSxJQUFBOzs7Ozs7QUNsREQ7Ozs7OztBQVFBO0lBQUE7UUFFRSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLFNBQUksR0FBaUMsUUFBUSxDQUFDO0tBQy9DOztnQkFYQSxVQUFVLFNBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzs7OEJBUmhDO0NBUUE7Ozs7Ozs7OztBQ0pBLFNBQWdCLG1DQUFtQztJQUNqRCxPQUFPLElBQUksb0JBQW9CLEVBQUUsQ0FBQztDQUNuQzs7Ozs7Ozs7Ozs7Ozs7OztBQWVEO0lBQUE7S0FXQzs7Z0JBWEEsVUFBVSxTQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsbUNBQW1DLEVBQUM7Ozt5QkFyQmpGO0NBcUJBLElBV0M7O0lBR3lDQyx3Q0FBNkI7SUFEdkU7O0tBbUJDOzs7Ozs7Ozs7SUFkQyx3Q0FBUzs7Ozs7SUFBVCxVQUFVLElBQW1CO1FBQzNCLE9BQU8sQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMxRCxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxFQUFDO1lBQzNGLElBQUksQ0FBQztLQUNWOzs7Ozs7Ozs7SUFLRCxzQ0FBTzs7Ozs7SUFBUCxVQUFRLElBQW1CO1FBQ3pCLE9BQU8sQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMxRCxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxFQUFDO1lBQzNGLElBQUksQ0FBQztLQUNWOztnQkFsQkYsVUFBVTs7SUFtQlgsMkJBQUM7Q0FBQSxDQWxCeUMsY0FBYzs7Ozs7O0FDbkN4RDtJQWdCTSw2QkFBNkIsR0FBRztJQUNwQyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBTSxPQUFBLGFBQWEsR0FBQSxDQUFDO0lBQzVDLEtBQUssRUFBRSxJQUFJO0NBQ1o7Ozs7QUFLRDtJQW1KRSx1QkFDcUIsT0FBNEIsRUFBVSxlQUFvQyxFQUNuRixHQUFzQjtRQURiLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQVUsb0JBQWUsR0FBZixlQUFlLENBQXFCO1FBQ25GLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBWWxDLGFBQVEsR0FBRyxVQUFDLENBQU0sS0FBTyxDQUFDO1FBQzFCLGNBQVMsR0FBRyxlQUFRLENBQUM7UUFabkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUM3QyxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7S0FDMUI7SUFqREQsc0JBQ0ksbUNBQVE7Ozs7UUFJWixjQUF5QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTs7Ozs7Ozs7O1FBTGpELFVBQ2EsSUFBWTtZQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7U0FDakU7OztPQUFBO0lBT0Qsc0JBQ0kscUNBQVU7Ozs7UUFJZCxjQUEyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTs7Ozs7Ozs7O1FBTHJELFVBQ2UsSUFBWTtZQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7U0FDckU7OztPQUFBO0lBT0Qsc0JBQ0kscUNBQVU7Ozs7UUFJZCxjQUEyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTs7Ozs7Ozs7O1FBTHJELFVBQ2UsSUFBWTtZQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7U0FDckU7OztPQUFBOzs7OztJQStCRCxrQ0FBVTs7OztJQUFWLFVBQVcsS0FBSzs7WUFDUixXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ3pELElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxHQUFHLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNqSCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxDQUFDLFdBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtZQUNwRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDdkI7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0tBQ3pCOzs7OztJQUVELHdDQUFnQjs7OztJQUFoQixVQUFpQixFQUF1QixJQUFVLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUU7Ozs7O0lBRXZFLHlDQUFpQjs7OztJQUFqQixVQUFrQixFQUFhLElBQVUsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsRUFBRTs7Ozs7SUFFL0Qsd0NBQWdCOzs7O0lBQWhCLFVBQWlCLFVBQW1CLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsRUFBRTs7Ozs7SUFFckUsa0NBQVU7Ozs7SUFBVixVQUFXLElBQVk7UUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7S0FDN0I7Ozs7O0lBRUQsb0NBQVk7Ozs7SUFBWixVQUFhLElBQVk7UUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7S0FDN0I7Ozs7O0lBRUQsb0NBQVk7Ozs7SUFBWixVQUFhLElBQVk7UUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7S0FDN0I7Ozs7O0lBRUQsa0NBQVU7Ozs7SUFBVixVQUFXLE1BQWM7O1lBQ2pCLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFOztZQUM1QixXQUFXLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUNyQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLFdBQVcsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksV0FBVyxLQUFLLEVBQUUsQ0FBQyxFQUFFO1lBQzlFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsQ0FBQztTQUN6QzthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDcEM7UUFDRCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztLQUM3Qjs7Ozs7SUFFRCxvQ0FBWTs7OztJQUFaLFVBQWEsTUFBYztRQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztLQUM3Qjs7Ozs7SUFFRCxvQ0FBWTs7OztJQUFaLFVBQWEsTUFBYztRQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztLQUM3Qjs7OztJQUVELHNDQUFjOzs7SUFBZDtRQUNFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3JCO0tBQ0Y7Ozs7O0lBRUQsa0NBQVU7Ozs7SUFBVixVQUFXLEtBQWE7UUFDdEIsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixPQUFPLFNBQVMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2FBQ3REO2lCQUFNO2dCQUNMLE9BQU8sU0FBUyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQzthQUM5QjtTQUNGO2FBQU07WUFDTCxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN2QjtLQUNGOzs7OztJQUVELG9DQUFZOzs7O0lBQVosVUFBYSxLQUFhLElBQUksT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtJQUV4RCxzQkFBSSxzQ0FBVzs7OztRQUFmLGNBQTZCLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsRUFBRTs7O09BQUE7SUFFNUQsc0JBQUksc0NBQVc7Ozs7UUFBZixjQUE2QixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLEVBQUU7OztPQUFBOzs7OztJQUU1RCxtQ0FBVzs7OztJQUFYLFVBQVksT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNyRixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2xDO0tBQ0Y7Ozs7O0lBRU8sNENBQW9COzs7O0lBQTVCLFVBQTZCLE9BQWM7UUFBZCx3QkFBQSxFQUFBLGNBQWM7UUFDekMsSUFBSSxPQUFPLEVBQUU7WUFDWCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDbEI7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsUUFBUSxDQUNULElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEg7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNuRDtLQUNGOztnQkFoUUYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUVyQyxRQUFRLEVBQUUsdXBMQTRFVDtvQkFDRCxTQUFTLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQzs7aUJBQzNDOzs7O2dCQTlGTyxtQkFBbUI7Z0JBQ25CLGNBQWM7Z0JBYnBCLGlCQUFpQjs7OzJCQXVIaEIsS0FBSzsyQkFLTCxLQUFLOzBCQUtMLEtBQUs7MkJBS0wsS0FBSzs2QkFVTCxLQUFLOzZCQVVMLEtBQUs7aUNBVUwsS0FBSzt1QkFLTCxLQUFLOztJQWdIUixvQkFBQztDQWpRRDs7Ozs7O0FDekJBO0lBVUE7S0FTQzs7Ozs7Ozs7Ozs7Ozs7SUFEUSwyQkFBTzs7Ozs7OztJQUFkLGNBQXdDLE9BQU8sRUFBQyxRQUFRLEVBQUUsbUJBQW1CLEVBQUMsQ0FBQyxFQUFFOztnQkFSbEYsUUFBUSxTQUFDLEVBQUMsWUFBWSxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUM7O0lBUzVGLDBCQUFDO0NBVEQ7Ozs7OztBQ1ZBOzs7Ozs7QUFTQTtJQUFBO1FBRUUsY0FBUyxHQUFtQyxJQUFJLENBQUM7UUFDakQsY0FBUyxHQUFtQixNQUFNLENBQUM7UUFDbkMsYUFBUSxHQUFHLGFBQWEsQ0FBQztRQUV6QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUV2QixjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsZUFBVSxHQUFHLENBQUMsQ0FBQztLQUNoQjs7Z0JBVkEsVUFBVSxTQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzs7OzJCQVRoQztDQVNBOzs7Ozs7QUNUQTtJQStCSUQsUUFBTSxHQUFHLENBQUM7QUFFZDtJQUFBO0tBV0M7O2dCQVhBLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLElBQUksRUFBRSxFQUFDLFNBQVMsRUFBRSwyREFBMkQsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUM7b0JBQy9HLFFBQVEsRUFBRSx5RkFBcUY7O2lCQUVoRzs7O3FCQUVFLEtBQUs7K0JBQ0wsS0FBSzs7SUFDUix1QkFBQztDQVhELElBV0M7Ozs7QUFLRDtJQXlGRSxvQkFDWSxXQUFvQyxFQUFVLFNBQW9CLEVBQUUsUUFBa0IsRUFDOUYsd0JBQWtELEVBQUUsZ0JBQWtDLEVBQUUsTUFBd0IsRUFDeEcsT0FBZSxFQUE0QixTQUFjLEVBQVUsZUFBa0MsRUFDckcsZUFBK0I7UUFKM0MsaUJBdUJDO1FBdEJXLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFFbEUsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUE0QixjQUFTLEdBQVQsU0FBUyxDQUFLO1FBQVUsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBQ3JHLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjs7OztRQWpCakMsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7Ozs7UUFJM0IsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHOUIsd0JBQW1CLEdBQUcsaUJBQWVBLFFBQU0sRUFBSSxDQUFDO1FBV3RELElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNsQyxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7UUFDNUMsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLFlBQVksQ0FDakMsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSx3QkFBd0IsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUV4RyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7WUFDbEQsSUFBSSxLQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNuQixnQkFBZ0IsQ0FDWixLQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxLQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsS0FBSSxDQUFDLFNBQVMsRUFDdEYsS0FBSSxDQUFDLFNBQVMsS0FBSyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7YUFDOUM7U0FDRixDQUFDLENBQUM7S0FDSjtJQU9ELHNCQUNJLGtDQUFVOzs7O1FBT2QsY0FBbUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7Ozs7Ozs7Ozs7Ozs7UUFSN0MsVUFDZSxLQUFnQztZQUM3QyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNkO1NBQ0Y7OztPQUFBOzs7Ozs7Ozs7Ozs7Ozs7SUFVRCx5QkFBSTs7Ozs7Ozs7SUFBSixVQUFLLE9BQWE7UUFBbEIsaUJBOEJDO1FBN0JDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ2hFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUMxRCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBRXZELElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLGtCQUFrQixFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBRTFHLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxNQUFNLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDbEc7Ozs7WUFLRCxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDOzs7Ozs7WUFPbEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUVqRCxZQUFZLENBQ1IsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsY0FBTSxPQUFBLEtBQUksQ0FBQyxLQUFLLEVBQUUsR0FBQSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQzdFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUU5QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ25CO0tBQ0Y7Ozs7Ozs7Ozs7OztJQU9ELDBCQUFLOzs7Ozs7SUFBTDtRQUNFLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztZQUNuRixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQztLQUNGOzs7Ozs7Ozs7Ozs7SUFPRCwyQkFBTTs7Ozs7O0lBQU47UUFDRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2Q7YUFBTTtZQUNMLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNiO0tBQ0Y7Ozs7Ozs7O0lBS0QsMkJBQU07Ozs7SUFBTixjQUFvQixPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLEVBQUU7Ozs7SUFFckQsNkJBQVE7OztJQUFSO1FBQ0UsSUFBSSxDQUFDLHNCQUFzQixHQUFHLGdCQUFnQixDQUMxQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQzNHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUMvRDs7OztJQUVELGdDQUFXOzs7SUFBWDtRQUNFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzs7O1FBR2IsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDL0IsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDL0I7UUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7S0FDdEM7O2dCQXRORixTQUFTLFNBQUMsRUFBQyxRQUFRLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUM7Ozs7Z0JBcEMzRCxVQUFVO2dCQUZWLFNBQVM7Z0JBRFQsUUFBUTtnQkFNUix3QkFBd0I7Z0JBRHhCLGdCQUFnQjtnQkFjVixnQkFBZ0I7Z0JBWnRCLE1BQU07Z0RBNEh3QixNQUFNLFNBQUMsUUFBUTtnQkExSDdDLGlCQUFpQjtnQkFDakIsY0FBYzs7OzRCQTBDYixLQUFLOzRCQWVMLEtBQUs7MkJBUUwsS0FBSzs0QkFPTCxLQUFLO2lDQU9MLEtBQUs7K0JBT0wsS0FBSzs0QkFPTCxLQUFLOzZCQU9MLEtBQUs7d0JBS0wsTUFBTTt5QkFJTixNQUFNOzZCQXVDTixLQUFLOztJQWdHUixpQkFBQztDQXZORDs7Ozs7O0FDakRBO0lBUUE7S0FRQzs7Ozs7Ozs7Ozs7O0lBRFEsd0JBQU87Ozs7OztJQUFkLGNBQXdDLE9BQU8sRUFBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUMsQ0FBQyxFQUFFOztnQkFQL0UsUUFBUSxTQUFDLEVBQUMsWUFBWSxFQUFFLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBQzs7SUFRcEgsdUJBQUM7Q0FSRDs7Ozs7O0FDUkE7Ozs7Ozs7O0FBV0E7SUFBQTs7OztRQWVXLG1CQUFjLEdBQUcsZUFBZSxDQUFDO0tBaUMzQzs7Ozs7SUFqQkMsa0NBQVc7Ozs7SUFBWCxVQUFZLE9BQXNCOztZQUMxQixTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDdkMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN6QixPQUFPO1NBQ1I7O1lBQ0csV0FBVyxHQUFhLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFBLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFOUcsV0FBVyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLEdBQUEsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN6QixPQUFPO1NBQ1I7O1lBRUssUUFBUSxHQUFHLE1BQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFHO1FBQ3ZFLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUMzRDs7Z0JBL0NGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxRQUFRLEVBQUUsb0VBQWdFO3dCQUN0RSxzSEFBa0g7d0JBQ2xILGdCQUFnQjs7aUJBRXJCOzs7aUNBT0UsS0FBSzt5QkFRTCxLQUFLO3VCQU1MLEtBQUs7O0lBbUJSLG1CQUFDO0NBaEREOzs7Ozs7QUNYQTtJQW1CQTtRQXFCRSxjQUFTLEdBQUcsQ0FBQyxDQUFDOzs7O1FBV0wsZUFBVSxHQUFHLElBQUksQ0FBQzs7Ozs7UUFnQmxCLGNBQVMsR0FBRyxRQUFRLENBQUM7Ozs7UUFVWixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFM0Isc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQTJDaEU7Ozs7SUF6Q0Msc0NBQVM7OztJQUFULGNBQWMsT0FBTyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTs7OztJQUVuRixzQ0FBUzs7O0lBQVQsY0FBYyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUU7Ozs7O0lBRXBELHVDQUFVOzs7O0lBQVYsVUFBVyxTQUFpQjtRQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7S0FDdkI7Ozs7SUFFRCxpQ0FBSTs7O0lBQUo7UUFDRSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzlDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3BGO2FBQU07WUFDTCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDbEI7UUFDRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7S0FDdkI7Ozs7SUFFRCxpQ0FBSTs7O0lBQUo7UUFDRSxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQzFDO2FBQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLENBQUMsRUFBRTtZQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2pFO2FBQU07WUFDTCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDbEI7UUFDRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7S0FDdkI7Ozs7SUFFRCx3Q0FBVzs7O0lBQVg7UUFDRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztLQUN2Qjs7Ozs7SUFFRCxtQ0FBTTs7OztJQUFOLFVBQU8sSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7Ozs7SUFFN0MscUNBQVE7OztJQUFSLGNBQWEsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUU7Ozs7SUFFMUIsMkNBQWM7OztJQUF0QjtRQUNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQztLQUMvRjs7Z0JBdEdGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixJQUFJLEVBQUUsRUFBQyxhQUFhLEVBQUUseUJBQXlCLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztvQkFDaEgsUUFBUSxFQUFFLGd0QkFjVDtpQkFDRjs7O3FCQVFFLEtBQUs7NkJBS0wsS0FBSzswQkFLTCxLQUFLO3VCQUtMLEtBQUs7NEJBTUwsS0FBSztpQ0FLTCxLQUFLOzhCQUtMLE1BQU0sU0FBQyxRQUFRO29DQUVmLE1BQU0sU0FBQyxjQUFjOztJQTJDeEIseUJBQUM7Q0F2R0Q7Ozs7OztBQ25CQTtBQVFBLElBQWEsZUFBZSxHQUFHLElBQUksY0FBYyxDQUM3QyxzQkFBc0IsRUFBRSxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFDLENBQUM7Ozs7QUFDbkYsU0FBZ0IsdUJBQXVCO0lBQ3JDLE9BQU8sR0FBRyxDQUFDO0NBQ1o7Ozs7OztBQUdELFNBQVMsY0FBYyxDQUFDLFFBQWEsRUFBRSxVQUFrQjtJQUFsQiwyQkFBQSxFQUFBLGtCQUFrQjs7UUFDbkQsT0FBTyxzQkFBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsRUFBZTtJQUVyRSxJQUFJLE9BQU8sSUFBSSxJQUFJLElBQUksVUFBVSxFQUFFO1FBQ2pDLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTVDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWpDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3BDO0lBRUQsT0FBTyxPQUFPLENBQUM7Q0FDaEI7QUFJRDtJQUVFLGNBQXNDLFNBQWMsRUFBbUMsTUFBVztRQUE1RCxjQUFTLEdBQVQsU0FBUyxDQUFLO1FBQW1DLFdBQU0sR0FBTixNQUFNLENBQUs7S0FBSTs7OztJQUV0RywwQkFBVzs7O0lBQVg7O1lBQ1EsT0FBTyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzlDLElBQUksT0FBTyxFQUFFO1lBQ1gsT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDNUM7S0FDRjs7Ozs7SUFFRCxrQkFBRzs7OztJQUFILFVBQUksT0FBZTs7WUFDWCxPQUFPLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDOztZQUM5Q1MsUUFBSyxHQUFHLElBQUksQ0FBQyxNQUFNO1FBRXpCLE9BQU8sQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDOztZQUNuQixPQUFPLEdBQUcsY0FBTSxPQUFBLE9BQU8sQ0FBQyxXQUFXLEdBQUcsT0FBTyxHQUFBO1FBQ25ELElBQUlBLFFBQUssS0FBSyxJQUFJLEVBQUU7WUFDbEIsT0FBTyxFQUFFLENBQUM7U0FDWDthQUFNO1lBQ0wsVUFBVSxDQUFDLE9BQU8sRUFBRUEsUUFBSyxDQUFDLENBQUM7U0FDNUI7S0FDRjs7Z0JBdEJGLFVBQVUsU0FBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7Ozs7Z0RBRWpCLE1BQU0sU0FBQyxRQUFRO2dEQUEyQixNQUFNLFNBQUMsZUFBZTs7O2VBckMvRTtDQW1DQTs7Ozs7O0FDbkNBOzs7Ozs7QUFTQTtJQUFBO1FBR0UsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsY0FBUyxHQUFtQixDQUFDLGFBQWEsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0tBQ3RGOztnQkFQQSxVQUFVLFNBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzs7NkJBVGhDO0NBU0E7Ozs7OztBQ1RBO0lBb0NNLDRCQUE0QixHQUFHO0lBQ25DLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxjQUFNLE9BQUEsWUFBWSxHQUFBLENBQUM7SUFDM0MsS0FBSyxFQUFFLElBQUk7Q0FDWjs7SUFpQkcsWUFBWSxHQUFHLENBQUM7Ozs7QUFLcEI7SUFnSUUsc0JBQ1ksV0FBeUMsRUFBVSxpQkFBbUMsRUFDdEYsU0FBb0IsRUFBVSxTQUFtQixFQUFFLHdCQUFrRCxFQUM3RyxNQUEwQixFQUFFLE1BQWMsRUFBVSxLQUFXLEVBQTRCLFNBQWMsRUFDakcsT0FBZSxFQUFVLGVBQWtDLEVBQVUsZUFBK0I7UUFKaEgsaUJBMEJDO1FBekJXLGdCQUFXLEdBQVgsV0FBVyxDQUE4QjtRQUFVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDdEYsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUFVLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDTCxVQUFLLEdBQUwsS0FBSyxDQUFNO1FBQTRCLGNBQVMsR0FBVCxTQUFTLENBQUs7UUFDakcsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUFVLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUFVLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQTdHeEcsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7Ozs7Ozs7O1FBY3hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDOzs7Ozs7Ozs7Ozs7OztRQTRFckIsY0FBUyxHQUFtQixhQUFhLENBQUM7Ozs7OztRQU96QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQStCLENBQUM7UUFHdkUsWUFBTyxHQUFHLG1CQUFpQixZQUFZLEVBQUksQ0FBQztRQUVwQyxlQUFVLEdBQUcsZUFBUSxDQUFDO1FBQ3RCLGNBQVMsR0FBRyxVQUFDLENBQU0sS0FBTyxDQUFDO1FBT2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFFbEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQVEsV0FBVyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUM7YUFDL0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFBLE1BQU0sSUFBSSxPQUFBLG9CQUFDLE1BQU0sQ0FBQyxNQUFNLElBQXNCLEtBQUssR0FBQSxDQUFDLENBQUMsQ0FBQztRQUV6RixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLFlBQVksQ0FDakMsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSx3QkFBd0IsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUU1RyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7WUFDakQsSUFBSSxLQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7Z0JBQ3RCLGdCQUFnQixDQUNaLEtBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLEtBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxLQUFJLENBQUMsU0FBUyxFQUN0RixLQUFJLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUFDO2FBQ2hDO1NBQ0YsQ0FBQyxDQUFDO0tBQ0o7Ozs7SUFFRCwrQkFBUTs7O0lBQVI7UUFBQSxpQkFlQzs7WUFkTyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQUEsS0FBSztZQUNwRCxLQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ3RELElBQUksS0FBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakIsS0FBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN2QjtTQUNGLENBQUMsQ0FBQzs7WUFDRyxRQUFRLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDOztZQUMvQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUMxQyxJQUFJLENBQUMsS0FBSSxDQUFDLFFBQVEsRUFBRTtnQkFDbEIsS0FBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUMzQjtTQUNGLENBQUMsQ0FBQzs7WUFDRyxVQUFVLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBTSxPQUFBLGlCQUFpQixHQUFBLENBQUMsQ0FBQztRQUN0RixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUM3RDs7OztJQUVELGtDQUFXOzs7SUFBWDtRQUNFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7S0FDdEM7Ozs7O0lBRUQsdUNBQWdCOzs7O0lBQWhCLFVBQWlCLEVBQXVCLElBQVUsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsRUFBRTs7Ozs7SUFFeEUsd0NBQWlCOzs7O0lBQWpCLFVBQWtCLEVBQWEsSUFBVSxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxFQUFFOzs7OztJQUVoRSxpQ0FBVTs7OztJQUFWLFVBQVcsS0FBSztRQUNkLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN2RCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztTQUNoQztLQUNGOzs7OztJQUVELHVDQUFnQjs7OztJQUFoQixVQUFpQixVQUFtQjtRQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDcEY7Ozs7Ozs7O0lBS0QsbUNBQVk7Ozs7SUFBWjtRQUNFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssSUFBSSxFQUFFO2dCQUNwRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDL0M7WUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JDO0tBQ0Y7Ozs7Ozs7O0lBS0Qsa0NBQVc7Ozs7SUFBWCxjQUFnQixPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLEVBQUU7Ozs7SUFFakQsaUNBQVU7OztJQUFWO1FBQ0UsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7S0FDbkI7Ozs7O0lBRUQsb0NBQWE7Ozs7SUFBYixVQUFjLEtBQW9CO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDdkIsT0FBTztTQUNSOztRQUdELFFBQVEsS0FBSyxDQUFDLEtBQUs7WUFDakIsS0FBSyxHQUFHLENBQUMsU0FBUztnQkFDaEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNqQixNQUFNO1lBQ1IsS0FBSyxHQUFHLENBQUMsT0FBTztnQkFDZCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pCLE1BQU07WUFDUixLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDZixLQUFLLEdBQUcsQ0FBQyxHQUFHOztvQkFDSixNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFO2dCQUNuRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDckIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQzVCO2dCQUNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbkIsTUFBTTtTQUNUO0tBQ0Y7Ozs7SUFFTyxpQ0FBVTs7O0lBQWxCO1FBQUEsaUJBa0JDO1FBakJDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztZQUM5RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxVQUFDLE1BQVcsSUFBSyxPQUFBLEtBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsR0FBQSxDQUFDLENBQUM7WUFDdEcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFVBQUMsUUFBZ0IsSUFBSyxPQUFBLEtBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLEdBQUEsQ0FBQyxDQUFDO1lBRTdHLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxNQUFNLEVBQUU7Z0JBQzdCLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDbkc7WUFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBRXBDLFlBQVksQ0FDUixJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsWUFBWSxFQUFFLEdBQUEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUNqRixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7U0FDL0U7S0FDRjs7OztJQUVPLGtDQUFXOzs7SUFBbkI7UUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztLQUNuQzs7Ozs7SUFFTyxvQ0FBYTs7OztJQUFyQixVQUFzQixNQUFXOztZQUMzQixnQkFBZ0IsR0FBRyxLQUFLO1FBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsY0FBUSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQztRQUN6RixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXRDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDeEI7S0FDRjs7Ozs7SUFFTyw4Q0FBdUI7Ozs7SUFBL0IsVUFBZ0MsTUFBVztRQUN6QyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUNwQjs7OztJQUVPLGdDQUFTOzs7SUFBakI7UUFDRSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksRUFBRTs7Z0JBQ3JGLGtCQUFrQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUU7O2dCQUN6RCxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBRW5GLElBQUksa0JBQWtCLEtBQUssWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO2dCQUM5RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ25HLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUMsS0FBSyxDQUNyRCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7YUFDM0Y7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3JDO1NBQ0Y7S0FDRjs7Ozs7SUFFTywwQ0FBbUI7Ozs7SUFBM0IsVUFBNEIsSUFBUztRQUNuQyxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN6Rjs7Ozs7SUFFTyx1Q0FBZ0I7Ozs7SUFBeEIsVUFBeUIsS0FBYTtRQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7S0FDdEY7Ozs7O0lBRU8sNENBQXFCOzs7O0lBQTdCLFVBQThCLFVBQTZCO1FBQTNELGlCQTZCQztRQTVCQyxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBQyxPQUFPO1lBQ2xDLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3BDLEtBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNwQjtpQkFBTTtnQkFDTCxLQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2xCLEtBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxLQUFJLENBQUMsVUFBVSxDQUFDO2dCQUN0RCxLQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO2dCQUMzQyxLQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsS0FBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO2dCQUNyRSxJQUFJLEtBQUksQ0FBQyxlQUFlLEVBQUU7b0JBQ3hCLEtBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxLQUFJLENBQUMsZUFBZSxDQUFDO2lCQUMzRDtnQkFDRCxJQUFJLEtBQUksQ0FBQyxjQUFjLEVBQUU7b0JBQ3ZCLEtBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLGNBQWMsR0FBRyxLQUFJLENBQUMsY0FBYyxDQUFDO2lCQUMvRDtnQkFDRCxLQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQzs7OztnQkFLdkMsS0FBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFFbEQsS0FBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2FBQ2xCOzs7Z0JBR0ssS0FBSyxHQUFHLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDMUMsS0FBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsR0FBRyxzQkFBc0IsR0FBTSxLQUFLLGdCQUFVLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsZ0JBQVksQ0FBQyxDQUFDO1NBQzdHLENBQUMsQ0FBQztLQUNKOzs7O0lBRU8sZ0RBQXlCOzs7SUFBakM7UUFDRSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0tBQzNCOztnQkE5VkYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFFBQVEsRUFBRSxjQUFjO29CQUN4QixJQUFJLEVBQUU7d0JBQ0osUUFBUSxFQUFFLGNBQWM7d0JBQ3hCLGNBQWMsRUFBRSxlQUFlO3dCQUMvQixXQUFXLEVBQUUsdUJBQXVCO3dCQUNwQyxnQkFBZ0IsRUFBRSxjQUFjO3dCQUNoQyxnQkFBZ0IsRUFBRSxLQUFLO3dCQUN2QixhQUFhLEVBQUUsS0FBSzt3QkFDcEIsTUFBTSxFQUFFLFVBQVU7d0JBQ2xCLGdCQUFnQixFQUFFLE9BQU87d0JBQ3pCLDBCQUEwQixFQUFFLDRCQUE0Qjt3QkFDeEQsOEJBQThCLEVBQUUsa0JBQWtCO3dCQUNsRCxrQkFBa0IsRUFBRSxnQ0FBZ0M7d0JBQ3BELHNCQUFzQixFQUFFLGVBQWU7cUJBQ3hDO29CQUNELFNBQVMsRUFBRSxDQUFDLDRCQUE0QixDQUFDO2lCQUMxQzs7OztnQkEzRUMsVUFBVTtnQkFZVixnQkFBZ0I7Z0JBRmhCLFNBQVM7Z0JBTlQsUUFBUTtnQkFQUix3QkFBd0I7Z0JBOEJsQixrQkFBa0I7Z0JBckJ4QixNQUFNO2dCQWNBLElBQUk7Z0RBd0s0RCxNQUFNLFNBQUMsUUFBUTtnQkF0THJGLE1BQU07Z0JBVk4saUJBQWlCO2dCQWlCakIsY0FBYzs7OytCQWlGYixLQUFLOzRCQU9MLEtBQUs7MkJBS0wsS0FBSzs2QkFLTCxLQUFLO2lDQVFMLEtBQUs7K0JBYUwsS0FBSztrQ0FTTCxLQUFLO2lDQVNMLEtBQUs7MkJBS0wsS0FBSzs0QkFlTCxLQUFLOzZCQU9MLE1BQU07O0lBdU9ULG1CQUFDO0NBL1ZEOzs7Ozs7QUM5REE7SUFZQTtLQWNDOzs7Ozs7Ozs7Ozs7OztJQURRLDBCQUFPOzs7Ozs7O0lBQWQsY0FBd0MsT0FBTyxFQUFDLFFBQVEsRUFBRSxrQkFBa0IsRUFBQyxDQUFDLEVBQUU7O2dCQWJqRixRQUFRLFNBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsQ0FBQztvQkFDOUQsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixlQUFlLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDdEM7O0lBU0QseUJBQUM7Q0FkRDs7Ozs7O0FDWkE7SUFvSE0sV0FBVyxHQUFHO0lBQ2xCLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUI7SUFDL0csaUJBQWlCLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLGVBQWU7SUFDL0csZUFBZSxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLGtCQUFrQjtDQUMzRTtBQUVEO0lBQUE7S0FTQzs7Ozs7Ozs7Ozs7Ozs7SUFEUSxpQkFBTzs7Ozs7OztJQUFkLGNBQXdDLE9BQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFDLENBQUMsRUFBRTs7Z0JBUnhFLFFBQVEsU0FBQyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBQzs7SUFTdEQsZ0JBQUM7Q0FURDs7Ozs7Ozs7OyJ9","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort:\n 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Observable , of as observableOf } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nconst ANALYTICS_URL = '/SiteApi/ScContent/Analytics';\r\nconst RORFAQ_URL = '/SiteApi/ScContent/RateOfReturnFAQs';\r\n\r\n\r\nconst PARAMS = new HttpParams({\r\n fromObject: {\r\n format: 'json',\r\n origin: '*'\r\n }\r\n});\r\n\r\nconst valuesPolyfill = function values(object) {\r\n return Object.keys(object).map(key => object[key]);\r\n}\r\n\r\nconst values = Object.values || valuesPolyfill\r\n\r\n@Injectable()\r\nexport class UtilityService {\r\n constructor(private http: HttpClient) { }\r\n\r\n\r\n\r\n analytics(currentPlan: string, pageTitle: string, participantWeb: string, sponserWeb: string, requestUrl: string, eventAction: string = \"\"): Observable {\r\n let postParameters = {\r\n CurrentPlan: currentPlan,\r\n PageTitle: pageTitle,\r\n ParticipantWeb: participantWeb,\r\n SponsorWeb: sponserWeb,\r\n RequestUrl: requestUrl,\r\n EventAction: eventAction\r\n };\r\n return this.http.post(ANALYTICS_URL, postParameters).pipe(map(response => {\r\n return response;\r\n }))\r\n }\r\n\r\n GetRateOfReturnFAQs() : Observable {\r\n return this.http.get(RORFAQ_URL).pipe(map(response => {\r\n return response;\r\n }))\r\n }\r\n}","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","/** PURE_IMPORTS_START _observable_empty,_observable_of,_observable_throwError PURE_IMPORTS_END */\nimport { empty } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nexport var NotificationKind;\n/*@__PURE__*/ (function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\nvar Notification = /*@__PURE__*/ (function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n Notification.prototype.observe = function (observer) {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n };\n Notification.prototype.do = function (next, error, complete) {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n };\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n if (nextOrObserver && typeof nextOrObserver.next === 'function') {\n return this.observe(nextOrObserver);\n }\n else {\n return this.do(nextOrObserver, error, complete);\n }\n };\n Notification.prototype.toObservable = function () {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return of(this.value);\n case 'E':\n return throwError(this.error);\n case 'C':\n return empty();\n }\n throw new Error('unexpected notification kind value');\n };\n Notification.createNext = function (value) {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n };\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n Notification.completeNotification = new Notification('C');\n Notification.undefinedValueNotification = new Notification('N', undefined);\n return Notification;\n}());\nexport { Notification };\n//# sourceMappingURL=Notification.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nvar MapOperator = /*@__PURE__*/ (function () {\n function MapOperator(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n MapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n };\n return MapOperator;\n}());\nexport { MapOperator };\nvar MapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MapSubscriber, _super);\n function MapSubscriber(destination, project, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.count = 0;\n _this.thisArg = thisArg || _this;\n return _this;\n }\n MapSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return MapSubscriber;\n}(Subscriber));\n//# sourceMappingURL=map.js.map\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort:\n 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","/** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport var empty = {\n closed: true,\n next: function (value) { },\n error: function (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n },\n complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map\n","/** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */\nimport { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nvar Observable = /*@__PURE__*/ (function () {\n function Observable(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var operator = this.operator;\n var sink = toSubscriber(observerOrNext, error, complete);\n if (operator) {\n sink.add(operator.call(sink, this.source));\n }\n else {\n sink.add(this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink));\n }\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n return sink;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n }\n else {\n console.warn(err);\n }\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscription;\n subscription = _this.subscribe(function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var source = this.source;\n return source && source.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n if (operations.length === 0) {\n return this;\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n return promiseCtor;\n}\n//# sourceMappingURL=Observable.js.map\n","/** PURE_IMPORTS_START _Subscriber,_symbol_rxSubscriber,_Observer PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nexport function toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n return new Subscriber(nextOrObserver, error, complete);\n}\n//# sourceMappingURL=toSubscriber.js.map\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort:\n 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays:\n 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@angular/core\");\nvar common_1 = require(\"@angular/common\");\nvar core_2 = require(\"@angular/core\");\nvar Header = /** @class */ (function () {\n function Header() {\n }\n Header = __decorate([\n core_2.Component({\n selector: 'p-header',\n template: ''\n })\n ], Header);\n return Header;\n}());\nexports.Header = Header;\nvar Footer = /** @class */ (function () {\n function Footer() {\n }\n Footer = __decorate([\n core_2.Component({\n selector: 'p-footer',\n template: ''\n })\n ], Footer);\n return Footer;\n}());\nexports.Footer = Footer;\nvar PrimeTemplate = /** @class */ (function () {\n function PrimeTemplate(template) {\n this.template = template;\n }\n PrimeTemplate.prototype.getType = function () {\n return this.name;\n };\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", String)\n ], PrimeTemplate.prototype, \"type\", void 0);\n __decorate([\n core_1.Input('pTemplate'),\n __metadata(\"design:type\", String)\n ], PrimeTemplate.prototype, \"name\", void 0);\n PrimeTemplate = __decorate([\n core_1.Directive({\n selector: '[pTemplate]',\n host: {}\n }),\n __metadata(\"design:paramtypes\", [core_1.TemplateRef])\n ], PrimeTemplate);\n return PrimeTemplate;\n}());\nexports.PrimeTemplate = PrimeTemplate;\n/* Deprecated */\nvar Column = /** @class */ (function () {\n function Column() {\n this.filterType = 'text';\n this.exportable = true;\n this.resizable = true;\n this.sortFunction = new core_1.EventEmitter();\n }\n Column.prototype.ngAfterContentInit = function () {\n var _this = this;\n this.templates.forEach(function (item) {\n switch (item.getType()) {\n case 'header':\n _this.headerTemplate = item.template;\n break;\n case 'body':\n _this.bodyTemplate = item.template;\n break;\n case 'footer':\n _this.footerTemplate = item.template;\n break;\n case 'filter':\n _this.filterTemplate = item.template;\n break;\n case 'editor':\n _this.editorTemplate = item.template;\n break;\n default:\n _this.bodyTemplate = item.template;\n break;\n }\n });\n };\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", String)\n ], Column.prototype, \"field\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", String)\n ], Column.prototype, \"colId\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", String)\n ], Column.prototype, \"sortField\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", String)\n ], Column.prototype, \"filterField\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", String)\n ], Column.prototype, \"header\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", String)\n ], Column.prototype, \"footer\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Object)\n ], Column.prototype, \"sortable\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Boolean)\n ], Column.prototype, \"editable\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Boolean)\n ], Column.prototype, \"filter\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", String)\n ], Column.prototype, \"filterMatchMode\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", String)\n ], Column.prototype, \"filterType\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Boolean)\n ], Column.prototype, \"excludeGlobalFilter\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Number)\n ], Column.prototype, \"rowspan\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Number)\n ], Column.prototype, \"colspan\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", String)\n ], Column.prototype, \"scope\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Object)\n ], Column.prototype, \"style\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", String)\n ], Column.prototype, \"styleClass\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Boolean)\n ], Column.prototype, \"exportable\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Object)\n ], Column.prototype, \"headerStyle\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", String)\n ], Column.prototype, \"headerStyleClass\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Object)\n ], Column.prototype, \"bodyStyle\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", String)\n ], Column.prototype, \"bodyStyleClass\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Object)\n ], Column.prototype, \"footerStyle\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", String)\n ], Column.prototype, \"footerStyleClass\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Boolean)\n ], Column.prototype, \"hidden\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Boolean)\n ], Column.prototype, \"expander\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", String)\n ], Column.prototype, \"selectionMode\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", String)\n ], Column.prototype, \"filterPlaceholder\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Number)\n ], Column.prototype, \"filterMaxlength\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Boolean)\n ], Column.prototype, \"frozen\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Boolean)\n ], Column.prototype, \"resizable\", void 0);\n __decorate([\n core_1.Output(),\n __metadata(\"design:type\", core_1.EventEmitter)\n ], Column.prototype, \"sortFunction\", void 0);\n __decorate([\n core_1.ContentChildren(PrimeTemplate),\n __metadata(\"design:type\", core_1.QueryList)\n ], Column.prototype, \"templates\", void 0);\n __decorate([\n core_1.ContentChild(core_1.TemplateRef),\n __metadata(\"design:type\", core_1.TemplateRef)\n ], Column.prototype, \"template\", void 0);\n Column = __decorate([\n core_2.Component({\n selector: 'p-column',\n template: ''\n })\n ], Column);\n return Column;\n}());\nexports.Column = Column;\n/* Deprecated */\nvar Row = /** @class */ (function () {\n function Row() {\n }\n __decorate([\n core_1.ContentChildren(Column),\n __metadata(\"design:type\", core_1.QueryList)\n ], Row.prototype, \"columns\", void 0);\n Row = __decorate([\n core_2.Component({\n selector: 'p-row',\n template: \"\"\n })\n ], Row);\n return Row;\n}());\nexports.Row = Row;\n/* Deprecated */\nvar HeaderColumnGroup = /** @class */ (function () {\n function HeaderColumnGroup() {\n }\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Boolean)\n ], HeaderColumnGroup.prototype, \"frozen\", void 0);\n __decorate([\n core_1.ContentChildren(Row),\n __metadata(\"design:type\", core_1.QueryList)\n ], HeaderColumnGroup.prototype, \"rows\", void 0);\n HeaderColumnGroup = __decorate([\n core_2.Component({\n selector: 'p-headerColumnGroup',\n template: \"\"\n })\n ], HeaderColumnGroup);\n return HeaderColumnGroup;\n}());\nexports.HeaderColumnGroup = HeaderColumnGroup;\n/* Deprecated */\nvar FooterColumnGroup = /** @class */ (function () {\n function FooterColumnGroup() {\n }\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Boolean)\n ], FooterColumnGroup.prototype, \"frozen\", void 0);\n __decorate([\n core_1.ContentChildren(Row),\n __metadata(\"design:type\", core_1.QueryList)\n ], FooterColumnGroup.prototype, \"rows\", void 0);\n FooterColumnGroup = __decorate([\n core_2.Component({\n selector: 'p-footerColumnGroup',\n template: \"\"\n })\n ], FooterColumnGroup);\n return FooterColumnGroup;\n}());\nexports.FooterColumnGroup = FooterColumnGroup;\nvar SharedModule = /** @class */ (function () {\n function SharedModule() {\n }\n SharedModule = __decorate([\n core_1.NgModule({\n imports: [common_1.CommonModule],\n exports: [Header, Footer, Column, PrimeTemplate, Row, HeaderColumnGroup, FooterColumnGroup],\n declarations: [Header, Footer, Column, PrimeTemplate, Row, HeaderColumnGroup, FooterColumnGroup]\n })\n ], SharedModule);\n return SharedModule;\n}());\nexports.SharedModule = SharedModule;\n//# sourceMappingURL=shared.js.map","/** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { from } from './from';\nimport { EMPTY } from './empty';\nexport function using(resourceFactory, observableFactory) {\n return new Observable(function (subscriber) {\n var resource;\n try {\n resource = resourceFactory();\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n var result;\n try {\n result = observableFactory(resource);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n var source = result ? from(result) : EMPTY;\n var subscription = source.subscribe(subscriber);\n return function () {\n subscription.unsubscribe();\n if (resource) {\n resource.unsubscribe();\n }\n };\n });\n}\n//# sourceMappingURL=using.js.map\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays:\n 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule, CurrencyPipe, DatePipe, DecimalPipe } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\n\r\n//pipes\r\nimport * as Pipes from './pipes';\r\nimport * as Services from './services';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n Pipes.TruncateCurrency,\r\n Pipes.NullableCurrency,\r\n Pipes.EscapeHtmlPipe,\r\n ],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule \r\n ],\r\n exports: [\r\n Pipes.TruncateCurrency,\r\n Pipes.NullableCurrency,\r\n Pipes.EscapeHtmlPipe,\r\n HttpClientModule \r\n ],\r\n providers: [\r\n //Services.ParticipantService,\r\n //Services.PlanService,\r\n //Services.ModalService,\r\n ],\r\n})\r\nexport class ProvidersModule {\r\n //for lazy loading\r\n static forRoot() {\r\n return {\r\n ngModule: ProvidersModule,\r\n providers: [ //services that you want to share across modules\r\n Pipes.TruncateCurrency,\r\n Pipes.NullableCurrency,\r\n Pipes.EscapeHtmlPipe,\r\n CurrencyPipe,\r\n DatePipe,\r\n DecimalPipe,\r\n Services.ParticipantService,\r\n Services.PlanService,\r\n Services.PlanInvestmentsService,\r\n //Services.MockPlanService,\r\n Services.SpreadsheetFileService,\r\n Services.ModalService,\r\n Services.UtilityService,\r\n Services.DatepickerService,\r\n ]\r\n }\r\n }\r\n}\r\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort:\n 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar ObjectUnsubscribedErrorImpl = /*@__PURE__*/ (function () {\n function ObjectUnsubscribedErrorImpl() {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n ObjectUnsubscribedErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return ObjectUnsubscribedErrorImpl;\n})();\nexport var ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl;\n//# sourceMappingURL=ObjectUnsubscribedError.js.map\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","/** PURE_IMPORTS_START tslib,_fromArray,_util_isArray,_Subscriber,_.._internal_symbol_iterator,_innerSubscribe PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { fromArray } from './fromArray';\nimport { isArray } from '../util/isArray';\nimport { Subscriber } from '../Subscriber';\nimport { iterator as Symbol_iterator } from '../../internal/symbol/iterator';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function zip() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var resultSelector = observables[observables.length - 1];\n if (typeof resultSelector === 'function') {\n observables.pop();\n }\n return fromArray(observables, undefined).lift(new ZipOperator(resultSelector));\n}\nvar ZipOperator = /*@__PURE__*/ (function () {\n function ZipOperator(resultSelector) {\n this.resultSelector = resultSelector;\n }\n ZipOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ZipSubscriber(subscriber, this.resultSelector));\n };\n return ZipOperator;\n}());\nexport { ZipOperator };\nvar ZipSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ZipSubscriber, _super);\n function ZipSubscriber(destination, resultSelector, values) {\n if (values === void 0) {\n values = Object.create(null);\n }\n var _this = _super.call(this, destination) || this;\n _this.resultSelector = resultSelector;\n _this.iterators = [];\n _this.active = 0;\n _this.resultSelector = (typeof resultSelector === 'function') ? resultSelector : undefined;\n return _this;\n }\n ZipSubscriber.prototype._next = function (value) {\n var iterators = this.iterators;\n if (isArray(value)) {\n iterators.push(new StaticArrayIterator(value));\n }\n else if (typeof value[Symbol_iterator] === 'function') {\n iterators.push(new StaticIterator(value[Symbol_iterator]()));\n }\n else {\n iterators.push(new ZipBufferIterator(this.destination, this, value));\n }\n };\n ZipSubscriber.prototype._complete = function () {\n var iterators = this.iterators;\n var len = iterators.length;\n this.unsubscribe();\n if (len === 0) {\n this.destination.complete();\n return;\n }\n this.active = len;\n for (var i = 0; i < len; i++) {\n var iterator = iterators[i];\n if (iterator.stillUnsubscribed) {\n var destination = this.destination;\n destination.add(iterator.subscribe());\n }\n else {\n this.active--;\n }\n }\n };\n ZipSubscriber.prototype.notifyInactive = function () {\n this.active--;\n if (this.active === 0) {\n this.destination.complete();\n }\n };\n ZipSubscriber.prototype.checkIterators = function () {\n var iterators = this.iterators;\n var len = iterators.length;\n var destination = this.destination;\n for (var i = 0; i < len; i++) {\n var iterator = iterators[i];\n if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) {\n return;\n }\n }\n var shouldComplete = false;\n var args = [];\n for (var i = 0; i < len; i++) {\n var iterator = iterators[i];\n var result = iterator.next();\n if (iterator.hasCompleted()) {\n shouldComplete = true;\n }\n if (result.done) {\n destination.complete();\n return;\n }\n args.push(result.value);\n }\n if (this.resultSelector) {\n this._tryresultSelector(args);\n }\n else {\n destination.next(args);\n }\n if (shouldComplete) {\n destination.complete();\n }\n };\n ZipSubscriber.prototype._tryresultSelector = function (args) {\n var result;\n try {\n result = this.resultSelector.apply(this, args);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return ZipSubscriber;\n}(Subscriber));\nexport { ZipSubscriber };\nvar StaticIterator = /*@__PURE__*/ (function () {\n function StaticIterator(iterator) {\n this.iterator = iterator;\n this.nextResult = iterator.next();\n }\n StaticIterator.prototype.hasValue = function () {\n return true;\n };\n StaticIterator.prototype.next = function () {\n var result = this.nextResult;\n this.nextResult = this.iterator.next();\n return result;\n };\n StaticIterator.prototype.hasCompleted = function () {\n var nextResult = this.nextResult;\n return Boolean(nextResult && nextResult.done);\n };\n return StaticIterator;\n}());\nvar StaticArrayIterator = /*@__PURE__*/ (function () {\n function StaticArrayIterator(array) {\n this.array = array;\n this.index = 0;\n this.length = 0;\n this.length = array.length;\n }\n StaticArrayIterator.prototype[Symbol_iterator] = function () {\n return this;\n };\n StaticArrayIterator.prototype.next = function (value) {\n var i = this.index++;\n var array = this.array;\n return i < this.length ? { value: array[i], done: false } : { value: null, done: true };\n };\n StaticArrayIterator.prototype.hasValue = function () {\n return this.array.length > this.index;\n };\n StaticArrayIterator.prototype.hasCompleted = function () {\n return this.array.length === this.index;\n };\n return StaticArrayIterator;\n}());\nvar ZipBufferIterator = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ZipBufferIterator, _super);\n function ZipBufferIterator(destination, parent, observable) {\n var _this = _super.call(this, destination) || this;\n _this.parent = parent;\n _this.observable = observable;\n _this.stillUnsubscribed = true;\n _this.buffer = [];\n _this.isComplete = false;\n return _this;\n }\n ZipBufferIterator.prototype[Symbol_iterator] = function () {\n return this;\n };\n ZipBufferIterator.prototype.next = function () {\n var buffer = this.buffer;\n if (buffer.length === 0 && this.isComplete) {\n return { value: null, done: true };\n }\n else {\n return { value: buffer.shift(), done: false };\n }\n };\n ZipBufferIterator.prototype.hasValue = function () {\n return this.buffer.length > 0;\n };\n ZipBufferIterator.prototype.hasCompleted = function () {\n return this.buffer.length === 0 && this.isComplete;\n };\n ZipBufferIterator.prototype.notifyComplete = function () {\n if (this.buffer.length > 0) {\n this.isComplete = true;\n this.parent.notifyInactive();\n }\n else {\n this.destination.complete();\n }\n };\n ZipBufferIterator.prototype.notifyNext = function (innerValue) {\n this.buffer.push(innerValue);\n this.parent.checkIterators();\n };\n ZipBufferIterator.prototype.subscribe = function () {\n return innerSubscribe(this.observable, new SimpleInnerSubscriber(this));\n };\n return ZipBufferIterator;\n}(SimpleOuterSubscriber));\n//# sourceMappingURL=zip.js.map\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ng-bootstrap/ng-bootstrap\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@angular/forms\";\nvar NgbModuleNgFactory = i0.ɵcmf(i1.NgbModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, [NgbAlertNgFactory, NgbDatepickerNgFactory, ɵuNgFactory, ɵvNgFactory, ɵnNgFactory, ɵqNgFactory, ɵrNgFactory]], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID, [2, i2.ɵangular_packages_common_common_a]]), i0.ɵmpd(4608, i3.ɵangular_packages_forms_forms_j, i3.ɵangular_packages_forms_forms_j, []), i0.ɵmpd(4608, i1.NgbModal, i1.NgbModal, [i0.ComponentFactoryResolver, i0.Injector, i1.ɵw, i1.NgbModalConfig]), i0.ɵmpd(1073742336, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(1073742336, i1.NgbAccordionModule, i1.NgbAccordionModule, []), i0.ɵmpd(1073742336, i1.NgbAlertModule, i1.NgbAlertModule, []), i0.ɵmpd(1073742336, i1.NgbButtonsModule, i1.NgbButtonsModule, []), i0.ɵmpd(1073742336, i1.NgbCarouselModule, i1.NgbCarouselModule, []), i0.ɵmpd(1073742336, i1.NgbCollapseModule, i1.NgbCollapseModule, []), i0.ɵmpd(1073742336, i3.ɵangular_packages_forms_forms_bc, i3.ɵangular_packages_forms_forms_bc, []), i0.ɵmpd(1073742336, i3.FormsModule, i3.FormsModule, []), i0.ɵmpd(1073742336, i1.NgbDatepickerModule, i1.NgbDatepickerModule, []), i0.ɵmpd(1073742336, i1.NgbDropdownModule, i1.NgbDropdownModule, []), i0.ɵmpd(1073742336, i1.NgbModalModule, i1.NgbModalModule, []), i0.ɵmpd(1073742336, i1.NgbPaginationModule, i1.NgbPaginationModule, []), i0.ɵmpd(1073742336, i1.NgbPopoverModule, i1.NgbPopoverModule, []), i0.ɵmpd(1073742336, i1.NgbProgressbarModule, i1.NgbProgressbarModule, []), i0.ɵmpd(1073742336, i1.NgbRatingModule, i1.NgbRatingModule, []), i0.ɵmpd(1073742336, i1.NgbTabsetModule, i1.NgbTabsetModule, []), i0.ɵmpd(1073742336, i1.NgbTimepickerModule, i1.NgbTimepickerModule, []), i0.ɵmpd(1073742336, i1.NgbTooltipModule, i1.NgbTooltipModule, []), i0.ɵmpd(1073742336, i1.NgbTypeaheadModule, i1.NgbTypeaheadModule, []), i0.ɵmpd(1073742336, i1.NgbModule, i1.NgbModule, [])]); });\nexport { NgbModuleNgFactory as NgbModuleNgFactory };\nvar NgbAccordionModuleNgFactory = i0.ɵcmf(i1.NgbAccordionModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID, [2, i2.ɵangular_packages_common_common_a]]), i0.ɵmpd(1073742336, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(1073742336, i1.NgbAccordionModule, i1.NgbAccordionModule, [])]); });\nexport { NgbAccordionModuleNgFactory as NgbAccordionModuleNgFactory };\nvar NgbAlertModuleNgFactory = i0.ɵcmf(i1.NgbAlertModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, [NgbAlertNgFactory]], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID, [2, i2.ɵangular_packages_common_common_a]]), i0.ɵmpd(1073742336, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(1073742336, i1.NgbAlertModule, i1.NgbAlertModule, [])]); });\nexport { NgbAlertModuleNgFactory as NgbAlertModuleNgFactory };\nvar NgbButtonsModuleNgFactory = i0.ɵcmf(i1.NgbButtonsModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(1073742336, i1.NgbButtonsModule, i1.NgbButtonsModule, [])]); });\nexport { NgbButtonsModuleNgFactory as NgbButtonsModuleNgFactory };\nvar NgbCarouselModuleNgFactory = i0.ɵcmf(i1.NgbCarouselModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID, [2, i2.ɵangular_packages_common_common_a]]), i0.ɵmpd(1073742336, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(1073742336, i1.NgbCarouselModule, i1.NgbCarouselModule, [])]); });\nexport { NgbCarouselModuleNgFactory as NgbCarouselModuleNgFactory };\nvar NgbCollapseModuleNgFactory = i0.ɵcmf(i1.NgbCollapseModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(1073742336, i1.NgbCollapseModule, i1.NgbCollapseModule, [])]); });\nexport { NgbCollapseModuleNgFactory as NgbCollapseModuleNgFactory };\nvar NgbDatepickerModuleNgFactory = i0.ɵcmf(i1.NgbDatepickerModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, [NgbDatepickerNgFactory]], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID, [2, i2.ɵangular_packages_common_common_a]]), i0.ɵmpd(4608, i3.ɵangular_packages_forms_forms_j, i3.ɵangular_packages_forms_forms_j, []), i0.ɵmpd(1073742336, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(1073742336, i3.ɵangular_packages_forms_forms_bc, i3.ɵangular_packages_forms_forms_bc, []), i0.ɵmpd(1073742336, i3.FormsModule, i3.FormsModule, []), i0.ɵmpd(1073742336, i1.NgbDatepickerModule, i1.NgbDatepickerModule, [])]); });\nexport { NgbDatepickerModuleNgFactory as NgbDatepickerModuleNgFactory };\nvar NgbDropdownModuleNgFactory = i0.ɵcmf(i1.NgbDropdownModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(1073742336, i1.NgbDropdownModule, i1.NgbDropdownModule, [])]); });\nexport { NgbDropdownModuleNgFactory as NgbDropdownModuleNgFactory };\nvar NgbModalModuleNgFactory = i0.ɵcmf(i1.NgbModalModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, [ɵuNgFactory, ɵvNgFactory]], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i1.NgbModal, i1.NgbModal, [i0.ComponentFactoryResolver, i0.Injector, i1.ɵw, i1.NgbModalConfig]), i0.ɵmpd(1073742336, i1.NgbModalModule, i1.NgbModalModule, [])]); });\nexport { NgbModalModuleNgFactory as NgbModalModuleNgFactory };\nvar NgbPaginationModuleNgFactory = i0.ɵcmf(i1.NgbPaginationModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID, [2, i2.ɵangular_packages_common_common_a]]), i0.ɵmpd(1073742336, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(1073742336, i1.NgbPaginationModule, i1.NgbPaginationModule, [])]); });\nexport { NgbPaginationModuleNgFactory as NgbPaginationModuleNgFactory };\nvar NgbPopoverModuleNgFactory = i0.ɵcmf(i1.NgbPopoverModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, [ɵnNgFactory]], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID, [2, i2.ɵangular_packages_common_common_a]]), i0.ɵmpd(1073742336, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(1073742336, i1.NgbPopoverModule, i1.NgbPopoverModule, [])]); });\nexport { NgbPopoverModuleNgFactory as NgbPopoverModuleNgFactory };\nvar NgbProgressbarModuleNgFactory = i0.ɵcmf(i1.NgbProgressbarModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID, [2, i2.ɵangular_packages_common_common_a]]), i0.ɵmpd(1073742336, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(1073742336, i1.NgbProgressbarModule, i1.NgbProgressbarModule, [])]); });\nexport { NgbProgressbarModuleNgFactory as NgbProgressbarModuleNgFactory };\nvar NgbRatingModuleNgFactory = i0.ɵcmf(i1.NgbRatingModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID, [2, i2.ɵangular_packages_common_common_a]]), i0.ɵmpd(1073742336, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(1073742336, i1.NgbRatingModule, i1.NgbRatingModule, [])]); });\nexport { NgbRatingModuleNgFactory as NgbRatingModuleNgFactory };\nvar NgbTabsetModuleNgFactory = i0.ɵcmf(i1.NgbTabsetModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID, [2, i2.ɵangular_packages_common_common_a]]), i0.ɵmpd(1073742336, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(1073742336, i1.NgbTabsetModule, i1.NgbTabsetModule, [])]); });\nexport { NgbTabsetModuleNgFactory as NgbTabsetModuleNgFactory };\nvar NgbTimepickerModuleNgFactory = i0.ɵcmf(i1.NgbTimepickerModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID, [2, i2.ɵangular_packages_common_common_a]]), i0.ɵmpd(1073742336, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(1073742336, i1.NgbTimepickerModule, i1.NgbTimepickerModule, [])]); });\nexport { NgbTimepickerModuleNgFactory as NgbTimepickerModuleNgFactory };\nvar NgbTooltipModuleNgFactory = i0.ɵcmf(i1.NgbTooltipModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, [ɵqNgFactory]], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(1073742336, i1.NgbTooltipModule, i1.NgbTooltipModule, [])]); });\nexport { NgbTooltipModuleNgFactory as NgbTooltipModuleNgFactory };\nvar NgbTypeaheadModuleNgFactory = i0.ɵcmf(i1.NgbTypeaheadModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, [ɵrNgFactory]], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID, [2, i2.ɵangular_packages_common_common_a]]), i0.ɵmpd(1073742336, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(1073742336, i1.NgbTypeaheadModule, i1.NgbTypeaheadModule, [])]); });\nexport { NgbTypeaheadModuleNgFactory as NgbTypeaheadModuleNgFactory };\nvar styles_NgbAccordion = [];\nvar RenderType_NgbAccordion = i0.ɵcrt({ encapsulation: 2, styles: styles_NgbAccordion, data: {} });\nexport { RenderType_NgbAccordion as RenderType_NgbAccordion };\nfunction View_NgbAccordion_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nfunction View_NgbAccordion_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 4, \"button\", [[\"class\", \"btn btn-link\"], [\"type\", \"button\"]], [[8, \"disabled\", 0], [2, \"collapsed\", null], [1, \"aria-expanded\", 0], [1, \"aria-controls\", 0]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; if ((\"click\" === en)) {\n var pd_0 = (i0.ɵnov(_v, 1).accordion.toggle(i0.ɵnov(_v, 1).panel.id) !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), i0.ɵdid(1, 16384, null, 0, i1.NgbPanelToggle, [i1.NgbAccordion, [8, null]], { ngbPanelToggle: [0, \"ngbPanelToggle\"] }, null), (_l()(), i0.ɵted(2, null, [\" \", \"\"])), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbAccordion_2)), i0.ɵdid(4, 540672, null, 0, i2.NgTemplateOutlet, [i0.ViewContainerRef], { ngTemplateOutlet: [0, \"ngTemplateOutlet\"] }, null)], function (_ck, _v) { var currVal_4 = _v.context.$implicit; _ck(_v, 1, 0, currVal_4); var currVal_6 = ((_v.context.$implicit.titleTpl == null) ? null : _v.context.$implicit.titleTpl.templateRef); _ck(_v, 4, 0, currVal_6); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1).panel.disabled; var currVal_1 = !i0.ɵnov(_v, 1).panel.isOpen; var currVal_2 = i0.ɵnov(_v, 1).panel.isOpen; var currVal_3 = i0.ɵnov(_v, 1).panel.id; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3); var currVal_5 = _v.context.$implicit.title; _ck(_v, 2, 0, currVal_5); }); }\nfunction View_NgbAccordion_4(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nfunction View_NgbAccordion_6(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nfunction View_NgbAccordion_5(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"div\", [[\"class\", \"collapse\"], [\"role\", \"tabpanel\"]], [[8, \"id\", 0], [1, \"aria-labelledby\", 0], [2, \"show\", null]], null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 2, \"div\", [[\"class\", \"card-body\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbAccordion_6)), i0.ɵdid(3, 540672, null, 0, i2.NgTemplateOutlet, [i0.ViewContainerRef], { ngTemplateOutlet: [0, \"ngTemplateOutlet\"] }, null)], function (_ck, _v) { var currVal_3 = ((_v.parent.context.$implicit.contentTpl == null) ? null : _v.parent.context.$implicit.contentTpl.templateRef); _ck(_v, 3, 0, currVal_3); }, function (_ck, _v) { var currVal_0 = i0.ɵinlineInterpolate(1, \"\", _v.parent.context.$implicit.id, \"\"); var currVal_1 = (_v.parent.context.$implicit.id + \"-header\"); var currVal_2 = _v.parent.context.$implicit.isOpen; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2); }); }\nfunction View_NgbAccordion_3(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 6, \"div\", [[\"class\", \"card\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 3, \"div\", [[\"role\", \"tab\"]], [[8, \"id\", 0], [8, \"className\", 0]], null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 2, null, View_NgbAccordion_4)), i0.ɵdid(3, 540672, null, 0, i2.NgTemplateOutlet, [i0.ViewContainerRef], { ngTemplateOutletContext: [0, \"ngTemplateOutletContext\"], ngTemplateOutlet: [1, \"ngTemplateOutlet\"] }, null), i0.ɵpod(4, { $implicit: 0, opened: 1 }), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbAccordion_5)), i0.ɵdid(6, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_2 = _ck(_v, 4, 0, _v.context.$implicit, _v.context.$implicit.isOpen); var currVal_3 = (((_v.context.$implicit.headerTpl == null) ? null : _v.context.$implicit.headerTpl.templateRef) || i0.ɵnov(_v.parent, 0)); _ck(_v, 3, 0, currVal_2, currVal_3); var currVal_4 = (!_co.destroyOnHide || _v.context.$implicit.isOpen); _ck(_v, 6, 0, currVal_4); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = i0.ɵinlineInterpolate(1, \"\", _v.context.$implicit.id, \"-header\"); var currVal_1 = (\"card-header \" + (_v.context.$implicit.type ? (\"bg-\" + _v.context.$implicit.type) : (_co.type ? (\"bg-\" + _co.type) : \"\"))); _ck(_v, 1, 0, currVal_0, currVal_1); }); }\nexport function View_NgbAccordion_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, [[\"t\", 2]], null, 1, null, View_NgbAccordion_1)), i0.ɵdid(1, 16384, null, 0, i1.NgbPanelHeader, [i0.TemplateRef], null, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbAccordion_3)), i0.ɵdid(3, 278528, null, 0, i2.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.panels; _ck(_v, 3, 0, currVal_0); }, null); }\nexport function View_NgbAccordion_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"ngb-accordion\", [[\"class\", \"accordion\"], [\"role\", \"tablist\"]], [[1, \"aria-multiselectable\", 0]], null, null, View_NgbAccordion_0, RenderType_NgbAccordion)), i0.ɵdid(1, 2146304, null, 1, i1.NgbAccordion, [i1.NgbAccordionConfig], null, null), i0.ɵqud(603979776, 1, { panels: 1 })], null, function (_ck, _v) { var currVal_0 = !i0.ɵnov(_v, 1).closeOtherPanels; _ck(_v, 0, 0, currVal_0); }); }\nvar NgbAccordionNgFactory = i0.ɵccf(\"ngb-accordion\", i1.NgbAccordion, View_NgbAccordion_Host_0, { activeIds: \"activeIds\", closeOtherPanels: \"closeOthers\", destroyOnHide: \"destroyOnHide\", type: \"type\" }, { panelChange: \"panelChange\" }, []);\nexport { NgbAccordionNgFactory as NgbAccordionNgFactory };\nvar styles_NgbAlert = [\"ngb-alert{display:block}\"];\nvar RenderType_NgbAlert = i0.ɵcrt({ encapsulation: 2, styles: styles_NgbAlert, data: {} });\nexport { RenderType_NgbAlert as RenderType_NgbAlert };\nfunction View_NgbAlert_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"button\", [[\"aria-label\", \"Close\"], [\"class\", \"close\"], [\"type\", \"button\"]], null, [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co.closeHandler() !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 1, \"span\", [[\"aria-hidden\", \"true\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"\\u00D7\"]))], null, null); }\nexport function View_NgbAlert_0(_l) { return i0.ɵvid(2, [i0.ɵncd(null, 0), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbAlert_1)), i0.ɵdid(2, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.dismissible; _ck(_v, 2, 0, currVal_0); }, null); }\nexport function View_NgbAlert_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"ngb-alert\", [[\"class\", \"alert\"], [\"role\", \"alert\"]], [[2, \"alert-dismissible\", null]], null, null, View_NgbAlert_0, RenderType_NgbAlert)), i0.ɵdid(1, 638976, null, 0, i1.NgbAlert, [i1.NgbAlertConfig, i0.Renderer2, i0.ElementRef], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1).dismissible; _ck(_v, 0, 0, currVal_0); }); }\nvar NgbAlertNgFactory = i0.ɵccf(\"ngb-alert\", i1.NgbAlert, View_NgbAlert_Host_0, { dismissible: \"dismissible\", type: \"type\" }, { close: \"close\" }, [\"*\"]);\nexport { NgbAlertNgFactory as NgbAlertNgFactory };\nvar styles_NgbCarousel = [];\nvar RenderType_NgbCarousel = i0.ɵcrt({ encapsulation: 2, styles: styles_NgbCarousel, data: {} });\nexport { RenderType_NgbCarousel as RenderType_NgbCarousel };\nfunction View_NgbCarousel_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 0, \"li\", [], [[8, \"id\", 0], [2, \"active\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n _co.select(_v.context.$implicit.id);\n var pd_0 = ((_co.pauseOnHover && _co.pause()) !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _v.context.$implicit.id; var currVal_1 = (_v.context.$implicit.id === _co.activeId); _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nfunction View_NgbCarousel_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"ol\", [[\"class\", \"carousel-indicators\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbCarousel_2)), i0.ɵdid(2, 278528, null, 0, i2.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.slides; _ck(_v, 2, 0, currVal_0); }, null); }\nfunction View_NgbCarousel_4(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nfunction View_NgbCarousel_3(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"div\", [[\"class\", \"carousel-item\"]], [[2, \"active\", null]], null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbCarousel_4)), i0.ɵdid(2, 540672, null, 0, i2.NgTemplateOutlet, [i0.ViewContainerRef], { ngTemplateOutlet: [0, \"ngTemplateOutlet\"] }, null)], function (_ck, _v) { var currVal_1 = _v.context.$implicit.tplRef; _ck(_v, 2, 0, currVal_1); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = (_v.context.$implicit.id === _co.activeId); _ck(_v, 0, 0, currVal_0); }); }\nfunction View_NgbCarousel_5(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"a\", [[\"class\", \"carousel-control-prev\"], [\"role\", \"button\"]], null, [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co.prev() !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 0, \"span\", [[\"aria-hidden\", \"true\"], [\"class\", \"carousel-control-prev-icon\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(2, 0, null, null, 1, \"span\", [[\"class\", \"sr-only\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"Previous\"]))], null, null); }\nfunction View_NgbCarousel_6(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"a\", [[\"class\", \"carousel-control-next\"], [\"role\", \"button\"]], null, [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co.next() !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 0, \"span\", [[\"aria-hidden\", \"true\"], [\"class\", \"carousel-control-next-icon\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(2, 0, null, null, 1, \"span\", [[\"class\", \"sr-only\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"Next\"]))], null, null); }\nexport function View_NgbCarousel_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbCarousel_1)), i0.ɵdid(1, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵeld(2, 0, null, null, 2, \"div\", [[\"class\", \"carousel-inner\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbCarousel_3)), i0.ɵdid(4, 278528, null, 0, i2.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbCarousel_5)), i0.ɵdid(6, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbCarousel_6)), i0.ɵdid(8, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.showNavigationIndicators; _ck(_v, 1, 0, currVal_0); var currVal_1 = _co.slides; _ck(_v, 4, 0, currVal_1); var currVal_2 = _co.showNavigationArrows; _ck(_v, 6, 0, currVal_2); var currVal_3 = _co.showNavigationArrows; _ck(_v, 8, 0, currVal_3); }, null); }\nexport function View_NgbCarousel_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"ngb-carousel\", [[\"class\", \"carousel slide\"], [\"tabIndex\", \"0\"]], [[4, \"display\", null]], [[null, \"mouseenter\"], [null, \"mouseleave\"], [null, \"keydown.arrowLeft\"], [null, \"keydown.arrowRight\"]], function (_v, en, $event) { var ad = true; if ((\"mouseenter\" === en)) {\n var pd_0 = ((i0.ɵnov(_v, 1).pauseOnHover && i0.ɵnov(_v, 1).pause()) !== false);\n ad = (pd_0 && ad);\n } if ((\"mouseleave\" === en)) {\n var pd_1 = ((i0.ɵnov(_v, 1).pauseOnHover && i0.ɵnov(_v, 1).cycle()) !== false);\n ad = (pd_1 && ad);\n } if ((\"keydown.arrowLeft\" === en)) {\n var pd_2 = ((i0.ɵnov(_v, 1).keyboard && i0.ɵnov(_v, 1).prev()) !== false);\n ad = (pd_2 && ad);\n } if ((\"keydown.arrowRight\" === en)) {\n var pd_3 = ((i0.ɵnov(_v, 1).keyboard && i0.ɵnov(_v, 1).next()) !== false);\n ad = (pd_3 && ad);\n } return ad; }, View_NgbCarousel_0, RenderType_NgbCarousel)), i0.ɵdid(1, 3850240, null, 1, i1.NgbCarousel, [i1.NgbCarouselConfig, i0.PLATFORM_ID, i0.NgZone, i0.ChangeDetectorRef], null, null), i0.ɵqud(603979776, 1, { slides: 1 })], null, function (_ck, _v) { var currVal_0 = \"block\"; _ck(_v, 0, 0, currVal_0); }); }\nvar NgbCarouselNgFactory = i0.ɵccf(\"ngb-carousel\", i1.NgbCarousel, View_NgbCarousel_Host_0, { activeId: \"activeId\", interval: \"interval\", wrap: \"wrap\", keyboard: \"keyboard\", pauseOnHover: \"pauseOnHover\", showNavigationArrows: \"showNavigationArrows\", showNavigationIndicators: \"showNavigationIndicators\" }, { slide: \"slide\" }, []);\nexport { NgbCarouselNgFactory as NgbCarouselNgFactory };\nvar styles_ɵc = [\"ngb-datepicker-month-view{display:block}.ngb-dp-week-number,.ngb-dp-weekday{line-height:2rem;text-align:center;font-style:italic}.ngb-dp-weekday{color:#5bc0de;color:var(--info)}.ngb-dp-week{border-radius:.25rem;display:-ms-flexbox;display:flex}.ngb-dp-weekdays{border-bottom:1px solid rgba(0,0,0,.125);border-radius:0}.ngb-dp-day,.ngb-dp-week-number,.ngb-dp-weekday{width:2rem;height:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default}\"];\nvar RenderType_ɵc = i0.ɵcrt({ encapsulation: 2, styles: styles_ɵc, data: {} });\nexport { RenderType_ɵc as RenderType_ɵc };\nfunction View_ɵc_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 0, \"div\", [[\"class\", \"ngb-dp-weekday ngb-dp-showweek\"]], null, null, null, null, null))], null, null); }\nfunction View_ɵc_3(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"div\", [[\"class\", \"ngb-dp-weekday small\"]], null, null, null, null, null)), (_l()(), i0.ɵted(1, null, [\" \", \" \"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.i18n.getWeekdayShortName(_v.context.$implicit); _ck(_v, 1, 0, currVal_0); }); }\nfunction View_ɵc_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 4, \"div\", [[\"class\", \"ngb-dp-week ngb-dp-weekdays bg-light\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ɵc_2)), i0.ɵdid(2, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ɵc_3)), i0.ɵdid(4, 278528, null, 0, i2.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.showWeekNumbers; _ck(_v, 2, 0, currVal_0); var currVal_1 = _co.month.weekdays; _ck(_v, 4, 0, currVal_1); }, null); }\nfunction View_ɵc_6(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"div\", [[\"class\", \"ngb-dp-week-number small text-muted\"]], null, null, null, null, null)), (_l()(), i0.ɵted(1, null, [\"\", \"\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.i18n.getWeekNumerals(_v.parent.parent.context.$implicit.number); _ck(_v, 1, 0, currVal_0); }); }\nfunction View_ɵc_9(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nfunction View_ɵc_8(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(16777216, null, null, 1, null, View_ɵc_9)), i0.ɵdid(1, 540672, null, 0, i2.NgTemplateOutlet, [i0.ViewContainerRef], { ngTemplateOutletContext: [0, \"ngTemplateOutletContext\"], ngTemplateOutlet: [1, \"ngTemplateOutlet\"] }, null), (_l()(), i0.ɵand(0, null, null, 0))], function (_ck, _v) { var _co = _v.component; var currVal_0 = _v.parent.context.$implicit.context; var currVal_1 = _co.dayTemplate; _ck(_v, 1, 0, currVal_0, currVal_1); }, null); }\nfunction View_ɵc_7(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"div\", [[\"class\", \"ngb-dp-day\"], [\"role\", \"gridcell\"]], [[2, \"disabled\", null], [8, \"tabIndex\", 0], [2, \"hidden\", null], [2, \"ngb-dp-today\", null], [1, \"aria-label\", 0]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co.doSelect(_v.context.$implicit) !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ɵc_8)), i0.ɵdid(2, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var currVal_5 = !_v.context.$implicit.hidden; _ck(_v, 2, 0, currVal_5); }, function (_ck, _v) { var currVal_0 = _v.context.$implicit.context.disabled; var currVal_1 = _v.context.$implicit.tabindex; var currVal_2 = _v.context.$implicit.hidden; var currVal_3 = _v.context.$implicit.context.today; var currVal_4 = _v.context.$implicit.ariaLabel; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4); }); }\nfunction View_ɵc_5(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 4, \"div\", [[\"class\", \"ngb-dp-week\"], [\"role\", \"row\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ɵc_6)), i0.ɵdid(2, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ɵc_7)), i0.ɵdid(4, 278528, null, 0, i2.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.showWeekNumbers; _ck(_v, 2, 0, currVal_0); var currVal_1 = _v.parent.context.$implicit.days; _ck(_v, 4, 0, currVal_1); }, null); }\nfunction View_ɵc_4(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(16777216, null, null, 1, null, View_ɵc_5)), i0.ɵdid(1, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(0, null, null, 0))], function (_ck, _v) { var currVal_0 = !_v.context.$implicit.collapsed; _ck(_v, 1, 0, currVal_0); }, null); }\nexport function View_ɵc_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(16777216, null, null, 1, null, View_ɵc_1)), i0.ɵdid(1, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ɵc_4)), i0.ɵdid(3, 278528, null, 0, i2.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.showWeekdays; _ck(_v, 1, 0, currVal_0); var currVal_1 = _co.month.weeks; _ck(_v, 3, 0, currVal_1); }, null); }\nexport function View_ɵc_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"ngb-datepicker-month-view\", [[\"role\", \"grid\"]], null, null, null, View_ɵc_0, RenderType_ɵc)), i0.ɵdid(1, 49152, null, 0, i1.ɵc, [i1.NgbDatepickerI18n], null, null)], null, null); }\nvar ɵcNgFactory = i0.ɵccf(\"ngb-datepicker-month-view\", i1.ɵc, View_ɵc_Host_0, { dayTemplate: \"dayTemplate\", month: \"month\", showWeekdays: \"showWeekdays\", showWeekNumbers: \"showWeekNumbers\" }, { select: \"select\" }, []);\nexport { ɵcNgFactory as ɵcNgFactory };\nvar styles_ɵd = [\"[ngbDatepickerDayView]{text-align:center;width:2rem;height:2rem;line-height:2rem;border-radius:.25rem;background:0 0}[ngbDatepickerDayView].outside{opacity:.5}\"];\nvar RenderType_ɵd = i0.ɵcrt({ encapsulation: 2, styles: styles_ɵd, data: {} });\nexport { RenderType_ɵd as RenderType_ɵd };\nexport function View_ɵd_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵted(0, null, [\"\", \"\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.i18n.getDayNumerals(_co.date); _ck(_v, 0, 0, currVal_0); }); }\nexport function View_ɵd_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"div\", [[\"class\", \"btn-light\"], [\"ngbDatepickerDayView\", \"\"]], [[2, \"bg-primary\", null], [2, \"text-white\", null], [2, \"text-muted\", null], [2, \"outside\", null], [2, \"active\", null]], null, null, View_ɵd_0, RenderType_ɵd)), i0.ɵdid(1, 49152, null, 0, i1.ɵd, [i1.NgbDatepickerI18n], null, null)], null, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1).selected; var currVal_1 = i0.ɵnov(_v, 1).selected; var currVal_2 = i0.ɵnov(_v, 1).isMuted(); var currVal_3 = i0.ɵnov(_v, 1).isMuted(); var currVal_4 = i0.ɵnov(_v, 1).focused; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4); }); }\nvar ɵdNgFactory = i0.ɵccf(\"[ngbDatepickerDayView]\", i1.ɵd, View_ɵd_Host_0, { currentMonth: \"currentMonth\", date: \"date\", disabled: \"disabled\", focused: \"focused\", selected: \"selected\" }, {}, []);\nexport { ɵdNgFactory as ɵdNgFactory };\nvar styles_ɵe = [\"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}\"];\nvar RenderType_ɵe = i0.ɵcrt({ encapsulation: 2, styles: styles_ɵe, data: {} });\nexport { RenderType_ɵe as RenderType_ɵe };\nfunction View_ɵe_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"ngb-datepicker-navigation-select\", [[\"class\", \"ngb-dp-navigation-select\"]], null, [[null, \"select\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"select\" === en)) {\n var pd_0 = (_co.select.emit($event) !== false);\n ad = (pd_0 && ad);\n } return ad; }, View_ɵf_0, RenderType_ɵf)), i0.ɵdid(1, 49152, null, 0, i1.ɵf, [i1.NgbDatepickerI18n], { date: [0, \"date\"], disabled: [1, \"disabled\"], months: [2, \"months\"], years: [3, \"years\"] }, { select: \"select\" })], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.date; var currVal_1 = _co.disabled; var currVal_2 = _co.selectBoxes.months; var currVal_3 = _co.selectBoxes.years; _ck(_v, 1, 0, currVal_0, currVal_1, currVal_2, currVal_3); }, null); }\nfunction View_ɵe_4(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 0, \"div\", [[\"class\", \"ngb-dp-arrow\"]], null, null, null, null, null))], null, null); }\nfunction View_ɵe_5(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 0, \"div\", [[\"class\", \"ngb-dp-arrow\"]], null, null, null, null, null))], null, null); }\nfunction View_ɵe_3(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(16777216, null, null, 1, null, View_ɵe_4)), i0.ɵdid(1, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵeld(2, 0, null, null, 1, \"div\", [[\"class\", \"ngb-dp-month-name\"]], null, null, null, null, null)), (_l()(), i0.ɵted(3, null, [\" \", \" \", \" \"])), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ɵe_5)), i0.ɵdid(5, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(0, null, null, 0))], function (_ck, _v) { var _co = _v.component; var currVal_0 = (_v.context.index > 0); _ck(_v, 1, 0, currVal_0); var currVal_3 = (_v.context.index !== (_co.months.length - 1)); _ck(_v, 5, 0, currVal_3); }, function (_ck, _v) { var _co = _v.component; var currVal_1 = _co.i18n.getMonthFullName(_v.context.$implicit.number, _v.context.$implicit.year); var currVal_2 = _co.i18n.getYearNumerals(_v.context.$implicit.year); _ck(_v, 3, 0, currVal_1, currVal_2); }); }\nfunction View_ɵe_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(16777216, null, null, 1, null, View_ɵe_3)), i0.ɵdid(1, 278528, null, 0, i2.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null), (_l()(), i0.ɵand(0, null, null, 0))], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.months; _ck(_v, 1, 0, currVal_0); }, null); }\nexport function View_ɵe_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"div\", [[\"class\", \"ngb-dp-arrow\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 1, \"button\", [[\"aria-label\", \"Previous month\"], [\"class\", \"btn btn-link ngb-dp-arrow-btn\"], [\"title\", \"Previous month\"], [\"type\", \"button\"]], [[8, \"disabled\", 0]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co.navigate.emit(_co.navigation.PREV) !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵeld(2, 0, null, null, 0, \"span\", [[\"class\", \"ngb-dp-navigation-chevron\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ɵe_1)), i0.ɵdid(4, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ɵe_2)), i0.ɵdid(6, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵeld(7, 0, null, null, 2, \"div\", [[\"class\", \"ngb-dp-arrow right\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(8, 0, null, null, 1, \"button\", [[\"aria-label\", \"Next month\"], [\"class\", \"btn btn-link ngb-dp-arrow-btn\"], [\"title\", \"Next month\"], [\"type\", \"button\"]], [[8, \"disabled\", 0]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co.navigate.emit(_co.navigation.NEXT) !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵeld(9, 0, null, null, 0, \"span\", [[\"class\", \"ngb-dp-navigation-chevron\"]], null, null, null, null, null))], function (_ck, _v) { var _co = _v.component; var currVal_1 = _co.showSelect; _ck(_v, 4, 0, currVal_1); var currVal_2 = !_co.showSelect; _ck(_v, 6, 0, currVal_2); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.prevDisabled; _ck(_v, 1, 0, currVal_0); var currVal_3 = _co.nextDisabled; _ck(_v, 8, 0, currVal_3); }); }\nexport function View_ɵe_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"ngb-datepicker-navigation\", [], null, null, null, View_ɵe_0, RenderType_ɵe)), i0.ɵdid(1, 49152, null, 0, i1.ɵe, [i1.NgbDatepickerI18n], null, null)], null, null); }\nvar ɵeNgFactory = i0.ɵccf(\"ngb-datepicker-navigation\", i1.ɵe, View_ɵe_Host_0, { date: \"date\", disabled: \"disabled\", months: \"months\", showSelect: \"showSelect\", prevDisabled: \"prevDisabled\", nextDisabled: \"nextDisabled\", selectBoxes: \"selectBoxes\" }, { navigate: \"navigate\", select: \"select\" }, []);\nexport { ɵeNgFactory as ɵeNgFactory };\nvar styles_ɵf = [\"ngb-datepicker-navigation-select>.custom-select{-ms-flex:1 1 auto;flex:1 1 auto;padding:0 .5rem;font-size:.875rem;height:1.85rem}\"];\nvar RenderType_ɵf = i0.ɵcrt({ encapsulation: 2, styles: styles_ɵf, data: {} });\nexport { RenderType_ɵf as RenderType_ɵf };\nfunction View_ɵf_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"option\", [], [[1, \"aria-label\", 0]], null, null, null, null)), i0.ɵdid(1, 147456, null, 0, i3.NgSelectOption, [i0.ElementRef, i0.Renderer2, [8, null]], { value: [0, \"value\"] }, null), i0.ɵdid(2, 147456, null, 0, i3.ɵangular_packages_forms_forms_s, [i0.ElementRef, i0.Renderer2, [8, null]], { value: [0, \"value\"] }, null), (_l()(), i0.ɵted(3, null, [\"\", \"\"]))], function (_ck, _v) { var currVal_1 = _v.context.$implicit; _ck(_v, 1, 0, currVal_1); var currVal_2 = _v.context.$implicit; _ck(_v, 2, 0, currVal_2); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.i18n.getMonthFullName(_v.context.$implicit, ((_co.date == null) ? null : _co.date.year)); _ck(_v, 0, 0, currVal_0); var currVal_3 = _co.i18n.getMonthShortName(_v.context.$implicit, ((_co.date == null) ? null : _co.date.year)); _ck(_v, 3, 0, currVal_3); }); }\nfunction View_ɵf_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"option\", [], null, null, null, null, null)), i0.ɵdid(1, 147456, null, 0, i3.NgSelectOption, [i0.ElementRef, i0.Renderer2, [8, null]], { value: [0, \"value\"] }, null), i0.ɵdid(2, 147456, null, 0, i3.ɵangular_packages_forms_forms_s, [i0.ElementRef, i0.Renderer2, [8, null]], { value: [0, \"value\"] }, null), (_l()(), i0.ɵted(3, null, [\"\", \"\"]))], function (_ck, _v) { var currVal_0 = _v.context.$implicit; _ck(_v, 1, 0, currVal_0); var currVal_1 = _v.context.$implicit; _ck(_v, 2, 0, currVal_1); }, function (_ck, _v) { var _co = _v.component; var currVal_2 = _co.i18n.getYearNumerals(_v.context.$implicit); _ck(_v, 3, 0, currVal_2); }); }\nexport function View_ɵf_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"select\", [[\"aria-label\", \"Select month\"], [\"class\", \"custom-select\"], [\"title\", \"Select month\"]], [[8, \"disabled\", 0], [8, \"value\", 0]], [[null, \"change\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"change\" === en)) {\n var pd_0 = (_co.changeMonth($event.target.value) !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ɵf_1)), i0.ɵdid(2, 278528, null, 0, i2.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null), (_l()(), i0.ɵeld(3, 0, null, null, 2, \"select\", [[\"aria-label\", \"Select year\"], [\"class\", \"custom-select\"], [\"title\", \"Select year\"]], [[8, \"disabled\", 0], [8, \"value\", 0]], [[null, \"change\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"change\" === en)) {\n var pd_0 = (_co.changeYear($event.target.value) !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ɵf_2)), i0.ɵdid(5, 278528, null, 0, i2.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_2 = _co.months; _ck(_v, 2, 0, currVal_2); var currVal_5 = _co.years; _ck(_v, 5, 0, currVal_5); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.disabled; var currVal_1 = ((_co.date == null) ? null : _co.date.month); _ck(_v, 0, 0, currVal_0, currVal_1); var currVal_3 = _co.disabled; var currVal_4 = ((_co.date == null) ? null : _co.date.year); _ck(_v, 3, 0, currVal_3, currVal_4); }); }\nexport function View_ɵf_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"ngb-datepicker-navigation-select\", [], null, null, null, View_ɵf_0, RenderType_ɵf)), i0.ɵdid(1, 49152, null, 0, i1.ɵf, [i1.NgbDatepickerI18n], null, null)], null, null); }\nvar ɵfNgFactory = i0.ɵccf(\"ngb-datepicker-navigation-select\", i1.ɵf, View_ɵf_Host_0, { date: \"date\", disabled: \"disabled\", months: \"months\", years: \"years\" }, { select: \"select\" }, []);\nexport { ɵfNgFactory as ɵfNgFactory };\nvar styles_NgbDatepicker = [\"ngb-datepicker{border:1px solid #dfdfdf;border-radius:.25rem;display:inline-block}ngb-datepicker-month-view{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}.ngb-dp-body{z-index:1050}.ngb-dp-header{border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem}.ngb-dp-months{display:-ms-flexbox;display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\"];\nvar RenderType_NgbDatepicker = i0.ɵcrt({ encapsulation: 2, styles: styles_NgbDatepicker, data: {} });\nexport { RenderType_NgbDatepicker as RenderType_NgbDatepicker };\nfunction View_NgbDatepicker_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"div\", [[\"class\", \"btn-light\"], [\"ngbDatepickerDayView\", \"\"]], [[2, \"bg-primary\", null], [2, \"text-white\", null], [2, \"text-muted\", null], [2, \"outside\", null], [2, \"active\", null]], null, null, View_ɵd_0, RenderType_ɵd)), i0.ɵdid(1, 49152, null, 0, i1.ɵd, [i1.NgbDatepickerI18n], { currentMonth: [0, \"currentMonth\"], date: [1, \"date\"], disabled: [2, \"disabled\"], focused: [3, \"focused\"], selected: [4, \"selected\"] }, null)], function (_ck, _v) { var currVal_5 = _v.context.currentMonth; var currVal_6 = _v.context.date; var currVal_7 = _v.context.disabled; var currVal_8 = _v.context.focused; var currVal_9 = _v.context.selected; _ck(_v, 1, 0, currVal_5, currVal_6, currVal_7, currVal_8, currVal_9); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1).selected; var currVal_1 = i0.ɵnov(_v, 1).selected; var currVal_2 = i0.ɵnov(_v, 1).isMuted(); var currVal_3 = i0.ɵnov(_v, 1).isMuted(); var currVal_4 = i0.ɵnov(_v, 1).focused; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4); }); }\nfunction View_NgbDatepicker_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"ngb-datepicker-navigation\", [], null, [[null, \"navigate\"], [null, \"select\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"navigate\" === en)) {\n var pd_0 = (_co.onNavigateEvent($event) !== false);\n ad = (pd_0 && ad);\n } if ((\"select\" === en)) {\n var pd_1 = (_co.onNavigateDateSelect($event) !== false);\n ad = (pd_1 && ad);\n } return ad; }, View_ɵe_0, RenderType_ɵe)), i0.ɵdid(1, 49152, null, 0, i1.ɵe, [i1.NgbDatepickerI18n], { date: [0, \"date\"], disabled: [1, \"disabled\"], months: [2, \"months\"], showSelect: [3, \"showSelect\"], prevDisabled: [4, \"prevDisabled\"], nextDisabled: [5, \"nextDisabled\"], selectBoxes: [6, \"selectBoxes\"] }, { navigate: \"navigate\", select: \"select\" })], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.model.firstDate; var currVal_1 = _co.model.disabled; var currVal_2 = _co.model.months; var currVal_3 = (_co.model.navigation === \"select\"); var currVal_4 = _co.model.prevDisabled; var currVal_5 = _co.model.nextDisabled; var currVal_6 = _co.model.selectBoxes; _ck(_v, 1, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5, currVal_6); }, null); }\nfunction View_NgbDatepicker_4(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"div\", [[\"class\", \"ngb-dp-month-name bg-light\"]], null, null, null, null, null)), (_l()(), i0.ɵted(1, null, [\" \", \" \", \" \"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.i18n.getMonthFullName(_v.parent.context.$implicit.number, _v.parent.context.$implicit.year); var currVal_1 = _co.i18n.getYearNumerals(_v.parent.context.$implicit.year); _ck(_v, 1, 0, currVal_0, currVal_1); }); }\nfunction View_NgbDatepicker_3(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 4, \"div\", [[\"class\", \"ngb-dp-month\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbDatepicker_4)), i0.ɵdid(2, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵeld(3, 0, null, null, 1, \"ngb-datepicker-month-view\", [[\"role\", \"grid\"]], null, [[null, \"select\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"select\" === en)) {\n var pd_0 = (_co.onDateSelect($event) !== false);\n ad = (pd_0 && ad);\n } return ad; }, View_ɵc_0, RenderType_ɵc)), i0.ɵdid(4, 49152, null, 0, i1.ɵc, [i1.NgbDatepickerI18n], { dayTemplate: [0, \"dayTemplate\"], month: [1, \"month\"], showWeekdays: [2, \"showWeekdays\"], showWeekNumbers: [3, \"showWeekNumbers\"] }, { select: \"select\" })], function (_ck, _v) { var _co = _v.component; var currVal_0 = ((_co.navigation === \"none\") || ((_co.displayMonths > 1) && (_co.navigation === \"select\"))); _ck(_v, 2, 0, currVal_0); var currVal_1 = (_co.dayTemplate || i0.ɵnov(_v.parent, 1)); var currVal_2 = _v.context.$implicit; var currVal_3 = _co.showWeekdays; var currVal_4 = _co.showWeekNumbers; _ck(_v, 4, 0, currVal_1, currVal_2, currVal_3, currVal_4); }, null); }\nfunction View_NgbDatepicker_5(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nexport function View_NgbDatepicker_0(_l) { return i0.ɵvid(2, [i0.ɵqud(402653184, 1, { _monthsEl: 0 }), (_l()(), i0.ɵand(0, [[\"dt\", 2]], null, 0, null, View_NgbDatepicker_1)), (_l()(), i0.ɵeld(2, 0, null, null, 2, \"div\", [[\"class\", \"ngb-dp-header bg-light\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbDatepicker_2)), i0.ɵdid(4, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵeld(5, 0, [[1, 0], [\"months\", 1]], null, 2, \"div\", [[\"class\", \"ngb-dp-months\"]], null, [[null, \"keydown\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"keydown\" === en)) {\n var pd_0 = (_co.onKeyDown($event) !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbDatepicker_3)), i0.ɵdid(7, 278528, null, 0, i2.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbDatepicker_5)), i0.ɵdid(9, 540672, null, 0, i2.NgTemplateOutlet, [i0.ViewContainerRef], { ngTemplateOutlet: [0, \"ngTemplateOutlet\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = (_co.navigation !== \"none\"); _ck(_v, 4, 0, currVal_0); var currVal_1 = _co.model.months; _ck(_v, 7, 0, currVal_1); var currVal_2 = _co.footerTemplate; _ck(_v, 9, 0, currVal_2); }, null); }\nexport function View_NgbDatepicker_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 4, \"ngb-datepicker\", [], null, null, null, View_NgbDatepicker_0, RenderType_NgbDatepicker)), i0.ɵprd(5120, null, i3.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i1.NgbDatepicker]), i0.ɵprd(512, null, i1.ɵs, i1.ɵs, [i1.NgbCalendar, i1.NgbDatepickerI18n]), i0.ɵprd(512, null, i1.ɵt, i1.ɵt, [i1.ɵs, i1.NgbCalendar]), i0.ɵdid(4, 4964352, null, 0, i1.NgbDatepicker, [i1.ɵt, i1.ɵs, i1.NgbCalendar, i1.NgbDatepickerI18n, i1.NgbDatepickerConfig, i0.ChangeDetectorRef, i0.ElementRef, i1.NgbDateAdapter, i0.NgZone], null, null)], function (_ck, _v) { _ck(_v, 4, 0); }, null); }\nvar NgbDatepickerNgFactory = i0.ɵccf(\"ngb-datepicker\", i1.NgbDatepicker, View_NgbDatepicker_Host_0, { dayTemplate: \"dayTemplate\", dayTemplateData: \"dayTemplateData\", displayMonths: \"displayMonths\", firstDayOfWeek: \"firstDayOfWeek\", footerTemplate: \"footerTemplate\", markDisabled: \"markDisabled\", maxDate: \"maxDate\", minDate: \"minDate\", navigation: \"navigation\", outsideDays: \"outsideDays\", showWeekdays: \"showWeekdays\", showWeekNumbers: \"showWeekNumbers\", startDate: \"startDate\" }, { navigate: \"navigate\", select: \"select\" }, []);\nexport { NgbDatepickerNgFactory as NgbDatepickerNgFactory };\nvar styles_NgbPagination = [];\nvar RenderType_NgbPagination = i0.ɵcrt({ encapsulation: 2, styles: styles_NgbPagination, data: {} });\nexport { RenderType_NgbPagination as RenderType_NgbPagination };\nfunction View_NgbPagination_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"span\", [[\"aria-hidden\", \"true\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"\\u00AB\\u00AB\"]))], null, null); }\nfunction View_NgbPagination_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"span\", [[\"aria-hidden\", \"true\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"\\u00AB\"]))], null, null); }\nfunction View_NgbPagination_3(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"span\", [[\"aria-hidden\", \"true\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"\\u00BB\"]))], null, null); }\nfunction View_NgbPagination_4(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"span\", [[\"aria-hidden\", \"true\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"\\u00BB\\u00BB\"]))], null, null); }\nfunction View_NgbPagination_5(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵted(-1, null, [\"...\"]))], null, null); }\nfunction View_NgbPagination_7(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"span\", [[\"class\", \"sr-only\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"(current)\"]))], null, null); }\nfunction View_NgbPagination_6(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵted(0, null, [\" \", \" \"])), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbPagination_7)), i0.ɵdid(2, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(0, null, null, 0))], function (_ck, _v) { var currVal_1 = (_v.context.$implicit === _v.context.currentPage); _ck(_v, 2, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = _v.context.$implicit; _ck(_v, 0, 0, currVal_0); }); }\nfunction View_NgbPagination_9(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nfunction View_NgbPagination_8(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 4, \"li\", [[\"class\", \"page-item\"]], [[2, \"disabled\", null]], null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 3, \"a\", [[\"aria-label\", \"First\"], [\"class\", \"page-link\"], [\"href\", \"\"]], [[1, \"tabindex\", 0]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n _co.selectPage(1);\n var pd_0 = ($event.preventDefault() !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵand(16777216, null, null, 2, null, View_NgbPagination_9)), i0.ɵdid(3, 540672, null, 0, i2.NgTemplateOutlet, [i0.ViewContainerRef], { ngTemplateOutletContext: [0, \"ngTemplateOutletContext\"], ngTemplateOutlet: [1, \"ngTemplateOutlet\"] }, null), i0.ɵpod(4, { disabled: 0, currentPage: 1 })], function (_ck, _v) { var _co = _v.component; var currVal_2 = _ck(_v, 4, 0, _co.previousDisabled(), _co.page); var currVal_3 = (((_co.tplFirst == null) ? null : _co.tplFirst.templateRef) || i0.ɵnov(_v.parent, 0)); _ck(_v, 3, 0, currVal_2, currVal_3); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.previousDisabled(); _ck(_v, 0, 0, currVal_0); var currVal_1 = (_co.hasPrevious() ? null : \"-1\"); _ck(_v, 1, 0, currVal_1); }); }\nfunction View_NgbPagination_11(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nfunction View_NgbPagination_10(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 4, \"li\", [[\"class\", \"page-item\"]], [[2, \"disabled\", null]], null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 3, \"a\", [[\"aria-label\", \"Previous\"], [\"class\", \"page-link\"], [\"href\", \"\"]], [[1, \"tabindex\", 0]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n _co.selectPage((_co.page - 1));\n var pd_0 = ($event.preventDefault() !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵand(16777216, null, null, 2, null, View_NgbPagination_11)), i0.ɵdid(3, 540672, null, 0, i2.NgTemplateOutlet, [i0.ViewContainerRef], { ngTemplateOutletContext: [0, \"ngTemplateOutletContext\"], ngTemplateOutlet: [1, \"ngTemplateOutlet\"] }, null), i0.ɵpod(4, { disabled: 0 })], function (_ck, _v) { var _co = _v.component; var currVal_2 = _ck(_v, 4, 0, _co.previousDisabled()); var currVal_3 = (((_co.tplPrevious == null) ? null : _co.tplPrevious.templateRef) || i0.ɵnov(_v.parent, 1)); _ck(_v, 3, 0, currVal_2, currVal_3); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.previousDisabled(); _ck(_v, 0, 0, currVal_0); var currVal_1 = (_co.hasPrevious() ? null : \"-1\"); _ck(_v, 1, 0, currVal_1); }); }\nfunction View_NgbPagination_14(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nfunction View_NgbPagination_13(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"a\", [[\"class\", \"page-link\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 2, null, View_NgbPagination_14)), i0.ɵdid(2, 540672, null, 0, i2.NgTemplateOutlet, [i0.ViewContainerRef], { ngTemplateOutletContext: [0, \"ngTemplateOutletContext\"], ngTemplateOutlet: [1, \"ngTemplateOutlet\"] }, null), i0.ɵpod(3, { disabled: 0, currentPage: 1 })], function (_ck, _v) { var _co = _v.component; var currVal_0 = _ck(_v, 3, 0, true, _co.page); var currVal_1 = (((_co.tplEllipsis == null) ? null : _co.tplEllipsis.templateRef) || i0.ɵnov(_v.parent.parent, 4)); _ck(_v, 2, 0, currVal_0, currVal_1); }, null); }\nfunction View_NgbPagination_16(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nfunction View_NgbPagination_15(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"a\", [[\"class\", \"page-link\"], [\"href\", \"\"]], null, [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n _co.selectPage(_v.parent.context.$implicit);\n var pd_0 = ($event.preventDefault() !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵand(16777216, null, null, 2, null, View_NgbPagination_16)), i0.ɵdid(2, 540672, null, 0, i2.NgTemplateOutlet, [i0.ViewContainerRef], { ngTemplateOutletContext: [0, \"ngTemplateOutletContext\"], ngTemplateOutlet: [1, \"ngTemplateOutlet\"] }, null), i0.ɵpod(3, { disabled: 0, $implicit: 1, currentPage: 2 })], function (_ck, _v) { var _co = _v.component; var currVal_0 = _ck(_v, 3, 0, _co.disabled, _v.parent.context.$implicit, _co.page); var currVal_1 = (((_co.tplNumber == null) ? null : _co.tplNumber.templateRef) || i0.ɵnov(_v.parent.parent, 5)); _ck(_v, 2, 0, currVal_0, currVal_1); }, null); }\nfunction View_NgbPagination_12(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 4, \"li\", [[\"class\", \"page-item\"]], [[2, \"active\", null], [2, \"disabled\", null]], null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbPagination_13)), i0.ɵdid(2, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbPagination_15)), i0.ɵdid(4, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_2 = _co.isEllipsis(_v.context.$implicit); _ck(_v, 2, 0, currVal_2); var currVal_3 = !_co.isEllipsis(_v.context.$implicit); _ck(_v, 4, 0, currVal_3); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = (_v.context.$implicit === _co.page); var currVal_1 = (_co.isEllipsis(_v.context.$implicit) || _co.disabled); _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nfunction View_NgbPagination_18(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nfunction View_NgbPagination_17(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 4, \"li\", [[\"class\", \"page-item\"]], [[2, \"disabled\", null]], null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 3, \"a\", [[\"aria-label\", \"Next\"], [\"class\", \"page-link\"], [\"href\", \"\"]], [[1, \"tabindex\", 0]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n _co.selectPage((_co.page + 1));\n var pd_0 = ($event.preventDefault() !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵand(16777216, null, null, 2, null, View_NgbPagination_18)), i0.ɵdid(3, 540672, null, 0, i2.NgTemplateOutlet, [i0.ViewContainerRef], { ngTemplateOutletContext: [0, \"ngTemplateOutletContext\"], ngTemplateOutlet: [1, \"ngTemplateOutlet\"] }, null), i0.ɵpod(4, { disabled: 0, currentPage: 1 })], function (_ck, _v) { var _co = _v.component; var currVal_2 = _ck(_v, 4, 0, _co.nextDisabled(), _co.page); var currVal_3 = (((_co.tplNext == null) ? null : _co.tplNext.templateRef) || i0.ɵnov(_v.parent, 2)); _ck(_v, 3, 0, currVal_2, currVal_3); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.nextDisabled(); _ck(_v, 0, 0, currVal_0); var currVal_1 = (_co.hasNext() ? null : \"-1\"); _ck(_v, 1, 0, currVal_1); }); }\nfunction View_NgbPagination_20(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nfunction View_NgbPagination_19(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 4, \"li\", [[\"class\", \"page-item\"]], [[2, \"disabled\", null]], null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 3, \"a\", [[\"aria-label\", \"Last\"], [\"class\", \"page-link\"], [\"href\", \"\"]], [[1, \"tabindex\", 0]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n _co.selectPage(_co.pageCount);\n var pd_0 = ($event.preventDefault() !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵand(16777216, null, null, 2, null, View_NgbPagination_20)), i0.ɵdid(3, 540672, null, 0, i2.NgTemplateOutlet, [i0.ViewContainerRef], { ngTemplateOutletContext: [0, \"ngTemplateOutletContext\"], ngTemplateOutlet: [1, \"ngTemplateOutlet\"] }, null), i0.ɵpod(4, { disabled: 0, currentPage: 1 })], function (_ck, _v) { var _co = _v.component; var currVal_2 = _ck(_v, 4, 0, _co.nextDisabled(), _co.page); var currVal_3 = (((_co.tplLast == null) ? null : _co.tplLast.templateRef) || i0.ɵnov(_v.parent, 3)); _ck(_v, 3, 0, currVal_2, currVal_3); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.nextDisabled(); _ck(_v, 0, 0, currVal_0); var currVal_1 = (_co.hasNext() ? null : \"-1\"); _ck(_v, 1, 0, currVal_1); }); }\nexport function View_NgbPagination_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵand(0, [[\"first\", 2]], null, 0, null, View_NgbPagination_1)), (_l()(), i0.ɵand(0, [[\"previous\", 2]], null, 0, null, View_NgbPagination_2)), (_l()(), i0.ɵand(0, [[\"next\", 2]], null, 0, null, View_NgbPagination_3)), (_l()(), i0.ɵand(0, [[\"last\", 2]], null, 0, null, View_NgbPagination_4)), (_l()(), i0.ɵand(0, [[\"ellipsis\", 2]], null, 0, null, View_NgbPagination_5)), (_l()(), i0.ɵand(0, [[\"defaultNumber\", 2]], null, 0, null, View_NgbPagination_6)), (_l()(), i0.ɵeld(6, 0, null, null, 10, \"ul\", [], [[8, \"className\", 0]], null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbPagination_8)), i0.ɵdid(8, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbPagination_10)), i0.ɵdid(10, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbPagination_12)), i0.ɵdid(12, 278528, null, 0, i2.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbPagination_17)), i0.ɵdid(14, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbPagination_19)), i0.ɵdid(16, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_1 = _co.boundaryLinks; _ck(_v, 8, 0, currVal_1); var currVal_2 = _co.directionLinks; _ck(_v, 10, 0, currVal_2); var currVal_3 = _co.pages; _ck(_v, 12, 0, currVal_3); var currVal_4 = _co.directionLinks; _ck(_v, 14, 0, currVal_4); var currVal_5 = _co.boundaryLinks; _ck(_v, 16, 0, currVal_5); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = (\"pagination\" + (_co.size ? (\" pagination-\" + _co.size) : \"\")); _ck(_v, 6, 0, currVal_0); }); }\nexport function View_NgbPagination_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 7, \"ngb-pagination\", [[\"role\", \"navigation\"]], null, null, null, View_NgbPagination_0, RenderType_NgbPagination)), i0.ɵdid(1, 573440, null, 6, i1.NgbPagination, [i1.NgbPaginationConfig], null, null), i0.ɵqud(335544320, 1, { tplEllipsis: 0 }), i0.ɵqud(335544320, 2, { tplFirst: 0 }), i0.ɵqud(335544320, 3, { tplLast: 0 }), i0.ɵqud(335544320, 4, { tplNext: 0 }), i0.ɵqud(335544320, 5, { tplNumber: 0 }), i0.ɵqud(335544320, 6, { tplPrevious: 0 })], null, null); }\nvar NgbPaginationNgFactory = i0.ɵccf(\"ngb-pagination\", i1.NgbPagination, View_NgbPagination_Host_0, { disabled: \"disabled\", boundaryLinks: \"boundaryLinks\", directionLinks: \"directionLinks\", ellipses: \"ellipses\", rotate: \"rotate\", collectionSize: \"collectionSize\", maxSize: \"maxSize\", page: \"page\", pageSize: \"pageSize\", size: \"size\" }, { pageChange: \"pageChange\" }, []);\nexport { NgbPaginationNgFactory as NgbPaginationNgFactory };\nvar styles_ɵn = [\"ngb-popover-window.bs-popover-bottom .arrow,ngb-popover-window.bs-popover-top .arrow{left:50%;margin-left:-.5rem}ngb-popover-window.bs-popover-bottom-left .arrow,ngb-popover-window.bs-popover-top-left .arrow{left:2em}ngb-popover-window.bs-popover-bottom-right .arrow,ngb-popover-window.bs-popover-top-right .arrow{left:auto;right:2em}ngb-popover-window.bs-popover-left .arrow,ngb-popover-window.bs-popover-right .arrow{top:50%;margin-top:-.5rem}ngb-popover-window.bs-popover-left-top .arrow,ngb-popover-window.bs-popover-right-top .arrow{top:.7em}ngb-popover-window.bs-popover-left-bottom .arrow,ngb-popover-window.bs-popover-right-bottom .arrow{top:auto;bottom:.7em}\"];\nvar RenderType_ɵn = i0.ɵcrt({ encapsulation: 2, styles: styles_ɵn, data: {} });\nexport { RenderType_ɵn as RenderType_ɵn };\nfunction View_ɵn_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵted(0, null, [\"\", \"\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.title; _ck(_v, 0, 0, currVal_0); }); }\nfunction View_ɵn_3(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nfunction View_ɵn_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"h3\", [[\"class\", \"popover-header\"]], null, null, null, null, null)), (_l()(), i0.ɵand(0, [[\"simpleTitle\", 2]], null, 0, null, View_ɵn_2)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ɵn_3)), i0.ɵdid(3, 540672, null, 0, i2.NgTemplateOutlet, [i0.ViewContainerRef], { ngTemplateOutletContext: [0, \"ngTemplateOutletContext\"], ngTemplateOutlet: [1, \"ngTemplateOutlet\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.context; var currVal_1 = (_co.isTitleTemplate() ? _co.title : i0.ɵnov(_v, 1)); _ck(_v, 3, 0, currVal_0, currVal_1); }, null); }\nexport function View_ɵn_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 0, null, null, 0, \"div\", [[\"class\", \"arrow\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ɵn_1)), i0.ɵdid(2, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵeld(3, 0, null, null, 1, \"div\", [[\"class\", \"popover-body\"]], null, null, null, null, null)), i0.ɵncd(null, 0)], function (_ck, _v) { var _co = _v.component; var currVal_0 = (_co.title != null); _ck(_v, 2, 0, currVal_0); }, null); }\nexport function View_ɵn_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"ngb-popover-window\", [[\"role\", \"tooltip\"]], [[8, \"className\", 0], [8, \"id\", 0]], null, null, View_ɵn_0, RenderType_ɵn)), i0.ɵdid(1, 49152, null, 0, i1.ɵn, [], null, null)], null, function (_ck, _v) { var currVal_0 = (\"popover\" + (i0.ɵnov(_v, 1).popoverClass ? (\" \" + i0.ɵnov(_v, 1).popoverClass) : \"\")); var currVal_1 = i0.ɵnov(_v, 1).id; _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nvar ɵnNgFactory = i0.ɵccf(\"ngb-popover-window\", i1.ɵn, View_ɵn_Host_0, { title: \"title\", id: \"id\", popoverClass: \"popoverClass\", context: \"context\" }, {}, [\"*\"]);\nexport { ɵnNgFactory as ɵnNgFactory };\nvar styles_NgbProgressbar = [];\nvar RenderType_NgbProgressbar = i0.ɵcrt({ encapsulation: 2, styles: styles_NgbProgressbar, data: {} });\nexport { RenderType_NgbProgressbar as RenderType_NgbProgressbar };\nfunction View_NgbProgressbar_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"span\", [], null, null, null, null, null)), (_l()(), i0.ɵted(1, null, [\"\", \"%\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.getPercentValue(); _ck(_v, 1, 0, currVal_0); }); }\nexport function View_NgbProgressbar_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 0, null, null, 4, \"div\", [[\"class\", \"progress\"]], [[4, \"height\", null]], null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 3, \"div\", [[\"aria-valuemin\", \"0\"], [\"role\", \"progressbar\"]], [[8, \"className\", 0], [4, \"width\", \"%\"], [1, \"aria-valuenow\", 0], [1, \"aria-valuemax\", 0]], null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbProgressbar_1)), i0.ɵdid(3, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i0.ɵncd(null, 0)], function (_ck, _v) { var _co = _v.component; var currVal_5 = _co.showValue; _ck(_v, 3, 0, currVal_5); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.height; _ck(_v, 0, 0, currVal_0); var currVal_1 = i0.ɵinlineInterpolate(3, \"progress-bar\", (_co.type ? (\" bg-\" + _co.type) : \"\"), \"\", (_co.animated ? \" progress-bar-animated\" : \"\"), \"\", (_co.striped ? \" progress-bar-striped\" : \"\"), \"\"); var currVal_2 = _co.getPercentValue(); var currVal_3 = _co.getValue(); var currVal_4 = _co.max; _ck(_v, 1, 0, currVal_1, currVal_2, currVal_3, currVal_4); }); }\nexport function View_NgbProgressbar_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"ngb-progressbar\", [], null, null, null, View_NgbProgressbar_0, RenderType_NgbProgressbar)), i0.ɵdid(1, 49152, null, 0, i1.NgbProgressbar, [i1.NgbProgressbarConfig], null, null)], null, null); }\nvar NgbProgressbarNgFactory = i0.ɵccf(\"ngb-progressbar\", i1.NgbProgressbar, View_NgbProgressbar_Host_0, { max: \"max\", animated: \"animated\", striped: \"striped\", showValue: \"showValue\", type: \"type\", value: \"value\", height: \"height\" }, {}, [\"*\"]);\nexport { NgbProgressbarNgFactory as NgbProgressbarNgFactory };\nvar styles_NgbRating = [];\nvar RenderType_NgbRating = i0.ɵcrt({ encapsulation: 2, styles: styles_NgbRating, data: {} });\nexport { RenderType_NgbRating as RenderType_NgbRating };\nfunction View_NgbRating_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵted(0, null, [\"\", \"\"]))], null, function (_ck, _v) { var currVal_0 = ((_v.context.fill === 100) ? \"\\u2605\" : \"\\u2606\"); _ck(_v, 0, 0, currVal_0); }); }\nfunction View_NgbRating_3(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nfunction View_NgbRating_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"span\", [[\"class\", \"sr-only\"]], null, null, null, null, null)), (_l()(), i0.ɵted(1, null, [\"(\", \")\"])), (_l()(), i0.ɵeld(2, 0, null, null, 2, \"span\", [], [[4, \"cursor\", null]], [[null, \"mouseenter\"], [null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"mouseenter\" === en)) {\n var pd_0 = (_co.enter((_v.context.index + 1)) !== false);\n ad = (pd_0 && ad);\n } if ((\"click\" === en)) {\n var pd_1 = (_co.handleClick((_v.context.index + 1)) !== false);\n ad = (pd_1 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbRating_3)), i0.ɵdid(4, 540672, null, 0, i2.NgTemplateOutlet, [i0.ViewContainerRef], { ngTemplateOutletContext: [0, \"ngTemplateOutletContext\"], ngTemplateOutlet: [1, \"ngTemplateOutlet\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_2 = _co.contexts[_v.context.index]; var currVal_3 = ((_co.starTemplate || _co.starTemplateFromContent) || i0.ɵnov(_v.parent, 0)); _ck(_v, 4, 0, currVal_2, currVal_3); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = ((_v.context.index < _co.nextRate) ? \"*\" : \" \"); _ck(_v, 1, 0, currVal_0); var currVal_1 = ((_co.readonly || _co.disabled) ? \"default\" : \"pointer\"); _ck(_v, 2, 0, currVal_1); }); }\nexport function View_NgbRating_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵand(0, [[\"t\", 2]], null, 0, null, View_NgbRating_1)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbRating_2)), i0.ɵdid(2, 278528, null, 0, i2.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.contexts; _ck(_v, 2, 0, currVal_0); }, null); }\nexport function View_NgbRating_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"ngb-rating\", [[\"aria-valuemin\", \"0\"], [\"class\", \"d-inline-flex\"], [\"role\", \"slider\"], [\"tabindex\", \"0\"]], [[1, \"aria-valuemax\", 0], [1, \"aria-valuenow\", 0], [1, \"aria-valuetext\", 0], [1, \"aria-disabled\", 0]], [[null, \"blur\"], [null, \"keydown\"], [null, \"mouseleave\"]], function (_v, en, $event) { var ad = true; if ((\"blur\" === en)) {\n var pd_0 = (i0.ɵnov(_v, 2).handleBlur() !== false);\n ad = (pd_0 && ad);\n } if ((\"keydown\" === en)) {\n var pd_1 = (i0.ɵnov(_v, 2).handleKeyDown($event) !== false);\n ad = (pd_1 && ad);\n } if ((\"mouseleave\" === en)) {\n var pd_2 = (i0.ɵnov(_v, 2).reset() !== false);\n ad = (pd_2 && ad);\n } return ad; }, View_NgbRating_0, RenderType_NgbRating)), i0.ɵprd(5120, null, i3.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i1.NgbRating]), i0.ɵdid(2, 638976, null, 1, i1.NgbRating, [i1.NgbRatingConfig, i0.ChangeDetectorRef], null, null), i0.ɵqud(335544320, 1, { starTemplateFromContent: 0 })], function (_ck, _v) { _ck(_v, 2, 0); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 2).max; var currVal_1 = i0.ɵnov(_v, 2).nextRate; var currVal_2 = i0.ɵnov(_v, 2).ariaValueText(); var currVal_3 = (i0.ɵnov(_v, 2).readonly ? true : null); _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3); }); }\nvar NgbRatingNgFactory = i0.ɵccf(\"ngb-rating\", i1.NgbRating, View_NgbRating_Host_0, { max: \"max\", rate: \"rate\", readonly: \"readonly\", resettable: \"resettable\", starTemplate: \"starTemplate\" }, { hover: \"hover\", leave: \"leave\", rateChange: \"rateChange\" }, []);\nexport { NgbRatingNgFactory as NgbRatingNgFactory };\nvar styles_NgbTabset = [];\nvar RenderType_NgbTabset = i0.ɵcrt({ encapsulation: 2, styles: styles_NgbTabset, data: {} });\nexport { RenderType_NgbTabset as RenderType_NgbTabset };\nfunction View_NgbTabset_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nfunction View_NgbTabset_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 4, \"li\", [[\"class\", \"nav-item\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 3, \"a\", [[\"class\", \"nav-link\"], [\"href\", \"\"], [\"role\", \"tab\"]], [[8, \"id\", 0], [2, \"active\", null], [2, \"disabled\", null], [1, \"tabindex\", 0], [1, \"aria-controls\", 0], [1, \"aria-selected\", 0], [1, \"aria-disabled\", 0]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n _co.select(_v.context.$implicit.id);\n var pd_0 = ($event.preventDefault() !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵted(2, null, [\" \", \"\"])), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbTabset_2)), i0.ɵdid(4, 540672, null, 0, i2.NgTemplateOutlet, [i0.ViewContainerRef], { ngTemplateOutlet: [0, \"ngTemplateOutlet\"] }, null)], function (_ck, _v) { var currVal_8 = ((_v.context.$implicit.titleTpl == null) ? null : _v.context.$implicit.titleTpl.templateRef); _ck(_v, 4, 0, currVal_8); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _v.context.$implicit.id; var currVal_1 = (_v.context.$implicit.id === _co.activeId); var currVal_2 = _v.context.$implicit.disabled; var currVal_3 = (_v.context.$implicit.disabled ? \"-1\" : undefined); var currVal_4 = ((!_co.destroyOnHide || (_v.context.$implicit.id === _co.activeId)) ? (_v.context.$implicit.id + \"-panel\") : null); var currVal_5 = (_v.context.$implicit.id === _co.activeId); var currVal_6 = _v.context.$implicit.disabled; _ck(_v, 1, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5, currVal_6); var currVal_7 = _v.context.$implicit.title; _ck(_v, 2, 0, currVal_7); }); }\nfunction View_NgbTabset_5(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nfunction View_NgbTabset_4(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"div\", [[\"role\", \"tabpanel\"]], [[8, \"className\", 0], [1, \"aria-labelledby\", 0], [8, \"id\", 0]], null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbTabset_5)), i0.ɵdid(2, 540672, null, 0, i2.NgTemplateOutlet, [i0.ViewContainerRef], { ngTemplateOutlet: [0, \"ngTemplateOutlet\"] }, null)], function (_ck, _v) { var currVal_3 = ((_v.parent.context.$implicit.contentTpl == null) ? null : _v.parent.context.$implicit.contentTpl.templateRef); _ck(_v, 2, 0, currVal_3); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = i0.ɵinlineInterpolate(1, \"tab-pane \", ((_v.parent.context.$implicit.id === _co.activeId) ? \"active\" : null), \"\"); var currVal_1 = _v.parent.context.$implicit.id; var currVal_2 = i0.ɵinlineInterpolate(1, \"\", _v.parent.context.$implicit.id, \"-panel\"); _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2); }); }\nfunction View_NgbTabset_3(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbTabset_4)), i0.ɵdid(1, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(0, null, null, 0))], function (_ck, _v) { var _co = _v.component; var currVal_0 = (!_co.destroyOnHide || (_v.context.$implicit.id === _co.activeId)); _ck(_v, 1, 0, currVal_0); }, null); }\nexport function View_NgbTabset_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"ul\", [[\"role\", \"tablist\"]], [[8, \"className\", 0]], null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbTabset_1)), i0.ɵdid(2, 278528, null, 0, i2.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null), (_l()(), i0.ɵeld(3, 0, null, null, 2, \"div\", [[\"class\", \"tab-content\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbTabset_3)), i0.ɵdid(5, 278528, null, 0, i2.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_1 = _co.tabs; _ck(_v, 2, 0, currVal_1); var currVal_2 = _co.tabs; _ck(_v, 5, 0, currVal_2); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = ((\"nav nav-\" + _co.type) + ((_co.orientation == \"horizontal\") ? (\" \" + _co.justifyClass) : \" flex-column\")); _ck(_v, 0, 0, currVal_0); }); }\nexport function View_NgbTabset_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"ngb-tabset\", [], null, null, null, View_NgbTabset_0, RenderType_NgbTabset)), i0.ɵdid(1, 2146304, null, 1, i1.NgbTabset, [i1.NgbTabsetConfig], null, null), i0.ɵqud(603979776, 1, { tabs: 1 })], null, null); }\nvar NgbTabsetNgFactory = i0.ɵccf(\"ngb-tabset\", i1.NgbTabset, View_NgbTabset_Host_0, { activeId: \"activeId\", destroyOnHide: \"destroyOnHide\", justify: \"justify\", orientation: \"orientation\", type: \"type\" }, { tabChange: \"tabChange\" }, []);\nexport { NgbTabsetNgFactory as NgbTabsetNgFactory };\nvar styles_NgbTimepicker = [\"ngb-timepicker{font-size:1rem}.ngb-tp{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.ngb-tp-input-container{width:4em}.ngb-tp-chevron::before{border-style:solid;border-width:.29em .29em 0 0;content:'';display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;-webkit-transform:rotate(135deg);transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-meridian,.ngb-tp-minute,.ngb-tp-second{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.ngb-tp-spacer{width:1em;text-align:center}\"];\nvar RenderType_NgbTimepicker = i0.ɵcrt({ encapsulation: 2, styles: styles_NgbTimepicker, data: {} });\nexport { RenderType_NgbTimepicker as RenderType_NgbTimepicker };\nfunction View_NgbTimepicker_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"button\", [[\"class\", \"btn btn-link\"], [\"tabindex\", \"-1\"], [\"type\", \"button\"]], [[2, \"btn-sm\", null], [2, \"btn-lg\", null], [2, \"disabled\", null], [8, \"disabled\", 0]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co.changeHour(_co.hourStep) !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 0, \"span\", [[\"class\", \"chevron ngb-tp-chevron\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(2, 0, null, null, 1, \"span\", [[\"class\", \"sr-only\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"Increment hours\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.isSmallSize; var currVal_1 = _co.isLargeSize; var currVal_2 = _co.disabled; var currVal_3 = _co.disabled; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3); }); }\nfunction View_NgbTimepicker_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"button\", [[\"class\", \"btn btn-link\"], [\"tabindex\", \"-1\"], [\"type\", \"button\"]], [[2, \"btn-sm\", null], [2, \"btn-lg\", null], [2, \"disabled\", null], [8, \"disabled\", 0]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co.changeHour((0 - _co.hourStep)) !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 0, \"span\", [[\"class\", \"chevron ngb-tp-chevron bottom\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(2, 0, null, null, 1, \"span\", [[\"class\", \"sr-only\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"Decrement hours\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.isSmallSize; var currVal_1 = _co.isLargeSize; var currVal_2 = _co.disabled; var currVal_3 = _co.disabled; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3); }); }\nfunction View_NgbTimepicker_3(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"button\", [[\"class\", \"btn btn-link\"], [\"tabindex\", \"-1\"], [\"type\", \"button\"]], [[2, \"btn-sm\", null], [2, \"btn-lg\", null], [2, \"disabled\", null], [8, \"disabled\", 0]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co.changeMinute(_co.minuteStep) !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 0, \"span\", [[\"class\", \"chevron ngb-tp-chevron\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(2, 0, null, null, 1, \"span\", [[\"class\", \"sr-only\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"Increment minutes\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.isSmallSize; var currVal_1 = _co.isLargeSize; var currVal_2 = _co.disabled; var currVal_3 = _co.disabled; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3); }); }\nfunction View_NgbTimepicker_4(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"button\", [[\"class\", \"btn btn-link\"], [\"tabindex\", \"-1\"], [\"type\", \"button\"]], [[2, \"btn-sm\", null], [2, \"btn-lg\", null], [2, \"disabled\", null], [8, \"disabled\", 0]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co.changeMinute((0 - _co.minuteStep)) !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 0, \"span\", [[\"class\", \"chevron ngb-tp-chevron bottom\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(2, 0, null, null, 1, \"span\", [[\"class\", \"sr-only\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"Decrement minutes\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.isSmallSize; var currVal_1 = _co.isLargeSize; var currVal_2 = _co.disabled; var currVal_3 = _co.disabled; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3); }); }\nfunction View_NgbTimepicker_5(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"div\", [[\"class\", \"ngb-tp-spacer\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\":\"]))], null, null); }\nfunction View_NgbTimepicker_7(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"button\", [[\"class\", \"btn btn-link\"], [\"tabindex\", \"-1\"], [\"type\", \"button\"]], [[2, \"btn-sm\", null], [2, \"btn-lg\", null], [2, \"disabled\", null], [8, \"disabled\", 0]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co.changeSecond(_co.secondStep) !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 0, \"span\", [[\"class\", \"chevron ngb-tp-chevron\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(2, 0, null, null, 1, \"span\", [[\"class\", \"sr-only\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"Increment seconds\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.isSmallSize; var currVal_1 = _co.isLargeSize; var currVal_2 = _co.disabled; var currVal_3 = _co.disabled; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3); }); }\nfunction View_NgbTimepicker_8(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"button\", [[\"class\", \"btn btn-link\"], [\"tabindex\", \"-1\"], [\"type\", \"button\"]], [[2, \"btn-sm\", null], [2, \"btn-lg\", null], [2, \"disabled\", null], [8, \"disabled\", 0]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co.changeSecond((0 - _co.secondStep)) !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 0, \"span\", [[\"class\", \"chevron ngb-tp-chevron bottom\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(2, 0, null, null, 1, \"span\", [[\"class\", \"sr-only\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"Decrement seconds\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.isSmallSize; var currVal_1 = _co.isLargeSize; var currVal_2 = _co.disabled; var currVal_3 = _co.disabled; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3); }); }\nfunction View_NgbTimepicker_6(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 5, \"div\", [[\"class\", \"ngb-tp-input-container ngb-tp-second\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbTimepicker_7)), i0.ɵdid(2, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵeld(3, 0, null, null, 0, \"input\", [[\"aria-label\", \"Seconds\"], [\"class\", \"ngb-tp-input form-control\"], [\"maxlength\", \"2\"], [\"placeholder\", \"SS\"], [\"type\", \"text\"]], [[2, \"form-control-sm\", null], [2, \"form-control-lg\", null], [8, \"value\", 0], [8, \"readOnly\", 0], [8, \"disabled\", 0]], [[null, \"change\"], [null, \"keydown.ArrowUp\"], [null, \"keydown.ArrowDown\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"change\" === en)) {\n var pd_0 = (_co.updateSecond($event.target.value) !== false);\n ad = (pd_0 && ad);\n } if ((\"keydown.ArrowUp\" === en)) {\n _co.changeSecond(_co.secondStep);\n var pd_1 = ($event.preventDefault() !== false);\n ad = (pd_1 && ad);\n } if ((\"keydown.ArrowDown\" === en)) {\n _co.changeSecond((0 - _co.secondStep));\n var pd_2 = ($event.preventDefault() !== false);\n ad = (pd_2 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbTimepicker_8)), i0.ɵdid(5, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.spinners; _ck(_v, 2, 0, currVal_0); var currVal_6 = _co.spinners; _ck(_v, 5, 0, currVal_6); }, function (_ck, _v) { var _co = _v.component; var currVal_1 = _co.isSmallSize; var currVal_2 = _co.isLargeSize; var currVal_3 = _co.formatMinSec(((_co.model == null) ? null : _co.model.second)); var currVal_4 = _co.readonlyInputs; var currVal_5 = _co.disabled; _ck(_v, 3, 0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5); }); }\nfunction View_NgbTimepicker_9(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 0, \"div\", [[\"class\", \"ngb-tp-spacer\"]], null, null, null, null, null))], null, null); }\nfunction View_NgbTimepicker_11(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, null, null, null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"PM\"]))], null, null); }\nfunction View_NgbTimepicker_12(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵted(-1, null, [\"AM\"]))], null, null); }\nfunction View_NgbTimepicker_10(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 4, \"div\", [[\"class\", \"ngb-tp-meridian\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 3, \"button\", [[\"class\", \"btn btn-outline-primary\"], [\"type\", \"button\"]], [[2, \"btn-sm\", null], [2, \"btn-lg\", null], [8, \"disabled\", 0], [2, \"disabled\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n var pd_0 = (_co.toggleMeridian() !== false);\n ad = (pd_0 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbTimepicker_11)), i0.ɵdid(3, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"], ngIfElse: [1, \"ngIfElse\"] }, null), (_l()(), i0.ɵand(0, [[\"am\", 2]], null, 0, null, View_NgbTimepicker_12))], function (_ck, _v) { var _co = _v.component; var currVal_4 = (((_co.model == null) ? null : _co.model.hour) >= 12); var currVal_5 = i0.ɵnov(_v, 4); _ck(_v, 3, 0, currVal_4, currVal_5); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.isSmallSize; var currVal_1 = _co.isLargeSize; var currVal_2 = _co.disabled; var currVal_3 = _co.disabled; _ck(_v, 1, 0, currVal_0, currVal_1, currVal_2, currVal_3); }); }\nexport function View_NgbTimepicker_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 23, \"fieldset\", [], [[8, \"disabled\", 0], [2, \"disabled\", null]], null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 22, \"div\", [[\"class\", \"ngb-tp\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(2, 0, null, null, 5, \"div\", [[\"class\", \"ngb-tp-input-container ngb-tp-hour\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbTimepicker_1)), i0.ɵdid(4, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵeld(5, 0, null, null, 0, \"input\", [[\"aria-label\", \"Hours\"], [\"class\", \"ngb-tp-input form-control\"], [\"maxlength\", \"2\"], [\"placeholder\", \"HH\"], [\"type\", \"text\"]], [[2, \"form-control-sm\", null], [2, \"form-control-lg\", null], [8, \"value\", 0], [8, \"readOnly\", 0], [8, \"disabled\", 0]], [[null, \"change\"], [null, \"keydown.ArrowUp\"], [null, \"keydown.ArrowDown\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"change\" === en)) {\n var pd_0 = (_co.updateHour($event.target.value) !== false);\n ad = (pd_0 && ad);\n } if ((\"keydown.ArrowUp\" === en)) {\n _co.changeHour(_co.hourStep);\n var pd_1 = ($event.preventDefault() !== false);\n ad = (pd_1 && ad);\n } if ((\"keydown.ArrowDown\" === en)) {\n _co.changeHour((0 - _co.hourStep));\n var pd_2 = ($event.preventDefault() !== false);\n ad = (pd_2 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbTimepicker_2)), i0.ɵdid(7, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵeld(8, 0, null, null, 1, \"div\", [[\"class\", \"ngb-tp-spacer\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\":\"])), (_l()(), i0.ɵeld(10, 0, null, null, 5, \"div\", [[\"class\", \"ngb-tp-input-container ngb-tp-minute\"]], null, null, null, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbTimepicker_3)), i0.ɵdid(12, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵeld(13, 0, null, null, 0, \"input\", [[\"aria-label\", \"Minutes\"], [\"class\", \"ngb-tp-input form-control\"], [\"maxlength\", \"2\"], [\"placeholder\", \"MM\"], [\"type\", \"text\"]], [[2, \"form-control-sm\", null], [2, \"form-control-lg\", null], [8, \"value\", 0], [8, \"readOnly\", 0], [8, \"disabled\", 0]], [[null, \"change\"], [null, \"keydown.ArrowUp\"], [null, \"keydown.ArrowDown\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"change\" === en)) {\n var pd_0 = (_co.updateMinute($event.target.value) !== false);\n ad = (pd_0 && ad);\n } if ((\"keydown.ArrowUp\" === en)) {\n _co.changeMinute(_co.minuteStep);\n var pd_1 = ($event.preventDefault() !== false);\n ad = (pd_1 && ad);\n } if ((\"keydown.ArrowDown\" === en)) {\n _co.changeMinute((0 - _co.minuteStep));\n var pd_2 = ($event.preventDefault() !== false);\n ad = (pd_2 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbTimepicker_4)), i0.ɵdid(15, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbTimepicker_5)), i0.ɵdid(17, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbTimepicker_6)), i0.ɵdid(19, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbTimepicker_9)), i0.ɵdid(21, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbTimepicker_10)), i0.ɵdid(23, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_2 = _co.spinners; _ck(_v, 4, 0, currVal_2); var currVal_8 = _co.spinners; _ck(_v, 7, 0, currVal_8); var currVal_9 = _co.spinners; _ck(_v, 12, 0, currVal_9); var currVal_15 = _co.spinners; _ck(_v, 15, 0, currVal_15); var currVal_16 = _co.seconds; _ck(_v, 17, 0, currVal_16); var currVal_17 = _co.seconds; _ck(_v, 19, 0, currVal_17); var currVal_18 = _co.meridian; _ck(_v, 21, 0, currVal_18); var currVal_19 = _co.meridian; _ck(_v, 23, 0, currVal_19); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.disabled; var currVal_1 = _co.disabled; _ck(_v, 0, 0, currVal_0, currVal_1); var currVal_3 = _co.isSmallSize; var currVal_4 = _co.isLargeSize; var currVal_5 = _co.formatHour(((_co.model == null) ? null : _co.model.hour)); var currVal_6 = _co.readonlyInputs; var currVal_7 = _co.disabled; _ck(_v, 5, 0, currVal_3, currVal_4, currVal_5, currVal_6, currVal_7); var currVal_10 = _co.isSmallSize; var currVal_11 = _co.isLargeSize; var currVal_12 = _co.formatMinSec(((_co.model == null) ? null : _co.model.minute)); var currVal_13 = _co.readonlyInputs; var currVal_14 = _co.disabled; _ck(_v, 13, 0, currVal_10, currVal_11, currVal_12, currVal_13, currVal_14); }); }\nexport function View_NgbTimepicker_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"ngb-timepicker\", [], null, null, null, View_NgbTimepicker_0, RenderType_NgbTimepicker)), i0.ɵprd(5120, null, i3.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i1.NgbTimepicker]), i0.ɵdid(2, 573440, null, 0, i1.NgbTimepicker, [i1.NgbTimepickerConfig, i1.NgbTimeAdapter, i0.ChangeDetectorRef], null, null)], null, null); }\nvar NgbTimepickerNgFactory = i0.ɵccf(\"ngb-timepicker\", i1.NgbTimepicker, View_NgbTimepicker_Host_0, { meridian: \"meridian\", spinners: \"spinners\", seconds: \"seconds\", hourStep: \"hourStep\", minuteStep: \"minuteStep\", secondStep: \"secondStep\", readonlyInputs: \"readonlyInputs\", size: \"size\" }, {}, []);\nexport { NgbTimepickerNgFactory as NgbTimepickerNgFactory };\nvar styles_ɵq = [\"ngb-tooltip-window.bs-tooltip-bottom .arrow,ngb-tooltip-window.bs-tooltip-top .arrow{left:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-bottom-left .arrow,ngb-tooltip-window.bs-tooltip-top-left .arrow{left:1em}ngb-tooltip-window.bs-tooltip-bottom-right .arrow,ngb-tooltip-window.bs-tooltip-top-right .arrow{left:auto;right:.8rem}ngb-tooltip-window.bs-tooltip-left .arrow,ngb-tooltip-window.bs-tooltip-right .arrow{top:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-left-top .arrow,ngb-tooltip-window.bs-tooltip-right-top .arrow{top:.4rem}ngb-tooltip-window.bs-tooltip-left-bottom .arrow,ngb-tooltip-window.bs-tooltip-right-bottom .arrow{top:auto;bottom:.4rem}\"];\nvar RenderType_ɵq = i0.ɵcrt({ encapsulation: 2, styles: styles_ɵq, data: {} });\nexport { RenderType_ɵq as RenderType_ɵq };\nexport function View_ɵq_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 0, null, null, 0, \"div\", [[\"class\", \"arrow\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 1, \"div\", [[\"class\", \"tooltip-inner\"]], null, null, null, null, null)), i0.ɵncd(null, 0)], null, null); }\nexport function View_ɵq_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"ngb-tooltip-window\", [[\"role\", \"tooltip\"]], [[8, \"className\", 0], [8, \"id\", 0]], null, null, View_ɵq_0, RenderType_ɵq)), i0.ɵdid(1, 49152, null, 0, i1.ɵq, [], null, null)], null, function (_ck, _v) { var currVal_0 = (\"tooltip show\" + (i0.ɵnov(_v, 1).tooltipClass ? (\" \" + i0.ɵnov(_v, 1).tooltipClass) : \"\")); var currVal_1 = i0.ɵnov(_v, 1).id; _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nvar ɵqNgFactory = i0.ɵccf(\"ngb-tooltip-window\", i1.ɵq, View_ɵq_Host_0, { id: \"id\", tooltipClass: \"tooltipClass\" }, {}, [\"*\"]);\nexport { ɵqNgFactory as ɵqNgFactory };\nvar styles_ɵr = [];\nvar RenderType_ɵr = i0.ɵcrt({ encapsulation: 2, styles: styles_ɵr, data: {} });\nexport { RenderType_ɵr as RenderType_ɵr };\nfunction View_ɵr_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"ngb-highlight\", [], null, null, null, View_NgbHighlight_0, RenderType_NgbHighlight)), i0.ɵdid(1, 573440, null, 0, i1.NgbHighlight, [], { result: [0, \"result\"], term: [1, \"term\"] }, null)], function (_ck, _v) { var currVal_0 = _v.context.formatter(_v.context.result); var currVal_1 = _v.context.term; _ck(_v, 1, 0, currVal_0, currVal_1); }, null); }\nfunction View_ɵr_3(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, null, null, 0))], null, null); }\nfunction View_ɵr_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"button\", [[\"class\", \"dropdown-item\"], [\"role\", \"option\"], [\"type\", \"button\"]], [[8, \"id\", 0], [2, \"active\", null]], [[null, \"mouseenter\"], [null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"mouseenter\" === en)) {\n var pd_0 = (_co.markActive(_v.context.index) !== false);\n ad = (pd_0 && ad);\n } if ((\"click\" === en)) {\n var pd_1 = (_co.select(_v.context.$implicit) !== false);\n ad = (pd_1 && ad);\n } return ad; }, null, null)), (_l()(), i0.ɵand(16777216, null, null, 2, null, View_ɵr_3)), i0.ɵdid(2, 540672, null, 0, i2.NgTemplateOutlet, [i0.ViewContainerRef], { ngTemplateOutletContext: [0, \"ngTemplateOutletContext\"], ngTemplateOutlet: [1, \"ngTemplateOutlet\"] }, null), i0.ɵpod(3, { result: 0, term: 1, formatter: 2 })], function (_ck, _v) { var _co = _v.component; var currVal_2 = _ck(_v, 3, 0, _v.context.$implicit, _co.term, _co.formatter); var currVal_3 = (_co.resultTemplate || i0.ɵnov(_v.parent, 0)); _ck(_v, 2, 0, currVal_2, currVal_3); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = ((_co.id + \"-\") + _v.context.index); var currVal_1 = (_v.context.index === _co.activeIdx); _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nexport function View_ɵr_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(0, [[\"rt\", 2]], null, 0, null, View_ɵr_1)), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ɵr_2)), i0.ɵdid(2, 278528, null, 0, i2.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.results; _ck(_v, 2, 0, currVal_0); }, null); }\nexport function View_ɵr_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"ngb-typeahead-window\", [[\"class\", \"dropdown-menu show\"], [\"role\", \"listbox\"]], [[8, \"id\", 0]], [[null, \"mousedown\"]], function (_v, en, $event) { var ad = true; if ((\"mousedown\" === en)) {\n var pd_0 = ($event.preventDefault() !== false);\n ad = (pd_0 && ad);\n } return ad; }, View_ɵr_0, RenderType_ɵr)), i0.ɵdid(1, 114688, null, 0, i1.ɵr, [], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1).id; _ck(_v, 0, 0, currVal_0); }); }\nvar ɵrNgFactory = i0.ɵccf(\"ngb-typeahead-window\", i1.ɵr, View_ɵr_Host_0, { id: \"id\", focusFirst: \"focusFirst\", results: \"results\", term: \"term\", formatter: \"formatter\", resultTemplate: \"resultTemplate\" }, { selectEvent: \"select\", activeChangeEvent: \"activeChange\" }, []);\nexport { ɵrNgFactory as ɵrNgFactory };\nvar styles_NgbHighlight = [\".ngb-highlight{font-weight:700}\"];\nvar RenderType_NgbHighlight = i0.ɵcrt({ encapsulation: 2, styles: styles_NgbHighlight, data: {} });\nexport { RenderType_NgbHighlight as RenderType_NgbHighlight };\nfunction View_NgbHighlight_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"span\", [], [[8, \"className\", 0]], null, null, null, null)), (_l()(), i0.ɵted(1, null, [\"\", \"\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.highlightClass; _ck(_v, 0, 0, currVal_0); var currVal_1 = _v.parent.context.$implicit; _ck(_v, 1, 0, currVal_1); }); }\nfunction View_NgbHighlight_3(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵted(0, null, [\"\", \"\"]))], null, function (_ck, _v) { var currVal_0 = _v.parent.context.$implicit; _ck(_v, 0, 0, currVal_0); }); }\nfunction View_NgbHighlight_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbHighlight_2)), i0.ɵdid(1, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"], ngIfElse: [1, \"ngIfElse\"] }, null), (_l()(), i0.ɵand(0, [[\"even\", 2]], null, 0, null, View_NgbHighlight_3))], function (_ck, _v) { var currVal_0 = _v.context.odd; var currVal_1 = i0.ɵnov(_v, 2); _ck(_v, 1, 0, currVal_0, currVal_1); }, null); }\nexport function View_NgbHighlight_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵand(16777216, null, null, 1, null, View_NgbHighlight_1)), i0.ɵdid(1, 278528, null, 0, i2.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.parts; _ck(_v, 1, 0, currVal_0); }, null); }\nexport function View_NgbHighlight_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"ngb-highlight\", [], null, null, null, View_NgbHighlight_0, RenderType_NgbHighlight)), i0.ɵdid(1, 573440, null, 0, i1.NgbHighlight, [], null, null)], null, null); }\nvar NgbHighlightNgFactory = i0.ɵccf(\"ngb-highlight\", i1.NgbHighlight, View_NgbHighlight_Host_0, { highlightClass: \"highlightClass\", result: \"result\", term: \"term\" }, {}, []);\nexport { NgbHighlightNgFactory as NgbHighlightNgFactory };\nvar styles_ɵu = [];\nvar RenderType_ɵu = i0.ɵcrt({ encapsulation: 2, styles: styles_ɵu, data: {} });\nexport { RenderType_ɵu as RenderType_ɵu };\nexport function View_ɵu_0(_l) { return i0.ɵvid(0, [], null, null); }\nexport function View_ɵu_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"ngb-modal-backdrop\", [[\"style\", \"z-index: 1050\"]], [[8, \"className\", 0]], null, null, View_ɵu_0, RenderType_ɵu)), i0.ɵdid(1, 49152, null, 0, i1.ɵu, [], null, null)], null, function (_ck, _v) { var currVal_0 = (\"modal-backdrop fade show\" + (i0.ɵnov(_v, 1).backdropClass ? (\" \" + i0.ɵnov(_v, 1).backdropClass) : \"\")); _ck(_v, 0, 0, currVal_0); }); }\nvar ɵuNgFactory = i0.ɵccf(\"ngb-modal-backdrop\", i1.ɵu, View_ɵu_Host_0, { backdropClass: \"backdropClass\" }, {}, []);\nexport { ɵuNgFactory as ɵuNgFactory };\nvar styles_ɵv = [];\nvar RenderType_ɵv = i0.ɵcrt({ encapsulation: 2, styles: styles_ɵv, data: {} });\nexport { RenderType_ɵv as RenderType_ɵv };\nexport function View_ɵv_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"div\", [[\"role\", \"document\"]], [[8, \"className\", 0]], null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 1, \"div\", [[\"class\", \"modal-content\"]], null, null, null, null, null)), i0.ɵncd(null, 0)], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = ((\"modal-dialog\" + (_co.size ? (\" modal-\" + _co.size) : \"\")) + (_co.centered ? \" modal-dialog-centered\" : \"\")); _ck(_v, 0, 0, currVal_0); }); }\nexport function View_ɵv_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"ngb-modal-window\", [[\"role\", \"dialog\"], [\"tabindex\", \"-1\"]], [[8, \"className\", 0], [1, \"aria-modal\", 0], [1, \"aria-labelledby\", 0]], [[null, \"keyup.esc\"], [null, \"click\"]], function (_v, en, $event) { var ad = true; if ((\"keyup.esc\" === en)) {\n var pd_0 = (i0.ɵnov(_v, 1).escKey($event) !== false);\n ad = (pd_0 && ad);\n } if ((\"click\" === en)) {\n var pd_1 = (i0.ɵnov(_v, 1).backdropClick($event) !== false);\n ad = (pd_1 && ad);\n } return ad; }, View_ɵv_0, RenderType_ɵv)), i0.ɵdid(1, 4440064, null, 0, i1.ɵv, [i2.DOCUMENT, i0.ElementRef], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, function (_ck, _v) { var currVal_0 = (\"modal fade show d-block\" + (i0.ɵnov(_v, 1).windowClass ? (\" \" + i0.ɵnov(_v, 1).windowClass) : \"\")); var currVal_1 = true; var currVal_2 = i0.ɵnov(_v, 1).ariaLabelledBy; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2); }); }\nvar ɵvNgFactory = i0.ɵccf(\"ngb-modal-window\", i1.ɵv, View_ɵv_Host_0, { ariaLabelledBy: \"ariaLabelledBy\", backdrop: \"backdrop\", centered: \"centered\", keyboard: \"keyboard\", size: \"size\", windowClass: \"windowClass\" }, { dismissEvent: \"dismiss\" }, [\"*\"]);\nexport { ɵvNgFactory as ɵvNgFactory };\n","\n \n \n ","\n
\n
\n
\n {{ i18n.getWeekdayShortName(w) }}\n
\n
\n \n
\n
{{ i18n.getWeekNumerals(week.number) }}
\n
\n \n \n \n
\n
\n
\n ","{{ i18n.getDayNumerals(date) }}","\n
\n \n
\n \n \n\n \n
0\">
\n
\n {{ i18n.getMonthFullName(month.number, month.year) }} {{ i18n.getYearNumerals(month.year) }}\n
\n
\n
\n
\n \n
\n ","\n \n \n \n \n \n ","\n \n
\n
\n
\n\n
\n \n \n
\n\n
\n \n
\n
1 && navigation === 'select')\"\n class=\"ngb-dp-month-name bg-light\">\n {{ i18n.getMonthFullName(month.number, month.year) }} {{ i18n.getYearNumerals(month.year) }}\n
\n \n \n
\n
\n
\n\n \n ","\n
\n

\n {{title}}\n \n

\n
","
","\n \n \n \n \n \n \n ","{{part}}{{part}}","\n
\n
\n
\n ","/** PURE_IMPORTS_START tslib,_innerSubscribe PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function catchError(selector) {\n return function catchErrorOperatorFunction(source) {\n var operator = new CatchOperator(selector);\n var caught = source.lift(operator);\n return (operator.caught = caught);\n };\n}\nvar CatchOperator = /*@__PURE__*/ (function () {\n function CatchOperator(selector) {\n this.selector = selector;\n }\n CatchOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n };\n return CatchOperator;\n}());\nvar CatchSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(CatchSubscriber, _super);\n function CatchSubscriber(destination, selector, caught) {\n var _this = _super.call(this, destination) || this;\n _this.selector = selector;\n _this.caught = caught;\n return _this;\n }\n CatchSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var result = void 0;\n try {\n result = this.selector(err, this.caught);\n }\n catch (err2) {\n _super.prototype.error.call(this, err2);\n return;\n }\n this._unsubscribeAndRecycle();\n var innerSubscriber = new SimpleInnerSubscriber(this);\n this.add(innerSubscriber);\n var innerSubscription = innerSubscribe(result, innerSubscriber);\n if (innerSubscription !== innerSubscriber) {\n this.add(innerSubscription);\n }\n }\n };\n return CatchSubscriber;\n}(SimpleOuterSubscriber));\n//# sourceMappingURL=catchError.js.map\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays:\n 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays:\n 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort:\n 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","/** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nexport function takeLast(count) {\n return function takeLastOperatorFunction(source) {\n if (count === 0) {\n return empty();\n }\n else {\n return source.lift(new TakeLastOperator(count));\n }\n };\n}\nvar TakeLastOperator = /*@__PURE__*/ (function () {\n function TakeLastOperator(total) {\n this.total = total;\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n TakeLastOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TakeLastSubscriber(subscriber, this.total));\n };\n return TakeLastOperator;\n}());\nvar TakeLastSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TakeLastSubscriber, _super);\n function TakeLastSubscriber(destination, total) {\n var _this = _super.call(this, destination) || this;\n _this.total = total;\n _this.ring = new Array();\n _this.count = 0;\n return _this;\n }\n TakeLastSubscriber.prototype._next = function (value) {\n var ring = this.ring;\n var total = this.total;\n var count = this.count++;\n if (ring.length < total) {\n ring.push(value);\n }\n else {\n var index = count % total;\n ring[index] = value;\n }\n };\n TakeLastSubscriber.prototype._complete = function () {\n var destination = this.destination;\n var count = this.count;\n if (count > 0) {\n var total = this.count >= this.total ? this.total : this.count;\n var ring = this.ring;\n for (var i = 0; i < total; i++) {\n var idx = (count++) % total;\n destination.next(ring[idx]);\n }\n }\n destination.complete();\n };\n return TakeLastSubscriber;\n}(Subscriber));\n//# sourceMappingURL=takeLast.js.map\n","export const environment = {\n production: true,\n // apiBaseURL: 'http://localhost:33835/api/v1'\n apiBaseURL : '/api/v1'\r\n};\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays:\n 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays:\n 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","/** PURE_IMPORTS_START tslib,_Scheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) {\n now = Scheduler.now;\n }\n var _this = _super.call(this, SchedulerAction, function () {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== _this) {\n return AsyncScheduler.delegate.now();\n }\n else {\n return now();\n }\n }) || this;\n _this.actions = [];\n _this.active = false;\n _this.scheduled = undefined;\n return _this;\n }\n AsyncScheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) {\n delay = 0;\n }\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n }\n else {\n return _super.prototype.schedule.call(this, work, delay, state);\n }\n };\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this.active) {\n actions.push(action);\n return;\n }\n var error;\n this.active = true;\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift());\n this.active = false;\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map\n","/**\n * @license Angular v7.2.16\n * (c) 2010-2019 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { __spread, __assign, __values, __extends, __decorate, __param, __metadata, __read } from 'tslib';\nimport { Subscription, Subject, Observable, merge } from 'rxjs';\nimport { share } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction getClosureSafeProperty(objWithPropertyToExtract) {\n for (var key in objWithPropertyToExtract) {\n if (objWithPropertyToExtract[key] === getClosureSafeProperty) {\n return key;\n }\n }\n throw Error('Could not find renamed property on target object.');\n}\n/**\n * Sets properties on a target object from a source object, but only if\n * the property doesn't already exist on the target object.\n * @param target The target to set properties on\n * @param source The source of the property keys and values to set\n */\nfunction fillProperties(target, source) {\n for (var key in source) {\n if (source.hasOwnProperty(key) && !target.hasOwnProperty(key)) {\n target[key] = source[key];\n }\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar NG_COMPONENT_DEF = getClosureSafeProperty({ ngComponentDef: getClosureSafeProperty });\nvar NG_DIRECTIVE_DEF = getClosureSafeProperty({ ngDirectiveDef: getClosureSafeProperty });\nvar NG_INJECTABLE_DEF = getClosureSafeProperty({ ngInjectableDef: getClosureSafeProperty });\nvar NG_INJECTOR_DEF = getClosureSafeProperty({ ngInjectorDef: getClosureSafeProperty });\nvar NG_PIPE_DEF = getClosureSafeProperty({ ngPipeDef: getClosureSafeProperty });\nvar NG_MODULE_DEF = getClosureSafeProperty({ ngModuleDef: getClosureSafeProperty });\nvar NG_BASE_DEF = getClosureSafeProperty({ ngBaseDef: getClosureSafeProperty });\n/**\n * If a directive is diPublic, bloomAdd sets a property on the type with this constant as\n * the key and the directive's unique ID as the value. This allows us to map directives to their\n * bloom filter bit for DI.\n */\nvar NG_ELEMENT_ID = getClosureSafeProperty({ __NG_ELEMENT_ID__: getClosureSafeProperty });\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Construct an `InjectableDef` which defines how a token will be constructed by the DI system, and\n * in which injectors (if any) it will be available.\n *\n * This should be assigned to a static `ngInjectableDef` field on a type, which will then be an\n * `InjectableType`.\n *\n * Options:\n * * `providedIn` determines which injectors will include the injectable, by either associating it\n * with an `@NgModule` or other `InjectorType`, or by specifying that this injectable should be\n * provided in the `'root'` injector, which will be the application-level injector in most apps.\n * * `factory` gives the zero argument function which will create an instance of the injectable.\n * The factory can call `inject` to access the `Injector` and request injection of dependencies.\n *\n * @publicApi\n */\nfunction defineInjectable(opts) {\n return {\n providedIn: opts.providedIn || null, factory: opts.factory, value: undefined,\n };\n}\n/**\n * Construct an `InjectorDef` which configures an injector.\n *\n * This should be assigned to a static `ngInjectorDef` field on a type, which will then be an\n * `InjectorType`.\n *\n * Options:\n *\n * * `factory`: an `InjectorType` is an instantiable type, so a zero argument `factory` function to\n * create the type must be provided. If that factory function needs to inject arguments, it can\n * use the `inject` function.\n * * `providers`: an optional array of providers to add to the injector. Each provider must\n * either have a factory or point to a type which has an `ngInjectableDef` static property (the\n * type must be an `InjectableType`).\n * * `imports`: an optional array of imports of other `InjectorType`s or `InjectorTypeWithModule`s\n * whose providers will also be added to the injector. Locally provided types will override\n * providers from imports.\n *\n * @publicApi\n */\nfunction defineInjector(options) {\n return {\n factory: options.factory, providers: options.providers || [], imports: options.imports || [],\n };\n}\n/**\n * Read the `ngInjectableDef` type in a way which is immune to accidentally reading inherited value.\n *\n * @param type type which may have `ngInjectableDef`\n */\nfunction getInjectableDef(type) {\n return type && type.hasOwnProperty(NG_INJECTABLE_DEF) ? type[NG_INJECTABLE_DEF] : null;\n}\n/**\n * Read the `ngInjectorDef` type in a way which is immune to accidentally reading inherited value.\n *\n * @param type type which may have `ngInjectorDef`\n */\nfunction getInjectorDef(type) {\n return type && type.hasOwnProperty(NG_INJECTOR_DEF) ? type[NG_INJECTOR_DEF] : null;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Creates a token that can be used in a DI Provider.\n *\n * Use an `InjectionToken` whenever the type you are injecting is not reified (does not have a\n * runtime representation) such as when injecting an interface, callable type, array or\n * parameterized type.\n *\n * `InjectionToken` is parameterized on `T` which is the type of object which will be returned by\n * the `Injector`. This provides additional level of type safety.\n *\n * ```\n * interface MyInterface {...}\n * var myInterface = injector.get(new InjectionToken('SomeToken'));\n * // myInterface is inferred to be MyInterface.\n * ```\n *\n * When creating an `InjectionToken`, you can optionally specify a factory function which returns\n * (possibly by creating) a default value of the parameterized type `T`. This sets up the\n * `InjectionToken` using this factory as a provider as if it was defined explicitly in the\n * application's root injector. If the factory function, which takes zero arguments, needs to inject\n * dependencies, it can do so using the `inject` function. See below for an example.\n *\n * Additionally, if a `factory` is specified you can also specify the `providedIn` option, which\n * overrides the above behavior and marks the token as belonging to a particular `@NgModule`. As\n * mentioned above, `'root'` is the default value for `providedIn`.\n *\n * @usageNotes\n * ### Basic Example\n *\n * ### Plain InjectionToken\n *\n * {@example core/di/ts/injector_spec.ts region='InjectionToken'}\n *\n * ### Tree-shakable InjectionToken\n *\n * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}\n *\n *\n * @publicApi\n */\nvar InjectionToken = /** @class */ (function () {\n function InjectionToken(_desc, options) {\n this._desc = _desc;\n /** @internal */\n this.ngMetadataName = 'InjectionToken';\n if (options !== undefined) {\n this.ngInjectableDef = defineInjectable({\n providedIn: options.providedIn || 'root',\n factory: options.factory,\n });\n }\n else {\n this.ngInjectableDef = undefined;\n }\n }\n InjectionToken.prototype.toString = function () { return \"InjectionToken \" + this._desc; };\n return InjectionToken;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar ANNOTATIONS = '__annotations__';\nvar PARAMETERS = '__parameters__';\nvar PROP_METADATA = '__prop__metadata__';\n/**\n * @suppress {globalThis}\n */\nfunction makeDecorator(name, props, parentClass, additionalProcessing, typeFn) {\n var metaCtor = makeMetadataCtor(props);\n function DecoratorFactory() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _a;\n if (this instanceof DecoratorFactory) {\n metaCtor.call.apply(metaCtor, __spread([this], args));\n return this;\n }\n var annotationInstance = new ((_a = DecoratorFactory).bind.apply(_a, __spread([void 0], args)))();\n return function TypeDecorator(cls) {\n if (typeFn)\n typeFn.apply(void 0, __spread([cls], args));\n // Use of Object.defineProperty is important since it creates non-enumerable property which\n // prevents the property is copied during subclassing.\n var annotations = cls.hasOwnProperty(ANNOTATIONS) ?\n cls[ANNOTATIONS] :\n Object.defineProperty(cls, ANNOTATIONS, { value: [] })[ANNOTATIONS];\n annotations.push(annotationInstance);\n if (additionalProcessing)\n additionalProcessing(cls);\n return cls;\n };\n }\n if (parentClass) {\n DecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n DecoratorFactory.prototype.ngMetadataName = name;\n DecoratorFactory.annotationCls = DecoratorFactory;\n return DecoratorFactory;\n}\nfunction makeMetadataCtor(props) {\n return function ctor() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (props) {\n var values = props.apply(void 0, __spread(args));\n for (var propName in values) {\n this[propName] = values[propName];\n }\n }\n };\n}\nfunction makeParamDecorator(name, props, parentClass) {\n var metaCtor = makeMetadataCtor(props);\n function ParamDecoratorFactory() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _a;\n if (this instanceof ParamDecoratorFactory) {\n metaCtor.apply(this, args);\n return this;\n }\n var annotationInstance = new ((_a = ParamDecoratorFactory).bind.apply(_a, __spread([void 0], args)))();\n ParamDecorator.annotation = annotationInstance;\n return ParamDecorator;\n function ParamDecorator(cls, unusedKey, index) {\n // Use of Object.defineProperty is important since it creates non-enumerable property which\n // prevents the property is copied during subclassing.\n var parameters = cls.hasOwnProperty(PARAMETERS) ?\n cls[PARAMETERS] :\n Object.defineProperty(cls, PARAMETERS, { value: [] })[PARAMETERS];\n // there might be gaps if some in between parameters do not have annotations.\n // we pad with nulls.\n while (parameters.length <= index) {\n parameters.push(null);\n }\n (parameters[index] = parameters[index] || []).push(annotationInstance);\n return cls;\n }\n }\n if (parentClass) {\n ParamDecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n ParamDecoratorFactory.prototype.ngMetadataName = name;\n ParamDecoratorFactory.annotationCls = ParamDecoratorFactory;\n return ParamDecoratorFactory;\n}\nfunction makePropDecorator(name, props, parentClass, additionalProcessing) {\n var metaCtor = makeMetadataCtor(props);\n function PropDecoratorFactory() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _a;\n if (this instanceof PropDecoratorFactory) {\n metaCtor.apply(this, args);\n return this;\n }\n var decoratorInstance = new ((_a = PropDecoratorFactory).bind.apply(_a, __spread([void 0], args)))();\n function PropDecorator(target, name) {\n var constructor = target.constructor;\n // Use of Object.defineProperty is important since it creates non-enumerable property which\n // prevents the property is copied during subclassing.\n var meta = constructor.hasOwnProperty(PROP_METADATA) ?\n constructor[PROP_METADATA] :\n Object.defineProperty(constructor, PROP_METADATA, { value: {} })[PROP_METADATA];\n meta[name] = meta.hasOwnProperty(name) && meta[name] || [];\n meta[name].unshift(decoratorInstance);\n if (additionalProcessing)\n additionalProcessing.apply(void 0, __spread([target, name], args));\n }\n return PropDecorator;\n }\n if (parentClass) {\n PropDecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n PropDecoratorFactory.prototype.ngMetadataName = name;\n PropDecoratorFactory.annotationCls = PropDecoratorFactory;\n return PropDecoratorFactory;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A DI token that you can use to create a virtual [provider](guide/glossary#provider)\n * that will populate the `entryComponents` field of components and NgModules\n * based on its `useValue` property value.\n * All components that are referenced in the `useValue` value (either directly\n * or in a nested array or map) are added to the `entryComponents` property.\n *\n * @usageNotes\n *\n * The following example shows how the router can populate the `entryComponents`\n * field of an NgModule based on a router configuration that refers\n * to components.\n *\n * ```typescript\n * // helper function inside the router\n * function provideRoutes(routes) {\n * return [\n * {provide: ROUTES, useValue: routes},\n * {provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: routes, multi: true}\n * ];\n * }\n *\n * // user code\n * let routes = [\n * {path: '/root', component: RootComp},\n * {path: '/teams', component: TeamsComp}\n * ];\n *\n * @NgModule({\n * providers: [provideRoutes(routes)]\n * })\n * class ModuleWithRoutes {}\n * ```\n *\n * @publicApi\n */\nvar ANALYZE_FOR_ENTRY_COMPONENTS = new InjectionToken('AnalyzeForEntryComponents');\n/**\n * Attribute decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nvar Attribute = makeParamDecorator('Attribute', function (attributeName) { return ({ attributeName: attributeName }); });\n/**\n * Base class for query metadata.\n *\n * @see `ContentChildren`.\n * @see `ContentChild`.\n * @see `ViewChildren`.\n * @see `ViewChild`.\n *\n * @publicApi\n */\nvar Query = /** @class */ (function () {\n function Query() {\n }\n return Query;\n}());\n/**\n * ContentChildren decorator and metadata.\n *\n *\n * @Annotation\n * @publicApi\n */\nvar ContentChildren = makePropDecorator('ContentChildren', function (selector, data) {\n if (data === void 0) { data = {}; }\n return (__assign({ selector: selector, first: false, isViewQuery: false, descendants: false }, data));\n}, Query);\n/**\n * ContentChild decorator and metadata.\n *\n *\n * @Annotation\n *\n * @publicApi\n */\nvar ContentChild = makePropDecorator('ContentChild', function (selector, data) {\n if (data === void 0) { data = {}; }\n return (__assign({ selector: selector, first: true, isViewQuery: false, descendants: true }, data));\n}, Query);\n/**\n * ViewChildren decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nvar ViewChildren = makePropDecorator('ViewChildren', function (selector, data) {\n if (data === void 0) { data = {}; }\n return (__assign({ selector: selector, first: false, isViewQuery: true, descendants: true }, data));\n}, Query);\n/**\n * ViewChild decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nvar ViewChild = makePropDecorator('ViewChild', function (selector, data) {\n return (__assign({ selector: selector, first: true, isViewQuery: true, descendants: true }, data));\n}, Query);\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The strategy that the default change detector uses to detect changes.\n * When set, takes effect the next time change detection is triggered.\n *\n * @publicApi\n */\nvar ChangeDetectionStrategy;\n(function (ChangeDetectionStrategy) {\n /**\n * Use the `CheckOnce` strategy, meaning that automatic change detection is deactivated\n * until reactivated by setting the strategy to `Default` (`CheckAlways`).\n * Change detection can still be explicitly invoked.\n * This strategy applies to all child directives and cannot be overridden.\n */\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"OnPush\"] = 0] = \"OnPush\";\n /**\n * Use the default `CheckAlways` strategy, in which change detection is automatic until\n * explicitly deactivated.\n */\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"Default\"] = 1] = \"Default\";\n})(ChangeDetectionStrategy || (ChangeDetectionStrategy = {}));\n/**\n * Defines the possible states of the default change detector.\n * @see `ChangeDetectorRef`\n */\nvar ChangeDetectorStatus;\n(function (ChangeDetectorStatus) {\n /**\n * A state in which, after calling `detectChanges()`, the change detector\n * state becomes `Checked`, and must be explicitly invoked or reactivated.\n */\n ChangeDetectorStatus[ChangeDetectorStatus[\"CheckOnce\"] = 0] = \"CheckOnce\";\n /**\n * A state in which change detection is skipped until the change detector mode\n * becomes `CheckOnce`.\n */\n ChangeDetectorStatus[ChangeDetectorStatus[\"Checked\"] = 1] = \"Checked\";\n /**\n * A state in which change detection continues automatically until explicitly\n * deactivated.\n */\n ChangeDetectorStatus[ChangeDetectorStatus[\"CheckAlways\"] = 2] = \"CheckAlways\";\n /**\n * A state in which a change detector sub tree is not a part of the main tree and\n * should be skipped.\n */\n ChangeDetectorStatus[ChangeDetectorStatus[\"Detached\"] = 3] = \"Detached\";\n /**\n * Indicates that the change detector encountered an error checking a binding\n * or calling a directive lifecycle method and is now in an inconsistent state. Change\n * detectors in this state do not detect changes.\n */\n ChangeDetectorStatus[ChangeDetectorStatus[\"Errored\"] = 4] = \"Errored\";\n /**\n * Indicates that the change detector has been destroyed.\n */\n ChangeDetectorStatus[ChangeDetectorStatus[\"Destroyed\"] = 5] = \"Destroyed\";\n})(ChangeDetectorStatus || (ChangeDetectorStatus = {}));\n/**\n * Reports whether a given strategy is currently the default for change detection.\n * @param changeDetectionStrategy The strategy to check.\n * @returns True if the given strategy is the current default, false otherwise.\n * @see `ChangeDetectorStatus`\n * @see `ChangeDetectorRef`\n */\nfunction isDefaultChangeDetectionStrategy(changeDetectionStrategy) {\n return changeDetectionStrategy == null ||\n changeDetectionStrategy === ChangeDetectionStrategy.Default;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar __window = typeof window !== 'undefined' && window;\nvar __self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' &&\n self instanceof WorkerGlobalScope && self;\nvar __global = typeof global !== 'undefined' && global;\n// Check __global first, because in Node tests both __global and __window may be defined and _global\n// should be __global in that case.\nvar _global = __global || __window || __self;\nvar promise = Promise.resolve(0);\nvar _symbolIterator = null;\nfunction getSymbolIterator() {\n if (!_symbolIterator) {\n var Symbol_1 = _global['Symbol'];\n if (Symbol_1 && Symbol_1.iterator) {\n _symbolIterator = Symbol_1.iterator;\n }\n else {\n // es6-shim specific logic\n var keys = Object.getOwnPropertyNames(Map.prototype);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (key !== 'entries' && key !== 'size' &&\n Map.prototype[key] === Map.prototype['entries']) {\n _symbolIterator = key;\n }\n }\n }\n }\n return _symbolIterator;\n}\nfunction scheduleMicroTask(fn) {\n if (typeof Zone === 'undefined') {\n // use promise to schedule microTask instead of use Zone\n promise.then(function () { fn && fn.apply(null, null); });\n }\n else {\n Zone.current.scheduleMicroTask('scheduleMicrotask', fn);\n }\n}\n// JS has NaN !== NaN\nfunction looseIdentical(a, b) {\n return a === b || typeof a === 'number' && typeof b === 'number' && isNaN(a) && isNaN(b);\n}\nfunction stringify(token) {\n if (typeof token === 'string') {\n return token;\n }\n if (token instanceof Array) {\n return '[' + token.map(stringify).join(', ') + ']';\n }\n if (token == null) {\n return '' + token;\n }\n if (token.overriddenName) {\n return \"\" + token.overriddenName;\n }\n if (token.name) {\n return \"\" + token.name;\n }\n var res = token.toString();\n if (res == null) {\n return '' + res;\n }\n var newLineIndex = res.indexOf('\\n');\n return newLineIndex === -1 ? res : res.substring(0, newLineIndex);\n}\n/**\n * Convince closure compiler that the wrapped function has no side-effects.\n *\n * Closure compiler always assumes that `toString` has no side-effects. We use this quirk to\n * allow us to execute a function but have closure compiler mark the call as no-side-effects.\n * It is important that the return value for the `noSideEffects` function be assigned\n * to something which is retained otherwise the call to `noSideEffects` will be removed by closure\n * compiler.\n */\nfunction noSideEffects(fn) {\n return '' + { toString: fn };\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar __forward_ref__ = getClosureSafeProperty({ __forward_ref__: getClosureSafeProperty });\n/**\n * Allows to refer to references which are not yet defined.\n *\n * For instance, `forwardRef` is used when the `token` which we need to refer to for the purposes of\n * DI is declared, but not yet defined. It is also used when the `token` which we use when creating\n * a query is not yet defined.\n *\n * @usageNotes\n * ### Example\n * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref'}\n * @publicApi\n */\nfunction forwardRef(forwardRefFn) {\n forwardRefFn.__forward_ref__ = forwardRef;\n forwardRefFn.toString = function () { return stringify(this()); };\n return forwardRefFn;\n}\n/**\n * Lazily retrieves the reference value from a forwardRef.\n *\n * Acts as the identity function when given a non-forward-ref value.\n *\n * @usageNotes\n * ### Example\n *\n * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='resolve_forward_ref'}\n *\n * @see `forwardRef`\n * @publicApi\n */\nfunction resolveForwardRef(type) {\n var fn = type;\n if (typeof fn === 'function' && fn.hasOwnProperty(__forward_ref__) &&\n fn.__forward_ref__ === forwardRef) {\n return fn();\n }\n else {\n return type;\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Used to resolve resource URLs on `@Component` when used with JIT compilation.\n *\n * Example:\n * ```\n * @Component({\n * selector: 'my-comp',\n * templateUrl: 'my-comp.html', // This requires asynchronous resolution\n * })\n * class MyComponent{\n * }\n *\n * // Calling `renderComponent` will fail because `renderComponent` is a synchronous process\n * // and `MyComponent`'s `@Component.templateUrl` needs to be resolved asynchronously.\n *\n * // Calling `resolveComponentResources()` will resolve `@Component.templateUrl` into\n * // `@Component.template`, which allows `renderComponent` to proceed in a synchronous manner.\n *\n * // Use browser's `fetch()` function as the default resource resolution strategy.\n * resolveComponentResources(fetch).then(() => {\n * // After resolution all URLs have been converted into `template` strings.\n * renderComponent(MyComponent);\n * });\n *\n * ```\n *\n * NOTE: In AOT the resolution happens during compilation, and so there should be no need\n * to call this method outside JIT mode.\n *\n * @param resourceResolver a function which is responsible for returning a `Promise` to the\n * contents of the resolved URL. Browser's `fetch()` method is a good default implementation.\n */\nfunction resolveComponentResources(resourceResolver) {\n // Store all promises which are fetching the resources.\n var urlFetches = [];\n // Cache so that we don't fetch the same resource more than once.\n var urlMap = new Map();\n function cachedResourceResolve(url) {\n var promise = urlMap.get(url);\n if (!promise) {\n var resp = resourceResolver(url);\n urlMap.set(url, promise = resp.then(unwrapResponse));\n urlFetches.push(promise);\n }\n return promise;\n }\n componentResourceResolutionQueue.forEach(function (component) {\n if (component.templateUrl) {\n cachedResourceResolve(component.templateUrl).then(function (template) {\n component.template = template;\n component.templateUrl = undefined;\n });\n }\n var styleUrls = component.styleUrls;\n var styles = component.styles || (component.styles = []);\n var styleOffset = component.styles.length;\n styleUrls && styleUrls.forEach(function (styleUrl, index) {\n styles.push(''); // pre-allocate array.\n cachedResourceResolve(styleUrl).then(function (style) {\n styles[styleOffset + index] = style;\n styleUrls.splice(styleUrls.indexOf(styleUrl), 1);\n if (styleUrls.length == 0) {\n component.styleUrls = undefined;\n }\n });\n });\n });\n componentResourceResolutionQueue.clear();\n return Promise.all(urlFetches).then(function () { return null; });\n}\nvar componentResourceResolutionQueue = new Set();\nfunction maybeQueueResolutionOfComponentResources(metadata) {\n if (componentNeedsResolution(metadata)) {\n componentResourceResolutionQueue.add(metadata);\n }\n}\nfunction componentNeedsResolution(component) {\n return component.templateUrl || component.styleUrls && component.styleUrls.length;\n}\nfunction unwrapResponse(response) {\n return typeof response == 'string' ? response : response.text();\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Defines template and style encapsulation options available for Component's {@link Component}.\n *\n * See {@link Component#encapsulation encapsulation}.\n *\n * @usageNotes\n * ### Example\n *\n * {@example core/ts/metadata/encapsulation.ts region='longform'}\n *\n * @publicApi\n */\nvar ViewEncapsulation;\n(function (ViewEncapsulation) {\n /**\n * Emulate `Native` scoping of styles by adding an attribute containing surrogate id to the Host\n * Element and pre-processing the style rules provided via {@link Component#styles styles} or\n * {@link Component#styleUrls styleUrls}, and adding the new Host Element attribute to all\n * selectors.\n *\n * This is the default option.\n */\n ViewEncapsulation[ViewEncapsulation[\"Emulated\"] = 0] = \"Emulated\";\n /**\n * @deprecated v6.1.0 - use {ViewEncapsulation.ShadowDom} instead.\n * Use the native encapsulation mechanism of the renderer.\n *\n * For the DOM this means using the deprecated [Shadow DOM\n * v0](https://w3c.github.io/webcomponents/spec/shadow/) and\n * creating a ShadowRoot for Component's Host Element.\n */\n ViewEncapsulation[ViewEncapsulation[\"Native\"] = 1] = \"Native\";\n /**\n * Don't provide any template or style encapsulation.\n */\n ViewEncapsulation[ViewEncapsulation[\"None\"] = 2] = \"None\";\n /**\n * Use Shadow DOM to encapsulate styles.\n *\n * For the DOM this means using modern [Shadow\n * DOM](https://w3c.github.io/webcomponents/spec/shadow/) and\n * creating a ShadowRoot for Component's Host Element.\n */\n ViewEncapsulation[ViewEncapsulation[\"ShadowDom\"] = 3] = \"ShadowDom\";\n})(ViewEncapsulation || (ViewEncapsulation = {}));\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction ngDevModeResetPerfCounters() {\n var newCounters = {\n firstTemplatePass: 0,\n tNode: 0,\n tView: 0,\n rendererCreateTextNode: 0,\n rendererSetText: 0,\n rendererCreateElement: 0,\n rendererAddEventListener: 0,\n rendererSetAttribute: 0,\n rendererRemoveAttribute: 0,\n rendererSetProperty: 0,\n rendererSetClassName: 0,\n rendererAddClass: 0,\n rendererRemoveClass: 0,\n rendererSetStyle: 0,\n rendererRemoveStyle: 0,\n rendererDestroy: 0,\n rendererDestroyNode: 0,\n rendererMoveNode: 0,\n rendererRemoveNode: 0,\n rendererCreateComment: 0,\n };\n // NOTE: Under Ivy we may have both window & global defined in the Node\n // environment since ensureDocument() in render3.ts sets global.window.\n if (typeof window != 'undefined') {\n // Make sure to refer to ngDevMode as ['ngDevMode'] for closure.\n window['ngDevMode'] = newCounters;\n }\n if (typeof global != 'undefined') {\n // Make sure to refer to ngDevMode as ['ngDevMode'] for closure.\n global['ngDevMode'] = newCounters;\n }\n if (typeof self != 'undefined') {\n // Make sure to refer to ngDevMode as ['ngDevMode'] for closure.\n self['ngDevMode'] = newCounters;\n }\n return newCounters;\n}\n/**\n * This checks to see if the `ngDevMode` has been set. If yes,\n * than we honor it, otherwise we default to dev mode with additional checks.\n *\n * The idea is that unless we are doing production build where we explicitly\n * set `ngDevMode == false` we should be helping the developer by providing\n * as much early warning and errors as possible.\n */\nif (typeof ngDevMode === 'undefined' || ngDevMode) {\n ngDevModeResetPerfCounters();\n}\n\n/**\n* @license\n* Copyright Google Inc. All Rights Reserved.\n*\n* Use of this source code is governed by an MIT-style license that can be\n* found in the LICENSE file at https://angular.io/license\n*/\n/**\n * This file contains reuseable \"empty\" symbols that can be used as default return values\n * in different parts of the rendering code. Because the same symbols are returned, this\n * allows for identity checks against these values to be consistently used by the framework\n * code.\n */\nvar EMPTY_OBJ = {};\nvar EMPTY_ARRAY = [];\n// freezing the values prevents any code from accidentally inserting new values in\nif (typeof ngDevMode !== 'undefined' && ngDevMode) {\n Object.freeze(EMPTY_OBJ);\n Object.freeze(EMPTY_ARRAY);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar _renderCompCount = 0;\n/**\n * Create a component definition object.\n *\n *\n * # Example\n * ```\n * class MyDirective {\n * // Generated by Angular Template Compiler\n * // [Symbol] syntax will not be supported by TypeScript until v2.7\n * static ngComponentDef = defineComponent({\n * ...\n * });\n * }\n * ```\n */\nfunction defineComponent(componentDefinition) {\n var type = componentDefinition.type;\n var typePrototype = type.prototype;\n var declaredInputs = {};\n var def = {\n type: type,\n providersResolver: null,\n consts: componentDefinition.consts,\n vars: componentDefinition.vars,\n factory: componentDefinition.factory,\n template: componentDefinition.template || null,\n hostBindings: componentDefinition.hostBindings || null,\n contentQueries: componentDefinition.contentQueries || null,\n contentQueriesRefresh: componentDefinition.contentQueriesRefresh || null,\n attributes: componentDefinition.attributes || null,\n declaredInputs: declaredInputs,\n inputs: null,\n outputs: null,\n exportAs: componentDefinition.exportAs || null,\n onInit: typePrototype.ngOnInit || null,\n doCheck: typePrototype.ngDoCheck || null,\n afterContentInit: typePrototype.ngAfterContentInit || null,\n afterContentChecked: typePrototype.ngAfterContentChecked || null,\n afterViewInit: typePrototype.ngAfterViewInit || null,\n afterViewChecked: typePrototype.ngAfterViewChecked || null,\n onDestroy: typePrototype.ngOnDestroy || null,\n onPush: componentDefinition.changeDetection === ChangeDetectionStrategy.OnPush,\n directiveDefs: null,\n pipeDefs: null,\n selectors: componentDefinition.selectors,\n viewQuery: componentDefinition.viewQuery || null,\n features: componentDefinition.features || null,\n data: componentDefinition.data || {},\n // TODO(misko): convert ViewEncapsulation into const enum so that it can be used directly in the\n // next line. Also `None` should be 0 not 2.\n encapsulation: componentDefinition.encapsulation || ViewEncapsulation.Emulated,\n id: 'c',\n styles: componentDefinition.styles || EMPTY_ARRAY,\n _: null,\n };\n def._ = noSideEffects(function () {\n var directiveTypes = componentDefinition.directives;\n var feature = componentDefinition.features;\n var pipeTypes = componentDefinition.pipes;\n def.id += _renderCompCount++;\n def.inputs = invertObject(componentDefinition.inputs, declaredInputs),\n def.outputs = invertObject(componentDefinition.outputs),\n feature && feature.forEach(function (fn) { return fn(def); });\n def.directiveDefs = directiveTypes ?\n function () { return (typeof directiveTypes === 'function' ? directiveTypes() : directiveTypes)\n .map(extractDirectiveDef); } :\n null;\n def.pipeDefs = pipeTypes ?\n function () { return (typeof pipeTypes === 'function' ? pipeTypes() : pipeTypes).map(extractPipeDef); } :\n null;\n });\n return def;\n}\nfunction extractDirectiveDef(type) {\n var def = getComponentDef(type) || getDirectiveDef(type);\n if (ngDevMode && !def) {\n throw new Error(\"'\" + type.name + \"' is neither 'ComponentType' or 'DirectiveType'.\");\n }\n return def;\n}\nfunction extractPipeDef(type) {\n var def = getPipeDef(type);\n if (ngDevMode && !def) {\n throw new Error(\"'\" + type.name + \"' is not a 'PipeType'.\");\n }\n return def;\n}\nfunction defineNgModule(def) {\n var res = {\n type: def.type,\n bootstrap: def.bootstrap || EMPTY_ARRAY,\n declarations: def.declarations || EMPTY_ARRAY,\n imports: def.imports || EMPTY_ARRAY,\n exports: def.exports || EMPTY_ARRAY,\n transitiveCompileScopes: null,\n };\n return res;\n}\n/**\n * Inverts an inputs or outputs lookup such that the keys, which were the\n * minified keys, are part of the values, and the values are parsed so that\n * the publicName of the property is the new key\n *\n * e.g. for\n *\n * ```\n * class Comp {\n * @Input()\n * propName1: string;\n *\n * @Input('publicName2')\n * declaredPropName2: number;\n * }\n * ```\n *\n * will be serialized as\n *\n * ```\n * {\n * propName1: 'propName1',\n * declaredPropName2: ['publicName2', 'declaredPropName2'],\n * }\n * ```\n *\n * which is than translated by the minifier as:\n *\n * ```\n * {\n * minifiedPropName1: 'propName1',\n * minifiedPropName2: ['publicName2', 'declaredPropName2'],\n * }\n * ```\n *\n * becomes: (public name => minifiedName)\n *\n * ```\n * {\n * 'propName1': 'minifiedPropName1',\n * 'publicName2': 'minifiedPropName2',\n * }\n * ```\n *\n * Optionally the function can take `secondary` which will result in: (public name => declared name)\n *\n * ```\n * {\n * 'propName1': 'propName1',\n * 'publicName2': 'declaredPropName2',\n * }\n * ```\n *\n\n */\nfunction invertObject(obj, secondary) {\n if (obj == null)\n return EMPTY_OBJ;\n var newLookup = {};\n for (var minifiedKey in obj) {\n if (obj.hasOwnProperty(minifiedKey)) {\n var publicName = obj[minifiedKey];\n var declaredName = publicName;\n if (Array.isArray(publicName)) {\n declaredName = publicName[1];\n publicName = publicName[0];\n }\n newLookup[publicName] = minifiedKey;\n if (secondary) {\n (secondary[publicName] = declaredName);\n }\n }\n }\n return newLookup;\n}\n/**\n * Create a base definition\n *\n * # Example\n * ```\n * class ShouldBeInherited {\n * static ngBaseDef = defineBase({\n * ...\n * })\n * }\n * @param baseDefinition The base definition parameters\n */\nfunction defineBase(baseDefinition) {\n var declaredInputs = {};\n return {\n inputs: invertObject(baseDefinition.inputs, declaredInputs),\n declaredInputs: declaredInputs,\n outputs: invertObject(baseDefinition.outputs),\n };\n}\n/**\n * Create a directive definition object.\n *\n * # Example\n * ```\n * class MyDirective {\n * // Generated by Angular Template Compiler\n * // [Symbol] syntax will not be supported by TypeScript until v2.7\n * static ngDirectiveDef = defineDirective({\n * ...\n * });\n * }\n * ```\n */\nvar defineDirective = defineComponent;\n/**\n * Create a pipe definition object.\n *\n * # Example\n * ```\n * class MyPipe implements PipeTransform {\n * // Generated by Angular Template Compiler\n * static ngPipeDef = definePipe({\n * ...\n * });\n * }\n * ```\n * @param pipeDef Pipe definition generated by the compiler\n */\nfunction definePipe(pipeDef) {\n return {\n name: pipeDef.name,\n factory: pipeDef.factory,\n pure: pipeDef.pure !== false,\n onDestroy: pipeDef.type.prototype.ngOnDestroy || null\n };\n}\n/**\n * The following getter methods retrieve the definition form the type. Currently the retrieval\n * honors inheritance, but in the future we may change the rule to require that definitions are\n * explicit. This would require some sort of migration strategy.\n */\nfunction getComponentDef(type) {\n return type[NG_COMPONENT_DEF] || null;\n}\nfunction getDirectiveDef(type) {\n return type[NG_DIRECTIVE_DEF] || null;\n}\nfunction getPipeDef(type) {\n return type[NG_PIPE_DEF] || null;\n}\nfunction getNgModuleDef(type, throwNotFound) {\n var ngModuleDef = type[NG_MODULE_DEF] || null;\n if (!ngModuleDef && throwNotFound === true) {\n throw new Error(\"Type \" + stringify(type) + \" does not have 'ngModuleDef' property.\");\n }\n return ngModuleDef;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction assertEqual(actual, expected, msg) {\n if (actual != expected) {\n throwError(msg);\n }\n}\nfunction assertNotEqual(actual, expected, msg) {\n if (actual == expected) {\n throwError(msg);\n }\n}\nfunction assertLessThan(actual, expected, msg) {\n if (actual >= expected) {\n throwError(msg);\n }\n}\nfunction assertGreaterThan(actual, expected, msg) {\n if (actual <= expected) {\n throwError(msg);\n }\n}\nfunction assertDefined(actual, msg) {\n if (actual == null) {\n throwError(msg);\n }\n}\nfunction assertComponentType(actual, msg) {\n if (msg === void 0) { msg = 'Type passed in is not ComponentType, it does not have \\'ngComponentDef\\' property.'; }\n if (!getComponentDef(actual)) {\n throwError(msg);\n }\n}\nfunction assertNgModuleType(actual, msg) {\n if (msg === void 0) { msg = 'Type passed in is not NgModuleType, it does not have \\'ngModuleDef\\' property.'; }\n if (!getNgModuleDef(actual)) {\n throwError(msg);\n }\n}\nfunction throwError(msg) {\n // tslint:disable-next-line\n debugger; // Left intentionally for better debugger experience.\n throw new Error(\"ASSERTION ERROR: \" + msg);\n}\nfunction assertDomNode(node) {\n assertEqual(node instanceof Node, true, 'The provided value must be an instance of a DOM Node');\n}\nfunction assertPreviousIsParent(isParent) {\n assertEqual(isParent, true, 'previousOrParentTNode should be a parent');\n}\nfunction assertHasParent(tNode) {\n assertDefined(tNode.parent, 'previousOrParentTNode should have a parent');\n}\nfunction assertDataInRange(arr, index) {\n assertLessThan(index, arr ? arr.length : 0, 'index expected to be a valid data index');\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Below are constants for LView indices to help us look up LView members\n// without having to remember the specific indices.\n// Uglify will inline these when minifying so there shouldn't be a cost.\nvar TVIEW = 0;\nvar FLAGS = 1;\nvar PARENT = 2;\nvar NEXT = 3;\nvar QUERIES = 4;\nvar HOST = 5;\nvar HOST_NODE = 6; // Rename to `T_HOST`?\nvar BINDING_INDEX = 7;\nvar CLEANUP = 8;\nvar CONTEXT = 9;\nvar INJECTOR = 10;\nvar RENDERER_FACTORY = 11;\nvar RENDERER = 12;\nvar SANITIZER = 13;\nvar TAIL = 14;\nvar CONTAINER_INDEX = 15;\nvar CONTENT_QUERIES = 16;\nvar DECLARATION_VIEW = 17;\n/** Size of LView's header. Necessary to adjust for it when setting slots. */\nvar HEADER_OFFSET = 18;\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Below are constants for LContainer indices to help us look up LContainer members\n * without having to remember the specific indices.\n * Uglify will inline these when minifying so there shouldn't be a cost.\n */\nvar ACTIVE_INDEX = 0;\nvar VIEWS = 1;\n// PARENT, NEXT, QUERIES, and HOST are indices 2, 3, 4, and 5.\n// As we already have these constants in LView, we don't need to re-create them.\nvar NATIVE = 6;\nvar RENDER_PARENT = 7;\n// Because interfaces in TS/JS cannot be instanceof-checked this means that we\n// need to rely on predictable characteristics of data-structures to check if they\n// are what we expect for them to be. The `LContainer` interface code below has a\n// fixed length and the constant value below references that. Using the length value\n// below we can predictably gaurantee that we are dealing with an `LContainer` array.\n// This value MUST be kept up to date with the length of the `LContainer` array\n// interface below so that runtime type checking can work.\nvar LCONTAINER_LENGTH = 8;\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This property will be monkey-patched on elements, components and directives\n */\nvar MONKEY_PATCH_KEY_NAME = '__ngContext__';\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar TNODE = 8;\nvar PARENT_INJECTOR = 8;\nvar INJECTOR_BLOOM_PARENT_SIZE = 9;\nvar NO_PARENT_INJECTOR = -1;\n/**\n * Each injector is saved in 9 contiguous slots in `LView` and 9 contiguous slots in\n * `TView.data`. This allows us to store information about the current node's tokens (which\n * can be shared in `TView`) as well as the tokens of its ancestor nodes (which cannot be\n * shared, so they live in `LView`).\n *\n * Each of these slots (aside from the last slot) contains a bloom filter. This bloom filter\n * determines whether a directive is available on the associated node or not. This prevents us\n * from searching the directives array at this level unless it's probable the directive is in it.\n *\n * See: https://en.wikipedia.org/wiki/Bloom_filter for more about bloom filters.\n *\n * Because all injectors have been flattened into `LView` and `TViewData`, they cannot typed\n * using interfaces as they were previously. The start index of each `LInjector` and `TInjector`\n * will differ based on where it is flattened into the main array, so it's not possible to know\n * the indices ahead of time and save their types here. The interfaces are still included here\n * for documentation purposes.\n *\n * export interface LInjector extends Array {\n *\n * // Cumulative bloom for directive IDs 0-31 (IDs are % BLOOM_SIZE)\n * [0]: number;\n *\n * // Cumulative bloom for directive IDs 32-63\n * [1]: number;\n *\n * // Cumulative bloom for directive IDs 64-95\n * [2]: number;\n *\n * // Cumulative bloom for directive IDs 96-127\n * [3]: number;\n *\n * // Cumulative bloom for directive IDs 128-159\n * [4]: number;\n *\n * // Cumulative bloom for directive IDs 160 - 191\n * [5]: number;\n *\n * // Cumulative bloom for directive IDs 192 - 223\n * [6]: number;\n *\n * // Cumulative bloom for directive IDs 224 - 255\n * [7]: number;\n *\n * // We need to store a reference to the injector's parent so DI can keep looking up\n * // the injector tree until it finds the dependency it's looking for.\n * [PARENT_INJECTOR]: number;\n * }\n *\n * export interface TInjector extends Array {\n *\n * // Shared node bloom for directive IDs 0-31 (IDs are % BLOOM_SIZE)\n * [0]: number;\n *\n * // Shared node bloom for directive IDs 32-63\n * [1]: number;\n *\n * // Shared node bloom for directive IDs 64-95\n * [2]: number;\n *\n * // Shared node bloom for directive IDs 96-127\n * [3]: number;\n *\n * // Shared node bloom for directive IDs 128-159\n * [4]: number;\n *\n * // Shared node bloom for directive IDs 160 - 191\n * [5]: number;\n *\n * // Shared node bloom for directive IDs 192 - 223\n * [6]: number;\n *\n * // Shared node bloom for directive IDs 224 - 255\n * [7]: number;\n *\n * // Necessary to find directive indices for a particular node.\n * [TNODE]: TElementNode|TElementContainerNode|TContainerNode;\n * }\n */\n/**\n* Factory for creating instances of injectors in the NodeInjector.\n*\n* This factory is complicated by the fact that it can resolve `multi` factories as well.\n*\n* NOTE: Some of the fields are optional which means that this class has two hidden classes.\n* - One without `multi` support (most common)\n* - One with `multi` values, (rare).\n*\n* Since VMs can cache up to 4 inline hidden classes this is OK.\n*\n* - Single factory: Only `resolving` and `factory` is defined.\n* - `providers` factory: `componentProviders` is a number and `index = -1`.\n* - `viewProviders` factory: `componentProviders` is a number and `index` points to `providers`.\n*/\nvar NodeInjectorFactory = /** @class */ (function () {\n function NodeInjectorFactory(\n /**\n * Factory to invoke in order to create a new instance.\n */\n factory, \n /**\n * Set to `true` if the token is declared in `viewProviders` (or if it is component).\n */\n isViewProvider, injectImplementation) {\n this.factory = factory;\n /**\n * Marker set to true during factory invocation to see if we get into recursive loop.\n * Recursive loop causes an error to be displayed.\n */\n this.resolving = false;\n this.canSeeViewProviders = isViewProvider;\n this.injectImpl = injectImplementation;\n }\n return NodeInjectorFactory;\n}());\nvar FactoryPrototype = NodeInjectorFactory.prototype;\nfunction isFactory(obj) {\n // See: https://jsperf.com/instanceof-vs-getprototypeof\n return obj != null && typeof obj == 'object' && Object.getPrototypeOf(obj) == FactoryPrototype;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Returns whether the values are different from a change detection stand point.\n *\n * Constraints are relaxed in checkNoChanges mode. See `devModeEqual` for details.\n */\nfunction isDifferent(a, b) {\n // NaN is the only value that is not equal to itself so the first\n // test checks if both a and b are not NaN\n return !(a !== a && b !== b) && a !== b;\n}\nfunction stringify$1(value) {\n if (typeof value == 'function')\n return value.name || value;\n if (typeof value == 'string')\n return value;\n if (value == null)\n return '';\n if (typeof value == 'object' && typeof value.type == 'function')\n return value.type.name || value.type;\n return '' + value;\n}\n/**\n * Flattens an array in non-recursive way. Input arrays are not modified.\n */\nfunction flatten(list) {\n var result = [];\n var i = 0;\n while (i < list.length) {\n var item = list[i];\n if (Array.isArray(item)) {\n if (item.length > 0) {\n list = item.concat(list.slice(i + 1));\n i = 0;\n }\n else {\n i++;\n }\n }\n else {\n result.push(item);\n i++;\n }\n }\n return result;\n}\n/** Retrieves a value from any `LView` or `TData`. */\nfunction loadInternal(view, index) {\n ngDevMode && assertDataInRange(view, index + HEADER_OFFSET);\n return view[index + HEADER_OFFSET];\n}\n/**\n * Takes the value of a slot in `LView` and returns the element node.\n *\n * Normally, element nodes are stored flat, but if the node has styles/classes on it,\n * it might be wrapped in a styling context. Or if that node has a directive that injects\n * ViewContainerRef, it may be wrapped in an LContainer. Or if that node is a component,\n * it will be wrapped in LView. It could even have all three, so we keep looping\n * until we find something that isn't an array.\n *\n * @param value The initial value in `LView`\n */\nfunction readElementValue(value) {\n while (Array.isArray(value)) {\n value = value[HOST];\n }\n return value;\n}\n/**\n * Retrieves an element value from the provided `viewData`, by unwrapping\n * from any containers, component views, or style contexts.\n */\nfunction getNativeByIndex(index, lView) {\n return readElementValue(lView[index + HEADER_OFFSET]);\n}\nfunction getNativeByTNode(tNode, hostView) {\n return readElementValue(hostView[tNode.index]);\n}\nfunction getTNode(index, view) {\n ngDevMode && assertGreaterThan(index, -1, 'wrong index for TNode');\n ngDevMode && assertLessThan(index, view[TVIEW].data.length, 'wrong index for TNode');\n return view[TVIEW].data[index + HEADER_OFFSET];\n}\nfunction getComponentViewByIndex(nodeIndex, hostView) {\n // Could be an LView or an LContainer. If LContainer, unwrap to find LView.\n var slotValue = hostView[nodeIndex];\n return slotValue.length >= HEADER_OFFSET ? slotValue : slotValue[HOST];\n}\nfunction isContentQueryHost(tNode) {\n return (tNode.flags & 4 /* hasContentQuery */) !== 0;\n}\nfunction isComponent(tNode) {\n return (tNode.flags & 1 /* isComponent */) === 1 /* isComponent */;\n}\nfunction isComponentDef(def) {\n return def.template !== null;\n}\nfunction isLContainer(value) {\n // Styling contexts are also arrays, but their first index contains an element node\n return Array.isArray(value) && value.length === LCONTAINER_LENGTH;\n}\nfunction isRootView(target) {\n return (target[FLAGS] & 128 /* IsRoot */) !== 0;\n}\n/**\n * Retrieve the root view from any component by walking the parent `LView` until\n * reaching the root `LView`.\n *\n * @param component any component\n */\nfunction getRootView(target) {\n ngDevMode && assertDefined(target, 'component');\n var lView = Array.isArray(target) ? target : readPatchedLView(target);\n while (lView && !(lView[FLAGS] & 128 /* IsRoot */)) {\n lView = lView[PARENT];\n }\n return lView;\n}\nfunction getRootContext(viewOrComponent) {\n var rootView = getRootView(viewOrComponent);\n ngDevMode &&\n assertDefined(rootView[CONTEXT], 'RootView has no context. Perhaps it is disconnected?');\n return rootView[CONTEXT];\n}\n/**\n * Returns the monkey-patch value data present on the target (which could be\n * a component, directive or a DOM node).\n */\nfunction readPatchedData(target) {\n ngDevMode && assertDefined(target, 'Target expected');\n return target[MONKEY_PATCH_KEY_NAME];\n}\nfunction readPatchedLView(target) {\n var value = readPatchedData(target);\n if (value) {\n return Array.isArray(value) ? value : value.lView;\n }\n return null;\n}\nfunction hasParentInjector(parentLocation) {\n return parentLocation !== NO_PARENT_INJECTOR;\n}\nfunction getParentInjectorIndex(parentLocation) {\n return parentLocation & 32767 /* InjectorIndexMask */;\n}\nfunction getParentInjectorViewOffset(parentLocation) {\n return parentLocation >> 16 /* ViewOffsetShift */;\n}\n/**\n * Unwraps a parent injector location number to find the view offset from the current injector,\n * then walks up the declaration view tree until the view is found that contains the parent\n * injector.\n *\n * @param location The location of the parent injector, which contains the view offset\n * @param startView The LView instance from which to start walking up the view tree\n * @returns The LView instance that contains the parent injector\n */\nfunction getParentInjectorView(location, startView) {\n var viewOffset = getParentInjectorViewOffset(location);\n var parentView = startView;\n // For most cases, the parent injector can be found on the host node (e.g. for component\n // or container), but we must keep the loop here to support the rarer case of deeply nested\n // tags or inline views, where the parent injector might live many views\n // above the child injector.\n while (viewOffset > 0) {\n parentView = parentView[DECLARATION_VIEW];\n viewOffset--;\n }\n return parentView;\n}\n/**\n * Unwraps a parent injector location number to find the view offset from the current injector,\n * then walks up the declaration view tree until the TNode of the parent injector is found.\n *\n * @param location The location of the parent injector, which contains the view offset\n * @param startView The LView instance from which to start walking up the view tree\n * @param startTNode The TNode instance of the starting element\n * @returns The TNode of the parent injector\n */\nfunction getParentInjectorTNode(location, startView, startTNode) {\n if (startTNode.parent && startTNode.parent.injectorIndex !== -1) {\n // view offset is 0\n var injectorIndex = startTNode.parent.injectorIndex;\n var parentTNode_1 = startTNode.parent;\n while (parentTNode_1.parent != null && injectorIndex == parentTNode_1.injectorIndex) {\n parentTNode_1 = parentTNode_1.parent;\n }\n return parentTNode_1;\n }\n var viewOffset = getParentInjectorViewOffset(location);\n // view offset is 1\n var parentView = startView;\n var parentTNode = startView[HOST_NODE];\n // view offset is superior to 1\n while (viewOffset > 1) {\n parentView = parentView[DECLARATION_VIEW];\n parentTNode = parentView[HOST_NODE];\n viewOffset--;\n }\n return parentTNode;\n}\nvar defaultScheduler = (typeof requestAnimationFrame !== 'undefined' && requestAnimationFrame || // browser only\n setTimeout // everything else\n).bind(_global);\n/**\n * Equivalent to ES6 spread, add each item to an array.\n *\n * @param items The items to add\n * @param arr The array to which you want to add the items\n */\nfunction addAllToArray(items, arr) {\n for (var i = 0; i < items.length; i++) {\n arr.push(items[i]);\n }\n}\n/**\n * Given a current view, finds the nearest component's host (LElement).\n *\n * @param lView LView for which we want a host element node\n * @returns The host node\n */\nfunction findComponentView(lView) {\n var rootTNode = lView[HOST_NODE];\n while (rootTNode && rootTNode.type === 2 /* View */) {\n ngDevMode && assertDefined(lView[DECLARATION_VIEW], 'lView[DECLARATION_VIEW]');\n lView = lView[DECLARATION_VIEW];\n rootTNode = lView[HOST_NODE];\n }\n return lView;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar R3ResolvedDependencyType;\n(function (R3ResolvedDependencyType) {\n R3ResolvedDependencyType[R3ResolvedDependencyType[\"Token\"] = 0] = \"Token\";\n R3ResolvedDependencyType[R3ResolvedDependencyType[\"Attribute\"] = 1] = \"Attribute\";\n})(R3ResolvedDependencyType || (R3ResolvedDependencyType = {}));\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction getCompilerFacade() {\n var globalNg = _global['ng'];\n if (!globalNg || !globalNg.ɵcompilerFacade) {\n throw new Error(\"Angular JIT compilation failed: '@angular/compiler' not loaded!\\n\" +\n \" - JIT compilation is discouraged for production use-cases! Consider AOT mode instead.\\n\" +\n \" - Did you bootstrap using '@angular/platform-browser-dynamic' or '@angular/platform-server'?\\n\" +\n \" - Alternatively provide the compiler with 'import \\\"@angular/compiler\\\";' before bootstrapping.\");\n }\n return globalNg.ɵcompilerFacade;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Inject decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nvar Inject = makeParamDecorator('Inject', function (token) { return ({ token: token }); });\n/**\n * Optional decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nvar Optional = makeParamDecorator('Optional');\n/**\n * Self decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nvar Self = makeParamDecorator('Self');\n/**\n * SkipSelf decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nvar SkipSelf = makeParamDecorator('SkipSelf');\n/**\n * Host decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nvar Host = makeParamDecorator('Host');\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection flags for DI.\n *\n * @publicApi\n */\nvar InjectFlags;\n(function (InjectFlags) {\n // TODO(alxhub): make this 'const' when ngc no longer writes exports of it into ngfactory files.\n InjectFlags[InjectFlags[\"Default\"] = 0] = \"Default\";\n /**\n * Specifies that an injector should retrieve a dependency from any injector until reaching the\n * host element of the current component. (Only used with Element Injector)\n */\n InjectFlags[InjectFlags[\"Host\"] = 1] = \"Host\";\n /** Don't descend into ancestors of the node requesting injection. */\n InjectFlags[InjectFlags[\"Self\"] = 2] = \"Self\";\n /** Skip the node that is requesting injection. */\n InjectFlags[InjectFlags[\"SkipSelf\"] = 4] = \"SkipSelf\";\n /** Inject `defaultValue` instead if token not found. */\n InjectFlags[InjectFlags[\"Optional\"] = 8] = \"Optional\";\n})(InjectFlags || (InjectFlags = {}));\n/**\n * Current injector value used by `inject`.\n * - `undefined`: it is an error to call `inject`\n * - `null`: `inject` can be called but there is no injector (limp-mode).\n * - Injector instance: Use the injector for resolution.\n */\nvar _currentInjector = undefined;\nfunction setCurrentInjector(injector) {\n var former = _currentInjector;\n _currentInjector = injector;\n return former;\n}\n/**\n * Current implementation of inject.\n *\n * By default, it is `injectInjectorOnly`, which makes it `Injector`-only aware. It can be changed\n * to `directiveInject`, which brings in the `NodeInjector` system of ivy. It is designed this\n * way for two reasons:\n * 1. `Injector` should not depend on ivy logic.\n * 2. To maintain tree shake-ability we don't want to bring in unnecessary code.\n */\nvar _injectImplementation;\n/**\n * Sets the current inject implementation.\n */\nfunction setInjectImplementation(impl) {\n var previous = _injectImplementation;\n _injectImplementation = impl;\n return previous;\n}\nfunction injectInjectorOnly(token, flags) {\n if (flags === void 0) { flags = InjectFlags.Default; }\n if (_currentInjector === undefined) {\n throw new Error(\"inject() must be called from an injection context\");\n }\n else if (_currentInjector === null) {\n return injectRootLimpMode(token, undefined, flags);\n }\n else {\n return _currentInjector.get(token, flags & InjectFlags.Optional ? null : undefined, flags);\n }\n}\nfunction inject(token, flags) {\n if (flags === void 0) { flags = InjectFlags.Default; }\n return (_injectImplementation || injectInjectorOnly)(token, flags);\n}\n/**\n * Injects `root` tokens in limp mode.\n *\n * If no injector exists, we can still inject tree-shakable providers which have `providedIn` set to\n * `\"root\"`. This is known as the limp mode injection. In such case the value is stored in the\n * `InjectableDef`.\n */\nfunction injectRootLimpMode(token, notFoundValue, flags) {\n var injectableDef = getInjectableDef(token);\n if (injectableDef && injectableDef.providedIn == 'root') {\n return injectableDef.value === undefined ? injectableDef.value = injectableDef.factory() :\n injectableDef.value;\n }\n if (flags & InjectFlags.Optional)\n return null;\n if (notFoundValue !== undefined)\n return notFoundValue;\n throw new Error(\"Injector: NOT_FOUND [\" + stringify(token) + \"]\");\n}\nfunction injectArgs(types) {\n var args = [];\n for (var i = 0; i < types.length; i++) {\n var arg = types[i];\n if (Array.isArray(arg)) {\n if (arg.length === 0) {\n throw new Error('Arguments array must have arguments.');\n }\n var type = undefined;\n var flags = InjectFlags.Default;\n for (var j = 0; j < arg.length; j++) {\n var meta = arg[j];\n if (meta instanceof Optional || meta.ngMetadataName === 'Optional') {\n flags |= InjectFlags.Optional;\n }\n else if (meta instanceof SkipSelf || meta.ngMetadataName === 'SkipSelf') {\n flags |= InjectFlags.SkipSelf;\n }\n else if (meta instanceof Self || meta.ngMetadataName === 'Self') {\n flags |= InjectFlags.Self;\n }\n else if (meta instanceof Inject) {\n type = meta.token;\n }\n else {\n type = meta;\n }\n }\n args.push(inject(type, flags));\n }\n else {\n args.push(inject(arg));\n }\n }\n return args;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction assertNodeType(tNode, type) {\n assertDefined(tNode, 'should be called with a TNode');\n assertEqual(tNode.type, type, \"should be a \" + typeName(type));\n}\nfunction assertNodeOfPossibleTypes(tNode) {\n var types = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n types[_i - 1] = arguments[_i];\n }\n assertDefined(tNode, 'should be called with a TNode');\n var found = types.some(function (type) { return tNode.type === type; });\n assertEqual(found, true, \"Should be one of \" + types.map(typeName).join(', ') + \" but got \" + typeName(tNode.type));\n}\nfunction typeName(type) {\n if (type == 1 /* Projection */)\n return 'Projection';\n if (type == 0 /* Container */)\n return 'Container';\n if (type == 2 /* View */)\n return 'View';\n if (type == 3 /* Element */)\n return 'Element';\n if (type == 4 /* ElementContainer */)\n return 'ElementContainer';\n return '';\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * If this is the first template pass, any ngOnInit or ngDoCheck hooks will be queued into\n * TView.initHooks during directiveCreate.\n *\n * The directive index and hook type are encoded into one number (1st bit: type, remaining bits:\n * directive index), then saved in the even indices of the initHooks array. The odd indices\n * hold the hook functions themselves.\n *\n * @param index The index of the directive in LView\n * @param hooks The static hooks map on the directive def\n * @param tView The current TView\n */\nfunction queueInitHooks(index, onInit, doCheck, tView) {\n ngDevMode &&\n assertEqual(tView.firstTemplatePass, true, 'Should only be called on first template pass');\n if (onInit) {\n (tView.initHooks || (tView.initHooks = [])).push(index, onInit);\n }\n if (doCheck) {\n (tView.initHooks || (tView.initHooks = [])).push(index, doCheck);\n (tView.checkHooks || (tView.checkHooks = [])).push(index, doCheck);\n }\n}\n/**\n * Loops through the directives on a node and queues all their hooks except ngOnInit\n * and ngDoCheck, which are queued separately in directiveCreate.\n */\nfunction queueLifecycleHooks(tView, tNode) {\n if (tView.firstTemplatePass) {\n // It's necessary to loop through the directives at elementEnd() (rather than processing in\n // directiveCreate) so we can preserve the current hook order. Content, view, and destroy\n // hooks for projected components and directives must be called *before* their hosts.\n for (var i = tNode.directiveStart, end = tNode.directiveEnd; i < end; i++) {\n var def = tView.data[i];\n queueContentHooks(def, tView, i);\n queueViewHooks(def, tView, i);\n queueDestroyHooks(def, tView, i);\n }\n }\n}\n/** Queues afterContentInit and afterContentChecked hooks on TView */\nfunction queueContentHooks(def, tView, i) {\n if (def.afterContentInit) {\n (tView.contentHooks || (tView.contentHooks = [])).push(i, def.afterContentInit);\n }\n if (def.afterContentChecked) {\n (tView.contentHooks || (tView.contentHooks = [])).push(i, def.afterContentChecked);\n (tView.contentCheckHooks || (tView.contentCheckHooks = [])).push(i, def.afterContentChecked);\n }\n}\n/** Queues afterViewInit and afterViewChecked hooks on TView */\nfunction queueViewHooks(def, tView, i) {\n if (def.afterViewInit) {\n (tView.viewHooks || (tView.viewHooks = [])).push(i, def.afterViewInit);\n }\n if (def.afterViewChecked) {\n (tView.viewHooks || (tView.viewHooks = [])).push(i, def.afterViewChecked);\n (tView.viewCheckHooks || (tView.viewCheckHooks = [])).push(i, def.afterViewChecked);\n }\n}\n/** Queues onDestroy hooks on TView */\nfunction queueDestroyHooks(def, tView, i) {\n if (def.onDestroy != null) {\n (tView.destroyHooks || (tView.destroyHooks = [])).push(i, def.onDestroy);\n }\n}\n/**\n * Calls onInit and doCheck calls if they haven't already been called.\n *\n * @param currentView The current view\n */\nfunction executeInitHooks(currentView, tView, checkNoChangesMode) {\n if (!checkNoChangesMode && currentView[FLAGS] & 32 /* RunInit */) {\n executeHooks(currentView, tView.initHooks, tView.checkHooks, checkNoChangesMode);\n currentView[FLAGS] &= ~32 /* RunInit */;\n }\n}\n/**\n * Iterates over afterViewInit and afterViewChecked functions and calls them.\n *\n * @param currentView The current view\n */\nfunction executeHooks(currentView, allHooks, checkHooks, checkNoChangesMode) {\n if (checkNoChangesMode)\n return;\n var hooksToCall = currentView[FLAGS] & 2 /* FirstLViewPass */ ? allHooks : checkHooks;\n if (hooksToCall) {\n callHooks(currentView, hooksToCall);\n }\n}\n/**\n * Calls lifecycle hooks with their contexts, skipping init hooks if it's not\n * the first LView pass.\n *\n * @param currentView The current view\n * @param arr The array in which the hooks are found\n */\nfunction callHooks(currentView, arr) {\n for (var i = 0; i < arr.length; i += 2) {\n arr[i + 1].call(currentView[arr[i]]);\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Store the element depth count. This is used to identify the root elements of the template\n * so that we can than attach `LView` to only those elements.\n */\nvar elementDepthCount;\nfunction getElementDepthCount() {\n // top level variables should not be exported for performance reasons (PERF_NOTES.md)\n return elementDepthCount;\n}\nfunction increaseElementDepthCount() {\n elementDepthCount++;\n}\nfunction decreaseElementDepthCount() {\n elementDepthCount--;\n}\nvar currentDirectiveDef = null;\nfunction getCurrentDirectiveDef() {\n // top level variables should not be exported for performance reasons (PERF_NOTES.md)\n return currentDirectiveDef;\n}\nfunction setCurrentDirectiveDef(def) {\n currentDirectiveDef = def;\n}\n/**\n * Stores whether directives should be matched to elements.\n *\n * When template contains `ngNonBindable` than we need to prevent the runtime form matching\n * directives on children of that element.\n *\n * Example:\n * ```\n * \n * Should match component / directive.\n * \n *
\n * \n * Should not match component / directive because we are in ngNonBindable.\n * \n *
\n * ```\n */\nvar bindingsEnabled;\nfunction getBindingsEnabled() {\n // top level variables should not be exported for performance reasons (PERF_NOTES.md)\n return bindingsEnabled;\n}\n/**\n * Enables directive matching on elements.\n *\n * * Example:\n * ```\n * \n * Should match component / directive.\n * \n *
\n * \n * \n * Should not match component / directive because we are in ngNonBindable.\n * \n * \n *
\n * ```\n */\nfunction enableBindings() {\n bindingsEnabled = true;\n}\n/**\n * Disables directive matching on element.\n *\n * * Example:\n * ```\n * \n * Should match component / directive.\n * \n *
\n * \n * \n * Should not match component / directive because we are in ngNonBindable.\n * \n * \n *
\n * ```\n */\nfunction disableBindings() {\n bindingsEnabled = false;\n}\nfunction getLView() {\n return lView;\n}\n/**\n * Restores `contextViewData` to the given OpaqueViewState instance.\n *\n * Used in conjunction with the getCurrentView() instruction to save a snapshot\n * of the current view and restore it when listeners are invoked. This allows\n * walking the declaration view tree in listeners to get vars from parent views.\n *\n * @param viewToRestore The OpaqueViewState instance to restore.\n */\nfunction restoreView(viewToRestore) {\n contextLView = viewToRestore;\n}\n/** Used to set the parent property when nodes are created and track query results. */\nvar previousOrParentTNode;\nfunction getPreviousOrParentTNode() {\n // top level variables should not be exported for performance reasons (PERF_NOTES.md)\n return previousOrParentTNode;\n}\nfunction setPreviousOrParentTNode(tNode) {\n previousOrParentTNode = tNode;\n}\nfunction setTNodeAndViewData(tNode, view) {\n previousOrParentTNode = tNode;\n lView = view;\n}\n/**\n * If `isParent` is:\n * - `true`: then `previousOrParentTNode` points to a parent node.\n * - `false`: then `previousOrParentTNode` points to previous node (sibling).\n */\nvar isParent;\nfunction getIsParent() {\n // top level variables should not be exported for performance reasons (PERF_NOTES.md)\n return isParent;\n}\nfunction setIsParent(value) {\n isParent = value;\n}\n/**\n * Query instructions can ask for \"current queries\" in 2 different cases:\n * - when creating view queries (at the root of a component view, before any node is created - in\n * this case currentQueries points to view queries)\n * - when creating content queries (i.e. this previousOrParentTNode points to a node on which we\n * create content queries).\n */\nfunction getOrCreateCurrentQueries(QueryType) {\n var lView = getLView();\n var currentQueries = lView[QUERIES];\n // if this is the first content query on a node, any existing LQueries needs to be cloned\n // in subsequent template passes, the cloning occurs before directive instantiation.\n if (previousOrParentTNode && previousOrParentTNode !== lView[HOST_NODE] &&\n !isContentQueryHost(previousOrParentTNode)) {\n currentQueries && (currentQueries = lView[QUERIES] = currentQueries.clone());\n previousOrParentTNode.flags |= 4 /* hasContentQuery */;\n }\n return currentQueries || (lView[QUERIES] = new QueryType(null, null, null));\n}\n/** Checks whether a given view is in creation mode */\nfunction isCreationMode(view) {\n if (view === void 0) { view = lView; }\n return (view[FLAGS] & 1 /* CreationMode */) === 1 /* CreationMode */;\n}\n/**\n * State of the current view being processed.\n *\n * An array of nodes (text, element, container, etc), pipes, their bindings, and\n * any local variables that need to be stored between invocations.\n */\nvar lView;\n/**\n * The last viewData retrieved by nextContext().\n * Allows building nextContext() and reference() calls.\n *\n * e.g. const inner = x().$implicit; const outer = x().$implicit;\n */\nvar contextLView = null;\nfunction getContextLView() {\n // top level variables should not be exported for performance reasons (PERF_NOTES.md)\n return contextLView;\n}\n/**\n * In this mode, any changes in bindings will throw an ExpressionChangedAfterChecked error.\n *\n * Necessary to support ChangeDetectorRef.checkNoChanges().\n */\nvar checkNoChangesMode = false;\nfunction getCheckNoChangesMode() {\n // top level variables should not be exported for performance reasons (PERF_NOTES.md)\n return checkNoChangesMode;\n}\nfunction setCheckNoChangesMode(mode) {\n checkNoChangesMode = mode;\n}\n/** Whether or not this is the first time the current view has been processed. */\nvar firstTemplatePass = true;\nfunction getFirstTemplatePass() {\n return firstTemplatePass;\n}\nfunction setFirstTemplatePass(value) {\n firstTemplatePass = value;\n}\n/**\n * The root index from which pure function instructions should calculate their binding\n * indices. In component views, this is TView.bindingStartIndex. In a host binding\n * context, this is the TView.expandoStartIndex + any dirs/hostVars before the given dir.\n */\nvar bindingRootIndex = -1;\n// top level variables should not be exported for performance reasons (PERF_NOTES.md)\nfunction getBindingRoot() {\n return bindingRootIndex;\n}\nfunction setBindingRoot(value) {\n bindingRootIndex = value;\n}\n/**\n * Swap the current state with a new state.\n *\n * For performance reasons we store the state in the top level of the module.\n * This way we minimize the number of properties to read. Whenever a new view\n * is entered we have to store the state for later, and when the view is\n * exited the state has to be restored\n *\n * @param newView New state to become active\n * @param host Element to which the View is a child of\n * @returns the previous state;\n */\nfunction enterView(newView, hostTNode) {\n var oldView = lView;\n if (newView) {\n var tView = newView[TVIEW];\n firstTemplatePass = tView.firstTemplatePass;\n bindingRootIndex = tView.bindingStartIndex;\n }\n previousOrParentTNode = hostTNode;\n isParent = true;\n lView = contextLView = newView;\n return oldView;\n}\nfunction nextContextImpl(level) {\n if (level === void 0) { level = 1; }\n contextLView = walkUpViews(level, contextLView);\n return contextLView[CONTEXT];\n}\nfunction walkUpViews(nestingLevel, currentView) {\n while (nestingLevel > 0) {\n ngDevMode && assertDefined(currentView[DECLARATION_VIEW], 'Declaration view should be defined if nesting level is greater than 0.');\n currentView = currentView[DECLARATION_VIEW];\n nestingLevel--;\n }\n return currentView;\n}\n/**\n * Resets the application state.\n */\nfunction resetComponentState() {\n isParent = false;\n previousOrParentTNode = null;\n elementDepthCount = 0;\n bindingsEnabled = true;\n}\n/**\n * Used in lieu of enterView to make it clear when we are exiting a child view. This makes\n * the direction of traversal (up or down the view tree) a bit clearer.\n *\n * @param newView New state to become active\n */\nfunction leaveView(newView) {\n var tView = lView[TVIEW];\n if (isCreationMode(lView)) {\n lView[FLAGS] &= ~1 /* CreationMode */;\n }\n else {\n executeHooks(lView, tView.viewHooks, tView.viewCheckHooks, checkNoChangesMode);\n // Views are clean and in update mode after being checked, so these bits are cleared\n lView[FLAGS] &= ~(8 /* Dirty */ | 2 /* FirstLViewPass */);\n lView[FLAGS] |= 32 /* RunInit */;\n lView[BINDING_INDEX] = tView.bindingStartIndex;\n }\n enterView(newView, null);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Defines if the call to `inject` should include `viewProviders` in its resolution.\n *\n * This is set to true when we try to instantiate a component. This value is reset in\n * `getNodeInjectable` to a value which matches the declaration location of the token about to be\n * instantiated. This is done so that if we are injecting a token which was declared outside of\n * `viewProviders` we don't accidentally pull `viewProviders` in.\n *\n * Example:\n *\n * ```\n * @Injectable()\n * class MyService {\n * constructor(public value: String) {}\n * }\n *\n * @Component({\n * providers: [\n * MyService,\n * {provide: String, value: 'providers' }\n * ]\n * viewProviders: [\n * {provide: String, value: 'viewProviders'}\n * ]\n * })\n * class MyComponent {\n * constructor(myService: MyService, value: String) {\n * // We expect that Component can see into `viewProviders`.\n * expect(value).toEqual('viewProviders');\n * // `MyService` was not declared in `viewProviders` hence it can't see it.\n * expect(myService.value).toEqual('providers');\n * }\n * }\n *\n * ```\n */\nvar includeViewProviders = true;\nfunction setIncludeViewProviders(v) {\n var oldValue = includeViewProviders;\n includeViewProviders = v;\n return oldValue;\n}\n/**\n * The number of slots in each bloom filter (used by DI). The larger this number, the fewer\n * directives that will share slots, and thus, the fewer false positives when checking for\n * the existence of a directive.\n */\nvar BLOOM_SIZE = 256;\nvar BLOOM_MASK = BLOOM_SIZE - 1;\n/** Counter used to generate unique IDs for directives. */\nvar nextNgElementId = 0;\n/**\n * Registers this directive as present in its node's injector by flipping the directive's\n * corresponding bit in the injector's bloom filter.\n *\n * @param injectorIndex The index of the node injector where this token should be registered\n * @param tView The TView for the injector's bloom filters\n * @param type The directive token to register\n */\nfunction bloomAdd(injectorIndex, tView, type) {\n ngDevMode && assertEqual(tView.firstTemplatePass, true, 'expected firstTemplatePass to be true');\n var id = typeof type !== 'string' ? type[NG_ELEMENT_ID] : type.charCodeAt(0) || 0;\n // Set a unique ID on the directive type, so if something tries to inject the directive,\n // we can easily retrieve the ID and hash it into the bloom bit that should be checked.\n if (id == null) {\n id = type[NG_ELEMENT_ID] = nextNgElementId++;\n }\n // We only have BLOOM_SIZE (256) slots in our bloom filter (8 buckets * 32 bits each),\n // so all unique IDs must be modulo-ed into a number from 0 - 255 to fit into the filter.\n var bloomBit = id & BLOOM_MASK;\n // Create a mask that targets the specific bit associated with the directive.\n // JS bit operations are 32 bits, so this will be a number between 2^0 and 2^31, corresponding\n // to bit positions 0 - 31 in a 32 bit integer.\n var mask = 1 << bloomBit;\n // Use the raw bloomBit number to determine which bloom filter bucket we should check\n // e.g: bf0 = [0 - 31], bf1 = [32 - 63], bf2 = [64 - 95], bf3 = [96 - 127], etc\n var b7 = bloomBit & 0x80;\n var b6 = bloomBit & 0x40;\n var b5 = bloomBit & 0x20;\n var tData = tView.data;\n if (b7) {\n b6 ? (b5 ? (tData[injectorIndex + 7] |= mask) : (tData[injectorIndex + 6] |= mask)) :\n (b5 ? (tData[injectorIndex + 5] |= mask) : (tData[injectorIndex + 4] |= mask));\n }\n else {\n b6 ? (b5 ? (tData[injectorIndex + 3] |= mask) : (tData[injectorIndex + 2] |= mask)) :\n (b5 ? (tData[injectorIndex + 1] |= mask) : (tData[injectorIndex] |= mask));\n }\n}\n/**\n * Creates (or gets an existing) injector for a given element or container.\n *\n * @param tNode for which an injector should be retrieved / created.\n * @param hostView View where the node is stored\n * @returns Node injector\n */\nfunction getOrCreateNodeInjectorForNode(tNode, hostView) {\n var existingInjectorIndex = getInjectorIndex(tNode, hostView);\n if (existingInjectorIndex !== -1) {\n return existingInjectorIndex;\n }\n var tView = hostView[TVIEW];\n if (tView.firstTemplatePass) {\n tNode.injectorIndex = hostView.length;\n insertBloom(tView.data, tNode); // foundation for node bloom\n insertBloom(hostView, null); // foundation for cumulative bloom\n insertBloom(tView.blueprint, null);\n ngDevMode && assertEqual(tNode.flags === 0 || tNode.flags === 1 /* isComponent */, true, 'expected tNode.flags to not be initialized');\n }\n var parentLoc = getParentInjectorLocation(tNode, hostView);\n var parentIndex = getParentInjectorIndex(parentLoc);\n var parentLView = getParentInjectorView(parentLoc, hostView);\n var injectorIndex = tNode.injectorIndex;\n // If a parent injector can't be found, its location is set to -1.\n // In that case, we don't need to set up a cumulative bloom\n if (hasParentInjector(parentLoc)) {\n var parentData = parentLView[TVIEW].data;\n // Creates a cumulative bloom filter that merges the parent's bloom filter\n // and its own cumulative bloom (which contains tokens for all ancestors)\n for (var i = 0; i < 8; i++) {\n hostView[injectorIndex + i] = parentLView[parentIndex + i] | parentData[parentIndex + i];\n }\n }\n hostView[injectorIndex + PARENT_INJECTOR] = parentLoc;\n return injectorIndex;\n}\nfunction insertBloom(arr, footer) {\n arr.push(0, 0, 0, 0, 0, 0, 0, 0, footer);\n}\nfunction getInjectorIndex(tNode, hostView) {\n if (tNode.injectorIndex === -1 ||\n // If the injector index is the same as its parent's injector index, then the index has been\n // copied down from the parent node. No injector has been created yet on this node.\n (tNode.parent && tNode.parent.injectorIndex === tNode.injectorIndex) ||\n // After the first template pass, the injector index might exist but the parent values\n // might not have been calculated yet for this instance\n hostView[tNode.injectorIndex + PARENT_INJECTOR] == null) {\n return -1;\n }\n else {\n return tNode.injectorIndex;\n }\n}\n/**\n * Finds the index of the parent injector, with a view offset if applicable. Used to set the\n * parent injector initially.\n *\n * Returns a combination of number of `ViewData` we have to go up and index in that `Viewdata`\n */\nfunction getParentInjectorLocation(tNode, view) {\n if (tNode.parent && tNode.parent.injectorIndex !== -1) {\n return tNode.parent.injectorIndex; // ViewOffset is 0\n }\n // For most cases, the parent injector index can be found on the host node (e.g. for component\n // or container), so this loop will be skipped, but we must keep the loop here to support\n // the rarer case of deeply nested tags or inline views.\n var hostTNode = view[HOST_NODE];\n var viewOffset = 1;\n while (hostTNode && hostTNode.injectorIndex === -1) {\n view = view[DECLARATION_VIEW];\n hostTNode = view ? view[HOST_NODE] : null;\n viewOffset++;\n }\n return hostTNode ?\n hostTNode.injectorIndex | (viewOffset << 16 /* ViewOffsetShift */) :\n -1;\n}\n/**\n * Makes a type or an injection token public to the DI system by adding it to an\n * injector's bloom filter.\n *\n * @param di The node injector in which a directive will be added\n * @param token The type or the injection token to be made public\n */\nfunction diPublicInInjector(injectorIndex, view, token) {\n bloomAdd(injectorIndex, view[TVIEW], token);\n}\n/**\n * Inject static attribute value into directive constructor.\n *\n * This method is used with `factory` functions which are generated as part of\n * `defineDirective` or `defineComponent`. The method retrieves the static value\n * of an attribute. (Dynamic attributes are not supported since they are not resolved\n * at the time of injection and can change over time.)\n *\n * # Example\n * Given:\n * ```\n * @Component(...)\n * class MyComponent {\n * constructor(@Attribute('title') title: string) { ... }\n * }\n * ```\n * When instantiated with\n * ```\n * \n * ```\n *\n * Then factory method generated is:\n * ```\n * MyComponent.ngComponentDef = defineComponent({\n * factory: () => new MyComponent(injectAttribute('title'))\n * ...\n * })\n * ```\n *\n * @publicApi\n */\nfunction injectAttributeImpl(tNode, attrNameToInject) {\n ngDevMode && assertNodeOfPossibleTypes(tNode, 0 /* Container */, 3 /* Element */, 4 /* ElementContainer */);\n ngDevMode && assertDefined(tNode, 'expecting tNode');\n var attrs = tNode.attrs;\n if (attrs) {\n for (var i = 0; i < attrs.length; i = i + 2) {\n var attrName = attrs[i];\n if (attrName === 3 /* SelectOnly */)\n break;\n if (attrName == attrNameToInject) {\n return attrs[i + 1];\n }\n }\n }\n return null;\n}\n/**\n * Returns the value associated to the given token from the NodeInjectors => ModuleInjector.\n *\n * Look for the injector providing the token by walking up the node injector tree and then\n * the module injector tree.\n *\n * @param tNode The Node where the search for the injector should start\n * @param lView The `LView` that contains the `tNode`\n * @param token The token to look for\n * @param flags Injection flags\n * @param notFoundValue The value to return when the injection flags is `InjectFlags.Optional`\n * @returns the value from the injector, `null` when not found, or `notFoundValue` if provided\n */\nfunction getOrCreateInjectable(tNode, lView, token, flags, notFoundValue) {\n if (flags === void 0) { flags = InjectFlags.Default; }\n if (tNode) {\n var bloomHash = bloomHashBitOrFactory(token);\n // If the ID stored here is a function, this is a special object like ElementRef or TemplateRef\n // so just call the factory function to create it.\n if (typeof bloomHash === 'function') {\n var savePreviousOrParentTNode = getPreviousOrParentTNode();\n var saveLView = getLView();\n setTNodeAndViewData(tNode, lView);\n try {\n var value = bloomHash();\n if (value == null && !(flags & InjectFlags.Optional)) {\n throw new Error(\"No provider for \" + stringify$1(token) + \"!\");\n }\n else {\n return value;\n }\n }\n finally {\n setTNodeAndViewData(savePreviousOrParentTNode, saveLView);\n }\n }\n else if (typeof bloomHash == 'number') {\n // If the token has a bloom hash, then it is a token which could be in NodeInjector.\n // A reference to the previous injector TView that was found while climbing the element\n // injector tree. This is used to know if viewProviders can be accessed on the current\n // injector.\n var previousTView = null;\n var injectorIndex = getInjectorIndex(tNode, lView);\n var parentLocation = NO_PARENT_INJECTOR;\n var hostTElementNode = flags & InjectFlags.Host ? findComponentView(lView)[HOST_NODE] : null;\n // If we should skip this injector, or if there is no injector on this node, start by\n // searching\n // the parent injector.\n if (injectorIndex === -1 || flags & InjectFlags.SkipSelf) {\n parentLocation = injectorIndex === -1 ? getParentInjectorLocation(tNode, lView) :\n lView[injectorIndex + PARENT_INJECTOR];\n if (!shouldSearchParent(flags, false)) {\n injectorIndex = -1;\n }\n else {\n previousTView = lView[TVIEW];\n injectorIndex = getParentInjectorIndex(parentLocation);\n lView = getParentInjectorView(parentLocation, lView);\n }\n }\n // Traverse up the injector tree until we find a potential match or until we know there\n // *isn't* a match.\n while (injectorIndex !== -1) {\n parentLocation = lView[injectorIndex + PARENT_INJECTOR];\n // Check the current injector. If it matches, see if it contains token.\n var tView = lView[TVIEW];\n if (bloomHasToken(bloomHash, injectorIndex, tView.data)) {\n // At this point, we have an injector which *may* contain the token, so we step through\n // the providers and directives associated with the injector's corresponding node to get\n // the instance.\n var instance = searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode);\n if (instance !== NOT_FOUND) {\n return instance;\n }\n }\n if (shouldSearchParent(flags, lView[TVIEW].data[injectorIndex + TNODE] === hostTElementNode) &&\n bloomHasToken(bloomHash, injectorIndex, lView)) {\n // The def wasn't found anywhere on this node, so it was a false positive.\n // Traverse up the tree and continue searching.\n previousTView = tView;\n injectorIndex = getParentInjectorIndex(parentLocation);\n lView = getParentInjectorView(parentLocation, lView);\n }\n else {\n // If we should not search parent OR If the ancestor bloom filter value does not have the\n // bit corresponding to the directive we can give up on traversing up to find the specific\n // injector.\n injectorIndex = -1;\n }\n }\n }\n }\n if (flags & InjectFlags.Optional && notFoundValue === undefined) {\n // This must be set or the NullInjector will throw for optional deps\n notFoundValue = null;\n }\n if ((flags & (InjectFlags.Self | InjectFlags.Host)) === 0) {\n var moduleInjector = lView[INJECTOR];\n if (moduleInjector) {\n return moduleInjector.get(token, notFoundValue, flags & InjectFlags.Optional);\n }\n else {\n return injectRootLimpMode(token, notFoundValue, flags & InjectFlags.Optional);\n }\n }\n if (flags & InjectFlags.Optional) {\n return notFoundValue;\n }\n else {\n throw new Error(\"NodeInjector: NOT_FOUND [\" + stringify$1(token) + \"]\");\n }\n}\nvar NOT_FOUND = {};\nfunction searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode) {\n var currentTView = lView[TVIEW];\n var tNode = currentTView.data[injectorIndex + TNODE];\n // First, we need to determine if view providers can be accessed by the starting element.\n // There are two possibities\n var canAccessViewProviders = previousTView == null ?\n // 1) This is the first invocation `previousTView == null` which means that we are at the\n // `TNode` of where injector is starting to look. In such a case the only time we are allowed\n // to look into the ViewProviders is if:\n // - we are on a component\n // - AND the injector set `includeViewProviders` to true (implying that the token can see\n // ViewProviders because it is the Component or a Service which itself was declared in\n // ViewProviders)\n (isComponent(tNode) && includeViewProviders) :\n // 2) `previousTView != null` which means that we are now walking across the parent nodes.\n // In such a case we are only allowed to look into the ViewProviders if:\n // - We just crossed from child View to Parent View `previousTView != currentTView`\n // - AND the parent TNode is an Element.\n // This means that we just came from the Component's View and therefore are allowed to see\n // into the ViewProviders.\n (previousTView != currentTView && (tNode.type === 3 /* Element */));\n // This special case happens when there is a @host on the inject and when we are searching\n // on the host element node.\n var isHostSpecialCase = (flags & InjectFlags.Host) && hostTElementNode === tNode;\n var injectableIdx = locateDirectiveOrProvider(tNode, lView, token, canAccessViewProviders, isHostSpecialCase);\n if (injectableIdx !== null) {\n return getNodeInjectable(currentTView.data, lView, injectableIdx, tNode);\n }\n else {\n return NOT_FOUND;\n }\n}\n/**\n * Searches for the given token among the node's directives and providers.\n *\n * @param tNode TNode on which directives are present.\n * @param lView The view we are currently processing\n * @param token Provider token or type of a directive to look for.\n * @param canAccessViewProviders Whether view providers should be considered.\n * @param isHostSpecialCase Whether the host special case applies.\n * @returns Index of a found directive or provider, or null when none found.\n */\nfunction locateDirectiveOrProvider(tNode, lView, token, canAccessViewProviders, isHostSpecialCase) {\n var tView = lView[TVIEW];\n var nodeProviderIndexes = tNode.providerIndexes;\n var tInjectables = tView.data;\n var injectablesStart = nodeProviderIndexes & 65535 /* ProvidersStartIndexMask */;\n var directivesStart = tNode.directiveStart;\n var directiveEnd = tNode.directiveEnd;\n var cptViewProvidersCount = nodeProviderIndexes >> 16 /* CptViewProvidersCountShift */;\n var startingIndex = canAccessViewProviders ? injectablesStart : injectablesStart + cptViewProvidersCount;\n // When the host special case applies, only the viewProviders and the component are visible\n var endIndex = isHostSpecialCase ? injectablesStart + cptViewProvidersCount : directiveEnd;\n for (var i = startingIndex; i < endIndex; i++) {\n var providerTokenOrDef = tInjectables[i];\n if (i < directivesStart && token === providerTokenOrDef ||\n i >= directivesStart && providerTokenOrDef.type === token) {\n return i;\n }\n }\n if (isHostSpecialCase) {\n var dirDef = tInjectables[directivesStart];\n if (dirDef && isComponentDef(dirDef) && dirDef.type === token) {\n return directivesStart;\n }\n }\n return null;\n}\n/**\n* Retrieve or instantiate the injectable from the `lData` at particular `index`.\n*\n* This function checks to see if the value has already been instantiated and if so returns the\n* cached `injectable`. Otherwise if it detects that the value is still a factory it\n* instantiates the `injectable` and caches the value.\n*/\nfunction getNodeInjectable(tData, lData, index, tNode) {\n var value = lData[index];\n if (isFactory(value)) {\n var factory = value;\n if (factory.resolving) {\n throw new Error(\"Circular dep for \" + stringify$1(tData[index]));\n }\n var previousIncludeViewProviders = setIncludeViewProviders(factory.canSeeViewProviders);\n factory.resolving = true;\n var previousInjectImplementation = void 0;\n if (factory.injectImpl) {\n previousInjectImplementation = setInjectImplementation(factory.injectImpl);\n }\n var savePreviousOrParentTNode = getPreviousOrParentTNode();\n var saveLView = getLView();\n setTNodeAndViewData(tNode, lData);\n try {\n value = lData[index] = factory.factory(null, tData, lData, tNode);\n }\n finally {\n if (factory.injectImpl)\n setInjectImplementation(previousInjectImplementation);\n setIncludeViewProviders(previousIncludeViewProviders);\n factory.resolving = false;\n setTNodeAndViewData(savePreviousOrParentTNode, saveLView);\n }\n }\n return value;\n}\n/**\n * Returns the bit in an injector's bloom filter that should be used to determine whether or not\n * the directive might be provided by the injector.\n *\n * When a directive is public, it is added to the bloom filter and given a unique ID that can be\n * retrieved on the Type. When the directive isn't public or the token is not a directive `null`\n * is returned as the node injector can not possibly provide that token.\n *\n * @param token the injection token\n * @returns the matching bit to check in the bloom filter or `null` if the token is not known.\n */\nfunction bloomHashBitOrFactory(token) {\n ngDevMode && assertDefined(token, 'token must be defined');\n if (typeof token === 'string') {\n return token.charCodeAt(0) || 0;\n }\n var tokenId = token[NG_ELEMENT_ID];\n return typeof tokenId === 'number' ? tokenId & BLOOM_MASK : tokenId;\n}\nfunction bloomHasToken(bloomHash, injectorIndex, injectorView) {\n // Create a mask that targets the specific bit associated with the directive we're looking for.\n // JS bit operations are 32 bits, so this will be a number between 2^0 and 2^31, corresponding\n // to bit positions 0 - 31 in a 32 bit integer.\n var mask = 1 << bloomHash;\n var b7 = bloomHash & 0x80;\n var b6 = bloomHash & 0x40;\n var b5 = bloomHash & 0x20;\n // Our bloom filter size is 256 bits, which is eight 32-bit bloom filter buckets:\n // bf0 = [0 - 31], bf1 = [32 - 63], bf2 = [64 - 95], bf3 = [96 - 127], etc.\n // Get the bloom filter value from the appropriate bucket based on the directive's bloomBit.\n var value;\n if (b7) {\n value = b6 ? (b5 ? injectorView[injectorIndex + 7] : injectorView[injectorIndex + 6]) :\n (b5 ? injectorView[injectorIndex + 5] : injectorView[injectorIndex + 4]);\n }\n else {\n value = b6 ? (b5 ? injectorView[injectorIndex + 3] : injectorView[injectorIndex + 2]) :\n (b5 ? injectorView[injectorIndex + 1] : injectorView[injectorIndex]);\n }\n // If the bloom filter value has the bit corresponding to the directive's bloomBit flipped on,\n // this injector is a potential match.\n return !!(value & mask);\n}\n/** Returns true if flags prevent parent injector from being searched for tokens */\nfunction shouldSearchParent(flags, isFirstHostTNode) {\n return !(flags & InjectFlags.Self) && !(flags & InjectFlags.Host && isFirstHostTNode);\n}\nfunction injectInjector() {\n var tNode = getPreviousOrParentTNode();\n return new NodeInjector(tNode, getLView());\n}\nvar NodeInjector = /** @class */ (function () {\n function NodeInjector(_tNode, _lView) {\n this._tNode = _tNode;\n this._lView = _lView;\n }\n NodeInjector.prototype.get = function (token, notFoundValue) {\n return getOrCreateInjectable(this._tNode, this._lView, token, undefined, notFoundValue);\n };\n return NodeInjector;\n}());\nfunction getFactoryOf(type) {\n var typeAny = type;\n var def = getComponentDef(typeAny) || getDirectiveDef(typeAny) ||\n getPipeDef(typeAny) || getInjectableDef(typeAny) || getInjectorDef(typeAny);\n if (!def || def.factory === undefined) {\n return null;\n }\n return def.factory;\n}\nfunction getInheritedFactory(type) {\n var proto = Object.getPrototypeOf(type.prototype).constructor;\n var factory = getFactoryOf(proto);\n if (factory !== null) {\n return factory;\n }\n else {\n // There is no factory defined. Either this was improper usage of inheritance\n // (no Angular decorator on the superclass) or there is no constructor at all\n // in the inheritance chain. Since the two cases cannot be distinguished, the\n // latter has to be assumed.\n return function (t) { return new t(); };\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Returns the matching `LContext` data for a given DOM node, directive or component instance.\n *\n * This function will examine the provided DOM element, component, or directive instance\\'s\n * monkey-patched property to derive the `LContext` data. Once called then the monkey-patched\n * value will be that of the newly created `LContext`.\n *\n * If the monkey-patched value is the `LView` instance then the context value for that\n * target will be created and the monkey-patch reference will be updated. Therefore when this\n * function is called it may mutate the provided element\\'s, component\\'s or any of the associated\n * directive\\'s monkey-patch values.\n *\n * If the monkey-patch value is not detected then the code will walk up the DOM until an element\n * is found which contains a monkey-patch reference. When that occurs then the provided element\n * will be updated with a new context (which is then returned). If the monkey-patch value is not\n * detected for a component/directive instance then it will throw an error (all components and\n * directives should be automatically monkey-patched by ivy).\n *\n * @param target Component, Directive or DOM Node.\n */\nfunction getLContext(target) {\n var mpValue = readPatchedData(target);\n if (mpValue) {\n // only when it's an array is it considered an LView instance\n // ... otherwise it's an already constructed LContext instance\n if (Array.isArray(mpValue)) {\n var lView = mpValue;\n var nodeIndex = void 0;\n var component = undefined;\n var directives = undefined;\n if (isComponentInstance(target)) {\n nodeIndex = findViaComponent(lView, target);\n if (nodeIndex == -1) {\n throw new Error('The provided component was not found in the application');\n }\n component = target;\n }\n else if (isDirectiveInstance(target)) {\n nodeIndex = findViaDirective(lView, target);\n if (nodeIndex == -1) {\n throw new Error('The provided directive was not found in the application');\n }\n directives = getDirectivesAtNodeIndex(nodeIndex, lView, false);\n }\n else {\n nodeIndex = findViaNativeElement(lView, target);\n if (nodeIndex == -1) {\n return null;\n }\n }\n // the goal is not to fill the entire context full of data because the lookups\n // are expensive. Instead, only the target data (the element, component, container, ICU\n // expression or directive details) are filled into the context. If called multiple times\n // with different target values then the missing target data will be filled in.\n var native = readElementValue(lView[nodeIndex]);\n var existingCtx = readPatchedData(native);\n var context = (existingCtx && !Array.isArray(existingCtx)) ?\n existingCtx :\n createLContext(lView, nodeIndex, native);\n // only when the component has been discovered then update the monkey-patch\n if (component && context.component === undefined) {\n context.component = component;\n attachPatchData(context.component, context);\n }\n // only when the directives have been discovered then update the monkey-patch\n if (directives && context.directives === undefined) {\n context.directives = directives;\n for (var i = 0; i < directives.length; i++) {\n attachPatchData(directives[i], context);\n }\n }\n attachPatchData(context.native, context);\n mpValue = context;\n }\n }\n else {\n var rElement = target;\n ngDevMode && assertDomNode(rElement);\n // if the context is not found then we need to traverse upwards up the DOM\n // to find the nearest element that has already been monkey patched with data\n var parent_1 = rElement;\n while (parent_1 = parent_1.parentNode) {\n var parentContext = readPatchedData(parent_1);\n if (parentContext) {\n var lView = void 0;\n if (Array.isArray(parentContext)) {\n lView = parentContext;\n }\n else {\n lView = parentContext.lView;\n }\n // the edge of the app was also reached here through another means\n // (maybe because the DOM was changed manually).\n if (!lView) {\n return null;\n }\n var index = findViaNativeElement(lView, rElement);\n if (index >= 0) {\n var native = readElementValue(lView[index]);\n var context = createLContext(lView, index, native);\n attachPatchData(native, context);\n mpValue = context;\n break;\n }\n }\n }\n }\n return mpValue || null;\n}\n/**\n * Creates an empty instance of a `LContext` context\n */\nfunction createLContext(lView, nodeIndex, native) {\n return {\n lView: lView,\n nodeIndex: nodeIndex,\n native: native,\n component: undefined,\n directives: undefined,\n localRefs: undefined,\n };\n}\n/**\n * Takes a component instance and returns the view for that component.\n *\n * @param componentInstance\n * @returns The component's view\n */\nfunction getComponentViewByInstance(componentInstance) {\n var lView = readPatchedData(componentInstance);\n var view;\n if (Array.isArray(lView)) {\n var nodeIndex = findViaComponent(lView, componentInstance);\n view = getComponentViewByIndex(nodeIndex, lView);\n var context = createLContext(lView, nodeIndex, view[HOST]);\n context.component = componentInstance;\n attachPatchData(componentInstance, context);\n attachPatchData(context.native, context);\n }\n else {\n var context = lView;\n view = getComponentViewByIndex(context.nodeIndex, context.lView);\n }\n return view;\n}\n/**\n * Assigns the given data to the given target (which could be a component,\n * directive or DOM node instance) using monkey-patching.\n */\nfunction attachPatchData(target, data) {\n target[MONKEY_PATCH_KEY_NAME] = data;\n}\nfunction isComponentInstance(instance) {\n return instance && instance.constructor && instance.constructor.ngComponentDef;\n}\nfunction isDirectiveInstance(instance) {\n return instance && instance.constructor && instance.constructor.ngDirectiveDef;\n}\n/**\n * Locates the element within the given LView and returns the matching index\n */\nfunction findViaNativeElement(lView, target) {\n var tNode = lView[TVIEW].firstChild;\n while (tNode) {\n var native = getNativeByTNode(tNode, lView);\n if (native === target) {\n return tNode.index;\n }\n tNode = traverseNextElement(tNode);\n }\n return -1;\n}\n/**\n * Locates the next tNode (child, sibling or parent).\n */\nfunction traverseNextElement(tNode) {\n if (tNode.child) {\n return tNode.child;\n }\n else if (tNode.next) {\n return tNode.next;\n }\n else {\n // Let's take the following template:
text
\n // After checking the text node, we need to find the next parent that has a \"next\" TNode,\n // in this case the parent `div`, so that we can find the component.\n while (tNode.parent && !tNode.parent.next) {\n tNode = tNode.parent;\n }\n return tNode.parent && tNode.parent.next;\n }\n}\n/**\n * Locates the component within the given LView and returns the matching index\n */\nfunction findViaComponent(lView, componentInstance) {\n var componentIndices = lView[TVIEW].components;\n if (componentIndices) {\n for (var i = 0; i < componentIndices.length; i++) {\n var elementComponentIndex = componentIndices[i];\n var componentView = getComponentViewByIndex(elementComponentIndex, lView);\n if (componentView[CONTEXT] === componentInstance) {\n return elementComponentIndex;\n }\n }\n }\n else {\n var rootComponentView = getComponentViewByIndex(HEADER_OFFSET, lView);\n var rootComponent = rootComponentView[CONTEXT];\n if (rootComponent === componentInstance) {\n // we are dealing with the root element here therefore we know that the\n // element is the very first element after the HEADER data in the lView\n return HEADER_OFFSET;\n }\n }\n return -1;\n}\n/**\n * Locates the directive within the given LView and returns the matching index\n */\nfunction findViaDirective(lView, directiveInstance) {\n // if a directive is monkey patched then it will (by default)\n // have a reference to the LView of the current view. The\n // element bound to the directive being search lives somewhere\n // in the view data. We loop through the nodes and check their\n // list of directives for the instance.\n var tNode = lView[TVIEW].firstChild;\n while (tNode) {\n var directiveIndexStart = tNode.directiveStart;\n var directiveIndexEnd = tNode.directiveEnd;\n for (var i = directiveIndexStart; i < directiveIndexEnd; i++) {\n if (lView[i] === directiveInstance) {\n return tNode.index;\n }\n }\n tNode = traverseNextElement(tNode);\n }\n return -1;\n}\n/**\n * Returns a list of directives extracted from the given view based on the\n * provided list of directive index values.\n *\n * @param nodeIndex The node index\n * @param lView The target view data\n * @param includeComponents Whether or not to include components in returned directives\n */\nfunction getDirectivesAtNodeIndex(nodeIndex, lView, includeComponents) {\n var tNode = lView[TVIEW].data[nodeIndex];\n var directiveStartIndex = tNode.directiveStart;\n if (directiveStartIndex == 0)\n return EMPTY_ARRAY;\n var directiveEndIndex = tNode.directiveEnd;\n if (!includeComponents && tNode.flags & 1 /* isComponent */)\n directiveStartIndex++;\n return lView.slice(directiveStartIndex, directiveEndIndex);\n}\nfunction getComponentAtNodeIndex(nodeIndex, lView) {\n var tNode = lView[TVIEW].data[nodeIndex];\n var directiveStartIndex = tNode.directiveStart;\n return tNode.flags & 1 /* isComponent */ ? lView[directiveStartIndex] : null;\n}\n/**\n * Returns a map of local references (local reference name => element or directive instance) that\n * exist on a given element.\n */\nfunction discoverLocalRefs(lView, nodeIndex) {\n var tNode = lView[TVIEW].data[nodeIndex];\n if (tNode && tNode.localNames) {\n var result = {};\n for (var i = 0; i < tNode.localNames.length; i += 2) {\n var localRefName = tNode.localNames[i];\n var directiveIndex = tNode.localNames[i + 1];\n result[localRefName] =\n directiveIndex === -1 ? getNativeByTNode(tNode, lView) : lView[directiveIndex];\n }\n return result;\n }\n return null;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Returns the component instance associated with a given DOM host element.\n * Elements which don't represent components return `null`.\n *\n * @param element Host DOM element from which the component should be retrieved.\n *\n * ```\n * \n * #VIEW\n *
\n * \n *
\n * \n *\n * expect(getComponent() instanceof ChildComponent).toBeTruthy();\n * expect(getComponent() instanceof MyApp).toBeTruthy();\n * ```\n *\n * @publicApi\n */\nfunction getComponent(element) {\n var context = loadLContextFromNode(element);\n if (context.component === undefined) {\n context.component = getComponentAtNodeIndex(context.nodeIndex, context.lView);\n }\n return context.component;\n}\n/**\n * Returns the component instance associated with a given DOM host element.\n * Elements which don't represent components return `null`.\n *\n * @param element Host DOM element from which the component should be retrieved.\n *\n * ```\n * \n * #VIEW\n *
\n * \n *
\n * \n *\n * expect(getComponent() instanceof ChildComponent).toBeTruthy();\n * expect(getComponent() instanceof MyApp).toBeTruthy();\n * ```\n *\n * @publicApi\n */\nfunction getContext(element) {\n var context = loadLContextFromNode(element);\n return context.lView[CONTEXT];\n}\n/**\n * Returns the component instance associated with view which owns the DOM element (`null`\n * otherwise).\n *\n * @param element DOM element which is owned by an existing component's view.\n *\n * ```\n * \n * #VIEW\n *
\n * \n *
\n * \n *\n * expect(getViewComponent() instanceof MyApp).toBeTruthy();\n * expect(getViewComponent()).toEqual(null);\n * ```\n *\n * @publicApi\n */\nfunction getViewComponent(element) {\n var context = loadLContext(element);\n var lView = context.lView;\n while (lView[PARENT] && lView[HOST] === null) {\n // As long as lView[HOST] is null we know we are part of sub-template such as `*ngIf`\n lView = lView[PARENT];\n }\n return lView[FLAGS] & 128 /* IsRoot */ ? null : lView[CONTEXT];\n}\n/**\n * Returns the `RootContext` instance that is associated with\n * the application where the target is situated.\n *\n */\nfunction getRootContext$1(target) {\n var lViewData = Array.isArray(target) ? target : loadLContext(target).lView;\n var rootLView = getRootView$1(lViewData);\n return rootLView[CONTEXT];\n}\n/**\n * Retrieve all root components.\n *\n * Root components are those which have been bootstrapped by Angular.\n *\n * @param target A DOM element, component or directive instance.\n *\n * @publicApi\n */\nfunction getRootComponents(target) {\n return __spread(getRootContext$1(target).components);\n}\n/**\n * Retrieves an `Injector` associated with the element, component or directive.\n *\n * @param target A DOM element, component or directive instance.\n *\n * @publicApi\n */\nfunction getInjector(target) {\n var context = loadLContext(target);\n var tNode = context.lView[TVIEW].data[context.nodeIndex];\n return new NodeInjector(tNode, context.lView);\n}\n/**\n * Retrieve a set of injection tokens at a given DOM node.\n *\n * @param element Element for which the injection tokens should be retrieved.\n * @publicApi\n */\nfunction getInjectionTokens(element) {\n var context = loadLContext(element, false);\n if (!context)\n return [];\n var lView = context.lView;\n var tView = lView[TVIEW];\n var tNode = tView.data[context.nodeIndex];\n var providerTokens = [];\n var startIndex = tNode.providerIndexes & 65535 /* ProvidersStartIndexMask */;\n var endIndex = tNode.directiveEnd;\n for (var i = startIndex; i < endIndex; i++) {\n var value = tView.data[i];\n if (isDirectiveDefHack(value)) {\n // The fact that we sometimes store Type and sometimes DirectiveDef in this location is a\n // design flaw. We should always store same type so that we can be monomorphic. The issue\n // is that for Components/Directives we store the def instead the type. The correct behavior\n // is that we should always be storing injectable type in this location.\n value = value.type;\n }\n providerTokens.push(value);\n }\n return providerTokens;\n}\n/**\n * Retrieves directives associated with a given DOM host element.\n *\n * @param target A DOM element, component or directive instance.\n *\n * @publicApi\n */\nfunction getDirectives(target) {\n var context = loadLContext(target);\n if (context.directives === undefined) {\n context.directives = getDirectivesAtNodeIndex(context.nodeIndex, context.lView, false);\n }\n return context.directives || [];\n}\nfunction loadLContext(target, throwOnNotFound) {\n if (throwOnNotFound === void 0) { throwOnNotFound = true; }\n var context = getLContext(target);\n if (!context && throwOnNotFound) {\n throw new Error(ngDevMode ? \"Unable to find context associated with \" + stringify$1(target) :\n 'Invalid ng target');\n }\n return context;\n}\n/**\n * Retrieve the root view from any component by walking the parent `LView` until\n * reaching the root `LView`.\n *\n * @param componentOrView any component or view\n *\n */\nfunction getRootView$1(componentOrView) {\n var lView;\n if (Array.isArray(componentOrView)) {\n ngDevMode && assertDefined(componentOrView, 'lView');\n lView = componentOrView;\n }\n else {\n ngDevMode && assertDefined(componentOrView, 'component');\n lView = readPatchedLView(componentOrView);\n }\n while (lView && !(lView[FLAGS] & 128 /* IsRoot */)) {\n lView = lView[PARENT];\n }\n return lView;\n}\n/**\n * Retrieve map of local references.\n *\n * The references are retrieved as a map of local reference name to element or directive instance.\n *\n * @param target A DOM element, component or directive instance.\n *\n * @publicApi\n */\nfunction getLocalRefs(target) {\n var context = loadLContext(target);\n if (context.localRefs === undefined) {\n context.localRefs = discoverLocalRefs(context.lView, context.nodeIndex);\n }\n return context.localRefs || {};\n}\n/**\n * Retrieve the host element of the component.\n *\n * Use this function to retrieve the host element of the component. The host\n * element is the element which the component is associated with.\n *\n * @param directive Component or Directive for which the host element should be retrieved.\n *\n * @publicApi\n */\nfunction getHostElement(directive) {\n return getLContext(directive).native;\n}\nfunction loadLContextFromNode(node) {\n if (!(node instanceof Node))\n throw new Error('Expecting instance of DOM Node');\n return loadLContext(node);\n}\nfunction isBrowserEvents(listener) {\n // Browser events are those which don't have `useCapture` as boolean.\n return typeof listener.useCapture === 'boolean';\n}\n/**\n * Retrieves a list of DOM listeners.\n *\n * ```\n * \n * #VIEW\n *
\n *
\n * \n *\n * expect(getListeners(
)).toEqual({\n * name: 'click',\n * element:
,\n * callback: () => doSomething(),\n * useCapture: false\n * });\n * ```\n *\n * @param element Element for which the DOM listeners should be retrieved.\n * @publicApi\n */\nfunction getListeners(element) {\n var lContext = loadLContextFromNode(element);\n var lView = lContext.lView;\n var tView = lView[TVIEW];\n var lCleanup = lView[CLEANUP];\n var tCleanup = tView.cleanup;\n var listeners = [];\n if (tCleanup && lCleanup) {\n for (var i = 0; i < tCleanup.length;) {\n var firstParam = tCleanup[i++];\n var secondParam = tCleanup[i++];\n if (typeof firstParam === 'string') {\n var name_1 = firstParam;\n var listenerElement = readElementValue(lView[secondParam]);\n var callback = lCleanup[tCleanup[i++]];\n var useCaptureOrIndx = tCleanup[i++];\n // if useCaptureOrIndx is boolean then report it as is.\n // if useCaptureOrIndx is positive number then it in unsubscribe method\n // if useCaptureOrIndx is negative number then it is a Subscription\n var useCapture = typeof useCaptureOrIndx === 'boolean' ?\n useCaptureOrIndx :\n (useCaptureOrIndx >= 0 ? false : null);\n if (element == listenerElement) {\n listeners.push({ element: element, name: name_1, callback: callback, useCapture: useCapture });\n }\n }\n }\n }\n listeners.sort(sortListeners);\n return listeners;\n}\nfunction sortListeners(a, b) {\n if (a.name == b.name)\n return 0;\n return a.name < b.name ? -1 : 1;\n}\n/**\n * This function should not exist because it is megamorphic and only mostly correct.\n *\n * See call site for more info.\n */\nfunction isDirectiveDefHack(obj) {\n return obj.type !== undefined && obj.template !== undefined && obj.declaredInputs !== undefined;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction normalizeDebugBindingName(name) {\n // Attribute names with `$` (eg `x-y$`) are valid per spec, but unsupported by some browsers\n name = camelCaseToDashCase(name.replace(/[$@]/g, '_'));\n return \"ng-reflect-\" + name;\n}\nvar CAMEL_CASE_REGEXP = /([A-Z])/g;\nfunction camelCaseToDashCase(input) {\n return input.replace(CAMEL_CASE_REGEXP, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n return '-' + m[1].toLowerCase();\n });\n}\nfunction normalizeDebugBindingValue(value) {\n try {\n // Limit the size of the value as otherwise the DOM just gets polluted.\n return value != null ? value.toString().slice(0, 30) : value;\n }\n catch (e) {\n return '[ERROR] Exception while trying to serialize the value';\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction devModeEqual(a, b) {\n var isListLikeIterableA = isListLikeIterable(a);\n var isListLikeIterableB = isListLikeIterable(b);\n if (isListLikeIterableA && isListLikeIterableB) {\n return areIterablesEqual(a, b, devModeEqual);\n }\n else {\n var isAObject = a && (typeof a === 'object' || typeof a === 'function');\n var isBObject = b && (typeof b === 'object' || typeof b === 'function');\n if (!isListLikeIterableA && isAObject && !isListLikeIterableB && isBObject) {\n return true;\n }\n else {\n return looseIdentical(a, b);\n }\n }\n}\n/**\n * Indicates that the result of a {@link Pipe} transformation has changed even though the\n * reference has not changed.\n *\n * Wrapped values are unwrapped automatically during the change detection, and the unwrapped value\n * is stored.\n *\n * Example:\n *\n * ```\n * if (this._latestValue === this._latestReturnedValue) {\n * return this._latestReturnedValue;\n * } else {\n * this._latestReturnedValue = this._latestValue;\n * return WrappedValue.wrap(this._latestValue); // this will force update\n * }\n * ```\n *\n * @publicApi\n */\nvar WrappedValue = /** @class */ (function () {\n function WrappedValue(value) {\n this.wrapped = value;\n }\n /** Creates a wrapped value. */\n WrappedValue.wrap = function (value) { return new WrappedValue(value); };\n /**\n * Returns the underlying value of a wrapped value.\n * Returns the given `value` when it is not wrapped.\n **/\n WrappedValue.unwrap = function (value) { return WrappedValue.isWrapped(value) ? value.wrapped : value; };\n /** Returns true if `value` is a wrapped value. */\n WrappedValue.isWrapped = function (value) { return value instanceof WrappedValue; };\n return WrappedValue;\n}());\n/**\n * Represents a basic change from a previous to a new value.\n *\n * @publicApi\n */\nvar SimpleChange = /** @class */ (function () {\n function SimpleChange(previousValue, currentValue, firstChange) {\n this.previousValue = previousValue;\n this.currentValue = currentValue;\n this.firstChange = firstChange;\n }\n /**\n * Check whether the new value is the first value assigned.\n */\n SimpleChange.prototype.isFirstChange = function () { return this.firstChange; };\n return SimpleChange;\n}());\nfunction isListLikeIterable(obj) {\n if (!isJsObject(obj))\n return false;\n return Array.isArray(obj) ||\n (!(obj instanceof Map) && // JS Map are iterables but return entries as [k, v]\n getSymbolIterator() in obj); // JS Iterable have a Symbol.iterator prop\n}\nfunction areIterablesEqual(a, b, comparator) {\n var iterator1 = a[getSymbolIterator()]();\n var iterator2 = b[getSymbolIterator()]();\n while (true) {\n var item1 = iterator1.next();\n var item2 = iterator2.next();\n if (item1.done && item2.done)\n return true;\n if (item1.done || item2.done)\n return false;\n if (!comparator(item1.value, item2.value))\n return false;\n }\n}\nfunction iterateListLike(obj, fn) {\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n fn(obj[i]);\n }\n }\n else {\n var iterator = obj[getSymbolIterator()]();\n var item = void 0;\n while (!((item = iterator.next()).done)) {\n fn(item.value);\n }\n }\n}\nfunction isJsObject(o) {\n return o !== null && (typeof o === 'function' || typeof o === 'object');\n}\n\n/** Called when directives inject each other (creating a circular dependency) */\n/** Called when there are multiple component selectors that match a given node */\nfunction throwMultipleComponentError(tNode) {\n throw new Error(\"Multiple components match node with tagname \" + tNode.tagName);\n}\n/** Throws an ExpressionChangedAfterChecked error if checkNoChanges mode is on. */\nfunction throwErrorIfNoChangesMode(creationMode, oldValue, currValue) {\n var msg = \"ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: '\" + oldValue + \"'. Current value: '\" + currValue + \"'.\";\n if (creationMode) {\n msg +=\n \" It seems like the view has been created after its parent and its children have been dirty checked.\" +\n \" Has it been created in a change detection hook ?\";\n }\n // TODO: include debug context\n throw new Error(msg);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** A special value which designates that a value has not changed. */\nvar NO_CHANGE = {};\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// TODO(misko): consider inlining\n/** Updates binding and returns the value. */\nfunction updateBinding(lView, bindingIndex, value) {\n return lView[bindingIndex] = value;\n}\n/** Gets the current binding value. */\nfunction getBinding(lView, bindingIndex) {\n ngDevMode && assertDataInRange(lView, lView[bindingIndex]);\n ngDevMode &&\n assertNotEqual(lView[bindingIndex], NO_CHANGE, 'Stored value should never be NO_CHANGE.');\n return lView[bindingIndex];\n}\n/** Updates binding if changed, then returns whether it was updated. */\nfunction bindingUpdated(lView, bindingIndex, value) {\n ngDevMode && assertNotEqual(value, NO_CHANGE, 'Incoming value should never be NO_CHANGE.');\n ngDevMode &&\n assertLessThan(bindingIndex, lView.length, \"Slot should have been initialized to NO_CHANGE\");\n if (lView[bindingIndex] === NO_CHANGE) {\n // initial pass\n lView[bindingIndex] = value;\n }\n else if (isDifferent(lView[bindingIndex], value)) {\n if (ngDevMode && getCheckNoChangesMode()) {\n if (!devModeEqual(lView[bindingIndex], value)) {\n throwErrorIfNoChangesMode(isCreationMode(lView), lView[bindingIndex], value);\n }\n }\n lView[bindingIndex] = value;\n }\n else {\n return false;\n }\n return true;\n}\n/** Updates 2 bindings if changed, then returns whether either was updated. */\nfunction bindingUpdated2(lView, bindingIndex, exp1, exp2) {\n var different = bindingUpdated(lView, bindingIndex, exp1);\n return bindingUpdated(lView, bindingIndex + 1, exp2) || different;\n}\n/** Updates 3 bindings if changed, then returns whether any was updated. */\nfunction bindingUpdated3(lView, bindingIndex, exp1, exp2, exp3) {\n var different = bindingUpdated2(lView, bindingIndex, exp1, exp2);\n return bindingUpdated(lView, bindingIndex + 2, exp3) || different;\n}\n/** Updates 4 bindings if changed, then returns whether any was updated. */\nfunction bindingUpdated4(lView, bindingIndex, exp1, exp2, exp3, exp4) {\n var different = bindingUpdated2(lView, bindingIndex, exp1, exp2);\n return bindingUpdated2(lView, bindingIndex + 2, exp3, exp4) || different;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar NG_PROJECT_AS_ATTR_NAME = 'ngProjectAs';\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// TODO: cleanup once the code is merged in angular/angular\nvar RendererStyleFlags3;\n(function (RendererStyleFlags3) {\n RendererStyleFlags3[RendererStyleFlags3[\"Important\"] = 1] = \"Important\";\n RendererStyleFlags3[RendererStyleFlags3[\"DashCase\"] = 2] = \"DashCase\";\n})(RendererStyleFlags3 || (RendererStyleFlags3 = {}));\n/** Returns whether the `renderer` is a `ProceduralRenderer3` */\nfunction isProceduralRenderer(renderer) {\n return !!(renderer.listen);\n}\nvar domRendererFactory3 = {\n createRenderer: function (hostElement, rendererType) { return document; }\n};\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Retrieves the parent element of a given node. */\nfunction getParentNative(tNode, currentView) {\n if (tNode.parent == null) {\n return getHostNative(currentView);\n }\n else {\n var parentTNode = getFirstParentNative(tNode);\n return getNativeByTNode(parentTNode, currentView);\n }\n}\n/**\n * Get the first parent of a node that isn't an IcuContainer TNode\n */\nfunction getFirstParentNative(tNode) {\n var parent = tNode.parent;\n while (parent && parent.type === 5 /* IcuContainer */) {\n parent = parent.parent;\n }\n return parent;\n}\n/**\n * Gets the host element given a view. Will return null if the current view is an embedded view,\n * which does not have a host element.\n */\nfunction getHostNative(currentView) {\n var hostTNode = currentView[HOST_NODE];\n return hostTNode && hostTNode.type !== 2 /* View */ ?\n getNativeByTNode(hostTNode, currentView[PARENT]) :\n null;\n}\nfunction getLContainer(tNode, embeddedView) {\n if (tNode.index === -1) {\n // This is a dynamically created view inside a dynamic container.\n // If the host index is -1, the view has not yet been inserted, so it has no parent.\n var containerHostIndex = embeddedView[CONTAINER_INDEX];\n return containerHostIndex > -1 ? embeddedView[PARENT][containerHostIndex] : null;\n }\n else {\n // This is a inline view node (e.g. embeddedViewStart)\n return embeddedView[PARENT][tNode.parent.index];\n }\n}\n/**\n * Retrieves render parent for a given view.\n * Might be null if a view is not yet attached to any container.\n */\nfunction getContainerRenderParent(tViewNode, view) {\n var container = getLContainer(tViewNode, view);\n return container ? container[RENDER_PARENT] : null;\n}\n/**\n * Stack used to keep track of projection nodes in walkTNodeTree.\n *\n * This is deliberately created outside of walkTNodeTree to avoid allocating\n * a new array each time the function is called. Instead the array will be\n * re-used by each invocation. This works because the function is not reentrant.\n */\nvar projectionNodeStack = [];\n/**\n * Walks a tree of TNodes, applying a transformation on the element nodes, either only on the first\n * one found, or on all of them.\n *\n * @param viewToWalk the view to walk\n * @param action identifies the action to be performed on the elements\n * @param renderer the current renderer.\n * @param renderParent Optional the render parent node to be set in all LContainers found,\n * required for action modes Insert and Destroy.\n * @param beforeNode Optional the node before which elements should be added, required for action\n * Insert.\n */\nfunction walkTNodeTree(viewToWalk, action, renderer, renderParent, beforeNode) {\n var rootTNode = viewToWalk[TVIEW].node;\n var projectionNodeIndex = -1;\n var currentView = viewToWalk;\n var tNode = rootTNode.child;\n while (tNode) {\n var nextTNode = null;\n if (tNode.type === 3 /* Element */) {\n executeNodeAction(action, renderer, renderParent, getNativeByTNode(tNode, currentView), beforeNode);\n var nodeOrContainer = currentView[tNode.index];\n if (isLContainer(nodeOrContainer)) {\n // This element has an LContainer, and its comment needs to be handled\n executeNodeAction(action, renderer, renderParent, nodeOrContainer[NATIVE], beforeNode);\n }\n }\n else if (tNode.type === 0 /* Container */) {\n var lContainer = currentView[tNode.index];\n executeNodeAction(action, renderer, renderParent, lContainer[NATIVE], beforeNode);\n if (renderParent)\n lContainer[RENDER_PARENT] = renderParent;\n if (lContainer[VIEWS].length) {\n currentView = lContainer[VIEWS][0];\n nextTNode = currentView[TVIEW].node;\n // When the walker enters a container, then the beforeNode has to become the local native\n // comment node.\n beforeNode = lContainer[NATIVE];\n }\n }\n else if (tNode.type === 1 /* Projection */) {\n var componentView = findComponentView(currentView);\n var componentHost = componentView[HOST_NODE];\n var head = componentHost.projection[tNode.projection];\n // Must store both the TNode and the view because this projection node could be nested\n // deeply inside embedded views, and we need to get back down to this particular nested view.\n projectionNodeStack[++projectionNodeIndex] = tNode;\n projectionNodeStack[++projectionNodeIndex] = currentView;\n if (head) {\n currentView = componentView[PARENT];\n nextTNode = currentView[TVIEW].data[head.index];\n }\n }\n else {\n // Otherwise, this is a View or an ElementContainer\n nextTNode = tNode.child;\n }\n if (nextTNode === null) {\n // this last node was projected, we need to get back down to its projection node\n if (tNode.next === null && (tNode.flags & 2 /* isProjected */)) {\n currentView = projectionNodeStack[projectionNodeIndex--];\n tNode = projectionNodeStack[projectionNodeIndex--];\n }\n nextTNode = tNode.next;\n /**\n * Find the next node in the TNode tree, taking into account the place where a node is\n * projected (in the shadow DOM) rather than where it comes from (in the light DOM).\n *\n * If there is no sibling node, then it goes to the next sibling of the parent node...\n * until it reaches rootNode (at which point null is returned).\n */\n while (!nextTNode) {\n // If parent is null, we're crossing the view boundary, so we should get the host TNode.\n tNode = tNode.parent || currentView[TVIEW].node;\n if (tNode === null || tNode === rootTNode)\n return null;\n // When exiting a container, the beforeNode must be restored to the previous value\n if (tNode.type === 0 /* Container */) {\n currentView = currentView[PARENT];\n beforeNode = currentView[tNode.index][NATIVE];\n }\n if (tNode.type === 2 /* View */ && currentView[NEXT]) {\n currentView = currentView[NEXT];\n nextTNode = currentView[TVIEW].node;\n }\n else {\n nextTNode = tNode.next;\n }\n }\n }\n tNode = nextTNode;\n }\n}\n/**\n * NOTE: for performance reasons, the possible actions are inlined within the function instead of\n * being passed as an argument.\n */\nfunction executeNodeAction(action, renderer, parent, node, beforeNode) {\n if (action === 0 /* Insert */) {\n isProceduralRenderer(renderer) ?\n renderer.insertBefore(parent, node, beforeNode) :\n parent.insertBefore(node, beforeNode, true);\n }\n else if (action === 1 /* Detach */) {\n isProceduralRenderer(renderer) ?\n renderer.removeChild(parent, node) :\n parent.removeChild(node);\n }\n else if (action === 2 /* Destroy */) {\n ngDevMode && ngDevMode.rendererDestroyNode++;\n renderer.destroyNode(node);\n }\n}\nfunction createTextNode(value, renderer) {\n return isProceduralRenderer(renderer) ? renderer.createText(stringify$1(value)) :\n renderer.createTextNode(stringify$1(value));\n}\nfunction addRemoveViewFromContainer(viewToWalk, insertMode, beforeNode) {\n var renderParent = getContainerRenderParent(viewToWalk[TVIEW].node, viewToWalk);\n ngDevMode && assertNodeType(viewToWalk[TVIEW].node, 2 /* View */);\n if (renderParent) {\n var renderer = viewToWalk[RENDERER];\n walkTNodeTree(viewToWalk, insertMode ? 0 /* Insert */ : 1 /* Detach */, renderer, renderParent, beforeNode);\n }\n}\n/**\n * Traverses down and up the tree of views and containers to remove listeners and\n * call onDestroy callbacks.\n *\n * Notes:\n * - Because it's used for onDestroy calls, it needs to be bottom-up.\n * - Must process containers instead of their views to avoid splicing\n * when views are destroyed and re-added.\n * - Using a while loop because it's faster than recursion\n * - Destroy only called on movement to sibling or movement to parent (laterally or up)\n *\n * @param rootView The view to destroy\n */\nfunction destroyViewTree(rootView) {\n // If the view has no children, we can clean it up and return early.\n if (rootView[TVIEW].childIndex === -1) {\n return cleanUpView(rootView);\n }\n var viewOrContainer = getLViewChild(rootView);\n while (viewOrContainer) {\n var next = null;\n if (viewOrContainer.length >= HEADER_OFFSET) {\n // If LView, traverse down to child.\n var view = viewOrContainer;\n if (view[TVIEW].childIndex > -1)\n next = getLViewChild(view);\n }\n else {\n // If container, traverse down to its first LView.\n var container = viewOrContainer;\n if (container[VIEWS].length)\n next = container[VIEWS][0];\n }\n if (next == null) {\n // Only clean up view when moving to the side or up, as destroy hooks\n // should be called in order from the bottom up.\n while (viewOrContainer && !viewOrContainer[NEXT] && viewOrContainer !== rootView) {\n cleanUpView(viewOrContainer);\n viewOrContainer = getParentState(viewOrContainer, rootView);\n }\n cleanUpView(viewOrContainer || rootView);\n next = viewOrContainer && viewOrContainer[NEXT];\n }\n viewOrContainer = next;\n }\n}\n/**\n * Inserts a view into a container.\n *\n * This adds the view to the container's array of active views in the correct\n * position. It also adds the view's elements to the DOM if the container isn't a\n * root node of another view (in that case, the view's elements will be added when\n * the container's parent view is added later).\n *\n * @param lView The view to insert\n * @param lContainer The container into which the view should be inserted\n * @param parentView The new parent of the inserted view\n * @param index The index at which to insert the view\n * @param containerIndex The index of the container node, if dynamic\n */\nfunction insertView(lView, lContainer, parentView, index, containerIndex) {\n var views = lContainer[VIEWS];\n if (index > 0) {\n // This is a new view, we need to add it to the children.\n views[index - 1][NEXT] = lView;\n }\n if (index < views.length) {\n lView[NEXT] = views[index];\n views.splice(index, 0, lView);\n }\n else {\n views.push(lView);\n lView[NEXT] = null;\n }\n // Dynamically inserted views need a reference to their parent container's host so it's\n // possible to jump from a view to its container's next when walking the node tree.\n if (containerIndex > -1) {\n lView[CONTAINER_INDEX] = containerIndex;\n lView[PARENT] = parentView;\n }\n // Notify query that a new view has been added\n if (lView[QUERIES]) {\n lView[QUERIES].insertView(index);\n }\n // Sets the attached flag\n lView[FLAGS] |= 16 /* Attached */;\n}\n/**\n * Detaches a view from a container.\n *\n * This method splices the view from the container's array of active views. It also\n * removes the view's elements from the DOM.\n *\n * @param lContainer The container from which to detach a view\n * @param removeIndex The index of the view to detach\n * @param detached Whether or not this view is already detached.\n * @returns Detached LView instance.\n */\nfunction detachView(lContainer, removeIndex, detached) {\n var views = lContainer[VIEWS];\n var viewToDetach = views[removeIndex];\n if (removeIndex > 0) {\n views[removeIndex - 1][NEXT] = viewToDetach[NEXT];\n }\n views.splice(removeIndex, 1);\n if (!detached) {\n addRemoveViewFromContainer(viewToDetach, false);\n }\n if (viewToDetach[QUERIES]) {\n viewToDetach[QUERIES].removeView();\n }\n viewToDetach[CONTAINER_INDEX] = -1;\n viewToDetach[PARENT] = null;\n // Unsets the attached flag\n viewToDetach[FLAGS] &= ~16 /* Attached */;\n return viewToDetach;\n}\n/**\n * Removes a view from a container, i.e. detaches it and then destroys the underlying LView.\n *\n * @param lContainer The container from which to remove a view\n * @param tContainer The TContainer node associated with the LContainer\n * @param removeIndex The index of the view to remove\n */\nfunction removeView(lContainer, containerHost, removeIndex) {\n var view = lContainer[VIEWS][removeIndex];\n detachView(lContainer, removeIndex, !!containerHost.detached);\n destroyLView(view);\n}\n/** Gets the child of the given LView */\nfunction getLViewChild(lView) {\n var childIndex = lView[TVIEW].childIndex;\n return childIndex === -1 ? null : lView[childIndex];\n}\n/**\n * A standalone function which destroys an LView,\n * conducting cleanup (e.g. removing listeners, calling onDestroys).\n *\n * @param view The view to be destroyed.\n */\nfunction destroyLView(view) {\n var renderer = view[RENDERER];\n if (isProceduralRenderer(renderer) && renderer.destroyNode) {\n walkTNodeTree(view, 2 /* Destroy */, renderer, null);\n }\n destroyViewTree(view);\n // Sets the destroyed flag\n view[FLAGS] |= 64 /* Destroyed */;\n}\n/**\n * Determines which LViewOrLContainer to jump to when traversing back up the\n * tree in destroyViewTree.\n *\n * Normally, the view's parent LView should be checked, but in the case of\n * embedded views, the container (which is the view node's parent, but not the\n * LView's parent) needs to be checked for a possible next property.\n *\n * @param state The LViewOrLContainer for which we need a parent state\n * @param rootView The rootView, so we don't propagate too far up the view tree\n * @returns The correct parent LViewOrLContainer\n */\nfunction getParentState(state, rootView) {\n var tNode;\n if (state.length >= HEADER_OFFSET && (tNode = state[HOST_NODE]) &&\n tNode.type === 2 /* View */) {\n // if it's an embedded view, the state needs to go up to the container, in case the\n // container has a next\n return getLContainer(tNode, state);\n }\n else {\n // otherwise, use parent view for containers or component views\n return state[PARENT] === rootView ? null : state[PARENT];\n }\n}\n/**\n * Calls onDestroys hooks for all directives and pipes in a given view and then removes all\n * listeners. Listeners are removed as the last step so events delivered in the onDestroys hooks\n * can be propagated to @Output listeners.\n *\n * @param view The LView to clean up\n */\nfunction cleanUpView(viewOrContainer) {\n if (viewOrContainer.length >= HEADER_OFFSET) {\n var view = viewOrContainer;\n executeOnDestroys(view);\n executePipeOnDestroys(view);\n removeListeners(view);\n var hostTNode = view[HOST_NODE];\n // For component views only, the local renderer is destroyed as clean up time.\n if (hostTNode && hostTNode.type === 3 /* Element */ && isProceduralRenderer(view[RENDERER])) {\n ngDevMode && ngDevMode.rendererDestroy++;\n view[RENDERER].destroy();\n }\n }\n}\n/** Removes listeners and unsubscribes from output subscriptions */\nfunction removeListeners(lView) {\n var tCleanup = lView[TVIEW].cleanup;\n if (tCleanup != null) {\n var lCleanup = lView[CLEANUP];\n for (var i = 0; i < tCleanup.length - 1; i += 2) {\n if (typeof tCleanup[i] === 'string') {\n // This is a listener with the native renderer\n var idx = tCleanup[i + 1];\n var listener = lCleanup[tCleanup[i + 2]];\n var native = readElementValue(lView[idx]);\n var useCaptureOrSubIdx = tCleanup[i + 3];\n if (typeof useCaptureOrSubIdx === 'boolean') {\n // DOM listener\n native.removeEventListener(tCleanup[i], listener, useCaptureOrSubIdx);\n }\n else {\n if (useCaptureOrSubIdx >= 0) {\n // unregister\n lCleanup[useCaptureOrSubIdx]();\n }\n else {\n // Subscription\n lCleanup[-useCaptureOrSubIdx].unsubscribe();\n }\n }\n i += 2;\n }\n else if (typeof tCleanup[i] === 'number') {\n // This is a listener with renderer2 (cleanup fn can be found by index)\n var cleanupFn = lCleanup[tCleanup[i]];\n cleanupFn();\n }\n else {\n // This is a cleanup function that is grouped with the index of its context\n var context = lCleanup[tCleanup[i + 1]];\n tCleanup[i].call(context);\n }\n }\n lView[CLEANUP] = null;\n }\n}\n/** Calls onDestroy hooks for this view */\nfunction executeOnDestroys(view) {\n var tView = view[TVIEW];\n var destroyHooks;\n if (tView != null && (destroyHooks = tView.destroyHooks) != null) {\n callHooks(view, destroyHooks);\n }\n}\n/** Calls pipe destroy hooks for this view */\nfunction executePipeOnDestroys(lView) {\n var pipeDestroyHooks = lView[TVIEW] && lView[TVIEW].pipeDestroyHooks;\n if (pipeDestroyHooks) {\n callHooks(lView, pipeDestroyHooks);\n }\n}\nfunction getRenderParent(tNode, currentView) {\n if (canInsertNativeNode(tNode, currentView)) {\n // If we are asked for a render parent of the root component we need to do low-level DOM\n // operation as LTree doesn't exist above the topmost host node. We might need to find a render\n // parent of the topmost host node if the root component injects ViewContainerRef.\n if (isRootView(currentView)) {\n return nativeParentNode(currentView[RENDERER], getNativeByTNode(tNode, currentView));\n }\n var hostTNode = currentView[HOST_NODE];\n var tNodeParent = tNode.parent;\n if (tNodeParent != null && tNodeParent.type === 4 /* ElementContainer */) {\n tNode = getHighestElementContainer(tNodeParent);\n }\n return tNode.parent == null && hostTNode.type === 2 /* View */ ?\n getContainerRenderParent(hostTNode, currentView) :\n getParentNative(tNode, currentView);\n }\n return null;\n}\nfunction canInsertNativeChildOfElement(tNode) {\n // If the parent is null, then we are inserting across views. This happens when we\n // insert a root element of the component view into the component host element and it\n // should always be eager.\n if (tNode.parent == null ||\n // We should also eagerly insert if the parent is a regular, non-component element\n // since we know that this relationship will never be broken.\n tNode.parent.type === 3 /* Element */ && !(tNode.parent.flags & 1 /* isComponent */)) {\n return true;\n }\n // Parent is a Component. Component's content nodes are not inserted immediately\n // because they will be projected, and so doing insert at this point would be wasteful.\n // Since the projection would than move it to its final destination.\n return false;\n}\n/**\n * We might delay insertion of children for a given view if it is disconnected.\n * This might happen for 2 main reasons:\n * - view is not inserted into any container (view was created but not inserted yet)\n * - view is inserted into a container but the container itself is not inserted into the DOM\n * (container might be part of projection or child of a view that is not inserted yet).\n *\n * In other words we can insert children of a given view if this view was inserted into a container\n * and\n * the container itself has its render parent determined.\n */\nfunction canInsertNativeChildOfView(viewTNode, view) {\n // Because we are inserting into a `View` the `View` may be disconnected.\n var container = getLContainer(viewTNode, view);\n if (container == null || container[RENDER_PARENT] == null) {\n // The `View` is not inserted into a `Container` or the parent `Container`\n // itself is disconnected. So we have to delay.\n return false;\n }\n // The parent `Container` is in inserted state, so we can eagerly insert into\n // this location.\n return true;\n}\n/**\n * Returns whether a native element can be inserted into the given parent.\n *\n * There are two reasons why we may not be able to insert a element immediately.\n * - Projection: When creating a child content element of a component, we have to skip the\n * insertion because the content of a component will be projected.\n * `delayed due to projection`\n * - Parent container is disconnected: This can happen when we are inserting a view into\n * parent container, which itself is disconnected. For example the parent container is part\n * of a View which has not be inserted or is mare for projection but has not been inserted\n * into destination.\n *\n\n *\n * @param tNode The tNode of the node that we want to insert.\n * @param currentView Current LView being processed.\n * @return boolean Whether the node should be inserted now (or delayed until later).\n */\nfunction canInsertNativeNode(tNode, currentView) {\n var currentNode = tNode;\n var parent = tNode.parent;\n if (tNode.parent) {\n if (tNode.parent.type === 4 /* ElementContainer */) {\n currentNode = getHighestElementContainer(tNode);\n parent = currentNode.parent;\n }\n else if (tNode.parent.type === 5 /* IcuContainer */) {\n currentNode = getFirstParentNative(currentNode);\n parent = currentNode.parent;\n }\n }\n if (parent === null)\n parent = currentView[HOST_NODE];\n if (parent && parent.type === 2 /* View */) {\n return canInsertNativeChildOfView(parent, currentView);\n }\n else {\n // Parent is a regular element or a component\n return canInsertNativeChildOfElement(currentNode);\n }\n}\n/**\n * Inserts a native node before another native node for a given parent using {@link Renderer3}.\n * This is a utility function that can be used when native nodes were determined - it abstracts an\n * actual renderer being used.\n */\nfunction nativeInsertBefore(renderer, parent, child, beforeNode) {\n if (isProceduralRenderer(renderer)) {\n renderer.insertBefore(parent, child, beforeNode);\n }\n else {\n parent.insertBefore(child, beforeNode, true);\n }\n}\n/**\n * Returns a native parent of a given native node.\n */\nfunction nativeParentNode(renderer, node) {\n return (isProceduralRenderer(renderer) ? renderer.parentNode(node) : node.parentNode);\n}\n/**\n * Returns a native sibling of a given native node.\n */\nfunction nativeNextSibling(renderer, node) {\n return isProceduralRenderer(renderer) ? renderer.nextSibling(node) : node.nextSibling;\n}\n/**\n * Appends the `child` element to the `parent`.\n *\n * The element insertion might be delayed {@link canInsertNativeNode}.\n *\n * @param childEl The child that should be appended\n * @param childTNode The TNode of the child element\n * @param currentView The current LView\n * @returns Whether or not the child was appended\n */\nfunction appendChild(childEl, childTNode, currentView) {\n if (childEl === void 0) { childEl = null; }\n if (childEl !== null && canInsertNativeNode(childTNode, currentView)) {\n var renderer = currentView[RENDERER];\n var parentEl = getParentNative(childTNode, currentView);\n var parentTNode = childTNode.parent || currentView[HOST_NODE];\n if (parentTNode.type === 2 /* View */) {\n var lContainer = getLContainer(parentTNode, currentView);\n var views = lContainer[VIEWS];\n var index = views.indexOf(currentView);\n nativeInsertBefore(renderer, lContainer[RENDER_PARENT], childEl, getBeforeNodeForView(index, views, lContainer[NATIVE]));\n }\n else if (parentTNode.type === 4 /* ElementContainer */) {\n var renderParent = getRenderParent(childTNode, currentView);\n nativeInsertBefore(renderer, renderParent, childEl, parentEl);\n }\n else if (parentTNode.type === 5 /* IcuContainer */) {\n var icuAnchorNode = getNativeByTNode(childTNode.parent, currentView);\n nativeInsertBefore(renderer, parentEl, childEl, icuAnchorNode);\n }\n else {\n isProceduralRenderer(renderer) ? renderer.appendChild(parentEl, childEl) :\n parentEl.appendChild(childEl);\n }\n return true;\n }\n return false;\n}\n/**\n * Gets the top-level ng-container if ng-containers are nested.\n *\n * @param ngContainer The TNode of the starting ng-container\n * @returns tNode The TNode of the highest level ng-container\n */\nfunction getHighestElementContainer(ngContainer) {\n while (ngContainer.parent != null && ngContainer.parent.type === 4 /* ElementContainer */) {\n ngContainer = ngContainer.parent;\n }\n return ngContainer;\n}\nfunction getBeforeNodeForView(index, views, containerNative) {\n if (index + 1 < views.length) {\n var view = views[index + 1];\n var viewTNode = view[HOST_NODE];\n return viewTNode.child ? getNativeByTNode(viewTNode.child, view) : containerNative;\n }\n else {\n return containerNative;\n }\n}\n/**\n * Removes the `child` element from the DOM if not in view and not projected.\n *\n * @param childTNode The TNode of the child to remove\n * @param childEl The child that should be removed\n * @param currentView The current LView\n * @returns Whether or not the child was removed\n */\nfunction removeChild(childTNode, childEl, currentView) {\n // We only remove the element if not in View or not projected.\n if (childEl !== null && canInsertNativeNode(childTNode, currentView)) {\n var parentNative = getParentNative(childTNode, currentView);\n var renderer = currentView[RENDERER];\n isProceduralRenderer(renderer) ? renderer.removeChild(parentNative, childEl) :\n parentNative.removeChild(childEl);\n return true;\n }\n return false;\n}\n/**\n * Appends a projected node to the DOM, or in the case of a projected container,\n * appends the nodes from all of the container's active views to the DOM.\n *\n * @param projectedTNode The TNode to be projected\n * @param tProjectionNode The projection (ng-content) TNode\n * @param currentView Current LView\n * @param projectionView Projection view (view above current)\n */\nfunction appendProjectedNode(projectedTNode, tProjectionNode, currentView, projectionView) {\n var native = getNativeByTNode(projectedTNode, projectionView);\n appendChild(native, tProjectionNode, currentView);\n // the projected contents are processed while in the shadow view (which is the currentView)\n // therefore we need to extract the view where the host element lives since it's the\n // logical container of the content projected views\n attachPatchData(native, projectionView);\n var renderParent = getRenderParent(tProjectionNode, currentView);\n var nodeOrContainer = projectionView[projectedTNode.index];\n if (projectedTNode.type === 0 /* Container */) {\n // The node we are adding is a container and we are adding it to an element which\n // is not a component (no more re-projection).\n // Alternatively a container is projected at the root of a component's template\n // and can't be re-projected (as not content of any component).\n // Assign the final projection location in those cases.\n nodeOrContainer[RENDER_PARENT] = renderParent;\n var views = nodeOrContainer[VIEWS];\n for (var i = 0; i < views.length; i++) {\n addRemoveViewFromContainer(views[i], true, nodeOrContainer[NATIVE]);\n }\n }\n else {\n if (projectedTNode.type === 4 /* ElementContainer */) {\n var ngContainerChildTNode = projectedTNode.child;\n while (ngContainerChildTNode) {\n appendProjectedNode(ngContainerChildTNode, tProjectionNode, currentView, projectionView);\n ngContainerChildTNode = ngContainerChildTNode.next;\n }\n }\n if (isLContainer(nodeOrContainer)) {\n nodeOrContainer[RENDER_PARENT] = renderParent;\n appendChild(nodeOrContainer[NATIVE], tProjectionNode, currentView);\n }\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar NG_TEMPLATE_SELECTOR = 'ng-template';\nfunction isCssClassMatching(nodeClassAttrVal, cssClassToMatch) {\n var nodeClassesLen = nodeClassAttrVal.length;\n var matchIndex = nodeClassAttrVal.indexOf(cssClassToMatch);\n var matchEndIdx = matchIndex + cssClassToMatch.length;\n if (matchIndex === -1 // no match\n || (matchIndex > 0 && nodeClassAttrVal[matchIndex - 1] !== ' ') // no space before\n ||\n (matchEndIdx < nodeClassesLen && nodeClassAttrVal[matchEndIdx] !== ' ')) // no space after\n {\n return false;\n }\n return true;\n}\n/**\n * Function that checks whether a given tNode matches tag-based selector and has a valid type.\n *\n * Matching can be perfomed in 2 modes: projection mode (when we project nodes) and regular\n * directive matching mode. In \"projection\" mode, we do not need to check types, so if tag name\n * matches selector, we declare a match. In \"directive matching\" mode, we also check whether tNode\n * is of expected type:\n * - whether tNode has either Element or ElementContainer type\n * - or if we want to match \"ng-template\" tag, we check for Container type\n */\nfunction hasTagAndTypeMatch(tNode, currentSelector, isProjectionMode) {\n return currentSelector === tNode.tagName &&\n (isProjectionMode ||\n (tNode.type === 3 /* Element */ || tNode.type === 4 /* ElementContainer */) ||\n (tNode.type === 0 /* Container */ && currentSelector === NG_TEMPLATE_SELECTOR));\n}\n/**\n * A utility function to match an Ivy node static data against a simple CSS selector\n *\n * @param node static data to match\n * @param selector\n * @returns true if node matches the selector.\n */\nfunction isNodeMatchingSelector(tNode, selector, isProjectionMode) {\n ngDevMode && assertDefined(selector[0], 'Selector should have a tag name');\n var mode = 4 /* ELEMENT */;\n var nodeAttrs = tNode.attrs;\n var selectOnlyMarkerIdx = nodeAttrs ? nodeAttrs.indexOf(3 /* SelectOnly */) : -1;\n // When processing \":not\" selectors, we skip to the next \":not\" if the\n // current one doesn't match\n var skipToNextSelector = false;\n for (var i = 0; i < selector.length; i++) {\n var current = selector[i];\n if (typeof current === 'number') {\n // If we finish processing a :not selector and it hasn't failed, return false\n if (!skipToNextSelector && !isPositive(mode) && !isPositive(current)) {\n return false;\n }\n // If we are skipping to the next :not() and this mode flag is positive,\n // it's a part of the current :not() selector, and we should keep skipping\n if (skipToNextSelector && isPositive(current))\n continue;\n skipToNextSelector = false;\n mode = current | (mode & 1 /* NOT */);\n continue;\n }\n if (skipToNextSelector)\n continue;\n if (mode & 4 /* ELEMENT */) {\n mode = 2 /* ATTRIBUTE */ | mode & 1 /* NOT */;\n if (current !== '' && !hasTagAndTypeMatch(tNode, current, isProjectionMode) ||\n current === '' && selector.length === 1) {\n if (isPositive(mode))\n return false;\n skipToNextSelector = true;\n }\n }\n else {\n var attrName = mode & 8 /* CLASS */ ? 'class' : current;\n var attrIndexInNode = findAttrIndexInNode(attrName, nodeAttrs);\n if (attrIndexInNode === -1) {\n if (isPositive(mode))\n return false;\n skipToNextSelector = true;\n continue;\n }\n var selectorAttrValue = mode & 8 /* CLASS */ ? current : selector[++i];\n if (selectorAttrValue !== '') {\n var nodeAttrValue = void 0;\n var maybeAttrName = nodeAttrs[attrIndexInNode];\n if (selectOnlyMarkerIdx > -1 && attrIndexInNode > selectOnlyMarkerIdx) {\n nodeAttrValue = '';\n }\n else {\n ngDevMode && assertNotEqual(maybeAttrName, 0 /* NamespaceURI */, 'We do not match directives on namespaced attributes');\n nodeAttrValue = nodeAttrs[attrIndexInNode + 1];\n }\n if (mode & 8 /* CLASS */ &&\n !isCssClassMatching(nodeAttrValue, selectorAttrValue) ||\n mode & 2 /* ATTRIBUTE */ && selectorAttrValue !== nodeAttrValue) {\n if (isPositive(mode))\n return false;\n skipToNextSelector = true;\n }\n }\n }\n }\n return isPositive(mode) || skipToNextSelector;\n}\nfunction isPositive(mode) {\n return (mode & 1 /* NOT */) === 0;\n}\n/**\n * Examines an attributes definition array from a node to find the index of the\n * attribute with the specified name.\n *\n * NOTE: Will not find namespaced attributes.\n *\n * @param name the name of the attribute to find\n * @param attrs the attribute array to examine\n */\nfunction findAttrIndexInNode(name, attrs) {\n if (attrs === null)\n return -1;\n var selectOnlyMode = false;\n var i = 0;\n while (i < attrs.length) {\n var maybeAttrName = attrs[i];\n if (maybeAttrName === name) {\n return i;\n }\n else if (maybeAttrName === 0 /* NamespaceURI */) {\n // NOTE(benlesh): will not find namespaced attributes. This is by design.\n i += 4;\n }\n else {\n if (maybeAttrName === 3 /* SelectOnly */) {\n selectOnlyMode = true;\n }\n i += selectOnlyMode ? 1 : 2;\n }\n }\n return -1;\n}\nfunction isNodeMatchingSelectorList(tNode, selector, isProjectionMode) {\n if (isProjectionMode === void 0) { isProjectionMode = false; }\n for (var i = 0; i < selector.length; i++) {\n if (isNodeMatchingSelector(tNode, selector[i], isProjectionMode)) {\n return true;\n }\n }\n return false;\n}\nfunction getProjectAsAttrValue(tNode) {\n var nodeAttrs = tNode.attrs;\n if (nodeAttrs != null) {\n var ngProjectAsAttrIdx = nodeAttrs.indexOf(NG_PROJECT_AS_ATTR_NAME);\n // only check for ngProjectAs in attribute names, don't accidentally match attribute's value\n // (attribute names are stored at even indexes)\n if ((ngProjectAsAttrIdx & 1) === 0) {\n return nodeAttrs[ngProjectAsAttrIdx + 1];\n }\n }\n return null;\n}\n/**\n * Checks a given node against matching selectors and returns\n * selector index (or 0 if none matched).\n *\n * This function takes into account the ngProjectAs attribute: if present its value will be compared\n * to the raw (un-parsed) CSS selector instead of using standard selector matching logic.\n */\nfunction matchingSelectorIndex(tNode, selectors, textSelectors) {\n var ngProjectAsAttrVal = getProjectAsAttrValue(tNode);\n for (var i = 0; i < selectors.length; i++) {\n // if a node has the ngProjectAs attribute match it against unparsed selector\n // match a node against a parsed selector only if ngProjectAs attribute is not present\n if (ngProjectAsAttrVal === textSelectors[i] ||\n ngProjectAsAttrVal === null &&\n isNodeMatchingSelectorList(tNode, selectors[i], /* isProjectionMode */ true)) {\n return i + 1; // first matching selector \"captures\" a given node\n }\n }\n return 0;\n}\n\n/**\n * Combines the binding value and a factory for an animation player.\n *\n * Used to bind a player to an element template binding (currently only\n * `[style]`, `[style.prop]`, `[class]` and `[class.name]` bindings\n * supported). The provided `factoryFn` function will be run once all\n * the associated bindings have been evaluated on the element and is\n * designed to return a player which will then be placed on the element.\n *\n * @param factoryFn The function that is used to create a player\n * once all the rendering-related (styling values) have been\n * processed for the element binding.\n * @param value The raw value that will be exposed to the binding\n * so that the binding can update its internal values when\n * any changes are evaluated.\n */\nfunction bindPlayerFactory(factoryFn, value) {\n return new BoundPlayerFactory(factoryFn, value);\n}\nvar BoundPlayerFactory = /** @class */ (function () {\n function BoundPlayerFactory(fn, value) {\n this.fn = fn;\n this.value = value;\n }\n return BoundPlayerFactory;\n}());\n\nvar CorePlayerHandler = /** @class */ (function () {\n function CorePlayerHandler() {\n this._players = [];\n }\n CorePlayerHandler.prototype.flushPlayers = function () {\n for (var i = 0; i < this._players.length; i++) {\n var player = this._players[i];\n if (!player.parent && player.state === 0 /* Pending */) {\n player.play();\n }\n }\n this._players.length = 0;\n };\n CorePlayerHandler.prototype.queuePlayer = function (player) { this._players.push(player); };\n return CorePlayerHandler;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar ANIMATION_PROP_PREFIX = '@';\nfunction createEmptyStylingContext(element, sanitizer, initialStyles, initialClasses) {\n return [\n 0,\n [null, -1, false, sanitizer || null],\n initialStyles || [null],\n initialClasses || [null],\n [0, 0],\n element || null,\n null,\n null,\n null,\n ];\n}\n/**\n * Used clone a copy of a pre-computed template of a styling context.\n *\n * A pre-computed template is designed to be computed once for a given element\n * (instructions.ts has logic for caching this).\n */\nfunction allocStylingContext(element, templateStyleContext) {\n // each instance gets a copy\n var context = templateStyleContext.slice();\n context[5 /* ElementPosition */] = element;\n // this will prevent any other directives from extending the context\n context[0 /* MasterFlagPosition */] |= 32 /* BindingAllocationLocked */;\n return context;\n}\n/**\n * Retrieve the `StylingContext` at a given index.\n *\n * This method lazily creates the `StylingContext`. This is because in most cases\n * we have styling without any bindings. Creating `StylingContext` eagerly would mean that\n * every style declaration such as `
` would result `StyleContext`\n * which would create unnecessary memory pressure.\n *\n * @param index Index of the style allocation. See: `elementStyling`.\n * @param viewData The view to search for the styling context\n */\nfunction getStylingContext(index, viewData) {\n var storageIndex = index;\n var slotValue = viewData[storageIndex];\n var wrapper = viewData;\n while (Array.isArray(slotValue)) {\n wrapper = slotValue;\n slotValue = slotValue[HOST];\n }\n if (isStylingContext(wrapper)) {\n return wrapper;\n }\n else {\n // This is an LView or an LContainer\n var stylingTemplate = getTNode(index - HEADER_OFFSET, viewData).stylingTemplate;\n if (wrapper !== viewData) {\n storageIndex = HOST;\n }\n return wrapper[storageIndex] = stylingTemplate ?\n allocStylingContext(slotValue, stylingTemplate) :\n createEmptyStylingContext(slotValue);\n }\n}\nfunction isStylingContext(value) {\n // Not an LView or an LContainer\n return Array.isArray(value) && typeof value[0 /* MasterFlagPosition */] === 'number' &&\n Array.isArray(value[2 /* InitialStyleValuesPosition */]);\n}\nfunction isAnimationProp(name) {\n return name[0] === ANIMATION_PROP_PREFIX;\n}\nfunction addPlayerInternal(playerContext, rootContext, element, player, playerContextIndex, ref) {\n ref = ref || element;\n if (playerContextIndex) {\n playerContext[playerContextIndex] = player;\n }\n else {\n playerContext.push(player);\n }\n if (player) {\n player.addEventListener(200 /* Destroyed */, function () {\n var index = playerContext.indexOf(player);\n var nonFactoryPlayerIndex = playerContext[0 /* NonBuilderPlayersStart */];\n // if the player is being removed from the factory side of the context\n // (which is where the [style] and [class] bindings do their thing) then\n // that side of the array cannot be resized since the respective bindings\n // have pointer index values that point to the associated factory instance\n if (index) {\n if (index < nonFactoryPlayerIndex) {\n playerContext[index] = null;\n }\n else {\n playerContext.splice(index, 1);\n }\n }\n player.destroy();\n });\n var playerHandler = rootContext.playerHandler || (rootContext.playerHandler = new CorePlayerHandler());\n playerHandler.queuePlayer(player, ref);\n return true;\n }\n return false;\n}\nfunction getPlayersInternal(playerContext) {\n var players = [];\n var nonFactoryPlayersStart = playerContext[0 /* NonBuilderPlayersStart */];\n // add all factory-based players (which are apart of [style] and [class] bindings)\n for (var i = 1 /* PlayerBuildersStartPosition */ + 1 /* PlayerOffsetPosition */; i < nonFactoryPlayersStart; i += 2 /* PlayerAndPlayerBuildersTupleSize */) {\n var player = playerContext[i];\n if (player) {\n players.push(player);\n }\n }\n // add all custom players (not apart of [style] and [class] bindings)\n for (var i = nonFactoryPlayersStart; i < playerContext.length; i++) {\n players.push(playerContext[i]);\n }\n return players;\n}\nfunction getOrCreatePlayerContext(target, context) {\n context = context || getLContext(target);\n if (!context) {\n ngDevMode && throwInvalidRefError();\n return null;\n }\n var lView = context.lView, nodeIndex = context.nodeIndex;\n var stylingContext = getStylingContext(nodeIndex, lView);\n return getPlayerContext(stylingContext) || allocPlayerContext(stylingContext);\n}\nfunction getPlayerContext(stylingContext) {\n return stylingContext[8 /* PlayerContext */];\n}\nfunction allocPlayerContext(data) {\n return data[8 /* PlayerContext */] =\n [5 /* SinglePlayerBuildersStartPosition */, null, null, null, null];\n}\nfunction throwInvalidRefError() {\n throw new Error('Only elements that exist in an Angular application can be used for animations');\n}\nfunction hasStyling(attrs) {\n for (var i = 0; i < attrs.length; i++) {\n var attr = attrs[i];\n if (attr == 1 /* Classes */ || attr == 2 /* Styles */)\n return true;\n }\n return false;\n}\nfunction hasClassInput(tNode) {\n return tNode.flags & 8 /* hasClassInput */ ? true : false;\n}\n\n/**\n * This file includes the code to power all styling-binding operations in Angular.\n *\n * These include:\n * [style]=\"myStyleObj\"\n * [class]=\"myClassObj\"\n * [style.prop]=\"myPropValue\"\n * [class.name]=\"myClassValue\"\n *\n * There are many different ways in which these functions below are called. Please see\n * `interfaces/styles.ts` to get a better idea of how the styling algorithm works.\n */\n/**\n * Creates a new StylingContext an fills it with the provided static styling attribute values.\n */\nfunction initializeStaticContext(attrs) {\n var context = createEmptyStylingContext();\n var initialClasses = context[3 /* InitialClassValuesPosition */] =\n [null];\n var initialStyles = context[2 /* InitialStyleValuesPosition */] =\n [null];\n // The attributes array has marker values (numbers) indicating what the subsequent\n // values represent. When we encounter a number, we set the mode to that type of attribute.\n var mode = -1;\n for (var i = 0; i < attrs.length; i++) {\n var attr = attrs[i];\n if (typeof attr == 'number') {\n mode = attr;\n }\n else if (mode === 2 /* Styles */) {\n initialStyles.push(attr, attrs[++i]);\n }\n else if (mode === 1 /* Classes */) {\n initialClasses.push(attr, true);\n }\n else if (mode === 3 /* SelectOnly */) {\n break;\n }\n }\n return context;\n}\n/**\n * Designed to update an existing styling context with new static styling\n * data (classes and styles).\n *\n * @param context the existing styling context\n * @param attrs an array of new static styling attributes that will be\n * assigned to the context\n * @param directive the directive instance with which static data is associated with.\n */\nfunction patchContextWithStaticAttrs(context, attrs, directive) {\n // If the styling context has already been patched with the given directive's bindings,\n // then there is no point in doing it again. The reason why this may happen (the directive\n // styling being patched twice) is because the `stylingBinding` function is called each time\n // an element is created (both within a template function and within directive host bindings).\n var directives = context[1 /* DirectiveRegistryPosition */];\n if (getDirectiveRegistryValuesIndexOf(directives, directive) == -1) {\n // this is a new directive which we have not seen yet.\n directives.push(directive, -1, false, null);\n var initialClasses = null;\n var initialStyles = null;\n var mode = -1;\n for (var i = 0; i < attrs.length; i++) {\n var attr = attrs[i];\n if (typeof attr == 'number') {\n mode = attr;\n }\n else if (mode == 1 /* Classes */) {\n initialClasses = initialClasses || context[3 /* InitialClassValuesPosition */];\n patchInitialStylingValue(initialClasses, attr, true);\n }\n else if (mode == 2 /* Styles */) {\n initialStyles = initialStyles || context[2 /* InitialStyleValuesPosition */];\n patchInitialStylingValue(initialStyles, attr, attrs[++i]);\n }\n }\n }\n}\n/**\n * Designed to add a style or class value into the existing set of initial styles.\n *\n * The function will search and figure out if a style/class value is already present\n * within the provided initial styling array. If and when a style/class value is not\n * present (or if it's value is falsy) then it will be inserted/updated in the list\n * of initial styling values.\n */\nfunction patchInitialStylingValue(initialStyling, prop, value) {\n // Even values are keys; Odd numbers are values; Search keys only\n for (var i = 1 /* KeyValueStartPosition */; i < initialStyling.length;) {\n var key = initialStyling[i];\n if (key === prop) {\n var existingValue = initialStyling[i + 1 /* ValueOffset */];\n // If there is no previous style value (when `null`) or no previous class\n // applied (when `false`) then we update the the newly given value.\n if (existingValue == null || existingValue == false) {\n initialStyling[i + 1 /* ValueOffset */] = value;\n }\n return;\n }\n i = i + 2 /* Size */;\n }\n // We did not find existing key, add a new one.\n initialStyling.push(prop, value);\n}\n/**\n * Runs through the initial styling data present in the context and renders\n * them via the renderer on the element.\n */\nfunction renderInitialStylesAndClasses(element, context, renderer) {\n var initialClasses = context[3 /* InitialClassValuesPosition */];\n renderInitialStylingValues(element, renderer, initialClasses, true);\n var initialStyles = context[2 /* InitialStyleValuesPosition */];\n renderInitialStylingValues(element, renderer, initialStyles, false);\n}\n/**\n * This is a helper function designed to render each entry present within the\n * provided list of initialStylingValues.\n */\nfunction renderInitialStylingValues(element, renderer, initialStylingValues, isEntryClassBased) {\n for (var i = 1 /* KeyValueStartPosition */; i < initialStylingValues.length; i += 2 /* Size */) {\n var value = initialStylingValues[i + 1 /* ValueOffset */];\n if (value) {\n if (isEntryClassBased) {\n setClass(element, initialStylingValues[i + 0 /* PropOffset */], true, renderer, null);\n }\n else {\n setStyle(element, initialStylingValues[i + 0 /* PropOffset */], value, renderer, null);\n }\n }\n }\n}\n/**\n * Adds in new binding values to a styling context.\n *\n * If a directive value is provided then all provided class/style binding names will\n * reference the provided directive.\n *\n * @param context the existing styling context\n * @param directiveRef the directive that the new bindings will reference\n * @param classBindingNames an array of class binding names that will be added to the context\n * @param styleBindingNames an array of style binding names that will be added to the context\n * @param styleSanitizer an optional sanitizer that handle all sanitization on for each of\n * the bindings added to the context. Note that if a directive is provided then the sanitizer\n * instance will only be active if and when the directive updates the bindings that it owns.\n */\nfunction updateContextWithBindings(context, directiveRef, classBindingNames, styleBindingNames, styleSanitizer, onlyProcessSingleClasses) {\n if (context[0 /* MasterFlagPosition */] & 32 /* BindingAllocationLocked */)\n return;\n // this means the context has already been patched with the directive's bindings\n var directiveIndex = findOrPatchDirectiveIntoRegistry(context, directiveRef, styleSanitizer);\n if (directiveIndex === -1) {\n // this means the directive has already been patched in ... No point in doing anything\n return;\n }\n // there are alot of variables being used below to track where in the context the new\n // binding values will be placed. Because the context consists of multiple types of\n // entries (single classes/styles and multi classes/styles) alot of the index positions\n // need to be computed ahead of time and the context needs to be extended before the values\n // are inserted in.\n var singlePropOffsetValues = context[4 /* SinglePropOffsetPositions */];\n var totalCurrentClassBindings = singlePropOffsetValues[1 /* ClassesCountPosition */];\n var totalCurrentStyleBindings = singlePropOffsetValues[0 /* StylesCountPosition */];\n var classesOffset = totalCurrentClassBindings * 4 /* Size */;\n var stylesOffset = totalCurrentStyleBindings * 4 /* Size */;\n var singleStylesStartIndex = 9 /* SingleStylesStartPosition */;\n var singleClassesStartIndex = singleStylesStartIndex + stylesOffset;\n var multiStylesStartIndex = singleClassesStartIndex + classesOffset;\n var multiClassesStartIndex = multiStylesStartIndex + stylesOffset;\n // because we're inserting more bindings into the context, this means that the\n // binding values need to be referenced the singlePropOffsetValues array so that\n // the template/directive can easily find them inside of the `elementStyleProp`\n // and the `elementClassProp` functions without iterating through the entire context.\n // The first step to setting up these reference points is to mark how many bindings\n // are being added. Even if these bindings already exist in the context, the directive\n // or template code will still call them unknowingly. Therefore the total values need\n // to be registered so that we know how many bindings are assigned to each directive.\n var currentSinglePropsLength = singlePropOffsetValues.length;\n singlePropOffsetValues.push(styleBindingNames ? styleBindingNames.length : 0, classBindingNames ? classBindingNames.length : 0);\n // the code below will check to see if a new style binding already exists in the context\n // if so then there is no point in inserting it into the context again. Whether or not it\n // exists the styling offset code will now know exactly where it is\n var insertionOffset = 0;\n var filteredStyleBindingNames = [];\n if (styleBindingNames && styleBindingNames.length) {\n for (var i_1 = 0; i_1 < styleBindingNames.length; i_1++) {\n var name_1 = styleBindingNames[i_1];\n var singlePropIndex = getMatchingBindingIndex(context, name_1, singleStylesStartIndex, singleClassesStartIndex);\n if (singlePropIndex == -1) {\n singlePropIndex = singleClassesStartIndex + insertionOffset;\n insertionOffset += 4 /* Size */;\n filteredStyleBindingNames.push(name_1);\n }\n singlePropOffsetValues.push(singlePropIndex);\n }\n }\n // just like with the style binding loop above, the new class bindings get the same treatment...\n var filteredClassBindingNames = [];\n if (classBindingNames && classBindingNames.length) {\n for (var i_2 = 0; i_2 < classBindingNames.length; i_2++) {\n var name_2 = classBindingNames[i_2];\n var singlePropIndex = getMatchingBindingIndex(context, name_2, singleClassesStartIndex, multiStylesStartIndex);\n if (singlePropIndex == -1) {\n singlePropIndex = multiStylesStartIndex + insertionOffset;\n insertionOffset += 4 /* Size */;\n filteredClassBindingNames.push(name_2);\n }\n else {\n singlePropIndex += filteredStyleBindingNames.length * 4 /* Size */;\n }\n singlePropOffsetValues.push(singlePropIndex);\n }\n }\n // because new styles are being inserted, this means the existing collection of style offset\n // index values are incorrect (they point to the wrong values). The code below will run through\n // the entire offset array and update the existing set of index values to point to their new\n // locations while taking the new binding values into consideration.\n var i = 2 /* ValueStartPosition */;\n if (filteredStyleBindingNames.length) {\n while (i < currentSinglePropsLength) {\n var totalStyles = singlePropOffsetValues[i + 0 /* StylesCountPosition */];\n var totalClasses = singlePropOffsetValues[i + 1 /* ClassesCountPosition */];\n if (totalClasses) {\n var start = i + 2 /* ValueStartPosition */ + totalStyles;\n for (var j = start; j < start + totalClasses; j++) {\n singlePropOffsetValues[j] += filteredStyleBindingNames.length * 4 /* Size */;\n }\n }\n var total = totalStyles + totalClasses;\n i += 2 /* ValueStartPosition */ + total;\n }\n }\n var totalNewEntries = filteredClassBindingNames.length + filteredStyleBindingNames.length;\n // in the event that there are new style values being inserted, all existing class and style\n // bindings need to have their pointer values offsetted with the new amount of space that is\n // used for the new style/class bindings.\n for (var i_3 = singleStylesStartIndex; i_3 < context.length; i_3 += 4 /* Size */) {\n var isMultiBased = i_3 >= multiStylesStartIndex;\n var isClassBased = i_3 >= (isMultiBased ? multiClassesStartIndex : singleClassesStartIndex);\n var flag = getPointers(context, i_3);\n var staticIndex = getInitialIndex(flag);\n var singleOrMultiIndex = getMultiOrSingleIndex(flag);\n if (isMultiBased) {\n singleOrMultiIndex +=\n isClassBased ? (filteredStyleBindingNames.length * 4 /* Size */) : 0;\n }\n else {\n singleOrMultiIndex += (totalNewEntries * 4 /* Size */) +\n ((isClassBased ? filteredStyleBindingNames.length : 0) * 4 /* Size */);\n }\n setFlag(context, i_3, pointers(flag, staticIndex, singleOrMultiIndex));\n }\n // this is where we make space in the context for the new style bindings\n for (var i_4 = 0; i_4 < filteredStyleBindingNames.length * 4 /* Size */; i_4++) {\n context.splice(multiClassesStartIndex, 0, null);\n context.splice(singleClassesStartIndex, 0, null);\n singleClassesStartIndex++;\n multiStylesStartIndex++;\n multiClassesStartIndex += 2; // both single + multi slots were inserted\n }\n // this is where we make space in the context for the new class bindings\n for (var i_5 = 0; i_5 < filteredClassBindingNames.length * 4 /* Size */; i_5++) {\n context.splice(multiStylesStartIndex, 0, null);\n context.push(null);\n multiStylesStartIndex++;\n multiClassesStartIndex++;\n }\n var initialClasses = context[3 /* InitialClassValuesPosition */];\n var initialStyles = context[2 /* InitialStyleValuesPosition */];\n // the code below will insert each new entry into the context and assign the appropriate\n // flags and index values to them. It's important this runs at the end of this function\n // because the context, property offset and index values have all been computed just before.\n for (var i_6 = 0; i_6 < totalNewEntries; i_6++) {\n var entryIsClassBased = i_6 >= filteredStyleBindingNames.length;\n var adjustedIndex = entryIsClassBased ? (i_6 - filteredStyleBindingNames.length) : i_6;\n var propName = entryIsClassBased ? filteredClassBindingNames[adjustedIndex] :\n filteredStyleBindingNames[adjustedIndex];\n var multiIndex = void 0, singleIndex = void 0;\n if (entryIsClassBased) {\n multiIndex = multiClassesStartIndex +\n ((totalCurrentClassBindings + adjustedIndex) * 4 /* Size */);\n singleIndex = singleClassesStartIndex +\n ((totalCurrentClassBindings + adjustedIndex) * 4 /* Size */);\n }\n else {\n multiIndex =\n multiStylesStartIndex + ((totalCurrentStyleBindings + adjustedIndex) * 4 /* Size */);\n singleIndex = singleStylesStartIndex +\n ((totalCurrentStyleBindings + adjustedIndex) * 4 /* Size */);\n }\n // if a property is not found in the initial style values list then it\n // is ALWAYS added incase a follow-up directive introduces the same initial\n // style/class value later on.\n var initialValuesToLookup = entryIsClassBased ? initialClasses : initialStyles;\n var indexForInitial = getInitialStylingValuesIndexOf(initialValuesToLookup, propName);\n if (indexForInitial === -1) {\n indexForInitial = initialValuesToLookup.length + 1 /* ValueOffset */;\n initialValuesToLookup.push(propName, entryIsClassBased ? false : null);\n }\n else {\n indexForInitial += 1 /* ValueOffset */;\n }\n var initialFlag = prepareInitialFlag(context, propName, entryIsClassBased, styleSanitizer || null);\n setFlag(context, singleIndex, pointers(initialFlag, indexForInitial, multiIndex));\n setProp(context, singleIndex, propName);\n setValue(context, singleIndex, null);\n setPlayerBuilderIndex(context, singleIndex, 0, directiveIndex);\n setFlag(context, multiIndex, pointers(initialFlag, indexForInitial, singleIndex));\n setProp(context, multiIndex, propName);\n setValue(context, multiIndex, null);\n setPlayerBuilderIndex(context, multiIndex, 0, directiveIndex);\n }\n // the total classes/style values are updated so the next time the context is patched\n // additional style/class bindings from another directive then it knows exactly where\n // to insert them in the context\n singlePropOffsetValues[1 /* ClassesCountPosition */] =\n totalCurrentClassBindings + filteredClassBindingNames.length;\n singlePropOffsetValues[0 /* StylesCountPosition */] =\n totalCurrentStyleBindings + filteredStyleBindingNames.length;\n // there is no initial value flag for the master index since it doesn't\n // reference an initial style value\n var masterFlag = pointers(0, 0, multiStylesStartIndex) |\n (onlyProcessSingleClasses ? 16 /* OnlyProcessSingleClasses */ : 0);\n setFlag(context, 0 /* MasterFlagPosition */, masterFlag);\n}\n/**\n * Searches through the existing registry of directives\n */\nfunction findOrPatchDirectiveIntoRegistry(context, directiveRef, styleSanitizer) {\n var directiveRefs = context[1 /* DirectiveRegistryPosition */];\n var nextOffsetInsertionIndex = context[4 /* SinglePropOffsetPositions */].length;\n var directiveIndex;\n var detectedIndex = getDirectiveRegistryValuesIndexOf(directiveRefs, directiveRef);\n if (detectedIndex === -1) {\n directiveIndex = directiveRefs.length / 4 /* Size */;\n directiveRefs.push(directiveRef, nextOffsetInsertionIndex, false, styleSanitizer || null);\n }\n else {\n var singlePropStartPosition = detectedIndex + 1 /* SinglePropValuesIndexOffset */;\n if (directiveRefs[singlePropStartPosition] >= 0) {\n // the directive has already been patched into the context\n return -1;\n }\n directiveIndex = detectedIndex / 4 /* Size */;\n // because the directive already existed this means that it was set during elementHostAttrs or\n // elementStart which means that the binding values were not here. Therefore, the values below\n // need to be applied so that single class and style properties can be assigned later.\n var singlePropPositionIndex = detectedIndex + 1 /* SinglePropValuesIndexOffset */;\n directiveRefs[singlePropPositionIndex] = nextOffsetInsertionIndex;\n // the sanitizer is also apart of the binding process and will be used when bindings are\n // applied.\n var styleSanitizerIndex = detectedIndex + 3 /* StyleSanitizerOffset */;\n directiveRefs[styleSanitizerIndex] = styleSanitizer || null;\n }\n return directiveIndex;\n}\nfunction getMatchingBindingIndex(context, bindingName, start, end) {\n for (var j = start; j < end; j += 4 /* Size */) {\n if (getProp(context, j) === bindingName)\n return j;\n }\n return -1;\n}\n/**\n * Sets and resolves all `multi` styling on an `StylingContext` so that they can be\n * applied to the element once `renderStyling` is called.\n *\n * All missing styles/class (any values that are not provided in the new `styles`\n * or `classes` params) will resolve to `null` within their respective positions\n * in the context.\n *\n * @param context The styling context that will be updated with the\n * newly provided style values.\n * @param classesInput The key/value map of CSS class names that will be used for the update.\n * @param stylesInput The key/value map of CSS styles that will be used for the update.\n */\nfunction updateStylingMap(context, classesInput, stylesInput, directiveRef) {\n stylesInput = stylesInput || null;\n var directiveIndex = getDirectiveIndexFromRegistry(context, directiveRef || null);\n var element = context[5 /* ElementPosition */];\n var classesPlayerBuilder = classesInput instanceof BoundPlayerFactory ?\n new ClassAndStylePlayerBuilder(classesInput, element, 1 /* Class */) :\n null;\n var stylesPlayerBuilder = stylesInput instanceof BoundPlayerFactory ?\n new ClassAndStylePlayerBuilder(stylesInput, element, 2 /* Style */) :\n null;\n var classesValue = classesPlayerBuilder ?\n classesInput.value :\n classesInput;\n var stylesValue = stylesPlayerBuilder ? stylesInput['value'] : stylesInput;\n // early exit (this is what's done to avoid using ctx.bind() to cache the value)\n var ignoreAllClassUpdates = limitToSingleClasses(context) || classesValue === NO_CHANGE ||\n classesValue === context[6 /* CachedClassValueOrInitialClassString */];\n var ignoreAllStyleUpdates = stylesValue === NO_CHANGE || stylesValue === context[7 /* CachedStyleValue */];\n if (ignoreAllClassUpdates && ignoreAllStyleUpdates)\n return;\n context[6 /* CachedClassValueOrInitialClassString */] = classesValue;\n context[7 /* CachedStyleValue */] = stylesValue;\n var classNames = EMPTY_ARRAY;\n var applyAllClasses = false;\n var playerBuildersAreDirty = false;\n var classesPlayerBuilderIndex = classesPlayerBuilder ? 1 /* ClassMapPlayerBuilderPosition */ : 0;\n if (hasPlayerBuilderChanged(context, classesPlayerBuilder, 1 /* ClassMapPlayerBuilderPosition */)) {\n setPlayerBuilder(context, classesPlayerBuilder, 1 /* ClassMapPlayerBuilderPosition */);\n playerBuildersAreDirty = true;\n }\n var stylesPlayerBuilderIndex = stylesPlayerBuilder ? 3 /* StyleMapPlayerBuilderPosition */ : 0;\n if (hasPlayerBuilderChanged(context, stylesPlayerBuilder, 3 /* StyleMapPlayerBuilderPosition */)) {\n setPlayerBuilder(context, stylesPlayerBuilder, 3 /* StyleMapPlayerBuilderPosition */);\n playerBuildersAreDirty = true;\n }\n // each time a string-based value pops up then it shouldn't require a deep\n // check of what's changed.\n if (!ignoreAllClassUpdates) {\n if (typeof classesValue == 'string') {\n classNames = classesValue.split(/\\s+/);\n // this boolean is used to avoid having to create a key/value map of `true` values\n // since a classname string implies that all those classes are added\n applyAllClasses = true;\n }\n else {\n classNames = classesValue ? Object.keys(classesValue) : EMPTY_ARRAY;\n }\n }\n var classes = (classesValue || EMPTY_OBJ);\n var styleProps = stylesValue ? Object.keys(stylesValue) : EMPTY_ARRAY;\n var styles = stylesValue || EMPTY_OBJ;\n var classesStartIndex = styleProps.length;\n var multiStartIndex = getMultiStartIndex(context);\n var dirty = false;\n var ctxIndex = multiStartIndex;\n var propIndex = 0;\n var propLimit = styleProps.length + classNames.length;\n // the main loop here will try and figure out how the shape of the provided\n // styles differ with respect to the context. Later if the context/styles/classes\n // are off-balance then they will be dealt in another loop after this one\n while (ctxIndex < context.length && propIndex < propLimit) {\n var isClassBased = propIndex >= classesStartIndex;\n var processValue = (!isClassBased && !ignoreAllStyleUpdates) || (isClassBased && !ignoreAllClassUpdates);\n // when there is a cache-hit for a string-based class then we should\n // avoid doing any work diffing any of the changes\n if (processValue) {\n var adjustedPropIndex = isClassBased ? propIndex - classesStartIndex : propIndex;\n var newProp = isClassBased ? classNames[adjustedPropIndex] : styleProps[adjustedPropIndex];\n var newValue = isClassBased ? (applyAllClasses ? true : classes[newProp]) : styles[newProp];\n var playerBuilderIndex = isClassBased ? classesPlayerBuilderIndex : stylesPlayerBuilderIndex;\n var prop = getProp(context, ctxIndex);\n if (prop === newProp) {\n var value = getValue(context, ctxIndex);\n var flag = getPointers(context, ctxIndex);\n setPlayerBuilderIndex(context, ctxIndex, playerBuilderIndex, directiveIndex);\n if (hasValueChanged(flag, value, newValue)) {\n setValue(context, ctxIndex, newValue);\n playerBuildersAreDirty = playerBuildersAreDirty || !!playerBuilderIndex;\n var initialValue = getInitialValue(context, flag);\n // SKIP IF INITIAL CHECK\n // If the former `value` is `null` then it means that an initial value\n // could be being rendered on screen. If that is the case then there is\n // no point in updating the value incase it matches. In other words if the\n // new value is the exact same as the previously rendered value (which\n // happens to be the initial value) then do nothing.\n if (value != null || hasValueChanged(flag, initialValue, newValue)) {\n setDirty(context, ctxIndex, true);\n dirty = true;\n }\n }\n }\n else {\n var indexOfEntry = findEntryPositionByProp(context, newProp, ctxIndex);\n if (indexOfEntry > 0) {\n // it was found at a later point ... just swap the values\n var valueToCompare = getValue(context, indexOfEntry);\n var flagToCompare = getPointers(context, indexOfEntry);\n swapMultiContextEntries(context, ctxIndex, indexOfEntry);\n if (hasValueChanged(flagToCompare, valueToCompare, newValue)) {\n var initialValue = getInitialValue(context, flagToCompare);\n setValue(context, ctxIndex, newValue);\n // same if statement logic as above (look for SKIP IF INITIAL CHECK).\n if (valueToCompare != null || hasValueChanged(flagToCompare, initialValue, newValue)) {\n setDirty(context, ctxIndex, true);\n playerBuildersAreDirty = playerBuildersAreDirty || !!playerBuilderIndex;\n dirty = true;\n }\n }\n }\n else {\n // we only care to do this if the insertion is in the middle\n var newFlag = prepareInitialFlag(context, newProp, isClassBased, getStyleSanitizer(context, directiveIndex));\n playerBuildersAreDirty = playerBuildersAreDirty || !!playerBuilderIndex;\n insertNewMultiProperty(context, ctxIndex, isClassBased, newProp, newFlag, newValue, directiveIndex, playerBuilderIndex);\n dirty = true;\n }\n }\n }\n ctxIndex += 4 /* Size */;\n propIndex++;\n }\n // this means that there are left-over values in the context that\n // were not included in the provided styles/classes and in this\n // case the goal is to \"remove\" them from the context (by nullifying)\n while (ctxIndex < context.length) {\n var flag = getPointers(context, ctxIndex);\n var isClassBased = (flag & 2 /* Class */) === 2 /* Class */;\n var processValue = (!isClassBased && !ignoreAllStyleUpdates) || (isClassBased && !ignoreAllClassUpdates);\n if (processValue) {\n var value = getValue(context, ctxIndex);\n var doRemoveValue = valueExists(value, isClassBased);\n if (doRemoveValue) {\n setDirty(context, ctxIndex, true);\n setValue(context, ctxIndex, null);\n // we keep the player factory the same so that the `nulled` value can\n // be instructed into the player because removing a style and/or a class\n // is a valid animation player instruction.\n var playerBuilderIndex = isClassBased ? classesPlayerBuilderIndex : stylesPlayerBuilderIndex;\n setPlayerBuilderIndex(context, ctxIndex, playerBuilderIndex, directiveIndex);\n dirty = true;\n }\n }\n ctxIndex += 4 /* Size */;\n }\n // this means that there are left-over properties in the context that\n // were not detected in the context during the loop above. In that\n // case we want to add the new entries into the list\n var sanitizer = getStyleSanitizer(context, directiveIndex);\n while (propIndex < propLimit) {\n var isClassBased = propIndex >= classesStartIndex;\n var processValue = (!isClassBased && !ignoreAllStyleUpdates) || (isClassBased && !ignoreAllClassUpdates);\n if (processValue) {\n var adjustedPropIndex = isClassBased ? propIndex - classesStartIndex : propIndex;\n var prop = isClassBased ? classNames[adjustedPropIndex] : styleProps[adjustedPropIndex];\n var value = isClassBased ? (applyAllClasses ? true : classes[prop]) : styles[prop];\n var flag = prepareInitialFlag(context, prop, isClassBased, sanitizer) | 1 /* Dirty */;\n var playerBuilderIndex = isClassBased ? classesPlayerBuilderIndex : stylesPlayerBuilderIndex;\n var ctxIndex_1 = context.length;\n context.push(flag, prop, value, 0);\n setPlayerBuilderIndex(context, ctxIndex_1, playerBuilderIndex, directiveIndex);\n dirty = true;\n }\n propIndex++;\n }\n if (dirty) {\n setContextDirty(context, true);\n setDirectiveDirty(context, directiveIndex, true);\n }\n if (playerBuildersAreDirty) {\n setContextPlayersDirty(context, true);\n }\n}\n/**\n * This method will toggle the referenced CSS class (by the provided index)\n * within the given context.\n *\n * @param context The styling context that will be updated with the\n * newly provided class value.\n * @param offset The index of the CSS class which is being updated.\n * @param addOrRemove Whether or not to add or remove the CSS class\n */\nfunction updateClassProp(context, offset, addOrRemove, directiveRef) {\n _updateSingleStylingValue(context, offset, addOrRemove, true, directiveRef);\n}\n/**\n * Sets and resolves a single style value on the provided `StylingContext` so\n * that they can be applied to the element once `renderStyling` is called.\n *\n * Note that prop-level styling values are considered higher priority than any styling that\n * has been applied using `updateStylingMap`, therefore, when styling values are rendered\n * then any styles/classes that have been applied using this function will be considered first\n * (then multi values second and then initial values as a backup).\n *\n * @param context The styling context that will be updated with the\n * newly provided style value.\n * @param offset The index of the property which is being updated.\n * @param value The CSS style value that will be assigned\n * @param directiveRef an optional reference to the directive responsible\n * for this binding change. If present then style binding will only\n * actualize if the directive has ownership over this binding\n * (see styling.ts#directives for more information about the algorithm).\n */\nfunction updateStyleProp(context, offset, input, directiveRef) {\n _updateSingleStylingValue(context, offset, input, false, directiveRef);\n}\nfunction _updateSingleStylingValue(context, offset, input, isClassBased, directiveRef) {\n var directiveIndex = getDirectiveIndexFromRegistry(context, directiveRef || null);\n var singleIndex = getSinglePropIndexValue(context, directiveIndex, offset, isClassBased);\n var currValue = getValue(context, singleIndex);\n var currFlag = getPointers(context, singleIndex);\n var currDirective = getDirectiveIndexFromEntry(context, singleIndex);\n var value = (input instanceof BoundPlayerFactory) ? input.value : input;\n if (hasValueChanged(currFlag, currValue, value) &&\n allowValueChange(currValue, value, currDirective, directiveIndex)) {\n var isClassBased_1 = (currFlag & 2 /* Class */) === 2 /* Class */;\n var element = context[5 /* ElementPosition */];\n var playerBuilder = input instanceof BoundPlayerFactory ?\n new ClassAndStylePlayerBuilder(input, element, isClassBased_1 ? 1 /* Class */ : 2 /* Style */) :\n null;\n var value_1 = (playerBuilder ? input.value : input);\n var currPlayerIndex = getPlayerBuilderIndex(context, singleIndex);\n var playerBuildersAreDirty = false;\n var playerBuilderIndex = playerBuilder ? currPlayerIndex : 0;\n if (hasPlayerBuilderChanged(context, playerBuilder, currPlayerIndex)) {\n var newIndex = setPlayerBuilder(context, playerBuilder, currPlayerIndex);\n playerBuilderIndex = playerBuilder ? newIndex : 0;\n playerBuildersAreDirty = true;\n }\n if (playerBuildersAreDirty || currDirective !== directiveIndex) {\n setPlayerBuilderIndex(context, singleIndex, playerBuilderIndex, directiveIndex);\n }\n if (currDirective !== directiveIndex) {\n var prop = getProp(context, singleIndex);\n var sanitizer = getStyleSanitizer(context, directiveIndex);\n setSanitizeFlag(context, singleIndex, (sanitizer && sanitizer(prop)) ? true : false);\n }\n // the value will always get updated (even if the dirty flag is skipped)\n setValue(context, singleIndex, value_1);\n var indexForMulti = getMultiOrSingleIndex(currFlag);\n // if the value is the same in the multi-area then there's no point in re-assembling\n var valueForMulti = getValue(context, indexForMulti);\n if (!valueForMulti || hasValueChanged(currFlag, valueForMulti, value_1)) {\n var multiDirty = false;\n var singleDirty = true;\n // only when the value is set to `null` should the multi-value get flagged\n if (!valueExists(value_1, isClassBased_1) && valueExists(valueForMulti, isClassBased_1)) {\n multiDirty = true;\n singleDirty = false;\n }\n setDirty(context, indexForMulti, multiDirty);\n setDirty(context, singleIndex, singleDirty);\n setDirectiveDirty(context, directiveIndex, true);\n setContextDirty(context, true);\n }\n if (playerBuildersAreDirty) {\n setContextPlayersDirty(context, true);\n }\n }\n}\n/**\n * Renders all queued styling using a renderer onto the given element.\n *\n * This function works by rendering any styles (that have been applied\n * using `updateStylingMap`) and any classes (that have been applied using\n * `updateStyleProp`) onto the provided element using the provided renderer.\n * Just before the styles/classes are rendered a final key/value style map\n * will be assembled (if `styleStore` or `classStore` are provided).\n *\n * @param lElement the element that the styles will be rendered on\n * @param context The styling context that will be used to determine\n * what styles will be rendered\n * @param renderer the renderer that will be used to apply the styling\n * @param classesStore if provided, the updated class values will be applied\n * to this key/value map instead of being renderered via the renderer.\n * @param stylesStore if provided, the updated style values will be applied\n * to this key/value map instead of being renderered via the renderer.\n * @param directiveRef an optional directive that will be used to target which\n * styling values are rendered. If left empty, only the bindings that are\n * registered on the template will be rendered.\n * @returns number the total amount of players that got queued for animation (if any)\n */\nfunction renderStyling(context, renderer, rootOrView, isFirstRender, classesStore, stylesStore, directiveRef) {\n var totalPlayersQueued = 0;\n var targetDirectiveIndex = getDirectiveIndexFromRegistry(context, directiveRef || null);\n if (isContextDirty(context) && isDirectiveDirty(context, targetDirectiveIndex)) {\n var flushPlayerBuilders = context[0 /* MasterFlagPosition */] & 8 /* PlayerBuildersDirty */;\n var native = context[5 /* ElementPosition */];\n var multiStartIndex = getMultiStartIndex(context);\n var onlySingleClasses = limitToSingleClasses(context);\n var stillDirty = false;\n for (var i = 9 /* SingleStylesStartPosition */; i < context.length; i += 4 /* Size */) {\n // there is no point in rendering styles that have not changed on screen\n if (isDirty(context, i)) {\n var flag = getPointers(context, i);\n var directiveIndex = getDirectiveIndexFromEntry(context, i);\n if (targetDirectiveIndex !== directiveIndex) {\n stillDirty = true;\n continue;\n }\n var prop = getProp(context, i);\n var value = getValue(context, i);\n var styleSanitizer = (flag & 4 /* Sanitize */) ? getStyleSanitizer(context, directiveIndex) : null;\n var playerBuilder = getPlayerBuilder(context, i);\n var isClassBased = flag & 2 /* Class */ ? true : false;\n var isInSingleRegion = i < multiStartIndex;\n var readInitialValue = !isClassBased || !onlySingleClasses;\n var valueToApply = value;\n // VALUE DEFER CASE 1: Use a multi value instead of a null single value\n // this check implies that a single value was removed and we\n // should now defer to a multi value and use that (if set).\n if (isInSingleRegion && !valueExists(valueToApply, isClassBased)) {\n // single values ALWAYS have a reference to a multi index\n var multiIndex = getMultiOrSingleIndex(flag);\n valueToApply = getValue(context, multiIndex);\n }\n // VALUE DEFER CASE 2: Use the initial value if all else fails (is falsy)\n // the initial value will always be a string or null,\n // therefore we can safely adopt it incase there's nothing else\n // note that this should always be a falsy check since `false` is used\n // for both class and style comparisons (styles can't be false and false\n // classes are turned off and should therefore defer to their initial values)\n // Note that we ignore class-based deferals because otherwise a class can never\n // be removed in the case that it exists as true in the initial classes list...\n if (!isClassBased && !valueExists(valueToApply, isClassBased) && readInitialValue) {\n valueToApply = getInitialValue(context, flag);\n }\n // if the first render is true then we do not want to start applying falsy\n // values to the DOM element's styling. Otherwise then we know there has\n // been a change and even if it's falsy then it's removing something that\n // was truthy before.\n var doApplyValue = isFirstRender ? valueToApply : true;\n if (doApplyValue) {\n if (isClassBased) {\n setClass(native, prop, valueToApply ? true : false, renderer, classesStore, playerBuilder);\n }\n else {\n setStyle(native, prop, valueToApply, renderer, styleSanitizer, stylesStore, playerBuilder);\n }\n }\n setDirty(context, i, false);\n }\n }\n if (flushPlayerBuilders) {\n var rootContext = Array.isArray(rootOrView) ? getRootContext(rootOrView) : rootOrView;\n var playerContext = getPlayerContext(context);\n var playersStartIndex = playerContext[0 /* NonBuilderPlayersStart */];\n for (var i = 1 /* PlayerBuildersStartPosition */; i < playersStartIndex; i += 2 /* PlayerAndPlayerBuildersTupleSize */) {\n var builder = playerContext[i];\n var playerInsertionIndex = i + 1 /* PlayerOffsetPosition */;\n var oldPlayer = playerContext[playerInsertionIndex];\n if (builder) {\n var player = builder.buildPlayer(oldPlayer, isFirstRender);\n if (player !== undefined) {\n if (player != null) {\n var wasQueued = addPlayerInternal(playerContext, rootContext, native, player, playerInsertionIndex);\n wasQueued && totalPlayersQueued++;\n }\n if (oldPlayer) {\n oldPlayer.destroy();\n }\n }\n }\n else if (oldPlayer) {\n // the player builder has been removed ... therefore we should delete the associated\n // player\n oldPlayer.destroy();\n }\n }\n setContextPlayersDirty(context, false);\n }\n setDirectiveDirty(context, targetDirectiveIndex, false);\n setContextDirty(context, stillDirty);\n }\n return totalPlayersQueued;\n}\n/**\n * This function renders a given CSS prop/value entry using the\n * provided renderer. If a `store` value is provided then\n * that will be used a render context instead of the provided\n * renderer.\n *\n * @param native the DOM Element\n * @param prop the CSS style property that will be rendered\n * @param value the CSS style value that will be rendered\n * @param renderer\n * @param store an optional key/value map that will be used as a context to render styles on\n */\nfunction setStyle(native, prop, value, renderer, sanitizer, store, playerBuilder) {\n value = sanitizer && value ? sanitizer(prop, value) : value;\n if (store || playerBuilder) {\n if (store) {\n store.setValue(prop, value);\n }\n if (playerBuilder) {\n playerBuilder.setValue(prop, value);\n }\n }\n else if (value) {\n value = value.toString(); // opacity, z-index and flexbox all have number values which may not\n // assign as numbers\n ngDevMode && ngDevMode.rendererSetStyle++;\n isProceduralRenderer(renderer) ?\n renderer.setStyle(native, prop, value, RendererStyleFlags3.DashCase) :\n native['style'].setProperty(prop, value);\n }\n else {\n ngDevMode && ngDevMode.rendererRemoveStyle++;\n isProceduralRenderer(renderer) ?\n renderer.removeStyle(native, prop, RendererStyleFlags3.DashCase) :\n native['style'].removeProperty(prop);\n }\n}\n/**\n * This function renders a given CSS class value using the provided\n * renderer (by adding or removing it from the provided element).\n * If a `store` value is provided then that will be used a render\n * context instead of the provided renderer.\n *\n * @param native the DOM Element\n * @param prop the CSS style property that will be rendered\n * @param value the CSS style value that will be rendered\n * @param renderer\n * @param store an optional key/value map that will be used as a context to render styles on\n */\nfunction setClass(native, className, add, renderer, store, playerBuilder) {\n if (store || playerBuilder) {\n if (store) {\n store.setValue(className, add);\n }\n if (playerBuilder) {\n playerBuilder.setValue(className, add);\n }\n }\n else if (add) {\n ngDevMode && ngDevMode.rendererAddClass++;\n isProceduralRenderer(renderer) ? renderer.addClass(native, className) :\n native['classList'].add(className);\n }\n else {\n ngDevMode && ngDevMode.rendererRemoveClass++;\n isProceduralRenderer(renderer) ? renderer.removeClass(native, className) :\n native['classList'].remove(className);\n }\n}\nfunction setSanitizeFlag(context, index, sanitizeYes) {\n if (sanitizeYes) {\n context[index] |= 4 /* Sanitize */;\n }\n else {\n context[index] &= ~4 /* Sanitize */;\n }\n}\nfunction setDirty(context, index, isDirtyYes) {\n var adjustedIndex = index >= 9 /* SingleStylesStartPosition */ ? (index + 0 /* FlagsOffset */) : index;\n if (isDirtyYes) {\n context[adjustedIndex] |= 1 /* Dirty */;\n }\n else {\n context[adjustedIndex] &= ~1 /* Dirty */;\n }\n}\nfunction isDirty(context, index) {\n var adjustedIndex = index >= 9 /* SingleStylesStartPosition */ ? (index + 0 /* FlagsOffset */) : index;\n return (context[adjustedIndex] & 1 /* Dirty */) == 1 /* Dirty */;\n}\nfunction isClassBasedValue(context, index) {\n var adjustedIndex = index >= 9 /* SingleStylesStartPosition */ ? (index + 0 /* FlagsOffset */) : index;\n return (context[adjustedIndex] & 2 /* Class */) == 2 /* Class */;\n}\nfunction isSanitizable(context, index) {\n var adjustedIndex = index >= 9 /* SingleStylesStartPosition */ ? (index + 0 /* FlagsOffset */) : index;\n return (context[adjustedIndex] & 4 /* Sanitize */) == 4 /* Sanitize */;\n}\nfunction pointers(configFlag, staticIndex, dynamicIndex) {\n return (configFlag & 63 /* BitMask */) | (staticIndex << 6 /* BitCountSize */) |\n (dynamicIndex << (14 /* BitCountSize */ + 6 /* BitCountSize */));\n}\nfunction getInitialValue(context, flag) {\n var index = getInitialIndex(flag);\n var entryIsClassBased = flag & 2 /* Class */;\n var initialValues = entryIsClassBased ? context[3 /* InitialClassValuesPosition */] :\n context[2 /* InitialStyleValuesPosition */];\n return initialValues[index];\n}\nfunction getInitialIndex(flag) {\n return (flag >> 6 /* BitCountSize */) & 16383 /* BitMask */;\n}\nfunction getMultiOrSingleIndex(flag) {\n var index = (flag >> (14 /* BitCountSize */ + 6 /* BitCountSize */)) & 16383 /* BitMask */;\n return index >= 9 /* SingleStylesStartPosition */ ? index : -1;\n}\nfunction getMultiStartIndex(context) {\n return getMultiOrSingleIndex(context[0 /* MasterFlagPosition */]);\n}\nfunction setProp(context, index, prop) {\n context[index + 1 /* PropertyOffset */] = prop;\n}\nfunction setValue(context, index, value) {\n context[index + 2 /* ValueOffset */] = value;\n}\nfunction hasPlayerBuilderChanged(context, builder, index) {\n var playerContext = context[8 /* PlayerContext */];\n if (builder) {\n if (!playerContext || index === 0) {\n return true;\n }\n }\n else if (!playerContext) {\n return false;\n }\n return playerContext[index] !== builder;\n}\nfunction setPlayerBuilder(context, builder, insertionIndex) {\n var playerContext = context[8 /* PlayerContext */] || allocPlayerContext(context);\n if (insertionIndex > 0) {\n playerContext[insertionIndex] = builder;\n }\n else {\n insertionIndex = playerContext[0 /* NonBuilderPlayersStart */];\n playerContext.splice(insertionIndex, 0, builder, null);\n playerContext[0 /* NonBuilderPlayersStart */] +=\n 2 /* PlayerAndPlayerBuildersTupleSize */;\n }\n return insertionIndex;\n}\nfunction directiveOwnerPointers(directiveIndex, playerIndex) {\n return (playerIndex << 16 /* BitCountSize */) | directiveIndex;\n}\nfunction setPlayerBuilderIndex(context, index, playerBuilderIndex, directiveIndex) {\n var value = directiveOwnerPointers(directiveIndex, playerBuilderIndex);\n context[index + 3 /* PlayerBuilderIndexOffset */] = value;\n}\nfunction getPlayerBuilderIndex(context, index) {\n var flag = context[index + 3 /* PlayerBuilderIndexOffset */];\n var playerBuilderIndex = (flag >> 16 /* BitCountSize */) &\n 65535 /* BitMask */;\n return playerBuilderIndex;\n}\nfunction getPlayerBuilder(context, index) {\n var playerBuilderIndex = getPlayerBuilderIndex(context, index);\n if (playerBuilderIndex) {\n var playerContext = context[8 /* PlayerContext */];\n if (playerContext) {\n return playerContext[playerBuilderIndex];\n }\n }\n return null;\n}\nfunction setFlag(context, index, flag) {\n var adjustedIndex = index === 0 /* MasterFlagPosition */ ? index : (index + 0 /* FlagsOffset */);\n context[adjustedIndex] = flag;\n}\nfunction getPointers(context, index) {\n var adjustedIndex = index === 0 /* MasterFlagPosition */ ? index : (index + 0 /* FlagsOffset */);\n return context[adjustedIndex];\n}\nfunction getValue(context, index) {\n return context[index + 2 /* ValueOffset */];\n}\nfunction getProp(context, index) {\n return context[index + 1 /* PropertyOffset */];\n}\nfunction isContextDirty(context) {\n return isDirty(context, 0 /* MasterFlagPosition */);\n}\nfunction limitToSingleClasses(context) {\n return context[0 /* MasterFlagPosition */] & 16 /* OnlyProcessSingleClasses */;\n}\nfunction setContextDirty(context, isDirtyYes) {\n setDirty(context, 0 /* MasterFlagPosition */, isDirtyYes);\n}\nfunction setContextPlayersDirty(context, isDirtyYes) {\n if (isDirtyYes) {\n context[0 /* MasterFlagPosition */] |= 8 /* PlayerBuildersDirty */;\n }\n else {\n context[0 /* MasterFlagPosition */] &= ~8 /* PlayerBuildersDirty */;\n }\n}\nfunction findEntryPositionByProp(context, prop, startIndex) {\n for (var i = (startIndex || 0) + 1 /* PropertyOffset */; i < context.length; i += 4 /* Size */) {\n var thisProp = context[i];\n if (thisProp == prop) {\n return i - 1 /* PropertyOffset */;\n }\n }\n return -1;\n}\nfunction swapMultiContextEntries(context, indexA, indexB) {\n var tmpValue = getValue(context, indexA);\n var tmpProp = getProp(context, indexA);\n var tmpFlag = getPointers(context, indexA);\n var tmpPlayerBuilderIndex = getPlayerBuilderIndex(context, indexA);\n var flagA = tmpFlag;\n var flagB = getPointers(context, indexB);\n var singleIndexA = getMultiOrSingleIndex(flagA);\n if (singleIndexA >= 0) {\n var _flag = getPointers(context, singleIndexA);\n var _initial = getInitialIndex(_flag);\n setFlag(context, singleIndexA, pointers(_flag, _initial, indexB));\n }\n var singleIndexB = getMultiOrSingleIndex(flagB);\n if (singleIndexB >= 0) {\n var _flag = getPointers(context, singleIndexB);\n var _initial = getInitialIndex(_flag);\n setFlag(context, singleIndexB, pointers(_flag, _initial, indexA));\n }\n setValue(context, indexA, getValue(context, indexB));\n setProp(context, indexA, getProp(context, indexB));\n setFlag(context, indexA, getPointers(context, indexB));\n var playerIndexA = getPlayerBuilderIndex(context, indexB);\n var directiveIndexA = 0;\n setPlayerBuilderIndex(context, indexA, playerIndexA, directiveIndexA);\n setValue(context, indexB, tmpValue);\n setProp(context, indexB, tmpProp);\n setFlag(context, indexB, tmpFlag);\n setPlayerBuilderIndex(context, indexB, tmpPlayerBuilderIndex, directiveIndexA);\n}\nfunction updateSinglePointerValues(context, indexStartPosition) {\n for (var i = indexStartPosition; i < context.length; i += 4 /* Size */) {\n var multiFlag = getPointers(context, i);\n var singleIndex = getMultiOrSingleIndex(multiFlag);\n if (singleIndex > 0) {\n var singleFlag = getPointers(context, singleIndex);\n var initialIndexForSingle = getInitialIndex(singleFlag);\n var flagValue = (isDirty(context, singleIndex) ? 1 /* Dirty */ : 0 /* None */) |\n (isClassBasedValue(context, singleIndex) ? 2 /* Class */ : 0 /* None */) |\n (isSanitizable(context, singleIndex) ? 4 /* Sanitize */ : 0 /* None */);\n var updatedFlag = pointers(flagValue, initialIndexForSingle, i);\n setFlag(context, singleIndex, updatedFlag);\n }\n }\n}\nfunction insertNewMultiProperty(context, index, classBased, name, flag, value, directiveIndex, playerIndex) {\n var doShift = index < context.length;\n // prop does not exist in the list, add it in\n context.splice(index, 0, flag | 1 /* Dirty */ | (classBased ? 2 /* Class */ : 0 /* None */), name, value, 0);\n setPlayerBuilderIndex(context, index, playerIndex, directiveIndex);\n if (doShift) {\n // because the value was inserted midway into the array then we\n // need to update all the shifted multi values' single value\n // pointers to point to the newly shifted location\n updateSinglePointerValues(context, index + 4 /* Size */);\n }\n}\nfunction valueExists(value, isClassBased) {\n if (isClassBased) {\n return value ? true : false;\n }\n return value !== null;\n}\nfunction prepareInitialFlag(context, prop, entryIsClassBased, sanitizer) {\n var flag = (sanitizer && sanitizer(prop)) ? 4 /* Sanitize */ : 0 /* None */;\n var initialIndex;\n if (entryIsClassBased) {\n flag |= 2 /* Class */;\n initialIndex =\n getInitialStylingValuesIndexOf(context[3 /* InitialClassValuesPosition */], prop);\n }\n else {\n initialIndex =\n getInitialStylingValuesIndexOf(context[2 /* InitialStyleValuesPosition */], prop);\n }\n initialIndex = initialIndex > 0 ? (initialIndex + 1 /* ValueOffset */) : 0;\n return pointers(flag, initialIndex, 0);\n}\nfunction hasValueChanged(flag, a, b) {\n var isClassBased = flag & 2 /* Class */;\n var hasValues = a && b;\n var usesSanitizer = flag & 4 /* Sanitize */;\n // the toString() comparison ensures that a value is checked\n // ... otherwise (during sanitization bypassing) the === comparsion\n // would fail since a new String() instance is created\n if (!isClassBased && hasValues && usesSanitizer) {\n // we know for sure we're dealing with strings at this point\n return a.toString() !== b.toString();\n }\n // everything else is safe to check with a normal equality check\n return a !== b;\n}\nvar ClassAndStylePlayerBuilder = /** @class */ (function () {\n function ClassAndStylePlayerBuilder(factory, _element, _type) {\n this._element = _element;\n this._type = _type;\n this._values = {};\n this._dirty = false;\n this._factory = factory;\n }\n ClassAndStylePlayerBuilder.prototype.setValue = function (prop, value) {\n if (this._values[prop] !== value) {\n this._values[prop] = value;\n this._dirty = true;\n }\n };\n ClassAndStylePlayerBuilder.prototype.buildPlayer = function (currentPlayer, isFirstRender) {\n // if no values have been set here then this means the binding didn't\n // change and therefore the binding values were not updated through\n // `setValue` which means no new player will be provided.\n if (this._dirty) {\n var player = this._factory.fn(this._element, this._type, this._values, isFirstRender, currentPlayer || null);\n this._values = {};\n this._dirty = false;\n return player;\n }\n return undefined;\n };\n return ClassAndStylePlayerBuilder;\n}());\nfunction getDirectiveIndexFromEntry(context, index) {\n var value = context[index + 3 /* PlayerBuilderIndexOffset */];\n return value & 65535 /* BitMask */;\n}\nfunction getDirectiveIndexFromRegistry(context, directive) {\n var index = getDirectiveRegistryValuesIndexOf(context[1 /* DirectiveRegistryPosition */], directive);\n ngDevMode &&\n assertNotEqual(index, -1, \"The provided directive \" + directive + \" has not been allocated to the element's style/class bindings\");\n return index > 0 ? index / 4 /* Size */ : 0;\n // return index / DirectiveRegistryValuesIndex.Size;\n}\nfunction getDirectiveRegistryValuesIndexOf(directives, directive) {\n for (var i = 0; i < directives.length; i += 4 /* Size */) {\n if (directives[i] === directive) {\n return i;\n }\n }\n return -1;\n}\nfunction getInitialStylingValuesIndexOf(keyValues, key) {\n for (var i = 1 /* KeyValueStartPosition */; i < keyValues.length; i += 2 /* Size */) {\n if (keyValues[i] === key)\n return i;\n }\n return -1;\n}\nfunction getSinglePropIndexValue(context, directiveIndex, offset, isClassBased) {\n var singlePropOffsetRegistryIndex = context[1 /* DirectiveRegistryPosition */][(directiveIndex * 4 /* Size */) +\n 1 /* SinglePropValuesIndexOffset */];\n var offsets = context[4 /* SinglePropOffsetPositions */];\n var indexForOffset = singlePropOffsetRegistryIndex +\n 2 /* ValueStartPosition */ +\n (isClassBased ?\n offsets[singlePropOffsetRegistryIndex + 0 /* StylesCountPosition */] :\n 0) +\n offset;\n return offsets[indexForOffset];\n}\nfunction getStyleSanitizer(context, directiveIndex) {\n var dirs = context[1 /* DirectiveRegistryPosition */];\n var value = dirs[directiveIndex * 4 /* Size */ +\n 3 /* StyleSanitizerOffset */] ||\n dirs[3 /* StyleSanitizerOffset */] || null;\n return value;\n}\nfunction isDirectiveDirty(context, directiveIndex) {\n var dirs = context[1 /* DirectiveRegistryPosition */];\n return dirs[directiveIndex * 4 /* Size */ +\n 2 /* DirtyFlagOffset */];\n}\nfunction setDirectiveDirty(context, directiveIndex, dirtyYes) {\n var dirs = context[1 /* DirectiveRegistryPosition */];\n dirs[directiveIndex * 4 /* Size */ +\n 2 /* DirtyFlagOffset */] = dirtyYes;\n}\nfunction allowValueChange(currentValue, newValue, currentDirectiveOwner, newDirectiveOwner) {\n // the code below relies the importance of directive's being tied to their\n // index value. The index values for each directive are derived from being\n // registered into the styling context directive registry. The most important\n // directive is the parent component directive (the template) and each directive\n // that is added after is considered less important than the previous entry. This\n // prioritization of directives enables the styling algorithm to decide if a style\n // or class should be allowed to be updated/replaced incase an earlier directive\n // already wrote to the exact same style-property or className value. In other words\n // ... this decides what to do if and when there is a collision.\n if (currentValue) {\n if (newValue) {\n // if a directive index is lower than it always has priority over the\n // previous directive's value...\n return newDirectiveOwner <= currentDirectiveOwner;\n }\n else {\n // only write a null value incase it's the same owner writing it.\n // this avoids having a higher-priority directive write to null\n // only to have a lesser-priority directive change right to a\n // non-null value immediately afterwards.\n return currentDirectiveOwner === newDirectiveOwner;\n }\n }\n return true;\n}\n/**\n * This function is only designed to be called for `[class]` bindings when\n * `[ngClass]` (or something that uses `class` as an input) is present. Once\n * directive host bindings fully work for `[class]` and `[style]` inputs\n * then this can be deleted.\n */\nfunction getInitialClassNameValue(context) {\n var className = context[6 /* CachedClassValueOrInitialClassString */];\n if (className == null) {\n className = '';\n var initialClassValues = context[3 /* InitialClassValuesPosition */];\n for (var i = 1 /* KeyValueStartPosition */; i < initialClassValues.length; i += 2 /* Size */) {\n var isPresent = initialClassValues[i + 1];\n if (isPresent) {\n className += (className.length ? ' ' : '') + initialClassValues[i];\n }\n }\n context[6 /* CachedClassValueOrInitialClassString */] = className;\n }\n return className;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A permanent marker promise which signifies that the current CD tree is\n * clean.\n */\nvar _CLEAN_PROMISE = Promise.resolve(null);\n/**\n * Refreshes the view, executing the following steps in that order:\n * triggers init hooks, refreshes dynamic embedded views, triggers content hooks, sets host\n * bindings, refreshes child components.\n * Note: view hooks are triggered later when leaving the view.\n */\nfunction refreshDescendantViews(lView) {\n var tView = lView[TVIEW];\n // This needs to be set before children are processed to support recursive components\n tView.firstTemplatePass = false;\n setFirstTemplatePass(false);\n // If this is a creation pass, we should not call lifecycle hooks or evaluate bindings.\n // This will be done in the update pass.\n if (!isCreationMode(lView)) {\n var checkNoChangesMode = getCheckNoChangesMode();\n executeInitHooks(lView, tView, checkNoChangesMode);\n refreshDynamicEmbeddedViews(lView);\n // Content query results must be refreshed before content hooks are called.\n refreshContentQueries(tView);\n executeHooks(lView, tView.contentHooks, tView.contentCheckHooks, checkNoChangesMode);\n setHostBindings(tView, lView);\n }\n refreshChildComponents(tView.components);\n}\n/** Sets the host bindings for the current view. */\nfunction setHostBindings(tView, viewData) {\n if (tView.expandoInstructions) {\n var bindingRootIndex = viewData[BINDING_INDEX] = tView.expandoStartIndex;\n setBindingRoot(bindingRootIndex);\n var currentDirectiveIndex = -1;\n var currentElementIndex = -1;\n for (var i = 0; i < tView.expandoInstructions.length; i++) {\n var instruction = tView.expandoInstructions[i];\n if (typeof instruction === 'number') {\n if (instruction <= 0) {\n // Negative numbers mean that we are starting new EXPANDO block and need to update\n // the current element and directive index.\n currentElementIndex = -instruction;\n // Injector block and providers are taken into account.\n var providerCount = tView.expandoInstructions[++i];\n bindingRootIndex += INJECTOR_BLOOM_PARENT_SIZE + providerCount;\n currentDirectiveIndex = bindingRootIndex;\n }\n else {\n // This is either the injector size (so the binding root can skip over directives\n // and get to the first set of host bindings on this node) or the host var count\n // (to get to the next set of host bindings on this node).\n bindingRootIndex += instruction;\n }\n setBindingRoot(bindingRootIndex);\n }\n else {\n // If it's not a number, it's a host binding function that needs to be executed.\n if (instruction !== null) {\n viewData[BINDING_INDEX] = bindingRootIndex;\n instruction(2 /* Update */, readElementValue(viewData[currentDirectiveIndex]), currentElementIndex);\n }\n currentDirectiveIndex++;\n }\n }\n }\n}\n/** Refreshes content queries for all directives in the given view. */\nfunction refreshContentQueries(tView) {\n if (tView.contentQueries != null) {\n for (var i = 0; i < tView.contentQueries.length; i += 2) {\n var directiveDefIdx = tView.contentQueries[i];\n var directiveDef = tView.data[directiveDefIdx];\n directiveDef.contentQueriesRefresh(directiveDefIdx - HEADER_OFFSET, tView.contentQueries[i + 1]);\n }\n }\n}\n/** Refreshes child components in the current view. */\nfunction refreshChildComponents(components) {\n if (components != null) {\n for (var i = 0; i < components.length; i++) {\n componentRefresh(components[i]);\n }\n }\n}\nfunction createLView(parentLView, tView, context, flags, rendererFactory, renderer, sanitizer, injector) {\n var lView = tView.blueprint.slice();\n lView[FLAGS] = flags | 1 /* CreationMode */ | 16 /* Attached */ | 32 /* RunInit */ |\n 2 /* FirstLViewPass */;\n lView[PARENT] = lView[DECLARATION_VIEW] = parentLView;\n lView[CONTEXT] = context;\n lView[RENDERER_FACTORY] = (rendererFactory || parentLView && parentLView[RENDERER_FACTORY]);\n ngDevMode && assertDefined(lView[RENDERER_FACTORY], 'RendererFactory is required');\n lView[RENDERER] = (renderer || parentLView && parentLView[RENDERER]);\n ngDevMode && assertDefined(lView[RENDERER], 'Renderer is required');\n lView[SANITIZER] = sanitizer || parentLView && parentLView[SANITIZER] || null;\n lView[INJECTOR] = injector || parentLView && parentLView[INJECTOR] || null;\n return lView;\n}\nfunction createNodeAtIndex(index, type, native, name, attrs) {\n var lView = getLView();\n var tView = lView[TVIEW];\n var adjustedIndex = index + HEADER_OFFSET;\n ngDevMode &&\n assertLessThan(adjustedIndex, lView.length, \"Slot should have been initialized with null\");\n lView[adjustedIndex] = native;\n var tNode = tView.data[adjustedIndex];\n if (tNode == null) {\n // TODO(misko): Refactor createTNode so that it does not depend on LView.\n tNode = tView.data[adjustedIndex] = createTNode(lView, type, adjustedIndex, name, attrs, null);\n }\n // Now link ourselves into the tree.\n // We need this even if tNode exists, otherwise we might end up pointing to unexisting tNodes when\n // we use i18n (especially with ICU expressions that update the DOM during the update phase).\n var previousOrParentTNode = getPreviousOrParentTNode();\n var isParent = getIsParent();\n if (previousOrParentTNode) {\n if (isParent && previousOrParentTNode.child == null &&\n (tNode.parent !== null || previousOrParentTNode.type === 2 /* View */)) {\n // We are in the same view, which means we are adding content node to the parent view.\n previousOrParentTNode.child = tNode;\n }\n else if (!isParent) {\n previousOrParentTNode.next = tNode;\n }\n }\n if (tView.firstChild == null) {\n tView.firstChild = tNode;\n }\n setPreviousOrParentTNode(tNode);\n setIsParent(true);\n return tNode;\n}\nfunction createViewNode(index, view) {\n // View nodes are not stored in data because they can be added / removed at runtime (which\n // would cause indices to change). Their TNodes are instead stored in tView.node.\n if (view[TVIEW].node == null) {\n view[TVIEW].node = createTNode(view, 2 /* View */, index, null, null, null);\n }\n return view[HOST_NODE] = view[TVIEW].node;\n}\n/**\n * When elements are created dynamically after a view blueprint is created (e.g. through\n * i18nApply() or ComponentFactory.create), we need to adjust the blueprint for future\n * template passes.\n */\nfunction allocExpando(view) {\n var tView = view[TVIEW];\n if (tView.firstTemplatePass) {\n tView.expandoStartIndex++;\n tView.blueprint.push(null);\n tView.data.push(null);\n view.push(null);\n }\n}\n/**\n * Used for creating the LViewNode of a dynamic embedded view,\n * either through ViewContainerRef.createEmbeddedView() or TemplateRef.createEmbeddedView().\n * Such lViewNode will then be renderer with renderEmbeddedTemplate() (see below).\n */\nfunction createEmbeddedViewAndNode(tView, context, declarationView, renderer, queries, injectorIndex) {\n var _isParent = getIsParent();\n var _previousOrParentTNode = getPreviousOrParentTNode();\n setIsParent(true);\n setPreviousOrParentTNode(null);\n var lView = createLView(declarationView, tView, context, 4 /* CheckAlways */);\n lView[DECLARATION_VIEW] = declarationView;\n if (queries) {\n lView[QUERIES] = queries.createView();\n }\n createViewNode(-1, lView);\n if (tView.firstTemplatePass) {\n tView.node.injectorIndex = injectorIndex;\n }\n setIsParent(_isParent);\n setPreviousOrParentTNode(_previousOrParentTNode);\n return lView;\n}\n/**\n * Used for rendering embedded views (e.g. dynamically created views)\n *\n * Dynamically created views must store/retrieve their TViews differently from component views\n * because their template functions are nested in the template functions of their hosts, creating\n * closures. If their host template happens to be an embedded template in a loop (e.g. ngFor inside\n * an ngFor), the nesting would mean we'd have multiple instances of the template function, so we\n * can't store TViews in the template function itself (as we do for comps). Instead, we store the\n * TView for dynamically created views on their host TNode, which only has one instance.\n */\nfunction renderEmbeddedTemplate(viewToRender, tView, context) {\n var _isParent = getIsParent();\n var _previousOrParentTNode = getPreviousOrParentTNode();\n setIsParent(true);\n setPreviousOrParentTNode(null);\n var oldView;\n if (viewToRender[FLAGS] & 128 /* IsRoot */) {\n // This is a root view inside the view tree\n tickRootContext(getRootContext(viewToRender));\n }\n else {\n try {\n setIsParent(true);\n setPreviousOrParentTNode(null);\n oldView = enterView(viewToRender, viewToRender[HOST_NODE]);\n namespaceHTML();\n tView.template(getRenderFlags(viewToRender), context);\n // This must be set to false immediately after the first creation run because in an\n // ngFor loop, all the views will be created together before update mode runs and turns\n // off firstTemplatePass. If we don't set it here, instances will perform directive\n // matching, etc again and again.\n viewToRender[TVIEW].firstTemplatePass = false;\n setFirstTemplatePass(false);\n refreshDescendantViews(viewToRender);\n }\n finally {\n leaveView(oldView);\n setIsParent(_isParent);\n setPreviousOrParentTNode(_previousOrParentTNode);\n }\n }\n}\n/**\n * Retrieves a context at the level specified and saves it as the global, contextViewData.\n * Will get the next level up if level is not specified.\n *\n * This is used to save contexts of parent views so they can be bound in embedded views, or\n * in conjunction with reference() to bind a ref from a parent view.\n *\n * @param level The relative level of the view from which to grab context compared to contextVewData\n * @returns context\n */\nfunction nextContext(level) {\n if (level === void 0) { level = 1; }\n return nextContextImpl(level);\n}\nfunction renderComponentOrTemplate(hostView, context, templateFn) {\n var rendererFactory = hostView[RENDERER_FACTORY];\n var oldView = enterView(hostView, hostView[HOST_NODE]);\n var normalExecutionPath = !getCheckNoChangesMode();\n try {\n if (normalExecutionPath && rendererFactory.begin) {\n rendererFactory.begin();\n }\n if (isCreationMode(hostView)) {\n // creation mode pass\n if (templateFn) {\n namespaceHTML();\n templateFn(1 /* Create */, context);\n }\n refreshDescendantViews(hostView);\n hostView[FLAGS] &= ~1 /* CreationMode */;\n }\n // update mode pass\n templateFn && templateFn(2 /* Update */, context);\n refreshDescendantViews(hostView);\n }\n finally {\n if (normalExecutionPath && rendererFactory.end) {\n rendererFactory.end();\n }\n leaveView(oldView);\n }\n}\n/**\n * This function returns the default configuration of rendering flags depending on when the\n * template is in creation mode or update mode. Update block and create block are\n * always run separately.\n */\nfunction getRenderFlags(view) {\n return isCreationMode(view) ? 1 /* Create */ : 2 /* Update */;\n}\n//////////////////////////\n//// Namespace\n//////////////////////////\nvar _currentNamespace = null;\nfunction namespaceSVG() {\n _currentNamespace = 'http://www.w3.org/2000/svg';\n}\nfunction namespaceMathML() {\n _currentNamespace = 'http://www.w3.org/1998/MathML/';\n}\nfunction namespaceHTML() {\n _currentNamespace = null;\n}\n//////////////////////////\n//// Element\n//////////////////////////\n/**\n * Creates an empty element using {@link elementStart} and {@link elementEnd}\n *\n * @param index Index of the element in the data array\n * @param name Name of the DOM Node\n * @param attrs Statically bound set of attributes, classes, and styles to be written into the DOM\n * element on creation. Use [AttributeMarker] to denote the meaning of this array.\n * @param localRefs A set of local reference bindings on the element.\n */\nfunction element(index, name, attrs, localRefs) {\n elementStart(index, name, attrs, localRefs);\n elementEnd();\n}\n/**\n * Creates a logical container for other nodes () backed by a comment node in the DOM.\n * The instruction must later be followed by `elementContainerEnd()` call.\n *\n * @param index Index of the element in the LView array\n * @param attrs Set of attributes to be used when matching directives.\n * @param localRefs A set of local reference bindings on the element.\n *\n * Even if this instruction accepts a set of attributes no actual attribute values are propagated to\n * the DOM (as a comment node can't have attributes). Attributes are here only for directive\n * matching purposes and setting initial inputs of directives.\n */\nfunction elementContainerStart(index, attrs, localRefs) {\n var lView = getLView();\n var tView = lView[TVIEW];\n var renderer = lView[RENDERER];\n var tagName = 'ng-container';\n ngDevMode && assertEqual(lView[BINDING_INDEX], tView.bindingStartIndex, 'element containers should be created before any bindings');\n ngDevMode && ngDevMode.rendererCreateComment++;\n var native = renderer.createComment(ngDevMode ? tagName : '');\n ngDevMode && assertDataInRange(lView, index - 1);\n var tNode = createNodeAtIndex(index, 4 /* ElementContainer */, native, tagName, attrs || null);\n appendChild(native, tNode, lView);\n createDirectivesAndLocals(tView, lView, localRefs);\n attachPatchData(native, lView);\n}\n/** Mark the end of the . */\nfunction elementContainerEnd() {\n var previousOrParentTNode = getPreviousOrParentTNode();\n var lView = getLView();\n var tView = lView[TVIEW];\n if (getIsParent()) {\n setIsParent(false);\n }\n else {\n ngDevMode && assertHasParent(getPreviousOrParentTNode());\n previousOrParentTNode = previousOrParentTNode.parent;\n setPreviousOrParentTNode(previousOrParentTNode);\n }\n ngDevMode && assertNodeType(previousOrParentTNode, 4 /* ElementContainer */);\n var currentQueries = lView[QUERIES];\n if (currentQueries) {\n lView[QUERIES] = currentQueries.addNode(previousOrParentTNode);\n }\n queueLifecycleHooks(tView, previousOrParentTNode);\n}\n/**\n * Create DOM element. The instruction must later be followed by `elementEnd()` call.\n *\n * @param index Index of the element in the LView array\n * @param name Name of the DOM Node\n * @param attrs Statically bound set of attributes, classes, and styles to be written into the DOM\n * element on creation. Use [AttributeMarker] to denote the meaning of this array.\n * @param localRefs A set of local reference bindings on the element.\n *\n * Attributes and localRefs are passed as an array of strings where elements with an even index\n * hold an attribute name and elements with an odd index hold an attribute value, ex.:\n * ['id', 'warning5', 'class', 'alert']\n */\nfunction elementStart(index, name, attrs, localRefs) {\n var lView = getLView();\n var tView = lView[TVIEW];\n ngDevMode && assertEqual(lView[BINDING_INDEX], tView.bindingStartIndex, 'elements should be created before any bindings ');\n ngDevMode && ngDevMode.rendererCreateElement++;\n var native = elementCreate(name);\n ngDevMode && assertDataInRange(lView, index - 1);\n var tNode = createNodeAtIndex(index, 3 /* Element */, native, name, attrs || null);\n if (attrs) {\n // it's important to only prepare styling-related datastructures once for a given\n // tNode and not each time an element is created. Also, the styling code is designed\n // to be patched and constructed at various points, but only up until the first element\n // is created. Then the styling context is locked and can only be instantiated for each\n // successive element that is created.\n if (tView.firstTemplatePass && !tNode.stylingTemplate && hasStyling(attrs)) {\n tNode.stylingTemplate = initializeStaticContext(attrs);\n }\n setUpAttributes(native, attrs);\n }\n appendChild(native, tNode, lView);\n createDirectivesAndLocals(tView, lView, localRefs);\n // any immediate children of a component or template container must be pre-emptively\n // monkey-patched with the component view data so that the element can be inspected\n // later on using any element discovery utility methods (see `element_discovery.ts`)\n if (getElementDepthCount() === 0) {\n attachPatchData(native, lView);\n }\n increaseElementDepthCount();\n // if a directive contains a host binding for \"class\" then all class-based data will\n // flow through that (except for `[class.prop]` bindings). This also includes initial\n // static class values as well. (Note that this will be fixed once map-based `[style]`\n // and `[class]` bindings work for multiple directives.)\n if (tView.firstTemplatePass) {\n var inputData = initializeTNodeInputs(tNode);\n if (inputData && inputData.hasOwnProperty('class')) {\n tNode.flags |= 8 /* hasClassInput */;\n }\n }\n // There is no point in rendering styles when a class directive is present since\n // it will take that over for us (this will be removed once #FW-882 is in).\n if (tNode.stylingTemplate && (tNode.flags & 8 /* hasClassInput */) === 0) {\n renderInitialStylesAndClasses(native, tNode.stylingTemplate, lView[RENDERER]);\n }\n}\n/**\n * Creates a native element from a tag name, using a renderer.\n * @param name the tag name\n * @param overriddenRenderer Optional A renderer to override the default one\n * @returns the element created\n */\nfunction elementCreate(name, overriddenRenderer) {\n var native;\n var rendererToUse = overriddenRenderer || getLView()[RENDERER];\n if (isProceduralRenderer(rendererToUse)) {\n native = rendererToUse.createElement(name, _currentNamespace);\n }\n else {\n if (_currentNamespace === null) {\n native = rendererToUse.createElement(name);\n }\n else {\n native = rendererToUse.createElementNS(_currentNamespace, name);\n }\n }\n return native;\n}\n/**\n * Creates directive instances and populates local refs.\n *\n * @param localRefs Local refs of the node in question\n * @param localRefExtractor mapping function that extracts local ref value from TNode\n */\nfunction createDirectivesAndLocals(tView, viewData, localRefs, localRefExtractor) {\n if (localRefExtractor === void 0) { localRefExtractor = getNativeByTNode; }\n if (!getBindingsEnabled())\n return;\n var previousOrParentTNode = getPreviousOrParentTNode();\n if (getFirstTemplatePass()) {\n ngDevMode && ngDevMode.firstTemplatePass++;\n resolveDirectives(tView, viewData, findDirectiveMatches(tView, viewData, previousOrParentTNode), previousOrParentTNode, localRefs || null);\n }\n instantiateAllDirectives(tView, viewData, previousOrParentTNode);\n invokeDirectivesHostBindings(tView, viewData, previousOrParentTNode);\n saveResolvedLocalsInData(viewData, previousOrParentTNode, localRefExtractor);\n}\n/**\n * Takes a list of local names and indices and pushes the resolved local variable values\n * to LView in the same order as they are loaded in the template with load().\n */\nfunction saveResolvedLocalsInData(viewData, tNode, localRefExtractor) {\n var localNames = tNode.localNames;\n if (localNames) {\n var localIndex = tNode.index + 1;\n for (var i = 0; i < localNames.length; i += 2) {\n var index = localNames[i + 1];\n var value = index === -1 ?\n localRefExtractor(tNode, viewData) :\n viewData[index];\n viewData[localIndex++] = value;\n }\n }\n}\n/**\n * Gets TView from a template function or creates a new TView\n * if it doesn't already exist.\n *\n * @param templateFn The template from which to get static data\n * @param consts The number of nodes, local refs, and pipes in this view\n * @param vars The number of bindings and pure function bindings in this view\n * @param directives Directive defs that should be saved on TView\n * @param pipes Pipe defs that should be saved on TView\n * @returns TView\n */\nfunction getOrCreateTView(templateFn, consts, vars, directives, pipes, viewQuery) {\n // TODO(misko): reading `ngPrivateData` here is problematic for two reasons\n // 1. It is a megamorphic call on each invocation.\n // 2. For nested embedded views (ngFor inside ngFor) the template instance is per\n // outer template invocation, which means that no such property will exist\n // Correct solution is to only put `ngPrivateData` on the Component template\n // and not on embedded templates.\n return templateFn.ngPrivateData ||\n (templateFn.ngPrivateData =\n createTView(-1, templateFn, consts, vars, directives, pipes, viewQuery));\n}\n/**\n * Creates a TView instance\n *\n * @param viewIndex The viewBlockId for inline views, or -1 if it's a component/dynamic\n * @param templateFn Template function\n * @param consts The number of nodes, local refs, and pipes in this template\n * @param directives Registry of directives for this view\n * @param pipes Registry of pipes for this view\n */\nfunction createTView(viewIndex, templateFn, consts, vars, directives, pipes, viewQuery) {\n ngDevMode && ngDevMode.tView++;\n var bindingStartIndex = HEADER_OFFSET + consts;\n // This length does not yet contain host bindings from child directives because at this point,\n // we don't know which directives are active on this template. As soon as a directive is matched\n // that has a host binding, we will update the blueprint with that def's hostVars count.\n var initialViewLength = bindingStartIndex + vars;\n var blueprint = createViewBlueprint(bindingStartIndex, initialViewLength);\n return blueprint[TVIEW] = {\n id: viewIndex,\n blueprint: blueprint,\n template: templateFn,\n viewQuery: viewQuery,\n node: null,\n data: blueprint.slice(),\n childIndex: -1,\n bindingStartIndex: bindingStartIndex,\n expandoStartIndex: initialViewLength,\n expandoInstructions: null,\n firstTemplatePass: true,\n initHooks: null,\n checkHooks: null,\n contentHooks: null,\n contentCheckHooks: null,\n viewHooks: null,\n viewCheckHooks: null,\n destroyHooks: null,\n pipeDestroyHooks: null,\n cleanup: null,\n contentQueries: null,\n components: null,\n directiveRegistry: typeof directives === 'function' ? directives() : directives,\n pipeRegistry: typeof pipes === 'function' ? pipes() : pipes,\n firstChild: null,\n };\n}\nfunction createViewBlueprint(bindingStartIndex, initialViewLength) {\n var blueprint = new Array(initialViewLength)\n .fill(null, 0, bindingStartIndex)\n .fill(NO_CHANGE, bindingStartIndex);\n blueprint[CONTAINER_INDEX] = -1;\n blueprint[BINDING_INDEX] = bindingStartIndex;\n return blueprint;\n}\nfunction setUpAttributes(native, attrs) {\n var renderer = getLView()[RENDERER];\n var isProc = isProceduralRenderer(renderer);\n var i = 0;\n while (i < attrs.length) {\n var attrName = attrs[i++];\n if (typeof attrName == 'number') {\n if (attrName === 0 /* NamespaceURI */) {\n // Namespaced attributes\n var namespaceURI = attrs[i++];\n var attrName_1 = attrs[i++];\n var attrVal = attrs[i++];\n ngDevMode && ngDevMode.rendererSetAttribute++;\n isProc ?\n renderer\n .setAttribute(native, attrName_1, attrVal, namespaceURI) :\n native.setAttributeNS(namespaceURI, attrName_1, attrVal);\n }\n else {\n // All other `AttributeMarker`s are ignored here.\n break;\n }\n }\n else {\n /// attrName is string;\n var attrVal = attrs[i++];\n if (attrName !== NG_PROJECT_AS_ATTR_NAME) {\n // Standard attributes\n ngDevMode && ngDevMode.rendererSetAttribute++;\n if (isAnimationProp(attrName)) {\n if (isProc) {\n renderer.setProperty(native, attrName, attrVal);\n }\n }\n else {\n isProc ?\n renderer\n .setAttribute(native, attrName, attrVal) :\n native.setAttribute(attrName, attrVal);\n }\n }\n }\n }\n}\nfunction createError(text, token) {\n return new Error(\"Renderer: \" + text + \" [\" + stringify$1(token) + \"]\");\n}\n/**\n * Locates the host native element, used for bootstrapping existing nodes into rendering pipeline.\n *\n * @param elementOrSelector Render element or CSS selector to locate the element.\n */\nfunction locateHostElement(factory, elementOrSelector) {\n var defaultRenderer = factory.createRenderer(null, null);\n var rNode = typeof elementOrSelector === 'string' ?\n (isProceduralRenderer(defaultRenderer) ?\n defaultRenderer.selectRootElement(elementOrSelector) :\n defaultRenderer.querySelector(elementOrSelector)) :\n elementOrSelector;\n if (ngDevMode && !rNode) {\n if (typeof elementOrSelector === 'string') {\n throw createError('Host node with selector not found:', elementOrSelector);\n }\n else {\n throw createError('Host node is required:', elementOrSelector);\n }\n }\n return rNode;\n}\n/**\n * Adds an event listener to the current node.\n *\n * If an output exists on one of the node's directives, it also subscribes to the output\n * and saves the subscription for later cleanup.\n *\n * @param eventName Name of the event\n * @param listenerFn The function to be called when event emits\n * @param useCapture Whether or not to use capture in event listener.\n */\nfunction listener(eventName, listenerFn, useCapture) {\n if (useCapture === void 0) { useCapture = false; }\n var lView = getLView();\n var tNode = getPreviousOrParentTNode();\n var tView = lView[TVIEW];\n var firstTemplatePass = tView.firstTemplatePass;\n var tCleanup = firstTemplatePass && (tView.cleanup || (tView.cleanup = []));\n ngDevMode && assertNodeOfPossibleTypes(tNode, 3 /* Element */, 0 /* Container */, 4 /* ElementContainer */);\n // add native event listener - applicable to elements only\n if (tNode.type === 3 /* Element */) {\n var native = getNativeByTNode(tNode, lView);\n ngDevMode && ngDevMode.rendererAddEventListener++;\n var renderer = lView[RENDERER];\n var lCleanup = getCleanup(lView);\n var lCleanupIndex = lCleanup.length;\n var useCaptureOrSubIdx = useCapture;\n // In order to match current behavior, native DOM event listeners must be added for all\n // events (including outputs).\n if (isProceduralRenderer(renderer)) {\n var cleanupFn = renderer.listen(native, eventName, listenerFn);\n lCleanup.push(listenerFn, cleanupFn);\n useCaptureOrSubIdx = lCleanupIndex + 1;\n }\n else {\n var wrappedListener = wrapListenerWithPreventDefault(listenerFn);\n native.addEventListener(eventName, wrappedListener, useCapture);\n lCleanup.push(wrappedListener);\n }\n tCleanup && tCleanup.push(eventName, tNode.index, lCleanupIndex, useCaptureOrSubIdx);\n }\n // subscribe to directive outputs\n if (tNode.outputs === undefined) {\n // if we create TNode here, inputs must be undefined so we know they still need to be\n // checked\n tNode.outputs = generatePropertyAliases(tNode, 1 /* Output */);\n }\n var outputs = tNode.outputs;\n var props;\n if (outputs && (props = outputs[eventName])) {\n var propsLength = props.length;\n if (propsLength) {\n var lCleanup = getCleanup(lView);\n for (var i = 0; i < propsLength; i += 2) {\n ngDevMode && assertDataInRange(lView, props[i]);\n var subscription = lView[props[i]][props[i + 1]].subscribe(listenerFn);\n var idx = lCleanup.length;\n lCleanup.push(listenerFn, subscription);\n tCleanup && tCleanup.push(eventName, tNode.index, idx, -(idx + 1));\n }\n }\n }\n}\n/**\n * Saves context for this cleanup function in LView.cleanupInstances.\n *\n * On the first template pass, saves in TView:\n * - Cleanup function\n * - Index of context we just saved in LView.cleanupInstances\n */\nfunction storeCleanupWithContext(lView, context, cleanupFn) {\n var lCleanup = getCleanup(lView);\n lCleanup.push(context);\n if (lView[TVIEW].firstTemplatePass) {\n getTViewCleanup(lView).push(cleanupFn, lCleanup.length - 1);\n }\n}\n/**\n * Saves the cleanup function itself in LView.cleanupInstances.\n *\n * This is necessary for functions that are wrapped with their contexts, like in renderer2\n * listeners.\n *\n * On the first template pass, the index of the cleanup function is saved in TView.\n */\nfunction storeCleanupFn(view, cleanupFn) {\n getCleanup(view).push(cleanupFn);\n if (view[TVIEW].firstTemplatePass) {\n getTViewCleanup(view).push(view[CLEANUP].length - 1, null);\n }\n}\n/** Mark the end of the element. */\nfunction elementEnd() {\n var previousOrParentTNode = getPreviousOrParentTNode();\n if (getIsParent()) {\n setIsParent(false);\n }\n else {\n ngDevMode && assertHasParent(getPreviousOrParentTNode());\n previousOrParentTNode = previousOrParentTNode.parent;\n setPreviousOrParentTNode(previousOrParentTNode);\n }\n ngDevMode && assertNodeType(previousOrParentTNode, 3 /* Element */);\n var lView = getLView();\n var currentQueries = lView[QUERIES];\n if (currentQueries) {\n lView[QUERIES] = currentQueries.addNode(previousOrParentTNode);\n }\n queueLifecycleHooks(getLView()[TVIEW], previousOrParentTNode);\n decreaseElementDepthCount();\n // this is fired at the end of elementEnd because ALL of the stylingBindings code\n // (for directives and the template) have now executed which means the styling\n // context can be instantiated properly.\n if (hasClassInput(previousOrParentTNode)) {\n var stylingContext = getStylingContext(previousOrParentTNode.index, lView);\n setInputsForProperty(lView, previousOrParentTNode.inputs['class'], getInitialClassNameValue(stylingContext));\n }\n}\n/**\n * Updates the value of removes an attribute on an Element.\n *\n * @param number index The index of the element in the data array\n * @param name name The name of the attribute.\n * @param value value The attribute is removed when value is `null` or `undefined`.\n * Otherwise the attribute value is set to the stringified value.\n * @param sanitizer An optional function used to sanitize the value.\n */\nfunction elementAttribute(index, name, value, sanitizer) {\n if (value !== NO_CHANGE) {\n var lView = getLView();\n var renderer = lView[RENDERER];\n var element_1 = getNativeByIndex(index, lView);\n if (value == null) {\n ngDevMode && ngDevMode.rendererRemoveAttribute++;\n isProceduralRenderer(renderer) ? renderer.removeAttribute(element_1, name) :\n element_1.removeAttribute(name);\n }\n else {\n ngDevMode && ngDevMode.rendererSetAttribute++;\n var strValue = sanitizer == null ? stringify$1(value) : sanitizer(value);\n isProceduralRenderer(renderer) ? renderer.setAttribute(element_1, name, strValue) :\n element_1.setAttribute(name, strValue);\n }\n }\n}\n/**\n * Update a property on an element.\n *\n * If the property name also exists as an input property on one of the element's directives,\n * the component property will be set instead of the element property. This check must\n * be conducted at runtime so child components that add new @Inputs don't have to be re-compiled.\n *\n * @param index The index of the element to update in the data array\n * @param propName Name of property. Because it is going to DOM, this is not subject to\n * renaming as part of minification.\n * @param value New value to write.\n * @param sanitizer An optional function used to sanitize the value.\n * @param nativeOnly Whether or not we should only set native properties and skip input check\n * (this is necessary for host property bindings)\n */\nfunction elementProperty(index, propName, value, sanitizer, nativeOnly) {\n elementPropertyInternal(index, propName, value, sanitizer, nativeOnly);\n}\n/**\n * Updates a synthetic host binding (e.g. `[@foo]`) on a component.\n *\n * This instruction is for compatibility purposes and is designed to ensure that a\n * synthetic host binding (e.g. `@HostBinding('@foo')`) properly gets rendered in\n * the component's renderer. Normally all host bindings are evaluated with the parent\n * component's renderer, but, in the case of animation @triggers, they need to be\n * evaluated with the sub components renderer (because that's where the animation\n * triggers are defined).\n *\n * Do not use this instruction as a replacement for `elementProperty`. This instruction\n * only exists to ensure compatibility with the ViewEngine's host binding behavior.\n *\n * @param index The index of the element to update in the data array\n * @param propName Name of property. Because it is going to DOM, this is not subject to\n * renaming as part of minification.\n * @param value New value to write.\n * @param sanitizer An optional function used to sanitize the value.\n * @param nativeOnly Whether or not we should only set native properties and skip input check\n * (this is necessary for host property bindings)\n */\nfunction componentHostSyntheticProperty(index, propName, value, sanitizer, nativeOnly) {\n elementPropertyInternal(index, propName, value, sanitizer, nativeOnly, loadComponentRenderer);\n}\nfunction loadComponentRenderer(tNode, lView) {\n var componentLView = lView[tNode.index];\n return componentLView[RENDERER];\n}\nfunction elementPropertyInternal(index, propName, value, sanitizer, nativeOnly, loadRendererFn) {\n if (value === NO_CHANGE)\n return;\n var lView = getLView();\n var element = getNativeByIndex(index, lView);\n var tNode = getTNode(index, lView);\n var inputData;\n var dataValue;\n if (!nativeOnly && (inputData = initializeTNodeInputs(tNode)) &&\n (dataValue = inputData[propName])) {\n setInputsForProperty(lView, dataValue, value);\n if (isComponent(tNode))\n markDirtyIfOnPush(lView, index + HEADER_OFFSET);\n if (ngDevMode) {\n if (tNode.type === 3 /* Element */ || tNode.type === 0 /* Container */) {\n setNgReflectProperties(lView, element, tNode.type, dataValue, value);\n }\n }\n }\n else if (tNode.type === 3 /* Element */) {\n var renderer = loadRendererFn ? loadRendererFn(tNode, lView) : lView[RENDERER];\n // It is assumed that the sanitizer is only added when the compiler determines that the property\n // is risky, so sanitization can be done without further checks.\n value = sanitizer != null ? sanitizer(value) : value;\n ngDevMode && ngDevMode.rendererSetProperty++;\n if (isProceduralRenderer(renderer)) {\n renderer.setProperty(element, propName, value);\n }\n else if (!isAnimationProp(propName)) {\n element.setProperty ? element.setProperty(propName, value) :\n element[propName] = value;\n }\n }\n}\n/**\n * Constructs a TNode object from the arguments.\n *\n * @param type The type of the node\n * @param adjustedIndex The index of the TNode in TView.data, adjusted for HEADER_OFFSET\n * @param tagName The tag name of the node\n * @param attrs The attributes defined on this node\n * @param tViews Any TViews attached to this node\n * @returns the TNode object\n */\nfunction createTNode(lView, type, adjustedIndex, tagName, attrs, tViews) {\n var previousOrParentTNode = getPreviousOrParentTNode();\n ngDevMode && ngDevMode.tNode++;\n var parent = getIsParent() ? previousOrParentTNode : previousOrParentTNode && previousOrParentTNode.parent;\n // Parents cannot cross component boundaries because components will be used in multiple places,\n // so it's only set if the view is the same.\n var parentInSameView = parent && lView && parent !== lView[HOST_NODE];\n var tParent = parentInSameView ? parent : null;\n return {\n type: type,\n index: adjustedIndex,\n injectorIndex: tParent ? tParent.injectorIndex : -1,\n directiveStart: -1,\n directiveEnd: -1,\n flags: 0,\n providerIndexes: 0,\n tagName: tagName,\n attrs: attrs,\n localNames: null,\n initialInputs: undefined,\n inputs: undefined,\n outputs: undefined,\n tViews: tViews,\n next: null,\n child: null,\n parent: tParent,\n detached: null,\n stylingTemplate: null,\n projection: null\n };\n}\n/**\n * Given a list of directive indices and minified input names, sets the\n * input properties on the corresponding directives.\n */\nfunction setInputsForProperty(lView, inputs, value) {\n for (var i = 0; i < inputs.length; i += 2) {\n ngDevMode && assertDataInRange(lView, inputs[i]);\n lView[inputs[i]][inputs[i + 1]] = value;\n }\n}\nfunction setNgReflectProperties(lView, element, type, inputs, value) {\n var _a;\n for (var i = 0; i < inputs.length; i += 2) {\n var renderer = lView[RENDERER];\n var attrName = normalizeDebugBindingName(inputs[i + 1]);\n var debugValue = normalizeDebugBindingValue(value);\n if (type === 3 /* Element */) {\n isProceduralRenderer(renderer) ?\n renderer.setAttribute(element, attrName, debugValue) :\n element.setAttribute(attrName, debugValue);\n }\n else if (value !== undefined) {\n var value_1 = \"bindings=\" + JSON.stringify((_a = {}, _a[attrName] = debugValue, _a), null, 2);\n if (isProceduralRenderer(renderer)) {\n renderer.setValue(element, value_1);\n }\n else {\n element.textContent = value_1;\n }\n }\n }\n}\n/**\n * Consolidates all inputs or outputs of all directives on this logical node.\n *\n * @param tNodeFlags node flags\n * @param direction whether to consider inputs or outputs\n * @returns PropertyAliases|null aggregate of all properties if any, `null` otherwise\n */\nfunction generatePropertyAliases(tNode, direction) {\n var tView = getLView()[TVIEW];\n var propStore = null;\n var start = tNode.directiveStart;\n var end = tNode.directiveEnd;\n if (end > start) {\n var isInput = direction === 0 /* Input */;\n var defs = tView.data;\n for (var i = start; i < end; i++) {\n var directiveDef = defs[i];\n var propertyAliasMap = isInput ? directiveDef.inputs : directiveDef.outputs;\n for (var publicName in propertyAliasMap) {\n if (propertyAliasMap.hasOwnProperty(publicName)) {\n propStore = propStore || {};\n var internalName = propertyAliasMap[publicName];\n var hasProperty = propStore.hasOwnProperty(publicName);\n hasProperty ? propStore[publicName].push(i, internalName) :\n (propStore[publicName] = [i, internalName]);\n }\n }\n }\n }\n return propStore;\n}\n/**\n * Assign any inline style values to the element during creation mode.\n *\n * This instruction is meant to be called during creation mode to register all\n * dynamic style and class bindings on the element. Note for static values (no binding)\n * see `elementStart` and `elementHostAttrs`.\n *\n * @param classBindingNames An array containing bindable class names.\n * The `elementClassProp` refers to the class name by index in this array.\n * (i.e. `['foo', 'bar']` means `foo=0` and `bar=1`).\n * @param styleBindingNames An array containing bindable style properties.\n * The `elementStyleProp` refers to the class name by index in this array.\n * (i.e. `['width', 'height']` means `width=0` and `height=1`).\n * @param styleSanitizer An optional sanitizer function that will be used to sanitize any CSS\n * property values that are applied to the element (during rendering).\n * Note that the sanitizer instance itself is tied to the `directive` (if provided).\n * @param directive A directive instance the styling is associated with. If not provided\n * current view's controller instance is assumed.\n *\n * @publicApi\n */\nfunction elementStyling(classBindingNames, styleBindingNames, styleSanitizer, directive) {\n var tNode = getPreviousOrParentTNode();\n if (!tNode.stylingTemplate) {\n tNode.stylingTemplate = createEmptyStylingContext();\n }\n updateContextWithBindings(tNode.stylingTemplate, directive || null, classBindingNames, styleBindingNames, styleSanitizer, hasClassInput(tNode));\n}\n/**\n * Assign static styling values to a host element.\n *\n * NOTE: This instruction is meant to used from `hostBindings` function only.\n *\n * @param directive A directive instance the styling is associated with.\n * @param attrs An array containing class and styling information. The values must be marked with\n * `AttributeMarker`.\n *\n * ```\n * var attrs = [AttributeMarker.Classes, 'foo', 'bar',\n * AttributeMarker.Styles, 'width', '100px', 'height, '200px']\n * elementHostAttrs(directive, attrs);\n * ```\n *\n * @publicApi\n */\nfunction elementHostAttrs(directive, attrs) {\n var tNode = getPreviousOrParentTNode();\n if (!tNode.stylingTemplate) {\n tNode.stylingTemplate = initializeStaticContext(attrs);\n }\n patchContextWithStaticAttrs(tNode.stylingTemplate, attrs, directive);\n}\n/**\n * Apply styling binding to the element.\n *\n * This instruction is meant to be run after `elementStyle` and/or `elementStyleProp`.\n * if any styling bindings have changed then the changes are flushed to the element.\n *\n *\n * @param index Index of the element's with which styling is associated.\n * @param directive Directive instance that is attempting to change styling. (Defaults to the\n * component of the current view).\ncomponents\n *\n * @publicApi\n */\nfunction elementStylingApply(index, directive) {\n var lView = getLView();\n var isFirstRender = (lView[FLAGS] & 2 /* FirstLViewPass */) !== 0;\n var totalPlayersQueued = renderStyling(getStylingContext(index + HEADER_OFFSET, lView), lView[RENDERER], lView, isFirstRender, null, null, directive);\n if (totalPlayersQueued > 0) {\n var rootContext = getRootContext(lView);\n scheduleTick(rootContext, 2 /* FlushPlayers */);\n }\n}\n/**\n * Update a style bindings value on an element.\n *\n * If the style value is `null` then it will be removed from the element\n * (or assigned a different value depending if there are any styles placed\n * on the element with `elementStyle` or any styles that are present\n * from when the element was created (with `elementStyling`).\n *\n * (Note that the styling element is updated as part of `elementStylingApply`.)\n *\n * @param index Index of the element's with which styling is associated.\n * @param styleIndex Index of style to update. This index value refers to the\n * index of the style in the style bindings array that was passed into\n * `elementStlyingBindings`.\n * @param value New value to write (null to remove). Note that if a directive also\n * attempts to write to the same binding value then it will only be able to\n * do so if the template binding value is `null` (or doesn't exist at all).\n * @param suffix Optional suffix. Used with scalar values to add unit such as `px`.\n * Note that when a suffix is provided then the underlying sanitizer will\n * be ignored.\n * @param directive Directive instance that is attempting to change styling. (Defaults to the\n * component of the current view).\ncomponents\n *\n * @publicApi\n */\nfunction elementStyleProp(index, styleIndex, value, suffix, directive) {\n var valueToAdd = null;\n if (value !== null) {\n if (suffix) {\n // when a suffix is applied then it will bypass\n // sanitization entirely (b/c a new string is created)\n valueToAdd = stringify$1(value) + suffix;\n }\n else {\n // sanitization happens by dealing with a String value\n // this means that the string value will be passed through\n // into the style rendering later (which is where the value\n // will be sanitized before it is applied)\n valueToAdd = value;\n }\n }\n updateStyleProp(getStylingContext(index + HEADER_OFFSET, getLView()), styleIndex, valueToAdd, directive);\n}\n/**\n * Add or remove a class via a class binding on a DOM element.\n *\n * This instruction is meant to handle the [class.foo]=\"exp\" case and, therefore,\n * the class itself must already be applied using `elementStyling` within\n * the creation block.\n *\n * @param index Index of the element's with which styling is associated.\n * @param classIndex Index of class to toggle. This index value refers to the\n * index of the class in the class bindings array that was passed into\n * `elementStlyingBindings` (which is meant to be called before this\n * function is).\n * @param value A true/false value which will turn the class on or off.\n * @param directive Directive instance that is attempting to change styling. (Defaults to the\n * component of the current view).\ncomponents\n *\n * @publicApi\n */\nfunction elementClassProp(index, classIndex, value, directive) {\n var onOrOffClassValue = (value instanceof BoundPlayerFactory) ? value : (!!value);\n updateClassProp(getStylingContext(index + HEADER_OFFSET, getLView()), classIndex, onOrOffClassValue, directive);\n}\n/**\n * Update style and/or class bindings using object literal.\n *\n * This instruction is meant apply styling via the `[style]=\"exp\"` and `[class]=\"exp\"` template\n * bindings. When styles are applied to the Element they will then be placed with respect to\n * any styles set with `elementStyleProp`. If any styles are set to `null` then they will be\n * removed from the element.\n *\n * (Note that the styling instruction will not be applied until `elementStylingApply` is called.)\n *\n * @param index Index of the element's with which styling is associated.\n * @param classes A key/value style map of CSS classes that will be added to the given element.\n * Any missing classes (that have already been applied to the element beforehand) will be\n * removed (unset) from the element's list of CSS classes.\n * @param styles A key/value style map of the styles that will be applied to the given element.\n * Any missing styles (that have already been applied to the element beforehand) will be\n * removed (unset) from the element's styling.\n * @param directive Directive instance that is attempting to change styling. (Defaults to the\n * component of the current view).\n *\n * @publicApi\n */\nfunction elementStylingMap(index, classes, styles, directive) {\n if (directive != undefined)\n return hackImplementationOfElementStylingMap(index, classes, styles, directive); // supported in next PR\n var lView = getLView();\n var tNode = getTNode(index, lView);\n var stylingContext = getStylingContext(index + HEADER_OFFSET, lView);\n if (hasClassInput(tNode) && classes !== NO_CHANGE) {\n var initialClasses = getInitialClassNameValue(stylingContext);\n var classInputVal = (initialClasses.length ? (initialClasses + ' ') : '') + classes;\n setInputsForProperty(lView, tNode.inputs['class'], classInputVal);\n }\n else {\n updateStylingMap(stylingContext, classes, styles);\n }\n}\n/* START OF HACK BLOCK */\nfunction hackImplementationOfElementStylingMap(index, classes, styles, directive) {\n throw new Error('unimplemented. Should not be needed by ViewEngine compatibility');\n}\n/* END OF HACK BLOCK */\n//////////////////////////\n//// Text\n//////////////////////////\n/**\n * Create static text node\n *\n * @param index Index of the node in the data array\n * @param value Value to write. This value will be stringified.\n */\nfunction text(index, value) {\n var lView = getLView();\n ngDevMode && assertEqual(lView[BINDING_INDEX], lView[TVIEW].bindingStartIndex, 'text nodes should be created before any bindings');\n ngDevMode && ngDevMode.rendererCreateTextNode++;\n var textNative = createTextNode(value, lView[RENDERER]);\n var tNode = createNodeAtIndex(index, 3 /* Element */, textNative, null, null);\n // Text nodes are self closing.\n setIsParent(false);\n appendChild(textNative, tNode, lView);\n}\n/**\n * Create text node with binding\n * Bindings should be handled externally with the proper interpolation(1-8) method\n *\n * @param index Index of the node in the data array.\n * @param value Stringified value to write.\n */\nfunction textBinding(index, value) {\n if (value !== NO_CHANGE) {\n var lView = getLView();\n ngDevMode && assertDataInRange(lView, index + HEADER_OFFSET);\n var element_2 = getNativeByIndex(index, lView);\n ngDevMode && assertDefined(element_2, 'native element should exist');\n ngDevMode && ngDevMode.rendererSetText++;\n var renderer = lView[RENDERER];\n isProceduralRenderer(renderer) ? renderer.setValue(element_2, stringify$1(value)) :\n element_2.textContent = stringify$1(value);\n }\n}\n//////////////////////////\n//// Directive\n//////////////////////////\n/**\n * Instantiate a root component.\n */\nfunction instantiateRootComponent(tView, viewData, def) {\n var rootTNode = getPreviousOrParentTNode();\n if (tView.firstTemplatePass) {\n if (def.providersResolver)\n def.providersResolver(def);\n generateExpandoInstructionBlock(tView, rootTNode, 1);\n baseResolveDirective(tView, viewData, def, def.factory);\n }\n var directive = getNodeInjectable(tView.data, viewData, viewData.length - 1, rootTNode);\n postProcessBaseDirective(viewData, rootTNode, directive, def);\n return directive;\n}\n/**\n * Resolve the matched directives on a node.\n */\nfunction resolveDirectives(tView, viewData, directives, tNode, localRefs) {\n // Please make sure to have explicit type for `exportsMap`. Inferred type triggers bug in tsickle.\n ngDevMode && assertEqual(getFirstTemplatePass(), true, 'should run on first template pass only');\n var exportsMap = localRefs ? { '': -1 } : null;\n if (directives) {\n initNodeFlags(tNode, tView.data.length, directives.length);\n // When the same token is provided by several directives on the same node, some rules apply in\n // the viewEngine:\n // - viewProviders have priority over providers\n // - the last directive in NgModule.declarations has priority over the previous one\n // So to match these rules, the order in which providers are added in the arrays is very\n // important.\n for (var i = 0; i < directives.length; i++) {\n var def = directives[i];\n if (def.providersResolver)\n def.providersResolver(def);\n }\n generateExpandoInstructionBlock(tView, tNode, directives.length);\n for (var i = 0; i < directives.length; i++) {\n var def = directives[i];\n var directiveDefIdx = tView.data.length;\n baseResolveDirective(tView, viewData, def, def.factory);\n saveNameToExportMap(tView.data.length - 1, def, exportsMap);\n // Init hooks are queued now so ngOnInit is called in host components before\n // any projected components.\n queueInitHooks(directiveDefIdx, def.onInit, def.doCheck, tView);\n }\n }\n if (exportsMap)\n cacheMatchingLocalNames(tNode, localRefs, exportsMap);\n}\n/**\n * Instantiate all the directives that were previously resolved on the current node.\n */\nfunction instantiateAllDirectives(tView, lView, tNode) {\n var start = tNode.directiveStart;\n var end = tNode.directiveEnd;\n if (!getFirstTemplatePass() && start < end) {\n getOrCreateNodeInjectorForNode(tNode, lView);\n }\n for (var i = start; i < end; i++) {\n var def = tView.data[i];\n if (isComponentDef(def)) {\n addComponentLogic(lView, tNode, def);\n }\n var directive = getNodeInjectable(tView.data, lView, i, tNode);\n postProcessDirective(lView, directive, def, i);\n }\n}\nfunction invokeDirectivesHostBindings(tView, viewData, tNode) {\n var start = tNode.directiveStart;\n var end = tNode.directiveEnd;\n var expando = tView.expandoInstructions;\n var firstTemplatePass = getFirstTemplatePass();\n for (var i = start; i < end; i++) {\n var def = tView.data[i];\n var directive = viewData[i];\n if (def.hostBindings) {\n var previousExpandoLength = expando.length;\n setCurrentDirectiveDef(def);\n def.hostBindings(1 /* Create */, directive, tNode.index - HEADER_OFFSET);\n setCurrentDirectiveDef(null);\n // `hostBindings` function may or may not contain `allocHostVars` call\n // (e.g. it may not if it only contains host listeners), so we need to check whether\n // `expandoInstructions` has changed and if not - we still push `hostBindings` to\n // expando block, to make sure we execute it for DI cycle\n if (previousExpandoLength === expando.length && firstTemplatePass) {\n expando.push(def.hostBindings);\n }\n }\n else if (firstTemplatePass) {\n expando.push(null);\n }\n }\n}\n/**\n* Generates a new block in TView.expandoInstructions for this node.\n*\n* Each expando block starts with the element index (turned negative so we can distinguish\n* it from the hostVar count) and the directive count. See more in VIEW_DATA.md.\n*/\nfunction generateExpandoInstructionBlock(tView, tNode, directiveCount) {\n ngDevMode && assertEqual(tView.firstTemplatePass, true, 'Expando block should only be generated on first template pass.');\n var elementIndex = -(tNode.index - HEADER_OFFSET);\n var providerStartIndex = tNode.providerIndexes & 65535 /* ProvidersStartIndexMask */;\n var providerCount = tView.data.length - providerStartIndex;\n (tView.expandoInstructions || (tView.expandoInstructions = [])).push(elementIndex, providerCount, directiveCount);\n}\n/**\n* On the first template pass, we need to reserve space for host binding values\n* after directives are matched (so all directives are saved, then bindings).\n* Because we are updating the blueprint, we only need to do this once.\n*/\nfunction prefillHostVars(tView, lView, totalHostVars) {\n ngDevMode &&\n assertEqual(getFirstTemplatePass(), true, 'Should only be called in first template pass.');\n for (var i = 0; i < totalHostVars; i++) {\n lView.push(NO_CHANGE);\n tView.blueprint.push(NO_CHANGE);\n tView.data.push(null);\n }\n}\n/**\n * Process a directive on the current node after its creation.\n */\nfunction postProcessDirective(viewData, directive, def, directiveDefIdx) {\n var previousOrParentTNode = getPreviousOrParentTNode();\n postProcessBaseDirective(viewData, previousOrParentTNode, directive, def);\n ngDevMode && assertDefined(previousOrParentTNode, 'previousOrParentTNode');\n if (previousOrParentTNode && previousOrParentTNode.attrs) {\n setInputsFromAttrs(directiveDefIdx, directive, def.inputs, previousOrParentTNode);\n }\n if (def.contentQueries) {\n def.contentQueries(directiveDefIdx);\n }\n if (isComponentDef(def)) {\n var componentView = getComponentViewByIndex(previousOrParentTNode.index, viewData);\n componentView[CONTEXT] = directive;\n }\n}\n/**\n * A lighter version of postProcessDirective() that is used for the root component.\n */\nfunction postProcessBaseDirective(lView, previousOrParentTNode, directive, def) {\n var native = getNativeByTNode(previousOrParentTNode, lView);\n ngDevMode && assertEqual(lView[BINDING_INDEX], lView[TVIEW].bindingStartIndex, 'directives should be created before any bindings');\n ngDevMode && assertPreviousIsParent(getIsParent());\n attachPatchData(directive, lView);\n if (native) {\n attachPatchData(native, lView);\n }\n // TODO(misko): setUpAttributes should be a feature for better treeshakability.\n if (def.attributes != null && previousOrParentTNode.type == 3 /* Element */) {\n setUpAttributes(native, def.attributes);\n }\n}\n/**\n* Matches the current node against all available selectors.\n* If a component is matched (at most one), it is returned in first position in the array.\n*/\nfunction findDirectiveMatches(tView, viewData, tNode) {\n ngDevMode && assertEqual(getFirstTemplatePass(), true, 'should run on first template pass only');\n var registry = tView.directiveRegistry;\n var matches = null;\n if (registry) {\n for (var i = 0; i < registry.length; i++) {\n var def = registry[i];\n if (isNodeMatchingSelectorList(tNode, def.selectors, /* isProjectionMode */ false)) {\n matches || (matches = []);\n diPublicInInjector(getOrCreateNodeInjectorForNode(getPreviousOrParentTNode(), viewData), viewData, def.type);\n if (isComponentDef(def)) {\n if (tNode.flags & 1 /* isComponent */)\n throwMultipleComponentError(tNode);\n tNode.flags = 1 /* isComponent */;\n // The component is always stored first with directives after.\n matches.unshift(def);\n }\n else {\n matches.push(def);\n }\n }\n }\n }\n return matches;\n}\n/** Stores index of component's host element so it will be queued for view refresh during CD. */\nfunction queueComponentIndexForCheck(previousOrParentTNode) {\n ngDevMode &&\n assertEqual(getFirstTemplatePass(), true, 'Should only be called in first template pass.');\n var tView = getLView()[TVIEW];\n (tView.components || (tView.components = [])).push(previousOrParentTNode.index);\n}\n/**\n * Stores host binding fn and number of host vars so it will be queued for binding refresh during\n * CD.\n*/\nfunction queueHostBindingForCheck(tView, def, hostVars) {\n ngDevMode &&\n assertEqual(getFirstTemplatePass(), true, 'Should only be called in first template pass.');\n var expando = tView.expandoInstructions;\n var length = expando.length;\n // Check whether a given `hostBindings` function already exists in expandoInstructions,\n // which can happen in case directive definition was extended from base definition (as a part of\n // the `InheritDefinitionFeature` logic). If we found the same `hostBindings` function in the\n // list, we just increase the number of host vars associated with that function, but do not add it\n // into the list again.\n if (length >= 2 && expando[length - 2] === def.hostBindings) {\n expando[length - 1] = expando[length - 1] + hostVars;\n }\n else {\n expando.push(def.hostBindings, hostVars);\n }\n}\n/** Caches local names and their matching directive indices for query and template lookups. */\nfunction cacheMatchingLocalNames(tNode, localRefs, exportsMap) {\n if (localRefs) {\n var localNames = tNode.localNames = [];\n // Local names must be stored in tNode in the same order that localRefs are defined\n // in the template to ensure the data is loaded in the same slots as their refs\n // in the template (for template queries).\n for (var i = 0; i < localRefs.length; i += 2) {\n var index = exportsMap[localRefs[i + 1]];\n if (index == null)\n throw new Error(\"Export of name '\" + localRefs[i + 1] + \"' not found!\");\n localNames.push(localRefs[i], index);\n }\n }\n}\n/**\n* Builds up an export map as directives are created, so local refs can be quickly mapped\n* to their directive instances.\n*/\nfunction saveNameToExportMap(index, def, exportsMap) {\n if (exportsMap) {\n if (def.exportAs)\n exportsMap[def.exportAs] = index;\n if (def.template)\n exportsMap[''] = index;\n }\n}\n/**\n * Initializes the flags on the current node, setting all indices to the initial index,\n * the directive count to 0, and adding the isComponent flag.\n * @param index the initial index\n */\nfunction initNodeFlags(tNode, index, numberOfDirectives) {\n ngDevMode && assertEqual(getFirstTemplatePass(), true, 'expected firstTemplatePass to be true');\n var flags = tNode.flags;\n ngDevMode && assertEqual(flags === 0 || flags === 1 /* isComponent */, true, 'expected node flags to not be initialized');\n ngDevMode && assertNotEqual(numberOfDirectives, tNode.directiveEnd - tNode.directiveStart, 'Reached the max number of directives');\n // When the first directive is created on a node, save the index\n tNode.flags = flags & 1 /* isComponent */;\n tNode.directiveStart = index;\n tNode.directiveEnd = index + numberOfDirectives;\n tNode.providerIndexes = index;\n}\nfunction baseResolveDirective(tView, viewData, def, directiveFactory) {\n tView.data.push(def);\n var nodeInjectorFactory = new NodeInjectorFactory(directiveFactory, isComponentDef(def), null);\n tView.blueprint.push(nodeInjectorFactory);\n viewData.push(nodeInjectorFactory);\n}\nfunction addComponentLogic(lView, previousOrParentTNode, def) {\n var native = getNativeByTNode(previousOrParentTNode, lView);\n var tView = getOrCreateTView(def.template, def.consts, def.vars, def.directiveDefs, def.pipeDefs, def.viewQuery);\n // Only component views should be added to the view tree directly. Embedded views are\n // accessed through their containers because they may be removed / re-added later.\n var rendererFactory = lView[RENDERER_FACTORY];\n var componentView = addToViewTree(lView, previousOrParentTNode.index, createLView(lView, tView, null, def.onPush ? 8 /* Dirty */ : 4 /* CheckAlways */, rendererFactory, lView[RENDERER_FACTORY].createRenderer(native, def)));\n componentView[HOST_NODE] = previousOrParentTNode;\n // Component view will always be created before any injected LContainers,\n // so this is a regular element, wrap it with the component view\n componentView[HOST] = lView[previousOrParentTNode.index];\n lView[previousOrParentTNode.index] = componentView;\n if (getFirstTemplatePass()) {\n queueComponentIndexForCheck(previousOrParentTNode);\n }\n}\n/**\n * Sets initial input properties on directive instances from attribute data\n *\n * @param directiveIndex Index of the directive in directives array\n * @param instance Instance of the directive on which to set the initial inputs\n * @param inputs The list of inputs from the directive def\n * @param tNode The static data for this node\n */\nfunction setInputsFromAttrs(directiveIndex, instance, inputs, tNode) {\n var initialInputData = tNode.initialInputs;\n if (initialInputData === undefined || directiveIndex >= initialInputData.length) {\n initialInputData = generateInitialInputs(directiveIndex, inputs, tNode);\n }\n var initialInputs = initialInputData[directiveIndex];\n if (initialInputs) {\n for (var i = 0; i < initialInputs.length; i += 2) {\n instance[initialInputs[i]] = initialInputs[i + 1];\n }\n }\n}\n/**\n * Generates initialInputData for a node and stores it in the template's static storage\n * so subsequent template invocations don't have to recalculate it.\n *\n * initialInputData is an array containing values that need to be set as input properties\n * for directives on this node, but only once on creation. We need this array to support\n * the case where you set an @Input property of a directive using attribute-like syntax.\n * e.g. if you have a `name` @Input, you can set it once like this:\n *\n * \n *\n * @param directiveIndex Index to store the initial input data\n * @param inputs The list of inputs from the directive def\n * @param tNode The static data on this node\n */\nfunction generateInitialInputs(directiveIndex, inputs, tNode) {\n var initialInputData = tNode.initialInputs || (tNode.initialInputs = []);\n initialInputData[directiveIndex] = null;\n var attrs = tNode.attrs;\n var i = 0;\n while (i < attrs.length) {\n var attrName = attrs[i];\n if (attrName === 3 /* SelectOnly */)\n break;\n if (attrName === 0 /* NamespaceURI */) {\n // We do not allow inputs on namespaced attributes.\n i += 4;\n continue;\n }\n var minifiedInputName = inputs[attrName];\n var attrValue = attrs[i + 1];\n if (minifiedInputName !== undefined) {\n var inputsToStore = initialInputData[directiveIndex] || (initialInputData[directiveIndex] = []);\n inputsToStore.push(minifiedInputName, attrValue);\n }\n i += 2;\n }\n return initialInputData;\n}\n//////////////////////////\n//// ViewContainer & View\n//////////////////////////\n/**\n * Creates a LContainer, either from a container instruction, or for a ViewContainerRef.\n *\n * @param hostNative The host element for the LContainer\n * @param hostTNode The host TNode for the LContainer\n * @param currentView The parent view of the LContainer\n * @param native The native comment element\n * @param isForViewContainerRef Optional a flag indicating the ViewContainerRef case\n * @returns LContainer\n */\nfunction createLContainer(hostNative, hostTNode, currentView, native, isForViewContainerRef) {\n return [\n isForViewContainerRef ? -1 : 0,\n [],\n currentView,\n null,\n null,\n hostNative,\n native,\n getRenderParent(hostTNode, currentView) // renderParent\n ];\n}\n/**\n * Creates an LContainer for an ng-template (dynamically-inserted view), e.g.\n *\n * \n *
\n *
\n *\n * @param index The index of the container in the data array\n * @param templateFn Inline template\n * @param consts The number of nodes, local refs, and pipes for this template\n * @param vars The number of bindings for this template\n * @param tagName The name of the container element, if applicable\n * @param attrs The attrs attached to the container, if applicable\n * @param localRefs A set of local reference bindings on the element.\n * @param localRefExtractor A function which extracts local-refs values from the template.\n * Defaults to the current element associated with the local-ref.\n */\nfunction template(index, templateFn, consts, vars, tagName, attrs, localRefs, localRefExtractor) {\n var lView = getLView();\n var tView = lView[TVIEW];\n // TODO: consider a separate node type for templates\n var tNode = containerInternal(index, tagName || null, attrs || null);\n if (getFirstTemplatePass()) {\n tNode.tViews = createTView(-1, templateFn, consts, vars, tView.directiveRegistry, tView.pipeRegistry, null);\n }\n createDirectivesAndLocals(tView, lView, localRefs, localRefExtractor);\n var currentQueries = lView[QUERIES];\n var previousOrParentTNode = getPreviousOrParentTNode();\n var native = getNativeByTNode(previousOrParentTNode, lView);\n attachPatchData(native, lView);\n if (currentQueries) {\n lView[QUERIES] = currentQueries.addNode(previousOrParentTNode);\n }\n queueLifecycleHooks(tView, tNode);\n setIsParent(false);\n}\n/**\n * Creates an LContainer for inline views, e.g.\n *\n * % if (showing) {\n *
\n * % }\n *\n * @param index The index of the container in the data array\n */\nfunction container(index) {\n var tNode = containerInternal(index, null, null);\n getFirstTemplatePass() && (tNode.tViews = []);\n setIsParent(false);\n}\nfunction containerInternal(index, tagName, attrs) {\n var lView = getLView();\n ngDevMode && assertEqual(lView[BINDING_INDEX], lView[TVIEW].bindingStartIndex, 'container nodes should be created before any bindings');\n var adjustedIndex = index + HEADER_OFFSET;\n var comment = lView[RENDERER].createComment(ngDevMode ? 'container' : '');\n ngDevMode && ngDevMode.rendererCreateComment++;\n var tNode = createNodeAtIndex(index, 0 /* Container */, comment, tagName, attrs);\n var lContainer = lView[adjustedIndex] =\n createLContainer(lView[adjustedIndex], tNode, lView, comment);\n appendChild(comment, tNode, lView);\n // Containers are added to the current view tree instead of their embedded views\n // because views can be removed and re-inserted.\n addToViewTree(lView, index + HEADER_OFFSET, lContainer);\n var currentQueries = lView[QUERIES];\n if (currentQueries) {\n // prepare place for matching nodes from views inserted into a given container\n lContainer[QUERIES] = currentQueries.container();\n }\n ngDevMode && assertNodeType(getPreviousOrParentTNode(), 0 /* Container */);\n return tNode;\n}\n/**\n * Sets a container up to receive views.\n *\n * @param index The index of the container in the data array\n */\nfunction containerRefreshStart(index) {\n var lView = getLView();\n var tView = lView[TVIEW];\n var previousOrParentTNode = loadInternal(tView.data, index);\n setPreviousOrParentTNode(previousOrParentTNode);\n ngDevMode && assertNodeType(previousOrParentTNode, 0 /* Container */);\n setIsParent(true);\n lView[index + HEADER_OFFSET][ACTIVE_INDEX] = 0;\n // We need to execute init hooks here so ngOnInit hooks are called in top level views\n // before they are called in embedded views (for backwards compatibility).\n executeInitHooks(lView, tView, getCheckNoChangesMode());\n}\n/**\n * Marks the end of the LContainer.\n *\n * Marking the end of LContainer is the time when to child views get inserted or removed.\n */\nfunction containerRefreshEnd() {\n var previousOrParentTNode = getPreviousOrParentTNode();\n if (getIsParent()) {\n setIsParent(false);\n }\n else {\n ngDevMode && assertNodeType(previousOrParentTNode, 2 /* View */);\n ngDevMode && assertHasParent(previousOrParentTNode);\n previousOrParentTNode = previousOrParentTNode.parent;\n setPreviousOrParentTNode(previousOrParentTNode);\n }\n ngDevMode && assertNodeType(previousOrParentTNode, 0 /* Container */);\n var lContainer = getLView()[previousOrParentTNode.index];\n var nextIndex = lContainer[ACTIVE_INDEX];\n // remove extra views at the end of the container\n while (nextIndex < lContainer[VIEWS].length) {\n removeView(lContainer, previousOrParentTNode, nextIndex);\n }\n}\n/**\n * Goes over dynamic embedded views (ones created through ViewContainerRef APIs) and refreshes them\n * by executing an associated template function.\n */\nfunction refreshDynamicEmbeddedViews(lView) {\n for (var current = getLViewChild(lView); current !== null; current = current[NEXT]) {\n // Note: current can be an LView or an LContainer instance, but here we are only interested\n // in LContainer. We can tell it's an LContainer because its length is less than the LView\n // header.\n if (current.length < HEADER_OFFSET && current[ACTIVE_INDEX] === -1) {\n var container_1 = current;\n for (var i = 0; i < container_1[VIEWS].length; i++) {\n var dynamicViewData = container_1[VIEWS][i];\n // The directives and pipes are not needed here as an existing view is only being refreshed.\n ngDevMode && assertDefined(dynamicViewData[TVIEW], 'TView must be allocated');\n renderEmbeddedTemplate(dynamicViewData, dynamicViewData[TVIEW], dynamicViewData[CONTEXT]);\n }\n }\n }\n}\n/**\n * Looks for a view with a given view block id inside a provided LContainer.\n * Removes views that need to be deleted in the process.\n *\n * @param lContainer to search for views\n * @param tContainerNode to search for views\n * @param startIdx starting index in the views array to search from\n * @param viewBlockId exact view block id to look for\n * @returns index of a found view or -1 if not found\n */\nfunction scanForView(lContainer, tContainerNode, startIdx, viewBlockId) {\n var views = lContainer[VIEWS];\n for (var i = startIdx; i < views.length; i++) {\n var viewAtPositionId = views[i][TVIEW].id;\n if (viewAtPositionId === viewBlockId) {\n return views[i];\n }\n else if (viewAtPositionId < viewBlockId) {\n // found a view that should not be at this position - remove\n removeView(lContainer, tContainerNode, i);\n }\n else {\n // found a view with id greater than the one we are searching for\n // which means that required view doesn't exist and can't be found at\n // later positions in the views array - stop the searchdef.cont here\n break;\n }\n }\n return null;\n}\n/**\n * Marks the start of an embedded view.\n *\n * @param viewBlockId The ID of this view\n * @return boolean Whether or not this view is in creation mode\n */\nfunction embeddedViewStart(viewBlockId, consts, vars) {\n var lView = getLView();\n var previousOrParentTNode = getPreviousOrParentTNode();\n // The previous node can be a view node if we are processing an inline for loop\n var containerTNode = previousOrParentTNode.type === 2 /* View */ ?\n previousOrParentTNode.parent :\n previousOrParentTNode;\n var lContainer = lView[containerTNode.index];\n ngDevMode && assertNodeType(containerTNode, 0 /* Container */);\n var viewToRender = scanForView(lContainer, containerTNode, lContainer[ACTIVE_INDEX], viewBlockId);\n if (viewToRender) {\n setIsParent(true);\n enterView(viewToRender, viewToRender[TVIEW].node);\n }\n else {\n // When we create a new LView, we always reset the state of the instructions.\n viewToRender = createLView(lView, getOrCreateEmbeddedTView(viewBlockId, consts, vars, containerTNode), null, 4 /* CheckAlways */);\n if (lContainer[QUERIES]) {\n viewToRender[QUERIES] = lContainer[QUERIES].createView();\n }\n createViewNode(viewBlockId, viewToRender);\n enterView(viewToRender, viewToRender[TVIEW].node);\n }\n if (lContainer) {\n if (isCreationMode(viewToRender)) {\n // it is a new view, insert it into collection of views for a given container\n insertView(viewToRender, lContainer, lView, lContainer[ACTIVE_INDEX], -1);\n }\n lContainer[ACTIVE_INDEX]++;\n }\n return isCreationMode(viewToRender) ? 1 /* Create */ | 2 /* Update */ :\n 2 /* Update */;\n}\n/**\n * Initialize the TView (e.g. static data) for the active embedded view.\n *\n * Each embedded view block must create or retrieve its own TView. Otherwise, the embedded view's\n * static data for a particular node would overwrite the static data for a node in the view above\n * it with the same index (since it's in the same template).\n *\n * @param viewIndex The index of the TView in TNode.tViews\n * @param consts The number of nodes, local refs, and pipes in this template\n * @param vars The number of bindings and pure function bindings in this template\n * @param container The parent container in which to look for the view's static data\n * @returns TView\n */\nfunction getOrCreateEmbeddedTView(viewIndex, consts, vars, parent) {\n var tView = getLView()[TVIEW];\n ngDevMode && assertNodeType(parent, 0 /* Container */);\n var containerTViews = parent.tViews;\n ngDevMode && assertDefined(containerTViews, 'TView expected');\n ngDevMode && assertEqual(Array.isArray(containerTViews), true, 'TViews should be in an array');\n if (viewIndex >= containerTViews.length || containerTViews[viewIndex] == null) {\n containerTViews[viewIndex] = createTView(viewIndex, null, consts, vars, tView.directiveRegistry, tView.pipeRegistry, null);\n }\n return containerTViews[viewIndex];\n}\n/** Marks the end of an embedded view. */\nfunction embeddedViewEnd() {\n var lView = getLView();\n var viewHost = lView[HOST_NODE];\n if (isCreationMode(lView)) {\n refreshDescendantViews(lView); // creation mode pass\n lView[FLAGS] &= ~1 /* CreationMode */;\n }\n refreshDescendantViews(lView); // update mode pass\n leaveView(lView[PARENT]);\n setPreviousOrParentTNode(viewHost);\n setIsParent(false);\n}\n/////////////\n/**\n * Refreshes components by entering the component view and processing its bindings, queries, etc.\n *\n * @param adjustedElementIndex Element index in LView[] (adjusted for HEADER_OFFSET)\n */\nfunction componentRefresh(adjustedElementIndex) {\n var lView = getLView();\n ngDevMode && assertDataInRange(lView, adjustedElementIndex);\n var hostView = getComponentViewByIndex(adjustedElementIndex, lView);\n ngDevMode && assertNodeType(lView[TVIEW].data[adjustedElementIndex], 3 /* Element */);\n // Only attached CheckAlways components or attached, dirty OnPush components should be checked\n if (viewAttached(hostView) && hostView[FLAGS] & (4 /* CheckAlways */ | 8 /* Dirty */)) {\n syncViewWithBlueprint(hostView);\n checkView(hostView, hostView[CONTEXT]);\n }\n}\n/**\n * Syncs an LView instance with its blueprint if they have gotten out of sync.\n *\n * Typically, blueprints and their view instances should always be in sync, so the loop here\n * will be skipped. However, consider this case of two components side-by-side:\n *\n * App template:\n * ```\n * \n * \n * ```\n *\n * The following will happen:\n * 1. App template begins processing.\n * 2. First is matched as a component and its LView is created.\n * 3. Second is matched as a component and its LView is created.\n * 4. App template completes processing, so it's time to check child templates.\n * 5. First template is checked. It has a directive, so its def is pushed to blueprint.\n * 6. Second template is checked. Its blueprint has been updated by the first\n * template, but its LView was created before this update, so it is out of sync.\n *\n * Note that embedded views inside ngFor loops will never be out of sync because these views\n * are processed as soon as they are created.\n *\n * @param componentView The view to sync\n */\nfunction syncViewWithBlueprint(componentView) {\n var componentTView = componentView[TVIEW];\n for (var i = componentView.length; i < componentTView.blueprint.length; i++) {\n componentView[i] = componentTView.blueprint[i];\n }\n}\n/** Returns a boolean for whether the view is attached */\nfunction viewAttached(view) {\n return (view[FLAGS] & 16 /* Attached */) === 16 /* Attached */;\n}\n/**\n * Instruction to distribute projectable nodes among occurrences in a given template.\n * It takes all the selectors from the entire component's template and decides where\n * each projected node belongs (it re-distributes nodes among \"buckets\" where each \"bucket\" is\n * backed by a selector).\n *\n * This function requires CSS selectors to be provided in 2 forms: parsed (by a compiler) and text,\n * un-parsed form.\n *\n * The parsed form is needed for efficient matching of a node against a given CSS selector.\n * The un-parsed, textual form is needed for support of the ngProjectAs attribute.\n *\n * Having a CSS selector in 2 different formats is not ideal, but alternatives have even more\n * drawbacks:\n * - having only a textual form would require runtime parsing of CSS selectors;\n * - we can't have only a parsed as we can't re-construct textual form from it (as entered by a\n * template author).\n *\n * @param selectors A collection of parsed CSS selectors\n * @param rawSelectors A collection of CSS selectors in the raw, un-parsed form\n */\nfunction projectionDef(selectors, textSelectors) {\n var componentNode = findComponentView(getLView())[HOST_NODE];\n if (!componentNode.projection) {\n var noOfNodeBuckets = selectors ? selectors.length + 1 : 1;\n var pData = componentNode.projection =\n new Array(noOfNodeBuckets).fill(null);\n var tails = pData.slice();\n var componentChild = componentNode.child;\n while (componentChild !== null) {\n var bucketIndex = selectors ? matchingSelectorIndex(componentChild, selectors, textSelectors) : 0;\n var nextNode = componentChild.next;\n if (tails[bucketIndex]) {\n tails[bucketIndex].next = componentChild;\n }\n else {\n pData[bucketIndex] = componentChild;\n componentChild.next = null;\n }\n tails[bucketIndex] = componentChild;\n componentChild = nextNode;\n }\n }\n}\n/**\n * Stack used to keep track of projection nodes in projection() instruction.\n *\n * This is deliberately created outside of projection() to avoid allocating\n * a new array each time the function is called. Instead the array will be\n * re-used by each invocation. This works because the function is not reentrant.\n */\nvar projectionNodeStack$1 = [];\n/**\n * Inserts previously re-distributed projected nodes. This instruction must be preceded by a call\n * to the projectionDef instruction.\n *\n * @param nodeIndex\n * @param selectorIndex:\n * - 0 when the selector is `*` (or unspecified as this is the default value),\n * - 1 based index of the selector from the {@link projectionDef}\n */\nfunction projection(nodeIndex, selectorIndex, attrs) {\n if (selectorIndex === void 0) { selectorIndex = 0; }\n var lView = getLView();\n var tProjectionNode = createNodeAtIndex(nodeIndex, 1 /* Projection */, null, null, attrs || null);\n // We can't use viewData[HOST_NODE] because projection nodes can be nested in embedded views.\n if (tProjectionNode.projection === null)\n tProjectionNode.projection = selectorIndex;\n // `` has no content\n setIsParent(false);\n // re-distribution of projectable nodes is stored on a component's view level\n var componentView = findComponentView(lView);\n var componentNode = componentView[HOST_NODE];\n var nodeToProject = componentNode.projection[selectorIndex];\n var projectedView = componentView[PARENT];\n var projectionNodeIndex = -1;\n while (nodeToProject) {\n if (nodeToProject.type === 1 /* Projection */) {\n // This node is re-projected, so we must go up the tree to get its projected nodes.\n var currentComponentView = findComponentView(projectedView);\n var currentComponentHost = currentComponentView[HOST_NODE];\n var firstProjectedNode = currentComponentHost.projection[nodeToProject.projection];\n if (firstProjectedNode) {\n projectionNodeStack$1[++projectionNodeIndex] = nodeToProject;\n projectionNodeStack$1[++projectionNodeIndex] = projectedView;\n nodeToProject = firstProjectedNode;\n projectedView = currentComponentView[PARENT];\n continue;\n }\n }\n else {\n // This flag must be set now or we won't know that this node is projected\n // if the nodes are inserted into a container later.\n nodeToProject.flags |= 2 /* isProjected */;\n appendProjectedNode(nodeToProject, tProjectionNode, lView, projectedView);\n }\n // If we are finished with a list of re-projected nodes, we need to get\n // back to the root projection node that was re-projected.\n if (nodeToProject.next === null && projectedView !== componentView[PARENT]) {\n projectedView = projectionNodeStack$1[projectionNodeIndex--];\n nodeToProject = projectionNodeStack$1[projectionNodeIndex--];\n }\n nodeToProject = nodeToProject.next;\n }\n}\n/**\n * Adds LView or LContainer to the end of the current view tree.\n *\n * This structure will be used to traverse through nested views to remove listeners\n * and call onDestroy callbacks.\n *\n * @param lView The view where LView or LContainer should be added\n * @param adjustedHostIndex Index of the view's host node in LView[], adjusted for header\n * @param state The LView or LContainer to add to the view tree\n * @returns The state passed in\n */\nfunction addToViewTree(lView, adjustedHostIndex, state) {\n var tView = lView[TVIEW];\n var firstTemplatePass = getFirstTemplatePass();\n if (lView[TAIL]) {\n lView[TAIL][NEXT] = state;\n }\n else if (firstTemplatePass) {\n tView.childIndex = adjustedHostIndex;\n }\n lView[TAIL] = state;\n return state;\n}\n///////////////////////////////\n//// Change detection\n///////////////////////////////\n/** If node is an OnPush component, marks its LView dirty. */\nfunction markDirtyIfOnPush(lView, viewIndex) {\n var childComponentLView = getComponentViewByIndex(viewIndex, lView);\n if (!(childComponentLView[FLAGS] & 4 /* CheckAlways */)) {\n childComponentLView[FLAGS] |= 8 /* Dirty */;\n }\n}\n/** Wraps an event listener with preventDefault behavior. */\nfunction wrapListenerWithPreventDefault(listenerFn) {\n return function wrapListenerIn_preventDefault(e) {\n if (listenerFn(e) === false) {\n e.preventDefault();\n // Necessary for legacy browsers that don't support preventDefault (e.g. IE)\n e.returnValue = false;\n }\n };\n}\n/** Marks current view and all ancestors dirty */\nfunction markViewDirty(lView) {\n while (lView && !(lView[FLAGS] & 128 /* IsRoot */)) {\n lView[FLAGS] |= 8 /* Dirty */;\n lView = lView[PARENT];\n }\n lView[FLAGS] |= 8 /* Dirty */;\n ngDevMode && assertDefined(lView[CONTEXT], 'rootContext should be defined');\n var rootContext = lView[CONTEXT];\n scheduleTick(rootContext, 1 /* DetectChanges */);\n}\n/**\n * Used to schedule change detection on the whole application.\n *\n * Unlike `tick`, `scheduleTick` coalesces multiple calls into one change detection run.\n * It is usually called indirectly by calling `markDirty` when the view needs to be\n * re-rendered.\n *\n * Typically `scheduleTick` uses `requestAnimationFrame` to coalesce multiple\n * `scheduleTick` requests. The scheduling function can be overridden in\n * `renderComponent`'s `scheduler` option.\n */\nfunction scheduleTick(rootContext, flags) {\n var nothingScheduled = rootContext.flags === 0 /* Empty */;\n rootContext.flags |= flags;\n if (nothingScheduled && rootContext.clean == _CLEAN_PROMISE) {\n var res_1;\n rootContext.clean = new Promise(function (r) { return res_1 = r; });\n rootContext.scheduler(function () {\n if (rootContext.flags & 1 /* DetectChanges */) {\n rootContext.flags &= ~1 /* DetectChanges */;\n tickRootContext(rootContext);\n }\n if (rootContext.flags & 2 /* FlushPlayers */) {\n rootContext.flags &= ~2 /* FlushPlayers */;\n var playerHandler = rootContext.playerHandler;\n if (playerHandler) {\n playerHandler.flushPlayers();\n }\n }\n rootContext.clean = _CLEAN_PROMISE;\n res_1(null);\n });\n }\n}\nfunction tickRootContext(rootContext) {\n for (var i = 0; i < rootContext.components.length; i++) {\n var rootComponent = rootContext.components[i];\n renderComponentOrTemplate(readPatchedLView(rootComponent), rootComponent);\n }\n}\n/**\n * Synchronously perform change detection on a component (and possibly its sub-components).\n *\n * This function triggers change detection in a synchronous way on a component. There should\n * be very little reason to call this function directly since a preferred way to do change\n * detection is to {@link markDirty} the component and wait for the scheduler to call this method\n * at some future point in time. This is because a single user action often results in many\n * components being invalidated and calling change detection on each component synchronously\n * would be inefficient. It is better to wait until all components are marked as dirty and\n * then perform single change detection across all of the components\n *\n * @param component The component which the change detection should be performed on.\n */\nfunction detectChanges(component) {\n var view = getComponentViewByInstance(component);\n detectChangesInternal(view, component);\n}\nfunction detectChangesInternal(view, context) {\n var rendererFactory = view[RENDERER_FACTORY];\n if (rendererFactory.begin)\n rendererFactory.begin();\n if (isCreationMode(view)) {\n checkView(view, context); // creation mode pass\n }\n checkView(view, context); // update mode pass\n if (rendererFactory.end)\n rendererFactory.end();\n}\n/**\n * Synchronously perform change detection on a root view and its components.\n *\n * @param lView The view which the change detection should be performed on.\n */\nfunction detectChangesInRootView(lView) {\n tickRootContext(lView[CONTEXT]);\n}\n/**\n * Checks the change detector and its children, and throws if any changes are detected.\n *\n * This is used in development mode to verify that running change detection doesn't\n * introduce other changes.\n */\nfunction checkNoChanges(component) {\n setCheckNoChangesMode(true);\n try {\n detectChanges(component);\n }\n finally {\n setCheckNoChangesMode(false);\n }\n}\n/**\n * Checks the change detector on a root view and its components, and throws if any changes are\n * detected.\n *\n * This is used in development mode to verify that running change detection doesn't\n * introduce other changes.\n *\n * @param lView The view which the change detection should be checked on.\n */\nfunction checkNoChangesInRootView(lView) {\n setCheckNoChangesMode(true);\n try {\n detectChangesInRootView(lView);\n }\n finally {\n setCheckNoChangesMode(false);\n }\n}\n/** Checks the view of the component provided. Does not gate on dirty checks or execute doCheck. */\nfunction checkView(hostView, component) {\n var hostTView = hostView[TVIEW];\n var oldView = enterView(hostView, hostView[HOST_NODE]);\n var templateFn = hostTView.template;\n var viewQuery = hostTView.viewQuery;\n try {\n namespaceHTML();\n createViewQuery(viewQuery, hostView, component);\n templateFn(getRenderFlags(hostView), component);\n refreshDescendantViews(hostView);\n updateViewQuery(viewQuery, hostView, component);\n }\n finally {\n leaveView(oldView);\n }\n}\nfunction createViewQuery(viewQuery, view, component) {\n if (viewQuery && isCreationMode(view)) {\n viewQuery(1 /* Create */, component);\n }\n}\nfunction updateViewQuery(viewQuery, view, component) {\n if (viewQuery && !isCreationMode(view)) {\n viewQuery(2 /* Update */, component);\n }\n}\n/**\n * Mark the component as dirty (needing change detection).\n *\n * Marking a component dirty will schedule a change detection on this\n * component at some point in the future. Marking an already dirty\n * component as dirty is a noop. Only one outstanding change detection\n * can be scheduled per component tree. (Two components bootstrapped with\n * separate `renderComponent` will have separate schedulers)\n *\n * When the root component is bootstrapped with `renderComponent`, a scheduler\n * can be provided.\n *\n * @param component Component to mark as dirty.\n *\n * @publicApi\n */\nfunction markDirty(component) {\n ngDevMode && assertDefined(component, 'component');\n markViewDirty(getComponentViewByInstance(component));\n}\n///////////////////////////////\n//// Bindings & interpolations\n///////////////////////////////\n/**\n * Creates a single value binding.\n *\n * @param value Value to diff\n */\nfunction bind(value) {\n var lView = getLView();\n return bindingUpdated(lView, lView[BINDING_INDEX]++, value) ? value : NO_CHANGE;\n}\n/**\n * Allocates the necessary amount of slots for host vars.\n *\n * @param count Amount of vars to be allocated\n */\nfunction allocHostVars(count) {\n if (!getFirstTemplatePass())\n return;\n var lView = getLView();\n var tView = lView[TVIEW];\n queueHostBindingForCheck(tView, getCurrentDirectiveDef(), count);\n prefillHostVars(tView, lView, count);\n}\n/**\n * Create interpolation bindings with a variable number of expressions.\n *\n * If there are 1 to 8 expressions `interpolation1()` to `interpolation8()` should be used instead.\n * Those are faster because there is no need to create an array of expressions and iterate over it.\n *\n * `values`:\n * - has static text at even indexes,\n * - has evaluated expressions at odd indexes.\n *\n * Returns the concatenated string when any of the arguments changes, `NO_CHANGE` otherwise.\n */\nfunction interpolationV(values) {\n ngDevMode && assertLessThan(2, values.length, 'should have at least 3 values');\n ngDevMode && assertEqual(values.length % 2, 1, 'should have an odd number of values');\n var different = false;\n var lView = getLView();\n var bindingIndex = lView[BINDING_INDEX];\n for (var i = 1; i < values.length; i += 2) {\n // Check if bindings (odd indexes) have changed\n bindingUpdated(lView, bindingIndex++, values[i]) && (different = true);\n }\n lView[BINDING_INDEX] = bindingIndex;\n if (!different) {\n return NO_CHANGE;\n }\n // Build the updated content\n var content = values[0];\n for (var i = 1; i < values.length; i += 2) {\n content += stringify$1(values[i]) + values[i + 1];\n }\n return content;\n}\n/**\n * Creates an interpolation binding with 1 expression.\n *\n * @param prefix static value used for concatenation only.\n * @param v0 value checked for change.\n * @param suffix static value used for concatenation only.\n */\nfunction interpolation1(prefix, v0, suffix) {\n var lView = getLView();\n var different = bindingUpdated(lView, lView[BINDING_INDEX], v0);\n lView[BINDING_INDEX] += 1;\n return different ? prefix + stringify$1(v0) + suffix : NO_CHANGE;\n}\n/** Creates an interpolation binding with 2 expressions. */\nfunction interpolation2(prefix, v0, i0, v1, suffix) {\n var lView = getLView();\n var different = bindingUpdated2(lView, lView[BINDING_INDEX], v0, v1);\n lView[BINDING_INDEX] += 2;\n return different ? prefix + stringify$1(v0) + i0 + stringify$1(v1) + suffix : NO_CHANGE;\n}\n/** Creates an interpolation binding with 3 expressions. */\nfunction interpolation3(prefix, v0, i0, v1, i1, v2, suffix) {\n var lView = getLView();\n var different = bindingUpdated3(lView, lView[BINDING_INDEX], v0, v1, v2);\n lView[BINDING_INDEX] += 3;\n return different ? prefix + stringify$1(v0) + i0 + stringify$1(v1) + i1 + stringify$1(v2) + suffix :\n NO_CHANGE;\n}\n/** Create an interpolation binding with 4 expressions. */\nfunction interpolation4(prefix, v0, i0, v1, i1, v2, i2, v3, suffix) {\n var lView = getLView();\n var different = bindingUpdated4(lView, lView[BINDING_INDEX], v0, v1, v2, v3);\n lView[BINDING_INDEX] += 4;\n return different ?\n prefix + stringify$1(v0) + i0 + stringify$1(v1) + i1 + stringify$1(v2) + i2 + stringify$1(v3) +\n suffix :\n NO_CHANGE;\n}\n/** Creates an interpolation binding with 5 expressions. */\nfunction interpolation5(prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix) {\n var lView = getLView();\n var bindingIndex = lView[BINDING_INDEX];\n var different = bindingUpdated4(lView, bindingIndex, v0, v1, v2, v3);\n different = bindingUpdated(lView, bindingIndex + 4, v4) || different;\n lView[BINDING_INDEX] += 5;\n return different ?\n prefix + stringify$1(v0) + i0 + stringify$1(v1) + i1 + stringify$1(v2) + i2 + stringify$1(v3) + i3 +\n stringify$1(v4) + suffix :\n NO_CHANGE;\n}\n/** Creates an interpolation binding with 6 expressions. */\nfunction interpolation6(prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, suffix) {\n var lView = getLView();\n var bindingIndex = lView[BINDING_INDEX];\n var different = bindingUpdated4(lView, bindingIndex, v0, v1, v2, v3);\n different = bindingUpdated2(lView, bindingIndex + 4, v4, v5) || different;\n lView[BINDING_INDEX] += 6;\n return different ?\n prefix + stringify$1(v0) + i0 + stringify$1(v1) + i1 + stringify$1(v2) + i2 + stringify$1(v3) + i3 +\n stringify$1(v4) + i4 + stringify$1(v5) + suffix :\n NO_CHANGE;\n}\n/** Creates an interpolation binding with 7 expressions. */\nfunction interpolation7(prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, suffix) {\n var lView = getLView();\n var bindingIndex = lView[BINDING_INDEX];\n var different = bindingUpdated4(lView, bindingIndex, v0, v1, v2, v3);\n different = bindingUpdated3(lView, bindingIndex + 4, v4, v5, v6) || different;\n lView[BINDING_INDEX] += 7;\n return different ?\n prefix + stringify$1(v0) + i0 + stringify$1(v1) + i1 + stringify$1(v2) + i2 + stringify$1(v3) + i3 +\n stringify$1(v4) + i4 + stringify$1(v5) + i5 + stringify$1(v6) + suffix :\n NO_CHANGE;\n}\n/** Creates an interpolation binding with 8 expressions. */\nfunction interpolation8(prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, i6, v7, suffix) {\n var lView = getLView();\n var bindingIndex = lView[BINDING_INDEX];\n var different = bindingUpdated4(lView, bindingIndex, v0, v1, v2, v3);\n different = bindingUpdated4(lView, bindingIndex + 4, v4, v5, v6, v7) || different;\n lView[BINDING_INDEX] += 8;\n return different ?\n prefix + stringify$1(v0) + i0 + stringify$1(v1) + i1 + stringify$1(v2) + i2 + stringify$1(v3) + i3 +\n stringify$1(v4) + i4 + stringify$1(v5) + i5 + stringify$1(v6) + i6 + stringify$1(v7) + suffix :\n NO_CHANGE;\n}\n/** Store a value in the `data` at a given `index`. */\nfunction store(index, value) {\n var lView = getLView();\n var tView = lView[TVIEW];\n // We don't store any static data for local variables, so the first time\n // we see the template, we should store as null to avoid a sparse array\n var adjustedIndex = index + HEADER_OFFSET;\n if (adjustedIndex >= tView.data.length) {\n tView.data[adjustedIndex] = null;\n }\n lView[adjustedIndex] = value;\n}\n/**\n * Retrieves a local reference from the current contextViewData.\n *\n * If the reference to retrieve is in a parent view, this instruction is used in conjunction\n * with a nextContext() call, which walks up the tree and updates the contextViewData instance.\n *\n * @param index The index of the local ref in contextViewData.\n */\nfunction reference(index) {\n var contextLView = getContextLView();\n return loadInternal(contextLView, index);\n}\nfunction loadQueryList(queryListIdx) {\n var lView = getLView();\n ngDevMode &&\n assertDefined(lView[CONTENT_QUERIES], 'Content QueryList array should be defined if reading a query.');\n ngDevMode && assertDataInRange(lView[CONTENT_QUERIES], queryListIdx);\n return lView[CONTENT_QUERIES][queryListIdx];\n}\n/** Retrieves a value from current `viewData`. */\nfunction load(index) {\n return loadInternal(getLView(), index);\n}\nfunction directiveInject(token, flags) {\n if (flags === void 0) { flags = InjectFlags.Default; }\n token = resolveForwardRef(token);\n return getOrCreateInjectable(getPreviousOrParentTNode(), getLView(), token, flags);\n}\n/**\n * Facade for the attribute injection from DI.\n */\nfunction injectAttribute(attrNameToInject) {\n return injectAttributeImpl(getPreviousOrParentTNode(), attrNameToInject);\n}\n/**\n * Registers a QueryList, associated with a content query, for later refresh (part of a view\n * refresh).\n */\nfunction registerContentQuery(queryList, currentDirectiveIndex) {\n var viewData = getLView();\n var tView = viewData[TVIEW];\n var savedContentQueriesLength = (viewData[CONTENT_QUERIES] || (viewData[CONTENT_QUERIES] = [])).push(queryList);\n if (getFirstTemplatePass()) {\n var tViewContentQueries = tView.contentQueries || (tView.contentQueries = []);\n var lastSavedDirectiveIndex = tView.contentQueries.length ? tView.contentQueries[tView.contentQueries.length - 2] : -1;\n if (currentDirectiveIndex !== lastSavedDirectiveIndex) {\n tViewContentQueries.push(currentDirectiveIndex, savedContentQueriesLength - 1);\n }\n }\n}\nvar CLEAN_PROMISE = _CLEAN_PROMISE;\nfunction initializeTNodeInputs(tNode) {\n // If tNode.inputs is undefined, a listener has created outputs, but inputs haven't\n // yet been checked.\n if (tNode) {\n if (tNode.inputs === undefined) {\n // mark inputs as checked\n tNode.inputs = generatePropertyAliases(tNode, 0 /* Input */);\n }\n return tNode.inputs;\n }\n return null;\n}\n/**\n * Returns the current OpaqueViewState instance.\n *\n * Used in conjunction with the restoreView() instruction to save a snapshot\n * of the current view and restore it when listeners are invoked. This allows\n * walking the declaration view tree in listeners to get vars from parent views.\n */\nfunction getCurrentView() {\n return getLView();\n}\nfunction getCleanup(view) {\n // top level variables should not be exported for performance reasons (PERF_NOTES.md)\n return view[CLEANUP] || (view[CLEANUP] = []);\n}\nfunction getTViewCleanup(view) {\n return view[TVIEW].cleanup || (view[TVIEW].cleanup = []);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Adds a player to an element, directive or component instance that will later be\n * animated once change detection has passed.\n *\n * When a player is added to a reference it will stay active until `player.destroy()`\n * is called. Once called then the player will be removed from the active players\n * present on the associated ref instance.\n *\n * To get a list of all the active players on an element see [getPlayers].\n *\n * @param ref The element, directive or component that the player will be placed on.\n * @param player The player that will be triggered to play once change detection has run.\n */\nfunction addPlayer(ref, player) {\n var context = getLContext(ref);\n if (!context) {\n ngDevMode && throwInvalidRefError();\n return;\n }\n var element$$1 = context.native;\n var lView = context.lView;\n var playerContext = getOrCreatePlayerContext(element$$1, context);\n var rootContext = getRootContext$1(lView);\n addPlayerInternal(playerContext, rootContext, element$$1, player, 0, ref);\n scheduleTick(rootContext, 2 /* FlushPlayers */);\n}\n/**\n * Returns a list of all the active players present on the provided ref instance (which can\n * be an instance of a directive, component or element).\n *\n * This function will only return players that have been added to the ref instance using\n * `addPlayer` or any players that are active through any template styling bindings\n * (`[style]`, `[style.prop]`, `[class]` and `[class.name]`).\n *\n * @publicApi\n */\nfunction getPlayers(ref) {\n var context = getLContext(ref);\n if (!context) {\n ngDevMode && throwInvalidRefError();\n return [];\n }\n var stylingContext = getStylingContext(context.nodeIndex, context.lView);\n var playerContext = stylingContext ? getPlayerContext(stylingContext) : null;\n return playerContext ? getPlayersInternal(playerContext) : [];\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This file introduces series of globally accessible debug tools\n * to allow for the Angular debugging story to function.\n *\n * To see this in action run the following command:\n *\n * bazel run --define=compile=aot\n * //packages/core/test/bundling/todo:devserver\n *\n * Then load `localhost:5432` and start using the console tools.\n */\n/**\n * This value reflects the property on the window where the dev\n * tools are patched (window.ng).\n * */\nvar GLOBAL_PUBLISH_EXPANDO_KEY = 'ng';\n/*\n * Publishes a collection of default debug tools onto `window._ng_`.\n *\n * These functions are available globally when Angular is in development\n * mode and are automatically stripped away from prod mode is on.\n */\nvar _published = false;\nfunction publishDefaultGlobalUtils() {\n if (!_published) {\n _published = true;\n publishGlobalUtil('getComponent', getComponent);\n publishGlobalUtil('getContext', getContext);\n publishGlobalUtil('getListeners', getListeners);\n publishGlobalUtil('getViewComponent', getViewComponent);\n publishGlobalUtil('getHostElement', getHostElement);\n publishGlobalUtil('getInjector', getInjector);\n publishGlobalUtil('getRootComponents', getRootComponents);\n publishGlobalUtil('getDirectives', getDirectives);\n publishGlobalUtil('getPlayers', getPlayers);\n publishGlobalUtil('markDirty', markDirty);\n }\n}\n/**\n * Publishes the given function to `window.ngDevMode` so that it can be\n * used from the browser console when an application is not in production.\n */\nfunction publishGlobalUtil(name, fn) {\n var w = _global;\n ngDevMode && assertDefined(fn, 'function not defined');\n if (w) {\n var container = w[GLOBAL_PUBLISH_EXPANDO_KEY];\n if (!container) {\n container = w[GLOBAL_PUBLISH_EXPANDO_KEY] = {};\n }\n container[name] = fn;\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Bootstraps a Component into an existing host element and returns an instance\n * of the component.\n *\n * Use this function to bootstrap a component into the DOM tree. Each invocation\n * of this function will create a separate tree of components, injectors and\n * change detection cycles and lifetimes. To dynamically insert a new component\n * into an existing tree such that it shares the same injection, change detection\n * and object lifetime, use {@link ViewContainer#createComponent}.\n *\n * @param componentType Component to bootstrap\n * @param options Optional parameters which control bootstrapping\n */\nfunction renderComponent(componentType /* Type as workaround for: Microsoft/TypeScript/issues/4881 */, opts) {\n if (opts === void 0) { opts = {}; }\n ngDevMode && publishDefaultGlobalUtils();\n ngDevMode && assertComponentType(componentType);\n var rendererFactory = opts.rendererFactory || domRendererFactory3;\n var sanitizer = opts.sanitizer || null;\n var componentDef = getComponentDef(componentType);\n if (componentDef.type != componentType)\n componentDef.type = componentType;\n // The first index of the first selector is the tag name.\n var componentTag = componentDef.selectors[0][0];\n var hostRNode = locateHostElement(rendererFactory, opts.host || componentTag);\n var rootFlags = componentDef.onPush ? 8 /* Dirty */ | 128 /* IsRoot */ :\n 4 /* CheckAlways */ | 128 /* IsRoot */;\n var rootContext = createRootContext(opts.scheduler, opts.playerHandler);\n var renderer = rendererFactory.createRenderer(hostRNode, componentDef);\n var rootView = createLView(null, createTView(-1, null, 1, 0, null, null, null), rootContext, rootFlags, rendererFactory, renderer, undefined, opts.injector || null);\n var oldView = enterView(rootView, null);\n var component;\n try {\n if (rendererFactory.begin)\n rendererFactory.begin();\n var componentView = createRootComponentView(hostRNode, componentDef, rootView, rendererFactory, renderer, sanitizer);\n component = createRootComponent(componentView, componentDef, rootView, rootContext, opts.hostFeatures || null);\n refreshDescendantViews(rootView); // creation mode pass\n rootView[FLAGS] &= ~1 /* CreationMode */;\n refreshDescendantViews(rootView); // update mode pass\n }\n finally {\n leaveView(oldView);\n if (rendererFactory.end)\n rendererFactory.end();\n }\n return component;\n}\n/**\n * Creates the root component view and the root component node.\n *\n * @param rNode Render host element.\n * @param def ComponentDef\n * @param rootView The parent view where the host node is stored\n * @param renderer The current renderer\n * @param sanitizer The sanitizer, if provided\n *\n * @returns Component view created\n */\nfunction createRootComponentView(rNode, def, rootView, rendererFactory, renderer, sanitizer) {\n resetComponentState();\n var tView = rootView[TVIEW];\n var componentView = createLView(rootView, getOrCreateTView(def.template, def.consts, def.vars, def.directiveDefs, def.pipeDefs, def.viewQuery), null, def.onPush ? 8 /* Dirty */ : 4 /* CheckAlways */, rendererFactory, renderer, sanitizer);\n var tNode = createNodeAtIndex(0, 3 /* Element */, rNode, null, null);\n if (tView.firstTemplatePass) {\n diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, rootView), rootView, def.type);\n tNode.flags = 1 /* isComponent */;\n initNodeFlags(tNode, rootView.length, 1);\n queueComponentIndexForCheck(tNode);\n }\n // Store component view at node index, with node as the HOST\n componentView[HOST] = rootView[HEADER_OFFSET];\n componentView[HOST_NODE] = tNode;\n return rootView[HEADER_OFFSET] = componentView;\n}\n/**\n * Creates a root component and sets it up with features and host bindings. Shared by\n * renderComponent() and ViewContainerRef.createComponent().\n */\nfunction createRootComponent(componentView, componentDef, rootView, rootContext, hostFeatures) {\n var tView = rootView[TVIEW];\n // Create directive instance with factory() and store at next index in viewData\n var component = instantiateRootComponent(tView, rootView, componentDef);\n rootContext.components.push(component);\n componentView[CONTEXT] = component;\n hostFeatures && hostFeatures.forEach(function (feature) { return feature(component, componentDef); });\n if (tView.firstTemplatePass && componentDef.hostBindings) {\n var rootTNode = getPreviousOrParentTNode();\n setCurrentDirectiveDef(componentDef);\n componentDef.hostBindings(1 /* Create */, component, rootTNode.index - HEADER_OFFSET);\n setCurrentDirectiveDef(null);\n }\n return component;\n}\nfunction createRootContext(scheduler, playerHandler) {\n return {\n components: [],\n scheduler: scheduler || defaultScheduler,\n clean: CLEAN_PROMISE,\n playerHandler: playerHandler || null,\n flags: 0 /* Empty */\n };\n}\n/**\n * Used to enable lifecycle hooks on the root component.\n *\n * Include this feature when calling `renderComponent` if the root component\n * you are rendering has lifecycle hooks defined. Otherwise, the hooks won't\n * be called properly.\n *\n * Example:\n *\n * ```\n * renderComponent(AppComponent, {features: [RootLifecycleHooks]});\n * ```\n */\nfunction LifecycleHooksFeature(component, def) {\n var rootTView = readPatchedLView(component)[TVIEW];\n var dirIndex = rootTView.data.length - 1;\n queueInitHooks(dirIndex, def.onInit, def.doCheck, rootTView);\n // TODO(misko): replace `as TNode` with createTNode call. (needs refactoring to lose dep on\n // LNode).\n queueLifecycleHooks(rootTView, { directiveStart: dirIndex, directiveEnd: dirIndex + 1 });\n}\n/**\n * Retrieve the root context for any component by walking the parent `LView` until\n * reaching the root `LView`.\n *\n * @param component any component\n */\nfunction getRootContext$2(component) {\n var rootContext = getRootView(component)[CONTEXT];\n ngDevMode && assertDefined(rootContext, 'rootContext');\n return rootContext;\n}\n/**\n * Wait on component until it is rendered.\n *\n * This function returns a `Promise` which is resolved when the component's\n * change detection is executed. This is determined by finding the scheduler\n * associated with the `component`'s render tree and waiting until the scheduler\n * flushes. If nothing is scheduled, the function returns a resolved promise.\n *\n * Example:\n * ```\n * await whenRendered(myComponent);\n * ```\n *\n * @param component Component to wait upon\n * @returns Promise which resolves when the component is rendered.\n */\nfunction whenRendered(component) {\n return getRootContext$2(component).clean;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Determines if a definition is a {@link ComponentDef} or a {@link DirectiveDef}\n * @param definition The definition to examine\n */\nfunction isComponentDef$1(definition) {\n var def = definition;\n return typeof def.template === 'function';\n}\nfunction getSuperType(type) {\n return Object.getPrototypeOf(type.prototype).constructor;\n}\n/**\n * Merges the definition from a super class to a sub class.\n * @param definition The definition that is a SubClass of another directive of component\n */\nfunction InheritDefinitionFeature(definition) {\n var superType = getSuperType(definition.type);\n var _loop_1 = function () {\n var e_1, _a;\n var superDef = undefined;\n if (isComponentDef$1(definition)) {\n // Don't use getComponentDef/getDirectiveDef. This logic relies on inheritance.\n superDef = superType.ngComponentDef || superType.ngDirectiveDef;\n }\n else {\n if (superType.ngComponentDef) {\n throw new Error('Directives cannot inherit Components');\n }\n // Don't use getComponentDef/getDirectiveDef. This logic relies on inheritance.\n superDef = superType.ngDirectiveDef;\n }\n var baseDef = superType.ngBaseDef;\n // Some fields in the definition may be empty, if there were no values to put in them that\n // would've justified object creation. Unwrap them if necessary.\n if (baseDef || superDef) {\n var writeableDef = definition;\n writeableDef.inputs = maybeUnwrapEmpty(definition.inputs);\n writeableDef.declaredInputs = maybeUnwrapEmpty(definition.declaredInputs);\n writeableDef.outputs = maybeUnwrapEmpty(definition.outputs);\n }\n if (baseDef) {\n // Merge inputs and outputs\n fillProperties(definition.inputs, baseDef.inputs);\n fillProperties(definition.declaredInputs, baseDef.declaredInputs);\n fillProperties(definition.outputs, baseDef.outputs);\n }\n if (superDef) {\n // Merge hostBindings\n var prevHostBindings_1 = definition.hostBindings;\n var superHostBindings_1 = superDef.hostBindings;\n if (superHostBindings_1) {\n if (prevHostBindings_1) {\n definition.hostBindings = function (rf, ctx, elementIndex) {\n superHostBindings_1(rf, ctx, elementIndex);\n prevHostBindings_1(rf, ctx, elementIndex);\n };\n }\n else {\n definition.hostBindings = superHostBindings_1;\n }\n }\n // Merge View Queries\n if (isComponentDef$1(definition) && isComponentDef$1(superDef)) {\n var prevViewQuery_1 = definition.viewQuery;\n var superViewQuery_1 = superDef.viewQuery;\n if (superViewQuery_1) {\n if (prevViewQuery_1) {\n definition.viewQuery = function (rf, ctx) {\n superViewQuery_1(rf, ctx);\n prevViewQuery_1(rf, ctx);\n };\n }\n else {\n definition.viewQuery = superViewQuery_1;\n }\n }\n }\n // Merge Content Queries\n var prevContentQueries_1 = definition.contentQueries;\n var superContentQueries_1 = superDef.contentQueries;\n if (superContentQueries_1) {\n if (prevContentQueries_1) {\n definition.contentQueries = function (dirIndex) {\n superContentQueries_1(dirIndex);\n prevContentQueries_1(dirIndex);\n };\n }\n else {\n definition.contentQueries = superContentQueries_1;\n }\n }\n // Merge Content Queries Refresh\n var prevContentQueriesRefresh_1 = definition.contentQueriesRefresh;\n var superContentQueriesRefresh_1 = superDef.contentQueriesRefresh;\n if (superContentQueriesRefresh_1) {\n if (prevContentQueriesRefresh_1) {\n definition.contentQueriesRefresh = function (directiveIndex, queryIndex) {\n superContentQueriesRefresh_1(directiveIndex, queryIndex);\n prevContentQueriesRefresh_1(directiveIndex, queryIndex);\n };\n }\n else {\n definition.contentQueriesRefresh = superContentQueriesRefresh_1;\n }\n }\n // Merge inputs and outputs\n fillProperties(definition.inputs, superDef.inputs);\n fillProperties(definition.declaredInputs, superDef.declaredInputs);\n fillProperties(definition.outputs, superDef.outputs);\n // Inherit hooks\n // Assume super class inheritance feature has already run.\n definition.afterContentChecked =\n definition.afterContentChecked || superDef.afterContentChecked;\n definition.afterContentInit = definition.afterContentInit || superDef.afterContentInit;\n definition.afterViewChecked = definition.afterViewChecked || superDef.afterViewChecked;\n definition.afterViewInit = definition.afterViewInit || superDef.afterViewInit;\n definition.doCheck = definition.doCheck || superDef.doCheck;\n definition.onDestroy = definition.onDestroy || superDef.onDestroy;\n definition.onInit = definition.onInit || superDef.onInit;\n // Run parent features\n var features = superDef.features;\n if (features) {\n try {\n for (var features_1 = __values(features), features_1_1 = features_1.next(); !features_1_1.done; features_1_1 = features_1.next()) {\n var feature = features_1_1.value;\n if (feature && feature.ngInherit) {\n feature(definition);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (features_1_1 && !features_1_1.done && (_a = features_1.return)) _a.call(features_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n return \"break\";\n }\n else {\n // Even if we don't have a definition, check the type for the hooks and use those if need be\n var superPrototype = superType.prototype;\n if (superPrototype) {\n definition.afterContentChecked =\n definition.afterContentChecked || superPrototype.afterContentChecked;\n definition.afterContentInit =\n definition.afterContentInit || superPrototype.afterContentInit;\n definition.afterViewChecked =\n definition.afterViewChecked || superPrototype.afterViewChecked;\n definition.afterViewInit = definition.afterViewInit || superPrototype.afterViewInit;\n definition.doCheck = definition.doCheck || superPrototype.doCheck;\n definition.onDestroy = definition.onDestroy || superPrototype.onDestroy;\n definition.onInit = definition.onInit || superPrototype.onInit;\n }\n }\n superType = Object.getPrototypeOf(superType);\n };\n while (superType) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n}\nfunction maybeUnwrapEmpty(value) {\n if (value === EMPTY_OBJ) {\n return {};\n }\n else if (value === EMPTY_ARRAY) {\n return [];\n }\n else {\n return value;\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar PRIVATE_PREFIX = '__ngOnChanges_';\n/**\n * The NgOnChangesFeature decorates a component with support for the ngOnChanges\n * lifecycle hook, so it should be included in any component that implements\n * that hook.\n *\n * If the component or directive uses inheritance, the NgOnChangesFeature MUST\n * be included as a feature AFTER {@link InheritDefinitionFeature}, otherwise\n * inherited properties will not be propagated to the ngOnChanges lifecycle\n * hook.\n *\n * Example usage:\n *\n * ```\n * static ngComponentDef = defineComponent({\n * ...\n * inputs: {name: 'publicName'},\n * features: [NgOnChangesFeature]\n * });\n * ```\n */\nfunction NgOnChangesFeature(definition) {\n var publicToDeclaredInputs = definition.declaredInputs;\n var publicToMinifiedInputs = definition.inputs;\n var proto = definition.type.prototype;\n var _loop_1 = function (publicName) {\n if (publicToDeclaredInputs.hasOwnProperty(publicName)) {\n var minifiedKey = publicToMinifiedInputs[publicName];\n var declaredKey_1 = publicToDeclaredInputs[publicName];\n var privateMinKey_1 = PRIVATE_PREFIX + minifiedKey;\n // Walk the prototype chain to see if we find a property descriptor\n // That way we can honor setters and getters that were inherited.\n var originalProperty = undefined;\n var checkProto = proto;\n while (!originalProperty && checkProto &&\n Object.getPrototypeOf(checkProto) !== Object.getPrototypeOf(Object.prototype)) {\n originalProperty = Object.getOwnPropertyDescriptor(checkProto, minifiedKey);\n checkProto = Object.getPrototypeOf(checkProto);\n }\n var getter = originalProperty && originalProperty.get;\n var setter_1 = originalProperty && originalProperty.set;\n // create a getter and setter for property\n Object.defineProperty(proto, minifiedKey, {\n get: getter ||\n (setter_1 ? undefined : function () { return this[privateMinKey_1]; }),\n set: function (value) {\n var simpleChanges = this[PRIVATE_PREFIX];\n if (!simpleChanges) {\n simpleChanges = {};\n // Place where we will store SimpleChanges if there is a change\n Object.defineProperty(this, PRIVATE_PREFIX, { value: simpleChanges, writable: true });\n }\n var isFirstChange = !this.hasOwnProperty(privateMinKey_1);\n var currentChange = simpleChanges[declaredKey_1];\n if (currentChange) {\n currentChange.currentValue = value;\n }\n else {\n simpleChanges[declaredKey_1] =\n new SimpleChange(this[privateMinKey_1], value, isFirstChange);\n }\n if (isFirstChange) {\n // Create a place where the actual value will be stored and make it non-enumerable\n Object.defineProperty(this, privateMinKey_1, { value: value, writable: true });\n }\n else {\n this[privateMinKey_1] = value;\n }\n if (setter_1)\n setter_1.call(this, value);\n },\n // Make the property configurable in dev mode to allow overriding in tests\n configurable: !!ngDevMode\n });\n }\n };\n for (var publicName in publicToDeclaredInputs) {\n _loop_1(publicName);\n }\n // If an onInit hook is defined, it will need to wrap the ngOnChanges call\n // so the call order is changes-init-check in creation mode. In subsequent\n // change detection runs, only the check wrapper will be called.\n if (definition.onInit != null) {\n definition.onInit = onChangesWrapper(definition.onInit);\n }\n definition.doCheck = onChangesWrapper(definition.doCheck);\n}\n// This option ensures that the ngOnChanges lifecycle hook will be inherited\n// from superclasses (in InheritDefinitionFeature).\nNgOnChangesFeature.ngInherit = true;\nfunction onChangesWrapper(delegateHook) {\n return function () {\n var simpleChanges = this[PRIVATE_PREFIX];\n if (simpleChanges != null) {\n this.ngOnChanges(simpleChanges);\n this[PRIVATE_PREFIX] = null;\n }\n if (delegateHook)\n delegateHook.apply(this);\n };\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction noop() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // Do nothing.\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar SOURCE = '__source';\nvar _THROW_IF_NOT_FOUND = new Object();\nvar THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;\n/**\n * An InjectionToken that gets the current `Injector` for `createInjector()`-style injectors.\n *\n * Requesting this token instead of `Injector` allows `StaticInjector` to be tree-shaken from a\n * project.\n *\n * @publicApi\n */\nvar INJECTOR$1 = new InjectionToken('INJECTOR');\nvar NullInjector = /** @class */ (function () {\n function NullInjector() {\n }\n NullInjector.prototype.get = function (token, notFoundValue) {\n if (notFoundValue === void 0) { notFoundValue = _THROW_IF_NOT_FOUND; }\n if (notFoundValue === _THROW_IF_NOT_FOUND) {\n // Intentionally left behind: With dev tools open the debugger will stop here. There is no\n // reason why correctly written application should cause this exception.\n // TODO(misko): uncomment the next line once `ngDevMode` works with closure.\n // if(ngDevMode) debugger;\n throw new Error(\"NullInjectorError: No provider for \" + stringify(token) + \"!\");\n }\n return notFoundValue;\n };\n return NullInjector;\n}());\n/**\n * Concrete injectors implement this interface.\n *\n * For more details, see the [\"Dependency Injection Guide\"](guide/dependency-injection).\n *\n * @usageNotes\n * ### Example\n *\n * {@example core/di/ts/injector_spec.ts region='Injector'}\n *\n * `Injector` returns itself when given `Injector` as a token:\n *\n * {@example core/di/ts/injector_spec.ts region='injectInjector'}\n *\n * @publicApi\n */\nvar Injector = /** @class */ (function () {\n function Injector() {\n }\n /**\n * Create a new Injector which is configure using `StaticProvider`s.\n *\n * @usageNotes\n * ### Example\n *\n * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'}\n */\n Injector.create = function (options, parent) {\n if (Array.isArray(options)) {\n return new StaticInjector(options, parent);\n }\n else {\n return new StaticInjector(options.providers, options.parent, options.name || null);\n }\n };\n Injector.THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;\n Injector.NULL = new NullInjector();\n /** @nocollapse */\n Injector.ngInjectableDef = defineInjectable({\n providedIn: 'any',\n factory: function () { return inject(INJECTOR$1); },\n });\n /** @internal */\n Injector.__NG_ELEMENT_ID__ = function () { return SWITCH_INJECTOR_FACTORY(); };\n return Injector;\n}());\nvar SWITCH_INJECTOR_FACTORY__POST_R3__ = function () {\n return injectInjector();\n};\nvar SWITCH_INJECTOR_FACTORY__PRE_R3__ = noop;\nvar SWITCH_INJECTOR_FACTORY = SWITCH_INJECTOR_FACTORY__PRE_R3__;\nvar IDENT = function (value) {\n return value;\n};\nvar EMPTY = [];\nvar CIRCULAR = IDENT;\nvar MULTI_PROVIDER_FN = function () {\n return Array.prototype.slice.call(arguments);\n};\nvar USE_VALUE = getClosureSafeProperty({ provide: String, useValue: getClosureSafeProperty });\nvar NG_TOKEN_PATH = 'ngTokenPath';\nvar NG_TEMP_TOKEN_PATH = 'ngTempTokenPath';\nvar NULL_INJECTOR$1 = Injector.NULL;\nvar NEW_LINE = /\\n/gm;\nvar NO_NEW_LINE = 'ɵ';\nvar StaticInjector = /** @class */ (function () {\n function StaticInjector(providers, parent, source) {\n if (parent === void 0) { parent = NULL_INJECTOR$1; }\n if (source === void 0) { source = null; }\n this.parent = parent;\n this.source = source;\n var records = this._records = new Map();\n records.set(Injector, { token: Injector, fn: IDENT, deps: EMPTY, value: this, useNew: false });\n records.set(INJECTOR$1, { token: INJECTOR$1, fn: IDENT, deps: EMPTY, value: this, useNew: false });\n recursivelyProcessProviders(records, providers);\n }\n StaticInjector.prototype.get = function (token, notFoundValue, flags) {\n if (flags === void 0) { flags = InjectFlags.Default; }\n var record = this._records.get(token);\n try {\n return tryResolveToken(token, record, this._records, this.parent, notFoundValue, flags);\n }\n catch (e) {\n var tokenPath = e[NG_TEMP_TOKEN_PATH];\n if (token[SOURCE]) {\n tokenPath.unshift(token[SOURCE]);\n }\n e.message = formatError('\\n' + e.message, tokenPath, this.source);\n e[NG_TOKEN_PATH] = tokenPath;\n e[NG_TEMP_TOKEN_PATH] = null;\n throw e;\n }\n };\n StaticInjector.prototype.toString = function () {\n var tokens = [], records = this._records;\n records.forEach(function (v, token) { return tokens.push(stringify(token)); });\n return \"StaticInjector[\" + tokens.join(', ') + \"]\";\n };\n return StaticInjector;\n}());\nfunction resolveProvider(provider) {\n var deps = computeDeps(provider);\n var fn = IDENT;\n var value = EMPTY;\n var useNew = false;\n var provide = resolveForwardRef(provider.provide);\n if (USE_VALUE in provider) {\n // We need to use USE_VALUE in provider since provider.useValue could be defined as undefined.\n value = provider.useValue;\n }\n else if (provider.useFactory) {\n fn = provider.useFactory;\n }\n else if (provider.useExisting) ;\n else if (provider.useClass) {\n useNew = true;\n fn = resolveForwardRef(provider.useClass);\n }\n else if (typeof provide == 'function') {\n useNew = true;\n fn = provide;\n }\n else {\n throw staticError('StaticProvider does not have [useValue|useFactory|useExisting|useClass] or [provide] is not newable', provider);\n }\n return { deps: deps, fn: fn, useNew: useNew, value: value };\n}\nfunction multiProviderMixError(token) {\n return staticError('Cannot mix multi providers and regular providers', token);\n}\nfunction recursivelyProcessProviders(records, provider) {\n if (provider) {\n provider = resolveForwardRef(provider);\n if (provider instanceof Array) {\n // if we have an array recurse into the array\n for (var i = 0; i < provider.length; i++) {\n recursivelyProcessProviders(records, provider[i]);\n }\n }\n else if (typeof provider === 'function') {\n // Functions were supported in ReflectiveInjector, but are not here. For safety give useful\n // error messages\n throw staticError('Function/Class not supported', provider);\n }\n else if (provider && typeof provider === 'object' && provider.provide) {\n // At this point we have what looks like a provider: {provide: ?, ....}\n var token = resolveForwardRef(provider.provide);\n var resolvedProvider = resolveProvider(provider);\n if (provider.multi === true) {\n // This is a multi provider.\n var multiProvider = records.get(token);\n if (multiProvider) {\n if (multiProvider.fn !== MULTI_PROVIDER_FN) {\n throw multiProviderMixError(token);\n }\n }\n else {\n // Create a placeholder factory which will look up the constituents of the multi provider.\n records.set(token, multiProvider = {\n token: provider.provide,\n deps: [],\n useNew: false,\n fn: MULTI_PROVIDER_FN,\n value: EMPTY\n });\n }\n // Treat the provider as the token.\n token = provider;\n multiProvider.deps.push({ token: token, options: 6 /* Default */ });\n }\n var record = records.get(token);\n if (record && record.fn == MULTI_PROVIDER_FN) {\n throw multiProviderMixError(token);\n }\n records.set(token, resolvedProvider);\n }\n else {\n throw staticError('Unexpected provider', provider);\n }\n }\n}\nfunction tryResolveToken(token, record, records, parent, notFoundValue, flags) {\n try {\n return resolveToken(token, record, records, parent, notFoundValue, flags);\n }\n catch (e) {\n // ensure that 'e' is of type Error.\n if (!(e instanceof Error)) {\n e = new Error(e);\n }\n var path = e[NG_TEMP_TOKEN_PATH] = e[NG_TEMP_TOKEN_PATH] || [];\n path.unshift(token);\n if (record && record.value == CIRCULAR) {\n // Reset the Circular flag.\n record.value = EMPTY;\n }\n throw e;\n }\n}\nfunction resolveToken(token, record, records, parent, notFoundValue, flags) {\n var _a;\n var value;\n if (record && !(flags & InjectFlags.SkipSelf)) {\n // If we don't have a record, this implies that we don't own the provider hence don't know how\n // to resolve it.\n value = record.value;\n if (value == CIRCULAR) {\n throw Error(NO_NEW_LINE + 'Circular dependency');\n }\n else if (value === EMPTY) {\n record.value = CIRCULAR;\n var obj = undefined;\n var useNew = record.useNew;\n var fn = record.fn;\n var depRecords = record.deps;\n var deps = EMPTY;\n if (depRecords.length) {\n deps = [];\n for (var i = 0; i < depRecords.length; i++) {\n var depRecord = depRecords[i];\n var options = depRecord.options;\n var childRecord = options & 2 /* CheckSelf */ ? records.get(depRecord.token) : undefined;\n deps.push(tryResolveToken(\n // Current Token to resolve\n depRecord.token, \n // A record which describes how to resolve the token.\n // If undefined, this means we don't have such a record\n childRecord, \n // Other records we know about.\n records, \n // If we don't know how to resolve dependency and we should not check parent for it,\n // than pass in Null injector.\n !childRecord && !(options & 4 /* CheckParent */) ? NULL_INJECTOR$1 : parent, options & 1 /* Optional */ ? null : Injector.THROW_IF_NOT_FOUND, InjectFlags.Default));\n }\n }\n record.value = value = useNew ? new ((_a = fn).bind.apply(_a, __spread([void 0], deps)))() : fn.apply(obj, deps);\n }\n }\n else if (!(flags & InjectFlags.Self)) {\n value = parent.get(token, notFoundValue, InjectFlags.Default);\n }\n return value;\n}\nfunction computeDeps(provider) {\n var deps = EMPTY;\n var providerDeps = provider.deps;\n if (providerDeps && providerDeps.length) {\n deps = [];\n for (var i = 0; i < providerDeps.length; i++) {\n var options = 6 /* Default */;\n var token = resolveForwardRef(providerDeps[i]);\n if (token instanceof Array) {\n for (var j = 0, annotations = token; j < annotations.length; j++) {\n var annotation = annotations[j];\n if (annotation instanceof Optional || annotation == Optional) {\n options = options | 1 /* Optional */;\n }\n else if (annotation instanceof SkipSelf || annotation == SkipSelf) {\n options = options & ~2 /* CheckSelf */;\n }\n else if (annotation instanceof Self || annotation == Self) {\n options = options & ~4 /* CheckParent */;\n }\n else if (annotation instanceof Inject) {\n token = annotation.token;\n }\n else {\n token = resolveForwardRef(annotation);\n }\n }\n }\n deps.push({ token: token, options: options });\n }\n }\n else if (provider.useExisting) {\n var token = resolveForwardRef(provider.useExisting);\n deps = [{ token: token, options: 6 /* Default */ }];\n }\n else if (!providerDeps && !(USE_VALUE in provider)) {\n // useValue & useExisting are the only ones which are exempt from deps all others need it.\n throw staticError('\\'deps\\' required', provider);\n }\n return deps;\n}\nfunction formatError(text, obj, source) {\n if (source === void 0) { source = null; }\n text = text && text.charAt(0) === '\\n' && text.charAt(1) == NO_NEW_LINE ? text.substr(2) : text;\n var context = stringify(obj);\n if (obj instanceof Array) {\n context = obj.map(stringify).join(' -> ');\n }\n else if (typeof obj === 'object') {\n var parts = [];\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n var value = obj[key];\n parts.push(key + ':' + (typeof value === 'string' ? JSON.stringify(value) : stringify(value)));\n }\n }\n context = \"{\" + parts.join(', ') + \"}\";\n }\n return \"StaticInjectorError\" + (source ? '(' + source + ')' : '') + \"[\" + context + \"]: \" + text.replace(NEW_LINE, '\\n ');\n}\nfunction staticError(text, obj) {\n return new Error(formatError(text, obj));\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * An internal token whose presence in an injector indicates that the injector should treat itself\n * as a root scoped injector when processing requests for unknown tokens which may indicate\n * they are provided in the root scope.\n */\nvar APP_ROOT = new InjectionToken('The presence of this token marks an injector as being the root injector.');\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Marker which indicates that a value has not yet been created from the factory function.\n */\nvar NOT_YET = {};\n/**\n * Marker which indicates that the factory function for a token is in the process of being called.\n *\n * If the injector is asked to inject a token with its value set to CIRCULAR, that indicates\n * injection of a dependency has recursively attempted to inject the original token, and there is\n * a circular dependency among the providers.\n */\nvar CIRCULAR$1 = {};\nvar EMPTY_ARRAY$1 = [];\n/**\n * A lazily initialized NullInjector.\n */\nvar NULL_INJECTOR$2 = undefined;\nfunction getNullInjector() {\n if (NULL_INJECTOR$2 === undefined) {\n NULL_INJECTOR$2 = new NullInjector();\n }\n return NULL_INJECTOR$2;\n}\n/**\n * Create a new `Injector` which is configured using a `defType` of `InjectorType`s.\n *\n * @publicApi\n */\nfunction createInjector(defType, parent, additionalProviders) {\n if (parent === void 0) { parent = null; }\n if (additionalProviders === void 0) { additionalProviders = null; }\n parent = parent || getNullInjector();\n return new R3Injector(defType, additionalProviders, parent);\n}\nvar R3Injector = /** @class */ (function () {\n function R3Injector(def, additionalProviders, parent) {\n var _this = this;\n this.parent = parent;\n /**\n * Map of tokens to records which contain the instances of those tokens.\n */\n this.records = new Map();\n /**\n * The transitive set of `InjectorType`s which define this injector.\n */\n this.injectorDefTypes = new Set();\n /**\n * Set of values instantiated by this injector which contain `ngOnDestroy` lifecycle hooks.\n */\n this.onDestroy = new Set();\n /**\n * Flag indicating that this injector was previously destroyed.\n */\n this.destroyed = false;\n // Start off by creating Records for every provider declared in every InjectorType\n // included transitively in `def`.\n var dedupStack = [];\n deepForEach([def], function (injectorDef) { return _this.processInjectorType(injectorDef, [], dedupStack); });\n additionalProviders && deepForEach(additionalProviders, function (provider) { return _this.processProvider(provider, def, additionalProviders); });\n // Make sure the INJECTOR token provides this injector.\n this.records.set(INJECTOR$1, makeRecord(undefined, this));\n // Detect whether this injector has the APP_ROOT_SCOPE token and thus should provide\n // any injectable scoped to APP_ROOT_SCOPE.\n this.isRootInjector = this.records.has(APP_ROOT);\n // Eagerly instantiate the InjectorType classes themselves.\n this.injectorDefTypes.forEach(function (defType) { return _this.get(defType); });\n }\n /**\n * Destroy the injector and release references to every instance or provider associated with it.\n *\n * Also calls the `OnDestroy` lifecycle hooks of every instance that was created for which a\n * hook was found.\n */\n R3Injector.prototype.destroy = function () {\n this.assertNotDestroyed();\n // Set destroyed = true first, in case lifecycle hooks re-enter destroy().\n this.destroyed = true;\n try {\n // Call all the lifecycle hooks.\n this.onDestroy.forEach(function (service) { return service.ngOnDestroy(); });\n }\n finally {\n // Release all references.\n this.records.clear();\n this.onDestroy.clear();\n this.injectorDefTypes.clear();\n }\n };\n R3Injector.prototype.get = function (token, notFoundValue, flags) {\n if (notFoundValue === void 0) { notFoundValue = THROW_IF_NOT_FOUND; }\n if (flags === void 0) { flags = InjectFlags.Default; }\n this.assertNotDestroyed();\n // Set the injection context.\n var previousInjector = setCurrentInjector(this);\n try {\n // Check for the SkipSelf flag.\n if (!(flags & InjectFlags.SkipSelf)) {\n // SkipSelf isn't set, check if the record belongs to this injector.\n var record = this.records.get(token);\n if (record === undefined) {\n // No record, but maybe the token is scoped to this injector. Look for an ngInjectableDef\n // with a scope matching this injector.\n var def = couldBeInjectableType(token) && getInjectableDef(token);\n if (def && this.injectableDefInScope(def)) {\n // Found an ngInjectableDef and it's scoped to this injector. Pretend as if it was here\n // all along.\n record = makeRecord(injectableDefOrInjectorDefFactory(token), NOT_YET);\n this.records.set(token, record);\n }\n }\n // If a record was found, get the instance for it and return it.\n if (record !== undefined) {\n return this.hydrate(token, record);\n }\n }\n // Select the next injector based on the Self flag - if self is set, the next injector is\n // the NullInjector, otherwise it's the parent.\n var nextInjector = !(flags & InjectFlags.Self) ? this.parent : getNullInjector();\n return nextInjector.get(token, notFoundValue);\n }\n finally {\n // Lastly, clean up the state by restoring the previous injector.\n setCurrentInjector(previousInjector);\n }\n };\n R3Injector.prototype.assertNotDestroyed = function () {\n if (this.destroyed) {\n throw new Error('Injector has already been destroyed.');\n }\n };\n /**\n * Add an `InjectorType` or `InjectorDefTypeWithProviders` and all of its transitive providers\n * to this injector.\n */\n R3Injector.prototype.processInjectorType = function (defOrWrappedDef, parents, dedupStack) {\n var _this = this;\n defOrWrappedDef = resolveForwardRef(defOrWrappedDef);\n if (!defOrWrappedDef)\n return;\n // Either the defOrWrappedDef is an InjectorType (with ngInjectorDef) or an\n // InjectorDefTypeWithProviders (aka ModuleWithProviders). Detecting either is a megamorphic\n // read, so care is taken to only do the read once.\n // First attempt to read the ngInjectorDef.\n var def = getInjectorDef(defOrWrappedDef);\n // If that's not present, then attempt to read ngModule from the InjectorDefTypeWithProviders.\n var ngModule = (def == null) && defOrWrappedDef.ngModule || undefined;\n // Determine the InjectorType. In the case where `defOrWrappedDef` is an `InjectorType`,\n // then this is easy. In the case of an InjectorDefTypeWithProviders, then the definition type\n // is the `ngModule`.\n var defType = (ngModule === undefined) ? defOrWrappedDef : ngModule;\n // Check for circular dependencies.\n if (ngDevMode && parents.indexOf(defType) !== -1) {\n var defName = stringify(defType);\n throw new Error(\"Circular dependency in DI detected for type \" + defName + \". Dependency path: \" + parents.map(function (defType) { return stringify(defType); }).join(' > ') + \" > \" + defName + \".\");\n }\n // Check for multiple imports of the same module\n var isDuplicate = dedupStack.indexOf(defType) !== -1;\n // If defOrWrappedType was an InjectorDefTypeWithProviders, then .providers may hold some\n // extra providers.\n var providers = (ngModule !== undefined) && defOrWrappedDef.providers ||\n EMPTY_ARRAY$1;\n // Finally, if defOrWrappedType was an `InjectorDefTypeWithProviders`, then the actual\n // `InjectorDef` is on its `ngModule`.\n if (ngModule !== undefined) {\n def = getInjectorDef(ngModule);\n }\n // If no definition was found, it might be from exports. Remove it.\n if (def == null) {\n return;\n }\n // Track the InjectorType and add a provider for it.\n this.injectorDefTypes.add(defType);\n this.records.set(defType, makeRecord(def.factory, NOT_YET));\n // Add providers in the same way that @NgModule resolution did:\n // First, include providers from any imports.\n if (def.imports != null && !isDuplicate) {\n // Before processing defType's imports, add it to the set of parents. This way, if it ends\n // up deeply importing itself, this can be detected.\n ngDevMode && parents.push(defType);\n // Add it to the set of dedups. This way we can detect multiple imports of the same module\n dedupStack.push(defType);\n try {\n deepForEach(def.imports, function (imported) { return _this.processInjectorType(imported, parents, dedupStack); });\n }\n finally {\n // Remove it from the parents set when finished.\n ngDevMode && parents.pop();\n }\n }\n // Next, include providers listed on the definition itself.\n var defProviders = def.providers;\n if (defProviders != null && !isDuplicate) {\n var injectorType_1 = defOrWrappedDef;\n deepForEach(defProviders, function (provider) { return _this.processProvider(provider, injectorType_1, defProviders); });\n }\n // Finally, include providers from an InjectorDefTypeWithProviders if there was one.\n var ngModuleType = defOrWrappedDef.ngModule;\n deepForEach(providers, function (provider) { return _this.processProvider(provider, ngModuleType, providers); });\n };\n /**\n * Process a `SingleProvider` and add it.\n */\n R3Injector.prototype.processProvider = function (provider, ngModuleType, providers) {\n // Determine the token from the provider. Either it's its own token, or has a {provide: ...}\n // property.\n provider = resolveForwardRef(provider);\n var token = isTypeProvider(provider) ? provider : resolveForwardRef(provider && provider.provide);\n // Construct a `Record` for the provider.\n var record = providerToRecord(provider, ngModuleType, providers);\n if (!isTypeProvider(provider) && provider.multi === true) {\n // If the provider indicates that it's a multi-provider, process it specially.\n // First check whether it's been defined already.\n var multiRecord_1 = this.records.get(token);\n if (multiRecord_1) {\n // It has. Throw a nice error if\n if (multiRecord_1.multi === undefined) {\n throw new Error(\"Mixed multi-provider for \" + token + \".\");\n }\n }\n else {\n multiRecord_1 = makeRecord(undefined, NOT_YET, true);\n multiRecord_1.factory = function () { return injectArgs(multiRecord_1.multi); };\n this.records.set(token, multiRecord_1);\n }\n token = provider;\n multiRecord_1.multi.push(provider);\n }\n else {\n var existing = this.records.get(token);\n if (existing && existing.multi !== undefined) {\n throw new Error(\"Mixed multi-provider for \" + stringify(token));\n }\n }\n this.records.set(token, record);\n };\n R3Injector.prototype.hydrate = function (token, record) {\n if (record.value === CIRCULAR$1) {\n throw new Error(\"Cannot instantiate cyclic dependency! \" + stringify(token));\n }\n else if (record.value === NOT_YET) {\n record.value = CIRCULAR$1;\n record.value = record.factory();\n }\n if (typeof record.value === 'object' && record.value && hasOnDestroy(record.value)) {\n this.onDestroy.add(record.value);\n }\n return record.value;\n };\n R3Injector.prototype.injectableDefInScope = function (def) {\n if (!def.providedIn) {\n return false;\n }\n else if (typeof def.providedIn === 'string') {\n return def.providedIn === 'any' || (def.providedIn === 'root' && this.isRootInjector);\n }\n else {\n return this.injectorDefTypes.has(def.providedIn);\n }\n };\n return R3Injector;\n}());\nfunction injectableDefOrInjectorDefFactory(token) {\n var injectableDef = getInjectableDef(token);\n if (injectableDef === null) {\n var injectorDef = getInjectorDef(token);\n if (injectorDef !== null) {\n return injectorDef.factory;\n }\n else if (token instanceof InjectionToken) {\n throw new Error(\"Token \" + stringify(token) + \" is missing an ngInjectableDef definition.\");\n }\n else if (token instanceof Function) {\n var paramLength = token.length;\n if (paramLength > 0) {\n var args = new Array(paramLength).fill('?');\n throw new Error(\"Can't resolve all parameters for \" + stringify(token) + \": (\" + args.join(', ') + \").\");\n }\n return function () { return new token(); };\n }\n throw new Error('unreachable');\n }\n return injectableDef.factory;\n}\nfunction providerToRecord(provider, ngModuleType, providers) {\n var factory = providerToFactory(provider, ngModuleType, providers);\n if (isValueProvider(provider)) {\n return makeRecord(undefined, provider.useValue);\n }\n else {\n return makeRecord(factory, NOT_YET);\n }\n}\n/**\n * Converts a `SingleProvider` into a factory function.\n *\n * @param provider provider to convert to factory\n */\nfunction providerToFactory(provider, ngModuleType, providers) {\n var factory = undefined;\n if (isTypeProvider(provider)) {\n return injectableDefOrInjectorDefFactory(resolveForwardRef(provider));\n }\n else {\n if (isValueProvider(provider)) {\n factory = function () { return resolveForwardRef(provider.useValue); };\n }\n else if (isExistingProvider(provider)) {\n factory = function () { return inject(resolveForwardRef(provider.useExisting)); };\n }\n else if (isFactoryProvider(provider)) {\n factory = function () { return provider.useFactory.apply(provider, __spread(injectArgs(provider.deps || []))); };\n }\n else {\n var classRef_1 = resolveForwardRef(provider &&\n (provider.useClass || provider.provide));\n if (!classRef_1) {\n var ngModuleDetail = '';\n if (ngModuleType && providers) {\n var providerDetail = providers.map(function (v) { return v == provider ? '?' + provider + '?' : '...'; });\n ngModuleDetail =\n \" - only instances of Provider and Type are allowed, got: [\" + providerDetail.join(', ') + \"]\";\n }\n throw new Error(\"Invalid provider for the NgModule '\" + stringify(ngModuleType) + \"'\" + ngModuleDetail);\n }\n if (hasDeps(provider)) {\n factory = function () { return new ((classRef_1).bind.apply((classRef_1), __spread([void 0], injectArgs(provider.deps))))(); };\n }\n else {\n return injectableDefOrInjectorDefFactory(classRef_1);\n }\n }\n }\n return factory;\n}\nfunction makeRecord(factory, value, multi) {\n if (multi === void 0) { multi = false; }\n return {\n factory: factory,\n value: value,\n multi: multi ? [] : undefined,\n };\n}\nfunction deepForEach(input, fn) {\n input.forEach(function (value) { return Array.isArray(value) ? deepForEach(value, fn) : fn(value); });\n}\nfunction isValueProvider(value) {\n return value && typeof value == 'object' && USE_VALUE in value;\n}\nfunction isExistingProvider(value) {\n return !!(value && value.useExisting);\n}\nfunction isFactoryProvider(value) {\n return !!(value && value.useFactory);\n}\nfunction isTypeProvider(value) {\n return typeof value === 'function';\n}\nfunction hasDeps(value) {\n return !!value.deps;\n}\nfunction hasOnDestroy(value) {\n return typeof value === 'object' && value != null && value.ngOnDestroy &&\n typeof value.ngOnDestroy === 'function';\n}\nfunction couldBeInjectableType(value) {\n return (typeof value === 'function') ||\n (typeof value === 'object' && value instanceof InjectionToken);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Resolves the providers which are defined in the DirectiveDef.\n *\n * When inserting the tokens and the factories in their respective arrays, we can assume that\n * this method is called first for the component (if any), and then for other directives on the same\n * node.\n * As a consequence,the providers are always processed in that order:\n * 1) The view providers of the component\n * 2) The providers of the component\n * 3) The providers of the other directives\n * This matches the structure of the injectables arrays of a view (for each node).\n * So the tokens and the factories can be pushed at the end of the arrays, except\n * in one case for multi providers.\n *\n * @param def the directive definition\n * @param providers: Array of `providers`.\n * @param viewProviders: Array of `viewProviders`.\n */\nfunction providersResolver(def, providers, viewProviders) {\n var lView = getLView();\n var tView = lView[TVIEW];\n if (tView.firstTemplatePass) {\n var isComponent$$1 = isComponentDef(def);\n // The list of view providers is processed first, and the flags are updated\n resolveProvider$1(viewProviders, tView.data, tView.blueprint, isComponent$$1, true);\n // Then, the list of providers is processed, and the flags are updated\n resolveProvider$1(providers, tView.data, tView.blueprint, isComponent$$1, false);\n }\n}\n/**\n * Resolves a provider and publishes it to the DI system.\n */\nfunction resolveProvider$1(provider, tInjectables, lInjectablesBlueprint, isComponent$$1, isViewProvider) {\n provider = resolveForwardRef(provider);\n if (Array.isArray(provider)) {\n // Recursively call `resolveProvider`\n // Recursion is OK in this case because this code will not be in hot-path once we implement\n // cloning of the initial state.\n for (var i = 0; i < provider.length; i++) {\n resolveProvider$1(provider[i], tInjectables, lInjectablesBlueprint, isComponent$$1, isViewProvider);\n }\n }\n else {\n var lView = getLView();\n var token = isTypeProvider(provider) ? provider : resolveForwardRef(provider.provide);\n var providerFactory = providerToFactory(provider);\n var tNode = getPreviousOrParentTNode();\n var beginIndex = tNode.providerIndexes & 65535 /* ProvidersStartIndexMask */;\n var endIndex = tNode.directiveStart;\n var cptViewProvidersCount = tNode.providerIndexes >> 16 /* CptViewProvidersCountShift */;\n if (isTypeProvider(provider) || !provider.multi) {\n // Single provider case: the factory is created and pushed immediately\n var factory = new NodeInjectorFactory(providerFactory, isViewProvider, directiveInject);\n var existingFactoryIndex = indexOf(token, tInjectables, isViewProvider ? beginIndex : beginIndex + cptViewProvidersCount, endIndex);\n if (existingFactoryIndex == -1) {\n diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, lView), lView, token);\n tInjectables.push(token);\n tNode.directiveStart++;\n tNode.directiveEnd++;\n if (isViewProvider) {\n tNode.providerIndexes += 65536 /* CptViewProvidersCountShifter */;\n }\n lInjectablesBlueprint.push(factory);\n lView.push(factory);\n }\n else {\n lInjectablesBlueprint[existingFactoryIndex] = factory;\n lView[existingFactoryIndex] = factory;\n }\n }\n else {\n // Multi provider case:\n // We create a multi factory which is going to aggregate all the values.\n // Since the output of such a factory depends on content or view injection,\n // we create two of them, which are linked together.\n //\n // The first one (for view providers) is always in the first block of the injectables array,\n // and the second one (for providers) is always in the second block.\n // This is important because view providers have higher priority. When a multi token\n // is being looked up, the view providers should be found first.\n // Note that it is not possible to have a multi factory in the third block (directive block).\n //\n // The algorithm to process multi providers is as follows:\n // 1) If the multi provider comes from the `viewProviders` of the component:\n // a) If the special view providers factory doesn't exist, it is created and pushed.\n // b) Else, the multi provider is added to the existing multi factory.\n // 2) If the multi provider comes from the `providers` of the component or of another\n // directive:\n // a) If the multi factory doesn't exist, it is created and provider pushed into it.\n // It is also linked to the multi factory for view providers, if it exists.\n // b) Else, the multi provider is added to the existing multi factory.\n var existingProvidersFactoryIndex = indexOf(token, tInjectables, beginIndex + cptViewProvidersCount, endIndex);\n var existingViewProvidersFactoryIndex = indexOf(token, tInjectables, beginIndex, beginIndex + cptViewProvidersCount);\n var doesProvidersFactoryExist = existingProvidersFactoryIndex >= 0 &&\n lInjectablesBlueprint[existingProvidersFactoryIndex];\n var doesViewProvidersFactoryExist = existingViewProvidersFactoryIndex >= 0 &&\n lInjectablesBlueprint[existingViewProvidersFactoryIndex];\n if (isViewProvider && !doesViewProvidersFactoryExist ||\n !isViewProvider && !doesProvidersFactoryExist) {\n // Cases 1.a and 2.a\n diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, lView), lView, token);\n var factory = multiFactory(isViewProvider ? multiViewProvidersFactoryResolver : multiProvidersFactoryResolver, lInjectablesBlueprint.length, isViewProvider, isComponent$$1, providerFactory);\n if (!isViewProvider && doesViewProvidersFactoryExist) {\n lInjectablesBlueprint[existingViewProvidersFactoryIndex].providerFactory = factory;\n }\n tInjectables.push(token);\n tNode.directiveStart++;\n tNode.directiveEnd++;\n if (isViewProvider) {\n tNode.providerIndexes += 65536 /* CptViewProvidersCountShifter */;\n }\n lInjectablesBlueprint.push(factory);\n lView.push(factory);\n }\n else {\n // Cases 1.b and 2.b\n multiFactoryAdd(lInjectablesBlueprint[isViewProvider ? existingViewProvidersFactoryIndex : existingProvidersFactoryIndex], providerFactory, !isViewProvider && isComponent$$1);\n }\n if (!isViewProvider && isComponent$$1 && doesViewProvidersFactoryExist) {\n lInjectablesBlueprint[existingViewProvidersFactoryIndex].componentProviders++;\n }\n }\n }\n}\n/**\n * Add a factory in a multi factory.\n */\nfunction multiFactoryAdd(multiFactory, factory, isComponentProvider) {\n multiFactory.multi.push(factory);\n if (isComponentProvider) {\n multiFactory.componentProviders++;\n }\n}\n/**\n * Returns the index of item in the array, but only in the begin to end range.\n */\nfunction indexOf(item, arr, begin, end) {\n for (var i = begin; i < end; i++) {\n if (arr[i] === item)\n return i;\n }\n return -1;\n}\n/**\n * Use this with `multi` `providers`.\n */\nfunction multiProvidersFactoryResolver(_, tData, lData, tNode) {\n return multiResolve(this.multi, []);\n}\n/**\n * Use this with `multi` `viewProviders`.\n *\n * This factory knows how to concatenate itself with the existing `multi` `providers`.\n */\nfunction multiViewProvidersFactoryResolver(_, tData, lData, tNode) {\n var factories = this.multi;\n var result;\n if (this.providerFactory) {\n var componentCount = this.providerFactory.componentProviders;\n var multiProviders = getNodeInjectable(tData, lData, this.providerFactory.index, tNode);\n // Copy the section of the array which contains `multi` `providers` from the component\n result = multiProviders.slice(0, componentCount);\n // Insert the `viewProvider` instances.\n multiResolve(factories, result);\n // Copy the section of the array which contains `multi` `providers` from other directives\n for (var i = componentCount; i < multiProviders.length; i++) {\n result.push(multiProviders[i]);\n }\n }\n else {\n result = [];\n // Insert the `viewProvider` instances.\n multiResolve(factories, result);\n }\n return result;\n}\n/**\n * Maps an array of factories into an array of values.\n */\nfunction multiResolve(factories, result) {\n for (var i = 0; i < factories.length; i++) {\n var factory = factories[i];\n result.push(factory());\n }\n return result;\n}\n/**\n * Creates a multi factory.\n */\nfunction multiFactory(factoryFn, index, isViewProvider, isComponent$$1, f) {\n var factory = new NodeInjectorFactory(factoryFn, isViewProvider, directiveInject);\n factory.multi = [];\n factory.index = index;\n factory.componentProviders = 0;\n multiFactoryAdd(factory, f, isComponent$$1 && !isViewProvider);\n return factory;\n}\n\n/**\n * This feature resolves the providers of a directive (or component),\n * and publish them into the DI system, making it visible to others for injection.\n *\n * For example:\n * class ComponentWithProviders {\n * constructor(private greeter: GreeterDE) {}\n *\n * static ngComponentDef = defineComponent({\n * type: ComponentWithProviders,\n * selectors: [['component-with-providers']],\n * factory: () => new ComponentWithProviders(directiveInject(GreeterDE as any)),\n * consts: 1,\n * vars: 1,\n * template: function(fs: RenderFlags, ctx: ComponentWithProviders) {\n * if (fs & RenderFlags.Create) {\n * text(0);\n * }\n * if (fs & RenderFlags.Update) {\n * textBinding(0, bind(ctx.greeter.greet()));\n * }\n * },\n * features: [ProvidersFeature([GreeterDE])]\n * });\n * }\n *\n * @param definition\n */\nfunction ProvidersFeature(providers, viewProviders) {\n if (viewProviders === void 0) { viewProviders = []; }\n return function (definition) {\n definition.providersResolver = function (def) {\n return providersResolver(def, providers, viewProviders);\n };\n };\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Represents a component created by a `ComponentFactory`.\n * Provides access to the component instance and related objects,\n * and provides the means of destroying the instance.\n *\n * @publicApi\n */\nvar ComponentRef = /** @class */ (function () {\n function ComponentRef() {\n }\n return ComponentRef;\n}());\n/**\n * @publicApi\n */\nvar ComponentFactory = /** @class */ (function () {\n function ComponentFactory() {\n }\n return ComponentFactory;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction noComponentFactoryError(component) {\n var error = Error(\"No component factory found for \" + stringify(component) + \". Did you add it to @NgModule.entryComponents?\");\n error[ERROR_COMPONENT] = component;\n return error;\n}\nvar ERROR_COMPONENT = 'ngComponent';\nvar _NullComponentFactoryResolver = /** @class */ (function () {\n function _NullComponentFactoryResolver() {\n }\n _NullComponentFactoryResolver.prototype.resolveComponentFactory = function (component) {\n throw noComponentFactoryError(component);\n };\n return _NullComponentFactoryResolver;\n}());\n/**\n * @publicApi\n */\nvar ComponentFactoryResolver = /** @class */ (function () {\n function ComponentFactoryResolver() {\n }\n ComponentFactoryResolver.NULL = new _NullComponentFactoryResolver();\n return ComponentFactoryResolver;\n}());\nvar CodegenComponentFactoryResolver = /** @class */ (function () {\n function CodegenComponentFactoryResolver(factories, _parent, _ngModule) {\n this._parent = _parent;\n this._ngModule = _ngModule;\n this._factories = new Map();\n for (var i = 0; i < factories.length; i++) {\n var factory = factories[i];\n this._factories.set(factory.componentType, factory);\n }\n }\n CodegenComponentFactoryResolver.prototype.resolveComponentFactory = function (component) {\n var factory = this._factories.get(component);\n if (!factory && this._parent) {\n factory = this._parent.resolveComponentFactory(component);\n }\n if (!factory) {\n throw noComponentFactoryError(component);\n }\n return new ComponentFactoryBoundToModule(factory, this._ngModule);\n };\n return CodegenComponentFactoryResolver;\n}());\nvar ComponentFactoryBoundToModule = /** @class */ (function (_super) {\n __extends(ComponentFactoryBoundToModule, _super);\n function ComponentFactoryBoundToModule(factory, ngModule) {\n var _this = _super.call(this) || this;\n _this.factory = factory;\n _this.ngModule = ngModule;\n _this.selector = factory.selector;\n _this.componentType = factory.componentType;\n _this.ngContentSelectors = factory.ngContentSelectors;\n _this.inputs = factory.inputs;\n _this.outputs = factory.outputs;\n return _this;\n }\n ComponentFactoryBoundToModule.prototype.create = function (injector, projectableNodes, rootSelectorOrNode, ngModule) {\n return this.factory.create(injector, projectableNodes, rootSelectorOrNode, ngModule || this.ngModule);\n };\n return ComponentFactoryBoundToModule;\n}(ComponentFactory));\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Represents an instance of an NgModule created via a {@link NgModuleFactory}.\n *\n * `NgModuleRef` provides access to the NgModule Instance as well other objects related to this\n * NgModule Instance.\n *\n * @publicApi\n */\nvar NgModuleRef = /** @class */ (function () {\n function NgModuleRef() {\n }\n return NgModuleRef;\n}());\n/**\n * @publicApi\n */\nvar NgModuleFactory = /** @class */ (function () {\n function NgModuleFactory() {\n }\n return NgModuleFactory;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar ViewRef = /** @class */ (function () {\n function ViewRef(_lView, _context, _componentIndex) {\n this._context = _context;\n this._componentIndex = _componentIndex;\n this._appRef = null;\n this._viewContainerRef = null;\n /**\n * @internal\n */\n this._tViewNode = null;\n this._lView = _lView;\n }\n Object.defineProperty(ViewRef.prototype, \"rootNodes\", {\n get: function () {\n if (this._lView[HOST] == null) {\n var tView = this._lView[HOST_NODE];\n return collectNativeNodes(this._lView, tView, []);\n }\n return [];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewRef.prototype, \"context\", {\n get: function () { return this._context ? this._context : this._lookUpContext(); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewRef.prototype, \"destroyed\", {\n get: function () {\n return (this._lView[FLAGS] & 64 /* Destroyed */) === 64 /* Destroyed */;\n },\n enumerable: true,\n configurable: true\n });\n ViewRef.prototype.destroy = function () {\n if (this._appRef) {\n this._appRef.detachView(this);\n }\n else if (this._viewContainerRef) {\n var index = this._viewContainerRef.indexOf(this);\n if (index > -1) {\n this._viewContainerRef.detach(index);\n }\n this._viewContainerRef = null;\n }\n destroyLView(this._lView);\n };\n ViewRef.prototype.onDestroy = function (callback) { storeCleanupFn(this._lView, callback); };\n /**\n * Marks a view and all of its ancestors dirty.\n *\n * It also triggers change detection by calling `scheduleTick` internally, which coalesces\n * multiple `markForCheck` calls to into one change detection run.\n *\n * This can be used to ensure an {@link ChangeDetectionStrategy#OnPush OnPush} component is\n * checked when it needs to be re-rendered but the two normal triggers haven't marked it\n * dirty (i.e. inputs haven't changed and events haven't fired in the view).\n *\n * \n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * @Component({\n * selector: 'my-app',\n * template: `Number of ticks: {{numberOfTicks}}`\n * changeDetection: ChangeDetectionStrategy.OnPush,\n * })\n * class AppComponent {\n * numberOfTicks = 0;\n *\n * constructor(private ref: ChangeDetectorRef) {\n * setInterval(() => {\n * this.numberOfTicks++;\n * // the following is required, otherwise the view will not be updated\n * this.ref.markForCheck();\n * }, 1000);\n * }\n * }\n * ```\n */\n ViewRef.prototype.markForCheck = function () { markViewDirty(this._lView); };\n /**\n * Detaches the view from the change detection tree.\n *\n * Detached views will not be checked during change detection runs until they are\n * re-attached, even if they are dirty. `detach` can be used in combination with\n * {@link ChangeDetectorRef#detectChanges detectChanges} to implement local change\n * detection checks.\n *\n * \n * \n *\n * @usageNotes\n * ### Example\n *\n * The following example defines a component with a large list of readonly data.\n * Imagine the data changes constantly, many times per second. For performance reasons,\n * we want to check and update the list every five seconds. We can do that by detaching\n * the component's change detector and doing a local check every five seconds.\n *\n * ```typescript\n * class DataProvider {\n * // in a real application the returned data will be different every time\n * get data() {\n * return [1,2,3,4,5];\n * }\n * }\n *\n * @Component({\n * selector: 'giant-list',\n * template: `\n *
  • Data {{d}}
  • \n * `,\n * })\n * class GiantList {\n * constructor(private ref: ChangeDetectorRef, private dataProvider: DataProvider) {\n * ref.detach();\n * setInterval(() => {\n * this.ref.detectChanges();\n * }, 5000);\n * }\n * }\n *\n * @Component({\n * selector: 'app',\n * providers: [DataProvider],\n * template: `\n * \n * `,\n * })\n * class App {\n * }\n * ```\n */\n ViewRef.prototype.detach = function () { this._lView[FLAGS] &= ~16 /* Attached */; };\n /**\n * Re-attaches a view to the change detection tree.\n *\n * This can be used to re-attach views that were previously detached from the tree\n * using {@link ChangeDetectorRef#detach detach}. Views are attached to the tree by default.\n *\n * \n *\n * @usageNotes\n * ### Example\n *\n * The following example creates a component displaying `live` data. The component will detach\n * its change detector from the main change detector tree when the component's live property\n * is set to false.\n *\n * ```typescript\n * class DataProvider {\n * data = 1;\n *\n * constructor() {\n * setInterval(() => {\n * this.data = this.data * 2;\n * }, 500);\n * }\n * }\n *\n * @Component({\n * selector: 'live-data',\n * inputs: ['live'],\n * template: 'Data: {{dataProvider.data}}'\n * })\n * class LiveData {\n * constructor(private ref: ChangeDetectorRef, private dataProvider: DataProvider) {}\n *\n * set live(value) {\n * if (value) {\n * this.ref.reattach();\n * } else {\n * this.ref.detach();\n * }\n * }\n * }\n *\n * @Component({\n * selector: 'my-app',\n * providers: [DataProvider],\n * template: `\n * Live Update: \n * \n * `,\n * })\n * class AppComponent {\n * live = true;\n * }\n * ```\n */\n ViewRef.prototype.reattach = function () { this._lView[FLAGS] |= 16 /* Attached */; };\n /**\n * Checks the view and its children.\n *\n * This can also be used in combination with {@link ChangeDetectorRef#detach detach} to implement\n * local change detection checks.\n *\n * \n * \n *\n * @usageNotes\n * ### Example\n *\n * The following example defines a component with a large list of readonly data.\n * Imagine, the data changes constantly, many times per second. For performance reasons,\n * we want to check and update the list every five seconds.\n *\n * We can do that by detaching the component's change detector and doing a local change detection\n * check every five seconds.\n *\n * See {@link ChangeDetectorRef#detach detach} for more information.\n */\n ViewRef.prototype.detectChanges = function () { detectChangesInternal(this._lView, this.context); };\n /**\n * Checks the change detector and its children, and throws if any changes are detected.\n *\n * This is used in development mode to verify that running change detection doesn't\n * introduce other changes.\n */\n ViewRef.prototype.checkNoChanges = function () { checkNoChanges(this.context); };\n ViewRef.prototype.attachToViewContainerRef = function (vcRef) {\n if (this._appRef) {\n throw new Error('This view is already attached directly to the ApplicationRef!');\n }\n this._viewContainerRef = vcRef;\n };\n ViewRef.prototype.detachFromAppRef = function () { this._appRef = null; };\n ViewRef.prototype.attachToAppRef = function (appRef) {\n if (this._viewContainerRef) {\n throw new Error('This view is already attached to a ViewContainer!');\n }\n this._appRef = appRef;\n };\n ViewRef.prototype._lookUpContext = function () {\n return this._context = this._lView[PARENT][this._componentIndex];\n };\n return ViewRef;\n}());\n/** @internal */\nvar RootViewRef = /** @class */ (function (_super) {\n __extends(RootViewRef, _super);\n function RootViewRef(_view) {\n var _this = _super.call(this, _view, null, -1) || this;\n _this._view = _view;\n return _this;\n }\n RootViewRef.prototype.detectChanges = function () { detectChangesInRootView(this._view); };\n RootViewRef.prototype.checkNoChanges = function () { checkNoChangesInRootView(this._view); };\n Object.defineProperty(RootViewRef.prototype, \"context\", {\n get: function () { return null; },\n enumerable: true,\n configurable: true\n });\n return RootViewRef;\n}(ViewRef));\nfunction collectNativeNodes(lView, parentTNode, result) {\n var tNodeChild = parentTNode.child;\n while (tNodeChild) {\n result.push(getNativeByTNode(tNodeChild, lView));\n if (tNodeChild.type === 4 /* ElementContainer */) {\n collectNativeNodes(lView, tNodeChild, result);\n }\n tNodeChild = tNodeChild.next;\n }\n return result;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Creates an ElementRef from the most recent node.\n *\n * @returns The ElementRef instance to use\n */\nfunction injectElementRef(ElementRefToken) {\n return createElementRef(ElementRefToken, getPreviousOrParentTNode(), getLView());\n}\nvar R3ElementRef;\n/**\n * Creates an ElementRef given a node.\n *\n * @param ElementRefToken The ElementRef type\n * @param tNode The node for which you'd like an ElementRef\n * @param view The view to which the node belongs\n * @returns The ElementRef instance to use\n */\nfunction createElementRef(ElementRefToken, tNode, view) {\n if (!R3ElementRef) {\n // TODO: Fix class name, should be ElementRef, but there appears to be a rollup bug\n R3ElementRef = /** @class */ (function (_super) {\n __extends(ElementRef_, _super);\n function ElementRef_() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return ElementRef_;\n }(ElementRefToken));\n }\n return new R3ElementRef(getNativeByTNode(tNode, view));\n}\nvar R3TemplateRef;\n/**\n * Creates a TemplateRef given a node.\n *\n * @returns The TemplateRef instance to use\n */\nfunction injectTemplateRef(TemplateRefToken, ElementRefToken) {\n return createTemplateRef(TemplateRefToken, ElementRefToken, getPreviousOrParentTNode(), getLView());\n}\n/**\n * Creates a TemplateRef and stores it on the injector.\n *\n * @param TemplateRefToken The TemplateRef type\n * @param ElementRefToken The ElementRef type\n * @param hostTNode The node that is requesting a TemplateRef\n * @param hostView The view to which the node belongs\n * @returns The TemplateRef instance to use\n */\nfunction createTemplateRef(TemplateRefToken, ElementRefToken, hostTNode, hostView) {\n if (!R3TemplateRef) {\n // TODO: Fix class name, should be TemplateRef, but there appears to be a rollup bug\n R3TemplateRef = /** @class */ (function (_super) {\n __extends(TemplateRef_, _super);\n function TemplateRef_(_declarationParentView, elementRef, _tView, _renderer, _queries, _injectorIndex) {\n var _this = _super.call(this) || this;\n _this._declarationParentView = _declarationParentView;\n _this.elementRef = elementRef;\n _this._tView = _tView;\n _this._renderer = _renderer;\n _this._queries = _queries;\n _this._injectorIndex = _injectorIndex;\n return _this;\n }\n TemplateRef_.prototype.createEmbeddedView = function (context, container$$1, hostTNode, hostView, index) {\n var lView = createEmbeddedViewAndNode(this._tView, context, this._declarationParentView, this._renderer, this._queries, this._injectorIndex);\n if (container$$1) {\n insertView(lView, container$$1, hostView, index, hostTNode.index);\n }\n renderEmbeddedTemplate(lView, this._tView, context);\n var viewRef = new ViewRef(lView, context, -1);\n viewRef._tViewNode = lView[HOST_NODE];\n return viewRef;\n };\n return TemplateRef_;\n }(TemplateRefToken));\n }\n if (hostTNode.type === 0 /* Container */) {\n var hostContainer = hostView[hostTNode.index];\n ngDevMode && assertDefined(hostTNode.tViews, 'TView must be allocated');\n return new R3TemplateRef(hostView, createElementRef(ElementRefToken, hostTNode, hostView), hostTNode.tViews, getLView()[RENDERER], hostContainer[QUERIES], hostTNode.injectorIndex);\n }\n else {\n return null;\n }\n}\nvar R3ViewContainerRef;\n/**\n * Creates a ViewContainerRef and stores it on the injector. Or, if the ViewContainerRef\n * already exists, retrieves the existing ViewContainerRef.\n *\n * @returns The ViewContainerRef instance to use\n */\nfunction injectViewContainerRef(ViewContainerRefToken, ElementRefToken) {\n var previousTNode = getPreviousOrParentTNode();\n return createContainerRef(ViewContainerRefToken, ElementRefToken, previousTNode, getLView());\n}\n/**\n * Creates a ViewContainerRef and stores it on the injector.\n *\n * @param ViewContainerRefToken The ViewContainerRef type\n * @param ElementRefToken The ElementRef type\n * @param hostTNode The node that is requesting a ViewContainerRef\n * @param hostView The view to which the node belongs\n * @returns The ViewContainerRef instance to use\n */\nfunction createContainerRef(ViewContainerRefToken, ElementRefToken, hostTNode, hostView) {\n if (!R3ViewContainerRef) {\n // TODO: Fix class name, should be ViewContainerRef, but there appears to be a rollup bug\n R3ViewContainerRef = /** @class */ (function (_super) {\n __extends(ViewContainerRef_, _super);\n function ViewContainerRef_(_lContainer, _hostTNode, _hostView) {\n var _this = _super.call(this) || this;\n _this._lContainer = _lContainer;\n _this._hostTNode = _hostTNode;\n _this._hostView = _hostView;\n _this._viewRefs = [];\n return _this;\n }\n Object.defineProperty(ViewContainerRef_.prototype, \"element\", {\n get: function () {\n return createElementRef(ElementRefToken, this._hostTNode, this._hostView);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewContainerRef_.prototype, \"injector\", {\n get: function () { return new NodeInjector(this._hostTNode, this._hostView); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewContainerRef_.prototype, \"parentInjector\", {\n /** @deprecated No replacement */\n get: function () {\n var parentLocation = getParentInjectorLocation(this._hostTNode, this._hostView);\n var parentView = getParentInjectorView(parentLocation, this._hostView);\n var parentTNode = getParentInjectorTNode(parentLocation, this._hostView, this._hostTNode);\n return !hasParentInjector(parentLocation) || parentTNode == null ?\n new NodeInjector(null, this._hostView) :\n new NodeInjector(parentTNode, parentView);\n },\n enumerable: true,\n configurable: true\n });\n ViewContainerRef_.prototype.clear = function () {\n while (this._lContainer[VIEWS].length) {\n this.remove(0);\n }\n };\n ViewContainerRef_.prototype.get = function (index) { return this._viewRefs[index] || null; };\n Object.defineProperty(ViewContainerRef_.prototype, \"length\", {\n get: function () { return this._lContainer[VIEWS].length; },\n enumerable: true,\n configurable: true\n });\n ViewContainerRef_.prototype.createEmbeddedView = function (templateRef, context, index) {\n var adjustedIdx = this._adjustIndex(index);\n var viewRef = templateRef\n .createEmbeddedView(context || {}, this._lContainer, this._hostTNode, this._hostView, adjustedIdx);\n viewRef.attachToViewContainerRef(this);\n this._viewRefs.splice(adjustedIdx, 0, viewRef);\n return viewRef;\n };\n ViewContainerRef_.prototype.createComponent = function (componentFactory, index, injector, projectableNodes, ngModuleRef) {\n var contextInjector = injector || this.parentInjector;\n if (!ngModuleRef && componentFactory.ngModule == null && contextInjector) {\n ngModuleRef = contextInjector.get(NgModuleRef, null);\n }\n var componentRef = componentFactory.create(contextInjector, projectableNodes, undefined, ngModuleRef);\n this.insert(componentRef.hostView, index);\n return componentRef;\n };\n ViewContainerRef_.prototype.insert = function (viewRef, index) {\n if (viewRef.destroyed) {\n throw new Error('Cannot insert a destroyed View in a ViewContainer!');\n }\n var lView = viewRef._lView;\n var adjustedIdx = this._adjustIndex(index);\n insertView(lView, this._lContainer, this._hostView, adjustedIdx, this._hostTNode.index);\n var beforeNode = getBeforeNodeForView(adjustedIdx, this._lContainer[VIEWS], this._lContainer[NATIVE]);\n addRemoveViewFromContainer(lView, true, beforeNode);\n viewRef.attachToViewContainerRef(this);\n this._viewRefs.splice(adjustedIdx, 0, viewRef);\n return viewRef;\n };\n ViewContainerRef_.prototype.move = function (viewRef, newIndex) {\n if (viewRef.destroyed) {\n throw new Error('Cannot move a destroyed View in a ViewContainer!');\n }\n var index = this.indexOf(viewRef);\n this.detach(index);\n this.insert(viewRef, this._adjustIndex(newIndex));\n return viewRef;\n };\n ViewContainerRef_.prototype.indexOf = function (viewRef) { return this._viewRefs.indexOf(viewRef); };\n ViewContainerRef_.prototype.remove = function (index) {\n var adjustedIdx = this._adjustIndex(index, -1);\n removeView(this._lContainer, this._hostTNode, adjustedIdx);\n this._viewRefs.splice(adjustedIdx, 1);\n };\n ViewContainerRef_.prototype.detach = function (index) {\n var adjustedIdx = this._adjustIndex(index, -1);\n var view = detachView(this._lContainer, adjustedIdx, !!this._hostTNode.detached);\n var wasDetached = this._viewRefs.splice(adjustedIdx, 1)[0] != null;\n return wasDetached ? new ViewRef(view, view[CONTEXT], view[CONTAINER_INDEX]) : null;\n };\n ViewContainerRef_.prototype._adjustIndex = function (index, shift) {\n if (shift === void 0) { shift = 0; }\n if (index == null) {\n return this._lContainer[VIEWS].length + shift;\n }\n if (ngDevMode) {\n assertGreaterThan(index, -1, 'index must be positive');\n // +1 because it's legal to insert at the end.\n assertLessThan(index, this._lContainer[VIEWS].length + 1 + shift, 'index');\n }\n return index;\n };\n return ViewContainerRef_;\n }(ViewContainerRefToken));\n }\n ngDevMode && assertNodeOfPossibleTypes(hostTNode, 0 /* Container */, 3 /* Element */, 4 /* ElementContainer */);\n var lContainer;\n var slotValue = hostView[hostTNode.index];\n if (isLContainer(slotValue)) {\n // If the host is a container, we don't need to create a new LContainer\n lContainer = slotValue;\n lContainer[ACTIVE_INDEX] = -1;\n }\n else {\n var commentNode = hostView[RENDERER].createComment(ngDevMode ? 'container' : '');\n ngDevMode && ngDevMode.rendererCreateComment++;\n // A container can be created on the root (topmost / bootstrapped) component and in this case we\n // can't use LTree to insert container's marker node (both parent of a comment node and the\n // commend node itself is located outside of elements hold by LTree). In this specific case we\n // use low-level DOM manipulation to insert container's marker (comment) node.\n if (isRootView(hostView)) {\n var renderer = hostView[RENDERER];\n var hostNative = getNativeByTNode(hostTNode, hostView);\n var parentOfHostNative = nativeParentNode(renderer, hostNative);\n nativeInsertBefore(renderer, parentOfHostNative, commentNode, nativeNextSibling(renderer, hostNative));\n }\n else {\n appendChild(commentNode, hostTNode, hostView);\n }\n hostView[hostTNode.index] = lContainer =\n createLContainer(slotValue, hostTNode, hostView, commentNode, true);\n addToViewTree(hostView, hostTNode.index, lContainer);\n }\n return new R3ViewContainerRef(lContainer, hostTNode, hostView);\n}\n/** Returns a ChangeDetectorRef (a.k.a. a ViewRef) */\nfunction injectChangeDetectorRef() {\n return createViewRef(getPreviousOrParentTNode(), getLView(), null);\n}\n/**\n * Creates a ViewRef and stores it on the injector as ChangeDetectorRef (public alias).\n *\n * @param hostTNode The node that is requesting a ChangeDetectorRef\n * @param hostView The view to which the node belongs\n * @param context The context for this change detector ref\n * @returns The ChangeDetectorRef to use\n */\nfunction createViewRef(hostTNode, hostView, context) {\n if (isComponent(hostTNode)) {\n var componentIndex = hostTNode.directiveStart;\n var componentView = getComponentViewByIndex(hostTNode.index, hostView);\n return new ViewRef(componentView, context, componentIndex);\n }\n else if (hostTNode.type === 3 /* Element */) {\n var hostComponentView = findComponentView(hostView);\n return new ViewRef(hostComponentView, hostComponentView[CONTEXT], -1);\n }\n return null;\n}\nfunction getOrCreateRenderer2(view) {\n var renderer = view[RENDERER];\n if (isProceduralRenderer(renderer)) {\n return renderer;\n }\n else {\n throw new Error('Cannot inject Renderer2 when the application uses Renderer3!');\n }\n}\n/** Returns a Renderer2 (or throws when application was bootstrapped with Renderer3) */\nfunction injectRenderer2() {\n return getOrCreateRenderer2(getLView());\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A wrapper around a native element inside of a View.\n *\n * An `ElementRef` is backed by a render-specific element. In the browser, this is usually a DOM\n * element.\n *\n * @security Permitting direct access to the DOM can make your application more vulnerable to\n * XSS attacks. Carefully review any use of `ElementRef` in your code. For more detail, see the\n * [Security Guide](http://g.co/ng/security).\n *\n * @publicApi\n */\n// Note: We don't expose things like `Injector`, `ViewContainer`, ... here,\n// i.e. users have to ask for what they need. With that, we can build better analysis tools\n// and could do better codegen in the future.\nvar ElementRef = /** @class */ (function () {\n function ElementRef(nativeElement) {\n this.nativeElement = nativeElement;\n }\n /** @internal */\n ElementRef.__NG_ELEMENT_ID__ = function () { return SWITCH_ELEMENT_REF_FACTORY(ElementRef); };\n return ElementRef;\n}());\nvar SWITCH_ELEMENT_REF_FACTORY__POST_R3__ = injectElementRef;\nvar SWITCH_ELEMENT_REF_FACTORY__PRE_R3__ = noop;\nvar SWITCH_ELEMENT_REF_FACTORY = SWITCH_ELEMENT_REF_FACTORY__PRE_R3__;\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @deprecated Use `RendererType2` (and `Renderer2`) instead.\n * @publicApi\n */\nvar RenderComponentType = /** @class */ (function () {\n function RenderComponentType(id, templateUrl, slotCount, encapsulation, styles, animations) {\n this.id = id;\n this.templateUrl = templateUrl;\n this.slotCount = slotCount;\n this.encapsulation = encapsulation;\n this.styles = styles;\n this.animations = animations;\n }\n return RenderComponentType;\n}());\n/**\n * @deprecated Debug info is handled internally in the view engine now.\n */\nvar RenderDebugInfo = /** @class */ (function () {\n function RenderDebugInfo() {\n }\n return RenderDebugInfo;\n}());\n/**\n * @deprecated Use the `Renderer2` instead.\n * @publicApi\n */\nvar Renderer = /** @class */ (function () {\n function Renderer() {\n }\n return Renderer;\n}());\nvar Renderer2Interceptor = new InjectionToken('Renderer2Interceptor');\n/**\n * Injectable service that provides a low-level interface for modifying the UI.\n *\n * Use this service to bypass Angular's templating and make custom UI changes that can't be\n * expressed declaratively. For example if you need to set a property or an attribute whose name is\n * not statically known, use {@link Renderer#setElementProperty setElementProperty} or\n * {@link Renderer#setElementAttribute setElementAttribute} respectively.\n *\n * If you are implementing a custom renderer, you must implement this interface.\n *\n * The default Renderer implementation is `DomRenderer`. Also available is `WebWorkerRenderer`.\n *\n * @deprecated Use `RendererFactory2` instead.\n * @publicApi\n */\nvar RootRenderer = /** @class */ (function () {\n function RootRenderer() {\n }\n return RootRenderer;\n}());\n/**\n * Creates and initializes a custom renderer that implements the `Renderer2` base class.\n *\n * @publicApi\n */\nvar RendererFactory2 = /** @class */ (function () {\n function RendererFactory2() {\n }\n return RendererFactory2;\n}());\n/**\n * Flags for renderer-specific style modifiers.\n * @publicApi\n */\nvar RendererStyleFlags2;\n(function (RendererStyleFlags2) {\n /**\n * Marks a style as important.\n */\n RendererStyleFlags2[RendererStyleFlags2[\"Important\"] = 1] = \"Important\";\n /**\n * Marks a style as using dash case naming (this-is-dash-case).\n */\n RendererStyleFlags2[RendererStyleFlags2[\"DashCase\"] = 2] = \"DashCase\";\n})(RendererStyleFlags2 || (RendererStyleFlags2 = {}));\n/**\n * Extend this base class to implement custom rendering. By default, Angular\n * renders a template into DOM. You can use custom rendering to intercept\n * rendering calls, or to render to something other than DOM.\n *\n * Create your custom renderer using `RendererFactory2`.\n *\n * Use a custom renderer to bypass Angular's templating and\n * make custom UI changes that can't be expressed declaratively.\n * For example if you need to set a property or an attribute whose name is\n * not statically known, use the `setProperty()` or\n * `setAttribute()` method.\n *\n * @publicApi\n */\nvar Renderer2 = /** @class */ (function () {\n function Renderer2() {\n }\n /** @internal */\n Renderer2.__NG_ELEMENT_ID__ = function () { return SWITCH_RENDERER2_FACTORY(); };\n return Renderer2;\n}());\nvar SWITCH_RENDERER2_FACTORY__POST_R3__ = injectRenderer2;\nvar SWITCH_RENDERER2_FACTORY__PRE_R3__ = noop;\nvar SWITCH_RENDERER2_FACTORY = SWITCH_RENDERER2_FACTORY__PRE_R3__;\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A SecurityContext marks a location that has dangerous security implications, e.g. a DOM property\n * like `innerHTML` that could cause Cross Site Scripting (XSS) security bugs when improperly\n * handled.\n *\n * See DomSanitizer for more details on security in Angular applications.\n *\n * @publicApi\n */\nvar SecurityContext;\n(function (SecurityContext) {\n SecurityContext[SecurityContext[\"NONE\"] = 0] = \"NONE\";\n SecurityContext[SecurityContext[\"HTML\"] = 1] = \"HTML\";\n SecurityContext[SecurityContext[\"STYLE\"] = 2] = \"STYLE\";\n SecurityContext[SecurityContext[\"SCRIPT\"] = 3] = \"SCRIPT\";\n SecurityContext[SecurityContext[\"URL\"] = 4] = \"URL\";\n SecurityContext[SecurityContext[\"RESOURCE_URL\"] = 5] = \"RESOURCE_URL\";\n})(SecurityContext || (SecurityContext = {}));\n/**\n * Sanitizer is used by the views to sanitize potentially dangerous values.\n *\n * @publicApi\n */\nvar Sanitizer = /** @class */ (function () {\n function Sanitizer() {\n }\n return Sanitizer;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description Represents the version of Angular\n *\n * @publicApi\n */\nvar Version = /** @class */ (function () {\n function Version(full) {\n this.full = full;\n this.major = full.split('.')[0];\n this.minor = full.split('.')[1];\n this.patch = full.split('.').slice(2).join('.');\n }\n return Version;\n}());\n/**\n * @publicApi\n */\nvar VERSION = new Version('7.2.16');\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar ComponentFactoryResolver$1 = /** @class */ (function (_super) {\n __extends(ComponentFactoryResolver$$1, _super);\n /**\n * @param ngModule The NgModuleRef to which all resolved factories are bound.\n */\n function ComponentFactoryResolver$$1(ngModule) {\n var _this = _super.call(this) || this;\n _this.ngModule = ngModule;\n return _this;\n }\n ComponentFactoryResolver$$1.prototype.resolveComponentFactory = function (component) {\n ngDevMode && assertComponentType(component);\n var componentDef = getComponentDef(component);\n return new ComponentFactory$1(componentDef, this.ngModule);\n };\n return ComponentFactoryResolver$$1;\n}(ComponentFactoryResolver));\nfunction toRefArray(map) {\n var array = [];\n for (var nonMinified in map) {\n if (map.hasOwnProperty(nonMinified)) {\n var minified = map[nonMinified];\n array.push({ propName: minified, templateName: nonMinified });\n }\n }\n return array;\n}\n/**\n * Default {@link RootContext} for all components rendered with {@link renderComponent}.\n */\nvar ROOT_CONTEXT = new InjectionToken('ROOT_CONTEXT_TOKEN', { providedIn: 'root', factory: function () { return createRootContext(inject(SCHEDULER)); } });\n/**\n * A change detection scheduler token for {@link RootContext}. This token is the default value used\n * for the default `RootContext` found in the {@link ROOT_CONTEXT} token.\n */\nvar SCHEDULER = new InjectionToken('SCHEDULER_TOKEN', {\n providedIn: 'root',\n factory: function () { return defaultScheduler; },\n});\nvar NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR = {};\nfunction createChainedInjector(rootViewInjector, moduleInjector) {\n return {\n get: function (token, notFoundValue) {\n var value = rootViewInjector.get(token, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR);\n if (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR ||\n notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR) {\n // Return the value from the root element injector when\n // - it provides it\n // (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)\n // - the module injector should not be checked\n // (notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)\n return value;\n }\n return moduleInjector.get(token, notFoundValue);\n }\n };\n}\n/**\n * Render3 implementation of {@link viewEngine_ComponentFactory}.\n */\nvar ComponentFactory$1 = /** @class */ (function (_super) {\n __extends(ComponentFactory$$1, _super);\n /**\n * @param componentDef The component definition.\n * @param ngModule The NgModuleRef to which the factory is bound.\n */\n function ComponentFactory$$1(componentDef, ngModule) {\n var _this = _super.call(this) || this;\n _this.componentDef = componentDef;\n _this.ngModule = ngModule;\n _this.componentType = componentDef.type;\n _this.selector = componentDef.selectors[0][0];\n _this.ngContentSelectors = [];\n return _this;\n }\n Object.defineProperty(ComponentFactory$$1.prototype, \"inputs\", {\n get: function () {\n return toRefArray(this.componentDef.inputs);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ComponentFactory$$1.prototype, \"outputs\", {\n get: function () {\n return toRefArray(this.componentDef.outputs);\n },\n enumerable: true,\n configurable: true\n });\n ComponentFactory$$1.prototype.create = function (injector, projectableNodes, rootSelectorOrNode, ngModule) {\n var isInternalRootView = rootSelectorOrNode === undefined;\n ngModule = ngModule || this.ngModule;\n var rootViewInjector = ngModule ? createChainedInjector(injector, ngModule.injector) : injector;\n var rendererFactory = rootViewInjector.get(RendererFactory2, domRendererFactory3);\n var sanitizer = rootViewInjector.get(Sanitizer, null);\n var hostRNode = isInternalRootView ?\n elementCreate(this.selector, rendererFactory.createRenderer(null, this.componentDef)) :\n locateHostElement(rendererFactory, rootSelectorOrNode);\n var rootFlags = this.componentDef.onPush ? 8 /* Dirty */ | 128 /* IsRoot */ :\n 4 /* CheckAlways */ | 128 /* IsRoot */;\n var rootContext = !isInternalRootView ? rootViewInjector.get(ROOT_CONTEXT) : createRootContext();\n var renderer = rendererFactory.createRenderer(hostRNode, this.componentDef);\n if (rootSelectorOrNode && hostRNode) {\n ngDevMode && ngDevMode.rendererSetAttribute++;\n isProceduralRenderer(renderer) ?\n renderer.setAttribute(hostRNode, 'ng-version', VERSION.full) :\n hostRNode.setAttribute('ng-version', VERSION.full);\n }\n // Create the root view. Uses empty TView and ContentTemplate.\n var rootLView = createLView(null, createTView(-1, null, 1, 0, null, null, null), rootContext, rootFlags, rendererFactory, renderer, sanitizer, rootViewInjector);\n // rootView is the parent when bootstrapping\n var oldLView = enterView(rootLView, null);\n var component;\n var tElementNode;\n try {\n if (rendererFactory.begin)\n rendererFactory.begin();\n var componentView = createRootComponentView(hostRNode, this.componentDef, rootLView, rendererFactory, renderer);\n tElementNode = getTNode(0, rootLView);\n // Transform the arrays of native nodes into a structure that can be consumed by the\n // projection instruction. This is needed to support the reprojection of these nodes.\n if (projectableNodes) {\n var index = 0;\n var tView = rootLView[TVIEW];\n var projection$$1 = tElementNode.projection = [];\n for (var i = 0; i < projectableNodes.length; i++) {\n var nodeList = projectableNodes[i];\n var firstTNode = null;\n var previousTNode = null;\n for (var j = 0; j < nodeList.length; j++) {\n if (tView.firstTemplatePass) {\n // For dynamically created components such as ComponentRef, we create a new TView for\n // each insert. This is not ideal since we should be sharing the TViews.\n // Also the logic here should be shared with `component.ts`'s `renderComponent`\n // method.\n tView.expandoStartIndex++;\n tView.blueprint.splice(++index + HEADER_OFFSET, 0, null);\n tView.data.splice(index + HEADER_OFFSET, 0, null);\n rootLView.splice(index + HEADER_OFFSET, 0, null);\n }\n var tNode = createNodeAtIndex(index, 3 /* Element */, nodeList[j], null, null);\n previousTNode ? (previousTNode.next = tNode) : (firstTNode = tNode);\n previousTNode = tNode;\n }\n projection$$1.push(firstTNode);\n }\n }\n // TODO: should LifecycleHooksFeature and other host features be generated by the compiler and\n // executed here?\n // Angular 5 reference: https://stackblitz.com/edit/lifecycle-hooks-vcref\n component = createRootComponent(componentView, this.componentDef, rootLView, rootContext, [LifecycleHooksFeature]);\n addToViewTree(rootLView, HEADER_OFFSET, componentView);\n refreshDescendantViews(rootLView);\n }\n finally {\n leaveView(oldLView);\n if (rendererFactory.end)\n rendererFactory.end();\n }\n var componentRef = new ComponentRef$1(this.componentType, component, createElementRef(ElementRef, tElementNode, rootLView), rootLView, tElementNode);\n if (isInternalRootView) {\n // The host element of the internal root view is attached to the component's host view node\n componentRef.hostView._tViewNode.child = tElementNode;\n }\n return componentRef;\n };\n return ComponentFactory$$1;\n}(ComponentFactory));\nvar componentFactoryResolver = new ComponentFactoryResolver$1();\n/**\n * Represents an instance of a Component created via a {@link ComponentFactory}.\n *\n * `ComponentRef` provides access to the Component Instance as well other objects related to this\n * Component Instance and allows you to destroy the Component Instance via the {@link #destroy}\n * method.\n *\n */\nvar ComponentRef$1 = /** @class */ (function (_super) {\n __extends(ComponentRef$$1, _super);\n function ComponentRef$$1(componentType, instance, location, _rootLView, _tNode) {\n var _this = _super.call(this) || this;\n _this.location = location;\n _this._rootLView = _rootLView;\n _this._tNode = _tNode;\n _this.destroyCbs = [];\n _this.instance = instance;\n _this.hostView = _this.changeDetectorRef = new RootViewRef(_rootLView);\n _this.hostView._tViewNode = createViewNode(-1, _rootLView);\n _this.componentType = componentType;\n return _this;\n }\n Object.defineProperty(ComponentRef$$1.prototype, \"injector\", {\n get: function () { return new NodeInjector(this._tNode, this._rootLView); },\n enumerable: true,\n configurable: true\n });\n ComponentRef$$1.prototype.destroy = function () {\n ngDevMode && assertDefined(this.destroyCbs, 'NgModule already destroyed');\n this.destroyCbs.forEach(function (fn) { return fn(); });\n this.destroyCbs = null;\n this.hostView.destroy();\n };\n ComponentRef$$1.prototype.onDestroy = function (callback) {\n ngDevMode && assertDefined(this.destroyCbs, 'NgModule already destroyed');\n this.destroyCbs.push(callback);\n };\n return ComponentRef$$1;\n}(ComponentRef));\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This file is used to control if the default rendering pipeline should be `ViewEngine` or `Ivy`.\n *\n * For more information on how to run and debug tests with either Ivy or View Engine (legacy),\n * please see [BAZEL.md](./docs/BAZEL.md).\n */\nvar _devMode = true;\nvar _runModeLocked = false;\n/**\n * Returns whether Angular is in development mode. After called once,\n * the value is locked and won't change any more.\n *\n * By default, this is true, unless a user calls `enableProdMode` before calling this.\n *\n * @publicApi\n */\nfunction isDevMode() {\n _runModeLocked = true;\n return _devMode;\n}\n/**\n * Disable Angular's development mode, which turns off assertions and other\n * checks within the framework.\n *\n * One important assertion this disables verifies that a change detection pass\n * does not result in additional changes to any bindings (also known as\n * unidirectional data flow).\n *\n * @publicApi\n */\nfunction enableProdMode() {\n if (_runModeLocked) {\n throw new Error('Cannot enable prod mode after platform setup.');\n }\n _devMode = false;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This helper class is used to get hold of an inert tree of DOM elements containing dirty HTML\n * that needs sanitizing.\n * Depending upon browser support we must use one of three strategies for doing this.\n * Support: Safari 10.x -> XHR strategy\n * Support: Firefox -> DomParser strategy\n * Default: InertDocument strategy\n */\nvar InertBodyHelper = /** @class */ (function () {\n function InertBodyHelper(defaultDoc) {\n this.defaultDoc = defaultDoc;\n this.inertDocument = this.defaultDoc.implementation.createHTMLDocument('sanitization-inert');\n this.inertBodyElement = this.inertDocument.body;\n if (this.inertBodyElement == null) {\n // usually there should be only one body element in the document, but IE doesn't have any, so\n // we need to create one.\n var inertHtml = this.inertDocument.createElement('html');\n this.inertDocument.appendChild(inertHtml);\n this.inertBodyElement = this.inertDocument.createElement('body');\n inertHtml.appendChild(this.inertBodyElement);\n }\n this.inertBodyElement.innerHTML = '';\n if (this.inertBodyElement.querySelector && !this.inertBodyElement.querySelector('svg')) {\n // We just hit the Safari 10.1 bug - which allows JS to run inside the SVG G element\n // so use the XHR strategy.\n this.getInertBodyElement = this.getInertBodyElement_XHR;\n return;\n }\n this.inertBodyElement.innerHTML =\n '

    ';\n if (this.inertBodyElement.querySelector && this.inertBodyElement.querySelector('svg img')) {\n // We just hit the Firefox bug - which prevents the inner img JS from being sanitized\n // so use the DOMParser strategy, if it is available.\n // If the DOMParser is not available then we are not in Firefox (Server/WebWorker?) so we\n // fall through to the default strategy below.\n if (isDOMParserAvailable()) {\n this.getInertBodyElement = this.getInertBodyElement_DOMParser;\n return;\n }\n }\n // None of the bugs were hit so it is safe for us to use the default InertDocument strategy\n this.getInertBodyElement = this.getInertBodyElement_InertDocument;\n }\n /**\n * Use XHR to create and fill an inert body element (on Safari 10.1)\n * See\n * https://github.com/cure53/DOMPurify/blob/a992d3a75031cb8bb032e5ea8399ba972bdf9a65/src/purify.js#L439-L449\n */\n InertBodyHelper.prototype.getInertBodyElement_XHR = function (html) {\n // We add these extra elements to ensure that the rest of the content is parsed as expected\n // e.g. leading whitespace is maintained and tags like `` do not get hoisted to the\n // `` tag.\n html = '' + html + '';\n try {\n html = encodeURI(html);\n }\n catch (_a) {\n return null;\n }\n var xhr = new XMLHttpRequest();\n xhr.responseType = 'document';\n xhr.open('GET', 'data:text/html;charset=utf-8,' + html, false);\n xhr.send(undefined);\n var body = xhr.response.body;\n body.removeChild(body.firstChild);\n return body;\n };\n /**\n * Use DOMParser to create and fill an inert body element (on Firefox)\n * See https://github.com/cure53/DOMPurify/releases/tag/0.6.7\n *\n */\n InertBodyHelper.prototype.getInertBodyElement_DOMParser = function (html) {\n // We add these extra elements to ensure that the rest of the content is parsed as expected\n // e.g. leading whitespace is maintained and tags like `` do not get hoisted to the\n // `` tag.\n html = '' + html + '';\n try {\n var body = new window\n .DOMParser()\n .parseFromString(html, 'text/html')\n .body;\n body.removeChild(body.firstChild);\n return body;\n }\n catch (_a) {\n return null;\n }\n };\n /**\n * Use an HTML5 `template` element, if supported, or an inert body element created via\n * `createHtmlDocument` to create and fill an inert DOM element.\n * This is the default sane strategy to use if the browser does not require one of the specialised\n * strategies above.\n */\n InertBodyHelper.prototype.getInertBodyElement_InertDocument = function (html) {\n // Prefer using