@senior-agronegocio/angular-components 0.0.9883 → 1.0.0
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/README.md +25 -0
- package/agro-angular-components.module.d.ts +13 -9
- package/common/agro-array-utils.class.d.ts +48 -48
- package/common/agro-cookie-utils.class.d.ts +9 -9
- package/common/agro-date-utils.class.d.ts +88 -88
- package/common/agro-logics.class.d.ts +23 -23
- package/common/agro-name-utils.class.d.ts +22 -22
- package/common/agro-number-utils.class.d.ts +77 -77
- package/common/agro-object-stringifier.class.d.ts +16 -16
- package/common/agro-object-utils.class.d.ts +184 -173
- package/common/agro-platform-utils.class.d.ts +60 -60
- package/common/agro-regex.constant.d.ts +155 -155
- package/common/agro-string-utils.class.d.ts +97 -97
- package/common/agro-unit-converter.class.d.ts +23 -23
- package/common/colors.class.d.ts +78 -78
- package/common/edl-query-builder.class.d.ts +27 -0
- package/common/index.d.ts +15 -12
- package/components/cancel-event-dialog/cancel-event-dialog-config.d.ts +8 -8
- package/components/cancel-event-dialog/cancel-event-dialog.component.d.ts +34 -33
- package/components/cancel-event-dialog/cancel-event-dialog.module.d.ts +14 -2
- package/components/cancel-event-dialog/index.d.ts +3 -3
- package/components/event-control-board/common/control-status.d.ts +5 -5
- package/components/event-control-board/common/documentsToIssue.d.ts +4 -4
- package/components/event-control-board/common/event-control-constants.d.ts +11 -11
- package/components/event-control-board/common/event-operation.d.ts +52 -52
- package/components/event-control-board/common/event-origin.d.ts +12 -12
- package/components/event-control-board/common/event-status.d.ts +7 -7
- package/components/event-control-board/common/input-fields-translate.d.ts +5 -5
- package/components/event-control-board/common/input-fields.d.ts +5 -5
- package/components/event-control-board/common/invoice-type.d.ts +9 -9
- package/components/event-control-board/common/lookup-error-message.constants.d.ts +3 -3
- package/components/event-control-board/common/operation.d.ts +5 -5
- package/components/event-control-board/common/operationType.d.ts +5 -5
- package/components/event-control-board/common/status-entity.d.ts +4 -4
- package/components/event-control-board/common/ticket-status.d.ts +7 -7
- package/components/event-control-board/common/transfer-status.d.ts +6 -6
- package/components/event-control-board/event-control-board.component.d.ts +120 -106
- package/components/event-control-board/event-control-board.module.d.ts +31 -2
- package/components/event-control-board/index.d.ts +22 -22
- package/components/event-control-board/service/e001pes/e001pes-dto.d.ts +12 -12
- package/components/event-control-board/service/e001pes/e001pes.d.ts +15 -15
- package/components/event-control-board/service/e001pes/e001pes.module.d.ts +7 -2
- package/components/event-control-board/service/e001pes/e001pes.service.d.ts +16 -13
- package/components/event-control-board/service/e001tns/e001tns-dto.d.ts +14 -14
- package/components/event-control-board/service/e001tns/e001tns.d.ts +19 -19
- package/components/event-control-board/service/e001tns/e001tns.module.d.ts +7 -2
- package/components/event-control-board/service/e001tns/e001tns.service.d.ts +14 -11
- package/components/event-control-board/service/e012fam/e012fam-dto.d.ts +11 -11
- package/components/event-control-board/service/e012fam/e012fam.d.ts +14 -14
- package/components/event-control-board/service/e012fam/e012fam.service.d.ts +14 -11
- package/components/event-control-board/service/e070emp/e070emp-dto.d.ts +10 -10
- package/components/event-control-board/service/e070emp/e070emp.d.ts +13 -13
- package/components/event-control-board/service/e070emp/e070emp.module.d.ts +7 -2
- package/components/event-control-board/service/e070emp/e070emp.service.d.ts +15 -12
- package/components/event-control-board/service/e070fil/e070fil-dto.d.ts +14 -14
- package/components/event-control-board/service/e070fil/e070fil.d.ts +17 -17
- package/components/event-control-board/service/e070fil/e070fil.module.d.ts +7 -2
- package/components/event-control-board/service/e070fil/e070fil.service.d.ts +15 -12
- package/components/event-control-board/service/e075der/e075der-dto.d.ts +15 -15
- package/components/event-control-board/service/e075der/e075der.d.ts +18 -18
- package/components/event-control-board/service/e075der/e075der.module.d.ts +7 -2
- package/components/event-control-board/service/e075der/e075der.service.d.ts +15 -12
- package/components/event-control-board/service/e113saf/e113saf-dto.d.ts +11 -11
- package/components/event-control-board/service/e113saf/e113saf.d.ts +14 -14
- package/components/event-control-board/service/e205dep/deposit-dto.d.ts +11 -11
- package/components/event-control-board/service/e205dep/e205dep-dto.d.ts +15 -15
- package/components/event-control-board/service/e205dep/e205dep.d.ts +16 -16
- package/components/event-control-board/service/e205dep/e205dep.service.d.ts +15 -12
- package/components/event-control-board/service/event-control/event-control-dto.d.ts +15 -15
- package/components/event-control-board/service/event-control/event-control.d.ts +21 -21
- package/components/event-control-board/service/event-control/event-control.module.d.ts +7 -2
- package/components/event-control-board/service/event-control/event-control.service.d.ts +14 -11
- package/components/event-control-board/service/event-control-item/event-control-item-dto.d.ts +18 -18
- package/components/event-control-board/service/event-control-item/event-control-item.d.ts +25 -25
- package/components/event-control-board/service/event-control-item/event-control-item.module.d.ts +7 -2
- package/components/event-control-board/service/event-control-item/event-control-item.service.d.ts +18 -15
- package/components/event-control-board/service/external-invoice/external-invoice-dto.d.ts +13 -13
- package/components/event-control-board/service/external-invoice/external-invoice.d.ts +13 -13
- package/components/event-control-board/service/external-invoice/external-invoice.module.d.ts +7 -2
- package/components/event-control-board/service/external-invoice/external-invoice.service.d.ts +14 -11
- package/components/event-control-board/service/fixation-entity/fixation-dto.d.ts +41 -41
- package/components/event-control-board/service/fixation-entity/fixation.module.d.ts +7 -2
- package/components/event-control-board/service/fixation-entity/fixation.service.d.ts +18 -15
- package/components/event-control-board/service/invoice/invoice-dto.d.ts +15 -15
- package/components/event-control-board/service/invoice/invoice.d.ts +21 -21
- package/components/event-control-board/service/invoice/invoice.module.d.ts +7 -2
- package/components/event-control-board/service/invoice/invoice.service.d.ts +14 -11
- package/components/event-control-board/service/origination/operationType.d.ts +5 -5
- package/components/event-control-board/service/origination/origination-dto.d.ts +50 -50
- package/components/event-control-board/service/origination/origination.d.ts +51 -51
- package/components/event-control-board/service/origination/origination.module.d.ts +7 -2
- package/components/event-control-board/service/origination/origination.service.d.ts +14 -11
- package/components/event-control-board/service/paginator-storage.service.d.ts +8 -8
- package/components/event-control-board/service/rural-estate/rural-estate-dto.d.ts +28 -28
- package/components/event-control-board/service/rural-estate/rural-estate.d.ts +34 -34
- package/components/event-control-board/service/rural-estate/rural-estate.module.d.ts +7 -2
- package/components/event-control-board/service/rural-estate/rural-estate.service.d.ts +14 -11
- package/components/event-control-board/service/ticket/ticket-dto.d.ts +17 -17
- package/components/event-control-board/service/ticket/ticket.d.ts +18 -18
- package/components/event-control-board/service/ticket/ticket.module.d.ts +7 -2
- package/components/event-control-board/service/ticket/ticket.service.d.ts +48 -45
- package/components/event-control-board/service/transfer/transfer-dto.d.ts +32 -32
- package/components/event-control-board/service/transfer/transfer.module.d.ts +7 -2
- package/components/event-control-board/service/transfer/transfer.service.d.ts +16 -13
- package/components/event-control-board/shared.module.d.ts +31 -2
- package/components/event-steps/event-steps.component.d.ts +39 -36
- package/components/event-steps/event-steps.module.d.ts +9 -2
- package/components/event-steps/index.d.ts +2 -2
- package/components/financial-title-table/financial-title-table-options.interface.d.ts +10 -10
- package/components/financial-title-table/financial-title-table.component.d.ts +128 -126
- package/components/financial-title-table/financial-title-table.module.d.ts +26 -2
- package/components/financial-title-table/index.d.ts +4 -4
- package/components/financial-title-table/services/financial/agro-financial.service.d.ts +26 -23
- package/components/financial-title-table/services/financial/enums.d.ts +27 -27
- package/components/financial-title-table/services/financial/index.d.ts +3 -3
- package/components/financial-title-table/services/financial/intefaces.d.ts +107 -107
- package/components/index.d.ts +5 -5
- package/components/modal-invoice-pj/for-fixation/modal-fixation-options.interface.d.ts +5 -5
- package/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.d.ts +40 -36
- package/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.module.d.ts +26 -2
- package/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.d.ts +32 -28
- package/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.module.d.ts +26 -2
- package/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.d.ts +20 -17
- package/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.module.d.ts +26 -2
- package/components/modal-invoice-pj/index.d.ts +9 -9
- package/components/modal-invoice-pj/modal-invoice-pj-base.class.d.ts +64 -55
- package/components/modal-invoice-pj/modal-invoice-pj-options.interface.d.ts +10 -10
- package/components/modal-invoice-pj/modal-shared-imports.d.ts +7 -8
- package/components/modal-invoice-pj/services/agro-invoice/agro-invoice.module.d.ts +8 -2
- package/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.d.ts +19 -16
- package/components/modal-invoice-pj/services/agro-invoice/index.d.ts +2 -2
- package/components/modal-invoice-pj/services/agro-invoice/interfaces.d.ts +75 -75
- package/enums/agro-entity-status.enum.d.ts +4 -4
- package/enums/agro-numbers.enum.d.ts +1008 -1008
- package/enums/agro-string-masks.enum.d.ts +10 -10
- package/enums/date-comparison-type.enum.d.ts +4 -4
- package/enums/fixation-status.d.ts +8 -8
- package/enums/http-codes.enum.d.ts +64 -64
- package/enums/index.d.ts +8 -7
- package/enums/invoice-status.enum.d.ts +12 -12
- package/enums/number-comparison-type.enum.d.ts +8 -8
- package/enums/unit-measurement.enum.d.ts +49 -49
- package/esm2022/agro-angular-components.module.mjs +24 -0
- package/esm2022/common/agro-array-utils.class.mjs +74 -0
- package/esm2022/common/agro-cookie-utils.class.mjs +47 -0
- package/esm2022/common/agro-date-utils.class.mjs +121 -0
- package/esm2022/common/agro-logics.class.mjs +54 -0
- package/esm2022/common/agro-name-utils.class.mjs +60 -0
- package/esm2022/common/agro-number-utils.class.mjs +129 -0
- package/esm2022/common/agro-object-stringifier.class.mjs +34 -0
- package/esm2022/common/agro-object-utils.class.mjs +320 -0
- package/esm2022/common/agro-platform-utils.class.mjs +119 -0
- package/esm2022/common/agro-regex.constant.mjs +156 -0
- package/esm2022/common/agro-string-utils.class.mjs +363 -0
- package/esm2022/common/agro-unit-converter.class.mjs +254 -0
- package/esm2022/common/colors.class.mjs +79 -0
- package/esm2022/common/edl-query-builder.class.mjs +141 -0
- package/esm2022/common/index.mjs +14 -0
- package/esm2022/components/cancel-event-dialog/cancel-event-dialog-config.mjs +2 -0
- package/esm2022/components/cancel-event-dialog/cancel-event-dialog.component.mjs +117 -0
- package/esm2022/components/cancel-event-dialog/cancel-event-dialog.module.mjs +24 -0
- package/esm2022/components/cancel-event-dialog/index.mjs +3 -0
- package/esm2022/components/event-control-board/common/control-status.mjs +7 -0
- package/esm2022/components/event-control-board/common/documentsToIssue.mjs +6 -0
- package/esm2022/components/event-control-board/common/event-control-constants.mjs +113 -0
- package/esm2022/components/event-control-board/common/event-operation.mjs +54 -0
- package/esm2022/components/event-control-board/common/event-origin.mjs +14 -0
- package/esm2022/components/event-control-board/common/event-status.mjs +9 -0
- package/esm2022/components/event-control-board/common/input-fields-translate.mjs +11 -0
- package/esm2022/components/event-control-board/common/input-fields.mjs +7 -0
- package/esm2022/components/event-control-board/common/invoice-type.mjs +11 -0
- package/esm2022/components/event-control-board/common/lookup-error-message.constants.mjs +11 -0
- package/esm2022/components/event-control-board/common/operation.mjs +7 -0
- package/esm2022/components/event-control-board/common/operationType.mjs +7 -0
- package/esm2022/components/event-control-board/common/status-entity.mjs +6 -0
- package/esm2022/components/event-control-board/common/ticket-status.mjs +9 -0
- package/esm2022/components/event-control-board/common/transfer-status.mjs +8 -0
- package/esm2022/components/event-control-board/event-control-board.component.mjs +609 -0
- package/esm2022/components/event-control-board/event-control-board.module.mjs +120 -0
- package/esm2022/components/event-control-board/index.mjs +22 -0
- package/esm2022/components/event-control-board/service/e001pes/e001pes-dto.mjs +2 -0
- package/esm2022/components/event-control-board/service/e001pes/e001pes.mjs +30 -0
- package/esm2022/components/event-control-board/service/e001pes/e001pes.module.mjs +34 -0
- package/esm2022/components/event-control-board/service/e001pes/e001pes.service.mjs +33 -0
- package/esm2022/components/event-control-board/service/e001tns/e001tns-dto.mjs +2 -0
- package/esm2022/components/event-control-board/service/e001tns/e001tns.mjs +51 -0
- package/esm2022/components/event-control-board/service/e001tns/e001tns.module.mjs +38 -0
- package/esm2022/components/event-control-board/service/e001tns/e001tns.service.mjs +23 -0
- package/esm2022/components/event-control-board/service/e012fam/e012fam-dto.mjs +2 -0
- package/esm2022/components/event-control-board/service/e012fam/e012fam.mjs +29 -0
- package/esm2022/components/event-control-board/service/e012fam/e012fam.service.mjs +23 -0
- package/esm2022/components/event-control-board/service/e070emp/e070emp-dto.mjs +2 -0
- package/esm2022/components/event-control-board/service/e070emp/e070emp.mjs +37 -0
- package/esm2022/components/event-control-board/service/e070emp/e070emp.module.mjs +34 -0
- package/esm2022/components/event-control-board/service/e070emp/e070emp.service.mjs +30 -0
- package/esm2022/components/event-control-board/service/e070fil/e070fil-dto.mjs +2 -0
- package/esm2022/components/event-control-board/service/e070fil/e070fil.mjs +52 -0
- package/esm2022/components/event-control-board/service/e070fil/e070fil.module.mjs +34 -0
- package/esm2022/components/event-control-board/service/e070fil/e070fil.service.mjs +30 -0
- package/esm2022/components/event-control-board/service/e075der/e075der-dto.mjs +2 -0
- package/esm2022/components/event-control-board/service/e075der/e075der.mjs +41 -0
- package/esm2022/components/event-control-board/service/e075der/e075der.module.mjs +34 -0
- package/esm2022/components/event-control-board/service/e075der/e075der.service.mjs +28 -0
- package/esm2022/components/event-control-board/service/e113saf/e113saf-dto.mjs +2 -0
- package/{esm2015/components/event-control-board/service/e113saf/e113saf.js → esm2022/components/event-control-board/service/e113saf/e113saf.mjs} +29 -20
- package/esm2022/components/event-control-board/service/e205dep/deposit-dto.mjs +2 -0
- package/esm2022/components/event-control-board/service/e205dep/e205dep-dto.mjs +2 -0
- package/esm2022/components/event-control-board/service/e205dep/e205dep.mjs +31 -0
- package/esm2022/components/event-control-board/service/e205dep/e205dep.service.mjs +28 -0
- package/esm2022/components/event-control-board/service/event-control/event-control-dto.mjs +2 -0
- package/esm2022/components/event-control-board/service/event-control/event-control.mjs +32 -0
- package/esm2022/components/event-control-board/service/event-control/event-control.module.mjs +34 -0
- package/esm2022/components/event-control-board/service/event-control/event-control.service.mjs +23 -0
- package/esm2022/components/event-control-board/service/event-control-item/event-control-item-dto.mjs +2 -0
- package/esm2022/components/event-control-board/service/event-control-item/event-control-item.mjs +52 -0
- package/esm2022/components/event-control-board/service/event-control-item/event-control-item.module.mjs +34 -0
- package/esm2022/components/event-control-board/service/event-control-item/event-control-item.service.mjs +28 -0
- package/esm2022/components/event-control-board/service/external-invoice/external-invoice-dto.mjs +2 -0
- package/esm2022/components/event-control-board/service/external-invoice/external-invoice.mjs +28 -0
- package/esm2022/components/event-control-board/service/external-invoice/external-invoice.module.mjs +34 -0
- package/esm2022/components/event-control-board/service/external-invoice/external-invoice.service.mjs +23 -0
- package/esm2022/components/event-control-board/service/fixation-entity/fixation-dto.mjs +2 -0
- package/esm2022/components/event-control-board/service/fixation-entity/fixation.module.mjs +34 -0
- package/esm2022/components/event-control-board/service/fixation-entity/fixation.service.mjs +28 -0
- package/esm2022/components/event-control-board/service/invoice/invoice-dto.mjs +2 -0
- package/esm2022/components/event-control-board/service/invoice/invoice.mjs +56 -0
- package/esm2022/components/event-control-board/service/invoice/invoice.module.mjs +38 -0
- package/esm2022/components/event-control-board/service/invoice/invoice.service.mjs +23 -0
- package/esm2022/components/event-control-board/service/origination/operationType.mjs +7 -0
- package/esm2022/components/event-control-board/service/origination/origination-dto.mjs +2 -0
- package/esm2022/components/event-control-board/service/origination/origination.mjs +86 -0
- package/esm2022/components/event-control-board/service/origination/origination.module.mjs +34 -0
- package/esm2022/components/event-control-board/service/origination/origination.service.mjs +23 -0
- package/esm2022/components/event-control-board/service/paginator-storage.service.mjs +21 -0
- package/esm2022/components/event-control-board/service/rural-estate/rural-estate-dto.mjs +2 -0
- package/esm2022/components/event-control-board/service/rural-estate/rural-estate.mjs +102 -0
- package/esm2022/components/event-control-board/service/rural-estate/rural-estate.module.mjs +34 -0
- package/esm2022/components/event-control-board/service/rural-estate/rural-estate.service.mjs +23 -0
- package/esm2022/components/event-control-board/service/ticket/ticket-dto.mjs +2 -0
- package/esm2022/components/event-control-board/service/ticket/ticket.mjs +51 -0
- package/esm2022/components/event-control-board/service/ticket/ticket.module.mjs +38 -0
- package/esm2022/components/event-control-board/service/ticket/ticket.service.mjs +58 -0
- package/esm2022/components/event-control-board/service/transfer/transfer-dto.mjs +2 -0
- package/esm2022/components/event-control-board/service/transfer/transfer.module.mjs +38 -0
- package/esm2022/components/event-control-board/service/transfer/transfer.service.mjs +33 -0
- package/esm2022/components/event-control-board/shared.module.mjs +200 -0
- package/esm2022/components/event-steps/event-steps.component.mjs +129 -0
- package/esm2022/components/event-steps/event-steps.module.mjs +19 -0
- package/esm2022/components/event-steps/index.mjs +3 -0
- package/esm2022/components/financial-title-table/financial-title-table-options.interface.mjs +2 -0
- package/esm2022/components/financial-title-table/financial-title-table.component.mjs +422 -0
- package/esm2022/components/financial-title-table/financial-title-table.module.mjs +100 -0
- package/esm2022/components/financial-title-table/index.mjs +4 -0
- package/esm2022/components/financial-title-table/services/financial/agro-financial.service.mjs +68 -0
- package/esm2022/components/financial-title-table/services/financial/enums.mjs +33 -0
- package/esm2022/components/financial-title-table/services/financial/index.mjs +3 -0
- package/esm2022/components/financial-title-table/services/financial/intefaces.mjs +2 -0
- package/esm2022/components/index.mjs +6 -0
- package/esm2022/components/modal-invoice-pj/for-fixation/modal-fixation-options.interface.mjs +2 -0
- package/esm2022/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.mjs +190 -0
- package/esm2022/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.module.mjs +38 -0
- package/esm2022/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.mjs +67 -0
- package/esm2022/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.module.mjs +38 -0
- package/esm2022/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.mjs +41 -0
- package/esm2022/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.module.mjs +38 -0
- package/esm2022/components/modal-invoice-pj/index.mjs +8 -0
- package/esm2022/components/modal-invoice-pj/modal-invoice-pj-base.class.mjs +207 -0
- package/esm2022/components/modal-invoice-pj/modal-invoice-pj-options.interface.mjs +2 -0
- package/esm2022/components/modal-invoice-pj/modal-shared-imports.mjs +42 -0
- package/esm2022/components/modal-invoice-pj/services/agro-invoice/agro-invoice.module.mjs +41 -0
- package/esm2022/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.mjs +48 -0
- package/esm2022/components/modal-invoice-pj/services/agro-invoice/index.mjs +3 -0
- package/esm2022/components/modal-invoice-pj/services/agro-invoice/interfaces.mjs +13 -0
- package/esm2022/enums/agro-entity-status.enum.mjs +6 -0
- package/{esm5/enums/agro-numbers.enum.js → esm2022/enums/agro-numbers.enum.mjs} +1009 -1009
- package/esm2022/enums/agro-string-masks.enum.mjs +12 -0
- package/esm2022/enums/date-comparison-type.enum.mjs +6 -0
- package/esm2022/enums/fixation-status.mjs +10 -0
- package/{esm2015/enums/http-codes.enum.js → esm2022/enums/http-codes.enum.mjs} +66 -66
- package/esm2022/enums/index.mjs +8 -0
- package/esm2022/enums/invoice-status.enum.mjs +14 -0
- package/esm2022/enums/number-comparison-type.enum.mjs +10 -0
- package/esm2022/enums/unit-measurement.enum.mjs +60 -0
- package/esm2022/form-validator/agro-form-validator.mjs +315 -0
- package/esm2022/form-validator/index.mjs +2 -0
- package/esm2022/lib-translation.module.mjs +26 -0
- package/esm2022/pipe/cnpj-cpf/cnpj-cpf.pipe.mjs +30 -0
- package/esm2022/pipe/cnpj-cpf/cnpj-cpf.pipe.module.mjs +18 -0
- package/esm2022/pipe/cnpj-cpf/index.mjs +3 -0
- package/esm2022/pipe/index.mjs +6 -0
- package/esm2022/pipe/kilogram/index.mjs +3 -0
- package/esm2022/pipe/kilogram/kilogram.module.mjs +20 -0
- package/esm2022/pipe/kilogram/kilogram.pipe.mjs +38 -0
- package/esm2022/pipe/lib-translate.pipe.mjs +24 -0
- package/esm2022/pipe/stringifier/index.mjs +3 -0
- package/esm2022/pipe/stringifier/stringifier.pipe.mjs +15 -0
- package/esm2022/pipe/stringifier/stringifier.pipe.module.mjs +18 -0
- package/esm2022/pipe/telephone/index.mjs +3 -0
- package/esm2022/pipe/telephone/telephone.pipe.mjs +93 -0
- package/esm2022/pipe/telephone/telephone.pipe.module.mjs +18 -0
- package/esm2022/public-api.mjs +11 -0
- package/esm2022/senior-agronegocio-angular-components.mjs +5 -0
- package/esm2022/services/agro-entity-service.mjs +137 -0
- package/esm2022/services/i18n/en-US.mjs +322 -0
- package/esm2022/services/i18n/es-CO.mjs +322 -0
- package/esm2022/services/i18n/pt-BR.mjs +322 -0
- package/esm2022/services/index.mjs +3 -0
- package/esm2022/services/lib-translation.service.mjs +58 -0
- package/esm2022/services/producer-invoice/index.mjs +3 -0
- package/esm2022/services/producer-invoice/producer-invoice-dto.mjs +2 -0
- package/esm2022/services/producer-invoice/producer-invoice.mjs +49 -0
- package/esm2022/services/producer-invoice/producer-invoice.service.mjs +56 -0
- package/esm2022/services/websocket/async-lock.mjs +27 -0
- package/esm2022/services/websocket/index.mjs +7 -0
- package/esm2022/services/websocket/models/index.mjs +2 -0
- package/esm2022/services/websocket/models/primitive-manager.mjs +45 -0
- package/esm2022/services/websocket/protocols/index.mjs +2 -0
- package/esm2022/services/websocket/protocols/on-event-options.mjs +2 -0
- package/esm2022/services/websocket/protocols/primitive-event.mjs +2 -0
- package/esm2022/services/websocket/user-information.service.mjs +34 -0
- package/esm2022/services/websocket/websocket.module.mjs +27 -0
- package/esm2022/services/websocket/websocket.service.mjs +327 -0
- package/{fesm2015/senior-agronegocio-angular-components.js → fesm2022/senior-agronegocio-angular-components.mjs} +8600 -7930
- package/fesm2022/senior-agronegocio-angular-components.mjs.map +1 -0
- package/form-validator/agro-form-validator.d.ts +117 -117
- package/form-validator/index.d.ts +1 -1
- package/index.d.ts +5 -0
- package/lib-translation.module.d.ts +8 -2
- package/package.json +60 -29
- package/pipe/cnpj-cpf/cnpj-cpf.pipe.d.ts +7 -4
- package/pipe/cnpj-cpf/cnpj-cpf.pipe.module.d.ts +8 -2
- package/pipe/cnpj-cpf/index.d.ts +2 -2
- package/pipe/index.d.ts +5 -5
- package/pipe/kilogram/index.d.ts +2 -2
- package/pipe/kilogram/kilogram.module.d.ts +8 -2
- package/pipe/kilogram/kilogram.pipe.d.ts +11 -8
- package/pipe/lib-translate.pipe.d.ts +10 -7
- package/pipe/stringifier/index.d.ts +2 -2
- package/pipe/stringifier/stringifier.pipe.d.ts +12 -9
- package/pipe/stringifier/stringifier.pipe.module.d.ts +8 -2
- package/pipe/telephone/index.d.ts +2 -2
- package/pipe/telephone/telephone.pipe.d.ts +24 -21
- package/pipe/telephone/telephone.pipe.module.d.ts +8 -2
- package/public-api.d.ts +9 -8
- package/services/agro-entity-service.d.ts +63 -62
- package/services/i18n/en-US.d.ts +321 -321
- package/services/i18n/es-CO.d.ts +321 -321
- package/services/i18n/pt-BR.d.ts +321 -321
- package/services/index.d.ts +2 -2
- package/services/lib-translation.service.d.ts +19 -16
- package/services/producer-invoice/index.d.ts +3 -3
- package/services/producer-invoice/producer-invoice-dto.d.ts +26 -26
- package/services/producer-invoice/producer-invoice.d.ts +27 -27
- package/services/producer-invoice/producer-invoice.service.d.ts +21 -18
- package/services/websocket/async-lock.d.ts +6 -6
- package/services/websocket/index.d.ts +6 -6
- package/services/websocket/models/index.d.ts +1 -1
- package/services/websocket/models/primitive-manager.d.ts +19 -19
- package/services/websocket/protocols/index.d.ts +2 -2
- package/services/websocket/protocols/on-event-options.d.ts +8 -8
- package/services/websocket/protocols/primitive-event.d.ts +10 -10
- package/services/websocket/user-information.service.d.ts +10 -7
- package/services/websocket/websocket.module.d.ts +7 -2
- package/services/websocket/websocket.service.d.ts +103 -100
- package/bundles/senior-agronegocio-angular-components.umd.js +0 -8888
- package/bundles/senior-agronegocio-angular-components.umd.js.map +0 -1
- package/bundles/senior-agronegocio-angular-components.umd.min.js +0 -17
- package/bundles/senior-agronegocio-angular-components.umd.min.js.map +0 -1
- package/esm2015/agro-angular-components.module.js +0 -22
- package/esm2015/common/agro-array-utils.class.js +0 -74
- package/esm2015/common/agro-cookie-utils.class.js +0 -47
- package/esm2015/common/agro-date-utils.class.js +0 -121
- package/esm2015/common/agro-logics.class.js +0 -54
- package/esm2015/common/agro-name-utils.class.js +0 -60
- package/esm2015/common/agro-number-utils.class.js +0 -129
- package/esm2015/common/agro-object-stringifier.class.js +0 -34
- package/esm2015/common/agro-object-utils.class.js +0 -301
- package/esm2015/common/agro-platform-utils.class.js +0 -119
- package/esm2015/common/agro-regex.constant.js +0 -156
- package/esm2015/common/agro-string-utils.class.js +0 -364
- package/esm2015/common/agro-unit-converter.class.js +0 -255
- package/esm2015/common/colors.class.js +0 -79
- package/esm2015/common/index.js +0 -13
- package/esm2015/components/cancel-event-dialog/cancel-event-dialog-config.js +0 -1
- package/esm2015/components/cancel-event-dialog/cancel-event-dialog.component.js +0 -117
- package/esm2015/components/cancel-event-dialog/cancel-event-dialog.module.js +0 -19
- package/esm2015/components/cancel-event-dialog/index.js +0 -3
- package/esm2015/components/event-control-board/common/control-status.js +0 -7
- package/esm2015/components/event-control-board/common/documentsToIssue.js +0 -6
- package/esm2015/components/event-control-board/common/event-control-constants.js +0 -113
- package/esm2015/components/event-control-board/common/event-operation.js +0 -54
- package/esm2015/components/event-control-board/common/event-origin.js +0 -14
- package/esm2015/components/event-control-board/common/event-status.js +0 -9
- package/esm2015/components/event-control-board/common/input-fields-translate.js +0 -11
- package/esm2015/components/event-control-board/common/input-fields.js +0 -7
- package/esm2015/components/event-control-board/common/invoice-type.js +0 -11
- package/esm2015/components/event-control-board/common/lookup-error-message.constants.js +0 -11
- package/esm2015/components/event-control-board/common/operation.js +0 -7
- package/esm2015/components/event-control-board/common/operationType.js +0 -7
- package/esm2015/components/event-control-board/common/status-entity.js +0 -6
- package/esm2015/components/event-control-board/common/ticket-status.js +0 -9
- package/esm2015/components/event-control-board/common/transfer-status.js +0 -8
- package/esm2015/components/event-control-board/event-control-board.component.js +0 -597
- package/esm2015/components/event-control-board/event-control-board.module.js +0 -66
- package/esm2015/components/event-control-board/index.js +0 -22
- package/esm2015/components/event-control-board/service/e001pes/e001pes-dto.js +0 -1
- package/esm2015/components/event-control-board/service/e001pes/e001pes.js +0 -20
- package/esm2015/components/event-control-board/service/e001pes/e001pes.module.js +0 -24
- package/esm2015/components/event-control-board/service/e001pes/e001pes.service.js +0 -34
- package/esm2015/components/event-control-board/service/e001tns/e001tns-dto.js +0 -1
- package/esm2015/components/event-control-board/service/e001tns/e001tns.js +0 -42
- package/esm2015/components/event-control-board/service/e001tns/e001tns.module.js +0 -26
- package/esm2015/components/event-control-board/service/e001tns/e001tns.service.js +0 -24
- package/esm2015/components/event-control-board/service/e012fam/e012fam-dto.js +0 -1
- package/esm2015/components/event-control-board/service/e012fam/e012fam.js +0 -20
- package/esm2015/components/event-control-board/service/e012fam/e012fam.service.js +0 -24
- package/esm2015/components/event-control-board/service/e070emp/e070emp-dto.js +0 -1
- package/esm2015/components/event-control-board/service/e070emp/e070emp.js +0 -29
- package/esm2015/components/event-control-board/service/e070emp/e070emp.module.js +0 -24
- package/esm2015/components/event-control-board/service/e070emp/e070emp.service.js +0 -31
- package/esm2015/components/event-control-board/service/e070fil/e070fil-dto.js +0 -1
- package/esm2015/components/event-control-board/service/e070fil/e070fil.js +0 -41
- package/esm2015/components/event-control-board/service/e070fil/e070fil.module.js +0 -24
- package/esm2015/components/event-control-board/service/e070fil/e070fil.service.js +0 -31
- package/esm2015/components/event-control-board/service/e075der/e075der-dto.js +0 -1
- package/esm2015/components/event-control-board/service/e075der/e075der.js +0 -31
- package/esm2015/components/event-control-board/service/e075der/e075der.module.js +0 -24
- package/esm2015/components/event-control-board/service/e075der/e075der.service.js +0 -29
- package/esm2015/components/event-control-board/service/e113saf/e113saf-dto.js +0 -1
- package/esm2015/components/event-control-board/service/e205dep/deposit-dto.js +0 -1
- package/esm2015/components/event-control-board/service/e205dep/e205dep-dto.js +0 -1
- package/esm2015/components/event-control-board/service/e205dep/e205dep.js +0 -20
- package/esm2015/components/event-control-board/service/e205dep/e205dep.service.js +0 -29
- package/esm2015/components/event-control-board/service/event-control/event-control-dto.js +0 -1
- package/esm2015/components/event-control-board/service/event-control/event-control.js +0 -20
- package/esm2015/components/event-control-board/service/event-control/event-control.module.js +0 -24
- package/esm2015/components/event-control-board/service/event-control/event-control.service.js +0 -24
- package/esm2015/components/event-control-board/service/event-control-item/event-control-item-dto.js +0 -1
- package/esm2015/components/event-control-board/service/event-control-item/event-control-item.js +0 -35
- package/esm2015/components/event-control-board/service/event-control-item/event-control-item.module.js +0 -24
- package/esm2015/components/event-control-board/service/event-control-item/event-control-item.service.js +0 -29
- package/esm2015/components/event-control-board/service/external-invoice/external-invoice-dto.js +0 -1
- package/esm2015/components/event-control-board/service/external-invoice/external-invoice.js +0 -20
- package/esm2015/components/event-control-board/service/external-invoice/external-invoice.module.js +0 -24
- package/esm2015/components/event-control-board/service/external-invoice/external-invoice.service.js +0 -24
- package/esm2015/components/event-control-board/service/fixation-entity/fixation-dto.js +0 -1
- package/esm2015/components/event-control-board/service/fixation-entity/fixation.module.js +0 -24
- package/esm2015/components/event-control-board/service/fixation-entity/fixation.service.js +0 -29
- package/esm2015/components/event-control-board/service/invoice/invoice-dto.js +0 -1
- package/esm2015/components/event-control-board/service/invoice/invoice.js +0 -43
- package/esm2015/components/event-control-board/service/invoice/invoice.module.js +0 -26
- package/esm2015/components/event-control-board/service/invoice/invoice.service.js +0 -24
- package/esm2015/components/event-control-board/service/origination/operationType.js +0 -7
- package/esm2015/components/event-control-board/service/origination/origination-dto.js +0 -1
- package/esm2015/components/event-control-board/service/origination/origination.js +0 -59
- package/esm2015/components/event-control-board/service/origination/origination.module.js +0 -24
- package/esm2015/components/event-control-board/service/origination/origination.service.js +0 -24
- package/esm2015/components/event-control-board/service/paginator-storage.service.js +0 -32
- package/esm2015/components/event-control-board/service/rural-estate/rural-estate-dto.js +0 -1
- package/esm2015/components/event-control-board/service/rural-estate/rural-estate.js +0 -78
- package/esm2015/components/event-control-board/service/rural-estate/rural-estate.module.js +0 -24
- package/esm2015/components/event-control-board/service/rural-estate/rural-estate.service.js +0 -24
- package/esm2015/components/event-control-board/service/ticket/ticket-dto.js +0 -1
- package/esm2015/components/event-control-board/service/ticket/ticket.js +0 -39
- package/esm2015/components/event-control-board/service/ticket/ticket.module.js +0 -26
- package/esm2015/components/event-control-board/service/ticket/ticket.service.js +0 -59
- package/esm2015/components/event-control-board/service/transfer/transfer-dto.js +0 -1
- package/esm2015/components/event-control-board/service/transfer/transfer.module.js +0 -26
- package/esm2015/components/event-control-board/service/transfer/transfer.service.js +0 -34
- package/esm2015/components/event-control-board/shared.module.js +0 -56
- package/esm2015/components/event-steps/event-steps.component.js +0 -103
- package/esm2015/components/event-steps/event-steps.module.js +0 -16
- package/esm2015/components/event-steps/index.js +0 -3
- package/esm2015/components/financial-title-table/financial-title-table-options.interface.js +0 -1
- package/esm2015/components/financial-title-table/financial-title-table.component.js +0 -416
- package/esm2015/components/financial-title-table/financial-title-table.module.js +0 -45
- package/esm2015/components/financial-title-table/index.js +0 -4
- package/esm2015/components/financial-title-table/services/financial/agro-financial.service.js +0 -69
- package/esm2015/components/financial-title-table/services/financial/enums.js +0 -33
- package/esm2015/components/financial-title-table/services/financial/index.js +0 -3
- package/esm2015/components/financial-title-table/services/financial/intefaces.js +0 -1
- package/esm2015/components/index.js +0 -6
- package/esm2015/components/modal-invoice-pj/for-fixation/modal-fixation-options.interface.js +0 -1
- package/esm2015/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.js +0 -191
- package/esm2015/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.module.js +0 -16
- package/esm2015/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.js +0 -64
- package/esm2015/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.module.js +0 -16
- package/esm2015/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.js +0 -37
- package/esm2015/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.module.js +0 -16
- package/esm2015/components/modal-invoice-pj/index.js +0 -8
- package/esm2015/components/modal-invoice-pj/modal-invoice-pj-base.class.js +0 -196
- package/esm2015/components/modal-invoice-pj/modal-invoice-pj-options.interface.js +0 -1
- package/esm2015/components/modal-invoice-pj/modal-shared-imports.js +0 -32
- package/esm2015/components/modal-invoice-pj/services/agro-invoice/agro-invoice.module.js +0 -28
- package/esm2015/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.js +0 -49
- package/esm2015/components/modal-invoice-pj/services/agro-invoice/index.js +0 -3
- package/esm2015/components/modal-invoice-pj/services/agro-invoice/interfaces.js +0 -13
- package/esm2015/enums/agro-entity-status.enum.js +0 -6
- package/esm2015/enums/agro-numbers.enum.js +0 -1009
- package/esm2015/enums/agro-string-masks.enum.js +0 -12
- package/esm2015/enums/date-comparison-type.enum.js +0 -6
- package/esm2015/enums/fixation-status.js +0 -10
- package/esm2015/enums/index.js +0 -8
- package/esm2015/enums/invoice-status.enum.js +0 -14
- package/esm2015/enums/number-comparison-type.enum.js +0 -10
- package/esm2015/enums/unit-measurement.enum.js +0 -60
- package/esm2015/form-validator/agro-form-validator.js +0 -319
- package/esm2015/form-validator/index.js +0 -2
- package/esm2015/lib-translation.module.js +0 -23
- package/esm2015/pipe/cnpj-cpf/cnpj-cpf.pipe.js +0 -28
- package/esm2015/pipe/cnpj-cpf/cnpj-cpf.pipe.module.js +0 -15
- package/esm2015/pipe/cnpj-cpf/index.js +0 -3
- package/esm2015/pipe/index.js +0 -6
- package/esm2015/pipe/kilogram/index.js +0 -3
- package/esm2015/pipe/kilogram/kilogram.module.js +0 -17
- package/esm2015/pipe/kilogram/kilogram.pipe.js +0 -38
- package/esm2015/pipe/lib-translate.pipe.js +0 -24
- package/esm2015/pipe/stringifier/index.js +0 -3
- package/esm2015/pipe/stringifier/stringifier.pipe.js +0 -13
- package/esm2015/pipe/stringifier/stringifier.pipe.module.js +0 -15
- package/esm2015/pipe/telephone/index.js +0 -3
- package/esm2015/pipe/telephone/telephone.pipe.js +0 -91
- package/esm2015/pipe/telephone/telephone.pipe.module.js +0 -15
- package/esm2015/public-api.js +0 -9
- package/esm2015/senior-agronegocio-angular-components.js +0 -7
- package/esm2015/services/agro-entity-service.js +0 -132
- package/esm2015/services/i18n/en-US.js +0 -322
- package/esm2015/services/i18n/es-CO.js +0 -322
- package/esm2015/services/i18n/pt-BR.js +0 -322
- package/esm2015/services/index.js +0 -3
- package/esm2015/services/lib-translation.service.js +0 -58
- package/esm2015/services/producer-invoice/index.js +0 -3
- package/esm2015/services/producer-invoice/producer-invoice-dto.js +0 -1
- package/esm2015/services/producer-invoice/producer-invoice.js +0 -32
- package/esm2015/services/producer-invoice/producer-invoice.service.js +0 -64
- package/esm2015/services/websocket/async-lock.js +0 -34
- package/esm2015/services/websocket/index.js +0 -6
- package/esm2015/services/websocket/models/index.js +0 -2
- package/esm2015/services/websocket/models/primitive-manager.js +0 -39
- package/esm2015/services/websocket/protocols/index.js +0 -1
- package/esm2015/services/websocket/protocols/on-event-options.js +0 -1
- package/esm2015/services/websocket/protocols/primitive-event.js +0 -1
- package/esm2015/services/websocket/user-information.service.js +0 -34
- package/esm2015/services/websocket/websocket.module.js +0 -21
- package/esm2015/services/websocket/websocket.service.js +0 -338
- package/esm5/agro-angular-components.module.js +0 -26
- package/esm5/common/agro-array-utils.class.js +0 -90
- package/esm5/common/agro-cookie-utils.class.js +0 -54
- package/esm5/common/agro-date-utils.class.js +0 -126
- package/esm5/common/agro-logics.class.js +0 -96
- package/esm5/common/agro-name-utils.class.js +0 -64
- package/esm5/common/agro-number-utils.class.js +0 -137
- package/esm5/common/agro-object-stringifier.class.js +0 -38
- package/esm5/common/agro-object-utils.class.js +0 -306
- package/esm5/common/agro-platform-utils.class.js +0 -123
- package/esm5/common/agro-regex.constant.js +0 -156
- package/esm5/common/agro-string-utils.class.js +0 -380
- package/esm5/common/agro-unit-converter.class.js +0 -258
- package/esm5/common/colors.class.js +0 -83
- package/esm5/common/index.js +0 -13
- package/esm5/components/cancel-event-dialog/cancel-event-dialog-config.js +0 -1
- package/esm5/components/cancel-event-dialog/cancel-event-dialog.component.js +0 -128
- package/esm5/components/cancel-event-dialog/cancel-event-dialog.module.js +0 -22
- package/esm5/components/cancel-event-dialog/index.js +0 -3
- package/esm5/components/event-control-board/common/control-status.js +0 -7
- package/esm5/components/event-control-board/common/documentsToIssue.js +0 -6
- package/esm5/components/event-control-board/common/event-control-constants.js +0 -113
- package/esm5/components/event-control-board/common/event-operation.js +0 -54
- package/esm5/components/event-control-board/common/event-origin.js +0 -14
- package/esm5/components/event-control-board/common/event-status.js +0 -9
- package/esm5/components/event-control-board/common/input-fields-translate.js +0 -11
- package/esm5/components/event-control-board/common/input-fields.js +0 -7
- package/esm5/components/event-control-board/common/invoice-type.js +0 -11
- package/esm5/components/event-control-board/common/lookup-error-message.constants.js +0 -11
- package/esm5/components/event-control-board/common/operation.js +0 -7
- package/esm5/components/event-control-board/common/operationType.js +0 -7
- package/esm5/components/event-control-board/common/status-entity.js +0 -6
- package/esm5/components/event-control-board/common/ticket-status.js +0 -9
- package/esm5/components/event-control-board/common/transfer-status.js +0 -8
- package/esm5/components/event-control-board/event-control-board.component.js +0 -619
- package/esm5/components/event-control-board/event-control-board.module.js +0 -69
- package/esm5/components/event-control-board/index.js +0 -22
- package/esm5/components/event-control-board/service/e001pes/e001pes-dto.js +0 -1
- package/esm5/components/event-control-board/service/e001pes/e001pes.js +0 -25
- package/esm5/components/event-control-board/service/e001pes/e001pes.module.js +0 -27
- package/esm5/components/event-control-board/service/e001pes/e001pes.service.js +0 -37
- package/esm5/components/event-control-board/service/e001tns/e001tns-dto.js +0 -1
- package/esm5/components/event-control-board/service/e001tns/e001tns.js +0 -45
- package/esm5/components/event-control-board/service/e001tns/e001tns.module.js +0 -29
- package/esm5/components/event-control-board/service/e001tns/e001tns.service.js +0 -27
- package/esm5/components/event-control-board/service/e012fam/e012fam-dto.js +0 -1
- package/esm5/components/event-control-board/service/e012fam/e012fam.js +0 -25
- package/esm5/components/event-control-board/service/e012fam/e012fam.service.js +0 -27
- package/esm5/components/event-control-board/service/e070emp/e070emp-dto.js +0 -1
- package/esm5/components/event-control-board/service/e070emp/e070emp.js +0 -34
- package/esm5/components/event-control-board/service/e070emp/e070emp.module.js +0 -27
- package/esm5/components/event-control-board/service/e070emp/e070emp.service.js +0 -34
- package/esm5/components/event-control-board/service/e070fil/e070fil-dto.js +0 -1
- package/esm5/components/event-control-board/service/e070fil/e070fil.js +0 -48
- package/esm5/components/event-control-board/service/e070fil/e070fil.module.js +0 -27
- package/esm5/components/event-control-board/service/e070fil/e070fil.service.js +0 -34
- package/esm5/components/event-control-board/service/e075der/e075der-dto.js +0 -1
- package/esm5/components/event-control-board/service/e075der/e075der.js +0 -36
- package/esm5/components/event-control-board/service/e075der/e075der.module.js +0 -27
- package/esm5/components/event-control-board/service/e075der/e075der.service.js +0 -32
- package/esm5/components/event-control-board/service/e113saf/e113saf-dto.js +0 -1
- package/esm5/components/event-control-board/service/e113saf/e113saf.js +0 -25
- package/esm5/components/event-control-board/service/e205dep/deposit-dto.js +0 -1
- package/esm5/components/event-control-board/service/e205dep/e205dep-dto.js +0 -1
- package/esm5/components/event-control-board/service/e205dep/e205dep.js +0 -25
- package/esm5/components/event-control-board/service/e205dep/e205dep.service.js +0 -32
- package/esm5/components/event-control-board/service/event-control/event-control-dto.js +0 -1
- package/esm5/components/event-control-board/service/event-control/event-control.js +0 -25
- package/esm5/components/event-control-board/service/event-control/event-control.module.js +0 -27
- package/esm5/components/event-control-board/service/event-control/event-control.service.js +0 -27
- package/esm5/components/event-control-board/service/event-control-item/event-control-item-dto.js +0 -1
- package/esm5/components/event-control-board/service/event-control-item/event-control-item.js +0 -40
- package/esm5/components/event-control-board/service/event-control-item/event-control-item.module.js +0 -27
- package/esm5/components/event-control-board/service/event-control-item/event-control-item.service.js +0 -32
- package/esm5/components/event-control-board/service/external-invoice/external-invoice-dto.js +0 -1
- package/esm5/components/event-control-board/service/external-invoice/external-invoice.js +0 -25
- package/esm5/components/event-control-board/service/external-invoice/external-invoice.module.js +0 -27
- package/esm5/components/event-control-board/service/external-invoice/external-invoice.service.js +0 -27
- package/esm5/components/event-control-board/service/fixation-entity/fixation-dto.js +0 -1
- package/esm5/components/event-control-board/service/fixation-entity/fixation.module.js +0 -27
- package/esm5/components/event-control-board/service/fixation-entity/fixation.service.js +0 -32
- package/esm5/components/event-control-board/service/invoice/invoice-dto.js +0 -1
- package/esm5/components/event-control-board/service/invoice/invoice.js +0 -48
- package/esm5/components/event-control-board/service/invoice/invoice.module.js +0 -29
- package/esm5/components/event-control-board/service/invoice/invoice.service.js +0 -27
- package/esm5/components/event-control-board/service/origination/operationType.js +0 -7
- package/esm5/components/event-control-board/service/origination/origination-dto.js +0 -1
- package/esm5/components/event-control-board/service/origination/origination.js +0 -62
- package/esm5/components/event-control-board/service/origination/origination.module.js +0 -27
- package/esm5/components/event-control-board/service/origination/origination.service.js +0 -27
- package/esm5/components/event-control-board/service/paginator-storage.service.js +0 -71
- package/esm5/components/event-control-board/service/rural-estate/rural-estate-dto.js +0 -1
- package/esm5/components/event-control-board/service/rural-estate/rural-estate.js +0 -83
- package/esm5/components/event-control-board/service/rural-estate/rural-estate.module.js +0 -27
- package/esm5/components/event-control-board/service/rural-estate/rural-estate.service.js +0 -27
- package/esm5/components/event-control-board/service/ticket/ticket-dto.js +0 -1
- package/esm5/components/event-control-board/service/ticket/ticket.js +0 -44
- package/esm5/components/event-control-board/service/ticket/ticket.module.js +0 -29
- package/esm5/components/event-control-board/service/ticket/ticket.service.js +0 -62
- package/esm5/components/event-control-board/service/transfer/transfer-dto.js +0 -1
- package/esm5/components/event-control-board/service/transfer/transfer.module.js +0 -29
- package/esm5/components/event-control-board/service/transfer/transfer.service.js +0 -37
- package/esm5/components/event-control-board/shared.module.js +0 -59
- package/esm5/components/event-steps/event-steps.component.js +0 -113
- package/esm5/components/event-steps/event-steps.module.js +0 -19
- package/esm5/components/event-steps/index.js +0 -3
- package/esm5/components/financial-title-table/financial-title-table-options.interface.js +0 -1
- package/esm5/components/financial-title-table/financial-title-table.component.js +0 -438
- package/esm5/components/financial-title-table/financial-title-table.module.js +0 -48
- package/esm5/components/financial-title-table/index.js +0 -4
- package/esm5/components/financial-title-table/services/financial/agro-financial.service.js +0 -76
- package/esm5/components/financial-title-table/services/financial/enums.js +0 -33
- package/esm5/components/financial-title-table/services/financial/index.js +0 -3
- package/esm5/components/financial-title-table/services/financial/intefaces.js +0 -1
- package/esm5/components/index.js +0 -6
- package/esm5/components/modal-invoice-pj/for-fixation/modal-fixation-options.interface.js +0 -1
- package/esm5/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.js +0 -223
- package/esm5/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.module.js +0 -19
- package/esm5/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.js +0 -67
- package/esm5/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.module.js +0 -19
- package/esm5/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.js +0 -40
- package/esm5/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.module.js +0 -19
- package/esm5/components/modal-invoice-pj/index.js +0 -8
- package/esm5/components/modal-invoice-pj/modal-invoice-pj-base.class.js +0 -213
- package/esm5/components/modal-invoice-pj/modal-invoice-pj-options.interface.js +0 -1
- package/esm5/components/modal-invoice-pj/modal-shared-imports.js +0 -32
- package/esm5/components/modal-invoice-pj/services/agro-invoice/agro-invoice.module.js +0 -31
- package/esm5/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.js +0 -56
- package/esm5/components/modal-invoice-pj/services/agro-invoice/index.js +0 -3
- package/esm5/components/modal-invoice-pj/services/agro-invoice/interfaces.js +0 -13
- package/esm5/enums/agro-entity-status.enum.js +0 -6
- package/esm5/enums/agro-string-masks.enum.js +0 -12
- package/esm5/enums/date-comparison-type.enum.js +0 -6
- package/esm5/enums/fixation-status.js +0 -10
- package/esm5/enums/http-codes.enum.js +0 -66
- package/esm5/enums/index.js +0 -8
- package/esm5/enums/invoice-status.enum.js +0 -14
- package/esm5/enums/number-comparison-type.enum.js +0 -10
- package/esm5/enums/unit-measurement.enum.js +0 -60
- package/esm5/form-validator/agro-form-validator.js +0 -341
- package/esm5/form-validator/index.js +0 -2
- package/esm5/lib-translation.module.js +0 -26
- package/esm5/pipe/cnpj-cpf/cnpj-cpf.pipe.js +0 -35
- package/esm5/pipe/cnpj-cpf/cnpj-cpf.pipe.module.js +0 -18
- package/esm5/pipe/cnpj-cpf/index.js +0 -3
- package/esm5/pipe/index.js +0 -6
- package/esm5/pipe/kilogram/index.js +0 -3
- package/esm5/pipe/kilogram/kilogram.module.js +0 -20
- package/esm5/pipe/kilogram/kilogram.pipe.js +0 -41
- package/esm5/pipe/lib-translate.pipe.js +0 -29
- package/esm5/pipe/stringifier/index.js +0 -3
- package/esm5/pipe/stringifier/stringifier.pipe.js +0 -16
- package/esm5/pipe/stringifier/stringifier.pipe.module.js +0 -18
- package/esm5/pipe/telephone/index.js +0 -3
- package/esm5/pipe/telephone/telephone.pipe.js +0 -95
- package/esm5/pipe/telephone/telephone.pipe.module.js +0 -18
- package/esm5/public-api.js +0 -9
- package/esm5/senior-agronegocio-angular-components.js +0 -7
- package/esm5/services/agro-entity-service.js +0 -143
- package/esm5/services/i18n/en-US.js +0 -322
- package/esm5/services/i18n/es-CO.js +0 -322
- package/esm5/services/i18n/pt-BR.js +0 -322
- package/esm5/services/index.js +0 -3
- package/esm5/services/lib-translation.service.js +0 -60
- package/esm5/services/producer-invoice/index.js +0 -3
- package/esm5/services/producer-invoice/producer-invoice-dto.js +0 -1
- package/esm5/services/producer-invoice/producer-invoice.js +0 -37
- package/esm5/services/producer-invoice/producer-invoice.service.js +0 -72
- package/esm5/services/websocket/async-lock.js +0 -43
- package/esm5/services/websocket/index.js +0 -6
- package/esm5/services/websocket/models/index.js +0 -2
- package/esm5/services/websocket/models/primitive-manager.js +0 -58
- package/esm5/services/websocket/protocols/index.js +0 -1
- package/esm5/services/websocket/protocols/on-event-options.js +0 -1
- package/esm5/services/websocket/protocols/primitive-event.js +0 -1
- package/esm5/services/websocket/user-information.service.js +0 -38
- package/esm5/services/websocket/websocket.module.js +0 -24
- package/esm5/services/websocket/websocket.service.js +0 -410
- package/fesm2015/senior-agronegocio-angular-components.js.map +0 -1
- package/fesm5/senior-agronegocio-angular-components.js +0 -8646
- package/fesm5/senior-agronegocio-angular-components.js.map +0 -1
- package/senior-agronegocio-angular-components.d.ts +0 -6
- package/senior-agronegocio-angular-components.metadata.json +0 -1
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
import { registerLocaleData } from "@angular/common";
|
|
2
|
+
import localePt from "@angular/common/locales/pt";
|
|
3
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from "@angular/core";
|
|
4
|
+
import { FormArray, FormControl, FormGroup, Validators } from "@angular/forms";
|
|
5
|
+
import { catchError, takeUntil } from "rxjs/operators";
|
|
6
|
+
import { AgroObjectUtils } from "../../common/agro-object-utils.class";
|
|
7
|
+
import { AGRO_NUMBERS } from "../../enums";
|
|
8
|
+
import { OrderByType, TitleFieldsOrderBy } from "./services/financial/enums";
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "../../services/lib-translation.service";
|
|
11
|
+
import * as i2 from "./services/financial/agro-financial.service";
|
|
12
|
+
import * as i3 from "primeng/api";
|
|
13
|
+
import * as i4 from "@angular/common";
|
|
14
|
+
import * as i5 from "@seniorsistemas/angular-components/empty-state";
|
|
15
|
+
import * as i6 from "primeng/table";
|
|
16
|
+
import * as i7 from "@seniorsistemas/angular-components/badge";
|
|
17
|
+
import * as i8 from "@seniorsistemas/angular-components/button";
|
|
18
|
+
import * as i9 from "@seniorsistemas/angular-components/sidebar";
|
|
19
|
+
import * as i10 from "@angular/forms";
|
|
20
|
+
import * as i11 from "@seniorsistemas/angular-components/loading-state";
|
|
21
|
+
import * as i12 from "primeng/inputtext";
|
|
22
|
+
import * as i13 from "@seniorsistemas/angular-components/structure";
|
|
23
|
+
import * as i14 from "@seniorsistemas/angular-components/number-input";
|
|
24
|
+
import * as i15 from "@seniorsistemas/angular-components/control-errors";
|
|
25
|
+
import * as i16 from "../../pipe/lib-translate.pipe";
|
|
26
|
+
export class FinancialTitleTableComponent {
|
|
27
|
+
translate;
|
|
28
|
+
financialService;
|
|
29
|
+
messageService;
|
|
30
|
+
table;
|
|
31
|
+
options;
|
|
32
|
+
selected = [];
|
|
33
|
+
selectionChange = new EventEmitter();
|
|
34
|
+
gridData = [];
|
|
35
|
+
gridTotalRecords = 0;
|
|
36
|
+
errorMessage = {};
|
|
37
|
+
tableInitialized = false;
|
|
38
|
+
showSidebar = false;
|
|
39
|
+
selectedRow = null;
|
|
40
|
+
gridColumns = [];
|
|
41
|
+
sidebarFields = [];
|
|
42
|
+
componentLoading = false;
|
|
43
|
+
form = new FormGroup({
|
|
44
|
+
titlesForm: new FormArray([], []),
|
|
45
|
+
});
|
|
46
|
+
currentListParams = { first: 0, rows: 10, sortField: null, sortOrder: null, filters: {} };
|
|
47
|
+
ngUnsubscribe = new EventEmitter();
|
|
48
|
+
get titlesForm() {
|
|
49
|
+
return this.form.get("titlesForm");
|
|
50
|
+
}
|
|
51
|
+
constructor(translate, financialService, messageService) {
|
|
52
|
+
this.translate = translate;
|
|
53
|
+
this.financialService = financialService;
|
|
54
|
+
this.messageService = messageService;
|
|
55
|
+
registerLocaleData(localePt);
|
|
56
|
+
this.errorMessage = {
|
|
57
|
+
required: this.translate.instant("agro.angular_components.error_required"),
|
|
58
|
+
lessThanZero: this.translate.instant("agro.angular_components.error_less_or_equal_zero"),
|
|
59
|
+
greatherThanAllowed: this.translate.instant("agro.angular_components.error_greater_than_allowed"),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Inicializa colunas da tabela e campos exibidos no sidebar,
|
|
64
|
+
* depois dispara a primeira busca de títulos com os filtros informados em {@link options}.
|
|
65
|
+
*/
|
|
66
|
+
ngOnInit() {
|
|
67
|
+
this.gridColumns = [
|
|
68
|
+
this.getFields("title", "agro.angular_components.title", ["numberTitle"], "String", TitleFieldsOrderBy.NUMBER_TITLE),
|
|
69
|
+
this.getFields("type", "agro.angular_components.type", ["titleType.cod", "titleType.desc"], "String", null),
|
|
70
|
+
this.getFields("entryDate", "agro.angular_components.entry", ["issueDate"], "Date", TitleFieldsOrderBy.ISSUE_DATE),
|
|
71
|
+
this.getFields("dueDate", "agro.angular_components.due_date", ["dueDate"], "Date", TitleFieldsOrderBy.DUE_DATE),
|
|
72
|
+
this.getFields("valueOrigin", "agro.angular_components.original_value", ["values.originalValue"], "Money", TitleFieldsOrderBy.ORIGINAL_VALUE),
|
|
73
|
+
this.getFields("valueOpen", "agro.angular_components.open_value", ["values.openValue"], "Money", TitleFieldsOrderBy.OPEN_VALUE),
|
|
74
|
+
this.getFields("valueNet", "agro.angular_components.value_net", ["values.netValue"], "Money", TitleFieldsOrderBy.NET_VALUE),
|
|
75
|
+
this.getFields("valuePaid", "agro.angular_components.value_to_pay", ["valuePaid"], "Money", null),
|
|
76
|
+
];
|
|
77
|
+
this.sidebarFields = [
|
|
78
|
+
this.getFields("company", "agro.angular_components.company", ["company.cod", "company.desc"], "String", null),
|
|
79
|
+
this.getFields("branch", "agro.angular_components.branch", ["branch.cod", "branch.desc"], "String", null),
|
|
80
|
+
this.getFields("producer", "agro.angular_components.producer", ["producer.cod", "producer.desc"], "String", null),
|
|
81
|
+
...this.gridColumns.filter((col) => !["valuePaid", "valueNet"].includes(col.field)),
|
|
82
|
+
this.getFields("valueFees", "agro.angular_components.value_fees", ["values.interestValue"], "Money", null),
|
|
83
|
+
this.getFields("valueFine", "agro.angular_components.value_fine", ["values.fineValue"], "Money", null),
|
|
84
|
+
this.getFields("valueCharge", "agro.angular_components.value_charge", ["values.chargeValue"], "Money", null),
|
|
85
|
+
this.getFields("valueCorrection", "agro.angular_components.value_correction", ["values.monetaryCorrectionValue"], "Money", null),
|
|
86
|
+
this.getFields("valueAdditional", "agro.angular_components.value_additional", ["values.otherAdditionValue"], "Money", null),
|
|
87
|
+
this.getFields("valueDiscount", "agro.angular_components.value_discount", ["values.discountValue"], "Money", null),
|
|
88
|
+
this.getFields("valueOtherDiscount", "agro.angular_components.value_other_discount", ["values.otherDiscountValue"], "Money", null),
|
|
89
|
+
...this.gridColumns.filter((col) => ["valueNet"].includes(col.field)),
|
|
90
|
+
];
|
|
91
|
+
this.updateGrid(this.currentListParams);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Após a renderização da tabela, sincroniza o estado de checkbox/linha editável
|
|
95
|
+
* com o array de títulos selecionados para evitar acesso a referências ainda não criadas.
|
|
96
|
+
*/
|
|
97
|
+
ngAfterViewInit() {
|
|
98
|
+
this.tableInitialized = true;
|
|
99
|
+
this.synchronizeCheckboxAndEditableFieldState();
|
|
100
|
+
}
|
|
101
|
+
ngOnDestroy() {
|
|
102
|
+
this.ngUnsubscribe.next();
|
|
103
|
+
this.ngUnsubscribe.complete();
|
|
104
|
+
}
|
|
105
|
+
getPageSize() {
|
|
106
|
+
return this.currentListParams?.rows ?? 10;
|
|
107
|
+
}
|
|
108
|
+
getRowIndex() {
|
|
109
|
+
return this.currentListParams?.first ?? 0;
|
|
110
|
+
}
|
|
111
|
+
getSortField() {
|
|
112
|
+
const field = this.currentListParams?.sortField ?? undefined;
|
|
113
|
+
return Array.isArray(field) ? field[0] : field;
|
|
114
|
+
}
|
|
115
|
+
getSortOrder() {
|
|
116
|
+
return this.currentListParams?.sortOrder ?? 1;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Faz requisição paginada/ordenada para listar os títulos, monta o formulário
|
|
120
|
+
* reativo para cada linha e trata erros de backend exibindo mensagem ao usuário.
|
|
121
|
+
*
|
|
122
|
+
* @param event parâmetros de paginação, ordenação e filtros vindos do PrimeNG.
|
|
123
|
+
*/
|
|
124
|
+
updateGrid(event) {
|
|
125
|
+
this.componentLoading = true;
|
|
126
|
+
const rows = event.rows ?? 10;
|
|
127
|
+
const first = event.first ?? 0;
|
|
128
|
+
const field = event.sortField ?? undefined;
|
|
129
|
+
const sortOrder = event.sortOrder ?? undefined;
|
|
130
|
+
const page = rows > 0 ? first / rows : 0;
|
|
131
|
+
this.currentListParams = { ...event, rows, first };
|
|
132
|
+
const input = {
|
|
133
|
+
pageRequest: { offset: page, orderBy: this.getRecOrderBy(field, sortOrder), size: rows },
|
|
134
|
+
filter: this.options,
|
|
135
|
+
};
|
|
136
|
+
this.financialService
|
|
137
|
+
.listTitles(input)
|
|
138
|
+
.pipe(takeUntil(this.ngUnsubscribe), catchError((err) => {
|
|
139
|
+
this.componentLoading = false;
|
|
140
|
+
const detailMsg = err?.message || "agro.angular_components.error_loading_accounts_description";
|
|
141
|
+
this.addMessage("warn", "agro.angular_components.error_loading_accounts_title", detailMsg);
|
|
142
|
+
throw err;
|
|
143
|
+
}))
|
|
144
|
+
.subscribe((list) => {
|
|
145
|
+
this.gridData = list.titles || [];
|
|
146
|
+
this.createFormGroupForTitle();
|
|
147
|
+
this.gridTotalRecords = list.totalElements;
|
|
148
|
+
this.componentLoading = false;
|
|
149
|
+
this.synchronizeCheckboxAndEditableFieldState();
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
onSelectionChange(event) {
|
|
153
|
+
this.selected = event;
|
|
154
|
+
this.synchronizeCheckboxAndEditableFieldState();
|
|
155
|
+
this.selectionChange.emit(this.selected);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Quando um item é desmarcado, limpa o `valuePaid` correspondente
|
|
159
|
+
* tanto no modelo da linha quanto no {@link titlesForm}, sem disparar novos eventos.
|
|
160
|
+
*
|
|
161
|
+
* @param event evento de desmarcação emitido pelo PrimeNG.
|
|
162
|
+
*/
|
|
163
|
+
onUnselect(event) {
|
|
164
|
+
const row = this.gridData.find((r) => r.id === event.data.id);
|
|
165
|
+
if (row) {
|
|
166
|
+
row.valuePaid = undefined;
|
|
167
|
+
// atualiza form control correspondente
|
|
168
|
+
const idx = this.gridData.findIndex((g) => g.id === row.id);
|
|
169
|
+
const ctrl = this.titlesForm.at(idx)?.get("valuePaid");
|
|
170
|
+
if (ctrl) {
|
|
171
|
+
ctrl.setValue(null, { emitEvent: false });
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
showDetails(rowData) {
|
|
176
|
+
this.selectedRow = rowData;
|
|
177
|
+
this.showSidebar = true;
|
|
178
|
+
}
|
|
179
|
+
closeDetails() {
|
|
180
|
+
this.showSidebar = false;
|
|
181
|
+
}
|
|
182
|
+
isLastColumn(index, columns) {
|
|
183
|
+
return index === columns.length - 1;
|
|
184
|
+
}
|
|
185
|
+
getStyleColumns(field) {
|
|
186
|
+
let styleClass = {};
|
|
187
|
+
switch (field) {
|
|
188
|
+
case "checkbox":
|
|
189
|
+
styleClass = { width: "50px" };
|
|
190
|
+
break;
|
|
191
|
+
case "title":
|
|
192
|
+
case "dueDate":
|
|
193
|
+
styleClass = { width: "150px" };
|
|
194
|
+
break;
|
|
195
|
+
case "type":
|
|
196
|
+
case "entryDate":
|
|
197
|
+
styleClass = { width: "120px" };
|
|
198
|
+
break;
|
|
199
|
+
default:
|
|
200
|
+
styleClass = { width: "198px" };
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
return styleClass;
|
|
204
|
+
}
|
|
205
|
+
getProp(obj, col) {
|
|
206
|
+
if (!obj || !col?.path) {
|
|
207
|
+
return "-";
|
|
208
|
+
}
|
|
209
|
+
let separator = "";
|
|
210
|
+
let result = "";
|
|
211
|
+
for (const path of col.path) {
|
|
212
|
+
result += separator + AgroObjectUtils.getPropAndFormatValue(obj, path, col.type);
|
|
213
|
+
separator = " - ";
|
|
214
|
+
}
|
|
215
|
+
return result;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Reconstrói o {@link titlesForm} com base na {@link gridData} atual,
|
|
219
|
+
* preservando valores já informados em itens selecionados e registrando listeners de mudança.
|
|
220
|
+
*/
|
|
221
|
+
createFormGroupForTitle() {
|
|
222
|
+
const titlesFormArray = this.form.get("titlesForm");
|
|
223
|
+
titlesFormArray.clear();
|
|
224
|
+
this.gridData.forEach((item) => {
|
|
225
|
+
const selectedItem = this.selected.find((sel) => sel.id === item.id);
|
|
226
|
+
const group = new FormGroup({
|
|
227
|
+
id: new FormControl(item.id ?? null, []),
|
|
228
|
+
valuePaid: new FormControl(selectedItem?.valuePaid ?? null, []),
|
|
229
|
+
});
|
|
230
|
+
this.subscribeToValuePaidChanges(group, item);
|
|
231
|
+
titlesFormArray.push(group);
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Observa mudanças no campo `valuePaid` de uma linha.
|
|
236
|
+
* Atualiza o array {@link selected} quando o título está selecionado,
|
|
237
|
+
* aplica o limite do valor líquido (`netValue`) e evita loops de eventos usando
|
|
238
|
+
* `setValue` com `emitEvent: false`.
|
|
239
|
+
*
|
|
240
|
+
* @param formGroup grupo de formulário associado à linha da tabela.
|
|
241
|
+
* @param item título financeiro correspondente à linha.
|
|
242
|
+
*/
|
|
243
|
+
subscribeToValuePaidChanges(formGroup, item) {
|
|
244
|
+
const valuePaidControl = formGroup.get("valuePaid");
|
|
245
|
+
if (!valuePaidControl) {
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
valuePaidControl.valueChanges.pipe(takeUntil(this.ngUnsubscribe)).subscribe((rawValue) => {
|
|
249
|
+
const valuePaid = this.parseNumberSafe(rawValue);
|
|
250
|
+
const titleId = formGroup.get("id")?.value;
|
|
251
|
+
// atualiza selected se o título estiver selecionado
|
|
252
|
+
const selIndex = this.selected.findIndex((s) => s.id === titleId);
|
|
253
|
+
if (selIndex !== -1) {
|
|
254
|
+
// garante que valuePaid seja numérico ou undefined
|
|
255
|
+
this.selected[selIndex].valuePaid = valuePaid ?? undefined;
|
|
256
|
+
const net = Number(this.selected[selIndex]?.values?.netValue) || 0;
|
|
257
|
+
if (valuePaid !== null && valuePaid > net) {
|
|
258
|
+
this.selected[selIndex].valuePaid = net;
|
|
259
|
+
// Usado para evitar loop infinito de eventos
|
|
260
|
+
valuePaidControl.setValue(net, { emitEvent: false });
|
|
261
|
+
}
|
|
262
|
+
// atualiza flag de erro
|
|
263
|
+
this.selected[selIndex].hasError = valuePaidControl.invalid;
|
|
264
|
+
// emite mudança de seleção
|
|
265
|
+
this.selectionChange.emit(this.selected);
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
// se não estiver selecionado, apenas aplica limite local baseado no item
|
|
269
|
+
const net = Number(item?.values?.netValue) || 0;
|
|
270
|
+
if (valuePaid !== null && valuePaid > net) {
|
|
271
|
+
valuePaidControl.setValue(net, { emitEvent: false });
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
parseNumberSafe(value) {
|
|
277
|
+
if (value === null || value === undefined || value === "") {
|
|
278
|
+
return null;
|
|
279
|
+
}
|
|
280
|
+
if (typeof value === "number") {
|
|
281
|
+
return value;
|
|
282
|
+
}
|
|
283
|
+
if (typeof value === "string") {
|
|
284
|
+
const cleaned = value.replace(/\./g, "").replace(",", ".");
|
|
285
|
+
const n = parseFloat(cleaned);
|
|
286
|
+
return isNaN(n) ? null : n;
|
|
287
|
+
}
|
|
288
|
+
return null;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Inicia o modo de edição na linha da tabela PrimeNG e aplica regras de validação
|
|
292
|
+
* no formulário reativo correspondente àquela linha.
|
|
293
|
+
*
|
|
294
|
+
* @param row objeto de linha recebido da tabela.
|
|
295
|
+
*/
|
|
296
|
+
initRowEdit(row) {
|
|
297
|
+
if (this.table) {
|
|
298
|
+
this.table.initRowEdit(row);
|
|
299
|
+
this.applyValidationToRowEdit(row);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Adiciona validadores dinamicamente ao campo `valuePaid` da linha em edição,
|
|
304
|
+
* marca o controle como sujo e força revalidação imediata para exibir erros na tela.
|
|
305
|
+
*
|
|
306
|
+
* @param row objeto de linha para aplicar validação.
|
|
307
|
+
*/
|
|
308
|
+
applyValidationToRowEdit(row) {
|
|
309
|
+
const rowIndex = this.gridData.findIndex((r) => r.id === row.id);
|
|
310
|
+
const formGroup = this.titlesForm.at(rowIndex);
|
|
311
|
+
if (!formGroup) {
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
const valuePaidControl = formGroup.get("valuePaid");
|
|
315
|
+
valuePaidControl?.setValidators([this.getValidatorsForRowEdit(), Validators.required]);
|
|
316
|
+
valuePaidControl?.markAsDirty();
|
|
317
|
+
valuePaidControl?.updateValueAndValidity();
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Constrói o {@link ValidatorFn} que valida o `valuePaid`:
|
|
321
|
+
* - deve ser maior que zero;
|
|
322
|
+
* - não pode ultrapassar o valor líquido (`netValue`) do título.
|
|
323
|
+
*
|
|
324
|
+
* Retorna os erros consumidos pelo componente `s-control-errors`.
|
|
325
|
+
*/
|
|
326
|
+
getValidatorsForRowEdit() {
|
|
327
|
+
return (control) => {
|
|
328
|
+
const parent = control.parent;
|
|
329
|
+
const titleId = parent?.get("id")?.value;
|
|
330
|
+
const rawValue = control.value;
|
|
331
|
+
const valuePaid = this.parseNumberSafe(rawValue);
|
|
332
|
+
if (valuePaid === null || valuePaid === undefined) {
|
|
333
|
+
return null;
|
|
334
|
+
}
|
|
335
|
+
if (valuePaid <= AGRO_NUMBERS.ZERO) {
|
|
336
|
+
return { lessThanZero: true };
|
|
337
|
+
}
|
|
338
|
+
// procura pelo título no selected ou no gridData (prioriza selected)
|
|
339
|
+
const selectedRow = this.selected.find((sel) => sel.id === titleId) || this.gridData.find((g) => g.id === titleId);
|
|
340
|
+
const netValue = Number(selectedRow?.values?.netValue) || 0;
|
|
341
|
+
if (valuePaid > netValue) {
|
|
342
|
+
return { greatherThanAllowed: true };
|
|
343
|
+
}
|
|
344
|
+
return null;
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
cancelRowEdit(row) {
|
|
348
|
+
if (this.table) {
|
|
349
|
+
this.table.cancelRowEdit(row);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Mantém o estado visual da tabela (checkbox marcado e linha editável) em
|
|
354
|
+
* sincronia com o array de títulos selecionados, inclusive restaurando valores
|
|
355
|
+
* digitados ao recarregar, ordenar ou paginar a grid.
|
|
356
|
+
*/
|
|
357
|
+
synchronizeCheckboxAndEditableFieldState() {
|
|
358
|
+
if (!this.gridData || !this.tableInitialized) {
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
this.gridData.forEach((row, index) => {
|
|
362
|
+
const selectedRow = this.selected.find((sel) => sel.id === row.id);
|
|
363
|
+
const ctrl = this.titlesForm.at(index)?.get("valuePaid");
|
|
364
|
+
if (selectedRow) {
|
|
365
|
+
// Sincroniza o valor pago do item selecionado
|
|
366
|
+
row.valuePaid = selectedRow.valuePaid;
|
|
367
|
+
if (ctrl) {
|
|
368
|
+
ctrl.setValue(selectedRow.valuePaid, { emitEvent: false });
|
|
369
|
+
}
|
|
370
|
+
this.initRowEdit(row);
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
// Cancela a edição se não estiver selecionado
|
|
374
|
+
if (ctrl) {
|
|
375
|
+
ctrl.setValue(null, { emitEvent: false });
|
|
376
|
+
}
|
|
377
|
+
this.cancelRowEdit(row);
|
|
378
|
+
}
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
getFields(field, header, path, type, fieldOrderBy) {
|
|
382
|
+
return { field, path, type, header: this.translate.instant(header), orderBy: fieldOrderBy };
|
|
383
|
+
}
|
|
384
|
+
addMessage(severity, summary, detail, sticky = false, life = 7000) {
|
|
385
|
+
this.messageService.add({
|
|
386
|
+
severity,
|
|
387
|
+
sticky,
|
|
388
|
+
life,
|
|
389
|
+
summary: this.translate.instant(summary),
|
|
390
|
+
detail: this.translate.instant(detail),
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
getRecOrderBy(field, order) {
|
|
394
|
+
if (!field || Array.isArray(field)) {
|
|
395
|
+
return undefined;
|
|
396
|
+
}
|
|
397
|
+
const gridColumnField = this.gridColumns.find((col) => col.field === field);
|
|
398
|
+
if (gridColumnField?.orderBy === null) {
|
|
399
|
+
return undefined;
|
|
400
|
+
}
|
|
401
|
+
return {
|
|
402
|
+
field: gridColumnField?.orderBy ?? TitleFieldsOrderBy.NUMBER_TITLE,
|
|
403
|
+
order: order === -1 ? OrderByType.DESC : OrderByType.ASC,
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FinancialTitleTableComponent, deps: [{ token: i1.LibTranslationService }, { token: i2.AgroFinancialService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
407
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FinancialTitleTableComponent, selector: "s-financial-title-table", inputs: { options: "options", selected: "selected" }, outputs: { selectionChange: "selectionChange" }, viewQueries: [{ propertyName: "table", first: true, predicate: ["TitleTable"], descendants: true }], ngImport: i0, template: "<ng-container *sLoadingState=\"componentLoading\">\r\n <div [hidden]=\"gridData.length > 0\">\r\n <s-empty-state\r\n iconClass=\"fa fa-inbox\"\r\n title=\"{{ 'agro.angular_components.no_accounts_found_title' | libTranslate }}\"\r\n [showPrimaryAction]=\"false\"\r\n description=\"{{ 'agro.angular_components.no_accounts_found_description' | libTranslate }}\"\r\n ></s-empty-state>\r\n </div>\r\n <p-table\r\n #TitleTable\r\n [hidden]=\"gridData.length === 0\"\r\n [value]=\"gridData\"\r\n [columns]=\"gridColumns\"\r\n dataKey=\"id\"\r\n [lazy]=\"true\"\r\n [paginator]=\"true\"\r\n [totalRecords]=\"gridTotalRecords\"\r\n [sortField]=\"getSortField()\"\r\n [sortOrder]=\"getSortOrder()\"\r\n [first]=\"getRowIndex()\"\r\n [rows]=\"getPageSize()\"\r\n [lazyLoadOnInit]=\"false\"\r\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n (onLazyLoad)=\"updateGrid($event)\"\r\n [(selection)]=\"selected\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n (onRowUnselect)=\"onUnselect($event)\"\r\n sortMode=\"single\"\r\n [selectionMode]=\"'multiple'\"\r\n editMode=\"row\"\r\n [scrollable]=\"true\"\r\n frozenWidth=\"160px\"\r\n >\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th class=\"table-checkbox-header\" scope=\"col\" [ngStyle]=\"getStyleColumns('checkbox')\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <ng-container *ngFor=\"let col of columns; let i = index\">\r\n <ng-container *ngIf=\"col.orderBy; else notSortable\">\r\n <th [pSortableColumn]=\"col.field\" [scope]=\"'col'\" [ngStyle]=\"getStyleColumns(col.field)\">\r\n {{ col.header }}\r\n <p-sortIcon [field]=\"col.field\"></p-sortIcon>\r\n </th>\r\n </ng-container>\r\n <ng-template #notSortable>\r\n <th [scope]=\"'col'\" [ngStyle]=\"getStyleColumns(col.field)\">\r\n {{ col.header }}\r\n </th>\r\n </ng-template>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"frozenheader\">\r\n <tr>\r\n <th scope=\"col\" pFrozenColumn>\r\n {{ 'agro.angular_components.details' | libTranslate }}\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowData\r\n let-columns=\"columns\"\r\n let-rowIndex=\"rowIndex\"\r\n let-editing=\"editing\"\r\n let-ri=\"rowIndex\"\r\n >\r\n <tr [pEditableRow]=\"rowData\" [formGroup]=\"$any(titlesForm.at(rowIndex))\">\r\n <td class=\"table-checkbox-header\" [ngStyle]=\"getStyleColumns('checkbox')\">\r\n <p-tableCheckbox [value]=\"rowData\"></p-tableCheckbox>\r\n </td>\r\n <td *ngFor=\"let col of columns; let i = index\" [ngStyle]=\"getStyleColumns(col.field)\">\r\n <p-cellEditor>\r\n <ng-template pTemplate=\"input\">\r\n <ng-container [ngSwitch]=\"col.field\">\r\n <ng-container *ngSwitchCase=\"'valuePaid'\">\r\n <input\r\n pInputText\r\n sNumberInput\r\n class=\"w-full\"\r\n id=\"valuePaid-input-{{ rowData.id || rowIndex }}\"\r\n decimalSeparator=\",\"\r\n thousandsSeparator=\".\"\r\n formControlName=\"valuePaid\"\r\n type=\"text\"\r\n [scale]=\"2\"\r\n [allowNegative]=\"false\"\r\n [attr.aria-label]=\"'agro.angular_components.value_paid' | libTranslate\"\r\n />\r\n <br />\r\n <s-control-errors\r\n [control]=\"$any(titlesForm.at(rowIndex)).get('valuePaid')\"\r\n [errorMessages]=\"errorMessage\"\r\n >\r\n </s-control-errors>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ getProp(rowData, col) }}\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template pTemplate=\"output\">\r\n <ng-container [ngSwitch]=\"col.field\">\r\n <ng-container *ngSwitchCase=\"'valuePaid'\">\r\n {{ rowData['valuePaid'] || 0 | currency: 'BRL':'symbol':'1.2-2':'pt-BR' }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ getProp(rowData, col) }}\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </p-cellEditor>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"frozenbody\" let-rowData let-columns>\r\n <tr [pEditableRow]=\"rowData\">\r\n <td pFrozenColumn>\r\n <s-button\r\n id=\"details-{{ rowData.id }}\"\r\n (click)=\"showDetails(rowData)\"\r\n (keydown.enter)=\"showDetails(rowData)\"\r\n label=\"{{ 'agro.angular_components.details' | libTranslate }}\"\r\n [priority]=\"'default'\"\r\n [disabled]=\"false\"\r\n [auxiliary]=\"true\"\r\n [size]=\"'small'\"\r\n iconClass=\"fa fa-rocket\"\r\n ></s-button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n</ng-container>\r\n<s-sidebar\r\n [(visible)]=\"showSidebar\"\r\n position=\"right\"\r\n [header]=\"('agro.angular_components.account_details' | libTranslate) + ' ' + (selectedRow?.numberTitle || '')\"\r\n>\r\n <div class=\"ui-fluid\">\r\n <div class=\"ui-g\">\r\n <ng-container *ngFor=\"let field of sidebarFields\">\r\n <div class=\"ui-g-4\">\r\n <span>\r\n <strong>{{ field.header }}</strong>\r\n </span>\r\n <p>{{ getProp(selectedRow, field) || '-' }}</p>\r\n </div>\r\n </ng-container>\r\n <ng-template #noValue>-</ng-template>\r\n <div class=\"ui-g-4\">\r\n <span>\r\n <strong>{{ 'agro.angular_components.status_label' | libTranslate }}</strong>\r\n </span>\r\n <p>\r\n <ng-container [ngSwitch]=\"selectedRow?.status\">\r\n <span *ngSwitchCase=\"'OPEN'\">\r\n <s-badge\r\n [color]=\"'yellow'\"\r\n text=\"{{ 'agro.angular_components.status_open' | libTranslate }}\"\r\n [selectable]=\"false\"\r\n ></s-badge>\r\n </span>\r\n <span *ngSwitchCase=\"'PAID'\">\r\n <s-badge\r\n [color]=\"'green'\"\r\n text=\"{{ 'agro.angular_components.status_paid' | libTranslate }}\"\r\n [selectable]=\"false\"\r\n ></s-badge>\r\n </span>\r\n </ng-container>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n <s-footer>\r\n <s-button label=\"{{ 'agro.angular_components.close' | libTranslate }}\" (onClick)=\"closeDetails()\"> </s-button>\r\n </s-footer>\r\n</s-sidebar>\r\n", styles: [".error-message{color:#c13018;margin-top:5px;font-size:12px}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i5.EmptyStateComponent, selector: "s-empty-state", inputs: ["id", "title", "iconClass", "description", "showPrimaryAction", "showSecondaryAction", "primaryActionLabel", "secondaryActionLabel", "primaryModel"], outputs: ["primaryAction", "secondaryAction"] }, { kind: "component", type: i6.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "virtualRowHeight", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i6.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i6.FrozenColumn, selector: "[pFrozenColumn]", inputs: ["frozen", "alignFrozen"] }, { kind: "component", type: i6.CellEditor, selector: "p-cellEditor" }, { kind: "component", type: i6.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i6.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i6.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "directive", type: i6.EditableRow, selector: "[pEditableRow]", inputs: ["pEditableRow", "pEditableRowDisabled"] }, { kind: "component", type: i7.BadgeComponent, selector: "s-badge", inputs: ["type", "color", "title", "text", "selectable", "iconClass", "iconPosition", "infoSign", "enableTruncateText"], outputs: ["selected"] }, { kind: "component", type: i8.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor"], outputs: ["clicked"] }, { kind: "component", type: i9.SidebarComponent, selector: "s-sidebar", inputs: ["visible", "closable", "dismissible", "closeOnEscape", "header", "largeSized", "cache", "registerConfirmClose"], outputs: ["visibleChange"] }, { kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i10.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i11.LoadingStateDirective, selector: "[sLoadingState]", inputs: ["sLoadingState"] }, { kind: "directive", type: i12.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }, { kind: "component", type: i13.FooterComponent, selector: "s-footer" }, { kind: "directive", type: i14.NumberInputDirective, selector: "input[sNumberInput]", inputs: ["precision", "scale", "decimalSeparator", "thousandsSeparator", "alignTo", "allowNegative", "placeholder"], outputs: ["pasteRejected"] }, { kind: "component", type: i15.ControlErrorsComponent, selector: "s-control-errors", inputs: ["id", "control", "errorMessages", "form"] }, { kind: "pipe", type: i4.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i16.LibTranslatePipe, name: "libTranslate" }] });
|
|
408
|
+
}
|
|
409
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FinancialTitleTableComponent, decorators: [{
|
|
410
|
+
type: Component,
|
|
411
|
+
args: [{ selector: "s-financial-title-table", template: "<ng-container *sLoadingState=\"componentLoading\">\r\n <div [hidden]=\"gridData.length > 0\">\r\n <s-empty-state\r\n iconClass=\"fa fa-inbox\"\r\n title=\"{{ 'agro.angular_components.no_accounts_found_title' | libTranslate }}\"\r\n [showPrimaryAction]=\"false\"\r\n description=\"{{ 'agro.angular_components.no_accounts_found_description' | libTranslate }}\"\r\n ></s-empty-state>\r\n </div>\r\n <p-table\r\n #TitleTable\r\n [hidden]=\"gridData.length === 0\"\r\n [value]=\"gridData\"\r\n [columns]=\"gridColumns\"\r\n dataKey=\"id\"\r\n [lazy]=\"true\"\r\n [paginator]=\"true\"\r\n [totalRecords]=\"gridTotalRecords\"\r\n [sortField]=\"getSortField()\"\r\n [sortOrder]=\"getSortOrder()\"\r\n [first]=\"getRowIndex()\"\r\n [rows]=\"getPageSize()\"\r\n [lazyLoadOnInit]=\"false\"\r\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n (onLazyLoad)=\"updateGrid($event)\"\r\n [(selection)]=\"selected\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n (onRowUnselect)=\"onUnselect($event)\"\r\n sortMode=\"single\"\r\n [selectionMode]=\"'multiple'\"\r\n editMode=\"row\"\r\n [scrollable]=\"true\"\r\n frozenWidth=\"160px\"\r\n >\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th class=\"table-checkbox-header\" scope=\"col\" [ngStyle]=\"getStyleColumns('checkbox')\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <ng-container *ngFor=\"let col of columns; let i = index\">\r\n <ng-container *ngIf=\"col.orderBy; else notSortable\">\r\n <th [pSortableColumn]=\"col.field\" [scope]=\"'col'\" [ngStyle]=\"getStyleColumns(col.field)\">\r\n {{ col.header }}\r\n <p-sortIcon [field]=\"col.field\"></p-sortIcon>\r\n </th>\r\n </ng-container>\r\n <ng-template #notSortable>\r\n <th [scope]=\"'col'\" [ngStyle]=\"getStyleColumns(col.field)\">\r\n {{ col.header }}\r\n </th>\r\n </ng-template>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"frozenheader\">\r\n <tr>\r\n <th scope=\"col\" pFrozenColumn>\r\n {{ 'agro.angular_components.details' | libTranslate }}\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowData\r\n let-columns=\"columns\"\r\n let-rowIndex=\"rowIndex\"\r\n let-editing=\"editing\"\r\n let-ri=\"rowIndex\"\r\n >\r\n <tr [pEditableRow]=\"rowData\" [formGroup]=\"$any(titlesForm.at(rowIndex))\">\r\n <td class=\"table-checkbox-header\" [ngStyle]=\"getStyleColumns('checkbox')\">\r\n <p-tableCheckbox [value]=\"rowData\"></p-tableCheckbox>\r\n </td>\r\n <td *ngFor=\"let col of columns; let i = index\" [ngStyle]=\"getStyleColumns(col.field)\">\r\n <p-cellEditor>\r\n <ng-template pTemplate=\"input\">\r\n <ng-container [ngSwitch]=\"col.field\">\r\n <ng-container *ngSwitchCase=\"'valuePaid'\">\r\n <input\r\n pInputText\r\n sNumberInput\r\n class=\"w-full\"\r\n id=\"valuePaid-input-{{ rowData.id || rowIndex }}\"\r\n decimalSeparator=\",\"\r\n thousandsSeparator=\".\"\r\n formControlName=\"valuePaid\"\r\n type=\"text\"\r\n [scale]=\"2\"\r\n [allowNegative]=\"false\"\r\n [attr.aria-label]=\"'agro.angular_components.value_paid' | libTranslate\"\r\n />\r\n <br />\r\n <s-control-errors\r\n [control]=\"$any(titlesForm.at(rowIndex)).get('valuePaid')\"\r\n [errorMessages]=\"errorMessage\"\r\n >\r\n </s-control-errors>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ getProp(rowData, col) }}\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template pTemplate=\"output\">\r\n <ng-container [ngSwitch]=\"col.field\">\r\n <ng-container *ngSwitchCase=\"'valuePaid'\">\r\n {{ rowData['valuePaid'] || 0 | currency: 'BRL':'symbol':'1.2-2':'pt-BR' }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ getProp(rowData, col) }}\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </p-cellEditor>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"frozenbody\" let-rowData let-columns>\r\n <tr [pEditableRow]=\"rowData\">\r\n <td pFrozenColumn>\r\n <s-button\r\n id=\"details-{{ rowData.id }}\"\r\n (click)=\"showDetails(rowData)\"\r\n (keydown.enter)=\"showDetails(rowData)\"\r\n label=\"{{ 'agro.angular_components.details' | libTranslate }}\"\r\n [priority]=\"'default'\"\r\n [disabled]=\"false\"\r\n [auxiliary]=\"true\"\r\n [size]=\"'small'\"\r\n iconClass=\"fa fa-rocket\"\r\n ></s-button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n</ng-container>\r\n<s-sidebar\r\n [(visible)]=\"showSidebar\"\r\n position=\"right\"\r\n [header]=\"('agro.angular_components.account_details' | libTranslate) + ' ' + (selectedRow?.numberTitle || '')\"\r\n>\r\n <div class=\"ui-fluid\">\r\n <div class=\"ui-g\">\r\n <ng-container *ngFor=\"let field of sidebarFields\">\r\n <div class=\"ui-g-4\">\r\n <span>\r\n <strong>{{ field.header }}</strong>\r\n </span>\r\n <p>{{ getProp(selectedRow, field) || '-' }}</p>\r\n </div>\r\n </ng-container>\r\n <ng-template #noValue>-</ng-template>\r\n <div class=\"ui-g-4\">\r\n <span>\r\n <strong>{{ 'agro.angular_components.status_label' | libTranslate }}</strong>\r\n </span>\r\n <p>\r\n <ng-container [ngSwitch]=\"selectedRow?.status\">\r\n <span *ngSwitchCase=\"'OPEN'\">\r\n <s-badge\r\n [color]=\"'yellow'\"\r\n text=\"{{ 'agro.angular_components.status_open' | libTranslate }}\"\r\n [selectable]=\"false\"\r\n ></s-badge>\r\n </span>\r\n <span *ngSwitchCase=\"'PAID'\">\r\n <s-badge\r\n [color]=\"'green'\"\r\n text=\"{{ 'agro.angular_components.status_paid' | libTranslate }}\"\r\n [selectable]=\"false\"\r\n ></s-badge>\r\n </span>\r\n </ng-container>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n <s-footer>\r\n <s-button label=\"{{ 'agro.angular_components.close' | libTranslate }}\" (onClick)=\"closeDetails()\"> </s-button>\r\n </s-footer>\r\n</s-sidebar>\r\n", styles: [".error-message{color:#c13018;margin-top:5px;font-size:12px}\n"] }]
|
|
412
|
+
}], ctorParameters: () => [{ type: i1.LibTranslationService }, { type: i2.AgroFinancialService }, { type: i3.MessageService }], propDecorators: { table: [{
|
|
413
|
+
type: ViewChild,
|
|
414
|
+
args: ["TitleTable"]
|
|
415
|
+
}], options: [{
|
|
416
|
+
type: Input
|
|
417
|
+
}], selected: [{
|
|
418
|
+
type: Input
|
|
419
|
+
}], selectionChange: [{
|
|
420
|
+
type: Output
|
|
421
|
+
}] } });
|
|
422
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYW5jaWFsLXRpdGxlLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9jb21wb25lbnRzL2ZpbmFuY2lhbC10aXRsZS10YWJsZS9maW5hbmNpYWwtdGl0bGUtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvbXBvbmVudHMvZmluYW5jaWFsLXRpdGxlLXRhYmxlL2ZpbmFuY2lhbC10aXRsZS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBbUIsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0csT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUkzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCN0UsTUFBTSxPQUFPLDRCQUE0QjtJQWtDaEI7SUFDQTtJQUNBO0lBbkNJLEtBQUssQ0FBUztJQUU5QixPQUFPLENBQXlCO0lBQ2hDLFFBQVEsR0FBNEIsRUFBRSxDQUFDO0lBQ3RDLGVBQWUsR0FBRyxJQUFJLFlBQVks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QUFDO1FBQzVFLElBQUksZUFBZSxFQUFFLE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNwQyxPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO1FBQ0QsT0FBTztZQUNILEtBQUssRUFBRSxlQUFlLEVBQUUsT0FBTyxJQUFJLGtCQUFrQixDQUFDLFlBQVk7WUFDbEUsS0FBSyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUc7U0FDM0QsQ0FBQztJQUNOLENBQUM7d0dBbGRRLDRCQUE0Qjs0RkFBNUIsNEJBQTRCLDJRQ2xDekMsa3NSQXFMQTs7NEZEbkphLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDSSx5QkFBeUI7MEpBS1YsS0FBSztzQkFBN0IsU0FBUzt1QkFBQyxZQUFZO2dCQUVkLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWdpc3RlckxvY2FsZURhdGEgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCBsb2NhbGVQdCBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvcHRcIjtcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwicHJpbWVuZy9hcGlcIjtcclxuaW1wb3J0IHsgVGFibGUsIFRhYmxlTGF6eUxvYWRFdmVudCB9IGZyb20gXCJwcmltZW5nL3RhYmxlXCI7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBBZ3JvT2JqZWN0VXRpbHMgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2Fncm8tb2JqZWN0LXV0aWxzLmNsYXNzXCI7XHJcbmltcG9ydCB7IEFHUk9fTlVNQkVSUyB9IGZyb20gXCIuLi8uLi9lbnVtc1wiO1xyXG5pbXBvcnQgeyBMaWJUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvbGliLXRyYW5zbGF0aW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRmluYW5jaWFsVGl0bGVPcHRpb25zIH0gZnJvbSBcIi4vZmluYW5jaWFsLXRpdGxlLXRhYmxlLW9wdGlvbnMuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7IEFncm9GaW5hbmNpYWxTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvZmluYW5jaWFsL2Fncm8tZmluYW5jaWFsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgT3JkZXJCeVR5cGUsIFRpdGxlRmllbGRzT3JkZXJCeSB9IGZyb20gXCIuL3NlcnZpY2VzL2ZpbmFuY2lhbC9lbnVtc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgRmluYW5jaWFsUXVlcnlEYXRhUmVzcG9uc2UsXHJcbiAgICBGaW5hbmNpYWxUaXRsZUxpc3REdG8sXHJcbiAgICBSZWNPcmRlckJ5LFxyXG4gICAgUmVjb3JkVGl0bGVEdG8sXHJcbiAgICBSZXF1ZXN0TGlzdFRpdGxlc0lucHV0LFxyXG59IGZyb20gXCIuL3NlcnZpY2VzL2ZpbmFuY2lhbC9pbnRlZmFjZXNcIjtcclxuXHJcbmludGVyZmFjZSBDb2x1bW5Db25maWcge1xyXG4gICAgZmllbGQ6IHN0cmluZztcclxuICAgIGhlYWRlcjogc3RyaW5nO1xyXG4gICAgcGF0aDogc3RyaW5nW107XHJcbiAgICB0eXBlOiBzdHJpbmc7XHJcbiAgICBvcmRlckJ5OiBUaXRsZUZpZWxkc09yZGVyQnkgfCBudWxsO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcInMtZmluYW5jaWFsLXRpdGxlLXRhYmxlXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2ZpbmFuY2lhbC10aXRsZS10YWJsZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL2ZpbmFuY2lhbC10aXRsZS10YWJsZS5jb21wb25lbnQuY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmluYW5jaWFsVGl0bGVUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBWaWV3Q2hpbGQoXCJUaXRsZVRhYmxlXCIpIHRhYmxlITogVGFibGU7XHJcblxyXG4gICAgQElucHV0KCkgb3B0aW9ucyE6IEZpbmFuY2lhbFRpdGxlT3B0aW9ucztcclxuICAgIEBJbnB1dCgpIHNlbGVjdGVkOiBGaW5hbmNpYWxUaXRsZUxpc3REdG9bXSA9IFtdO1xyXG4gICAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcblxyXG4gICAgZ3JpZERhdGE6IEZpbmFuY2lhbFRpdGxlTGlzdER0b1tdID0gW107XHJcbiAgICBncmlkVG90YWxSZWNvcmRzID0gMDtcclxuXHJcbiAgICBlcnJvck1lc3NhZ2U6IGFueSA9IHt9O1xyXG5cclxuICAgIHRhYmxlSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICAgIHNob3dTaWRlYmFyID0gZmFsc2U7XHJcbiAgICBzZWxlY3RlZFJvdzogUmVjb3JkVGl0bGVEdG8gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBncmlkQ29sdW1uczogQ29sdW1uQ29uZmlnW10gPSBbXTtcclxuICAgIHNpZGViYXJGaWVsZHM6IGFueVtdID0gW107XHJcblxyXG4gICAgY29tcG9uZW50TG9hZGluZyA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgICAgdGl0bGVzRm9ybTogbmV3IEZvcm1BcnJheShbXSwgW10pLFxyXG4gICAgfSk7XHJcblxyXG4gICAgcHJpdmF0ZSBjdXJyZW50TGlzdFBhcmFtczogVGFibGVMYXp5TG9hZEV2ZW50ID0geyBmaXJzdDogMCwgcm93czogMTAsIHNvcnRGaWVsZDogbnVsbCwgc29ydE9yZGVyOiBudWxsLCBmaWx0ZXJzOiB7fSB9O1xyXG4gICAgcmVhZG9ubHkgbmdVbnN1YnNjcmliZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBnZXQgdGl0bGVzRm9ybSgpOiBGb3JtQXJyYXkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KFwidGl0bGVzRm9ybVwiKSBhcyBGb3JtQXJyYXk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IExpYlRyYW5zbGF0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZpbmFuY2lhbFNlcnZpY2U6IEFncm9GaW5hbmNpYWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlUHQpO1xyXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0ge1xyXG4gICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX3JlcXVpcmVkXCIpLFxyXG4gICAgICAgICAgICBsZXNzVGhhblplcm86IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5lcnJvcl9sZXNzX29yX2VxdWFsX3plcm9cIiksXHJcbiAgICAgICAgICAgIGdyZWF0aGVyVGhhbkFsbG93ZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5lcnJvcl9ncmVhdGVyX3RoYW5fYWxsb3dlZFwiKSxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pY2lhbGl6YSBjb2x1bmFzIGRhIHRhYmVsYSBlIGNhbXBvcyBleGliaWRvcyBubyBzaWRlYmFyLFxyXG4gICAgICogZGVwb2lzIGRpc3BhcmEgYSBwcmltZWlyYSBidXNjYSBkZSB0w610dWxvcyBjb20gb3MgZmlsdHJvcyBpbmZvcm1hZG9zIGVtIHtAbGluayBvcHRpb25zfS5cclxuICAgICAqL1xyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5ncmlkQ29sdW1ucyA9IFtcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ0aXRsZVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnRpdGxlXCIsIFtcIm51bWJlclRpdGxlXCJdLCBcIlN0cmluZ1wiLCBUaXRsZUZpZWxkc09yZGVyQnkuTlVNQkVSX1RJVExFKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ0eXBlXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudHlwZVwiLCBbXCJ0aXRsZVR5cGUuY29kXCIsIFwidGl0bGVUeXBlLmRlc2NcIl0sIFwiU3RyaW5nXCIsIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcImVudHJ5RGF0ZVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVudHJ5XCIsIFtcImlzc3VlRGF0ZVwiXSwgXCJEYXRlXCIsIFRpdGxlRmllbGRzT3JkZXJCeS5JU1NVRV9EQVRFKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJkdWVEYXRlXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZHVlX2RhdGVcIiwgW1wiZHVlRGF0ZVwiXSwgXCJEYXRlXCIsIFRpdGxlRmllbGRzT3JkZXJCeS5EVUVfREFURSksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFxyXG4gICAgICAgICAgICAgICAgXCJ2YWx1ZU9yaWdpblwiLFxyXG4gICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5vcmlnaW5hbF92YWx1ZVwiLFxyXG4gICAgICAgICAgICAgICAgW1widmFsdWVzLm9yaWdpbmFsVmFsdWVcIl0sXHJcbiAgICAgICAgICAgICAgICBcIk1vbmV5XCIsXHJcbiAgICAgICAgICAgICAgICBUaXRsZUZpZWxkc09yZGVyQnkuT1JJR0lOQUxfVkFMVUVcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXHJcbiAgICAgICAgICAgICAgICBcInZhbHVlT3BlblwiLFxyXG4gICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5vcGVuX3ZhbHVlXCIsXHJcbiAgICAgICAgICAgICAgICBbXCJ2YWx1ZXMub3BlblZhbHVlXCJdLFxyXG4gICAgICAgICAgICAgICAgXCJNb25leVwiLFxyXG4gICAgICAgICAgICAgICAgVGl0bGVGaWVsZHNPcmRlckJ5Lk9QRU5fVkFMVUVcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXHJcbiAgICAgICAgICAgICAgICBcInZhbHVlTmV0XCIsXHJcbiAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX25ldFwiLFxyXG4gICAgICAgICAgICAgICAgW1widmFsdWVzLm5ldFZhbHVlXCJdLFxyXG4gICAgICAgICAgICAgICAgXCJNb25leVwiLFxyXG4gICAgICAgICAgICAgICAgVGl0bGVGaWVsZHNPcmRlckJ5Lk5FVF9WQUxVRVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInZhbHVlUGFpZFwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX3RvX3BheVwiLCBbXCJ2YWx1ZVBhaWRcIl0sIFwiTW9uZXlcIiwgbnVsbCksXHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLnNpZGViYXJGaWVsZHMgPSBbXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwiY29tcGFueVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmNvbXBhbnlcIiwgW1wiY29tcGFueS5jb2RcIiwgXCJjb21wYW55LmRlc2NcIl0sIFwiU3RyaW5nXCIsIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcImJyYW5jaFwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmJyYW5jaFwiLCBbXCJicmFuY2guY29kXCIsIFwiYnJhbmNoLmRlc2NcIl0sIFwiU3RyaW5nXCIsIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInByb2R1Y2VyXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMucHJvZHVjZXJcIiwgW1wicHJvZHVjZXIuY29kXCIsIFwicHJvZHVjZXIuZGVzY1wiXSwgXCJTdHJpbmdcIiwgbnVsbCksXHJcbiAgICAgICAgICAgIC4uLnRoaXMuZ3JpZENvbHVtbnMuZmlsdGVyKChjb2wpID0+ICFbXCJ2YWx1ZVBhaWRcIiwgXCJ2YWx1ZU5ldFwiXS5pbmNsdWRlcyhjb2wuZmllbGQpKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ2YWx1ZUZlZXNcIiwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy52YWx1ZV9mZWVzXCIsIFtcInZhbHVlcy5pbnRlcmVzdFZhbHVlXCJdLCBcIk1vbmV5XCIsIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInZhbHVlRmluZVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX2ZpbmVcIiwgW1widmFsdWVzLmZpbmVWYWx1ZVwiXSwgXCJNb25leVwiLCBudWxsKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ2YWx1ZUNoYXJnZVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX2NoYXJnZVwiLCBbXCJ2YWx1ZXMuY2hhcmdlVmFsdWVcIl0sIFwiTW9uZXlcIiwgbnVsbCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFxyXG4gICAgICAgICAgICAgICAgXCJ2YWx1ZUNvcnJlY3Rpb25cIixcclxuICAgICAgICAgICAgICAgIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfY29ycmVjdGlvblwiLFxyXG4gICAgICAgICAgICAgICAgW1widmFsdWVzLm1vbmV0YXJ5Q29ycmVjdGlvblZhbHVlXCJdLFxyXG4gICAgICAgICAgICAgICAgXCJNb25leVwiLFxyXG4gICAgICAgICAgICAgICAgbnVsbFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcclxuICAgICAgICAgICAgICAgIFwidmFsdWVBZGRpdGlvbmFsXCIsXHJcbiAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX2FkZGl0aW9uYWxcIixcclxuICAgICAgICAgICAgICAgIFtcInZhbHVlcy5vdGhlckFkZGl0aW9uVmFsdWVcIl0sXHJcbiAgICAgICAgICAgICAgICBcIk1vbmV5XCIsXHJcbiAgICAgICAgICAgICAgICBudWxsXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwidmFsdWVEaXNjb3VudFwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX2Rpc2NvdW50XCIsIFtcInZhbHVlcy5kaXNjb3VudFZhbHVlXCJdLCBcIk1vbmV5XCIsIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcclxuICAgICAgICAgICAgICAgIFwidmFsdWVPdGhlckRpc2NvdW50XCIsXHJcbiAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX290aGVyX2Rpc2NvdW50XCIsXHJcbiAgICAgICAgICAgICAgICBbXCJ2YWx1ZXMub3RoZXJEaXNjb3VudFZhbHVlXCJdLFxyXG4gICAgICAgICAgICAgICAgXCJNb25leVwiLFxyXG4gICAgICAgICAgICAgICAgbnVsbFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAuLi50aGlzLmdyaWRDb2x1bW5zLmZpbHRlcigoY29sKSA9PiBbXCJ2YWx1ZU5ldFwiXS5pbmNsdWRlcyhjb2wuZmllbGQpKSxcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMudXBkYXRlR3JpZCh0aGlzLmN1cnJlbnRMaXN0UGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFww7NzIGEgcmVuZGVyaXphw6fDo28gZGEgdGFiZWxhLCBzaW5jcm9uaXphIG8gZXN0YWRvIGRlIGNoZWNrYm94L2xpbmhhIGVkaXTDoXZlbFxyXG4gICAgICogY29tIG8gYXJyYXkgZGUgdMOtdHVsb3Mgc2VsZWNpb25hZG9zIHBhcmEgZXZpdGFyIGFjZXNzbyBhIHJlZmVyw6puY2lhcyBhaW5kYSBuw6NvIGNyaWFkYXMuXHJcbiAgICAgKi9cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLnRhYmxlSW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc3luY2hyb25pemVDaGVja2JveEFuZEVkaXRhYmxlRmllbGRTdGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UGFnZVNpemUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudExpc3RQYXJhbXM/LnJvd3MgPz8gMTA7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Um93SW5kZXgoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudExpc3RQYXJhbXM/LmZpcnN0ID8/IDA7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U29ydEZpZWxkKCkge1xyXG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5jdXJyZW50TGlzdFBhcmFtcz8uc29ydEZpZWxkID8/IHVuZGVmaW5lZDtcclxuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShmaWVsZCkgPyBmaWVsZFswXSA6IGZpZWxkO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNvcnRPcmRlcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TGlzdFBhcmFtcz8uc29ydE9yZGVyID8/IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGYXogcmVxdWlzacOnw6NvIHBhZ2luYWRhL29yZGVuYWRhIHBhcmEgbGlzdGFyIG9zIHTDrXR1bG9zLCBtb250YSBvIGZvcm11bMOhcmlvXHJcbiAgICAgKiByZWF0aXZvIHBhcmEgY2FkYSBsaW5oYSBlIHRyYXRhIGVycm9zIGRlIGJhY2tlbmQgZXhpYmluZG8gbWVuc2FnZW0gYW8gdXN1w6FyaW8uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGV2ZW50IHBhcsOibWV0cm9zIGRlIHBhZ2luYcOnw6NvLCBvcmRlbmHDp8OjbyBlIGZpbHRyb3MgdmluZG9zIGRvIFByaW1lTkcuXHJcbiAgICAgKi9cclxuICAgIHVwZGF0ZUdyaWQoZXZlbnQ6IFRhYmxlTGF6eUxvYWRFdmVudCkge1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50TG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgY29uc3Qgcm93cyA9IGV2ZW50LnJvd3MgPz8gMTA7XHJcbiAgICAgICAgY29uc3QgZmlyc3QgPSBldmVudC5maXJzdCA/PyAwO1xyXG4gICAgICAgIGNvbnN0IGZpZWxkID0gZXZlbnQuc29ydEZpZWxkID8/IHVuZGVmaW5lZDtcclxuICAgICAgICBjb25zdCBzb3J0T3JkZXIgPSBldmVudC5zb3J0T3JkZXIgPz8gdW5kZWZpbmVkO1xyXG4gICAgICAgIGNvbnN0IHBhZ2UgPSByb3dzID4gMCA/IGZpcnN0IC8gcm93cyA6IDA7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TGlzdFBhcmFtcyA9IHsgLi4uZXZlbnQsIHJvd3MsIGZpcnN0IH07XHJcblxyXG4gICAgICAgIGNvbnN0IGlucHV0OiBSZXF1ZXN0TGlzdFRpdGxlc0lucHV0ID0ge1xyXG4gICAgICAgICAgICBwYWdlUmVxdWVzdDogeyBvZmZzZXQ6IHBhZ2UsIG9yZGVyQnk6IHRoaXMuZ2V0UmVjT3JkZXJCeShmaWVsZCwgc29ydE9yZGVyKSwgc2l6ZTogcm93cyB9LFxyXG4gICAgICAgICAgICBmaWx0ZXI6IHRoaXMub3B0aW9ucyxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmZpbmFuY2lhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmxpc3RUaXRsZXMoaW5wdXQpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRldGFpbE1zZyA9IGVycj8ubWVzc2FnZSB8fCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX2xvYWRpbmdfYWNjb3VudHNfZGVzY3JpcHRpb25cIjtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwid2FyblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX2xvYWRpbmdfYWNjb3VudHNfdGl0bGVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsTXNnXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGxpc3Q6IEZpbmFuY2lhbFF1ZXJ5RGF0YVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWREYXRhID0gbGlzdC50aXRsZXMgfHwgW107XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXBGb3JUaXRsZSgpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFRvdGFsUmVjb3JkcyA9IGxpc3QudG90YWxFbGVtZW50cztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZUNoZWNrYm94QW5kRWRpdGFibGVGaWVsZFN0YXRlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkID0gZXZlbnQ7XHJcbiAgICAgICAgdGhpcy5zeW5jaHJvbml6ZUNoZWNrYm94QW5kRWRpdGFibGVGaWVsZFN0YXRlKCk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFF1YW5kbyB1bSBpdGVtIMOpIGRlc21hcmNhZG8sIGxpbXBhIG8gYHZhbHVlUGFpZGAgY29ycmVzcG9uZGVudGVcclxuICAgICAqIHRhbnRvIG5vIG1vZGVsbyBkYSBsaW5oYSBxdWFudG8gbm8ge0BsaW5rIHRpdGxlc0Zvcm19LCBzZW0gZGlzcGFyYXIgbm92b3MgZXZlbnRvcy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgZXZlbnRvIGRlIGRlc21hcmNhw6fDo28gZW1pdGlkbyBwZWxvIFByaW1lTkcuXHJcbiAgICAgKi9cclxuICAgIG9uVW5zZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuZ3JpZERhdGEuZmluZCgocikgPT4gci5pZCA9PT0gZXZlbnQuZGF0YS5pZCk7XHJcbiAgICAgICAgaWYgKHJvdykge1xyXG4gICAgICAgICAgICByb3cudmFsdWVQYWlkID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAvLyBhdHVhbGl6YSBmb3JtIGNvbnRyb2wgY29ycmVzcG9uZGVudGVcclxuICAgICAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5ncmlkRGF0YS5maW5kSW5kZXgoKGcpID0+IGcuaWQgPT09IHJvdy5pZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN0cmwgPSB0aGlzLnRpdGxlc0Zvcm0uYXQoaWR4KT8uZ2V0KFwidmFsdWVQYWlkXCIpO1xyXG4gICAgICAgICAgICBpZiAoY3RybCkge1xyXG4gICAgICAgICAgICAgICAgY3RybC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0RldGFpbHMocm93RGF0YTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvdyA9IHJvd0RhdGE7XHJcbiAgICAgICAgdGhpcy5zaG93U2lkZWJhciA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VEZXRhaWxzKCkge1xyXG4gICAgICAgIHRoaXMuc2hvd1NpZGViYXIgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpc0xhc3RDb2x1bW4oaW5kZXg6IG51bWJlciwgY29sdW1uczogYW55W10pOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gaW5kZXggPT09IGNvbHVtbnMubGVuZ3RoIC0gMTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTdHlsZUNvbHVtbnMoZmllbGQ6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgbGV0IHN0eWxlQ2xhc3MgPSB7fTtcclxuICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJjaGVja2JveFwiOlxyXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcyA9IHsgd2lkdGg6IFwiNTBweFwiIH07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInRpdGxlXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJkdWVEYXRlXCI6XHJcbiAgICAgICAgICAgICAgICBzdHlsZUNsYXNzID0geyB3aWR0aDogXCIxNTBweFwiIH07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInR5cGVcIjpcclxuICAgICAgICAgICAgY2FzZSBcImVudHJ5RGF0ZVwiOlxyXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcyA9IHsgd2lkdGg6IFwiMTIwcHhcIiB9O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBzdHlsZUNsYXNzID0geyB3aWR0aDogXCIxOThweFwiIH07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN0eWxlQ2xhc3M7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvcChvYmo6IGFueSwgY29sOiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGlmICghb2JqIHx8ICFjb2w/LnBhdGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiLVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc2VwYXJhdG9yID0gXCJcIjtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gXCJcIjtcclxuICAgICAgICBmb3IgKGNvbnN0IHBhdGggb2YgY29sLnBhdGgpIHtcclxuICAgICAgICAgICAgcmVzdWx0ICs9IHNlcGFyYXRvciArIEFncm9PYmplY3RVdGlscy5nZXRQcm9wQW5kRm9ybWF0VmFsdWUob2JqLCBwYXRoLCBjb2wudHlwZSk7XHJcbiAgICAgICAgICAgIHNlcGFyYXRvciA9IFwiIC0gXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVjb25zdHLDs2kgbyB7QGxpbmsgdGl0bGVzRm9ybX0gY29tIGJhc2UgbmEge0BsaW5rIGdyaWREYXRhfSBhdHVhbCxcclxuICAgICAqIHByZXNlcnZhbmRvIHZhbG9yZXMgasOhIGluZm9ybWFkb3MgZW0gaXRlbnMgc2VsZWNpb25hZG9zIGUgcmVnaXN0cmFuZG8gbGlzdGVuZXJzIGRlIG11ZGFuw6dhLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNyZWF0ZUZvcm1Hcm91cEZvclRpdGxlKCkge1xyXG4gICAgICAgIGNvbnN0IHRpdGxlc0Zvcm1BcnJheSA9IHRoaXMuZm9ybS5nZXQoXCJ0aXRsZXNGb3JtXCIpIGFzIEZvcm1BcnJheTtcclxuICAgICAgICB0aXRsZXNGb3JtQXJyYXkuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLmdyaWREYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3RlZC5maW5kKChzZWwpID0+IHNlbC5pZCA9PT0gaXRlbS5pZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgICAgICAgICAgICBpZDogbmV3IEZvcm1Db250cm9sKGl0ZW0uaWQgPz8gbnVsbCwgW10pLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVQYWlkOiBuZXcgRm9ybUNvbnRyb2woc2VsZWN0ZWRJdGVtPy52YWx1ZVBhaWQgPz8gbnVsbCwgW10pLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1ZhbHVlUGFpZENoYW5nZXMoZ3JvdXAsIGl0ZW0pO1xyXG4gICAgICAgICAgICB0aXRsZXNGb3JtQXJyYXkucHVzaChncm91cCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPYnNlcnZhIG11ZGFuw6dhcyBubyBjYW1wbyBgdmFsdWVQYWlkYCBkZSB1bWEgbGluaGEuXHJcbiAgICAgKiBBdHVhbGl6YSBvIGFycmF5IHtAbGluayBzZWxlY3RlZH0gcXVhbmRvIG8gdMOtdHVsbyBlc3TDoSBzZWxlY2lvbmFkbyxcclxuICAgICAqIGFwbGljYSBvIGxpbWl0ZSBkbyB2YWxvciBsw61xdWlkbyAoYG5ldFZhbHVlYCkgZSBldml0YSBsb29wcyBkZSBldmVudG9zIHVzYW5kb1xyXG4gICAgICogYHNldFZhbHVlYCBjb20gYGVtaXRFdmVudDogZmFsc2VgLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBmb3JtR3JvdXAgZ3J1cG8gZGUgZm9ybXVsw6FyaW8gYXNzb2NpYWRvIMOgIGxpbmhhIGRhIHRhYmVsYS5cclxuICAgICAqIEBwYXJhbSBpdGVtIHTDrXR1bG8gZmluYW5jZWlybyBjb3JyZXNwb25kZW50ZSDDoCBsaW5oYS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVUb1ZhbHVlUGFpZENoYW5nZXMoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGl0ZW06IEZpbmFuY2lhbFRpdGxlTGlzdER0bykge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlUGFpZENvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KFwidmFsdWVQYWlkXCIpO1xyXG4gICAgICAgIGlmICghdmFsdWVQYWlkQ29udHJvbCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhbHVlUGFpZENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgocmF3VmFsdWUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWVQYWlkID0gdGhpcy5wYXJzZU51bWJlclNhZmUocmF3VmFsdWUpO1xyXG4gICAgICAgICAgICBjb25zdCB0aXRsZUlkID0gZm9ybUdyb3VwLmdldChcImlkXCIpPy52YWx1ZTtcclxuXHJcbiAgICAgICAgICAgIC8vIGF0dWFsaXphIHNlbGVjdGVkIHNlIG8gdMOtdHVsbyBlc3RpdmVyIHNlbGVjaW9uYWRvXHJcbiAgICAgICAgICAgIGNvbnN0IHNlbEluZGV4ID0gdGhpcy5zZWxlY3RlZC5maW5kSW5kZXgoKHMpID0+IHMuaWQgPT09IHRpdGxlSWQpO1xyXG4gICAgICAgICAgICBpZiAoc2VsSW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBnYXJhbnRlIHF1ZSB2YWx1ZVBhaWQgc2VqYSBudW3DqXJpY28gb3UgdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkW3NlbEluZGV4XS52YWx1ZVBhaWQgPSB2YWx1ZVBhaWQgPz8gdW5kZWZpbmVkO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ldCA9IE51bWJlcih0aGlzLnNlbGVjdGVkW3NlbEluZGV4XT8udmFsdWVzPy5uZXRWYWx1ZSkgfHwgMDtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZVBhaWQgIT09IG51bGwgJiYgdmFsdWVQYWlkID4gbmV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFtzZWxJbmRleF0udmFsdWVQYWlkID0gbmV0O1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFVzYWRvIHBhcmEgZXZpdGFyIGxvb3AgaW5maW5pdG8gZGUgZXZlbnRvc1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlUGFpZENvbnRyb2wuc2V0VmFsdWUobmV0LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gYXR1YWxpemEgZmxhZyBkZSBlcnJvXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkW3NlbEluZGV4XS5oYXNFcnJvciA9IHZhbHVlUGFpZENvbnRyb2wuaW52YWxpZDtcclxuICAgICAgICAgICAgICAgIC8vIGVtaXRlIG11ZGFuw6dhIGRlIHNlbGXDp8Ojb1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHNlIG7Do28gZXN0aXZlciBzZWxlY2lvbmFkbywgYXBlbmFzIGFwbGljYSBsaW1pdGUgbG9jYWwgYmFzZWFkbyBubyBpdGVtXHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXQgPSBOdW1iZXIoaXRlbT8udmFsdWVzPy5uZXRWYWx1ZSkgfHwgMDtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZVBhaWQgIT09IG51bGwgJiYgdmFsdWVQYWlkID4gbmV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVQYWlkQ29udHJvbC5zZXRWYWx1ZShuZXQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcGFyc2VOdW1iZXJTYWZlKHZhbHVlOiBhbnkpOiBudW1iZXIgfCBudWxsIHtcclxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gXCJcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgY29uc3QgY2xlYW5lZCA9IHZhbHVlLnJlcGxhY2UoL1xcLi9nLCBcIlwiKS5yZXBsYWNlKFwiLFwiLCBcIi5cIik7XHJcbiAgICAgICAgICAgIGNvbnN0IG4gPSBwYXJzZUZsb2F0KGNsZWFuZWQpO1xyXG4gICAgICAgICAgICByZXR1cm4gaXNOYU4obikgPyBudWxsIDogbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmljaWEgbyBtb2RvIGRlIGVkacOnw6NvIG5hIGxpbmhhIGRhIHRhYmVsYSBQcmltZU5HIGUgYXBsaWNhIHJlZ3JhcyBkZSB2YWxpZGHDp8Ojb1xyXG4gICAgICogbm8gZm9ybXVsw6FyaW8gcmVhdGl2byBjb3JyZXNwb25kZW50ZSDDoHF1ZWxhIGxpbmhhLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSByb3cgb2JqZXRvIGRlIGxpbmhhIHJlY2ViaWRvIGRhIHRhYmVsYS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpbml0Um93RWRpdChyb3c6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLnRhYmxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGUuaW5pdFJvd0VkaXQocm93KTtcclxuICAgICAgICAgICAgdGhpcy5hcHBseVZhbGlkYXRpb25Ub1Jvd0VkaXQocm93KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGljaW9uYSB2YWxpZGFkb3JlcyBkaW5hbWljYW1lbnRlIGFvIGNhbXBvIGB2YWx1ZVBhaWRgIGRhIGxpbmhhIGVtIGVkacOnw6NvLFxyXG4gICAgICogbWFyY2EgbyBjb250cm9sZSBjb21vIHN1am8gZSBmb3LDp2EgcmV2YWxpZGHDp8OjbyBpbWVkaWF0YSBwYXJhIGV4aWJpciBlcnJvcyBuYSB0ZWxhLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSByb3cgb2JqZXRvIGRlIGxpbmhhIHBhcmEgYXBsaWNhciB2YWxpZGHDp8Ojby5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBhcHBseVZhbGlkYXRpb25Ub1Jvd0VkaXQocm93OiBhbnkpIHtcclxuICAgICAgICBjb25zdCByb3dJbmRleCA9IHRoaXMuZ3JpZERhdGEuZmluZEluZGV4KChyKSA9PiByLmlkID09PSByb3cuaWQpO1xyXG4gICAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IHRoaXMudGl0bGVzRm9ybS5hdChyb3dJbmRleCkgYXMgRm9ybUdyb3VwO1xyXG4gICAgICAgIGlmICghZm9ybUdyb3VwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdmFsdWVQYWlkQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoXCJ2YWx1ZVBhaWRcIik7XHJcbiAgICAgICAgdmFsdWVQYWlkQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbdGhpcy5nZXRWYWxpZGF0b3JzRm9yUm93RWRpdCgpLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcbiAgICAgICAgdmFsdWVQYWlkQ29udHJvbD8ubWFya0FzRGlydHkoKTtcclxuICAgICAgICB2YWx1ZVBhaWRDb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHLDs2kgbyB7QGxpbmsgVmFsaWRhdG9yRm59IHF1ZSB2YWxpZGEgbyBgdmFsdWVQYWlkYDpcclxuICAgICAqIC0gZGV2ZSBzZXIgbWFpb3IgcXVlIHplcm87XHJcbiAgICAgKiAtIG7Do28gcG9kZSB1bHRyYXBhc3NhciBvIHZhbG9yIGzDrXF1aWRvIChgbmV0VmFsdWVgKSBkbyB0w610dWxvLlxyXG4gICAgICpcclxuICAgICAqIFJldG9ybmEgb3MgZXJyb3MgY29uc3VtaWRvcyBwZWxvIGNvbXBvbmVudGUgYHMtY29udHJvbC1lcnJvcnNgLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldFZhbGlkYXRvcnNGb3JSb3dFZGl0KCk6IFZhbGlkYXRvckZuIHtcclxuICAgICAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBjb250cm9sLnBhcmVudCBhcyBGb3JtR3JvdXA7XHJcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlSWQgPSBwYXJlbnQ/LmdldChcImlkXCIpPy52YWx1ZTtcclxuICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBjb250cm9sLnZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZVBhaWQgPSB0aGlzLnBhcnNlTnVtYmVyU2FmZShyYXdWYWx1ZSk7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZVBhaWQgPT09IG51bGwgfHwgdmFsdWVQYWlkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZVBhaWQgPD0gQUdST19OVU1CRVJTLlpFUk8pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IGxlc3NUaGFuWmVybzogdHJ1ZSB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHByb2N1cmEgcGVsbyB0w610dWxvIG5vIHNlbGVjdGVkIG91IG5vIGdyaWREYXRhIChwcmlvcml6YSBzZWxlY3RlZClcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRSb3cgPSB0aGlzLnNlbGVjdGVkLmZpbmQoKHNlbCkgPT4gc2VsLmlkID09PSB0aXRsZUlkKSB8fCB0aGlzLmdyaWREYXRhLmZpbmQoKGcpID0+IGcuaWQgPT09IHRpdGxlSWQpO1xyXG4gICAgICAgICAgICBjb25zdCBuZXRWYWx1ZSA9IE51bWJlcihzZWxlY3RlZFJvdz8udmFsdWVzPy5uZXRWYWx1ZSkgfHwgMDtcclxuICAgICAgICAgICAgaWYgKHZhbHVlUGFpZCA+IG5ldFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBncmVhdGhlclRoYW5BbGxvd2VkOiB0cnVlIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNhbmNlbFJvd0VkaXQocm93OiBhbnkpIHtcclxuICAgICAgICBpZiAodGhpcy50YWJsZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlLmNhbmNlbFJvd0VkaXQocm93KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYW50w6ltIG8gZXN0YWRvIHZpc3VhbCBkYSB0YWJlbGEgKGNoZWNrYm94IG1hcmNhZG8gZSBsaW5oYSBlZGl0w6F2ZWwpIGVtXHJcbiAgICAgKiBzaW5jcm9uaWEgY29tIG8gYXJyYXkgZGUgdMOtdHVsb3Mgc2VsZWNpb25hZG9zLCBpbmNsdXNpdmUgcmVzdGF1cmFuZG8gdmFsb3Jlc1xyXG4gICAgICogZGlnaXRhZG9zIGFvIHJlY2FycmVnYXIsIG9yZGVuYXIgb3UgcGFnaW5hciBhIGdyaWQuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3luY2hyb25pemVDaGVja2JveEFuZEVkaXRhYmxlRmllbGRTdGF0ZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZ3JpZERhdGEgfHwgIXRoaXMudGFibGVJbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmdyaWREYXRhLmZvckVhY2goKHJvdywgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRSb3cgPSB0aGlzLnNlbGVjdGVkLmZpbmQoKHNlbCkgPT4gc2VsLmlkID09PSByb3cuaWQpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgY3RybCA9IHRoaXMudGl0bGVzRm9ybS5hdChpbmRleCk/LmdldChcInZhbHVlUGFpZFwiKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZFJvdykge1xyXG4gICAgICAgICAgICAgICAgLy8gU2luY3Jvbml6YSBvIHZhbG9yIHBhZ28gZG8gaXRlbSBzZWxlY2lvbmFkb1xyXG4gICAgICAgICAgICAgICAgcm93LnZhbHVlUGFpZCA9IHNlbGVjdGVkUm93LnZhbHVlUGFpZDtcclxuICAgICAgICAgICAgICAgIGlmIChjdHJsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3RybC5zZXRWYWx1ZShzZWxlY3RlZFJvdy52YWx1ZVBhaWQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFJvd0VkaXQocm93KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIENhbmNlbGEgYSBlZGnDp8OjbyBzZSBuw6NvIGVzdGl2ZXIgc2VsZWNpb25hZG9cclxuICAgICAgICAgICAgICAgIGlmIChjdHJsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3RybC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbFJvd0VkaXQocm93KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0RmllbGRzKGZpZWxkOiBzdHJpbmcsIGhlYWRlcjogc3RyaW5nLCBwYXRoOiBzdHJpbmdbXSwgdHlwZTogc3RyaW5nLCBmaWVsZE9yZGVyQnk6IFRpdGxlRmllbGRzT3JkZXJCeSB8IG51bGwpOiBDb2x1bW5Db25maWcge1xyXG4gICAgICAgIHJldHVybiB7IGZpZWxkLCBwYXRoLCB0eXBlLCBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoaGVhZGVyKSwgb3JkZXJCeTogZmllbGRPcmRlckJ5IH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRNZXNzYWdlKHNldmVyaXR5OiBzdHJpbmcsIHN1bW1hcnk6IHN0cmluZywgZGV0YWlsOiBzdHJpbmcsIHN0aWNreSA9IGZhbHNlLCBsaWZlID0gNzAwMCkge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHksXHJcbiAgICAgICAgICAgIHN0aWNreSxcclxuICAgICAgICAgICAgbGlmZSxcclxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChzdW1tYXJ5KSxcclxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGRldGFpbCksXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRSZWNPcmRlckJ5KGZpZWxkOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCwgb3JkZXI6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpOiBSZWNPcmRlckJ5IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAoIWZpZWxkIHx8IEFycmF5LmlzQXJyYXkoZmllbGQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGdyaWRDb2x1bW5GaWVsZCA9IHRoaXMuZ3JpZENvbHVtbnMuZmluZCgoY29sKSA9PiBjb2wuZmllbGQgPT09IGZpZWxkKTtcclxuICAgICAgICBpZiAoZ3JpZENvbHVtbkZpZWxkPy5vcmRlckJ5ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGZpZWxkOiBncmlkQ29sdW1uRmllbGQ/Lm9yZGVyQnkgPz8gVGl0bGVGaWVsZHNPcmRlckJ5Lk5VTUJFUl9USVRMRSxcclxuICAgICAgICAgICAgb3JkZXI6IG9yZGVyID09PSAtMSA/IE9yZGVyQnlUeXBlLkRFU0MgOiBPcmRlckJ5VHlwZS5BU0MsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpzTG9hZGluZ1N0YXRlPVwiY29tcG9uZW50TG9hZGluZ1wiPlxyXG4gICAgPGRpdiBbaGlkZGVuXT1cImdyaWREYXRhLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICA8cy1lbXB0eS1zdGF0ZVxyXG4gICAgICAgICAgICBpY29uQ2xhc3M9XCJmYSBmYS1pbmJveFwiXHJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLm5vX2FjY291bnRzX2ZvdW5kX3RpdGxlJyB8IGxpYlRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgICAgIFtzaG93UHJpbWFyeUFjdGlvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uPVwie3sgJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLm5vX2FjY291bnRzX2ZvdW5kX2Rlc2NyaXB0aW9uJyB8IGxpYlRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgPjwvcy1lbXB0eS1zdGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPHAtdGFibGVcclxuICAgICAgICAjVGl0bGVUYWJsZVxyXG4gICAgICAgIFtoaWRkZW5dPVwiZ3JpZERhdGEubGVuZ3RoID09PSAwXCJcclxuICAgICAgICBbdmFsdWVdPVwiZ3JpZERhdGFcIlxyXG4gICAgICAgIFtjb2x1bW5zXT1cImdyaWRDb2x1bW5zXCJcclxuICAgICAgICBkYXRhS2V5PVwiaWRcIlxyXG4gICAgICAgIFtsYXp5XT1cInRydWVcIlxyXG4gICAgICAgIFtwYWdpbmF0b3JdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJncmlkVG90YWxSZWNvcmRzXCJcclxuICAgICAgICBbc29ydEZpZWxkXT1cImdldFNvcnRGaWVsZCgpXCJcclxuICAgICAgICBbc29ydE9yZGVyXT1cImdldFNvcnRPcmRlcigpXCJcclxuICAgICAgICBbZmlyc3RdPVwiZ2V0Um93SW5kZXgoKVwiXHJcbiAgICAgICAgW3Jvd3NdPVwiZ2V0UGFnZVNpemUoKVwiXHJcbiAgICAgICAgW2xhenlMb2FkT25Jbml0XT1cImZhbHNlXCJcclxuICAgICAgICBbcm93c1BlclBhZ2VPcHRpb25zXT1cIlsxMCwgMjAsIDUwLCAxMDBdXCJcclxuICAgICAgICAob25MYXp5TG9hZCk9XCJ1cGRhdGVHcmlkKCRldmVudClcIlxyXG4gICAgICAgIFsoc2VsZWN0aW9uKV09XCJzZWxlY3RlZFwiXHJcbiAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAob25Sb3dVbnNlbGVjdCk9XCJvblVuc2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgIHNvcnRNb2RlPVwic2luZ2xlXCJcclxuICAgICAgICBbc2VsZWN0aW9uTW9kZV09XCInbXVsdGlwbGUnXCJcclxuICAgICAgICBlZGl0TW9kZT1cInJvd1wiXHJcbiAgICAgICAgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgZnJvemVuV2lkdGg9XCIxNjBweFwiXHJcbiAgICA+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0YWJsZS1jaGVja2JveC1oZWFkZXJcIiBzY29wZT1cImNvbFwiIFtuZ1N0eWxlXT1cImdldFN0eWxlQ29sdW1ucygnY2hlY2tib3gnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLXRhYmxlSGVhZGVyQ2hlY2tib3g+PC9wLXRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLm9yZGVyQnk7IGVsc2Ugbm90U29ydGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIFtwU29ydGFibGVDb2x1bW5dPVwiY29sLmZpZWxkXCIgW3Njb3BlXT1cIidjb2wnXCIgW25nU3R5bGVdPVwiZ2V0U3R5bGVDb2x1bW5zKGNvbC5maWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIFtmaWVsZF09XCJjb2wuZmllbGRcIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RTb3J0YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIFtzY29wZV09XCInY29sJ1wiIFtuZ1N0eWxlXT1cImdldFN0eWxlQ29sdW1ucyhjb2wuZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZyb3plbmhlYWRlclwiPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiBwRnJvemVuQ29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5kZXRhaWxzJyB8IGxpYlRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICBwVGVtcGxhdGU9XCJib2R5XCJcclxuICAgICAgICAgICAgbGV0LXJvd0RhdGFcclxuICAgICAgICAgICAgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCJcclxuICAgICAgICAgICAgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIlxyXG4gICAgICAgICAgICBsZXQtZWRpdGluZz1cImVkaXRpbmdcIlxyXG4gICAgICAgICAgICBsZXQtcmk9XCJyb3dJbmRleFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8dHIgW3BFZGl0YWJsZVJvd109XCJyb3dEYXRhXCIgW2Zvcm1Hcm91cF09XCIkYW55KHRpdGxlc0Zvcm0uYXQocm93SW5kZXgpKVwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGFibGUtY2hlY2tib3gtaGVhZGVyXCIgW25nU3R5bGVdPVwiZ2V0U3R5bGVDb2x1bW5zKCdjaGVja2JveCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtdGFibGVDaGVja2JveCBbdmFsdWVdPVwicm93RGF0YVwiPjwvcC10YWJsZUNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnM7IGxldCBpID0gaW5kZXhcIiBbbmdTdHlsZV09XCJnZXRTdHlsZUNvbHVtbnMoY29sLmZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLWNlbGxFZGl0b3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJpbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29sLmZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3ZhbHVlUGFpZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzTnVtYmVySW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwidmFsdWVQYWlkLWlucHV0LXt7IHJvd0RhdGEuaWQgfHwgcm93SW5kZXggfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcj1cIixcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhvdXNhbmRzU2VwYXJhdG9yPVwiLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVBhaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NjYWxlXT1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsbG93TmVnYXRpdmVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfcGFpZCcgfCBsaWJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHMtY29udHJvbC1lcnJvcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cIiRhbnkodGl0bGVzRm9ybS5hdChyb3dJbmRleCkpLmdldCgndmFsdWVQYWlkJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9yTWVzc2FnZXNdPVwiZXJyb3JNZXNzYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3MtY29udHJvbC1lcnJvcnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRQcm9wKHJvd0RhdGEsIGNvbCkgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwib3V0cHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJjb2wuZmllbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndmFsdWVQYWlkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByb3dEYXRhWyd2YWx1ZVBhaWQnXSB8fCAwIHwgY3VycmVuY3k6ICdCUkwnOidzeW1ib2wnOicxLjItMic6J3B0LUJSJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0UHJvcChyb3dEYXRhLCBjb2wpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L3AtY2VsbEVkaXRvcj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZnJvemVuYm9keVwiIGxldC1yb3dEYXRhIGxldC1jb2x1bW5zPlxyXG4gICAgICAgICAgICA8dHIgW3BFZGl0YWJsZVJvd109XCJyb3dEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgcEZyb3plbkNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICA8cy1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJkZXRhaWxzLXt7IHJvd0RhdGEuaWQgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0RldGFpbHMocm93RGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzaG93RGV0YWlscyhyb3dEYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3sgJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLmRldGFpbHMnIHwgbGliVHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3ByaW9yaXR5XT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdXhpbGlhcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uQ2xhc3M9XCJmYSBmYS1yb2NrZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L3MtYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9wLXRhYmxlPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPHMtc2lkZWJhclxyXG4gICAgWyh2aXNpYmxlKV09XCJzaG93U2lkZWJhclwiXHJcbiAgICBwb3NpdGlvbj1cInJpZ2h0XCJcclxuICAgIFtoZWFkZXJdPVwiKCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5hY2NvdW50X2RldGFpbHMnIHwgbGliVHJhbnNsYXRlKSArICcgJyArIChzZWxlY3RlZFJvdz8ubnVtYmVyVGl0bGUgfHwgJycpXCJcclxuPlxyXG4gICAgPGRpdiBjbGFzcz1cInVpLWZsdWlkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInVpLWdcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2Ygc2lkZWJhckZpZWxkc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVpLWctNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGZpZWxkLmhlYWRlciB9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8cD57eyBnZXRQcm9wKHNlbGVjdGVkUm93LCBmaWVsZCkgfHwgJy0nIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vVmFsdWU+LTwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1aS1nLTRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLnN0YXR1c19sYWJlbCcgfCBsaWJUcmFuc2xhdGUgfX08L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInNlbGVjdGVkUm93Py5zdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidPUEVOJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHMtYmFkZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiJ3llbGxvdydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9XCJ7eyAnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuc3RhdHVzX29wZW4nIHwgbGliVHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0YWJsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zLWJhZGdlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInUEFJRCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzLWJhZGdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cIidncmVlbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9XCJ7eyAnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuc3RhdHVzX3BhaWQnIHwgbGliVHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0YWJsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zLWJhZGdlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8cy1mb290ZXI+XHJcbiAgICAgICAgPHMtYnV0dG9uIGxhYmVsPVwie3sgJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLmNsb3NlJyB8IGxpYlRyYW5zbGF0ZSB9fVwiIChvbkNsaWNrKT1cImNsb3NlRGV0YWlscygpXCI+IDwvcy1idXR0b24+XHJcbiAgICA8L3MtZm9vdGVyPlxyXG48L3Mtc2lkZWJhcj5cclxuIl19
|