@sumaris-net/ngx-components 2.18.0-beta4 → 2.18.0-beta6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/public_api.mjs +2 -1
- package/esm2022/src/app/core/account/account.page.mjs +1 -2
- package/esm2022/src/app/core/auth/auth.form.mjs +1 -2
- package/esm2022/src/app/core/form/array/testing/form-array.test.mjs +1 -2
- package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +1 -2
- package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +1 -2
- package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +1 -2
- package/esm2022/src/app/core/form/form-container.class.mjs +3 -2
- package/esm2022/src/app/core/form/properties/properties.utils.mjs +60 -0
- package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +1 -2
- package/esm2022/src/app/core/menu/menu.component.mjs +1 -2
- package/esm2022/src/app/core/menu/menu.service.mjs +1 -2
- package/esm2022/src/app/core/services/account.service.mjs +3 -3
- package/esm2022/src/app/core/services/config.service.mjs +1 -2
- package/esm2022/src/app/core/services/model/entity.model.mjs +3 -9
- package/esm2022/src/app/core/services/model/peer.model.mjs +11 -2
- package/esm2022/src/app/core/services/network.service.mjs +4 -3
- package/esm2022/src/app/core/services/platform.service.mjs +1 -2
- package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +8 -7
- package/esm2022/src/app/core/settings/settings.page.mjs +5 -5
- package/esm2022/src/app/core/table/async-table.class.mjs +1 -2
- package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +1 -2
- package/esm2022/src/app/core/table/table.class.mjs +1 -2
- package/esm2022/src/app/shared/form/field.component.mjs +1 -2
- package/esm2022/src/app/shared/functions.mjs +1 -2
- package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +3 -3
- package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +37 -9
- package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +1 -2
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +1 -2
- package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +1 -2
- package/esm2022/src/app/shared/material/datetime/material.date.mjs +1 -2
- package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +4 -3
- package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +1 -2
- package/esm2022/src/app/shared/material/duration/material.duration.mjs +1 -2
- package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +1 -2
- package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +1 -2
- package/esm2022/src/app/shared/toolbar/toolbar.mjs +1 -2
- package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +1 -2
- package/esm2022/src/app/shared/validator/validators.mjs +1 -2
- package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +1 -2
- package/esm2022/src/app/social/message/message.modal.mjs +1 -2
- package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +1 -2
- package/fesm2022/sumaris-net.ngx-components.mjs +182 -90
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +2 -2
- package/public_api.d.ts +1 -0
- package/src/app/core/form/properties/properties.utils.d.ts +27 -0
- package/src/app/core/services/model/entity.model.d.ts +3 -2
- package/src/app/core/services/model/peer.model.d.ts +1 -0
- package/src/app/shared/hotkeys/hotkeys.service.d.ts +16 -2
- package/src/app/shared/inputs.d.ts +1 -1
- package/src/assets/manifest.json +1 -1
|
@@ -10,7 +10,6 @@ import { filter } from 'rxjs/operators';
|
|
|
10
10
|
import { ENVIRONMENT } from '../../../environments/environment.class';
|
|
11
11
|
import { BaseGraphqlService } from './base-graphql-service.class';
|
|
12
12
|
import { isMobile } from '../../shared/platforms';
|
|
13
|
-
import { setTimeout } from '@rx-angular/cdk/zone-less/browser';
|
|
14
13
|
import { ImagesUtils } from '../../shared/file/images.utils';
|
|
15
14
|
import * as i0 from "@angular/core";
|
|
16
15
|
import * as i1 from "@ionic/angular";
|
|
@@ -382,4 +381,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
382
381
|
type: Inject,
|
|
383
382
|
args: [APP_CONFIG_OPTIONS]
|
|
384
383
|
}] }] });
|
|
385
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHdEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUduRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRCxPQUFPLEVBQW9CLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQWUsV0FBVyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWxELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7QUFFN0QsTUFBTSx5QkFBeUIsR0FBRyxlQUFlLENBQUM7QUFFbEQ7O3lDQUV5QztBQUN6QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDN0IsTUFBTSxF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O2dCQUNILENBQUM7WUFDSCxDQUFDO1lBRUQsMkJBQTJCO1lBQzNCLENBQUM7Z0JBQ0MsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLElBQUksQ0FBQyxNQUFNO29CQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztnQkFDL0UsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxJQUFJLENBQUMsTUFBTTtvQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLHFEQUFxRCxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUM1RyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFUyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQXNCO1FBQzlDLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEUsQ0FBQzt1R0FuVVUsYUFBYSxxUEFzQmQsV0FBVyxhQUNDLGtCQUFrQjsyR0F2QjdCLGFBQWEsY0FIWixNQUFNOzsyRkFHUCxhQUFhO2tCQUp6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO29CQUNsQixJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDM0I7OzBCQXVCSSxNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBncWwgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL21vZGVsL2NvbmZpZy5tb2RlbCc7XG5pbXBvcnQgeyBTdG9yYWdlIH0gZnJvbSAnQGlvbmljL3N0b3JhZ2UtYW5ndWxhcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVycm9yQ29kZXMgfSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQgeyBHcmFwaHFsU2VydmljZSB9IGZyb20gJy4uL2dyYXBocWwvZ3JhcGhxbC5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1GaWVsZERlZmluaXRpb24sIEZvcm1GaWVsZERlZmluaXRpb25NYXAgfSBmcm9tICcuLi8uLi9zaGFyZWQvZm9ybS9maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBGaWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9maWxlL2ZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyBOZXR3b3JrU2VydmljZSB9IGZyb20gJy4vbmV0d29yay5zZXJ2aWNlJztcbmltcG9ydCB7IENPUkVfQ09ORklHX09QVElPTlMgfSBmcm9tICcuL2NvbmZpZy9jb3JlLmNvbmZpZyc7XG5pbXBvcnQgeyBQbGF0Zm9ybSwgVG9hc3RDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgU2hvd1RvYXN0T3B0aW9ucywgVG9hc3RzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3RvYXN0L3RvYXN0cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFbnRpdHlTZXJ2aWNlTG9hZE9wdGlvbnMsIElFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IEVudmlyb25tZW50LCBFTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQgeyBCYXNlR3JhcGhxbFNlcnZpY2UgfSBmcm9tICcuL2Jhc2UtZ3JhcGhxbC1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IElTdGFydGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL3N0YXJ0YWJsZS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi9hY2NvdW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNNb2JpbGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvcGxhdGZvcm1zJztcbmltcG9ydCB7IEJhc2VFbnRpdHlHcmFwaHFsTXV0YXRpb25zIH0gZnJvbSAnLi9iYXNlLWVudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IHNldFRpbWVvdXQgfSBmcm9tICdAcngtYW5ndWxhci9jZGsvem9uZS1sZXNzL2Jyb3dzZXInO1xuaW1wb3J0IHsgSW1hZ2VzVXRpbHMgfSBmcm9tICcuLi8uLi9zaGFyZWQvZmlsZS9pbWFnZXMudXRpbHMnO1xuXG5jb25zdCBDT05GSUdVUkFUSU9OX1NUT1JBR0VfS0VZID0gJ2NvbmZpZ3VyYXRpb24nO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEdyYXBoUUwgcXVlcmllc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbmV4cG9ydCBjb25zdCBDb25maWdGcmFnbWVudHMgPSB7XG4gIGNvbmZpZzogZ3FsYFxuICAgIGZyYWdtZW50IENvbmZpZ0ZyYWdtZW50IG9uIENvbmZpZ3VyYXRpb25WTyB7XG4gICAgICBpZFxuICAgICAgbGFiZWxcbiAgICAgIG5hbWVcbiAgICAgIGRlc2NyaXB0aW9uXG4gICAgICBjb21tZW50c1xuICAgICAgcHJvcGVydGllc1xuICAgICAgc21hbGxMb2dvXG4gICAgICBsYXJnZUxvZ29cbiAgICAgIGJhY2tncm91bmRJbWFnZXNcbiAgICAgIHBhcnRuZXJzIHtcbiAgICAgICAgaWRcbiAgICAgICAgbGFiZWxcbiAgICAgICAgbmFtZVxuICAgICAgICBsb2dvXG4gICAgICAgIHNpdGVVcmxcbiAgICAgICAgX190eXBlbmFtZVxuICAgICAgfVxuICAgICAgdXBkYXRlRGF0ZVxuICAgICAgY3JlYXRpb25EYXRlXG4gICAgICBzdGF0dXNJZFxuICAgICAgX190eXBlbmFtZVxuICAgIH1cbiAgYCxcbn07XG5cbmNvbnN0IENvbmZpZ1F1ZXJpZXM6IHsgbG9hZDogYW55IH0gPSB7XG4gIGxvYWQ6IGdxbGBcbiAgICBxdWVyeSBDb25maWd1cmF0aW9uIHtcbiAgICAgIGRhdGE6IGNvbmZpZ3VyYXRpb24ge1xuICAgICAgICAuLi5Db25maWdGcmFnbWVudFxuICAgICAgfVxuICAgIH1cbiAgICAke0NvbmZpZ0ZyYWdtZW50cy5jb25maWd9XG4gIGAsXG59O1xuXG4vLyBTYXZlIChjcmVhdGUgb3IgdXBkYXRlKSBhY2NvdW50IG11dGF0aW9uXG5jb25zdCBDb25maWdNdXRhdGlvbnM6IEJhc2VFbnRpdHlHcmFwaHFsTXV0YXRpb25zID0ge1xuICBzYXZlOiBncWxgXG4gICAgbXV0YXRpb24gU2F2ZUNvbmZpZ3VyYXRpb24oJGRhdGE6IENvbmZpZ3VyYXRpb25WT0lucHV0KSB7XG4gICAgICBkYXRhOiBzYXZlQ29uZmlndXJhdGlvbihjb25maWc6ICRkYXRhKSB7XG4gICAgICAgIC4uLkNvbmZpZ0ZyYWdtZW50XG4gICAgICB9XG4gICAgfVxuICAgICR7Q29uZmlnRnJhZ21lbnRzLmNvbmZpZ31cbiAgYCxcbn07XG5cbmNvbnN0IENsZWFyQ2FjaGU6IGFueSA9IGdxbGBcbiAgcXVlcnkgQ2xlYXJDYWNoZSgkbmFtZTogU3RyaW5nKSB7XG4gICAgY2xlYXJDYWNoZShuYW1lOiAkbmFtZSlcbiAgfVxuYDtcblxuY29uc3QgQ2FjaGVTdGF0aXN0aWNzOiBhbnkgPSBncWxgXG4gIHF1ZXJ5IENhY2hlU3RhdGlzdGljcyB7XG4gICAgY2FjaGVTdGF0aXN0aWNzXG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBBUFBfQ09ORklHX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48Rm9ybUZpZWxkRGVmaW5pdGlvbk1hcD4oJ2RlZmF1bHRPcHRpb25zJyk7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBkZXBzOiBbQVBQX0NPTkZJR19PUFRJT05TXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlnU2VydmljZVxuICBleHRlbmRzIEJhc2VHcmFwaHFsU2VydmljZTxDb25maWd1cmF0aW9uLCBhbnksIG51bWJlciwgQ29uZmlndXJhdGlvbj5cbiAgaW1wbGVtZW50cyBJRW50aXR5U2VydmljZTxDb25maWd1cmF0aW9uPiwgSVN0YXJ0YWJsZVNlcnZpY2U8Q29uZmlndXJhdGlvbj5cbntcbiAgcHJpdmF0ZSBfb3B0aW9uRGVmczogRm9ybUZpZWxkRGVmaW5pdGlvbltdO1xuICBwcml2YXRlICRkYXRhID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb25maWd1cmF0aW9uPihudWxsKTtcblxuICBnZXQgY29uZmlnKCk6IE9ic2VydmFibGU8Q29uZmlndXJhdGlvbj4ge1xuICAgIC8vIElmIGZpcnN0IGNhbGw6IHN0YXJ0IGxvYWRpbmdcbiAgICBpZiAoIXRoaXMuc3RhcnRlZCkgdGhpcy5zdGFydCgpO1xuICAgIHJldHVybiB0aGlzLiRkYXRhLnBpcGUoZmlsdGVyKGlzTm90TmlsKSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgIHByb3RlY3RlZCBncmFwaHFsOiBHcmFwaHFsU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgc3RvcmFnZTogU3RvcmFnZSxcbiAgICBwcm90ZWN0ZWQgbmV0d29yazogTmV0d29ya1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGZpbGU6IEZpbGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB0b2FzdENvbnRyb2xsZXI6IFRvYXN0Q29udHJvbGxlcixcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgQEluamVjdChFTlZJUk9OTUVOVCkgcHJvdGVjdGVkIGVudmlyb25tZW50OiBFbnZpcm9ubWVudCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9DT05GSUdfT1BUSU9OUykgZGVmYXVsdE9wdGlvbnNNYXA6IEZvcm1GaWVsZERlZmluaXRpb25NYXBcbiAgKSB7XG4gICAgc3VwZXIoZ3JhcGhxbCwgZW52aXJvbm1lbnQpO1xuXG4gICAgdGhpcy5fZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIENyZWF0aW5nIHNlcnZpY2UnKTtcblxuICAgIHRoaXMuX29wdGlvbkRlZnMgPSBPYmplY3QudmFsdWVzKHsgLi4uQ09SRV9DT05GSUdfT1BUSU9OUywgLi4uZGVmYXVsdE9wdGlvbnNNYXAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbmdPblN0YXJ0KCk6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuICAgIGNvbnNvbGUuaW5mbygnW2NvbmZpZ10gU3RhcnRpbmcgY29uZmlndXJhdGlvbi4uLicpO1xuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubG9hZE9yUmVzdG9yZUxvY2FsbHkoKTtcbiAgICB0aGlzLiRkYXRhLm5leHQoZGF0YSk7XG5cbiAgICAvLyBSZXN0YXJ0IGlmIGdyYXBocWwgc2VydmljZSByZXN0YXJ0XG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbih0aGlzLmdyYXBocWwuc3RvcFN1YmplY3Quc3Vic2NyaWJlKCgpID0+IHRoaXMucmVzdGFydCgpKSk7XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGxvYWREZWZhdWx0KG9wdHM/OiBFbnRpdHlTZXJ2aWNlTG9hZE9wdGlvbnMpOiBQcm9taXNlPENvbmZpZ3VyYXRpb24+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIExvYWRpbmcgUG9kIGNvbmZpZ3VyYXRpb24uLi4nKTtcblxuICAgIGNvbnN0IHF1ZXJ5ID0gKG9wdHMgJiYgb3B0cy5xdWVyeSkgfHwgQ29uZmlnUXVlcmllcy5sb2FkO1xuICAgIGNvbnN0IHZhcmlhYmxlcyA9IChvcHRzICYmIG9wdHMudmFyaWFibGVzKSB8fCB1bmRlZmluZWQ7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5ncmFwaHFsLnF1ZXJ5PHsgZGF0YTogYW55IH0+KHtcbiAgICAgIHF1ZXJ5LFxuICAgICAgdmFyaWFibGVzLFxuICAgICAgZXJyb3I6IHsgY29kZTogRXJyb3JDb2Rlcy5MT0FEX0NPTkZJR19FUlJPUiwgbWVzc2FnZTogJ0VSUk9SLkxPQURfQ09ORklHX0VSUk9SJyB9LFxuICAgICAgZmV0Y2hQb2xpY3k6IChvcHRzICYmIG9wdHMuZmV0Y2hQb2xpY3kpIHx8IHVuZGVmaW5lZCAvKmRlZmF1bHQqLyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRhdGEgPSByZXM/LmRhdGEgJiYgb3B0cz8udG9FbnRpdHkgIT09IGZhbHNlID8gQ29uZmlndXJhdGlvbi5mcm9tT2JqZWN0KHJlcy5kYXRhKSA6IHJlcz8uZGF0YTtcbiAgICBjb25zb2xlLmluZm8oYFtjb25maWddIFBvZCBjb25maWd1cmF0aW9uIGxvYWRlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXM6YCwgZGF0YSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBhc3luYyBsb2FkKGlkOiBudW1iZXIsIG9wdHM/OiBFbnRpdHlTZXJ2aWNlTG9hZE9wdGlvbnMgJiB7IHF1ZXJ5PzogYW55OyB2YXJpYWJsZXM/OiBhbnkgfSk6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuICAgIGNvbnNvbGUud2FybignW2NvbmZpZ10gSW52YWxpZCBjYWxsIG9mIGNvbmZpZ1NlcnZpY2UubG9hZChpZCkuIFBsZWFzZSB1c2UgbG9hZERlZmF1bHQoKSBpbnN0ZWFkJyk7XG5cbiAgICByZXR1cm4gdGhpcy5sb2FkRGVmYXVsdChvcHRzKTtcbiAgfVxuXG4gIGNhblVzZXJXcml0ZShkYXRhOiBDb25maWd1cmF0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWNjb3VudFNlcnZpY2UuaXNBZG1pbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgYSBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWdcbiAgICovXG4gIGFzeW5jIHNhdmUoY29uZmlnOiBDb25maWd1cmF0aW9uKTogUHJvbWlzZTxDb25maWd1cmF0aW9uPiB7XG4gICAgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gU2F2aW5nIFBvZCBjb25maWd1cmF0aW9uLi4uJywgY29uZmlnKTtcblxuICAgIGNvbnN0IGpzb24gPSBjb25maWcuYXNPYmplY3QoKTtcblxuICAgIC8vIEV4ZWN1dGUgbXV0YXRpb25cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdyYXBocWwubXV0YXRlPHsgZGF0YTogYW55IH0+KHtcbiAgICAgIG11dGF0aW9uOiBDb25maWdNdXRhdGlvbnMuc2F2ZSxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBkYXRhOiBqc29uLFxuICAgICAgfSxcbiAgICAgIGVycm9yOiB7XG4gICAgICAgIGNvZGU6IEVycm9yQ29kZXMuU0FWRV9DT05GSUdfRVJST1IsXG4gICAgICAgIG1lc3NhZ2U6ICdFUlJPUi5TQVZFX0NPTkZJR19FUlJPUicsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gQ29weSB1cGRhdGUgcHJvcGVydGllc1xuICAgIGNvbnN0IHNhdmVkQ29uZmlnID0gcmVzPy5kYXRhO1xuICAgIHRoaXMuY29weUlkQW5kVXBkYXRlRGF0ZShzYXZlZENvbmZpZywgY29uZmlnKTtcblxuICAgIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIFBvZCBjb25maWd1cmF0aW9uIHNhdmVkIScpO1xuXG4gICAgLy8gRnVsbCByZWxvYWQsIHRvIGxldCBwb2QgcmVjb21wdXRpbmcgc29tZSBmaWVsZHNcbiAgICBjb25zdCByZWxvYWRlZENvbmZpZyA9IGF3YWl0IHRoaXMubG9hZERlZmF1bHQoeyBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seScgfSk7XG5cbiAgICAvLyBVcGRhdGUgY29tcHV0ZWQgcHJvcGVydGllcywgZnJvbSByZWxvYWRlZCBpdGVtXG4gICAgY29uZmlnLnNtYWxsTG9nbyA9IHJlbG9hZGVkQ29uZmlnPy5zbWFsbExvZ287XG4gICAgY29uZmlnLmxhcmdlTG9nbyA9IHJlbG9hZGVkQ29uZmlnPy5sYXJnZUxvZ287XG4gICAgY29uZmlnLmJhY2tncm91bmRJbWFnZXMgPSByZWxvYWRlZENvbmZpZz8uYmFja2dyb3VuZEltYWdlcztcbiAgICBjb25maWcucGFydG5lcnMgPSByZWxvYWRlZENvbmZpZz8ucGFydG5lcnM7XG5cbiAgICAvLyBJZiB0aGlzIGlzIHRoZSBkZWZhdWx0IGNvbmZpZ1xuICAgIGNvbnN0IGRlZmF1bHRDb25maWcgPSB0aGlzLiRkYXRhLnZhbHVlO1xuICAgIGlmIChpc05vdE5pbChkZWZhdWx0Q29uZmlnKSAmJiByZWxvYWRlZENvbmZpZz8ubGFiZWwgPT09IGRlZmF1bHRDb25maWcubGFiZWwpIHtcbiAgICAgIC8vIEVtaXQgdXBkYXRlIGV2ZW50IHdoZW4gaXMgZGVmYXVsdCBjb25maWdcbiAgICAgIHRoaXMuJGRhdGEubmV4dChyZWxvYWRlZENvbmZpZyk7XG4gICAgfVxuXG4gICAgLy8gcmV0dXJuIHRoZSBvcmlnaW5hbCBlbnRpdHlcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q2FjaGVTdGF0aXN0aWNzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zb2xlLmRlYnVnKCdbY29uZmlnXSBMb2FkaW5nIHNlcnZlciBjYWNoZSBzdGF0aXN0aWNzLi4uJyk7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdyYXBocWwucXVlcnk8eyBjYWNoZVN0YXRpc3RpY3M6IGFueSB9Pih7XG4gICAgICBxdWVyeTogQ2FjaGVTdGF0aXN0aWNzLFxuICAgICAgdmFyaWFibGVzOiBudWxsLFxuICAgICAgZXJyb3I6IHsgY29kZTogRXJyb3JDb2Rlcy5MT0FEX0NPTkZJR19FUlJPUiwgbWVzc2FnZTogJ0VSUk9SLkxPQURfQ09ORklHX0VSUk9SJyB9LFxuICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGF0YSA9IChyZXMgJiYgcmVzLmNhY2hlU3RhdGlzdGljcykgfHwgdW5kZWZpbmVkO1xuICAgIGNvbnNvbGUuaW5mbyhgW2NvbmZpZ10gU2VydmVyIGNhY2hlIHN0YXRpc3RpY3MgbG9hZGVkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tczpgLCBkYXRhKTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGNsZWFyQ2FjaGUob3B0cz86IHsgY2FjaGVOYW1lPzogc3RyaW5nIH0pIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIENsZWFyIHNlcnZlciBjYWNoZS4uLicpO1xuXG4gICAgY29uc3QgdmFyaWFibGVzID0gKG9wdHMgJiYgb3B0cy5jYWNoZU5hbWUgJiYgeyBuYW1lOiBvcHRzLmNhY2hlTmFtZSB9KSB8fCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdyYXBocWwucXVlcnk8eyBjbGVhckNhY2hlOiBib29sZWFuIH0+KHtcbiAgICAgIHF1ZXJ5OiBDbGVhckNhY2hlLFxuICAgICAgdmFyaWFibGVzLFxuICAgICAgZXJyb3I6IHsgY29kZTogRXJyb3JDb2Rlcy5MT0FEX0NPTkZJR19FUlJPUiwgbWVzc2FnZTogJ0VSUk9SLkxPQURfQ09ORklHX0VSUk9SJyB9LFxuICAgICAgZmV0Y2hQb2xpY3k6ICduby1jYWNoZScsXG4gICAgfSk7XG5cbiAgICBjb25zdCBkYXRhID0gKHJlcyAmJiByZXMuY2xlYXJDYWNoZSkgfHwgdW5kZWZpbmVkO1xuICAgIGNvbnNvbGUuaW5mbyhgW2NvbmZpZ10gQ2xlYXIgc2VydmVyIGNhY2hlIGluICR7RGF0ZS5ub3coKSAtIG5vd31tczpgLCBkYXRhKTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGRlbGV0ZShkYXRhOiBDb25maWd1cmF0aW9uKTogUHJvbWlzZTxhbnk+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCB5ZXQhJyk7XG4gIH1cblxuICBsaXN0ZW5DaGFuZ2VzKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gbmV3IFN1YmplY3QoKTsgLy8gVE9ET1xuICB9XG5cbiAgZ2V0IG9wdGlvbkRlZnMoKTogRm9ybUZpZWxkRGVmaW5pdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9uRGVmcztcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2QgLS0gKi9cblxuICBwcm90ZWN0ZWQgY29weUlkQW5kVXBkYXRlRGF0ZShzb3VyY2U6IENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQsIHRhcmdldDogQ29uZmlndXJhdGlvbikge1xuICAgIGlmICghc291cmNlKSByZXR1cm47XG5cbiAgICB0YXJnZXQuaWQgPSBzb3VyY2UuaWQgfHwgdGFyZ2V0LmlkO1xuICAgIHRhcmdldC51cGRhdGVEYXRlID0gc291cmNlLnVwZGF0ZURhdGUgfHwgdGFyZ2V0LnVwZGF0ZURhdGU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRPclJlc3RvcmVMb2NhbGx5KCk6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuICAgIGxldCBkYXRhOiBDb25maWd1cmF0aW9uO1xuICAgIGxldCB3YXNKdXN0TG9hZGVkID0gZmFsc2U7XG4gICAgaWYgKHRoaXMubmV0d29yay5vbmxpbmUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGRhdGEgPSBhd2FpdCB0aGlzLmxvYWREZWZhdWx0KHsgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknIH0pO1xuICAgICAgICB3YXNKdXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAvLyBMb2csIHRoZW4gY29udGludWVcbiAgICAgICAgY29uc29sZS5lcnJvcigoZXJyICYmIGVyci5tZXNzYWdlKSB8fCBlcnIsIGVycik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2F2ZSBpdCBpbnRvIGxvY2FsIHN0b3JhZ2UsIGZvciBuZXh0IHN0YXJ0dXBcbiAgICBpZiAoZGF0YSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnN0b3JlTG9jYWxseShkYXRhKSwgMjAwMCk7XG4gICAgfVxuXG4gICAgLy8gSWYgbm90IGxvYWRlZCByZW1vdGVseTogdHJ5IHRvIHJlc3RvcmUgaXRcbiAgICBlbHNlIHtcbiAgICAgIGRhdGEgPSBhd2FpdCB0aGlzLnJlc3RvcmVMb2NhbGx5KCk7XG4gICAgfVxuXG4gICAgLy8gTWFrZSBzdXJlIGxhYmVsIGhhcyBiZWVuIGZpbGxlZFxuICAgIGRhdGEubGFiZWwgPSBkYXRhLmxhYmVsIHx8IHRoaXMuZW52aXJvbm1lbnQubmFtZTtcblxuICAgIC8vIFJlc2V0IG5hbWUgKGlmIHNhbWUgYXMgbGFiZWwpXG4gICAgZGF0YS5uYW1lID0gZGF0YS5uYW1lICE9PSBkYXRhLmxhYmVsID8gZGF0YS5uYW1lIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gQ2hlY2sgY29tcGF0aWJsZSB2ZXJzaW9uXG4gICAgaWYgKHdhc0p1c3RMb2FkZWQpIHtcbiAgICAgIC8vIFRPRE9cbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzdG9yZUxvY2FsbHkoKTogUHJvbWlzZTxDb25maWd1cmF0aW9uPiB7XG4gICAgbGV0IGRhdGE6IENvbmZpZ3VyYXRpb247XG5cbiAgICAvLyBUcnkgdG8gbG9hZCBmcm9tIGxvY2FsIHN0b3JhZ2VcbiAgICBjb25zdCB2YWx1ZTogYW55ID0gYXdhaXQgdGhpcy5zdG9yYWdlLmdldChDT05GSUdVUkFUSU9OX1NUT1JBR0VfS0VZKTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIFJlc3RvcmluZyBjb25maWd1cmF0aW9uIGZyb20gbG9jYWwgc3RvcmFnZS4uLicpO1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBkYXRhID0gQ29uZmlndXJhdGlvbi5mcm9tT2JqZWN0KEpTT04ucGFyc2UodmFsdWUpKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHBhcnNlIGNvbmZpZyBmb3VuZCBpbiBsb2NhbCBzdG9yYWdlOiAkeyhlcnIgJiYgZXJyLm1lc3NhZ2UpIHx8IGVycn1gLCBlcnIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgZGF0YSA9IENvbmZpZ3VyYXRpb24uZnJvbU9iamVjdCh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIFJlc3RvcmluZyBjb25maWd1cmF0aW9uIFtPS10nKTtcbiAgICB9XG5cbiAgICAvLyBPciBsb2FkIGRlZmF1bHQgdmFsdWUsIGZyb20gdGhlIGVudmlyb25tZW50XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbY29uZmlnXSBObyBjb25maWd1cmF0aW9uIGZvdW5kLiBVc2luZyBlbnZpcm9ubWVudC4uLicpO1xuICAgICAgZGF0YSA9IENvbmZpZ3VyYXRpb24uZnJvbU9iamVjdCh0aGlzLmVudmlyb25tZW50IGFzIGFueSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHN0b3JlTG9jYWxseShkYXRhPzogQ29uZmlndXJhdGlvbikge1xuICAgIC8vIE5vdGhpbmcgdG8gc3RvcmUgOiByZXNldFxuICAgIGlmICghZGF0YSkge1xuICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnJlbW92ZShDT05GSUdVUkFUSU9OX1NUT1JBR0VfS0VZKTtcbiAgICB9XG4gICAgLy8gQ29uZmlnIGV4aXN0czogc3RvcmUgaXQgaW4gdGhlIGxvY2FsIHN0b3JhZ2VcbiAgICBlbHNlIHtcbiAgICAgIGxldCBub3cgPSB0aGlzLl9kZWJ1ZyAmJiBEYXRlLm5vdygpO1xuXG4gICAgICAvLyBDb252ZXJ0IGltYWdlcywgZm9yIG9mZmxpbmUgdXNhZ2VcbiAgICAgIGlmICh0aGlzLm5ldHdvcmsub25saW5lICYmIGlzTW9iaWxlKHdpbmRvdykpIHtcbiAgICAgICAgY29uc3Qgam9icyA9IFtdO1xuXG4gICAgICAgIC8vIERvd25sb2FkIGxvZ29zXG4gICAgICAgIGlmIChkYXRhLmxhcmdlTG9nbyAmJiBkYXRhLmxhcmdlTG9nby5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgICBjb25zdCBsYXJnZUxvZ28gPSBJbWFnZXNVdGlscy5nZXRJbWFnZUFuZENyZWRpdChkYXRhLmxhcmdlTG9nbyk/LmltYWdlOyAvLyBSZW1vdmUgY3JlZGl0XG4gICAgICAgICAgam9icy5wdXNoKHRoaXMuZmlsZS5nZXRJbWFnZShsYXJnZUxvZ28pLnRoZW4oKGltZ1VybCkgPT4gKGRhdGEubGFyZ2VMb2dvID0gaW1nVXJsKSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLnNtYWxsTG9nbyAmJiBkYXRhLnNtYWxsTG9nby5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgICBjb25zdCBzbWFsbExvZ28gPSBJbWFnZXNVdGlscy5nZXRJbWFnZUFuZENyZWRpdChkYXRhLnNtYWxsTG9nbyk/LmltYWdlOyAvLyBSZW1vdmUgY3JlZGl0XG4gICAgICAgICAgam9icy5wdXNoKHRoaXMuZmlsZS5nZXRJbWFnZShzbWFsbExvZ28pLnRoZW4oKGltZ1VybCkgPT4gKGRhdGEuc21hbGxMb2dvID0gaW1nVXJsKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmFja2dyb3VuZCBpbWFnZXNcbiAgICAgICAgaWYgKGlzTm90RW1wdHlBcnJheShkYXRhLmJhY2tncm91bmRJbWFnZXMpKSB7XG4gICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIG1heFdpZHRoOiB0aGlzLnBsYXRmb3JtLndpZHRoKCksXG4gICAgICAgICAgICBtYXhIZWlnaHQ6IHRoaXMucGxhdGZvcm0uaGVpZ2h0KCksXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIC8vIENvbnZlcnQgdGhlIEZJUlNUIGltYWdlIGZvdW5kXG4gICAgICAgICAgLy8gV0FSTjogaXQncyBOT1QgbmVjZXNzYXJ5IHRvIGNvbnZlcnQgQUxMIGltYWdlLCBidXQgb25seSBvbmUsIGZvciBzbWFsbGVyIG1lbW9yeSBmb290cHJpbnRcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGRhdGEuYmFja2dyb3VuZEltYWdlcy5maW5kSW5kZXgoKGltZykgPT4gaW1nPy5zdGFydHNXaXRoKCdodHRwJykpO1xuICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlID0gSW1hZ2VzVXRpbHMuZ2V0SW1hZ2VBbmRDcmVkaXQoZGF0YS5iYWNrZ3JvdW5kSW1hZ2VzW2luZGV4XSk/LmltYWdlOyAvLyBSZW1vdmUgY3JlZGl0XG4gICAgICAgICAgICBqb2JzLnB1c2godGhpcy5maWxlLmdldEltYWdlKGltYWdlLCBvcHRpb25zKS50aGVuKChkYXRhVXJsKSA9PiAoZGF0YS5iYWNrZ3JvdW5kSW1hZ2VzID0gW2RhdGFVcmxdKSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBhcnRuZXJzXG4gICAgICAgIGlmIChpc05vdEVtcHR5QXJyYXkoZGF0YS5wYXJ0bmVycykpIHtcbiAgICAgICAgICBkYXRhLnBhcnRuZXJzLmZvckVhY2goKGRlcCkgPT4ge1xuICAgICAgICAgICAgaWYgKGRlcD8ubG9nbyAmJiBkZXAubG9nby5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgICAgICAgam9icy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMuZmlsZVxuICAgICAgICAgICAgICAgICAgLmdldEltYWdlKGRlcC5sb2dvLCB7XG4gICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogNTAgLypzZWUgaG9tZSBwYWdlIENTUyAqLyxcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAudGhlbigoaW1nKSA9PiAoZGVwLmxvZ28gPSBpbWcpKVxuICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigoZXJyICYmIGVyci5tZXNzYWdlKSB8fCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgZGVwLmxvZ287XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGpvYnMubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbY29uZmlnXSBGZXRjaGluZyAke2pvYnMubGVuZ3RofSBpbWFnZXMuLi5gKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoam9icyk7XG4gICAgICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtjb25maWddIEZldGNoaW5nICR7am9icy5sZW5ndGh9IGltYWdlcyBbT0tdIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2ApO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgW2NvbmZpZ10gRmFpbGVkIHRvIGZldGNoIGltYWdlKHMpOiAkeyhlcnIgJiYgZXJyLm1lc3NhZ2UpIHx8IGVycn1gLCBlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBTYXZpbmcgY29uZmlnIHRvIHN0b3JhZ2VcbiAgICAgIHtcbiAgICAgICAgbm93ID0gdGhpcy5fZGVidWcgJiYgRGF0ZS5ub3coKTtcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKCdbY29uZmlnXSBTYXZpbmcgY29uZmlnIGludG8gbG9jYWwgc3RvcmFnZS4uLicpO1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KENPTkZJR1VSQVRJT05fU1RPUkFHRV9LRVksIGRhdGEuYXNPYmplY3QoKSk7XG4gICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2NvbmZpZ10gU2F2aW5nIGNvbmZpZyBpbnRvIGxvY2FsIHN0b3JhZ2UgW09LXSBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc2hvd1RvYXN0KG9wdHM6IFNob3dUb2FzdE9wdGlvbnMpIHtcbiAgICBhd2FpdCBUb2FzdHMuc2hvdyh0aGlzLnRvYXN0Q29udHJvbGxlciwgdGhpcy50cmFuc2xhdGUsIG9wdHMpO1xuICB9XG59XG4iXX0=
|
|
384
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHdEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUduRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRCxPQUFPLEVBQW9CLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQWUsV0FBVyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7OztBQUU3RCxNQUFNLHlCQUF5QixHQUFHLGVBQWUsQ0FBQztBQUVsRDs7eUNBRXlDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3QixNQUFNLEVBQUUsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3QlY7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QztnQkFDQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksSUFBSSxDQUFDLE1BQU07b0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO2dCQUMvRSxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLElBQUksQ0FBQyxNQUFNO29CQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMscURBQXFELElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQzVHLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVTLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBc0I7UUFDOUMsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO3VHQW5VVSxhQUFhLHFQQXNCZCxXQUFXLGFBQ0Msa0JBQWtCOzJHQXZCN0IsYUFBYSxjQUhaLE1BQU07OzJGQUdQLGFBQWE7a0JBSnpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07b0JBQ2xCLElBQUksRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUMzQjs7MEJBdUJJLE1BQU07MkJBQUMsV0FBVzs7MEJBQ2xCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdxbCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vbW9kZWwvY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IFN0b3JhZ2UgfSBmcm9tICdAaW9uaWMvc3RvcmFnZS1hbmd1bGFyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRXJyb3JDb2RlcyB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IEdyYXBocWxTZXJ2aWNlIH0gZnJvbSAnLi4vZ3JhcGhxbC9ncmFwaHFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybUZpZWxkRGVmaW5pdGlvbiwgRm9ybUZpZWxkRGVmaW5pdGlvbk1hcCB9IGZyb20gJy4uLy4uL3NoYXJlZC9mb3JtL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7IGlzTm90RW1wdHlBcnJheSwgaXNOb3ROaWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IEZpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2ZpbGUvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5ldHdvcmtTZXJ2aWNlIH0gZnJvbSAnLi9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ09SRV9DT05GSUdfT1BUSU9OUyB9IGZyb20gJy4vY29uZmlnL2NvcmUuY29uZmlnJztcbmltcG9ydCB7IFBsYXRmb3JtLCBUb2FzdENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBTaG93VG9hc3RPcHRpb25zLCBUb2FzdHMgfSBmcm9tICcuLi8uLi9zaGFyZWQvdG9hc3QvdG9hc3RzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucywgSUVudGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQsIEVOVklST05NRU5UIH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcbmltcG9ydCB7IEJhc2VHcmFwaHFsU2VydmljZSB9IGZyb20gJy4vYmFzZS1ncmFwaHFsLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgSVN0YXJ0YWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvc3RhcnRhYmxlLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9wbGF0Zm9ybXMnO1xuaW1wb3J0IHsgQmFzZUVudGl0eUdyYXBocWxNdXRhdGlvbnMgfSBmcm9tICcuL2Jhc2UtZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuXG5pbXBvcnQgeyBJbWFnZXNVdGlscyB9IGZyb20gJy4uLy4uL3NoYXJlZC9maWxlL2ltYWdlcy51dGlscyc7XG5cbmNvbnN0IENPTkZJR1VSQVRJT05fU1RPUkFHRV9LRVkgPSAnY29uZmlndXJhdGlvbic7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogR3JhcGhRTCBxdWVyaWVzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuZXhwb3J0IGNvbnN0IENvbmZpZ0ZyYWdtZW50cyA9IHtcbiAgY29uZmlnOiBncWxgXG4gICAgZnJhZ21lbnQgQ29uZmlnRnJhZ21lbnQgb24gQ29uZmlndXJhdGlvblZPIHtcbiAgICAgIGlkXG4gICAgICBsYWJlbFxuICAgICAgbmFtZVxuICAgICAgZGVzY3JpcHRpb25cbiAgICAgIGNvbW1lbnRzXG4gICAgICBwcm9wZXJ0aWVzXG4gICAgICBzbWFsbExvZ29cbiAgICAgIGxhcmdlTG9nb1xuICAgICAgYmFja2dyb3VuZEltYWdlc1xuICAgICAgcGFydG5lcnMge1xuICAgICAgICBpZFxuICAgICAgICBsYWJlbFxuICAgICAgICBuYW1lXG4gICAgICAgIGxvZ29cbiAgICAgICAgc2l0ZVVybFxuICAgICAgICBfX3R5cGVuYW1lXG4gICAgICB9XG4gICAgICB1cGRhdGVEYXRlXG4gICAgICBjcmVhdGlvbkRhdGVcbiAgICAgIHN0YXR1c0lkXG4gICAgICBfX3R5cGVuYW1lXG4gICAgfVxuICBgLFxufTtcblxuY29uc3QgQ29uZmlnUXVlcmllczogeyBsb2FkOiBhbnkgfSA9IHtcbiAgbG9hZDogZ3FsYFxuICAgIHF1ZXJ5IENvbmZpZ3VyYXRpb24ge1xuICAgICAgZGF0YTogY29uZmlndXJhdGlvbiB7XG4gICAgICAgIC4uLkNvbmZpZ0ZyYWdtZW50XG4gICAgICB9XG4gICAgfVxuICAgICR7Q29uZmlnRnJhZ21lbnRzLmNvbmZpZ31cbiAgYCxcbn07XG5cbi8vIFNhdmUgKGNyZWF0ZSBvciB1cGRhdGUpIGFjY291bnQgbXV0YXRpb25cbmNvbnN0IENvbmZpZ011dGF0aW9uczogQmFzZUVudGl0eUdyYXBocWxNdXRhdGlvbnMgPSB7XG4gIHNhdmU6IGdxbGBcbiAgICBtdXRhdGlvbiBTYXZlQ29uZmlndXJhdGlvbigkZGF0YTogQ29uZmlndXJhdGlvblZPSW5wdXQpIHtcbiAgICAgIGRhdGE6IHNhdmVDb25maWd1cmF0aW9uKGNvbmZpZzogJGRhdGEpIHtcbiAgICAgICAgLi4uQ29uZmlnRnJhZ21lbnRcbiAgICAgIH1cbiAgICB9XG4gICAgJHtDb25maWdGcmFnbWVudHMuY29uZmlnfVxuICBgLFxufTtcblxuY29uc3QgQ2xlYXJDYWNoZTogYW55ID0gZ3FsYFxuICBxdWVyeSBDbGVhckNhY2hlKCRuYW1lOiBTdHJpbmcpIHtcbiAgICBjbGVhckNhY2hlKG5hbWU6ICRuYW1lKVxuICB9XG5gO1xuXG5jb25zdCBDYWNoZVN0YXRpc3RpY3M6IGFueSA9IGdxbGBcbiAgcXVlcnkgQ2FjaGVTdGF0aXN0aWNzIHtcbiAgICBjYWNoZVN0YXRpc3RpY3NcbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IEFQUF9DT05GSUdfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxGb3JtRmllbGREZWZpbml0aW9uTWFwPignZGVmYXVsdE9wdGlvbnMnKTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGRlcHM6IFtBUFBfQ09ORklHX09QVElPTlNdLFxufSlcbmV4cG9ydCBjbGFzcyBDb25maWdTZXJ2aWNlXG4gIGV4dGVuZHMgQmFzZUdyYXBocWxTZXJ2aWNlPENvbmZpZ3VyYXRpb24sIGFueSwgbnVtYmVyLCBDb25maWd1cmF0aW9uPlxuICBpbXBsZW1lbnRzIElFbnRpdHlTZXJ2aWNlPENvbmZpZ3VyYXRpb24+LCBJU3RhcnRhYmxlU2VydmljZTxDb25maWd1cmF0aW9uPlxue1xuICBwcml2YXRlIF9vcHRpb25EZWZzOiBGb3JtRmllbGREZWZpbml0aW9uW107XG4gIHByaXZhdGUgJGRhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbmZpZ3VyYXRpb24+KG51bGwpO1xuXG4gIGdldCBjb25maWcoKTogT2JzZXJ2YWJsZTxDb25maWd1cmF0aW9uPiB7XG4gICAgLy8gSWYgZmlyc3QgY2FsbDogc3RhcnQgbG9hZGluZ1xuICAgIGlmICghdGhpcy5zdGFydGVkKSB0aGlzLnN0YXJ0KCk7XG4gICAgcmV0dXJuIHRoaXMuJGRhdGEucGlwZShmaWx0ZXIoaXNOb3ROaWwpKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBwbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgcHJvdGVjdGVkIGdyYXBocWw6IEdyYXBocWxTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBzdG9yYWdlOiBTdG9yYWdlLFxuICAgIHByb3RlY3RlZCBuZXR3b3JrOiBOZXR3b3JrU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZmlsZTogRmlsZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHRvYXN0Q29udHJvbGxlcjogVG9hc3RDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFjY291bnRTZXJ2aWNlOiBBY2NvdW50U2VydmljZSxcbiAgICBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX0NPTkZJR19PUFRJT05TKSBkZWZhdWx0T3B0aW9uc01hcDogRm9ybUZpZWxkRGVmaW5pdGlvbk1hcFxuICApIHtcbiAgICBzdXBlcihncmFwaHFsLCBlbnZpcm9ubWVudCk7XG5cbiAgICB0aGlzLl9kZWJ1ZyA9ICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gQ3JlYXRpbmcgc2VydmljZScpO1xuXG4gICAgdGhpcy5fb3B0aW9uRGVmcyA9IE9iamVjdC52YWx1ZXMoeyAuLi5DT1JFX0NPTkZJR19PUFRJT05TLCAuLi5kZWZhdWx0T3B0aW9uc01hcCB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBuZ09uU3RhcnQoKTogUHJvbWlzZTxDb25maWd1cmF0aW9uPiB7XG4gICAgY29uc29sZS5pbmZvKCdbY29uZmlnXSBTdGFydGluZyBjb25maWd1cmF0aW9uLi4uJyk7XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sb2FkT3JSZXN0b3JlTG9jYWxseSgpO1xuICAgIHRoaXMuJGRhdGEubmV4dChkYXRhKTtcblxuICAgIC8vIFJlc3RhcnQgaWYgZ3JhcGhxbCBzZXJ2aWNlIHJlc3RhcnRcbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKHRoaXMuZ3JhcGhxbC5zdG9wU3ViamVjdC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZXN0YXJ0KCkpKTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgYXN5bmMgbG9hZERlZmF1bHQob3B0cz86IEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucyk6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gTG9hZGluZyBQb2QgY29uZmlndXJhdGlvbi4uLicpO1xuXG4gICAgY29uc3QgcXVlcnkgPSAob3B0cyAmJiBvcHRzLnF1ZXJ5KSB8fCBDb25maWdRdWVyaWVzLmxvYWQ7XG4gICAgY29uc3QgdmFyaWFibGVzID0gKG9wdHMgJiYgb3B0cy52YXJpYWJsZXMpIHx8IHVuZGVmaW5lZDtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdyYXBocWwucXVlcnk8eyBkYXRhOiBhbnkgfT4oe1xuICAgICAgcXVlcnksXG4gICAgICB2YXJpYWJsZXMsXG4gICAgICBlcnJvcjogeyBjb2RlOiBFcnJvckNvZGVzLkxPQURfQ09ORklHX0VSUk9SLCBtZXNzYWdlOiAnRVJST1IuTE9BRF9DT05GSUdfRVJST1InIH0sXG4gICAgICBmZXRjaFBvbGljeTogKG9wdHMgJiYgb3B0cy5mZXRjaFBvbGljeSkgfHwgdW5kZWZpbmVkIC8qZGVmYXVsdCovLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGF0YSA9IHJlcz8uZGF0YSAmJiBvcHRzPy50b0VudGl0eSAhPT0gZmFsc2UgPyBDb25maWd1cmF0aW9uLmZyb21PYmplY3QocmVzLmRhdGEpIDogcmVzPy5kYXRhO1xuICAgIGNvbnNvbGUuaW5mbyhgW2NvbmZpZ10gUG9kIGNvbmZpZ3VyYXRpb24gbG9hZGVkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tczpgLCBkYXRhKTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoaWQ6IG51bWJlciwgb3B0cz86IEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucyAmIHsgcXVlcnk/OiBhbnk7IHZhcmlhYmxlcz86IGFueSB9KTogUHJvbWlzZTxDb25maWd1cmF0aW9uPiB7XG4gICAgY29uc29sZS53YXJuKCdbY29uZmlnXSBJbnZhbGlkIGNhbGwgb2YgY29uZmlnU2VydmljZS5sb2FkKGlkKS4gUGxlYXNlIHVzZSBsb2FkRGVmYXVsdCgpIGluc3RlYWQnKTtcblxuICAgIHJldHVybiB0aGlzLmxvYWREZWZhdWx0KG9wdHMpO1xuICB9XG5cbiAgY2FuVXNlcldyaXRlKGRhdGE6IENvbmZpZ3VyYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hY2NvdW50U2VydmljZS5pc0FkbWluKCk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBhIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZ1xuICAgKi9cbiAgYXN5bmMgc2F2ZShjb25maWc6IENvbmZpZ3VyYXRpb24pOiBQcm9taXNlPENvbmZpZ3VyYXRpb24+IHtcbiAgICBjb25zb2xlLmRlYnVnKCdbY29uZmlnXSBTYXZpbmcgUG9kIGNvbmZpZ3VyYXRpb24uLi4nLCBjb25maWcpO1xuXG4gICAgY29uc3QganNvbiA9IGNvbmZpZy5hc09iamVjdCgpO1xuXG4gICAgLy8gRXhlY3V0ZSBtdXRhdGlvblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5tdXRhdGU8eyBkYXRhOiBhbnkgfT4oe1xuICAgICAgbXV0YXRpb246IENvbmZpZ011dGF0aW9ucy5zYXZlLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGRhdGE6IGpzb24sXG4gICAgICB9LFxuICAgICAgZXJyb3I6IHtcbiAgICAgICAgY29kZTogRXJyb3JDb2Rlcy5TQVZFX0NPTkZJR19FUlJPUixcbiAgICAgICAgbWVzc2FnZTogJ0VSUk9SLlNBVkVfQ09ORklHX0VSUk9SJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBDb3B5IHVwZGF0ZSBwcm9wZXJ0aWVzXG4gICAgY29uc3Qgc2F2ZWRDb25maWcgPSByZXM/LmRhdGE7XG4gICAgdGhpcy5jb3B5SWRBbmRVcGRhdGVEYXRlKHNhdmVkQ29uZmlnLCBjb25maWcpO1xuXG4gICAgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gUG9kIGNvbmZpZ3VyYXRpb24gc2F2ZWQhJyk7XG5cbiAgICAvLyBGdWxsIHJlbG9hZCwgdG8gbGV0IHBvZCByZWNvbXB1dGluZyBzb21lIGZpZWxkc1xuICAgIGNvbnN0IHJlbG9hZGVkQ29uZmlnID0gYXdhaXQgdGhpcy5sb2FkRGVmYXVsdCh7IGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5JyB9KTtcblxuICAgIC8vIFVwZGF0ZSBjb21wdXRlZCBwcm9wZXJ0aWVzLCBmcm9tIHJlbG9hZGVkIGl0ZW1cbiAgICBjb25maWcuc21hbGxMb2dvID0gcmVsb2FkZWRDb25maWc/LnNtYWxsTG9nbztcbiAgICBjb25maWcubGFyZ2VMb2dvID0gcmVsb2FkZWRDb25maWc/LmxhcmdlTG9nbztcbiAgICBjb25maWcuYmFja2dyb3VuZEltYWdlcyA9IHJlbG9hZGVkQ29uZmlnPy5iYWNrZ3JvdW5kSW1hZ2VzO1xuICAgIGNvbmZpZy5wYXJ0bmVycyA9IHJlbG9hZGVkQ29uZmlnPy5wYXJ0bmVycztcblxuICAgIC8vIElmIHRoaXMgaXMgdGhlIGRlZmF1bHQgY29uZmlnXG4gICAgY29uc3QgZGVmYXVsdENvbmZpZyA9IHRoaXMuJGRhdGEudmFsdWU7XG4gICAgaWYgKGlzTm90TmlsKGRlZmF1bHRDb25maWcpICYmIHJlbG9hZGVkQ29uZmlnPy5sYWJlbCA9PT0gZGVmYXVsdENvbmZpZy5sYWJlbCkge1xuICAgICAgLy8gRW1pdCB1cGRhdGUgZXZlbnQgd2hlbiBpcyBkZWZhdWx0IGNvbmZpZ1xuICAgICAgdGhpcy4kZGF0YS5uZXh0KHJlbG9hZGVkQ29uZmlnKTtcbiAgICB9XG5cbiAgICAvLyByZXR1cm4gdGhlIG9yaWdpbmFsIGVudGl0eVxuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICBhc3luYyBnZXRDYWNoZVN0YXRpc3RpY3MoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIExvYWRpbmcgc2VydmVyIGNhY2hlIHN0YXRpc3RpY3MuLi4nKTtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTx7IGNhY2hlU3RhdGlzdGljczogYW55IH0+KHtcbiAgICAgIHF1ZXJ5OiBDYWNoZVN0YXRpc3RpY3MsXG4gICAgICB2YXJpYWJsZXM6IG51bGwsXG4gICAgICBlcnJvcjogeyBjb2RlOiBFcnJvckNvZGVzLkxPQURfQ09ORklHX0VSUk9SLCBtZXNzYWdlOiAnRVJST1IuTE9BRF9DT05GSUdfRVJST1InIH0sXG4gICAgICBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seScsXG4gICAgfSk7XG5cbiAgICBjb25zdCBkYXRhID0gKHJlcyAmJiByZXMuY2FjaGVTdGF0aXN0aWNzKSB8fCB1bmRlZmluZWQ7XG4gICAgY29uc29sZS5pbmZvKGBbY29uZmlnXSBTZXJ2ZXIgY2FjaGUgc3RhdGlzdGljcyBsb2FkZWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zOmAsIGRhdGEpO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgYXN5bmMgY2xlYXJDYWNoZShvcHRzPzogeyBjYWNoZU5hbWU/OiBzdHJpbmcgfSkge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gQ2xlYXIgc2VydmVyIGNhY2hlLi4uJyk7XG5cbiAgICBjb25zdCB2YXJpYWJsZXMgPSAob3B0cyAmJiBvcHRzLmNhY2hlTmFtZSAmJiB7IG5hbWU6IG9wdHMuY2FjaGVOYW1lIH0pIHx8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTx7IGNsZWFyQ2FjaGU6IGJvb2xlYW4gfT4oe1xuICAgICAgcXVlcnk6IENsZWFyQ2FjaGUsXG4gICAgICB2YXJpYWJsZXMsXG4gICAgICBlcnJvcjogeyBjb2RlOiBFcnJvckNvZGVzLkxPQURfQ09ORklHX0VSUk9SLCBtZXNzYWdlOiAnRVJST1IuTE9BRF9DT05GSUdfRVJST1InIH0sXG4gICAgICBmZXRjaFBvbGljeTogJ25vLWNhY2hlJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRhdGEgPSAocmVzICYmIHJlcy5jbGVhckNhY2hlKSB8fCB1bmRlZmluZWQ7XG4gICAgY29uc29sZS5pbmZvKGBbY29uZmlnXSBDbGVhciBzZXJ2ZXIgY2FjaGUgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zOmAsIGRhdGEpO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZGVsZXRlKGRhdGE6IENvbmZpZ3VyYXRpb24pOiBQcm9taXNlPGFueT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkIHlldCEnKTtcbiAgfVxuXG4gIGxpc3RlbkNoYW5nZXMoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8Q29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBuZXcgU3ViamVjdCgpOyAvLyBUT0RPXG4gIH1cblxuICBnZXQgb3B0aW9uRGVmcygpOiBGb3JtRmllbGREZWZpbml0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25EZWZzO1xuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZCAtLSAqL1xuXG4gIHByb3RlY3RlZCBjb3B5SWRBbmRVcGRhdGVEYXRlKHNvdXJjZTogQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCwgdGFyZ2V0OiBDb25maWd1cmF0aW9uKSB7XG4gICAgaWYgKCFzb3VyY2UpIHJldHVybjtcblxuICAgIHRhcmdldC5pZCA9IHNvdXJjZS5pZCB8fCB0YXJnZXQuaWQ7XG4gICAgdGFyZ2V0LnVwZGF0ZURhdGUgPSBzb3VyY2UudXBkYXRlRGF0ZSB8fCB0YXJnZXQudXBkYXRlRGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZE9yUmVzdG9yZUxvY2FsbHkoKTogUHJvbWlzZTxDb25maWd1cmF0aW9uPiB7XG4gICAgbGV0IGRhdGE6IENvbmZpZ3VyYXRpb247XG4gICAgbGV0IHdhc0p1c3RMb2FkZWQgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5uZXR3b3JrLm9ubGluZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZGF0YSA9IGF3YWl0IHRoaXMubG9hZERlZmF1bHQoeyBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seScgfSk7XG4gICAgICAgIHdhc0p1c3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8vIExvZywgdGhlbiBjb250aW51ZVxuICAgICAgICBjb25zb2xlLmVycm9yKChlcnIgJiYgZXJyLm1lc3NhZ2UpIHx8IGVyciwgZXJyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTYXZlIGl0IGludG8gbG9jYWwgc3RvcmFnZSwgZm9yIG5leHQgc3RhcnR1cFxuICAgIGlmIChkYXRhKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc3RvcmVMb2NhbGx5KGRhdGEpLCAyMDAwKTtcbiAgICB9XG5cbiAgICAvLyBJZiBub3QgbG9hZGVkIHJlbW90ZWx5OiB0cnkgdG8gcmVzdG9yZSBpdFxuICAgIGVsc2Uge1xuICAgICAgZGF0YSA9IGF3YWl0IHRoaXMucmVzdG9yZUxvY2FsbHkoKTtcbiAgICB9XG5cbiAgICAvLyBNYWtlIHN1cmUgbGFiZWwgaGFzIGJlZW4gZmlsbGVkXG4gICAgZGF0YS5sYWJlbCA9IGRhdGEubGFiZWwgfHwgdGhpcy5lbnZpcm9ubWVudC5uYW1lO1xuXG4gICAgLy8gUmVzZXQgbmFtZSAoaWYgc2FtZSBhcyBsYWJlbClcbiAgICBkYXRhLm5hbWUgPSBkYXRhLm5hbWUgIT09IGRhdGEubGFiZWwgPyBkYXRhLm5hbWUgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBDaGVjayBjb21wYXRpYmxlIHZlcnNpb25cbiAgICBpZiAod2FzSnVzdExvYWRlZCkge1xuICAgICAgLy8gVE9ET1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXN0b3JlTG9jYWxseSgpOiBQcm9taXNlPENvbmZpZ3VyYXRpb24+IHtcbiAgICBsZXQgZGF0YTogQ29uZmlndXJhdGlvbjtcblxuICAgIC8vIFRyeSB0byBsb2FkIGZyb20gbG9jYWwgc3RvcmFnZVxuICAgIGNvbnN0IHZhbHVlOiBhbnkgPSBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0KENPTkZJR1VSQVRJT05fU1RPUkFHRV9LRVkpO1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gUmVzdG9yaW5nIGNvbmZpZ3VyYXRpb24gZnJvbSBsb2NhbCBzdG9yYWdlLi4uJyk7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGRhdGEgPSBDb25maWd1cmF0aW9uLmZyb21PYmplY3QoSlNPTi5wYXJzZSh2YWx1ZSkpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gcGFyc2UgY29uZmlnIGZvdW5kIGluIGxvY2FsIHN0b3JhZ2U6ICR7KGVyciAmJiBlcnIubWVzc2FnZSkgfHwgZXJyfWAsIGVycik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBkYXRhID0gQ29uZmlndXJhdGlvbi5mcm9tT2JqZWN0KHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gUmVzdG9yaW5nIGNvbmZpZ3VyYXRpb24gW09LXScpO1xuICAgIH1cblxuICAgIC8vIE9yIGxvYWQgZGVmYXVsdCB2YWx1ZSwgZnJvbSB0aGUgZW52aXJvbm1lbnRcbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIE5vIGNvbmZpZ3VyYXRpb24gZm91bmQuIFVzaW5nIGVudmlyb25tZW50Li4uJyk7XG4gICAgICBkYXRhID0gQ29uZmlndXJhdGlvbi5mcm9tT2JqZWN0KHRoaXMuZW52aXJvbm1lbnQgYXMgYW55KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc3RvcmVMb2NhbGx5KGRhdGE/OiBDb25maWd1cmF0aW9uKSB7XG4gICAgLy8gTm90aGluZyB0byBzdG9yZSA6IHJlc2V0XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICBhd2FpdCB0aGlzLnN0b3JhZ2UucmVtb3ZlKENPTkZJR1VSQVRJT05fU1RPUkFHRV9LRVkpO1xuICAgIH1cbiAgICAvLyBDb25maWcgZXhpc3RzOiBzdG9yZSBpdCBpbiB0aGUgbG9jYWwgc3RvcmFnZVxuICAgIGVsc2Uge1xuICAgICAgbGV0IG5vdyA9IHRoaXMuX2RlYnVnICYmIERhdGUubm93KCk7XG5cbiAgICAgIC8vIENvbnZlcnQgaW1hZ2VzLCBmb3Igb2ZmbGluZSB1c2FnZVxuICAgICAgaWYgKHRoaXMubmV0d29yay5vbmxpbmUgJiYgaXNNb2JpbGUod2luZG93KSkge1xuICAgICAgICBjb25zdCBqb2JzID0gW107XG5cbiAgICAgICAgLy8gRG93bmxvYWQgbG9nb3NcbiAgICAgICAgaWYgKGRhdGEubGFyZ2VMb2dvICYmIGRhdGEubGFyZ2VMb2dvLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgICAgIGNvbnN0IGxhcmdlTG9nbyA9IEltYWdlc1V0aWxzLmdldEltYWdlQW5kQ3JlZGl0KGRhdGEubGFyZ2VMb2dvKT8uaW1hZ2U7IC8vIFJlbW92ZSBjcmVkaXRcbiAgICAgICAgICBqb2JzLnB1c2godGhpcy5maWxlLmdldEltYWdlKGxhcmdlTG9nbykudGhlbigoaW1nVXJsKSA9PiAoZGF0YS5sYXJnZUxvZ28gPSBpbWdVcmwpKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEuc21hbGxMb2dvICYmIGRhdGEuc21hbGxMb2dvLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgICAgIGNvbnN0IHNtYWxsTG9nbyA9IEltYWdlc1V0aWxzLmdldEltYWdlQW5kQ3JlZGl0KGRhdGEuc21hbGxMb2dvKT8uaW1hZ2U7IC8vIFJlbW92ZSBjcmVkaXRcbiAgICAgICAgICBqb2JzLnB1c2godGhpcy5maWxlLmdldEltYWdlKHNtYWxsTG9nbykudGhlbigoaW1nVXJsKSA9PiAoZGF0YS5zbWFsbExvZ28gPSBpbWdVcmwpKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCYWNrZ3JvdW5kIGltYWdlc1xuICAgICAgICBpZiAoaXNOb3RFbXB0eUFycmF5KGRhdGEuYmFja2dyb3VuZEltYWdlcykpIHtcbiAgICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgbWF4V2lkdGg6IHRoaXMucGxhdGZvcm0ud2lkdGgoKSxcbiAgICAgICAgICAgIG1heEhlaWdodDogdGhpcy5wbGF0Zm9ybS5oZWlnaHQoKSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgLy8gQ29udmVydCB0aGUgRklSU1QgaW1hZ2UgZm91bmRcbiAgICAgICAgICAvLyBXQVJOOiBpdCdzIE5PVCBuZWNlc3NhcnkgdG8gY29udmVydCBBTEwgaW1hZ2UsIGJ1dCBvbmx5IG9uZSwgZm9yIHNtYWxsZXIgbWVtb3J5IGZvb3RwcmludFxuICAgICAgICAgIGNvbnN0IGluZGV4ID0gZGF0YS5iYWNrZ3JvdW5kSW1hZ2VzLmZpbmRJbmRleCgoaW1nKSA9PiBpbWc/LnN0YXJ0c1dpdGgoJ2h0dHAnKSk7XG4gICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgY29uc3QgaW1hZ2UgPSBJbWFnZXNVdGlscy5nZXRJbWFnZUFuZENyZWRpdChkYXRhLmJhY2tncm91bmRJbWFnZXNbaW5kZXhdKT8uaW1hZ2U7IC8vIFJlbW92ZSBjcmVkaXRcbiAgICAgICAgICAgIGpvYnMucHVzaCh0aGlzLmZpbGUuZ2V0SW1hZ2UoaW1hZ2UsIG9wdGlvbnMpLnRoZW4oKGRhdGFVcmwpID0+IChkYXRhLmJhY2tncm91bmRJbWFnZXMgPSBbZGF0YVVybF0pKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUGFydG5lcnNcbiAgICAgICAgaWYgKGlzTm90RW1wdHlBcnJheShkYXRhLnBhcnRuZXJzKSkge1xuICAgICAgICAgIGRhdGEucGFydG5lcnMuZm9yRWFjaCgoZGVwKSA9PiB7XG4gICAgICAgICAgICBpZiAoZGVwPy5sb2dvICYmIGRlcC5sb2dvLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgICAgICAgICBqb2JzLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy5maWxlXG4gICAgICAgICAgICAgICAgICAuZ2V0SW1hZ2UoZGVwLmxvZ28sIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiA1MCAvKnNlZSBob21lIHBhZ2UgQ1NTICovLFxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIC50aGVuKChpbWcpID0+IChkZXAubG9nbyA9IGltZykpXG4gICAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKChlcnIgJiYgZXJyLm1lc3NhZ2UpIHx8IGVycik7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBkZXAubG9nbztcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoam9icy5sZW5ndGgpIHtcbiAgICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtjb25maWddIEZldGNoaW5nICR7am9icy5sZW5ndGh9IGltYWdlcy4uLmApO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChqb2JzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2NvbmZpZ10gRmV0Y2hpbmcgJHtqb2JzLmxlbmd0aH0gaW1hZ2VzIFtPS10gaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBbY29uZmlnXSBGYWlsZWQgdG8gZmV0Y2ggaW1hZ2Uocyk6ICR7KGVyciAmJiBlcnIubWVzc2FnZSkgfHwgZXJyfWAsIGVycik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFNhdmluZyBjb25maWcgdG8gc3RvcmFnZVxuICAgICAge1xuICAgICAgICBub3cgPSB0aGlzLl9kZWJ1ZyAmJiBEYXRlLm5vdygpO1xuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIFNhdmluZyBjb25maWcgaW50byBsb2NhbCBzdG9yYWdlLi4uJyk7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zZXQoQ09ORklHVVJBVElPTl9TVE9SQUdFX0tFWSwgZGF0YS5hc09iamVjdCgpKTtcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbY29uZmlnXSBTYXZpbmcgY29uZmlnIGludG8gbG9jYWwgc3RvcmFnZSBbT0tdIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2ApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBzaG93VG9hc3Qob3B0czogU2hvd1RvYXN0T3B0aW9ucykge1xuICAgIGF3YWl0IFRvYXN0cy5zaG93KHRoaXMudG9hc3RDb250cm9sbGVyLCB0aGlzLnRyYW5zbGF0ZSwgb3B0cyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getPropertyByPath, isEmptyArray, isNil, isNilOrBlank, isNotNil, joinPropertiesPath } from '../../../shared/functions';
|
|
2
2
|
import { fromDateISOString, toDateISOString } from '../../../shared/dates';
|
|
3
3
|
import { TreeItemEntityUtils } from './tree-item-entity.model';
|
|
4
|
+
import { AppPropertiesUtils } from '../../form/properties/properties.utils';
|
|
4
5
|
export function entityToString(obj, properties) {
|
|
5
6
|
return (obj && obj.id && joinPropertiesPath(obj, properties || ['name'])) || undefined;
|
|
6
7
|
}
|
|
@@ -84,14 +85,7 @@ export class EntityUtils {
|
|
|
84
85
|
value: source[key],
|
|
85
86
|
}));
|
|
86
87
|
}
|
|
87
|
-
static getPropertyArrayAsObject
|
|
88
|
-
return (source || []).reduce((res, item) => {
|
|
89
|
-
// Warning: when using <app-properties-form> key can be an object, used by autocomplete field
|
|
90
|
-
const key = typeof item.key === 'object' ? item.key?.key : item.key;
|
|
91
|
-
res[key] = item.value;
|
|
92
|
-
return res;
|
|
93
|
-
}, {});
|
|
94
|
-
}
|
|
88
|
+
static getPropertyArrayAsObject = AppPropertiesUtils.arrayAsObject;
|
|
95
89
|
static copyIdAndUpdateDate(source, target) {
|
|
96
90
|
if (!source)
|
|
97
91
|
return;
|
|
@@ -227,4 +221,4 @@ export class EntityUtils {
|
|
|
227
221
|
return values.findIndex((e) => e.id === item.id) === index;
|
|
228
222
|
}
|
|
229
223
|
}
|
|
230
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHL0gsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBTy9ELE1BQU0sVUFBVSxjQUFjLENBQUMsR0FBc0IsRUFBRSxVQUFxQjtJQUMxRSxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksa0JBQWtCLENBQUMsR0FBRyxFQUFFLFVBQVUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUM7QUFDekYsQ0FBQztBQW1CRCxVQUFVO0FBQ1YsTUFBTSxPQUFnQixNQUFNO0lBRzFCLG9EQUFvRDtJQUNwRCxNQUFNLENBQUMsUUFBUSxDQUFTO0lBRXhCLEVBQUUsR0FBTyxJQUFJLENBQUM7SUFDZCxVQUFVLEdBQVcsSUFBSSxDQUFDO0lBQzFCLFVBQVUsQ0FBUztJQUVuQixZQUFZLFVBQW1CO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLElBQUksQ0FBQztJQUN2QyxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQWM7UUFDbEIsTUFBTSxNQUFNLEdBQUcsSUFBSyxJQUFJLENBQUMsV0FBbUIsRUFBTyxDQUFDO1FBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJ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QUFVO1FBQzFCLE9BQU8sUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBeUQsTUFBUztRQUM1RSxPQUFPLE1BQU0sQ0FBQyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQXlELE1BQVM7UUFDNUUsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFxQyxRQUFhO1FBQ2xFLE9BQU8sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxxQkFBcUIsQ0FBOEIsSUFBTyxFQUFFLEtBQWEsRUFBRSxNQUFXO1FBQzNGLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDO0lBQzdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgZ2V0UHJvcGVydHlCeVBhdGgsIGlzRW1wdHlBcnJheSwgaXNOaWwsIGlzTmlsT3JCbGFuaywgaXNOb3ROaWwsIGpvaW5Qcm9wZXJ0aWVzUGF0aCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgRmlsdGVyRm4sIE9iamVjdE1hcCwgT2JqZWN0TWFwRW50cnksIFByb3BlcnRpZXNBcnJheSwgUHJvcGVydGllc01hcCwgUHJvcGVydHkgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdHlwZXMnO1xuaW1wb3J0IHsgU3RvcmVPYmplY3QgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7IGZyb21EYXRlSVNPU3RyaW5nLCB0b0RhdGVJU09TdHJpbmcgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGF0ZXMnO1xuaW1wb3J0IHsgVHJlZUl0ZW1FbnRpdHlVdGlscyB9IGZyb20gJy4vdHJlZS1pdGVtLWVudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBDbG9uZWFibGU8VD4ge1xuICBjbG9uZSgpOiBUO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW50aXR5VG9TdHJpbmcob2JqOiBFbnRpdHk8YW55PiB8IGFueSwgcHJvcGVydGllcz86IHN0cmluZ1tdKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIChvYmogJiYgb2JqLmlkICYmIGpvaW5Qcm9wZXJ0aWVzUGF0aChvYmosIHByb3BlcnRpZXMgfHwgWyduYW1lJ10pKSB8fCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5QXNPYmplY3RPcHRpb25zIHtcbiAgbWluaWZ5PzogYm9vbGVhbjtcbiAga2VlcFR5cGVuYW1lPzogYm9vbGVhbjsgLy8gdHJ1ZSBieSBkZWZhdWx0XG4gIGtlZXBMb2NhbElkPzogYm9vbGVhbjsgLy8gdHJ1ZSBieSBkZWZhdWx0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVudGl0eTxULCBJRCA9IG51bWJlciwgQU8gZXh0ZW5kcyBFbnRpdHlBc09iamVjdE9wdGlvbnMgPSBFbnRpdHlBc09iamVjdE9wdGlvbnMsIEZPID0gYW55PiBleHRlbmRzIENsb25lYWJsZTxUPiB7XG4gIGlkOiBJRDtcbiAgdXBkYXRlRGF0ZTogTW9tZW50O1xuICBfX3R5cGVuYW1lOiBzdHJpbmc7XG4gIGVxdWFscyhvdGhlcjogVCk6IGJvb2xlYW47XG4gIGNsb25lKG9wdHM/OiBBTyAmIEZPKTogVDtcbiAgY29weSh0YXJnZXQ6IFQsIG9wdHM/OiBBTyAmIEZPKTtcbiAgYXNPYmplY3Qob3B0cz86IEFPKTogYW55O1xuICBmcm9tT2JqZWN0KHNvdXJjZTogYW55LCBvcHRzPzogRk8pO1xufVxuXG4vL0BkeW5hbWljXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRW50aXR5PFQgZXh0ZW5kcyBFbnRpdHk8VCwgSUQsIEFPLCBGTz4sIElEID0gbnVtYmVyLCBBTyBleHRlbmRzIEVudGl0eUFzT2JqZWN0T3B0aW9ucyA9IEVudGl0eUFzT2JqZWN0T3B0aW9ucywgRk8gPSBhbnk+XG4gIGltcGxlbWVudHMgSUVudGl0eTxULCBJRCwgQU8sIEZPPlxue1xuICAvLyBUaGUgR3JhcGhRTCB0eXBlbmFtZSAoaW5qZWN0ZWQgYnkgQEVudGl0eUNsYXNzKCkpXG4gIHN0YXRpYyBUWVBFTkFNRTogc3RyaW5nO1xuXG4gIGlkOiBJRCA9IG51bGw7XG4gIHVwZGF0ZURhdGU6IE1vbWVudCA9IG51bGw7XG4gIF9fdHlwZW5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihfX3R5cGVuYW1lPzogc3RyaW5nKSB7XG4gICAgdGhpcy5fX3R5cGVuYW1lID0gX190eXBlbmFtZSB8fCBudWxsO1xuICB9XG5cbiAgY2xvbmUob3B0cz86IEFPICYgRk8pOiBUIHtcbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgKHRoaXMuY29uc3RydWN0b3IgYXMgYW55KSgpIGFzIFQ7XG4gICAgdGhpcy5jb3B5KHRhcmdldCwgb3B0cyk7XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGNvcHkodGFyZ2V0OiBULCBvcHRzPzogQU8gJiBGTykge1xuICAgIHRhcmdldC5mcm9tT2JqZWN0KHRoaXMuYXNPYmplY3Qob3B0cyksIG9wdHMpO1xuICB9XG5cbiAgYXNPYmplY3Qob3B0cz86IEFPKTogU3RvcmVPYmplY3Qge1xuICAgIGNvbnN0IHRhcmdldDogYW55ID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcyk7IC8vPSB7Li4udGhpc307XG4gICAgaWYgKCFvcHRzIHx8IG9wdHMua2VlcFR5cGVuYW1lICE9PSB0cnVlKSBkZWxldGUgdGFyZ2V0Ll9fdHlwZW5hbWU7XG4gICAgdGFyZ2V0LnVwZGF0ZURhdGUgPSB0b0RhdGVJU09TdHJpbmcodGhpcy51cGRhdGVEYXRlKTtcbiAgICBpZiAodGFyZ2V0LmlkID09IG51bGwgfHwgKG9wdHMgJiYgb3B0cy5rZWVwTG9jYWxJZCA9PT0gZmFsc2UgJiYgdGFyZ2V0LmlkIDwgMCkpIHtcbiAgICAgIGRlbGV0ZSB0YXJnZXQuaWQ7XG4gICAgICBkZWxldGUgdGFyZ2V0LnVwZGF0ZURhdGU7IC8vIE1ha2UgdG8gc2VucyB0byBrZWVwIHVwZGF0ZURhdGUgb2YgYSBsb2NhbCBlbnRpdHkgdG8gc2F2ZVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgZnJvbU9iamVjdChzb3VyY2U6IGFueSwgb3B0cz86IEZPKSB7XG4gICAgdGhpcy5pZCA9IHNvdXJjZS5pZCB8fCBzb3VyY2UuaWQgPT09IDAgPyBzb3VyY2UuaWQgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy51cGRhdGVEYXRlID0gZnJvbURhdGVJU09TdHJpbmcoc291cmNlLnVwZGF0ZURhdGUpO1xuICAgIHRoaXMuX190eXBlbmFtZSA9IHNvdXJjZS5fX3R5cGVuYW1lIHx8IHRoaXMuX190eXBlbmFtZTsgLy8gS2VlcCBvcmlnaW5hbCB0eXBlIChjYW4gYmUgc2V0IGluIGNvbnN0cnVjdG9yKVxuICB9XG5cbiAgZXF1YWxzKG90aGVyOiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG90aGVyICYmIHRoaXMuaWQgPT09IG90aGVyLmlkO1xuICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIHN0YW5kYXJkIGluc3RhbmNlb2YgaW5zdGVhZFxuICogQHBhcmFtIG9ialxuICogQHBhcmFtIGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0luc3RhbmNlT2Y8VD4ob2JqOiBhbnksIGNvbnN0cnVjdG9yOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUKTogb2JqIGlzIFQge1xuICBpZiAoIW9iaikgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiBjb25zdHJ1Y3Rvcjtcbn1cblxuLy8gQGR5bmFtaWNcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbnRpdHlVdGlscyB7XG4gIC8vIENoZWNrIHRoYXQgdGhlIG9iamVjdCBoYXMgYSBOT1QgbmlsIGF0dHJpYnV0ZSAoSUQgYnkgZGVmYXVsdClcbiAgc3RhdGljIGlzRW50aXR5PFQgZXh0ZW5kcyBJRW50aXR5PGFueT4+KG9iajogVCB8IGFueSk6IG9iaiBpcyBUIHtcbiAgICByZXR1cm4gaXNOb3ROaWwob2JqPy5fX3R5cGVuYW1lKSAmJiB0eXBlb2Ygb2JqLmZyb21PYmplY3QgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iai5hc09iamVjdCA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIC8vIENoZWNrIHRoYXQgdGhlIG9iamVjdCBoYXMgYSBOT1QgbmlsIGF0dHJpYnV0ZSAoSUQgYnkgZGVmYXVsdClcbiAgc3RhdGljIGlzTm90RW1wdHk8VCBleHRlbmRzIElFbnRpdHk8YW55PiB8IGFueT4ob2JqOiBULCBjaGVja2VkQXR0cmlidXRlOiBrZXlvZiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhb2JqICYmIG9ialtjaGVja2VkQXR0cmlidXRlXSAhPT0gbnVsbCAmJiBvYmpbY2hlY2tlZEF0dHJpYnV0ZV0gIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHN0YXRpYyBpc0VtcHR5PFQgZXh0ZW5kcyBJRW50aXR5PGFueT4gfCBhbnk+KG9iajogVCwgY2hlY2tlZEF0dHJpYnV0ZToga2V5b2YgVCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhb2JqIHx8IG9ialtjaGVja2VkQXR0cmlidXRlXSA9PT0gbnVsbCB8fCBvYmpbY2hlY2tlZEF0dHJpYnV0ZV0gPT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHN0YXRpYyBlcXVhbHM8VCBleHRlbmRzIElFbnRpdHk8YW55PiB8IGFueT4obzE6IFQsIG8yOiBULCBjaGVja0F0dHJpYnV0ZT86IGtleW9mIFQpOiBib29sZWFuIHtcbiAgICBjaGVja0F0dHJpYnV0ZSA9IGNoZWNrQXR0cmlidXRlIHx8ICgnaWQnIGFzIGtleW9mIFQpO1xuICAgIHJldHVybiBvMSA9PT0gbzIgfHwgKGlzTmlsKG8xKSAmJiBpc05pbChvMikpIHx8IChvMSAmJiBvMiAmJiBvMVtjaGVja0F0dHJpYnV0ZV0gPT09IG8yW2NoZWNrQXR0cmlidXRlXSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0UHJvcGVydHlCeVBhdGggPSBnZXRQcm9wZXJ0eUJ5UGF0aDtcblxuICBzdGF0aWMgZ2V0QXJyYXlBc01hcDxUID0gYW55Pihzb3VyY2U/OiBPYmplY3RNYXBFbnRyeTxUPltdKTogT2JqZWN0TWFwPFQ+IHtcbiAgICByZXR1cm4gKHNvdXJjZSB8fCBbXSkucmVkdWNlKChyZXMsIGl0ZW0pID0+IHtcbiAgICAgIHJlc1tpdGVtLmtleV0gPSBpdGVtLnZhbHVlO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9LCB7fSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0TWFwQXNBcnJheTxUID0gYW55Pihzb3VyY2U/OiBPYmplY3RNYXA8VD4pOiBPYmplY3RNYXBFbnRyeTxUPltdIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UpKSByZXR1cm4gc291cmNlO1xuICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2UgfHwge30pLm1hcCgoa2V5KSA9PiAoe1xuICAgICAga2V5LFxuICAgICAgdmFsdWU6IHNvdXJjZVtrZXldLFxuICAgIH0pKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRQcm9wZXJ0eUFycmF5QXNPYmplY3Qoc291cmNlPzogUHJvcGVydGllc0FycmF5KTogUHJvcGVydGllc01hcCB7XG4gICAgcmV0dXJuIChzb3VyY2UgfHwgW10pLnJlZHVjZSgocmVzLCBpdGVtKSA9PiB7XG4gICAgICAvLyBXYXJuaW5nOiB3aGVuIHVzaW5nIDxhcHAtcHJvcGVydGllcy1mb3JtPiBrZXkgY2FuIGJlIGFuIG9iamVjdCwgdXNlZCBieSBhdXRvY29tcGxldGUgZmllbGRcbiAgICAgIGNvbnN0IGtleSA9IHR5cGVvZiBpdGVtLmtleSA9PT0gJ29iamVjdCcgPyAoaXRlbS5rZXkgYXMgUHJvcGVydHkpPy5rZXkgOiBpdGVtLmtleTtcbiAgICAgIHJlc1trZXldID0gaXRlbS52YWx1ZTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSwge30pO1xuICB9XG5cbiAgc3RhdGljIGNvcHlJZEFuZFVwZGF0ZURhdGU8VCBleHRlbmRzIEVudGl0eTxhbnksIGFueSwgYW55Pj4oc291cmNlOiBULCB0YXJnZXQ6IFQpIHtcbiAgICBpZiAoIXNvdXJjZSkgcmV0dXJuO1xuXG4gICAgLy8gVXBkYXRlIChpZCBhbmQgdXBkYXRlRGF0ZSlcbiAgICB0YXJnZXQuaWQgPSBpc05vdE5pbChzb3VyY2UuaWQpID8gc291cmNlLmlkIDogdGFyZ2V0LmlkO1xuICAgIHRhcmdldC51cGRhdGVEYXRlID0gZnJvbURhdGVJU09TdHJpbmcoc291cmNlLnVwZGF0ZURhdGUpIHx8IHRhcmdldC51cGRhdGVEYXRlO1xuXG4gICAgLy8gVXBkYXRlIGNyZWF0aW9uIERhdGUsIGlmIGV4aXN0c1xuICAgIGlmIChzb3VyY2VbJ2NyZWF0aW9uRGF0ZSddKSB7XG4gICAgICB0YXJnZXRbJ2NyZWF0aW9uRGF0ZSddID0gZnJvbURhdGVJU09TdHJpbmcoc291cmNlWydjcmVhdGlvbkRhdGUnXSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGFzeW5jIGZpbGxMb2NhbElkczxUIGV4dGVuZHMgSUVudGl0eTxUPj4oaXRlbXM6IFRbXSwgc2VxdWVuY2VGYWN0b3J5OiAoZmlyc3RFbnRpdHk6IFQsIGluY3JlbWVudFNpemU6IG51bWJlcikgPT4gUHJvbWlzZTxudW1iZXI+KSB7XG4gICAgY29uc3QgbmV3SXRlbXMgPSAoaXRlbXMgfHwgW10pLmZpbHRlcigoaXRlbSkgPT4gaXNOaWwoaXRlbS5pZCkgfHwgaXRlbS5pZCA9PT0gMCk7XG4gICAgaWYgKGlzRW1wdHlBcnJheShuZXdJdGVtcykpIHJldHVybjtcbiAgICAvLyBHZXQgdGhlIHNlcXVlbmNlXG4gICAgbGV0IGN1cnJlbnRJZCA9IChhd2FpdCBzZXF1ZW5jZUZhY3RvcnkobmV3SXRlbXNbMF0sIG5ld0l0ZW1zLmxlbmd0aCkpICsgMTtcbiAgICAvLyBUYWtlIHRoZSBtaW4gKHNlcXVlbmNlLCBpZCksIGluIGNhc2UgdGhlIHNlcXVlbmNlIGlzIGNvcnJ1cHRlZFxuICAgIGN1cnJlbnRJZCA9IGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXNOb3ROaWwoaXRlbS5pZCkgJiYgaXRlbS5pZCA8IDApLnJlZHVjZSgocmVzLCBpdGVtKSA9PiBNYXRoLm1pbihyZXMsIGl0ZW0uaWQpLCBjdXJyZW50SWQpO1xuICAgIG5ld0l0ZW1zLmZvckVhY2goKGl0ZW0pID0+IChpdGVtLmlkID0gLS1jdXJyZW50SWQpKTtcbiAgfVxuXG4gIHN0YXRpYyBjbGVhbklkQW5kVXBkYXRlRGF0ZTxUIGV4dGVuZHMgSUVudGl0eTxUPj4oc291cmNlOiBUKSB7XG4gICAgaWYgKCFzb3VyY2UpIHJldHVybjsgLy8gU2tpcFxuICAgIHNvdXJjZS5pZCA9IG51bGw7XG4gICAgc291cmNlLnVwZGF0ZURhdGUgPSBudWxsO1xuICB9XG5cbiAgc3RhdGljIGNsZWFuSWRzQW5kVXBkYXRlRGF0ZXM8VCBleHRlbmRzIElFbnRpdHk8VD4+KGl0ZW1zOiBUW10pIHtcbiAgICAoaXRlbXMgfHwgW10pLmZvckVhY2goRW50aXR5VXRpbHMuY2xlYW5JZEFuZFVwZGF0ZURhdGUpO1xuICB9XG5cbiAgc3RhdGljIHNvcnQ8VCBleHRlbmRzIElFbnRpdHk8VD4gfCBhbnk+KGRhdGE6IFRbXSwgc29ydEJ5Pzogc3RyaW5nLCBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbik6IFRbXSB7XG4gICAgaWYgKCFkYXRhIHx8IGRhdGEubGVuZ3RoIDw9IDEgfHwgIXNvcnRCeSkgcmV0dXJuIGRhdGE7XG4gICAgcmV0dXJuIGRhdGEuc29ydCh0aGlzLnNvcnRDb21wYXJhdG9yKHNvcnRCeSwgc29ydERpcmVjdGlvbikpO1xuICB9XG5cbiAgc3RhdGljIHNvcnRDb21wYXJhdG9yPFQgZXh0ZW5kcyBJRW50aXR5PFQ+IHwgYW55Pihzb3J0Qnk/OiBzdHJpbmcsIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uKTogKGE6IFQsIGI6IFQpID0+IG51bWJlciB7XG4gICAgY29uc3QgYWZ0ZXIgPSAhc29ydERpcmVjdGlvbiB8fCBzb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/IDEgOiAtMTtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IHNvcnRCeSB8fCAnaWQnO1xuICAgIHJldHVybiAoYSwgYikgPT4ge1xuICAgICAgY29uc3QgdmFsdWVBID0gRW50aXR5VXRpbHMuZ2V0UHJvcGVydHlCeVBhdGgoYSwgcHJvcGVydHkpO1xuICAgICAgY29uc3QgdmFsdWVCID0gRW50aXR5VXRpbHMuZ2V0UHJvcGVydHlCeVBhdGgoYiwgcHJvcGVydHkpO1xuICAgICAgcmV0dXJuIEVudGl0eVV0aWxzLmNvbXBhcmUodmFsdWVBLCB2YWx1ZUIsIGFmdGVyKTtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGNvbXBhcmU8VCBleHRlbmRzIElFbnRpdHk8YW55Pj4odmFsdWUxOiBULCB2YWx1ZTI6IFQsIGRpcmVjdGlvbjogMSB8IC0xLCBjaGVja0F0dHJpYnV0ZT86IGtleW9mIFQpOiBudW1iZXIge1xuICAgIGNoZWNrQXR0cmlidXRlID0gY2hlY2tBdHRyaWJ1dGUgfHwgJ2lkJztcbiAgICBpZiAoRW50aXR5VXRpbHMuaXNOb3RFbXB0eSh2YWx1ZTEsIGNoZWNrQXR0cmlidXRlKSAmJiBFbnRpdHlVdGlscy5pc05vdEVtcHR5KHZhbHVlMiwgY2hlY2tBdHRyaWJ1dGUpKSB7XG4gICAgICByZXR1cm4gRW50aXR5VXRpbHMuZXF1YWxzKHZhbHVlMSwgdmFsdWUyLCBjaGVja0F0dHJpYnV0ZSkgPyAwIDogdmFsdWUxW2NoZWNrQXR0cmlidXRlXSA+IHZhbHVlMltjaGVja0F0dHJpYnV0ZV0gPyBkaXJlY3Rpb24gOiAtMSAqIGRpcmVjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlMSA9PT0gdmFsdWUyID8gMCA6IHZhbHVlMSA+IHZhbHVlMiA/IGRpcmVjdGlvbiA6IC0xICogZGlyZWN0aW9uO1xuICB9XG5cbiAgc3RhdGljIGNvbXBhcmVWYWx1ZTxUPih2YWx1ZTE6IFQsIHZhbHVlMjogVCwgZGlyZWN0aW9uOiAxIHwgLTEpOiBudW1iZXIge1xuICAgIHJldHVybiB2YWx1ZTEgPT09IHZhbHVlMiA/IDAgOiB2YWx1ZTEgPiB2YWx1ZTIgPyBkaXJlY3Rpb24gOiAtMSAqIGRpcmVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmaWx0ZXI8VCBleHRlbmRzIElFbnRpdHk8VD4gfCBhbnk+KGRhdGE6IFRbXSwgc2VhcmNoQXR0cmlidXRlOiBzdHJpbmcsIHNlYXJjaFRleHQ6IHN0cmluZyk6IFRbXSB7XG4gICAgY29uc3QgZmlsdGVyRm4gPSB0aGlzLnNlYXJjaFRleHRGaWx0ZXIoc2VhcmNoQXR0cmlidXRlLCBzZWFyY2hUZXh0KTtcbiAgICByZXR1cm4gZGF0YS5maWx0ZXIoZmlsdGVyRm4pO1xuICB9XG5cbiAgc3RhdGljIHNlYXJjaFRleHRGaWx0ZXI8VCBleHRlbmRzIElFbnRpdHk8VD4gfCBhbnk+KHNlYXJjaEF0dHJpYnV0ZTogc3RyaW5nIHwgc3RyaW5nW10sIHNlYXJjaFRleHQ6IHN0cmluZyk6IEZpbHRlckZuPFQ+IHtcbiAgICBpZiAoaXNOaWxPckJsYW5rKHNlYXJjaEF0dHJpYnV0ZSkgfHwgaXNOaWxPckJsYW5rKHNlYXJjaFRleHQpKSByZXR1cm4gdW5kZWZpbmVkOyAvLyBmaWx0ZXIgbm90IG5lZWRcblxuICAgIGNvbnN0IHNlYXJjaFJlZ2V4cCA9IHNlYXJjaFRleHRcbiAgICAgIC8vIEVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWVzY2FwZVxuICAgICAgLnJlcGxhY2UoL1stXFwvXFxcXF4kKy4oKXxbXFxde31dL2csICdcXFxcJCYnKVxuICAgICAgLy8gSW50ZXJwcmV0ICogYXMgYW55IHRleHRcbiAgICAgIC5yZXBsYWNlKC9bKl0rL2csICcuKicpXG4gICAgICAvLyBJbnRlcnByZXQgPyBhcyBvbmUgY2hhcmFjdGVyXG4gICAgICAucmVwbGFjZSgvWz9dL2csICcuJyk7XG4gICAgaWYgKHNlYXJjaFJlZ2V4cCA9PT0gJy4qJykgcmV0dXJuIHVuZGVmaW5lZDsgLy8gZmlsdGVyIG5vdCBuZWVkXG5cbiAgICBjb25zdCBmbGFncyA9ICdpJzsgLy8gZG9uJ3QgdXNlIGdsb2JhbCByZWdleCBzZWFyY2hcbiAgICBjb25zdCBhc1ByZWZpeFBhdHRlcm4gPSAnXicgKyBzZWFyY2hSZWdleHA7XG4gICAgY29uc3QgYW55TWF0Y2hQYXR0ZXJuID0gJ14uKicgKyBzZWFyY2hSZWdleHA7XG5cbiAgICAvLyBPbmx5IG9uZSBzZWFyY2ggYXR0cmlidXRlc1xuICAgIGlmICh0eXBlb2Ygc2VhcmNoQXR0cmlidXRlID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgaXNTaW1wbGVQYXRoID0gIXNlYXJjaEF0dHJpYnV0ZSB8fCBzZWFyY2hBdHRyaWJ1dGUuaW5kZXhPZignLicpID09PSAtMTtcbiAgICAgIGNvbnN0IHNlYXJjaEFzUHJlZml4ID0gc2VhcmNoQXR0cmlidXRlLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoJ2xhYmVsJykgfHwgc2VhcmNoQXR0cmlidXRlLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoJ2NvZGUnKTtcbiAgICAgIGNvbnN0IHJlZ2V4cCA9IG5ldyBSZWdFeHAoKHNlYXJjaEFzUHJlZml4ICYmIGFzUHJlZml4UGF0dGVybikgfHwgYW55TWF0Y2hQYXR0ZXJuLCBmbGFncyk7XG4gICAgICBpZiAoaXNTaW1wbGVQYXRoKSB7XG4gICAgICAgIHJldHVybiAoYSkgPT4gcmVnZXhwLnRlc3QoYVtzZWFyY2hBdHRyaWJ1dGVdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAoYSkgPT4gcmVnZXhwLnRlc3QoRW50aXR5VXRpbHMuZ2V0UHJvcGVydHlCeVBhdGgoYSwgc2VhcmNoQXR0cmlidXRlKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gbWFueSBzZWFyY2ggYXR0cmlidXRlc1xuICAgIGVsc2Uge1xuICAgICAgY29uc3QgcmVnZXhwcyA9IHNlYXJjaEF0dHJpYnV0ZS5tYXAoKHBhdGgpID0+IHtcbiAgICAgICAgY29uc3Qgc2VhcmNoQXNQcmVmaXggPSBwYXRoLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoJ2xhYmVsJykgfHwgcGF0aC50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCdjb2RlJyk7XG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKChzZWFyY2hBc1ByZWZpeCAmJiBhc1ByZWZpeFBhdHRlcm4pIHx8IGFueU1hdGNoUGF0dGVybiwgZmxhZ3MpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gKGEpID0+IHNlYXJjaEF0dHJpYnV0ZS5maW5kSW5kZXgoKHBhdGgsIGluZGV4KSA9PiByZWdleHBzW2luZGV4XS50ZXN0KEVudGl0eVV0aWxzLmdldFByb3BlcnR5QnlQYXRoKGEsIHBhdGgpKSkgIT09IC0xO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gYSBiYXRjaCBlbnRpdHkgdHJlZSBpbnRvIGEgYXJyYXkgbGlzdC4gVGhpcyBtZXRob2Qga2VlcCBsaW5rcyBwYXJlbnQvY2hpbGRyZW4uXG4gICAqXG4gICAqIE1ldGhvZCB1c2VkIHRvIGZpbmQgYmF0Y2ggd2l0aG91dCBpZCAoZS5nLiBiZWZvcmUgbG9jYWwgc3RvcmFnZSlcbiAgICpcbiAgICogQHBhcmFtIHNvdXJjZVxuICAgKi9cbiAgc3RhdGljIHRyZWVUb0FycmF5ID0gVHJlZUl0ZW1FbnRpdHlVdGlscy50cmVlVG9BcnJheTtcblxuICBzdGF0aWMgbGlzdE9mVHJlZVRvQXJyYXkgPSBUcmVlSXRlbUVudGl0eVV0aWxzLmxpc3RPZlRyZWVUb0FycmF5O1xuXG4gIC8qKlxuICAgKiBGaWxsIHBhcmVudCBhdHRyaWJ1dGUsIG9mIGFsbCBjaGlsZHJlbiBmb3VuZCBpbiB0aGUgdHJlZVxuICAgKlxuICAgKiBAcGFyYW0gc291cmNlXG4gICAqL1xuICBzdGF0aWMgdHJlZUZpbGxQYXJlbnQgPSBUcmVlSXRlbUVudGl0eVV0aWxzLnRyZWVGaWxsUGFyZW50O1xuXG4gIHN0YXRpYyBpc0xvY2FsKGVudGl0eTogSUVudGl0eTxhbnksIGFueT4gfCBFbnRpdHk8YW55LCBhbnk+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGVudGl0eSAmJiBpc05vdE5pbChlbnRpdHkuaWQpICYmICtlbnRpdHkuaWQgPCAwO1xuICB9XG5cbiAgc3RhdGljIGlzUmVtb3RlKGVudGl0eTogSUVudGl0eTxhbnksIGFueT4gfCBFbnRpdHk8YW55LCBhbnk+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGVudGl0eSAmJiAhRW50aXR5VXRpbHMuaXNMb2NhbChlbnRpdHkpO1xuICB9XG5cbiAgc3RhdGljIGlzTG9jYWxJZChpZDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzTm90TmlsKGlkKSAmJiAraWQgPCAwO1xuICB9XG5cbiAgc3RhdGljIGlzUmVtb3RlSWQoaWQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc05vdE5pbChpZCkgJiYgK2lkID49IDA7XG4gIH1cblxuICBzdGF0aWMgZ2V0SWQ8VCBleHRlbmRzIElFbnRpdHk8VCwgSUQ+ID0gSUVudGl0eTxhbnksIGFueT4sIElEID0gYW55PihlbnRpdHk6IFQpOiBJRCB7XG4gICAgcmV0dXJuIGVudGl0eS5pZDtcbiAgfVxuXG4gIHN0YXRpYyBoYXNJZDxUIGV4dGVuZHMgSUVudGl0eTxULCBJRD4gPSBJRW50aXR5PGFueSwgYW55PiwgSUQgPSBhbnk+KGVudGl0eTogVCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc05vdE5pbChlbnRpdHkuaWQpO1xuICB9XG5cbiAgc3RhdGljIGNvbGxlY3RCeUlkPFQgZXh0ZW5kcyBJRW50aXR5PFQsIElEPiwgSUQgPSBhbnk+KGVudGl0aWVzOiBUW10pOiBJRFtdIHtcbiAgICByZXR1cm4gKGVudGl0aWVzIHx8IFtdKS5tYXAoKGUpID0+IGUuaWQpO1xuICB9XG5cbiAgc3RhdGljIGFycmF5RGlzdGluY3RGaWx0ZXJGbjxFIGV4dGVuZHMgSUVudGl0eTxhbnksIGFueT4+KGl0ZW06IEUsIGluZGV4OiBudW1iZXIsIHZhbHVlczogRVtdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHZhbHVlcy5maW5kSW5kZXgoKGUpID0+IGUuaWQgPT09IGl0ZW0uaWQpID09PSBpbmRleDtcbiAgfVxufVxuIl19
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHL0gsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRS9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBTTVFLE1BQU0sVUFBVSxjQUFjLENBQUMsR0FBc0IsRUFBRSxVQUFxQjtJQUMxRSxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksa0JBQWtCLENBQUMsR0FBRyxFQUFFLFVBQVUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUM7QUFDekYsQ0FBQztBQW1CRCxVQUFVO0FBQ1YsTUFBTSxPQUFnQixNQUFNO0lBRzFCLG9EQUFvRDtJQUNwRCxNQUFNLENBQUMsUUFBUSxDQUFTO0lBRXhCLEVBQUUsR0FBTyxJQUFJLENBQUM7SUFDZCxVQUFVLEdBQVcsSUFBSSxDQUFDO0lBQzFCLFVBQVUsQ0FBUztJQUVuQixZQUFZLFVBQW1CO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLElBQUksQ0FBQztJQUN2QyxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQWM7UUFDbEIsTUFBTSxNQUFNLEdBQUcsSUFBSyxJQUFJLENBQUMsV0FBbUIsRUFBTyxDQUFDO1FBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxD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bEUsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsTUFBTSxDQUFDLHFCQUFxQixDQUE4QixJQUFPLEVBQUUsS0FBYSxFQUFFLE1BQVc7UUFDM0YsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUM7SUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBnZXRQcm9wZXJ0eUJ5UGF0aCwgaXNFbXB0eUFycmF5LCBpc05pbCwgaXNOaWxPckJsYW5rLCBpc05vdE5pbCwgam9pblByb3BlcnRpZXNQYXRoIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBGaWx0ZXJGbiwgT2JqZWN0TWFwLCBPYmplY3RNYXBFbnRyeSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQgeyBTdG9yZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgZnJvbURhdGVJU09TdHJpbmcsIHRvRGF0ZUlTT1N0cmluZyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kYXRlcyc7XG5pbXBvcnQgeyBUcmVlSXRlbUVudGl0eVV0aWxzIH0gZnJvbSAnLi90cmVlLWl0ZW0tZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IEFwcFByb3BlcnRpZXNVdGlscyB9IGZyb20gJy4uLy4uL2Zvcm0vcHJvcGVydGllcy9wcm9wZXJ0aWVzLnV0aWxzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIENsb25lYWJsZTxUPiB7XG4gIGNsb25lKCk6IFQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnRpdHlUb1N0cmluZyhvYmo6IEVudGl0eTxhbnk+IHwgYW55LCBwcm9wZXJ0aWVzPzogc3RyaW5nW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gKG9iaiAmJiBvYmouaWQgJiYgam9pblByb3BlcnRpZXNQYXRoKG9iaiwgcHJvcGVydGllcyB8fCBbJ25hbWUnXSkpIHx8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlBc09iamVjdE9wdGlvbnMge1xuICBtaW5pZnk/OiBib29sZWFuO1xuICBrZWVwVHlwZW5hbWU/OiBib29sZWFuOyAvLyB0cnVlIGJ5IGRlZmF1bHRcbiAga2VlcExvY2FsSWQ/OiBib29sZWFuOyAvLyB0cnVlIGJ5IGRlZmF1bHRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRW50aXR5PFQsIElEID0gbnVtYmVyLCBBTyBleHRlbmRzIEVudGl0eUFzT2JqZWN0T3B0aW9ucyA9IEVudGl0eUFzT2JqZWN0T3B0aW9ucywgRk8gPSBhbnk+IGV4dGVuZHMgQ2xvbmVhYmxlPFQ+IHtcbiAgaWQ6IElEO1xuICB1cGRhdGVEYXRlOiBNb21lbnQ7XG4gIF9fdHlwZW5hbWU6IHN0cmluZztcbiAgZXF1YWxzKG90aGVyOiBUKTogYm9vbGVhbjtcbiAgY2xvbmUob3B0cz86IEFPICYgRk8pOiBUO1xuICBjb3B5KHRhcmdldDogVCwgb3B0cz86IEFPICYgRk8pO1xuICBhc09iamVjdChvcHRzPzogQU8pOiBhbnk7XG4gIGZyb21PYmplY3Qoc291cmNlOiBhbnksIG9wdHM/OiBGTyk7XG59XG5cbi8vQGR5bmFtaWNcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbnRpdHk8VCBleHRlbmRzIEVudGl0eTxULCBJRCwgQU8sIEZPPiwgSUQgPSBudW1iZXIsIEFPIGV4dGVuZHMgRW50aXR5QXNPYmplY3RPcHRpb25zID0gRW50aXR5QXNPYmplY3RPcHRpb25zLCBGTyA9IGFueT5cbiAgaW1wbGVtZW50cyBJRW50aXR5PFQsIElELCBBTywgRk8+XG57XG4gIC8vIFRoZSBHcmFwaFFMIHR5cGVuYW1lIChpbmplY3RlZCBieSBARW50aXR5Q2xhc3MoKSlcbiAgc3RhdGljIFRZUEVOQU1FOiBzdHJpbmc7XG5cbiAgaWQ6IElEID0gbnVsbDtcbiAgdXBkYXRlRGF0ZTogTW9tZW50ID0gbnVsbDtcbiAgX190eXBlbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9fdHlwZW5hbWU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9fdHlwZW5hbWUgPSBfX3R5cGVuYW1lIHx8IG51bGw7XG4gIH1cblxuICBjbG9uZShvcHRzPzogQU8gJiBGTyk6IFQge1xuICAgIGNvbnN0IHRhcmdldCA9IG5ldyAodGhpcy5jb25zdHJ1Y3RvciBhcyBhbnkpKCkgYXMgVDtcbiAgICB0aGlzLmNvcHkodGFyZ2V0LCBvcHRzKTtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgY29weSh0YXJnZXQ6IFQsIG9wdHM/OiBBTyAmIEZPKSB7XG4gICAgdGFyZ2V0LmZyb21PYmplY3QodGhpcy5hc09iamVjdChvcHRzKSwgb3B0cyk7XG4gIH1cblxuICBhc09iamVjdChvcHRzPzogQU8pOiBTdG9yZU9iamVjdCB7XG4gICAgY29uc3QgdGFyZ2V0OiBhbnkgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzKTsgLy89IHsuLi50aGlzfTtcbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5rZWVwVHlwZW5hbWUgIT09IHRydWUpIGRlbGV0ZSB0YXJnZXQuX190eXBlbmFtZTtcbiAgICB0YXJnZXQudXBkYXRlRGF0ZSA9IHRvRGF0ZUlTT1N0cmluZyh0aGlzLnVwZGF0ZURhdGUpO1xuICAgIGlmICh0YXJnZXQuaWQgPT0gbnVsbCB8fCAob3B0cyAmJiBvcHRzLmtlZXBMb2NhbElkID09PSBmYWxzZSAmJiB0YXJnZXQuaWQgPCAwKSkge1xuICAgICAgZGVsZXRlIHRhcmdldC5pZDtcbiAgICAgIGRlbGV0ZSB0YXJnZXQudXBkYXRlRGF0ZTsgLy8gTWFrZSB0byBzZW5zIHRvIGtlZXAgdXBkYXRlRGF0ZSBvZiBhIGxvY2FsIGVudGl0eSB0byBzYXZlXG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBmcm9tT2JqZWN0KHNvdXJjZTogYW55LCBvcHRzPzogRk8pIHtcbiAgICB0aGlzLmlkID0gc291cmNlLmlkIHx8IHNvdXJjZS5pZCA9PT0gMCA/IHNvdXJjZS5pZCA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLnVwZGF0ZURhdGUgPSBmcm9tRGF0ZUlTT1N0cmluZyhzb3VyY2UudXBkYXRlRGF0ZSk7XG4gICAgdGhpcy5fX3R5cGVuYW1lID0gc291cmNlLl9fdHlwZW5hbWUgfHwgdGhpcy5fX3R5cGVuYW1lOyAvLyBLZWVwIG9yaWdpbmFsIHR5cGUgKGNhbiBiZSBzZXQgaW4gY29uc3RydWN0b3IpXG4gIH1cblxuICBlcXVhbHMob3RoZXI6IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gb3RoZXIgJiYgdGhpcy5pZCA9PT0gb3RoZXIuaWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCB1c2Ugc3RhbmRhcmQgaW5zdGFuY2VvZiBpbnN0ZWFkXG4gKiBAcGFyYW0gb2JqXG4gKiBAcGFyYW0gY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW5zdGFuY2VPZjxUPihvYmo6IGFueSwgY29uc3RydWN0b3I6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQpOiBvYmogaXMgVCB7XG4gIGlmICghb2JqKSByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIGNvbnN0cnVjdG9yO1xufVxuXG4vLyBAZHluYW1pY1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVudGl0eVV0aWxzIHtcbiAgLy8gQ2hlY2sgdGhhdCB0aGUgb2JqZWN0IGhhcyBhIE5PVCBuaWwgYXR0cmlidXRlIChJRCBieSBkZWZhdWx0KVxuICBzdGF0aWMgaXNFbnRpdHk8VCBleHRlbmRzIElFbnRpdHk8YW55Pj4ob2JqOiBUIHwgYW55KTogb2JqIGlzIFQge1xuICAgIHJldHVybiBpc05vdE5pbChvYmo/Ll9fdHlwZW5hbWUpICYmIHR5cGVvZiBvYmouZnJvbU9iamVjdCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygb2JqLmFzT2JqZWN0ID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgLy8gQ2hlY2sgdGhhdCB0aGUgb2JqZWN0IGhhcyBhIE5PVCBuaWwgYXR0cmlidXRlIChJRCBieSBkZWZhdWx0KVxuICBzdGF0aWMgaXNOb3RFbXB0eTxUIGV4dGVuZHMgSUVudGl0eTxhbnk+IHwgYW55PihvYmo6IFQsIGNoZWNrZWRBdHRyaWJ1dGU6IGtleW9mIFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFvYmogJiYgb2JqW2NoZWNrZWRBdHRyaWJ1dGVdICE9PSBudWxsICYmIG9ialtjaGVja2VkQXR0cmlidXRlXSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgc3RhdGljIGlzRW1wdHk8VCBleHRlbmRzIElFbnRpdHk8YW55PiB8IGFueT4ob2JqOiBULCBjaGVja2VkQXR0cmlidXRlOiBrZXlvZiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFvYmogfHwgb2JqW2NoZWNrZWRBdHRyaWJ1dGVdID09PSBudWxsIHx8IG9ialtjaGVja2VkQXR0cmlidXRlXSA9PT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgc3RhdGljIGVxdWFsczxUIGV4dGVuZHMgSUVudGl0eTxhbnk+IHwgYW55PihvMTogVCwgbzI6IFQsIGNoZWNrQXR0cmlidXRlPzoga2V5b2YgVCk6IGJvb2xlYW4ge1xuICAgIGNoZWNrQXR0cmlidXRlID0gY2hlY2tBdHRyaWJ1dGUgfHwgKCdpZCcgYXMga2V5b2YgVCk7XG4gICAgcmV0dXJuIG8xID09PSBvMiB8fCAoaXNOaWwobzEpICYmIGlzTmlsKG8yKSkgfHwgKG8xICYmIG8yICYmIG8xW2NoZWNrQXR0cmlidXRlXSA9PT0gbzJbY2hlY2tBdHRyaWJ1dGVdKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRQcm9wZXJ0eUJ5UGF0aCA9IGdldFByb3BlcnR5QnlQYXRoO1xuXG4gIHN0YXRpYyBnZXRBcnJheUFzTWFwPFQgPSBhbnk+KHNvdXJjZT86IE9iamVjdE1hcEVudHJ5PFQ+W10pOiBPYmplY3RNYXA8VD4ge1xuICAgIHJldHVybiAoc291cmNlIHx8IFtdKS5yZWR1Y2UoKHJlcywgaXRlbSkgPT4ge1xuICAgICAgcmVzW2l0ZW0ua2V5XSA9IGl0ZW0udmFsdWU7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0sIHt9KTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRNYXBBc0FycmF5PFQgPSBhbnk+KHNvdXJjZT86IE9iamVjdE1hcDxUPik6IE9iamVjdE1hcEVudHJ5PFQ+W10ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNvdXJjZSkpIHJldHVybiBzb3VyY2U7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZSB8fCB7fSkubWFwKChrZXkpID0+ICh7XG4gICAgICBrZXksXG4gICAgICB2YWx1ZTogc291cmNlW2tleV0sXG4gICAgfSkpO1xuICB9XG5cbiAgc3RhdGljIGdldFByb3BlcnR5QXJyYXlBc09iamVjdCA9IEFwcFByb3BlcnRpZXNVdGlscy5hcnJheUFzT2JqZWN0O1xuXG4gIHN0YXRpYyBjb3B5SWRBbmRVcGRhdGVEYXRlPFQgZXh0ZW5kcyBFbnRpdHk8YW55LCBhbnksIGFueT4+KHNvdXJjZTogVCwgdGFyZ2V0OiBUKSB7XG4gICAgaWYgKCFzb3VyY2UpIHJldHVybjtcblxuICAgIC8vIFVwZGF0ZSAoaWQgYW5kIHVwZGF0ZURhdGUpXG4gICAgdGFyZ2V0LmlkID0gaXNOb3ROaWwoc291cmNlLmlkKSA/IHNvdXJjZS5pZCA6IHRhcmdldC5pZDtcbiAgICB0YXJnZXQudXBkYXRlRGF0ZSA9IGZyb21EYXRlSVNPU3RyaW5nKHNvdXJjZS51cGRhdGVEYXRlKSB8fCB0YXJnZXQudXBkYXRlRGF0ZTtcblxuICAgIC8vIFVwZGF0ZSBjcmVhdGlvbiBEYXRlLCBpZiBleGlzdHNcbiAgICBpZiAoc291cmNlWydjcmVhdGlvbkRhdGUnXSkge1xuICAgICAgdGFyZ2V0WydjcmVhdGlvbkRhdGUnXSA9IGZyb21EYXRlSVNPU3RyaW5nKHNvdXJjZVsnY3JlYXRpb25EYXRlJ10pO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBmaWxsTG9jYWxJZHM8VCBleHRlbmRzIElFbnRpdHk8VD4+KGl0ZW1zOiBUW10sIHNlcXVlbmNlRmFjdG9yeTogKGZpcnN0RW50aXR5OiBULCBpbmNyZW1lbnRTaXplOiBudW1iZXIpID0+IFByb21pc2U8bnVtYmVyPikge1xuICAgIGNvbnN0IG5ld0l0ZW1zID0gKGl0ZW1zIHx8IFtdKS5maWx0ZXIoKGl0ZW0pID0+IGlzTmlsKGl0ZW0uaWQpIHx8IGl0ZW0uaWQgPT09IDApO1xuICAgIGlmIChpc0VtcHR5QXJyYXkobmV3SXRlbXMpKSByZXR1cm47XG4gICAgLy8gR2V0IHRoZSBzZXF1ZW5jZVxuICAgIGxldCBjdXJyZW50SWQgPSAoYXdhaXQgc2VxdWVuY2VGYWN0b3J5KG5ld0l0ZW1zWzBdLCBuZXdJdGVtcy5sZW5ndGgpKSArIDE7XG4gICAgLy8gVGFrZSB0aGUgbWluIChzZXF1ZW5jZSwgaWQpLCBpbiBjYXNlIHRoZSBzZXF1ZW5jZSBpcyBjb3JydXB0ZWRcbiAgICBjdXJyZW50SWQgPSBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGlzTm90TmlsKGl0ZW0uaWQpICYmIGl0ZW0uaWQgPCAwKS5yZWR1Y2UoKHJlcywgaXRlbSkgPT4gTWF0aC5taW4ocmVzLCBpdGVtLmlkKSwgY3VycmVudElkKTtcbiAgICBuZXdJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiAoaXRlbS5pZCA9IC0tY3VycmVudElkKSk7XG4gIH1cblxuICBzdGF0aWMgY2xlYW5JZEFuZFVwZGF0ZURhdGU8VCBleHRlbmRzIElFbnRpdHk8VD4+KHNvdXJjZTogVCkge1xuICAgIGlmICghc291cmNlKSByZXR1cm47IC8vIFNraXBcbiAgICBzb3VyY2UuaWQgPSBudWxsO1xuICAgIHNvdXJjZS51cGRhdGVEYXRlID0gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBjbGVhbklkc0FuZFVwZGF0ZURhdGVzPFQgZXh0ZW5kcyBJRW50aXR5PFQ+PihpdGVtczogVFtdKSB7XG4gICAgKGl0ZW1zIHx8IFtdKS5mb3JFYWNoKEVudGl0eVV0aWxzLmNsZWFuSWRBbmRVcGRhdGVEYXRlKTtcbiAgfVxuXG4gIHN0YXRpYyBzb3J0PFQgZXh0ZW5kcyBJRW50aXR5PFQ+IHwgYW55PihkYXRhOiBUW10sIHNvcnRCeT86IHN0cmluZywgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24pOiBUW10ge1xuICAgIGlmICghZGF0YSB8fCBkYXRhLmxlbmd0aCA8PSAxIHx8ICFzb3J0QnkpIHJldHVybiBkYXRhO1xuICAgIHJldHVybiBkYXRhLnNvcnQodGhpcy5zb3J0Q29tcGFyYXRvcihzb3J0QnksIHNvcnREaXJlY3Rpb24pKTtcbiAgfVxuXG4gIHN0YXRpYyBzb3J0Q29tcGFyYXRvcjxUIGV4dGVuZHMgSUVudGl0eTxUPiB8IGFueT4oc29ydEJ5Pzogc3RyaW5nLCBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbik6IChhOiBULCBiOiBUKSA9PiBudW1iZXIge1xuICAgIGNvbnN0IGFmdGVyID0gIXNvcnREaXJlY3Rpb24gfHwgc29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyAxIDogLTE7XG4gICAgY29uc3QgcHJvcGVydHkgPSBzb3J0QnkgfHwgJ2lkJztcbiAgICByZXR1cm4gKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlQSA9IEVudGl0eVV0aWxzLmdldFByb3BlcnR5QnlQYXRoKGEsIHByb3BlcnR5KTtcbiAgICAgIGNvbnN0IHZhbHVlQiA9IEVudGl0eVV0aWxzLmdldFByb3BlcnR5QnlQYXRoKGIsIHByb3BlcnR5KTtcbiAgICAgIHJldHVybiBFbnRpdHlVdGlscy5jb21wYXJlKHZhbHVlQSwgdmFsdWVCLCBhZnRlcik7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBjb21wYXJlPFQgZXh0ZW5kcyBJRW50aXR5PGFueT4+KHZhbHVlMTogVCwgdmFsdWUyOiBULCBkaXJlY3Rpb246IDEgfCAtMSwgY2hlY2tBdHRyaWJ1dGU/OiBrZXlvZiBUKTogbnVtYmVyIHtcbiAgICBjaGVja0F0dHJpYnV0ZSA9IGNoZWNrQXR0cmlidXRlIHx8ICdpZCc7XG4gICAgaWYgKEVudGl0eVV0aWxzLmlzTm90RW1wdHkodmFsdWUxLCBjaGVja0F0dHJpYnV0ZSkgJiYgRW50aXR5VXRpbHMuaXNOb3RFbXB0eSh2YWx1ZTIsIGNoZWNrQXR0cmlidXRlKSkge1xuICAgICAgcmV0dXJuIEVudGl0eVV0aWxzLmVxdWFscyh2YWx1ZTEsIHZhbHVlMiwgY2hlY2tBdHRyaWJ1dGUpID8gMCA6IHZhbHVlMVtjaGVja0F0dHJpYnV0ZV0gPiB2YWx1ZTJbY2hlY2tBdHRyaWJ1dGVdID8gZGlyZWN0aW9uIDogLTEgKiBkaXJlY3Rpb247XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTEgPT09IHZhbHVlMiA/IDAgOiB2YWx1ZTEgPiB2YWx1ZTIgPyBkaXJlY3Rpb24gOiAtMSAqIGRpcmVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBjb21wYXJlVmFsdWU8VD4odmFsdWUxOiBULCB2YWx1ZTI6IFQsIGRpcmVjdGlvbjogMSB8IC0xKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdmFsdWUxID09PSB2YWx1ZTIgPyAwIDogdmFsdWUxID4gdmFsdWUyID8gZGlyZWN0aW9uIDogLTEgKiBkaXJlY3Rpb247XG4gIH1cblxuICBzdGF0aWMgZmlsdGVyPFQgZXh0ZW5kcyBJRW50aXR5PFQ+IHwgYW55PihkYXRhOiBUW10sIHNlYXJjaEF0dHJpYnV0ZTogc3RyaW5nLCBzZWFyY2hUZXh0OiBzdHJpbmcpOiBUW10ge1xuICAgIGNvbnN0IGZpbHRlckZuID0gdGhpcy5zZWFyY2hUZXh0RmlsdGVyKHNlYXJjaEF0dHJpYnV0ZSwgc2VhcmNoVGV4dCk7XG4gICAgcmV0dXJuIGRhdGEuZmlsdGVyKGZpbHRlckZuKTtcbiAgfVxuXG4gIHN0YXRpYyBzZWFyY2hUZXh0RmlsdGVyPFQgZXh0ZW5kcyBJRW50aXR5PFQ+IHwgYW55PihzZWFyY2hBdHRyaWJ1dGU6IHN0cmluZyB8IHN0cmluZ1tdLCBzZWFyY2hUZXh0OiBzdHJpbmcpOiBGaWx0ZXJGbjxUPiB7XG4gICAgaWYgKGlzTmlsT3JCbGFuayhzZWFyY2hBdHRyaWJ1dGUpIHx8IGlzTmlsT3JCbGFuayhzZWFyY2hUZXh0KSkgcmV0dXJuIHVuZGVmaW5lZDsgLy8gZmlsdGVyIG5vdCBuZWVkXG5cbiAgICBjb25zdCBzZWFyY2hSZWdleHAgPSBzZWFyY2hUZXh0XG4gICAgICAvLyBFc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1lc2NhcGVcbiAgICAgIC5yZXBsYWNlKC9bLVxcL1xcXFxeJCsuKCl8W1xcXXt9XS9nLCAnXFxcXCQmJylcbiAgICAgIC8vIEludGVycHJldCAqIGFzIGFueSB0ZXh0XG4gICAgICAucmVwbGFjZSgvWypdKy9nLCAnLionKVxuICAgICAgLy8gSW50ZXJwcmV0ID8gYXMgb25lIGNoYXJhY3RlclxuICAgICAgLnJlcGxhY2UoL1s/XS9nLCAnLicpO1xuICAgIGlmIChzZWFyY2hSZWdleHAgPT09ICcuKicpIHJldHVybiB1bmRlZmluZWQ7IC8vIGZpbHRlciBub3QgbmVlZFxuXG4gICAgY29uc3QgZmxhZ3MgPSAnaSc7IC8vIGRvbid0IHVzZSBnbG9iYWwgcmVnZXggc2VhcmNoXG4gICAgY29uc3QgYXNQcmVmaXhQYXR0ZXJuID0gJ14nICsgc2VhcmNoUmVnZXhwO1xuICAgIGNvbnN0IGFueU1hdGNoUGF0dGVybiA9ICdeLionICsgc2VhcmNoUmVnZXhwO1xuXG4gICAgLy8gT25seSBvbmUgc2VhcmNoIGF0dHJpYnV0ZXNcbiAgICBpZiAodHlwZW9mIHNlYXJjaEF0dHJpYnV0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IGlzU2ltcGxlUGF0aCA9ICFzZWFyY2hBdHRyaWJ1dGUgfHwgc2VhcmNoQXR0cmlidXRlLmluZGV4T2YoJy4nKSA9PT0gLTE7XG4gICAgICBjb25zdCBzZWFyY2hBc1ByZWZpeCA9IHNlYXJjaEF0dHJpYnV0ZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCdsYWJlbCcpIHx8IHNlYXJjaEF0dHJpYnV0ZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCdjb2RlJyk7XG4gICAgICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKChzZWFyY2hBc1ByZWZpeCAmJiBhc1ByZWZpeFBhdHRlcm4pIHx8IGFueU1hdGNoUGF0dGVybiwgZmxhZ3MpO1xuICAgICAgaWYgKGlzU2ltcGxlUGF0aCkge1xuICAgICAgICByZXR1cm4gKGEpID0+IHJlZ2V4cC50ZXN0KGFbc2VhcmNoQXR0cmlidXRlXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gKGEpID0+IHJlZ2V4cC50ZXN0KEVudGl0eVV0aWxzLmdldFByb3BlcnR5QnlQYXRoKGEsIHNlYXJjaEF0dHJpYnV0ZSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIG1hbnkgc2VhcmNoIGF0dHJpYnV0ZXNcbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IHJlZ2V4cHMgPSBzZWFyY2hBdHRyaWJ1dGUubWFwKChwYXRoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlYXJjaEFzUHJlZml4ID0gcGF0aC50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCdsYWJlbCcpIHx8IHBhdGgudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnY29kZScpO1xuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cCgoc2VhcmNoQXNQcmVmaXggJiYgYXNQcmVmaXhQYXR0ZXJuKSB8fCBhbnlNYXRjaFBhdHRlcm4sIGZsYWdzKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIChhKSA9PiBzZWFyY2hBdHRyaWJ1dGUuZmluZEluZGV4KChwYXRoLCBpbmRleCkgPT4gcmVnZXhwc1tpbmRleF0udGVzdChFbnRpdHlVdGlscy5nZXRQcm9wZXJ0eUJ5UGF0aChhLCBwYXRoKSkpICE9PSAtMTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIGEgYmF0Y2ggZW50aXR5IHRyZWUgaW50byBhIGFycmF5IGxpc3QuIFRoaXMgbWV0aG9kIGtlZXAgbGlua3MgcGFyZW50L2NoaWxkcmVuLlxuICAgKlxuICAgKiBNZXRob2QgdXNlZCB0byBmaW5kIGJhdGNoIHdpdGhvdXQgaWQgKGUuZy4gYmVmb3JlIGxvY2FsIHN0b3JhZ2UpXG4gICAqXG4gICAqIEBwYXJhbSBzb3VyY2VcbiAgICovXG4gIHN0YXRpYyB0cmVlVG9BcnJheSA9IFRyZWVJdGVtRW50aXR5VXRpbHMudHJlZVRvQXJyYXk7XG5cbiAgc3RhdGljIGxpc3RPZlRyZWVUb0FycmF5ID0gVHJlZUl0ZW1FbnRpdHlVdGlscy5saXN0T2ZUcmVlVG9BcnJheTtcblxuICAvKipcbiAgICogRmlsbCBwYXJlbnQgYXR0cmlidXRlLCBvZiBhbGwgY2hpbGRyZW4gZm91bmQgaW4gdGhlIHRyZWVcbiAgICpcbiAgICogQHBhcmFtIHNvdXJjZVxuICAgKi9cbiAgc3RhdGljIHRyZWVGaWxsUGFyZW50ID0gVHJlZUl0ZW1FbnRpdHlVdGlscy50cmVlRmlsbFBhcmVudDtcblxuICBzdGF0aWMgaXNMb2NhbChlbnRpdHk6IElFbnRpdHk8YW55LCBhbnk+IHwgRW50aXR5PGFueSwgYW55Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlbnRpdHkgJiYgaXNOb3ROaWwoZW50aXR5LmlkKSAmJiArZW50aXR5LmlkIDwgMDtcbiAgfVxuXG4gIHN0YXRpYyBpc1JlbW90ZShlbnRpdHk6IElFbnRpdHk8YW55LCBhbnk+IHwgRW50aXR5PGFueSwgYW55Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlbnRpdHkgJiYgIUVudGl0eVV0aWxzLmlzTG9jYWwoZW50aXR5KTtcbiAgfVxuXG4gIHN0YXRpYyBpc0xvY2FsSWQoaWQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc05vdE5pbChpZCkgJiYgK2lkIDwgMDtcbiAgfVxuXG4gIHN0YXRpYyBpc1JlbW90ZUlkKGlkOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNOb3ROaWwoaWQpICYmICtpZCA+PSAwO1xuICB9XG5cbiAgc3RhdGljIGdldElkPFQgZXh0ZW5kcyBJRW50aXR5PFQsIElEPiA9IElFbnRpdHk8YW55LCBhbnk+LCBJRCA9IGFueT4oZW50aXR5OiBUKTogSUQge1xuICAgIHJldHVybiBlbnRpdHkuaWQ7XG4gIH1cblxuICBzdGF0aWMgaGFzSWQ8VCBleHRlbmRzIElFbnRpdHk8VCwgSUQ+ID0gSUVudGl0eTxhbnksIGFueT4sIElEID0gYW55PihlbnRpdHk6IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNOb3ROaWwoZW50aXR5LmlkKTtcbiAgfVxuXG4gIHN0YXRpYyBjb2xsZWN0QnlJZDxUIGV4dGVuZHMgSUVudGl0eTxULCBJRD4sIElEID0gYW55PihlbnRpdGllczogVFtdKTogSURbXSB7XG4gICAgcmV0dXJuIChlbnRpdGllcyB8fCBbXSkubWFwKChlKSA9PiBlLmlkKTtcbiAgfVxuXG4gIHN0YXRpYyBhcnJheURpc3RpbmN0RmlsdGVyRm48RSBleHRlbmRzIElFbnRpdHk8YW55LCBhbnk+PihpdGVtOiBFLCBpbmRleDogbnVtYmVyLCB2YWx1ZXM6IEVbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB2YWx1ZXMuZmluZEluZGV4KChlKSA9PiBlLmlkID09PSBpdGVtLmlkKSA9PT0gaW5kZXg7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -32,6 +32,9 @@ let Peer = class Peer extends Entity {
|
|
|
32
32
|
.filter(isNotNilOrBlank);
|
|
33
33
|
return [noTrailingSlash(this.fromObject(peer).url)].concat(...paths).join('/');
|
|
34
34
|
}
|
|
35
|
+
static equals(p1, p2) {
|
|
36
|
+
return p1 && p2 && Peer_1.fromObject(p1).equals(p2);
|
|
37
|
+
}
|
|
35
38
|
dns;
|
|
36
39
|
ipv4;
|
|
37
40
|
ipv6;
|
|
@@ -62,7 +65,13 @@ let Peer = class Peer extends Entity {
|
|
|
62
65
|
this.path = source.path || '';
|
|
63
66
|
}
|
|
64
67
|
equals(other) {
|
|
65
|
-
return
|
|
68
|
+
return (
|
|
69
|
+
// Same entity (by id)
|
|
70
|
+
(isNotNil(this.id) && isNotNil(other.id) && this.id === other.id) ||
|
|
71
|
+
// Same pubkey (if defined)
|
|
72
|
+
((!this.pubkey || !other.pubkey || this.pubkey === other.pubkey) &&
|
|
73
|
+
// Same url
|
|
74
|
+
this.url === other.url));
|
|
66
75
|
}
|
|
67
76
|
/**
|
|
68
77
|
* Return the peer URL (without trailing slash)
|
|
@@ -81,4 +90,4 @@ Peer = Peer_1 = __decorate([
|
|
|
81
90
|
EntityClass({ typename: 'PeerVO' })
|
|
82
91
|
], Peer);
|
|
83
92
|
export { Peer };
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9tb2RlbC9wZWVyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFtQjs7O0FBRW5CLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRyxPQUFPLEVBQWEsTUFBTSxFQUF5QixNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxXQUFXO0FBRUosSUFBTSxJQUFJLEdBQVYsTUFBTSxJQUFLLFNBQVEsTUFBWTs7SUFDcEMsTUFBTSxDQUFDLFVBQVUsQ0FBb0M7SUFFckQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFlO1FBQzdCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNyQixHQUFHLEVBQUUsR0FBRyxDQUFDLFFBQVE7WUFDakIsSUFBSSxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUk7WUFDbkQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RixJQUFJLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7U0FDcEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBVSxFQUFFLEdBQUcsS0FBZTtRQUN4QyxJ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LENBQUMsTUFBTSxDQUFDO2dCQUM5RCxXQUFXO2dCQUNYLElBQUksQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUMxQixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxHQUFHO1FBQ0wsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVILENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUM7SUFDN0MsQ0FBQztDQUNGLENBQUE7QUF4RlksSUFBSTtJQURoQixXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUM7R0FDdkIsSUFBSSxDQXdGaEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiAtLSBOZXR3b3JrIC0tICovXG5cbmltcG9ydCB7IGlzTmlsT3JCbGFuaywgaXNOb3ROaWwsIGlzTm90TmlsT3JCbGFuaywgbm9UcmFpbGluZ1NsYXNoIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBDbG9uZWFibGUsIEVudGl0eSwgRW50aXR5QXNPYmplY3RPcHRpb25zIH0gZnJvbSAnLi9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRW50aXR5Q2xhc3MgfSBmcm9tICcuL2VudGl0eS5kZWNvcmF0b3JzJztcblxuLy8gQGR5bmFtaWNcbkBFbnRpdHlDbGFzcyh7IHR5cGVuYW1lOiAnUGVlclZPJyB9KVxuZXhwb3J0IGNsYXNzIFBlZXIgZXh0ZW5kcyBFbnRpdHk8UGVlcj4gaW1wbGVtZW50cyBDbG9uZWFibGU8UGVlcj4ge1xuICBzdGF0aWMgZnJvbU9iamVjdDogKHNvdXJjZTogYW55LCBvcHRzPzogYW55KSA9PiBQZWVyO1xuXG4gIHN0YXRpYyBwYXJzZVVybChwZWVyVXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHBlZXJVcmwpO1xuICAgIHJldHVybiB0aGlzLmZyb21PYmplY3Qoe1xuICAgICAgZG5zOiB1cmwuaG9zdG5hbWUsXG4gICAgICBwb3J0OiBpc05pbE9yQmxhbmsodXJsLnBvcnQpID8gdW5kZWZpbmVkIDogdXJsLnBvcnQsXG4gICAgICB1c2VTc2w6IHVybC5wcm90b2NvbCAmJiAodXJsLnByb3RvY29sLnN0YXJ0c1dpdGgoJ2h0dHBzJykgfHwgdXJsLnByb3RvY29sLnN0YXJ0c1dpdGgoJ3dzcycpKSxcbiAgICAgIHBhdGg6IG5vVHJhaWxpbmdTbGFzaCh1cmwucGF0aG5hbWUpLFxuICAgIH0pO1xuICB9XG4gIHN0YXRpYyBwYXRoKHBlZXI6IFBlZXIsIC4uLnBhdGhzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgaWYgKCFwZWVyKSB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50ICdwZWVyJyFcIik7XG4gICAgLy8gUmVtb3ZlIHN0YXJ0aW5nIHNsYXNoZXNcbiAgICBwYXRocyA9IChwYXRocyB8fCBbXSlcbiAgICAgIC5tYXAoKHBhdGgpID0+IHtcbiAgICAgICAgaWYgKHBhdGguc3RhcnRzV2l0aCgnLi8nKSkgcmV0dXJuIHBhdGguc3Vic3RyaW5nKDIpO1xuICAgICAgICBpZiAocGF0aC5zdGFydHNXaXRoKCcvJykpIHJldHVybiBwYXRoLnN1YnN0cmluZygxKTtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihpc05vdE5pbE9yQmxhbmspO1xuICAgIHJldHVybiBbbm9UcmFpbGluZ1NsYXNoKHRoaXMuZnJvbU9iamVjdChwZWVyKS51cmwpXS5jb25jYXQoLi4ucGF0aHMpLmpvaW4oJy8nKTtcbiAgfVxuXG4gIHN0YXRpYyBlcXVhbHMocDE6IFBlZXIsIHAyOiBQZWVyKSB7XG4gICAgcmV0dXJuIHAxICYmIHAyICYmIFBlZXIuZnJvbU9iamVjdChwMSkuZXF1YWxzKHAyKTtcbiAgfVxuXG4gIGRuczogc3RyaW5nO1xuICBpcHY0OiBzdHJpbmc7XG4gIGlwdjY6IHN0cmluZztcbiAgcG9ydDogbnVtYmVyO1xuICB1c2VTc2w6IGJvb2xlYW47XG4gIHB1YmtleTogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xuXG4gIGZhdmljb246IHN0cmluZztcbiAgc3RhdHVzOiAnVVAnIHwgJ0RPV04nO1xuICBzb2Z0d2FyZU5hbWU6IHN0cmluZztcbiAgc29mdHdhcmVWZXJzaW9uOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihQZWVyLlRZUEVOQU1FKTtcbiAgfVxuXG4gIGFzT2JqZWN0KG9wdGlvbnM/OiBFbnRpdHlBc09iamVjdE9wdGlvbnMpOiBhbnkge1xuICAgIHJldHVybiBzdXBlci5hc09iamVjdChvcHRpb25zKTtcbiAgfVxuXG4gIGZyb21PYmplY3Qoc291cmNlOiBhbnkpIHtcbiAgICBzdXBlci5mcm9tT2JqZWN0KHNvdXJjZSk7XG4gICAgdGhpcy5kbnMgPSBzb3VyY2UuZG5zIHx8IHNvdXJjZS5ob3N0O1xuICAgIHRoaXMuaXB2NCA9IHNvdXJjZS5pcHY0O1xuICAgIHRoaXMuaXB2NiA9IHNvdXJjZS5pcHY2O1xuICAgIHRoaXMucG9ydCA9IGlzTm90TmlsKHNvdXJjZS5wb3J0KSA/ICtzb3VyY2UucG9ydCA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLnB1YmtleSA9IHNvdXJjZS5wdWJrZXk7XG4gICAgdGhpcy51c2VTc2wgPSBzb3VyY2UudXNlU3NsIHx8IHRoaXMucG9ydCA9PT0gNDQzO1xuICAgIHRoaXMucGF0aCA9IHNvdXJjZS5wYXRoIHx8ICcnO1xuICB9XG5cbiAgZXF1YWxzKG90aGVyOiBQZWVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIC8vIFNhbWUgZW50aXR5IChieSBpZClcbiAgICAgIChpc05vdE5pbCh0aGlzLmlkKSAmJiBpc05vdE5pbChvdGhlci5pZCkgJiYgdGhpcy5pZCA9PT0gb3RoZXIuaWQpIHx8XG4gICAgICAvLyBTYW1lIHB1YmtleSAoaWYgZGVmaW5lZClcbiAgICAgICgoIXRoaXMucHVia2V5IHx8ICFvdGhlci5wdWJrZXkgfHwgdGhpcy5wdWJrZXkgPT09IG90aGVyLnB1YmtleSkgJiZcbiAgICAgICAgLy8gU2FtZSB1cmxcbiAgICAgICAgdGhpcy51cmwgPT09IG90aGVyLnVybClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgcGVlciBVUkwgKHdpdGhvdXQgdHJhaWxpbmcgc2xhc2gpXG4gICAqL1xuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLnVzZVNzbCA/ICdodHRwczovLycgOiAnaHR0cDovLycpICsgdGhpcy5ob3N0QW5kUG9ydCArICh0aGlzLnBhdGggfHwgJycpO1xuICB9XG5cbiAgZ2V0IGhvc3RBbmRQb3J0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmRucyB8fCB0aGlzLmlwdjQgfHwgdGhpcy5pcHY2KSArICh0aGlzLnBvcnQgJiYgdGhpcy5wb3J0ICE9PSA4MCAmJiB0aGlzLnBvcnQgIT09IDQ0MyA/ICc6JyArIHRoaXMucG9ydCA6ICcnKTtcbiAgfVxuXG4gIGdldCByZWFjaGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzICYmIHRoaXMuc3RhdHVzID09PSAnVVAnO1xuICB9XG59XG4iXX0=
|