@sachin9822/reports-lib 0.0.214 → 0.0.216

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.
Files changed (21) hide show
  1. package/esm2020/lib/components/accounting-report/accounting-report.component.mjs +19 -1
  2. package/esm2020/lib/components/branch-activity-send-report/branch-activity-send-report.component.mjs +21 -1
  3. package/esm2020/lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component.mjs +19 -1
  4. package/esm2020/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.mjs +21 -1
  5. package/esm2020/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.mjs +21 -3
  6. package/esm2020/lib/components/transaction-monitoring-report/transaction-monitoring-report.component.mjs +26 -5
  7. package/esm2020/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.mjs +23 -50
  8. package/esm2020/lib/models/trial-balance-accounts-report/trial-balance-accounts.models.mjs +1 -1
  9. package/esm2020/lib/services/report.service.mjs +4 -4
  10. package/esm2020/lib/shared/search-filter/search-filter.component.mjs +31 -18
  11. package/fesm2015/sachin9822-reports-lib.mjs +298 -76
  12. package/fesm2015/sachin9822-reports-lib.mjs.map +1 -1
  13. package/fesm2020/sachin9822-reports-lib.mjs +176 -75
  14. package/fesm2020/sachin9822-reports-lib.mjs.map +1 -1
  15. package/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.d.ts +13 -0
  16. package/lib/components/transaction-monitoring-report/transaction-monitoring-report.component.d.ts +1 -0
  17. package/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.d.ts +2 -3
  18. package/lib/models/trial-balance-accounts-report/trial-balance-accounts.models.d.ts +0 -1
  19. package/lib/services/report.service.d.ts +1 -1
  20. package/lib/shared/search-filter/search-filter.component.d.ts +1 -1
  21. package/package.json +1 -1
@@ -39,6 +39,26 @@ export class BranchActivitySendReportComponent {
39
39
  { field: 'product', headerName: 'Product', flex: 0.5, wrapText: true, autoHeight: true, minWidth: 80, width: 120, tooltipField: 'product' },
40
40
  { field: 'sendAgentBranchCode', headerName: 'SendClient BranchCode', flex: 1, wrapText: true, autoHeight: true, minWidth: 90, width: 120, tooltipField: 'sendAgentBranchCode' },
41
41
  { field: 'receiveAgentCode', headerName: 'Receive ClientCode', flex: 1, wrapText: true, autoHeight: true, minWidth: 90, width: 70, tooltipField: 'receiveAgentCode' },
42
+ { headerName: 'Is Sender Corporate', field: 'senderType', flex: 1, minWidth: 80,
43
+ valueFormatter: (params) => { if (!params.value)
44
+ return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
45
+ return 'YES'; if (value === 'INDIVIDUAL')
46
+ return 'NO'; return ''; },
47
+ tooltipValueGetter: (params) => { if (!params.value)
48
+ return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
49
+ return 'YES'; if (value === 'INDIVIDUAL')
50
+ return 'NO'; return ''; } },
51
+ { headerName: 'Sender Name', field: 'senderName', flex: 1, minWidth: 120, tooltipField: 'senderName' },
52
+ { headerName: 'Is Beneficiary Corporate', field: 'beneficiaryType', flex: 1, minWidth: 80,
53
+ valueFormatter: (params) => { if (!params.value)
54
+ return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
55
+ return 'YES'; if (value === 'INDIVIDUAL')
56
+ return 'NO'; return ''; },
57
+ tooltipValueGetter: (params) => { if (!params.value)
58
+ return ''; const value = params.value.toUpperCase(); if (value === 'CORPORATE')
59
+ return 'YES'; if (value === 'INDIVIDUAL')
60
+ return 'NO'; return ''; } },
61
+ { headerName: 'Beneficiary Name', field: 'beneficiaryName', flex: 1, minWidth: 100, tooltipField: 'beneficiaryName' },
42
62
  { field: 'payoutCCcode', headerName: 'ReceiveCcy Code', flex: 1, wrapText: true, autoHeight: true, minWidth: 90, width: 110, tooltipField: 'payoutCCcode' },
43
63
  { field: 'payoutAmount', headerName: 'Receive Amount', flex: 1, wrapText: true, autoHeight: true, minWidth: 90, maxWidth: 120, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payoutAmount' },
44
64
  { field: 'payinCCcode', headerName: 'SendCcy Code', flex: 1, wrapText: true, autoHeight: true, minWidth: 90, maxWidth: 90, tooltipField: 'payinCCcode' },
@@ -240,4 +260,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
240
260
  type: Component,
241
261
  args: [{ selector: 'lib-branch-activity-send-report', template: "<lib-search-filter \r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\"\r\n (formValid)=\"handleFormValid($event)\"\r\n >\r\n</lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<section *ngIf=\"showReport && isFormValid\" class=\"my-2\">\r\n <ng-container *ngIf=\"!noDataFound\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\" [metaDataTwo]=\"metaDataTwo\"(exportEvent)=\"handleExport($event)\" (searchEvent)=\"filter($event)\"></lib-metadata>\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\">\r\n <ng-container *ngFor=\"let item of filteredData | keyvalue; let i = index\">\r\n <ngb-panel *ngIf=\"item.value.length > 0\" [id]=\"'panel-' + i\">\r\n\r\n <ng-template ngbPanelTitle style=\"height: 10%;\">\r\n <label\r\n class=\"panel-cls\">{{\r\n item.key\r\n }}</label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"item?.value?.length\"\r\n [defaultSize]=\"'15'\" [gridApi]=\"gridApis[i]\">\r\n ></lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid\" style=\"width: 100%;height: 380px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"item.value\" [rowHeight]=\"20\"\r\n [headerHeight]=\"22\"[pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event,i)\"\r\n >\r\n </ag-grid-angular>\r\n </div>\r\n </ng-template>\r\n\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n </ng-container>\r\n <div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound\">\r\n No Data found matching your search criteria.\r\n </div>\r\n</section>", styles: [".btn-report{border-radius:4px;background-color:#8091a5;color:#fff!important;font-size:14px!important;height:32px!important;height:32px;min-width:110px;margin:0 0 0 20px!important;padding:4px 15px!important}.tooltip-block{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid #ccc!important}.dpicker{border:1px solid #ccc!important;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\"!important;font-size:12px!important;font-weight:400!important;height:32px!important}.dpicker:focus{box-shadow:0 0 5px 3px #1877f2!important}.cal{height:32px!important;background-color:#1877f2!important}.cal:focus{box-shadow:none!important}.input-group-button{background:none;border:1px solid #0081c6;background-color:#0081c6;border-radius:0 3px 3px 0;min-width:35px;margin-left:1px;cursor:pointer}.labl{font-size:11.2px;font-weight:700!important}.info{font-size:12px!important;font-weight:400;padding-left:.5rem}.label-data{font-weight:600!important;font-size:.7rem!important;line-height:1rem}.meta-td{padding:0!important}.title{text-align:center;font-size:18px;font-weight:700!important}.export-options{display:inline-flex;font-size:.75rem;height:2rem!important;width:5rem!important;margin-right:-1;margin-left:.4rem}.opt-cls{display:block;height:100%;width:5rem;border:1px solid #ccc!important;border-radius:4px!important;margin-right:1rem!important;outline:none!important}.opt-cls:focus{box-shadow:0 0 5px 3px #1877f2}.export-selector{height:2rem!important;width:100%}.search-btn{height:32px!important;height:32px;width:36px;background-color:#8091a5;border:none;border-radius:0 4px 4px 0;display:flex;justify-content:center;align-items:center}.search-btn:hover{background-color:#8091a5}.search-icon{height:16px;width:16px;object-fit:contain}.search-input{outline:none!important;border:1px solid #ccc!important;width:190px;height:32px!important;font-size:.75rem;padding:.25rem .5rem;border-top-left-radius:4px;border-bottom-left-radius:4px;border-top-right-radius:0!important;border-bottom-right-radius:0!important;text-transform:uppercase}.search-input:focus{box-shadow:0 0 5px 3px #1877f2!important}.searchBox{margin-right:auto;display:flex}table{width:100%;border-collapse:separate;margin-bottom:0!important;table-layout:fixed!important}td{padding:0 1rem 6px 0!important;border-right:0 solid #ffffff!important;background-color:#fff!important}.row-cls{height:2.5rem!important}.inputbox{padding-left:1rem;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\"}::ng-deep .ng-select.ng-select-single .ng-select-container{height:32px I!important}::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container{max-height:32px!important;overflow-x:auto!important;overflow-y:auto;white-space:nowrap!important}::ng-deep .ng-select .ng-select-multiple .ng-select-container .ng-value-container{max-height:32px!important;overflow-x:auto!important;white-space:nowrap!important}::ng-deep .ng-select .ng-select-multiple .ng-select-container .ng-value-container .ng-value{max-width:200px!important;overflow:hidden!important;text-overflow:hidden!important;white-space:nowrap!important}::ng-deep .ng-select .ng-select-container{cursor:default;display:flex;outline:none;overflow:hidden;position:relative;width:100%}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow-x:scroll!important;text-overflow:clip!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option::-webkit-scrollbar{display:none!important;width:0!important}::ng-deep .ng-select .ng-select-container:focus-within{box-shadow:0 0 5px 3px #1877f2!important}::ng-deep .ng-select .ng-select-container:focus{box-shadow:0 0 5px 3px #1877f2!important}::ng-deep .ng-select .ng-select-container,::ng-deep .ng-select.ng-select-single .ng-select-container,::ng-deep .ng-select.ng-select-multiple .ng-select-container{min-height:32px!important;height:32px!important;font-size:12px!important}.panel-cls{font-weight:700;font-size:13px;line-height:1.2;margin:0;padding:2px 0;color:#16181e}.transaction-grid ::ng-deep .ag-header{background-color:#f9f9f9;font-weight:600;font-size:10px;color:#000;border-right:1px solid #e0e0e0}:host ::ng-deep .ag-header-cell{padding:2px!important;align-items:center!important;justify-content:center!important;border-right:1px solid #e0e0e0;white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;text-align:center!important}::ng-deep .ag-header-cell-label{display:flex!important;justify-content:center!important;align-items:center!important;width:100%;text-align:center!important}::ng-deep .ag-header-cell-text{text-align:center!important;width:100%!important;display:flex!important;justify-content:center!important}.transaction-grid ::ng-deep .ag-row{border-bottom:1px solid #e0e0e0}.transaction-grid ::ng-deep .ag-cell{font-size:9px;white-space:normal!important;word-break:keep-all!important;overflow-wrap:anywhere;line-height:1.4;padding:4px!important;color:#000;font-weight:500;border-right:.5px solid #e0e0e0;align-content:center;user-select:text!important;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;cursor:text}::ng-deep .ag-cell-label-container{padding:0!important}.ag-theme-alpine{--ag-header-font-size: 10px;--ag-font-size: 10px;--ag-header-background-color: #fdfdfd;--ag-header-foreground-color: rgb(0, 0, 0)}::ng-deep .ag-paging-panel{height:30px!important;font-weight:500!important}\n"] }]
242
262
  }], ctorParameters: function () { return [{ type: i1.ReportService }, { type: i0.NgZone }]; } });
