UNPKG

@visa/nova-angular

Version:

Visa Product Design System Nova Angular library

165 lines 16.7 kB
/** * Copyright (c) 2025 Visa, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **/ import { Directive, HostBinding, Input } from '@angular/core'; import * as i0 from "@angular/core"; export class MarginDirective { get hostClasses() { return [ this.vMT || this.vMT === 0 ? this.convertToString(this.vMT).startsWith('-') ? `-v-mt${this.vMT}` : `v-mt-${this.vMT}` : null, this.vMR || this.vMR === 0 ? this.convertToString(this.vMR).startsWith('-') ? `-v-mr${this.vMR}` : `v-mr-${this.vMR}` : null, this.vMB || this.vMB === 0 ? this.convertToString(this.vMB).startsWith('-') ? `-v-mb${this.vMB}` : `v-mb-${this.vMB}` : null, this.vML || this.vML === 0 ? this.convertToString(this.vML).startsWith('-') ? `-v-ml${this.vML}` : `v-ml-${this.vML}` : null, this.vMX || this.vMX === 0 ? this.convertToString(this.vMX).startsWith('-') ? `-v-mx${this.vMX}` : `v-mx-${this.vMX}` : null, this.vMY || this.vMY === 0 ? this.convertToString(this.vMY).startsWith('-') ? `-v-my${this.vMY}` : `v-my-${this.vMY}` : null, this.vM || this.vM === 0 ? this.convertToString(this.vM).startsWith('-') ? `-v-m${this.vM}` : `v-m-${this.vM}` : null ].join(' '); } convertToString(value) { return value ? value.toString() : ''; } /** * Sets margin-block-start property. <br> * Accepts: 0 - 48 or <code>SpacingProperties</code>. */ get vMT() { return this._vMT; } set vMT(value) { this._vMT = value; } /** * Sets margin-inline-end property. <br> * Accepts: 0 - 48 or <code>SpacingProperties</code>. */ get vMR() { return this._vMR; } set vMR(value) { this._vMR = value; } /** * Sets margin-block-end property. <br> * Accepts: 0 - 48 or <code>SpacingProperties</code>. */ get vMB() { return this._vMB; } set vMB(value) { this._vMB = value; } /** * Sets margin-inline-start property. <br> * Accepts: 0 - 48 or <code>SpacingProperties</code>. */ get vML() { return this._vML; } set vML(value) { this._vML = value; } /** * Sets margin-inline property. <br> * Accepts: 0 - 48 or <code>SpacingProperties</code>. */ get vMX() { return this._vMX; } set vMX(value) { this._vMX = value; } /** * Sets margin-block property. <br> * Accepts: 0 - 48 or <code>SpacingProperties</code>. */ get vMY() { return this._vMY; } set vMY(value) { this._vMY = value; } /** * Sets margin property. <br> * Accepts: 0 - 48 or <code>SpacingProperties</code>. */ get vM() { return this._vM; } set vM(value) { this._vM = value; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MarginDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: MarginDirective, isStandalone: true, selector: "[vMT], [vMR], [vMB], [vML], [vMX], [vMY], [vM], ", inputs: { vMT: "vMT", vMR: "vMR", vMB: "vMB", vML: "vML", vMX: "vMX", vMY: "vMY", vM: "vM" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MarginDirective, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[vMT], ' + // margin block start '[vMR], ' + // margin inline end '[vMB], ' + // margin block end '[vML], ' + // margin inline start '[vMX], ' + // margin inline '[vMY], ' + // margin block '[vM], ' // all margins }] }], propDecorators: { hostClasses: [{ type: HostBinding, args: ['class'] }], vMT: [{ type: Input }], vMR: [{ type: Input }], vMB: [{ type: Input }], vML: [{ type: Input }], vMX: [{ type: Input }], vMY: [{ type: Input }], vM: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyZ2luLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbm92YS1saWIvc3JjL2xpYi9tYXJnaW4vbWFyZ2luLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWM5RCxNQUFNLE9BQU8sZUFBZTtJQUMxQixJQUNJLFdBQVc7UUFDYixPQUFPO1lBQ0wsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQ3hCLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO29CQUM5QyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNwQixDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUN0QixDQUFDLENBQUMsSUFBSTtZQUNSLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUN4QixDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztvQkFDOUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDdEIsQ0FBQyxDQUFDLElBQUk7WUFDUixJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7b0JBQzlDLENBQUMsQ0FBQyxRQUFR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QUM7SUFDbkIsQ0FBQztJQUNELElBQUksR0FBRyxDQUFDLEtBQUs7UUFDWCxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBR0Q7OztPQUdHO0lBQ0gsSUFDSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFDRCxJQUFJLEdBQUcsQ0FBQyxLQUFLO1FBQ1gsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUdEOzs7T0FHRztJQUNILElBQ0ksRUFBRTtRQUNKLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBQ0QsSUFBSSxFQUFFLENBQUMsS0FBSztRQUNWLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO0lBQ25CLENBQUM7K0dBdElVLGVBQWU7bUdBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFYM0IsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUNOLFNBQVMsR0FBRyxxQkFBcUI7d0JBQ2pDLFNBQVMsR0FBRyxvQkFBb0I7d0JBQ2hDLFNBQVMsR0FBRyxtQkFBbUI7d0JBQy9CLFNBQVMsR0FBRyxzQkFBc0I7d0JBQ2xDLFNBQVMsR0FBRyxnQkFBZ0I7d0JBQzVCLFNBQVMsR0FBRyxlQUFlO3dCQUMzQixRQUFRLENBQUMsY0FBYztpQkFDMUI7OEJBR0ssV0FBVztzQkFEZCxXQUFXO3VCQUFDLE9BQU87Z0JBa0RoQixHQUFHO3NCQUROLEtBQUs7Z0JBY0YsR0FBRztzQkFETixLQUFLO2dCQWNGLEdBQUc7c0JBRE4sS0FBSztnQkFjRixHQUFHO3NCQUROLEtBQUs7Z0JBY0YsR0FBRztzQkFETixLQUFLO2dCQWNGLEdBQUc7c0JBRE4sS0FBSztnQkFjRixFQUFFO3NCQURMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMjUgVmlzYSwgSW5jLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICoqL1xuaW1wb3J0IHsgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNwYWNpbmdQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vbm92YS1saWIuY29uc3RhbnRzJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOlxuICAgICdbdk1UXSwgJyArIC8vIG1hcmdpbiBibG9jayBzdGFydFxuICAgICdbdk1SXSwgJyArIC8vIG1hcmdpbiBpbmxpbmUgZW5kXG4gICAgJ1t2TUJdLCAnICsgLy8gbWFyZ2luIGJsb2NrIGVuZFxuICAgICdbdk1MXSwgJyArIC8vIG1hcmdpbiBpbmxpbmUgc3RhcnRcbiAgICAnW3ZNWF0sICcgKyAvLyBtYXJnaW4gaW5saW5lXG4gICAgJ1t2TVldLCAnICsgLy8gbWFyZ2luIGJsb2NrXG4gICAgJ1t2TV0sICcgLy8gYWxsIG1hcmdpbnNcbn0pXG5leHBvcnQgY2xhc3MgTWFyZ2luRGlyZWN0aXZlIHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3NlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBbXG4gICAgICB0aGlzLnZNVCB8fCB0aGlzLnZNVCA9PT0gMFxuICAgICAgICA/IHRoaXMuY29udmVydFRvU3RyaW5nKHRoaXMudk1UKS5zdGFydHNXaXRoKCctJylcbiAgICAgICAgICA/IGAtdi1tdCR7dGhpcy52TVR9YFxuICAgICAgICAgIDogYHYtbXQtJHt0aGlzLnZNVH1gXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRoaXMudk1SIHx8IHRoaXMudk1SID09PSAwXG4gICAgICAgID8gdGhpcy5jb252ZXJ0VG9TdHJpbmcodGhpcy52TVIpLnN0YXJ0c1dpdGgoJy0nKVxuICAgICAgICAgID8gYC12LW1yJHt0aGlzLnZNUn1gXG4gICAgICAgICAgOiBgdi1tci0ke3RoaXMudk1SfWBcbiAgICAgICAgOiBudWxsLFxuICAgICAgdGhpcy52TUIgfHwgdGhpcy52TUIgPT09IDBcbiAgICAgICAgPyB0aGlzLmNvbnZlcnRUb1N0cmluZyh0aGlzLnZNQikuc3RhcnRzV2l0aCgnLScpXG4gICAgICAgICAgPyBgLXYtbWIke3RoaXMudk1CfWBcbiAgICAgICAgICA6IGB2LW1iLSR7dGhpcy52TUJ9YFxuICAgICAgICA6IG51bGwsXG4gICAgICB0aGlzLnZNTCB8fCB0aGlzLnZNTCA9PT0gMFxuICAgICAgICA/IHRoaXMuY29udmVydFRvU3RyaW5nKHRoaXMudk1MKS5zdGFydHNXaXRoKCctJylcbiAgICAgICAgICA/IGAtdi1tbCR7dGhpcy52TUx9YFxuICAgICAgICAgIDogYHYtbWwtJHt0aGlzLnZNTH1gXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRoaXMudk1YIHx8IHRoaXMudk1YID09PSAwXG4gICAgICAgID8gdGhpcy5jb252ZXJ0VG9TdHJpbmcodGhpcy52TVgpLnN0YXJ0c1dpdGgoJy0nKVxuICAgICAgICAgID8gYC12LW14JHt0aGlzLnZNWH1gXG4gICAgICAgICAgOiBgdi1teC0ke3RoaXMudk1YfWBcbiAgICAgICAgOiBudWxsLFxuICAgICAgdGhpcy52TVkgfHwgdGhpcy52TVkgPT09IDBcbiAgICAgICAgPyB0aGlzLmNvbnZlcnRUb1N0cmluZyh0aGlzLnZNWSkuc3RhcnRzV2l0aCgnLScpXG4gICAgICAgICAgPyBgLXYtbXkke3RoaXMudk1ZfWBcbiAgICAgICAgICA6IGB2LW15LSR7dGhpcy52TVl9YFxuICAgICAgICA6IG51bGwsXG4gICAgICB0aGlzLnZNIHx8IHRoaXMudk0gPT09IDBcbiAgICAgICAgPyB0aGlzLmNvbnZlcnRUb1N0cmluZyh0aGlzLnZNKS5zdGFydHNXaXRoKCctJylcbiAgICAgICAgICA/IGAtdi1tJHt0aGlzLnZNfWBcbiAgICAgICAgICA6IGB2LW0tJHt0aGlzLnZNfWBcbiAgICAgICAgOiBudWxsXG4gICAgXS5qb2luKCcgJyk7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRUb1N0cmluZyh2YWx1ZTogbnVtYmVyIHwgU3BhY2luZ1Byb3BlcnRpZXMgfCBOdW1iZXJJbnB1dCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlID8gdmFsdWUudG9TdHJpbmcoKSA6ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgbWFyZ2luLWJsb2NrLXN0YXJ0IHByb3BlcnR5LiA8YnI+XG4gICAqIEFjY2VwdHM6IDAgLSA0OCBvciA8Y29kZT5TcGFjaW5nUHJvcGVydGllczwvY29kZT4uXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgdk1UKCk6IG51bWJlciB8IFNwYWNpbmdQcm9wZXJ0aWVzIHwgTnVtYmVySW5wdXQge1xuICAgIHJldHVybiB0aGlzLl92TVQ7XG4gIH1cbiAgc2V0IHZNVCh2YWx1ZSkge1xuICAgIHRoaXMuX3ZNVCA9IHZhbHVlO1xuICB9XG4gIF92TVQ6IG51bWJlciB8IFNwYWNpbmdQcm9wZXJ0aWVzIHwgTnVtYmVySW5wdXQ7XG5cbiAgLyoqXG4gICAqIFNldHMgbWFyZ2luLWlubGluZS1lbmQgcHJvcGVydHkuIDxicj5cbiAgICogQWNjZXB0czogMCAtIDQ4IG9yIDxjb2RlPlNwYWNpbmdQcm9wZXJ0aWVzPC9jb2RlPi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCB2TVIoKTogbnVtYmVyIHwgU3BhY2luZ1Byb3BlcnRpZXMgfCBOdW1iZXJJbnB1dCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZNUjtcbiAgfVxuICBzZXQgdk1SKHZhbHVlKSB7XG4gICAgdGhpcy5fdk1SID0gdmFsdWU7XG4gIH1cbiAgX3ZNUjogbnVtYmVyIHwgU3BhY2luZ1Byb3BlcnRpZXMgfCBOdW1iZXJJbnB1dDtcblxuICAvKipcbiAgICogU2V0cyBtYXJnaW4tYmxvY2stZW5kIHByb3BlcnR5LiA8YnI+XG4gICAqIEFjY2VwdHM6IDAgLSA0OCBvciA8Y29kZT5TcGFjaW5nUHJvcGVydGllczwvY29kZT4uXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgdk1CKCk6IG51bWJlciB8IFNwYWNpbmdQcm9wZXJ0aWVzIHwgTnVtYmVySW5wdXQge1xuICAgIHJldHVybiB0aGlzLl92TUI7XG4gIH1cbiAgc2V0IHZNQih2YWx1ZSkge1xuICAgIHRoaXMuX3ZNQiA9IHZhbHVlO1xuICB9XG4gIF92TUI6IG51bWJlciB8IFNwYWNpbmdQcm9wZXJ0aWVzIHwgTnVtYmVySW5wdXQ7XG5cbiAgLyoqXG4gICAqIFNldHMgbWFyZ2luLWlubGluZS1zdGFydCBwcm9wZXJ0eS4gPGJyPlxuICAgKiBBY2NlcHRzOiAwIC0gNDggb3IgPGNvZGU+U3BhY2luZ1Byb3BlcnRpZXM8L2NvZGU+LlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHZNTCgpOiBudW1iZXIgfCBTcGFjaW5nUHJvcGVydGllcyB8IE51bWJlcklucHV0IHtcbiAgICByZXR1cm4gdGhpcy5fdk1MO1xuICB9XG4gIHNldCB2TUwodmFsdWUpIHtcbiAgICB0aGlzLl92TUwgPSB2YWx1ZTtcbiAgfVxuICBfdk1MOiBudW1iZXIgfCBTcGFjaW5nUHJvcGVydGllcyB8IE51bWJlcklucHV0O1xuXG4gIC8qKlxuICAgKiBTZXRzIG1hcmdpbi1pbmxpbmUgcHJvcGVydHkuIDxicj5cbiAgICogQWNjZXB0czogMCAtIDQ4IG9yIDxjb2RlPlNwYWNpbmdQcm9wZXJ0aWVzPC9jb2RlPi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCB2TVgoKTogbnVtYmVyIHwgU3BhY2luZ1Byb3BlcnRpZXMgfCBOdW1iZXJJbnB1dCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZNWDtcbiAgfVxuICBzZXQgdk1YKHZhbHVlKSB7XG4gICAgdGhpcy5fdk1YID0gdmFsdWU7XG4gIH1cbiAgX3ZNWDogbnVtYmVyIHwgU3BhY2luZ1Byb3BlcnRpZXMgfCBOdW1iZXJJbnB1dDtcblxuICAvKipcbiAgICogU2V0cyBtYXJnaW4tYmxvY2sgcHJvcGVydHkuIDxicj5cbiAgICogQWNjZXB0czogMCAtIDQ4IG9yIDxjb2RlPlNwYWNpbmdQcm9wZXJ0aWVzPC9jb2RlPi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCB2TVkoKTogbnVtYmVyIHwgU3BhY2luZ1Byb3BlcnRpZXMgfCBOdW1iZXJJbnB1dCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZNWTtcbiAgfVxuICBzZXQgdk1ZKHZhbHVlKSB7XG4gICAgdGhpcy5fdk1ZID0gdmFsdWU7XG4gIH1cbiAgX3ZNWTogbnVtYmVyIHwgU3BhY2luZ1Byb3BlcnRpZXMgfCBOdW1iZXJJbnB1dDtcblxuICAvKipcbiAgICogU2V0cyBtYXJnaW4gcHJvcGVydHkuIDxicj5cbiAgICogQWNjZXB0czogMCAtIDQ4IG9yIDxjb2RlPlNwYWNpbmdQcm9wZXJ0aWVzPC9jb2RlPi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCB2TSgpOiBudW1iZXIgfCBTcGFjaW5nUHJvcGVydGllcyB8IE51bWJlcklucHV0IHtcbiAgICByZXR1cm4gdGhpcy5fdk07XG4gIH1cbiAgc2V0IHZNKHZhbHVlKSB7XG4gICAgdGhpcy5fdk0gPSB2YWx1ZTtcbiAgfVxuICBfdk06IG51bWJlciB8IFNwYWNpbmdQcm9wZXJ0aWVzIHwgTnVtYmVySW5wdXQ7XG59XG4iXX0=