@hmcts/ccd-case-ui-toolkit 7.0.72 → 7.0.73
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.mjs +12 -5
- package/esm2022/lib/shared/components/palette/complex/read-complex-field-table.component.mjs +21 -5
- package/esm2022/lib/shared/directives/conditional-show/services/condition-parser.service.mjs +4 -2
- package/esm2022/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.mjs +9 -2
- package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +42 -10
- package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
- package/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.d.ts +1 -0
- package/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.d.ts.map +1 -1
- package/lib/shared/components/palette/complex/read-complex-field-table.component.d.ts +7 -1
- package/lib/shared/components/palette/complex/read-complex-field-table.component.d.ts.map +1 -1
- package/lib/shared/directives/conditional-show/services/condition-parser.service.d.ts.map +1 -1
- package/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -4675,7 +4675,9 @@ class ConditionParser {
|
|
|
4675
4675
|
}
|
|
4676
4676
|
}
|
|
4677
4677
|
else {
|
|
4678
|
-
|
|
4678
|
+
// EXUI-2460 - if path present then show error, otherwise log message to stop unnecessary console errors
|
|
4679
|
+
path ? console.error('Path in formArray should start with ', head, ', full path: ', path) :
|
|
4680
|
+
console.log('Path not present in formArray');
|
|
4679
4681
|
}
|
|
4680
4682
|
}
|
|
4681
4683
|
static removeStarChar(str) {
|
|
@@ -25842,7 +25844,7 @@ class ReadComplexFieldRawComponent extends AbstractFieldReadComponent {
|
|
|
25842
25844
|
}] }); })();
|
|
25843
25845
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ReadComplexFieldRawComponent, { className: "ReadComplexFieldRawComponent", filePath: "lib/shared/components/palette/complex/read-complex-field-raw.component.ts", lineNumber: 16 }); })();
|
|
25844
25846
|
|
|
25845
|
-
const _c0$j = (a0, a1, a2) => [a0, false, undefined, true, a1,
|
|
25847
|
+
const _c0$j = (a0, a1, a2, a3) => [a0, false, undefined, true, a1, a2, a3];
|
|
25846
25848
|
function ReadComplexFieldTableComponent_ng_container_9_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
25847
25849
|
i0.ɵɵelementContainerStart(0);
|
|
25848
25850
|
i0.ɵɵelementStart(1, "tr", 7)(2, "td", 8)(3, "span", 3);
|
|
@@ -25887,9 +25889,25 @@ function ReadComplexFieldTableComponent_ng_container_9_Template(rf, ctx) { if (r
|
|
|
25887
25889
|
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(2, 2, field_r1))("ngIfElse", SimpleRow_r3);
|
|
25888
25890
|
} }
|
|
25889
25891
|
class ReadComplexFieldTableComponent extends AbstractFieldReadComponent {
|
|
25892
|
+
// parent_ can be replaced with any ***_ - underscore is only important character
|
|
25893
|
+
// value can also be replaced with anything
|
|
25894
|
+
static DUMMY_STRING_PRE = 'parent_';
|
|
25895
|
+
static DUMMY_STRING_POST = 'value';
|
|
25890
25896
|
caseFields = [];
|
|
25897
|
+
path;
|
|
25898
|
+
ngOnInit() {
|
|
25899
|
+
this.setDummyPathForChildArrays();
|
|
25900
|
+
}
|
|
25901
|
+
/* In order to get child arrays (within casefield) to display their logic
|
|
25902
|
+
we need to add a path. This path needs to include the idPrefix as that
|
|
25903
|
+
is the part of the path that is used to display the elements.
|
|
25904
|
+
The joining strings will allow us to use the existing show condition to
|
|
25905
|
+
match against this path. */
|
|
25906
|
+
setDummyPathForChildArrays() {
|
|
25907
|
+
this.path = ReadComplexFieldTableComponent.DUMMY_STRING_PRE + this.idPrefix + ReadComplexFieldTableComponent.DUMMY_STRING_POST;
|
|
25908
|
+
}
|
|
25891
25909
|
static ɵfac = /*@__PURE__*/ (() => { let ɵReadComplexFieldTableComponent_BaseFactory; return function ReadComplexFieldTableComponent_Factory(t) { return (ɵReadComplexFieldTableComponent_BaseFactory || (ɵReadComplexFieldTableComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ReadComplexFieldTableComponent)))(t || ReadComplexFieldTableComponent); }; })();
|
|
25892
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ReadComplexFieldTableComponent, selectors: [["ccd-read-complex-field-table"]], inputs: { caseFields: "caseFields" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 11, vars:
|
|
25910
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ReadComplexFieldTableComponent, selectors: [["ccd-read-complex-field-table"]], inputs: { caseFields: "caseFields" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 11, vars: 17, consts: [["SimpleRow", ""], [1, "complex-panel"], [1, "complex-panel-title"], [1, "text-16"], ["aria-describedby", "complex field table", 1, "complex-panel-table"], [4, "ngFor", "ngForOf"], [4, "ngIf", "ngIfElse"], [1, "complex-panel-compound-field", 3, "hidden"], ["colspan", "2"], [3, "topLevelFormGroup", "caseField", "context"], [1, "complex-panel-simple-field", 3, "hidden"], ["id", "complex-panel-simple-field-label"]], template: function ReadComplexFieldTableComponent_Template(rf, ctx) { if (rf & 1) {
|
|
25893
25911
|
i0.ɵɵelementStart(0, "div", 1)(1, "dl", 2)(2, "dt")(3, "span", 3);
|
|
25894
25912
|
i0.ɵɵtext(4);
|
|
25895
25913
|
i0.ɵɵpipe(5, "rpxTranslate");
|
|
@@ -25904,12 +25922,12 @@ class ReadComplexFieldTableComponent extends AbstractFieldReadComponent {
|
|
|
25904
25922
|
i0.ɵɵadvance(4);
|
|
25905
25923
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 2, ctx.caseField.label));
|
|
25906
25924
|
i0.ɵɵadvance(5);
|
|
25907
|
-
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBindV(10, 4, i0.ɵɵ
|
|
25925
|
+
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBindV(10, 4, i0.ɵɵpureFunction4(12, _c0$j, ctx.caseField, ctx.topLevelFormGroup, ctx.path, ctx.idPrefix)));
|
|
25908
25926
|
} }, styles: [".complex-panel[_ngcontent-%COMP%]{margin:13px 0;border:1px solid #bfc1c3}.complex-panel[_ngcontent-%COMP%] .complex-panel-title[_ngcontent-%COMP%]{background-color:#dee0e2;padding:5px 5px 2px;border-bottom:1px solid #bfc1c3;display:block;color:#0b0c0c;font-family:nta,Arial,sans-serif;font-weight:700;text-transform:none;font-size:16px;line-height:1.25}@media (min-width: 641px){.complex-panel[_ngcontent-%COMP%] .complex-panel-title[_ngcontent-%COMP%]{font-size:19px;line-height:1.3157894737}}.complex-panel[_ngcontent-%COMP%] .complex-panel-table[_ngcontent-%COMP%] > tbody[_ngcontent-%COMP%] > tr[_ngcontent-%COMP%] > th[_ngcontent-%COMP%]{vertical-align:top}.complex-panel[_ngcontent-%COMP%] .complex-panel-table[_ngcontent-%COMP%] > tbody[_ngcontent-%COMP%] > tr[_ngcontent-%COMP%]:last-child > th[_ngcontent-%COMP%], .complex-panel[_ngcontent-%COMP%] .complex-panel-table[_ngcontent-%COMP%] > tbody[_ngcontent-%COMP%] > tr[_ngcontent-%COMP%]:last-child > td[_ngcontent-%COMP%]{border-bottom:none}.complex-panel[_ngcontent-%COMP%] .complex-panel-simple-field[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{padding-left:5px;width:295px}.complex-panel[_ngcontent-%COMP%] .complex-panel-compound-field[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:5px}"] });
|
|
25909
25927
|
}
|
|
25910
25928
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ReadComplexFieldTableComponent, [{
|
|
25911
25929
|
type: Component,
|
|
25912
|
-
args: [{ selector: 'ccd-read-complex-field-table', template: "<div class=\"complex-panel\">\n <dl class=\"complex-panel-title\"><dt><span class=\"text-16\">{{caseField.label | rpxTranslate}}</span></dt><dd></dd></dl>\n <table class=\"complex-panel-table\" aria-describedby=\"complex field table\">\n <tbody>\n <ng-container *ngFor=\"let field of caseField | ccdReadFieldsFilter:false :undefined :true :topLevelFormGroup:
|
|
25930
|
+
args: [{ selector: 'ccd-read-complex-field-table', template: "<div class=\"complex-panel\">\n <dl class=\"complex-panel-title\"><dt><span class=\"text-16\">{{caseField.label | rpxTranslate}}</span></dt><dd></dd></dl>\n <table class=\"complex-panel-table\" aria-describedby=\"complex field table\">\n <tbody>\n <ng-container *ngFor=\"let field of caseField | ccdReadFieldsFilter:false :undefined :true :topLevelFormGroup :path :idPrefix\">\n <ng-container *ngIf=\"(field | ccdIsCompound); else SimpleRow\">\n <tr class=\"complex-panel-compound-field\" [hidden]=\"field.hidden\">\n <td colspan=\"2\">\n <span class=\"text-16\">\n <ccd-field-read [topLevelFormGroup]=\"topLevelFormGroup\"\n [caseField]=\"field\" [context]=\"context\"></ccd-field-read>\n </span>\n </td>\n </tr>\n </ng-container>\n <ng-template #SimpleRow>\n <tr class=\"complex-panel-simple-field\" [hidden]=\"field.hidden\">\n <th id=\"complex-panel-simple-field-label\"><span class=\"text-16\">{{field.label | rpxTranslate}}</span></th>\n <td>\n <span class=\"text-16\">\n <ccd-field-read [topLevelFormGroup]=\"topLevelFormGroup\"\n [caseField]=\"field\" [context]=\"context\"></ccd-field-read>\n </span>\n </td>\n </tr>\n </ng-template>\n </ng-container>\n </tbody>\n </table>\n</div>\n", styles: [".complex-panel{margin:13px 0;border:1px solid #bfc1c3}.complex-panel .complex-panel-title{background-color:#dee0e2;padding:5px 5px 2px;border-bottom:1px solid #bfc1c3;display:block;color:#0b0c0c;font-family:nta,Arial,sans-serif;font-weight:700;text-transform:none;font-size:16px;line-height:1.25}@media (min-width: 641px){.complex-panel .complex-panel-title{font-size:19px;line-height:1.3157894737}}.complex-panel .complex-panel-table>tbody>tr>th{vertical-align:top}.complex-panel .complex-panel-table>tbody>tr:last-child>th,.complex-panel .complex-panel-table>tbody>tr:last-child>td{border-bottom:none}.complex-panel .complex-panel-simple-field th{padding-left:5px;width:295px}.complex-panel .complex-panel-compound-field td{padding:5px}\n"] }]
|
|
25913
25931
|
}], null, { caseFields: [{
|
|
25914
25932
|
type: Input
|
|
25915
25933
|
}] }); })();
|
|
@@ -27257,7 +27275,14 @@ class ReadFieldsFilterPipe {
|
|
|
27257
27275
|
else {
|
|
27258
27276
|
cond = ShowCondition.getInstance(field.show_condition);
|
|
27259
27277
|
}
|
|
27260
|
-
|
|
27278
|
+
if (path) {
|
|
27279
|
+
// EXUI-2460 - evaluate with and without path to ensure validity
|
|
27280
|
+
field.hidden = !cond.match(formValue, path) ? !cond.match(formValue) : false;
|
|
27281
|
+
}
|
|
27282
|
+
else {
|
|
27283
|
+
// if no path there is no need to evaluate twice
|
|
27284
|
+
field.hidden = !cond.match(formValue);
|
|
27285
|
+
}
|
|
27261
27286
|
}
|
|
27262
27287
|
else {
|
|
27263
27288
|
field.hidden = false;
|
|
@@ -35045,6 +35070,7 @@ class CaseSpecificAccessRequestComponent {
|
|
|
35045
35070
|
$roleAssignmentResponseSubscription;
|
|
35046
35071
|
genericError = 'There is a problem';
|
|
35047
35072
|
specificReasonControlName = 'specificReason';
|
|
35073
|
+
getSpecificAccessError = false;
|
|
35048
35074
|
constructor(fb, router, casesService, route, caseNotifier) {
|
|
35049
35075
|
this.fb = fb;
|
|
35050
35076
|
this.router = router;
|
|
@@ -35099,9 +35125,15 @@ class CaseSpecificAccessRequestComponent {
|
|
|
35099
35125
|
.subscribe(() => {
|
|
35100
35126
|
// Would have been nice to pass the caseId within state.data, but this isn't part of NavigationExtras until
|
|
35101
35127
|
// Angular 7.2
|
|
35128
|
+
this.getSpecificAccessError = false;
|
|
35102
35129
|
this.router.navigate(['success'], { relativeTo: this.route });
|
|
35103
35130
|
}, () => {
|
|
35104
|
-
//
|
|
35131
|
+
// Show the generic error message
|
|
35132
|
+
this.getSpecificAccessError = true;
|
|
35133
|
+
this.errorMessage = {
|
|
35134
|
+
title: this.genericError,
|
|
35135
|
+
description: 'Sorry, there is a problem with the service; Try again later.'
|
|
35136
|
+
};
|
|
35105
35137
|
});
|
|
35106
35138
|
}
|
|
35107
35139
|
}
|
|
@@ -35118,7 +35150,7 @@ class CaseSpecificAccessRequestComponent {
|
|
|
35118
35150
|
return input.value === null || input.value.trim().length === 0;
|
|
35119
35151
|
}
|
|
35120
35152
|
static ɵfac = function CaseSpecificAccessRequestComponent_Factory(t) { return new (t || CaseSpecificAccessRequestComponent)(i0.ɵɵdirectiveInject(i4.FormBuilder), i0.ɵɵdirectiveInject(i1$1.Router), i0.ɵɵdirectiveInject(CasesService), i0.ɵɵdirectiveInject(i1$1.ActivatedRoute), i0.ɵɵdirectiveInject(CaseNotifier)); };
|
|
35121
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseSpecificAccessRequestComponent, selectors: [["ccd-case-specific-access-request"]], decls: 50, vars: 42, consts: [[3, "error", 4, "ngIf"], ["type", "information"], [3, "submit", "formGroup"], [1, "govuk-form-group", 3, "ngClass"], ["aria-describedby", "reason-hint", 1, "govuk-fieldset"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--l"], [1, "govuk-fieldset__heading"], ["data-module", "govuk-details", "role", "group", 1, "govuk-details"], ["
|
|
35153
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseSpecificAccessRequestComponent, selectors: [["ccd-case-specific-access-request"]], decls: 50, vars: 42, consts: [[3, "error", 4, "ngIf"], ["type", "information"], [3, "submit", "formGroup"], [1, "govuk-form-group", 3, "ngClass"], ["aria-describedby", "reason-hint", 1, "govuk-fieldset"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--l"], [1, "govuk-fieldset__heading"], ["data-module", "govuk-details", "role", "group", 1, "govuk-details"], ["aria-expanded", "false", 1, "govuk-details__summary"], [1, "govuk-details__summary-text"], ["aria-hidden", "true", 1, "govuk-details__text"], [1, "govuk-body"], [1, "govuk-list", "govuk-list--bullet"], ["id", "reason-hint", 1, "govuk-hint"], ["id", "conditional-reason-3"], [1, "govuk-form-group"], ["id", "specific-reason-error-message", "class", "govuk-error-message", 4, "ngIf"], ["id", "specific-reason", "name", "specific-reason", "rows", "8", "formControlName", "specificReason", 1, "govuk-textarea", 3, "ngClass"], [1, "govuk-button-group"], ["type", "submit", 1, "govuk-button", "govuk-!-margin-right-3"], [1, "govuk-grid-column-full", "govuk-!-padding-left-0"], ["href", "javascript:void(0)", 1, "govuk-body", 3, "click"], [3, "error"], ["id", "specific-reason-error-message", 1, "govuk-error-message"]], template: function CaseSpecificAccessRequestComponent_Template(rf, ctx) { if (rf & 1) {
|
|
35122
35154
|
i0.ɵɵtemplate(0, CaseSpecificAccessRequestComponent_exui_error_message_0_Template, 1, 1, "exui-error-message", 0);
|
|
35123
35155
|
i0.ɵɵelementStart(1, "cut-alert", 1);
|
|
35124
35156
|
i0.ɵɵtext(2);
|
|
@@ -35172,7 +35204,7 @@ class CaseSpecificAccessRequestComponent {
|
|
|
35172
35204
|
i0.ɵɵpipe(49, "rpxTranslate");
|
|
35173
35205
|
i0.ɵɵelementEnd()()()()();
|
|
35174
35206
|
} if (rf & 2) {
|
|
35175
|
-
i0.ɵɵproperty("ngIf", ctx.formGroup.invalid && ctx.submitted);
|
|
35207
|
+
i0.ɵɵproperty("ngIf", ctx.formGroup.invalid && ctx.submitted || ctx.getSpecificAccessError);
|
|
35176
35208
|
i0.ɵɵadvance(2);
|
|
35177
35209
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 16, "Authorisation is needed to access this case."), "");
|
|
35178
35210
|
i0.ɵɵadvance(3);
|
|
@@ -35207,7 +35239,7 @@ class CaseSpecificAccessRequestComponent {
|
|
|
35207
35239
|
}
|
|
35208
35240
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseSpecificAccessRequestComponent, [{
|
|
35209
35241
|
type: Component,
|
|
35210
|
-
args: [{ selector: 'ccd-case-specific-access-request', template: "<exui-error-message\n *ngIf=\"formGroup.invalid && submitted\"\n [error]=\"errorMessage\"></exui-error-message>\n<cut-alert type=\"information\">\n {{'Authorisation is needed to access this case.' | rpxTranslate}}<br />\n {{'This could be because it\\'s outside your jurisdiction, or you may be excluded from the case. If you request access to this case, it will be logged for auditing purposes.' | rpxTranslate}}\n</cut-alert>\n<form [formGroup]=\"formGroup\" (submit)=\"onSubmit()\">\n <div class=\"govuk-form-group\"\n [ngClass]=\"{ 'form-group-error': formGroup.invalid && submitted }\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"reason-hint\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--l\">\n <h1 class=\"govuk-fieldset__heading\">\n {{ title | rpxTranslate }}\n </h1>\n </legend>\n\n <details class=\"govuk-details\" data-module=\"govuk-details\" role=\"group\">\n <summary\n class=\"govuk-details__summary\"\n
|
|
35242
|
+
args: [{ selector: 'ccd-case-specific-access-request', template: "<exui-error-message\n *ngIf=\"(formGroup.invalid && submitted) || getSpecificAccessError\"\n [error]=\"errorMessage\"></exui-error-message>\n<cut-alert type=\"information\">\n {{'Authorisation is needed to access this case.' | rpxTranslate}}<br />\n {{'This could be because it\\'s outside your jurisdiction, or you may be excluded from the case. If you request access to this case, it will be logged for auditing purposes.' | rpxTranslate}}\n</cut-alert>\n<form [formGroup]=\"formGroup\" (submit)=\"onSubmit()\">\n <div class=\"govuk-form-group\"\n [ngClass]=\"{ 'form-group-error': formGroup.invalid && submitted }\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"reason-hint\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--l\">\n <h1 class=\"govuk-fieldset__heading\">\n {{ title | rpxTranslate }}\n </h1>\n </legend>\n\n <details class=\"govuk-details\" data-module=\"govuk-details\" role=\"group\">\n <summary\n class=\"govuk-details__summary\"\n aria-expanded=\"false\">\n <span class=\"govuk-details__summary-text\">\n {{'Help with requesting case access' | rpxTranslate}}\n </span>\n </summary>\n <div\n class=\"govuk-details__text\"\n aria-hidden=\"true\">\n <p class=\"govuk-body\">{{'You could include:' | rpxTranslate}}</p>\n <ul class=\"govuk-list govuk-list--bullet\">\n <li>{{'the case reference of the linked case' | rpxTranslate}}</li>\n <li>{{'how long you require access to this case' | rpxTranslate}}</li>\n <li>{{'any other reasons why you require access' | rpxTranslate}}</li>\n </ul>\n </div>\n </details>\n\n <div id=\"reason-hint\" class=\"govuk-hint\">\n {{ hint | rpxTranslate }}\n </div>\n <div id=\"conditional-reason-3\">\n <div class=\"govuk-form-group\">\n <div\n id=\"specific-reason-error-message\"\n class=\"govuk-error-message\"\n *ngIf=\"formGroup.get('specificReason').invalid && submitted\">\n {{ errorMessage.description | rpxTranslate }}\n </div>\n <textarea\n class=\"govuk-textarea\"\n [ngClass]=\"{\n 'govuk-textarea--error':\n formGroup.get('specificReason').invalid && submitted\n }\"\n id=\"specific-reason\"\n name=\"specific-reason\"\n rows=\"8\"\n formControlName=\"specificReason\">\n </textarea>\n </div>\n </div>\n </fieldset>\n </div>\n\n <div class=\"govuk-button-group\">\n <button class=\"govuk-button govuk-!-margin-right-3\" type=\"submit\">\n {{'Submit' | rpxTranslate}}\n </button>\n <div class=\"govuk-grid-column-full govuk-!-padding-left-0\">\n <p>\n <a class=\"govuk-body\" (click)=\"onCancel()\" href=\"javascript:void(0)\">\n {{'Cancel' | rpxTranslate}}\n </a>\n </p>\n </div>\n </div>\n</form>\n" }]
|
|
35211
35243
|
}], () => [{ type: i4.FormBuilder }, { type: i1$1.Router }, { type: CasesService }, { type: i1$1.ActivatedRoute }, { type: CaseNotifier }], null); })();
|
|
35212
35244
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseSpecificAccessRequestComponent, { className: "CaseSpecificAccessRequestComponent", filePath: "lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.ts", lineNumber: 22 }); })();
|
|
35213
35245
|
|