243
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmNoLWFjdGl2aXR5LXNlbmQtcmVwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9icmFuY2gtYWN0aXZpdHktc2VuZC1yZXBvcnQvYnJhbmNoLWFjdGl2aXR5LXNlbmQtcmVwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9icmFuY2gtYWN0aXZpdHktc2VuZC1yZXBvcnQvYnJhbmNoLWFjdGl2aXR5LXNlbmQtcmVwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWtCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7Ozs7QUFhM0UsTUFBTSxPQUFPLGlDQUFpQztJQTRENUMsWUFBb0IsYUFBNEIsRUFBVSxNQUFjO1FBQXBELGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTNEeEUsWUFBTyxHQUEyQyxFQUFFLENBQUE7UUFDcEQsaUJBQVksR0FBMkMsRUFBRSxDQUFBO1FBQ3pELGNBQVMsR0FBMkMsRUFBRSxDQUFBO1FBR3RELHlCQUFvQixHQUFHLE9BQU8sQ0FBQztRQUMvQixhQUFRLEdBQWMsRUFBRSxDQUFDO1FBRXpCLFNBQUksR0FBVyxFQUFFLENBQUM7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LEtBQUssQ0FBQztnQkFDN0UsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDekIsQ0FBQztZQUVELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsc0JBQXNCLENBQUMsUUFBUSxDQUFDO1lBQ3RELENBQUM7WUFFRCxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsc0JBQXNCLENBQUMsUUFBUSxDQUFDO2dCQUNwRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN6QixDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFnQjtRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztJQUM3QixDQUFDOzs4SEEzUFUsaUNBQWlDO2tIQUFqQyxpQ0FBaUMsdUVDckI5Qyx1aEVBNkNVOzJGRHhCRyxpQ0FBaUM7a0JBTDdDLFNBQVM7K0JBQ0UsaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBOZ1pvbmUsIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJlcG9ydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEJyYW5jaEFjdGl2aXR5UmVwb3J0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2JyYW5jaC1hY3Rpdml0eS1yZXBvcnQvYnJhbmNoLWFjdGl2aXR5LXNlbmQtcmVwb3J0JztcclxuaW1wb3J0IHsgQ29sRGVmLCBHcmlkQXBpLCBHcmlkT3B0aW9ucywgR3JpZFJlYWR5RXZlbnQsIFJvd0dyb3VwaW5nRGlzcGxheVR5cGUgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XHJcbmltcG9ydCB7IHRoZW1lQWxwaW5lIH0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L3RoZW1pbmcnO1xyXG5pbXBvcnQgJ2pzcGRmLWF1dG90YWJsZSc7XHJcbmltcG9ydCB7IGZvcm1hdERhdGUsIERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50TG9hZGluZ1N0YXRlcyB9IGZyb20gJy4uLy4uL21vZGVscy9jb21wb25lbnQtbG9hZGluZy1zdGF0ZXMnO1xyXG5pbXBvcnQgeyBHZW5lcmljRXhwb3J0U2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9leHBvcnQtZ2VuZXJpYy5zZXJ2aWNlJztcclxuXHJcbmRlY2xhcmUgbW9kdWxlICdqc3BkZicge1xyXG4gIGludGVyZmFjZSBqc1BERiB7XHJcbiAgICBhdXRvVGFibGU6IChvcHRpb25zOiBhbnkpID0+IGpzUERGO1xyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYnJhbmNoLWFjdGl2aXR5LXNlbmQtcmVwb3J0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYnJhbmNoLWFjdGl2aXR5LXNlbmQtcmVwb3J0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9icmFuY2gtYWN0aXZpdHktc2VuZC1yZXBvcnQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQnJhbmNoQWN0aXZpdHlTZW5kUmVwb3J0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBkYXRhTWFwOiBSZWNvcmQ8c3RyaW5nLCBCcmFuY2hBY3Rpdml0eVJlcG9ydFtdPiA9IHt9XHJcbiAgZmlsdGVyZWREYXRhOiBSZWNvcmQ8c3RyaW5nLCBCcmFuY2hBY3Rpdml0eVJlcG9ydFtdPiA9IHt9XHJcbiAgcHJveHlEYXRhOiBSZWNvcmQ8c3RyaW5nLCBCcmFuY2hBY3Rpdml0eVJlcG9ydFtdPiA9IHt9XHJcbiAgc2hvd1JlcG9ydDogYm9vbGVhbjtcclxuICBwYWdpbmF0aW9uQXJyYXk6IGFueVtdO1xyXG4gIHNlbGVjdGVkRXhwb3J0T3B0aW9uID0gJ2V4Y2VsJztcclxuICBncmlkQXBpczogR3JpZEFwaVtdID0gW107XHJcbiAgZ3JpZENvbHVtbkFwaTtcclxuICB1c2VyOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHJlcG9ydERhdGU6IHN0cmluZztcclxuICBmcm9tRGF0ZTogc3RyaW5nO1xyXG4gIHRvRGF0ZTogc3RyaW5nO1xyXG4gIHNlYXJjaFRleHQ6IHN0cmluZztcclxuICBidWZmZXI6IGFueTtcclxuICBzeXNVc2VySWQ6IHN0cmluZztcclxuICBwcml2YXRlIGxvZ29CYXNlNjQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBDb21wb25lbnRMb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzO1xyXG4gIGxvYWRpbmdTdGF0ZTogQ29tcG9uZW50TG9hZGluZ1N0YXRlcyA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXMuTG9hZGluZztcclxuICBSZXBvcnROYW1lOiBzdHJpbmcgPSBcIkJyYW5jaCBBY3Rpdml0eSBTZW5kXCI7XHJcbiAgbGVmdERhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcbiAgbWV0YURhdGFUd286IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcbiAgZXhwb3J0U2VydmljZTogR2VuZXJpY0V4cG9ydFNlcnZpY2UgPSBpbmplY3QoR2VuZXJpY0V4cG9ydFNlcnZpY2UpO1xyXG4gIHNlYXJjaENyaXRlcmlhOiBbc3RyaW5nLHN0cmluZ11bXSA9IFtdO1xyXG5cclxuICAvLyBmbGFnc1xyXG4gIHNob3dNZXNzYWdlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbm9EYXRhRm91bmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0Zvcm1WYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb2x1bW5EZWZzOiBDb2xEZWY8QnJhbmNoQWN0aXZpdHlSZXBvcnQ+W10gPSBbXHJcbiAgICB7IGZpZWxkOiAnYnVzaW5lc3NEYXRlVGltZScsIGhlYWRlck5hbWU6ICdCdXNpbmVzcyBEYXRlJywgZmxleDogMSx3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgaGVhZGVyQ2xhc3M6ICdhZy1sZWZ0LWFsaWduZWQtaGVhZGVyJywgbWluV2lkdGg6IDcwLCB3aWR0aDogNzAsIHRvb2x0aXBGaWVsZDogJ2J1c2luZXNzRGF0ZVRpbWUnIH0sXHJcbiAgICB7IGZpZWxkOiAndHJhbnNhY3Rpb25EYXRlVGltZScsIGhlYWRlck5hbWU6ICdUcmFuc2FjdGlvbiBEYXRlJywgbWluV2lkdGg6MTAwLGZsZXg6IDIsIHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLCB0b29sdGlwRmllbGQ6ICd0cmFuc2FjdGlvbkRhdGVUaW1lJyB9LFxyXG4gICAgeyBmaWVsZDogJ3RyYW5zYWN0aW9uTnVtYmVyJywgaGVhZGVyTmFtZTogJ1RyYW5zYWN0aW9uIE51bWJlcicsIGZsZXg6IDEuOCx3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgbWluV2lkdGg6OTAsIHdpZHRoOiAxMzAsIGNlbGxDbGFzczogJ2FnLWxlZnQtY29scy1jZWxsIGNvbXBhY3QtY2VsbC10cmFuc2FjdGlvbicsIHRvb2x0aXBGaWVsZDogJ3RyYW5zYWN0aW9uTnVtYmVyJyB9LFxyXG4gICAgeyBmaWVsZDogJ3Byb2R1Y3QnLCBoZWFkZXJOYW1lOiAnUHJvZHVjdCcsIGZsZXg6IDAuNSx3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgbWluV2lkdGg6ODAsIHdpZHRoOiAxMjAsIHRvb2x0aXBGaWVsZDogJ3Byb2R1Y3QnIH0sXHJcbiAgICB7IGZpZWxkOiAnc2VuZEFnZW50QnJhbmNoQ29kZScsIGhlYWRlck5hbWU6ICdTZW5kQ2xpZW50IEJyYW5jaENvZGUnLCBmbGV4OiAxLHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLCBtaW5XaWR0aDo5MCwgd2lkdGg6IDEyMCwgdG9vbHRpcEZpZWxkOiAnc2VuZEFnZW50QnJhbmNoQ29kZScgfSxcclxuICAgIHsgZmllbGQ6ICdyZWNlaXZlQWdlbnRDb2RlJywgaGVhZGVyTmFtZTogJ1JlY2VpdmUgQ2xpZW50Q29kZScsIGZsZXg6IDEsd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsIG1pbldpZHRoOiA5MCwgd2lkdGg6IDcwLCB0b29sdGlwRmllbGQ6ICdyZWNlaXZlQWdlbnRDb2RlJyB9LFxyXG4gICAgeyBmaWVsZDogJ3BheW91dENDY29kZScsIGhlYWRlck5hbWU6ICdSZWNlaXZlQ2N5IENvZGUnLCBmbGV4OiAxLHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLG1pbldpZHRoOjkwLCB3aWR0aDogMTEwLCB0b29sdGlwRmllbGQ6ICdwYXlvdXRDQ2NvZGUnIH0sXHJcbiAgICB7IGZpZWxkOiAncGF5b3V0QW1vdW50JywgaGVhZGVyTmFtZTogJ1JlY2VpdmUgQW1vdW50JywgZmxleDogMSx3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSxtaW5XaWR0aDo5MCwgbWF4V2lkdGg6IDEyMCwgIGNlbGxDbGFzczogJ2FnLXJpZ2h0LWFsaWduZWQtY2VsbCBjb21wYWN0LWNlbGwnLCB0b29sdGlwRmllbGQ6ICdwYXlvdXRBbW91bnQnIH0sXHJcbiAgICB7IGZpZWxkOiAncGF5aW5DQ2NvZGUnLCBoZWFkZXJOYW1lOiAnU2VuZENjeSBDb2RlJywgZmxleDogMSx3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgbWluV2lkdGg6OTAsbWF4V2lkdGg6IDkwLCB0b29sdGlwRmllbGQ6ICdwYXlpbkNDY29kZScgfSxcclxuICAgIHsgZmllbGQ6ICdwYXlpbkFtb3VudCcsIGhlYWRlck5hbWU6ICdTZW5kIEFtb3VudCcsIGZsZXg6IDEsd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsIG1pbldpZHRoOjgwLCBtYXhXaWR0aDogMTIwLCAgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsIGNvbXBhY3QtY2VsbCcsIHRvb2x0aXBGaWVsZDogJ3BheWluQW1vdW50JyB9LFxyXG4gICAgeyBmaWVsZDogJ3RyYW5zYWN0aW9uQ29tbWlzc2lvbkFtb3VudCcsIGhlYWRlck5hbWU6ICdTZXJ2aWNlIEZlZScsIGZsZXg6IDEsIHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLCBtaW5XaWR0aDo5MCwgbWF4V2lkdGg6IDEwMCwgIGNlbGxDbGFzczogJ2FnLXJpZ2h0LWFsaWduZWQtY2VsbCBjb21wYWN0LWNlbGwnLCB0b29sdGlwRmllbGQ6ICd0cmFuc2FjdGlvbkNvbW1pc3Npb25BbW91bnQnIH0sXHJcbiAgICB7IGZpZWxkOiAndGF4JywgaGVhZGVyTmFtZTogJ1RheCcsIGZsZXg6IDEsd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsIG1pbldpZHRoOiA4MCwgbWF4V2lkdGg6IDEwMCwgIGNlbGxDbGFzczogJ2FnLXJpZ2h0LWFsaWduZWQtY2VsbCBjb21wYWN0LWNlbGwnLCB0b29sdGlwRmllbGQ6ICd0YXgnIH0sXHJcbiAgICB7IGZpZWxkOiAndG90YWxQYXlpbkFtb3VudCcsIGhlYWRlck5hbWU6ICdUb3RhbCBTZW5kIEFtb3VudCcsbWluV2lkdGg6MTAwLCBmbGV4OiAxLHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgdG9vbHRpcEZpZWxkOiAndG90YWxQYXlpbkFtb3VudCcgfSxcclxuICAgIHsgZmllbGQ6ICdzdGF0dXMnLCBoZWFkZXJOYW1lOiAnVHJhbnNhY3Rpb24gU3RhdHVzJyxtaW5XaWR0aDoxMDAsIGZsZXg6IDEsd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsIHRvb2x0aXBGaWVsZDogJ3N0YXR1cycgfVxyXG4gIF07XHJcblxyXG5cclxuICBkZWZhdWx0Q29sRGVmID0ge1xyXG4gICAgc29ydGFibGU6IHRydWUsXHJcbiAgICBmaWx0ZXI6IHRydWUsXHJcbiAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICBtaW53aWR0aDogNDAsXHJcbiAgICB3cmFwSGVhZGVyVGV4dDogdHJ1ZSxcclxuICAgIGF1dG9IZWFkZXJIZWlnaHQ6IHRydWUsXHJcbiAgICBzdXBwcmVzc1NpemVUb0ZpdDogZmFsc2UsXHJcbiAgICB3cmFwVGV4dDogdHJ1ZVxyXG4gIH07XHJcbiAgcm93RGF0YTogQnJhbmNoQWN0aXZpdHlSZXBvcnRbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlcG9ydFNlcnZpY2U6IFJlcG9ydFNlcnZpY2UsIHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHsgfVxyXG5cclxuICByZXBvcnRUaGVtZSA9IHRoZW1lQWxwaW5lLndpdGhQYXJhbXMoe1xyXG4gICAgaGVhZGVyRm9udFNpemU6ICcxMHB4JyxcclxuICAgIGZvbnRGYW1pbHk6IFsnQXJpYWwnLCAnc2Fucy1zZXJpZiddLFxyXG4gICAgZm9udFNpemU6ICc5cHgnXHJcbiAgfSk7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkNvbXBsZXRlO1xyXG4gICAgLy8gQ2hlY2sgaWYgVXNlciBpcyBmYWxjb24gdXNlciBvciBmb3NzaWxVc2VyXHJcbiAgICBpZiAoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZm9zc2lsdXNlcm5hbWUnKSkge1xyXG4gICAgICB0aGlzLnN5c1VzZXJJZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2Zvc3NpbHVzZXJuYW1lJylcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnN5c1VzZXJJZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2V6cmVtaXR1c2VybmFtZScpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zeXNVc2VySWQgPSB0aGlzLnN5c1VzZXJJZC5yZXBsYWNlKC9eW1wiJ10oLiopW1wiJ10kLywgJyQxJyk7XHJcbiAgICB0aGlzLnVzZXIgPSB0aGlzLnN5c1VzZXJJZDtcclxuICAgIGNvbnNvbGUubG9nKFwiU3lzdGVtIFVzZXIgSWQgOiBcIiArIHRoaXMuc3lzVXNlcklkKTtcclxuICB9XHJcblxyXG4gIGZpbHRlcih0ZXh0OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VhcmNoVGV4dCA9IHRleHQ7XHJcbiAgICBpZiAodGhpcy5zZWFyY2hUZXh0ID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VhcmNoVGV4dD8ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gc3RydWN0dXJlZENsb25lKHRoaXMuZGF0YU1hcCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc2VhcmNoVGV4dCA9IHRoaXMuc2VhcmNoVGV4dD8udHJpbSgpPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgZm9yIChjb25zdCBba2V5LCBlbnRyaWVzXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnByb3h5RGF0YSkpIHtcclxuICAgICAgY29uc3QgZmlsdGVyZWREYXRhID0gZW50cmllcy5maWx0ZXIoZW50cnkgPT4gT2JqZWN0LnZhbHVlcyhlbnRyeSlcclxuICAgICAgICAuc29tZSh2YWwgPT4ge1xyXG4gICAgICAgICAgbGV0IGE6IHN0cmluZyA9IHZhbC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICByZXR1cm4gYS5zZWFyY2godGhpcy5zZWFyY2hUZXh0KSA9PSAtMSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgICAgICB9KSlcclxuXHJcbiAgICAgIHRoaXMuZmlsdGVyZWREYXRhW2tleV0gPSBmaWx0ZXJlZERhdGE7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpbHRlcmVkRGF0YTtcclxuICB9XHJcblxyXG4gIG9uR3JpZFJlYWR5KHBhcmFtczogR3JpZFJlYWR5RXZlbnQsIGlkOiBudW1iZXIpIHtcclxuICAgIHBhcmFtcy5hcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xyXG4gICAgdGhpcy5ncmlkQ29sdW1uQXBpID0gcGFyYW1zLmNvbHVtbkFwaTtcclxuICAgIHRoaXMuZ3JpZEFwaXNbaWRdID0gcGFyYW1zLmFwaTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUV4cG9ydChvcHRpb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEV4cG9ydE9wdGlvbiA9IG9wdGlvbjtcclxuICAgIGlmICghdGhpcy5oYXNBbnlHcm91cHMoKSkge1xyXG4gICAgICBhbGVydChcIlRoZXJlIGlzIG5vIGRhdGEgdG8gZXhwb3J0IGJhc2VkIG9uIHlvdXIgY3VycmVudCBmaWx0ZXIuXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBJZiBubyBkYXRhLCBkbyBub3RoaW5nLlxyXG4gICAgaWYgKCF0aGlzLmZpbHRlcmVkRGF0YSB8fCBPYmplY3Qua2V5cyh0aGlzLmZpbHRlcmVkRGF0YSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIGFsZXJ0KFwiTm8gZGF0YSB0byBleHBvcnRcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHRpdGxlID0gXCJCcmFuY2ggQWN0aXZpdHkgU2VuZFwiO1xyXG4gICAgY29uc3QgcmVwb3J0VGltZUZvcm1hdHRlciA9IHRoaXMuZGF0ZVZhbHVlRm9ybWF0dGVyKCdkZC9NTS95eXl5IGhoOm1tIGEnKTtcclxuICAgIGNvbnN0IG1ldGFkYXRhOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXHJcbiAgICAgIFsnUmVwb3J0IFBlcmlvZCAnLCB0aGlzLmZyb21EYXRlICsgXCIgLSBcIiArIHRoaXMudG9EYXRlXSxcclxuICAgICAgWydSZXBvcnQgVXNlciAmIFRpbWUnLCB0aGlzLnVzZXI/dGhpcy51c2VyK1wiIEAgXCIrdGhpcy5yZXBvcnREYXRlOicnK1wiIEAgXCIrdGhpcy5yZXBvcnREYXRlXSxcclxuICAgIF07XHJcbiAgICAvLyAtLS0gc2VhcmNoIGNyaXRlcmlhIC0tLVxyXG4gICAgY29uc3Qgc2VhcmNoQ3JpdGVyaWE6IFtzdHJpbmcsIHN0cmluZ11bXSA9IHRoaXMuc2VhcmNoQ3JpdGVyaWE7XHJcbiAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5jb2x1bW5EZWZzO1xyXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZGF0YU1hcDtcclxuICAgIC8vIGNvbnN0IGRhdGEgPSB0aGlzLmZpbHRlcmVkRGF0YTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIGN1cnJlbmN5RmllbGRzOiBbXHJcbiAgICAgICAgJ3BheW91dEFtb3VudCcsICdwYXlpbkFtb3VudCcsICd0cmFuc2FjdGlvbkNvbW1pc3Npb25BbW91bnQnLCAndGF4JywgJ3RvdGFsUGF5aW5BbW91bnQnXHJcbiAgICAgIF0sXHJcbiAgICAgIC8vIHNwZWNpZnkgYWxsIGRhdGUgZmllbGRzIGV4cGVjdGVkXHJcbiAgICAgIGRhdGVGaWVsZHM6IFtdLFxyXG5cclxuICAgICAgZGF0ZUZpZWxkRm9ybWF0czoge1xyXG4gICAgICAgIHR4bkRhdGVBbmRUaW1lOiAnZGQvTU0veXl5eSBoaDptbSBhJyxcclxuICAgICAgICBjYW5jZWxsYXRpb25CcmFuY2hEYXRlVGltZTogJ2RkL01NL3l5eXkgSEg6bW0nLFxyXG4gICAgICAgIGNhbmNlbGxhdGlvbkJ1c2luZXNzRGF0ZTogJ2RkL01NL3l5eXknXHJcbiAgICAgIH0sXHJcblxyXG4gICAgICBzcGVjaWFsRGVjaW1hbEZpZWxkczoge1xyXG4gICAgICAgIHJhdGU6IDggICAgICAgLy8gZnV0dXJlIGZpZWxkIHdpdGggOCBkZWNpbWFsIHBsYWNlc1xyXG4gICAgICB9LFxyXG5cclxuICAgICAgZ3JvdXBCeUtleTogdHJ1ZVxyXG4gICAgfTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuc2VsZWN0ZWRFeHBvcnRPcHRpb24pIHtcclxuICAgICAgY2FzZSAnZXhjZWwnOlxyXG4gICAgICAgIHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnRUb0V4Y2VsKHsgdGl0bGUsIG1ldGFkYXRhLCBzZWFyY2hDcml0ZXJpYSwgY29sdW1ucywgZGF0YSwgb3B0aW9ucyB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncGRmJzpcclxuICAgICAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0VG9QZGYoeyB0aXRsZSwgbWV0YWRhdGEsIHNlYXJjaENyaXRlcmlhLCBjb2x1bW5zLCBkYXRhLCBvcHRpb25zIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjc3YnOlxyXG4gICAgICAgIHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnRUb0Nzdih7IHRpdGxlLCBtZXRhZGF0YSwgc2VhcmNoQ3JpdGVyaWEsIGNvbHVtbnMsIGRhdGEsIG9wdGlvbnMgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYWxlcnQoXCJQbGVhc2Ugc2VsZWN0IGFuIGV4cG9ydCBmb3JtYXQuXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGF0ZVZhbHVlRm9ybWF0dGVyKGZvcm1hdDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gKHBhcmFtczogYW55KSA9PiB7XHJcbiAgICAgIGlmICghcGFyYW1zLnZhbHVlKSByZXR1cm4gJyc7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgcmV0dXJuIGZvcm1hdERhdGUocGFyYW1zLnZhbHVlLCBmb3JtYXQsICdlbi1VUycpO1xyXG4gICAgICB9IGNhdGNoIHtcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEtleXMob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBvYmogPyBPYmplY3Qua2V5cyhvYmopIDogW107XHJcbiAgfVxyXG5cclxuICBoYXNBbnlHcm91cHMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZERhdGEgJiYgdGhpcy5nZXRLZXlzKHRoaXMuZmlsdGVyZWREYXRhKS5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0QW1vdW50KHBhcmFtczogYW55KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHZhbHVlID0gcGFyYW1zPy52YWx1ZTtcclxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSAnJykge1xyXG4gICAgICBjb25zdCBudW0gPSBOdW1iZXIodmFsdWUpO1xyXG4gICAgICByZXR1cm4gKE1hdGgudHJ1bmMobnVtICogMTAwMCkgLyAxMDAwKS50b0ZpeGVkKDMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlU2VhcmNoKGNyaXRlcmlhOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoQ3JpdGVyaWEgPSBjcml0ZXJpYS5zZWFyY2hDcml0ZXJpYTtcclxuICAgIHRoaXMucmVwb3J0RGF0ZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcclxuICAgIHRoaXMucmVwb3J0RGF0ZSA9IGZvcm1hdERhdGUodGhpcy5yZXBvcnREYXRlLCAnZGQvTU0veXl5eSBoaDptbSBhJywgJ2VuLVVTJyk7XHJcbiAgICBjb25zdCBtb2RhbCA9IGNyaXRlcmlhLm1vZGFsO1xyXG4gICAgdGhpcy51c2VyID0gY3JpdGVyaWEuc3lzVXNlcklEO1xyXG4gICAgdGhpcy5mcm9tRGF0ZSA9IGZvcm1hdERhdGUobW9kYWwuZnJvbURhdGUsICdkZC9NTS95eXl5IGhoOm1tIGEnLCAnZW4tVVMnKS5zbGljZSgwLDEwKTtcclxuICAgIHRoaXMudG9EYXRlID0gZm9ybWF0RGF0ZShtb2RhbC50b0RhdGUsICdkZC9NTS95eXl5IGhoOm1tIGEnLCAnZW4tVVMnKS5zbGljZSgwLDEwKTtcclxuICAgIGNvbnNvbGUubG9nKG1vZGFsKTtcclxuICAgIC8vIENvZGUgRm9yIE1ldGEgRGF0YVxyXG4gICAgdGhpcy5sZWZ0RGF0YSA9IHtcclxuICAgICAgJ1JlcG9ydCBQZXJpb2QnOiB0aGlzLmZyb21EYXRlICsgXCIgLSBcIiArIHRoaXMudG9EYXRlLFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubWV0YURhdGFUd28gPSB7XHJcbiAgICAgICdSZXBvcnQgVXNlciAmIFRpbWUnOiB0aGlzLnVzZXIrXCIgQCBcIit0aGlzLnJlcG9ydERhdGUsXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VhcmNoRGF0YSA9IHtcclxuICAgICAgXCJTdGFydERhdGVcIjogbW9kYWwuZnJvbURhdGUsXHJcbiAgICAgIFwiRW5kRGF0ZVwiOiBtb2RhbC50b0RhdGUsXHJcbiAgICAgIFwiU2VuZENvdW50cnlDb2RlXCI6IG1vZGFsLnNlbmRDb3VudHJ5LFxyXG4gICAgICBcIlJlY3ZDb3VudHJ5Q29kZVwiOiBtb2RhbC5yZWNlaXZlQ291bnRyeSxcclxuICAgICAgXCJCdXNpbmVzc1BhcnRuZXJDb2RlXCI6IG1vZGFsLmNsaWVudCxcclxuICAgICAgXCJUcmFuc2FjdGlvblN0YXR1c1wiOiBtb2RhbC50cmFuc2FjdGlvblN0YXR1cy5qb2luKFwiLFwiKSxcclxuICAgICAgXCJQYXlvdXRDdXJyZW5jeVwiOiBtb2RhbC5yZWNlaXZlQ3VycmVuY3ksXHJcbiAgICAgIFwiVHJhbnNhY3Rpb25UeXBlXCI6IG1vZGFsLnByb2R1Y3QsXHJcbiAgICAgIFwiQnJhbmNoQ29kZVwiOiBtb2RhbC5icmFuY2hcclxuICAgIH07XHJcbiAgICB0aGlzLnNob3dNZXNzYWdlID0gdHJ1ZTtcclxuICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Mb2FkaW5nO1xyXG4gICAgdGhpcy5yZXBvcnRTZXJ2aWNlLmdldEJyYW5jaEFjdGl2aXR5UmVwb3J0KHNlYXJjaERhdGEpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZGF0YSk7XHJcbiAgICAgICAgdGhpcy5kYXRhTWFwID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSBkYXRhO1xyXG4gICAgICAgIHRoaXMubm9EYXRhRm91bmQgPSBPYmplY3Qua2V5cyh0aGlzLmZpbHRlcmVkRGF0YSkubGVuZ3RoID09IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wcm94eURhdGEgPSBzdHJ1Y3R1cmVkQ2xvbmUoZGF0YSk7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uQXJyYXkgPSBuZXcgQXJyYXkoT2JqZWN0LmtleXModGhpcy5maWx0ZXJlZERhdGEpLmxlbmd0aCkuZmlsbCgxNSk7XHJcbiAgICAgICAgdGhpcy5zaG93TWVzc2FnZSA9IE9iamVjdC5rZXlzKHRoaXMuZmlsdGVyZWREYXRhKS5sZW5ndGggPT0gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dSZXBvcnQgPSB0cnVlO1xyXG4gICAgICB9LFxyXG5cclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXMuQ29tcGxldGU7XHJcbiAgICAgIH0sXHJcblxyXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuICAgICAgICB0aGlzLnNob3dSZXBvcnQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlRm9ybVZhbGlkKGlzVmFsaWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaXNGb3JtVmFsaWQgPSBpc1ZhbGlkO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbiIsIjxsaWItc2VhcmNoLWZpbHRlciBcclxuICAgIFtSZXBvcnROYW1lXT1cIlJlcG9ydE5hbWVcIiBcclxuICAgIChzZWFyY2hDbGlja2VkKT1cImhhbmRsZVNlYXJjaCgkZXZlbnQpXCJcclxuICAgIChmb3JtVmFsaWQpPVwiaGFuZGxlRm9ybVZhbGlkKCRldmVudClcIlxyXG4gICAgPlxyXG48L2xpYi1zZWFyY2gtZmlsdGVyPlxyXG5cclxuPGFwcC1sb2FkZXIgY2xhc3M9XCJcIiAqbmdJZj1cImxvYWRpbmdTdGF0ZSA9PSBDb21wb25lbnRMb2FkaW5nU3RhdGUuTG9hZGluZ1wiPjwvYXBwLWxvYWRlcj5cclxuXHJcbjxzZWN0aW9uICpuZ0lmPVwic2hvd1JlcG9ydCAmJiBpc0Zvcm1WYWxpZFwiIGNsYXNzPVwibXktMlwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbm9EYXRhRm91bmRcIj5cclxuICAgICA8bGliLW1ldGFkYXRhIFtyZXBvcnROYW1lXT1cIlJlcG9ydE5hbWVcIiBbc2hvd21ldGFEYXRhT25lXT1cInRydWVcIiBbc2hvd21ldGFEYXRhVHdvXT1cInRydWVcIiBbbWV0YURhdGFPbmVdPVwibGVmdERhdGFcIiBbbWV0YURhdGFUd29dPVwibWV0YURhdGFUd29cIihleHBvcnRFdmVudCk9XCJoYW5kbGVFeHBvcnQoJGV2ZW50KVwiIChzZWFyY2hFdmVudCk9XCJmaWx0ZXIoJGV2ZW50KVwiPjwvbGliLW1ldGFkYXRhPlxyXG5cclxuICA8bmdiLWFjY29yZGlvbiAjYWNjPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cImZhbHNlXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbHRlcmVkRGF0YSB8IGtleXZhbHVlOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgIDxuZ2ItcGFuZWwgKm5nSWY9XCJpdGVtLnZhbHVlLmxlbmd0aCA+IDBcIiBbaWRdPVwiJ3BhbmVsLScgKyBpXCI+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JQYW5lbFRpdGxlIHN0eWxlPVwiaGVpZ2h0OiAxMCU7XCI+XHJcbiAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgY2xhc3M9XCJwYW5lbC1jbHNcIj57e1xyXG4gICAgICAgICAgICBpdGVtLmtleVxyXG4gICAgICAgICAgICB9fTwvbGFiZWw+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhbmVsQ29udGVudD5cclxuICAgICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcbiAgICAgICAgICAgIDxsaWItcGFnZS1zaXplLXNlbGVjdG9yIFt0b3RhbEVudHJpZXNdPVwiaXRlbT8udmFsdWU/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgIFtkZWZhdWx0U2l6ZV09XCInMTUnXCIgW2dyaWRBcGldPVwiZ3JpZEFwaXNbaV1cIj5cclxuICAgICAgICAgICAgPjwvbGliLXBhZ2Utc2l6ZS1zZWxlY3Rvcj5cclxuXHJcbiAgICAgICAgICAgIDxhZy1ncmlkLWFuZ3VsYXIgY2xhc3M9XCJhZy10aGVtZS1hbHBpbmUgdHJhbnNhY3Rpb24tZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7aGVpZ2h0OiAzODBweDtcIlxyXG4gICAgICAgICAgICAgIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIiBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCIgW3Jvd0RhdGFdPVwiaXRlbS52YWx1ZVwiIFtyb3dIZWlnaHRdPVwiMjBcIlxyXG4gICAgICAgICAgICAgIFtoZWFkZXJIZWlnaHRdPVwiMjJcIltwYWdpbmF0aW9uXT1cInRydWVcIiBbcGFnaW5hdGlvblBhZ2VTaXplXT1cInBhZ2luYXRpb25BcnJheVtpXVwiIChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50LGkpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgIDwvbmdiLXBhbmVsPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZ2ItYWNjb3JkaW9uPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC13YXJuaW5nIG10LTNcIiAqbmdJZj1cIm5vRGF0YUZvdW5kXCI+XHJcbiAgICBObyBEYXRhIGZvdW5kIG1hdGNoaW5nIHlvdXIgc2VhcmNoIGNyaXRlcmlhLlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+Il19
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmNoLWFjdGl2aXR5LXNlbmQtcmVwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9icmFuY2gtYWN0aXZpdHktc2VuZC1yZXBvcnQvYnJhbmNoLWFjdGl2aXR5LXNlbmQtcmVwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9icmFuY2gtYWN0aXZpdHktc2VuZC1yZXBvcnQvYnJhbmNoLWFjdGl2aXR5LXNlbmQtcmVwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWtCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7Ozs7QUFhM0UsTUFBTSxPQUFPLGlDQUFpQztJQW9FNUMsWUFBb0IsYUFBNEIsRUFBVSxNQUFjO1FBQXBELGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQW5FeEUsWUFBTyxHQUEyQyxFQUFFLENBQUE7UUFDcEQsaUJBQVksR0FBMkMsRUFBRSxDQUFBO1FBQ3pELGNBQVMsR0FBMkMsRUFBRSxDQUFBO1FBR3RELHlCQUFvQixHQUFHLE9BQU8sQ0FBQztRQUMvQixhQUFRLEdBQWMsRUFBRSxDQUFDO1FBRXpCLFNBQUksR0FBVyxFQUFFLENBQUM7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UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7SUFDN0IsQ0FBQzs7OEhBblFVLGlDQUFpQztrSEFBakMsaUNBQWlDLHVFQ3JCOUMsdWhFQTZDVTsyRkR4QkcsaUNBQWlDO2tCQUw3QyxTQUFTOytCQUNFLGlDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgTmdab25lLCBPbkluaXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSZXBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVwb3J0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCcmFuY2hBY3Rpdml0eVJlcG9ydCB9IGZyb20gJy4uLy4uL21vZGVscy9icmFuY2gtYWN0aXZpdHktcmVwb3J0L2JyYW5jaC1hY3Rpdml0eS1zZW5kLXJlcG9ydCc7XHJcbmltcG9ydCB7IENvbERlZiwgR3JpZEFwaSwgR3JpZE9wdGlvbnMsIEdyaWRSZWFkeUV2ZW50LCBSb3dHcm91cGluZ0Rpc3BsYXlUeXBlIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xyXG5pbXBvcnQgeyB0aGVtZUFscGluZSB9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS90aGVtaW5nJztcclxuaW1wb3J0ICdqc3BkZi1hdXRvdGFibGUnO1xyXG5pbXBvcnQgeyBmb3JtYXREYXRlLCBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudExvYWRpbmdTdGF0ZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tcG9uZW50LWxvYWRpbmctc3RhdGVzJztcclxuaW1wb3J0IHsgR2VuZXJpY0V4cG9ydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvZXhwb3J0LWdlbmVyaWMuc2VydmljZSc7XHJcblxyXG5kZWNsYXJlIG1vZHVsZSAnanNwZGYnIHtcclxuICBpbnRlcmZhY2UganNQREYge1xyXG4gICAgYXV0b1RhYmxlOiAob3B0aW9uczogYW55KSA9PiBqc1BERjtcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWJyYW5jaC1hY3Rpdml0eS1zZW5kLXJlcG9ydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2JyYW5jaC1hY3Rpdml0eS1zZW5kLXJlcG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYnJhbmNoLWFjdGl2aXR5LXNlbmQtcmVwb3J0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEJyYW5jaEFjdGl2aXR5U2VuZFJlcG9ydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZGF0YU1hcDogUmVjb3JkPHN0cmluZywgQnJhbmNoQWN0aXZpdHlSZXBvcnRbXT4gPSB7fVxyXG4gIGZpbHRlcmVkRGF0YTogUmVjb3JkPHN0cmluZywgQnJhbmNoQWN0aXZpdHlSZXBvcnRbXT4gPSB7fVxyXG4gIHByb3h5RGF0YTogUmVjb3JkPHN0cmluZywgQnJhbmNoQWN0aXZpdHlSZXBvcnRbXT4gPSB7fVxyXG4gIHNob3dSZXBvcnQ6IGJvb2xlYW47XHJcbiAgcGFnaW5hdGlvbkFycmF5OiBhbnlbXTtcclxuICBzZWxlY3RlZEV4cG9ydE9wdGlvbiA9ICdleGNlbCc7XHJcbiAgZ3JpZEFwaXM6IEdyaWRBcGlbXSA9IFtdO1xyXG4gIGdyaWRDb2x1bW5BcGk7XHJcbiAgdXNlcjogc3RyaW5nID0gXCJcIjtcclxuICByZXBvcnREYXRlOiBzdHJpbmc7XHJcbiAgZnJvbURhdGU6IHN0cmluZztcclxuICB0b0RhdGU6IHN0cmluZztcclxuICBzZWFyY2hUZXh0OiBzdHJpbmc7XHJcbiAgYnVmZmVyOiBhbnk7XHJcbiAgc3lzVXNlcklkOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBsb2dvQmFzZTY0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgQ29tcG9uZW50TG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcztcclxuICBsb2FkaW5nU3RhdGU6IENvbXBvbmVudExvYWRpbmdTdGF0ZXMgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkxvYWRpbmc7XHJcbiAgUmVwb3J0TmFtZTogc3RyaW5nID0gXCJCcmFuY2ggQWN0aXZpdHkgU2VuZFwiO1xyXG4gIGxlZnREYXRhOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIG1ldGFEYXRhVHdvOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIGV4cG9ydFNlcnZpY2U6IEdlbmVyaWNFeHBvcnRTZXJ2aWNlID0gaW5qZWN0KEdlbmVyaWNFeHBvcnRTZXJ2aWNlKTtcclxuICBzZWFyY2hDcml0ZXJpYTogW3N0cmluZyxzdHJpbmddW10gPSBbXTtcclxuXHJcbiAgLy8gZmxhZ3NcclxuICBzaG93TWVzc2FnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG5vRGF0YUZvdW5kOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNGb3JtVmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29sdW1uRGVmczogQ29sRGVmPEJyYW5jaEFjdGl2aXR5UmVwb3J0PltdID0gW1xyXG4gICAgeyBmaWVsZDogJ2J1c2luZXNzRGF0ZVRpbWUnLCBoZWFkZXJOYW1lOiAnQnVzaW5lc3MgRGF0ZScsIGZsZXg6IDEsd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsIGhlYWRlckNsYXNzOiAnYWctbGVmdC1hbGlnbmVkLWhlYWRlcicsIG1pbldpZHRoOiA3MCwgd2lkdGg6IDcwLCB0b29sdGlwRmllbGQ6ICdidXNpbmVzc0RhdGVUaW1lJyB9LFxyXG4gICAgeyBmaWVsZDogJ3RyYW5zYWN0aW9uRGF0ZVRpbWUnLCBoZWFkZXJOYW1lOiAnVHJhbnNhY3Rpb24gRGF0ZScsIG1pbldpZHRoOjEwMCxmbGV4OiAyLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgdG9vbHRpcEZpZWxkOiAndHJhbnNhY3Rpb25EYXRlVGltZScgfSxcclxuICAgIHsgZmllbGQ6ICd0cmFuc2FjdGlvbk51bWJlcicsIGhlYWRlck5hbWU6ICdUcmFuc2FjdGlvbiBOdW1iZXInLCBmbGV4OiAxLjgsd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsIG1pbldpZHRoOjkwLCB3aWR0aDogMTMwLCBjZWxsQ2xhc3M6ICdhZy1sZWZ0LWNvbHMtY2VsbCBjb21wYWN0LWNlbGwtdHJhbnNhY3Rpb24nLCB0b29sdGlwRmllbGQ6ICd0cmFuc2FjdGlvbk51bWJlcicgfSxcclxuICAgIHsgZmllbGQ6ICdwcm9kdWN0JywgaGVhZGVyTmFtZTogJ1Byb2R1Y3QnLCBmbGV4OiAwLjUsd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsIG1pbldpZHRoOjgwLCB3aWR0aDogMTIwLCB0b29sdGlwRmllbGQ6ICdwcm9kdWN0JyB9LFxyXG4gICAgeyBmaWVsZDogJ3NlbmRBZ2VudEJyYW5jaENvZGUnLCBoZWFkZXJOYW1lOiAnU2VuZENsaWVudCBCcmFuY2hDb2RlJywgZmxleDogMSx3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgbWluV2lkdGg6OTAsIHdpZHRoOiAxMjAsIHRvb2x0aXBGaWVsZDogJ3NlbmRBZ2VudEJyYW5jaENvZGUnIH0sXHJcbiAgICB7IGZpZWxkOiAncmVjZWl2ZUFnZW50Q29kZScsIGhlYWRlck5hbWU6ICdSZWNlaXZlIENsaWVudENvZGUnLCBmbGV4OiAxLHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLCBtaW5XaWR0aDogOTAsIHdpZHRoOiA3MCwgdG9vbHRpcEZpZWxkOiAncmVjZWl2ZUFnZW50Q29kZScgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ0lzIFNlbmRlciBDb3Jwb3JhdGUnLCBmaWVsZDogJ3NlbmRlclR5cGUnLCBmbGV4OiAxLCBtaW5XaWR0aDogODAsIFxyXG4gICAgICB2YWx1ZUZvcm1hdHRlcjogKHBhcmFtcykgPT4geyBpZiAoIXBhcmFtcy52YWx1ZSkgcmV0dXJuICcnOyBjb25zdCB2YWx1ZSA9IHBhcmFtcy52YWx1ZS50b1VwcGVyQ2FzZSgpOyBpZiAodmFsdWUgPT09ICdDT1JQT1JBVEUnKSByZXR1cm4gJ1lFUyc7IGlmICh2YWx1ZSA9PT0gJ0lORElWSURVQUwnKSByZXR1cm4gJ05PJzsgcmV0dXJuICcnOyB9LFxyXG4gICAgICB0b29sdGlwVmFsdWVHZXR0ZXI6IChwYXJhbXMpID0+IHsgaWYgKCFwYXJhbXMudmFsdWUpIHJldHVybiAnJzsgY29uc3QgdmFsdWUgPSBwYXJhbXMudmFsdWUudG9VcHBlckNhc2UoKTsgaWYgKHZhbHVlID09PSAnQ09SUE9SQVRFJykgcmV0dXJuICdZRVMnOyBpZiAodmFsdWUgPT09ICdJTkRJVklEVUFMJykgcmV0dXJuICdOTyc7IHJldHVybiAnJzsgfSB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2VuZGVyIE5hbWUnLCBmaWVsZDogJ3NlbmRlck5hbWUnLCBmbGV4OiAxLCBtaW5XaWR0aDogMTIwLCB0b29sdGlwRmllbGQ6ICdzZW5kZXJOYW1lJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnSXMgQmVuZWZpY2lhcnkgQ29ycG9yYXRlJywgZmllbGQ6ICdiZW5lZmljaWFyeVR5cGUnLCBmbGV4OiAxLCBtaW5XaWR0aDogODAsXHJcbiAgICAgIHZhbHVlRm9ybWF0dGVyOiAocGFyYW1zKSA9PiB7IGlmICghcGFyYW1zLnZhbHVlKSByZXR1cm4gJyc7IGNvbnN0IHZhbHVlID0gcGFyYW1zLnZhbHVlLnRvVXBwZXJDYXNlKCk7IGlmICh2YWx1ZSA9PT0gJ0NPUlBPUkFURScpIHJldHVybiAnWUVTJzsgaWYgKHZhbHVlID09PSAnSU5ESVZJRFVBTCcpIHJldHVybiAnTk8nOyByZXR1cm4gJyc7IH0sXHJcbiAgICAgIHRvb2x0aXBWYWx1ZUdldHRlcjogKHBhcmFtcykgPT4geyBpZiAoIXBhcmFtcy52YWx1ZSkgcmV0dXJuICcnOyBjb25zdCB2YWx1ZSA9IHBhcmFtcy52YWx1ZS50b1VwcGVyQ2FzZSgpOyBpZiAodmFsdWUgPT09ICdDT1JQT1JBVEUnKSByZXR1cm4gJ1lFUyc7IGlmICh2YWx1ZSA9PT0gJ0lORElWSURVQUwnKSByZXR1cm4gJ05PJzsgcmV0dXJuICcnOyB9IH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdCZW5lZmljaWFyeSBOYW1lJywgZmllbGQ6ICdiZW5lZmljaWFyeU5hbWUnLCBmbGV4OiAxLCBtaW5XaWR0aDogMTAwLCB0b29sdGlwRmllbGQ6ICdiZW5lZmljaWFyeU5hbWUnIH0sXHJcbiAgICB7IGZpZWxkOiAncGF5b3V0Q0Njb2RlJywgaGVhZGVyTmFtZTogJ1JlY2VpdmVDY3kgQ29kZScsIGZsZXg6IDEsd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsbWluV2lkdGg6OTAsIHdpZHRoOiAxMTAsIHRvb2x0aXBGaWVsZDogJ3BheW91dENDY29kZScgfSxcclxuICAgIHsgZmllbGQ6ICdwYXlvdXRBbW91bnQnLCBoZWFkZXJOYW1lOiAnUmVjZWl2ZSBBbW91bnQnLCBmbGV4OiAxLHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLG1pbldpZHRoOjkwLCBtYXhXaWR0aDogMTIwLCAgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsIGNvbXBhY3QtY2VsbCcsIHRvb2x0aXBGaWVsZDogJ3BheW91dEFtb3VudCcgfSxcclxuICAgIHsgZmllbGQ6ICdwYXlpbkNDY29kZScsIGhlYWRlck5hbWU6ICdTZW5kQ2N5IENvZGUnLCBmbGV4OiAxLHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLCBtaW5XaWR0aDo5MCxtYXhXaWR0aDogOTAsIHRvb2x0aXBGaWVsZDogJ3BheWluQ0Njb2RlJyB9LFxyXG4gICAgeyBmaWVsZDogJ3BheWluQW1vdW50JywgaGVhZGVyTmFtZTogJ1NlbmQgQW1vdW50JywgZmxleDogMSx3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgbWluV2lkdGg6ODAsIG1heFdpZHRoOiAxMjAsICBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgdG9vbHRpcEZpZWxkOiAncGF5aW5BbW91bnQnIH0sXHJcbiAgICB7IGZpZWxkOiAndHJhbnNhY3Rpb25Db21taXNzaW9uQW1vdW50JywgaGVhZGVyTmFtZTogJ1NlcnZpY2UgRmVlJywgZmxleDogMSwgd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsIG1pbldpZHRoOjkwLCBtYXhXaWR0aDogMTAwLCAgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsIGNvbXBhY3QtY2VsbCcsIHRvb2x0aXBGaWVsZDogJ3RyYW5zYWN0aW9uQ29tbWlzc2lvbkFtb3VudCcgfSxcclxuICAgIHsgZmllbGQ6ICd0YXgnLCBoZWFkZXJOYW1lOiAnVGF4JywgZmxleDogMSx3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgbWluV2lkdGg6IDgwLCBtYXhXaWR0aDogMTAwLCAgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsIGNvbXBhY3QtY2VsbCcsIHRvb2x0aXBGaWVsZDogJ3RheCcgfSxcclxuICAgIHsgZmllbGQ6ICd0b3RhbFBheWluQW1vdW50JywgaGVhZGVyTmFtZTogJ1RvdGFsIFNlbmQgQW1vdW50JyxtaW5XaWR0aDoxMDAsIGZsZXg6IDEsd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsIGNlbGxDbGFzczogJ2FnLXJpZ2h0LWFsaWduZWQtY2VsbCBjb21wYWN0LWNlbGwnLCB0b29sdGlwRmllbGQ6ICd0b3RhbFBheWluQW1vdW50JyB9LFxyXG4gICAgeyBmaWVsZDogJ3N0YXR1cycsIGhlYWRlck5hbWU6ICdUcmFuc2FjdGlvbiBTdGF0dXMnLG1pbldpZHRoOjEwMCwgZmxleDogMSx3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgdG9vbHRpcEZpZWxkOiAnc3RhdHVzJyB9XHJcbiAgXTtcclxuXHJcblxyXG4gIGRlZmF1bHRDb2xEZWYgPSB7XHJcbiAgICBzb3J0YWJsZTogdHJ1ZSxcclxuICAgIGZpbHRlcjogdHJ1ZSxcclxuICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgIG1pbndpZHRoOiA0MCxcclxuICAgIHdyYXBIZWFkZXJUZXh0OiB0cnVlLFxyXG4gICAgYXV0b0hlYWRlckhlaWdodDogdHJ1ZSxcclxuICAgIHN1cHByZXNzU2l6ZVRvRml0OiBmYWxzZSxcclxuICAgIHdyYXBUZXh0OiB0cnVlXHJcbiAgfTtcclxuICByb3dEYXRhOiBCcmFuY2hBY3Rpdml0eVJlcG9ydFtdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVwb3J0U2VydmljZTogUmVwb3J0U2VydmljZSwgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkgeyB9XHJcblxyXG4gIHJlcG9ydFRoZW1lID0gdGhlbWVBbHBpbmUud2l0aFBhcmFtcyh7XHJcbiAgICBoZWFkZXJGb250U2l6ZTogJzEwcHgnLFxyXG4gICAgZm9udEZhbWlseTogWydBcmlhbCcsICdzYW5zLXNlcmlmJ10sXHJcbiAgICBmb250U2l6ZTogJzlweCdcclxuICB9KTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXMuQ29tcGxldGU7XHJcbiAgICAvLyBDaGVjayBpZiBVc2VyIGlzIGZhbGNvbiB1c2VyIG9yIGZvc3NpbFVzZXJcclxuICAgIGlmIChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdmb3NzaWx1c2VybmFtZScpKSB7XHJcbiAgICAgIHRoaXMuc3lzVXNlcklkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZm9zc2lsdXNlcm5hbWUnKVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc3lzVXNlcklkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZXpyZW1pdHVzZXJuYW1lJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN5c1VzZXJJZCA9IHRoaXMuc3lzVXNlcklkLnJlcGxhY2UoL15bXCInXSguKilbXCInXSQvLCAnJDEnKTtcclxuICAgIHRoaXMudXNlciA9IHRoaXMuc3lzVXNlcklkO1xyXG4gICAgY29uc29sZS5sb2coXCJTeXN0ZW0gVXNlciBJZCA6IFwiICsgdGhpcy5zeXNVc2VySWQpO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyKHRleHQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gdGV4dDtcclxuICAgIGlmICh0aGlzLnNlYXJjaFRleHQgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZWFyY2hUZXh0Py5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5kYXRhTWFwKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gdGhpcy5zZWFyY2hUZXh0Py50cmltKCk/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICBmb3IgKGNvbnN0IFtrZXksIGVudHJpZXNdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucHJveHlEYXRhKSkge1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZERhdGEgPSBlbnRyaWVzLmZpbHRlcihlbnRyeSA9PiBPYmplY3QudmFsdWVzKGVudHJ5KVxyXG4gICAgICAgIC5zb21lKHZhbCA9PiB7XHJcbiAgICAgICAgICBsZXQgYTogc3RyaW5nID0gdmFsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgIHJldHVybiBhLnNlYXJjaCh0aGlzLnNlYXJjaFRleHQpID09IC0xID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgICAgIH0pKVxyXG5cclxuICAgICAgdGhpcy5maWx0ZXJlZERhdGFba2V5XSA9IGZpbHRlcmVkRGF0YTtcclxuICAgIH1cclxuICAgIHRoaXMuZmlsdGVyZWREYXRhO1xyXG4gIH1cclxuXHJcbiAgb25HcmlkUmVhZHkocGFyYW1zOiBHcmlkUmVhZHlFdmVudCwgaWQ6IG51bWJlcikge1xyXG4gICAgcGFyYW1zLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XHJcbiAgICB0aGlzLmdyaWRDb2x1bW5BcGkgPSBwYXJhbXMuY29sdW1uQXBpO1xyXG4gICAgdGhpcy5ncmlkQXBpc1tpZF0gPSBwYXJhbXMuYXBpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRXhwb3J0KG9wdGlvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRXhwb3J0T3B0aW9uID0gb3B0aW9uO1xyXG4gICAgaWYgKCF0aGlzLmhhc0FueUdyb3VwcygpKSB7XHJcbiAgICAgIGFsZXJ0KFwiVGhlcmUgaXMgbm8gZGF0YSB0byBleHBvcnQgYmFzZWQgb24geW91ciBjdXJyZW50IGZpbHRlci5cIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIElmIG5vIGRhdGEsIGRvIG5vdGhpbmcuXHJcbiAgICBpZiAoIXRoaXMuZmlsdGVyZWREYXRhIHx8IE9iamVjdC5rZXlzKHRoaXMuZmlsdGVyZWREYXRhKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgYWxlcnQoXCJObyBkYXRhIHRvIGV4cG9ydFwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGl0bGUgPSBcIkJyYW5jaCBBY3Rpdml0eSBTZW5kXCI7XHJcbiAgICBjb25zdCByZXBvcnRUaW1lRm9ybWF0dGVyID0gdGhpcy5kYXRlVmFsdWVGb3JtYXR0ZXIoJ2RkL01NL3l5eXkgaGg6bW0gYScpO1xyXG4gICAgY29uc3QgbWV0YWRhdGE6IFtzdHJpbmcsIHN0cmluZ11bXSA9IFtcclxuICAgICAgWydSZXBvcnQgUGVyaW9kICcsIHRoaXMuZnJvbURhdGUgKyBcIiAtIFwiICsgdGhpcy50b0RhdGVdLFxyXG4gICAgICBbJ1JlcG9ydCBVc2VyICYgVGltZScsIHRoaXMudXNlcj90aGlzLnVzZXIrXCIgQCBcIit0aGlzLnJlcG9ydERhdGU6JycrXCIgQCBcIit0aGlzLnJlcG9ydERhdGVdLFxyXG4gICAgXTtcclxuICAgIC8vIC0tLSBzZWFyY2ggY3JpdGVyaWEgLS0tXHJcbiAgICBjb25zdCBzZWFyY2hDcml0ZXJpYTogW3N0cmluZywgc3RyaW5nXVtdID0gdGhpcy5zZWFyY2hDcml0ZXJpYTtcclxuICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmNvbHVtbkRlZnM7XHJcbiAgICBjb25zdCBkYXRhID0gdGhpcy5kYXRhTWFwO1xyXG4gICAgLy8gY29uc3QgZGF0YSA9IHRoaXMuZmlsdGVyZWREYXRhO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgY3VycmVuY3lGaWVsZHM6IFtcclxuICAgICAgICAncGF5b3V0QW1vdW50JywgJ3BheWluQW1vdW50JywgJ3RyYW5zYWN0aW9uQ29tbWlzc2lvbkFtb3VudCcsICd0YXgnLCAndG90YWxQYXlpbkFtb3VudCdcclxuICAgICAgXSxcclxuICAgICAgLy8gc3BlY2lmeSBhbGwgZGF0ZSBmaWVsZHMgZXhwZWN0ZWRcclxuICAgICAgZGF0ZUZpZWxkczogW10sXHJcblxyXG4gICAgICBkYXRlRmllbGRGb3JtYXRzOiB7XHJcbiAgICAgICAgdHhuRGF0ZUFuZFRpbWU6ICdkZC9NTS95eXl5IGhoOm1tIGEnLFxyXG4gICAgICAgIGNhbmNlbGxhdGlvbkJyYW5jaERhdGVUaW1lOiAnZGQvTU0veXl5eSBISDptbScsXHJcbiAgICAgICAgY2FuY2VsbGF0aW9uQnVzaW5lc3NEYXRlOiAnZGQvTU0veXl5eSdcclxuICAgICAgfSxcclxuXHJcbiAgICAgIHNwZWNpYWxEZWNpbWFsRmllbGRzOiB7XHJcbiAgICAgICAgcmF0ZTogOCAgICAgICAvLyBmdXR1cmUgZmllbGQgd2l0aCA4IGRlY2ltYWwgcGxhY2VzXHJcbiAgICAgIH0sXHJcblxyXG4gICAgICBncm91cEJ5S2V5OiB0cnVlXHJcbiAgICB9O1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5zZWxlY3RlZEV4cG9ydE9wdGlvbikge1xyXG4gICAgICBjYXNlICdleGNlbCc6XHJcbiAgICAgICAgdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydFRvRXhjZWwoeyB0aXRsZSwgbWV0YWRhdGEsIHNlYXJjaENyaXRlcmlhLCBjb2x1bW5zLCBkYXRhLCBvcHRpb25zIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdwZGYnOlxyXG4gICAgICAgIHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnRUb1BkZih7IHRpdGxlLCBtZXRhZGF0YSwgc2VhcmNoQ3JpdGVyaWEsIGNvbHVtbnMsIGRhdGEsIG9wdGlvbnMgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Nzdic6XHJcbiAgICAgICAgdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydFRvQ3N2KHsgdGl0bGUsIG1ldGFkYXRhLCBzZWFyY2hDcml0ZXJpYSwgY29sdW1ucywgZGF0YSwgb3B0aW9ucyB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBhbGVydChcIlBsZWFzZSBzZWxlY3QgYW4gZXhwb3J0IGZvcm1hdC5cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkYXRlVmFsdWVGb3JtYXR0ZXIoZm9ybWF0OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiAocGFyYW1zOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCFwYXJhbXMudmFsdWUpIHJldHVybiAnJztcclxuICAgICAgdHJ5IHtcclxuICAgICAgICByZXR1cm4gZm9ybWF0RGF0ZShwYXJhbXMudmFsdWUsIGZvcm1hdCwgJ2VuLVVTJyk7XHJcbiAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0S2V5cyhvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIG9iaiA/IE9iamVjdC5rZXlzKG9iaikgOiBbXTtcclxuICB9XHJcblxyXG4gIGhhc0FueUdyb3VwcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkRGF0YSAmJiB0aGlzLmdldEtleXModGhpcy5maWx0ZXJlZERhdGEpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBmb3JtYXRBbW91bnQocGFyYW1zOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbXM/LnZhbHVlO1xyXG4gICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09ICcnKSB7XHJcbiAgICAgIGNvbnN0IG51bSA9IE51bWJlcih2YWx1ZSk7XHJcbiAgICAgIHJldHVybiAoTWF0aC50cnVuYyhudW0gKiAxMDAwKSAvIDEwMDApLnRvRml4ZWQoMyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVTZWFyY2goY3JpdGVyaWE6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hDcml0ZXJpYSA9IGNyaXRlcmlhLnNlYXJjaENyaXRlcmlhO1xyXG4gICAgdGhpcy5yZXBvcnREYXRlID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xyXG4gICAgdGhpcy5yZXBvcnREYXRlID0gZm9ybWF0RGF0ZSh0aGlzLnJlcG9ydERhdGUsICdkZC9NTS95eXl5IGhoOm1tIGEnLCAnZW4tVVMnKTtcclxuICAgIGNvbnN0IG1vZGFsID0gY3JpdGVyaWEubW9kYWw7XHJcbiAgICB0aGlzLnVzZXIgPSBjcml0ZXJpYS5zeXNVc2VySUQ7XHJcbiAgICB0aGlzLmZyb21EYXRlID0gZm9ybWF0RGF0ZShtb2RhbC5mcm9tRGF0ZSwgJ2RkL01NL3l5eXkgaGg6bW0gYScsICdlbi1VUycpLnNsaWNlKDAsMTApO1xyXG4gICAgdGhpcy50b0RhdGUgPSBmb3JtYXREYXRlKG1vZGFsLnRvRGF0ZSwgJ2RkL01NL3l5eXkgaGg6bW0gYScsICdlbi1VUycpLnNsaWNlKDAsMTApO1xyXG4gICAgY29uc29sZS5sb2cobW9kYWwpO1xyXG4gICAgLy8gQ29kZSBGb3IgTWV0YSBEYXRhXHJcbiAgICB0aGlzLmxlZnREYXRhID0ge1xyXG4gICAgICAnUmVwb3J0IFBlcmlvZCc6IHRoaXMuZnJvbURhdGUgKyBcIiAtIFwiICsgdGhpcy50b0RhdGUsXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5tZXRhRGF0YVR3byA9IHtcclxuICAgICAgJ1JlcG9ydCBVc2VyICYgVGltZSc6IHRoaXMudXNlcitcIiBAIFwiK3RoaXMucmVwb3J0RGF0ZSxcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWFyY2hEYXRhID0ge1xyXG4gICAgICBcIlN0YXJ0RGF0ZVwiOiBtb2RhbC5mcm9tRGF0ZSxcclxuICAgICAgXCJFbmREYXRlXCI6IG1vZGFsLnRvRGF0ZSxcclxuICAgICAgXCJTZW5kQ291bnRyeUNvZGVcIjogbW9kYWwuc2VuZENvdW50cnksXHJcbiAgICAgIFwiUmVjdkNvdW50cnlDb2RlXCI6IG1vZGFsLnJlY2VpdmVDb3VudHJ5LFxyXG4gICAgICBcIkJ1c2luZXNzUGFydG5lckNvZGVcIjogbW9kYWwuY2xpZW50LFxyXG4gICAgICBcIlRyYW5zYWN0aW9uU3RhdHVzXCI6IG1vZGFsLnRyYW5zYWN0aW9uU3RhdHVzLmpvaW4oXCIsXCIpLFxyXG4gICAgICBcIlBheW91dEN1cnJlbmN5XCI6IG1vZGFsLnJlY2VpdmVDdXJyZW5jeSxcclxuICAgICAgXCJUcmFuc2FjdGlvblR5cGVcIjogbW9kYWwucHJvZHVjdCxcclxuICAgICAgXCJCcmFuY2hDb2RlXCI6IG1vZGFsLmJyYW5jaFxyXG4gICAgfTtcclxuICAgIHRoaXMuc2hvd01lc3NhZ2UgPSB0cnVlO1xyXG4gICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkxvYWRpbmc7XHJcbiAgICB0aGlzLnJlcG9ydFNlcnZpY2UuZ2V0QnJhbmNoQWN0aXZpdHlSZXBvcnQoc2VhcmNoRGF0YSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGRhdGEpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICB0aGlzLmRhdGFNYXAgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgdGhpcy5ub0RhdGFGb3VuZCA9IE9iamVjdC5rZXlzKHRoaXMuZmlsdGVyZWREYXRhKS5sZW5ndGggPT0gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB0aGlzLnByb3h5RGF0YSA9IHN0cnVjdHVyZWRDbG9uZShkYXRhKTtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25BcnJheSA9IG5ldyBBcnJheShPYmplY3Qua2V5cyh0aGlzLmZpbHRlcmVkRGF0YSkubGVuZ3RoKS5maWxsKDE1KTtcclxuICAgICAgICB0aGlzLnNob3dNZXNzYWdlID0gT2JqZWN0LmtleXModGhpcy5maWx0ZXJlZERhdGEpLmxlbmd0aCA9PSAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd1JlcG9ydCA9IHRydWU7XHJcbiAgICAgIH0sXHJcblxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuICAgICAgfSxcclxuXHJcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkNvbXBsZXRlO1xyXG4gICAgICAgIHRoaXMuc2hvd1JlcG9ydCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBoYW5kbGVGb3JtVmFsaWQoaXNWYWxpZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc0Zvcm1WYWxpZCA9IGlzVmFsaWQ7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuIiwiPGxpYi1zZWFyY2gtZmlsdGVyIFxyXG4gICAgW1JlcG9ydE5hbWVdPVwiUmVwb3J0TmFtZVwiIFxyXG4gICAgKHNlYXJjaENsaWNrZWQpPVwiaGFuZGxlU2VhcmNoKCRldmVudClcIlxyXG4gICAgKGZvcm1WYWxpZCk9XCJoYW5kbGVGb3JtVmFsaWQoJGV2ZW50KVwiXHJcbiAgICA+XHJcbjwvbGliLXNlYXJjaC1maWx0ZXI+XHJcblxyXG48YXBwLWxvYWRlciBjbGFzcz1cIlwiICpuZ0lmPVwibG9hZGluZ1N0YXRlID09IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Mb2FkaW5nXCI+PC9hcHAtbG9hZGVyPlxyXG5cclxuPHNlY3Rpb24gKm5nSWY9XCJzaG93UmVwb3J0ICYmIGlzRm9ybVZhbGlkXCIgY2xhc3M9XCJteS0yXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFub0RhdGFGb3VuZFwiPlxyXG4gICAgIDxsaWItbWV0YWRhdGEgW3JlcG9ydE5hbWVdPVwiUmVwb3J0TmFtZVwiIFtzaG93bWV0YURhdGFPbmVdPVwidHJ1ZVwiIFtzaG93bWV0YURhdGFUd29dPVwidHJ1ZVwiIFttZXRhRGF0YU9uZV09XCJsZWZ0RGF0YVwiIFttZXRhRGF0YVR3b109XCJtZXRhRGF0YVR3b1wiKGV4cG9ydEV2ZW50KT1cImhhbmRsZUV4cG9ydCgkZXZlbnQpXCIgKHNlYXJjaEV2ZW50KT1cImZpbHRlcigkZXZlbnQpXCI+PC9saWItbWV0YWRhdGE+XHJcblxyXG4gIDxuZ2ItYWNjb3JkaW9uICNhY2M9XCJuZ2JBY2NvcmRpb25cIiBbY2xvc2VPdGhlcnNdPVwiZmFsc2VcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWREYXRhIHwga2V5dmFsdWU7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgPG5nYi1wYW5lbCAqbmdJZj1cIml0ZW0udmFsdWUubGVuZ3RoID4gMFwiIFtpZF09XCIncGFuZWwtJyArIGlcIj5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhbmVsVGl0bGUgc3R5bGU9XCJoZWlnaHQ6IDEwJTtcIj5cclxuICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICBjbGFzcz1cInBhbmVsLWNsc1wiPnt7XHJcbiAgICAgICAgICAgIGl0ZW0ua2V5XHJcbiAgICAgICAgICAgIH19PC9sYWJlbD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFuZWxDb250ZW50PlxyXG4gICAgICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIj5cclxuICAgICAgICAgICAgPGxpYi1wYWdlLXNpemUtc2VsZWN0b3IgW3RvdGFsRW50cmllc109XCJpdGVtPy52YWx1ZT8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgW2RlZmF1bHRTaXplXT1cIicxNSdcIiBbZ3JpZEFwaV09XCJncmlkQXBpc1tpXVwiPlxyXG4gICAgICAgICAgICA+PC9saWItcGFnZS1zaXplLXNlbGVjdG9yPlxyXG5cclxuICAgICAgICAgICAgPGFnLWdyaWQtYW5ndWxhciBjbGFzcz1cImFnLXRoZW1lLWFscGluZSB0cmFuc2FjdGlvbi1ncmlkXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtoZWlnaHQ6IDM4MHB4O1wiXHJcbiAgICAgICAgICAgICAgW2NvbHVtbkRlZnNdPVwiY29sdW1uRGVmc1wiIFtkZWZhdWx0Q29sRGVmXT1cImRlZmF1bHRDb2xEZWZcIiBbcm93RGF0YV09XCJpdGVtLnZhbHVlXCIgW3Jvd0hlaWdodF09XCIyMFwiXHJcbiAgICAgICAgICAgICAgW2hlYWRlckhlaWdodF09XCIyMlwiW3BhZ2luYXRpb25dPVwidHJ1ZVwiIFtwYWdpbmF0aW9uUGFnZVNpemVdPVwicGFnaW5hdGlvbkFycmF5W2ldXCIgKGdyaWRSZWFkeSk9XCJvbkdyaWRSZWFkeSgkZXZlbnQsaSlcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9hZy1ncmlkLWFuZ3VsYXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPC9uZ2ItcGFuZWw+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nYi1hY2NvcmRpb24+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmcgbXQtM1wiICpuZ0lmPVwibm9EYXRhRm91bmRcIj5cclxuICAgIE5vIERhdGEgZm91bmQgbWF0Y2hpbmcgeW91ciBzZWFyY2ggY3JpdGVyaWEuXHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj4iXX0=