@crodriguezdominguez/ion-intl-tel-input 2.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 +308 -0
- package/crodriguezdominguez-ion-intl-tel-input-2.0.0.tgz +0 -0
- package/esm2020/crodriguezdominguez-ion-intl-tel-input.mjs +5 -0
- package/esm2020/lib/data/countries.mjs +2006 -0
- package/esm2020/lib/ion-intl-tel-input/ion-intl-tel-code.component.mjs +72 -0
- package/esm2020/lib/ion-intl-tel-input/ion-intl-tel-input.component.mjs +747 -0
- package/esm2020/lib/ion-intl-tel-input.directive.mjs +68 -0
- package/esm2020/lib/ion-intl-tel-input.module.mjs +51 -0
- package/esm2020/lib/ion-intl-tel-input.service.mjs +20 -0
- package/esm2020/lib/models/country.model.mjs +2 -0
- package/esm2020/lib/models/ion-intl-tel-input.model.mjs +2 -0
- package/esm2020/lib/pipes/country-placeholder.mjs +38 -0
- package/esm2020/lib/util/util.mjs +10 -0
- package/esm2020/public-api.mjs +10 -0
- package/fesm2015/crodriguezdominguez-ion-intl-tel-input.mjs +2997 -0
- package/fesm2015/crodriguezdominguez-ion-intl-tel-input.mjs.map +1 -0
- package/fesm2020/crodriguezdominguez-ion-intl-tel-input.mjs +2994 -0
- package/fesm2020/crodriguezdominguez-ion-intl-tel-input.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/data/countries.d.ts +2 -0
- package/lib/ion-intl-tel-input/ion-intl-tel-code.component.d.ts +28 -0
- package/lib/ion-intl-tel-input/ion-intl-tel-input.component.d.ts +310 -0
- package/lib/ion-intl-tel-input.directive.d.ts +10 -0
- package/lib/ion-intl-tel-input.module.d.ts +13 -0
- package/lib/ion-intl-tel-input.service.d.ts +9 -0
- package/lib/models/country.model.d.ts +10 -0
- package/lib/models/ion-intl-tel-input.model.d.ts +6 -0
- package/lib/pipes/country-placeholder.d.ts +8 -0
- package/lib/util/util.d.ts +1 -0
- package/package.json +64 -0
- package/public-api.d.ts +6 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { IonSearchbar, ModalController } from '@ionic/angular';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@ionic/angular";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
export class IonIntTelCodeComponent {
|
|
7
|
+
constructor(modalCtrl) {
|
|
8
|
+
this.modalCtrl = modalCtrl;
|
|
9
|
+
this.closeButtonText = 'Close';
|
|
10
|
+
this.closeButtonSlot = 'end';
|
|
11
|
+
}
|
|
12
|
+
ngOnInit() {
|
|
13
|
+
this.allCountries = this.countries;
|
|
14
|
+
}
|
|
15
|
+
ionViewDidEnter() {
|
|
16
|
+
if (this.sbar && this.shouldFocusSearchbar) {
|
|
17
|
+
setTimeout(() => { this.sbar.setFocus(); }, 400);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
search(ev) {
|
|
21
|
+
let search = ev.detail.value;
|
|
22
|
+
this.notFound = false;
|
|
23
|
+
if (search === '' || search === null) {
|
|
24
|
+
this.countries = this.allCountries;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
search = search.toLocaleLowerCase();
|
|
28
|
+
this.countries = this.allCountries.filter(r => {
|
|
29
|
+
return (r.name && r.name.toLocaleLowerCase().indexOf(search) !== -1);
|
|
30
|
+
});
|
|
31
|
+
if (this.countries.length === 0) {
|
|
32
|
+
this.notFound = true;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
itemTapped(c) {
|
|
37
|
+
this.modalCtrl.dismiss(c);
|
|
38
|
+
}
|
|
39
|
+
closeModal() {
|
|
40
|
+
this.modalCtrl.dismiss(null);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/** @nocollapse */ IonIntTelCodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: IonIntTelCodeComponent, deps: [{ token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Component });
|
|
44
|
+
/** @nocollapse */ IonIntTelCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: IonIntTelCodeComponent, selector: "ion-intl-tel-code", inputs: { country: "country", canSearch: "canSearch", closeButtonText: "closeButtonText", closeButtonSlot: "closeButtonSlot", countries: "countries", searchFailText: "searchFailText", searchPlaceholder: "searchPlaceholder", shouldFocusSearchbar: "shouldFocusSearchbar", title: "title", dialCode: "dialCode" }, viewQueries: [{ propertyName: "sbar", first: true, predicate: ["searchBar"], descendants: true }], ngImport: i0, template: "<ion-header>\n <ion-toolbar>\n <ion-title class=\"ion-text-center\">\n {{title}}\n </ion-title>\n\n <ion-buttons [slot]=\"closeButtonSlot\">\n <ion-button ion-button (click)=\"closeModal()\">{{closeButtonText}}</ion-button>\n </ion-buttons>\n\n </ion-toolbar>\n <ion-searchbar #searchBar *ngIf=\"canSearch\" placeholder=\"{{searchPlaceholder}}\" [debounce]=\"400\"\n (keyup.enter)=\"$event.target.blur()\" (ionChange)=\"search($event)\"></ion-searchbar>\n</ion-header>\n\n<ion-content>\n <ion-list>\n <ion-radio-group [value]=\"country.isoCode\">\n <ion-item style=\"white-space:normal\" *ngFor=\"let c of countries\">\n <ion-radio [value]=\"c.isoCode\" slot=\"start\" color=\"primary\" (click)=\"itemTapped(c)\"></ion-radio>\n <ion-label>{{c.name}} <span *ngIf=\"dialCode\">{{dialCode}}{{c.displayDialCode}}</span></ion-label>\n <span slot=\"end\" class=\"fi fi-{{c.flagClass}}\"></span>\n </ion-item>\n </ion-radio-group>\n <ion-item lines=\"none\" *ngIf=\"notFound\">\n <ion-text>{{searchFailText}}</ion-text>\n </ion-item>\n </ion-list>\n</ion-content>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i1.IonRadio, selector: "ion-radio", inputs: ["color", "disabled", "justify", "labelPlacement", "legacy", "mode", "name", "value"] }, { kind: "component", type: i1.IonRadioGroup, selector: "ion-radio-group", inputs: ["allowEmptySelection", "name", "value"] }, { kind: "component", type: i1.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "mode", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i1.RadioValueAccessor, selector: "ion-radio" }, { kind: "directive", type: i1.SelectValueAccessor, selector: "ion-range, ion-select, ion-radio-group, ion-segment, ion-datetime" }, { kind: "directive", type: i1.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }] });
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: IonIntTelCodeComponent, decorators: [{
|
|
46
|
+
type: Component,
|
|
47
|
+
args: [{ selector: 'ion-intl-tel-code', template: "<ion-header>\n <ion-toolbar>\n <ion-title class=\"ion-text-center\">\n {{title}}\n </ion-title>\n\n <ion-buttons [slot]=\"closeButtonSlot\">\n <ion-button ion-button (click)=\"closeModal()\">{{closeButtonText}}</ion-button>\n </ion-buttons>\n\n </ion-toolbar>\n <ion-searchbar #searchBar *ngIf=\"canSearch\" placeholder=\"{{searchPlaceholder}}\" [debounce]=\"400\"\n (keyup.enter)=\"$event.target.blur()\" (ionChange)=\"search($event)\"></ion-searchbar>\n</ion-header>\n\n<ion-content>\n <ion-list>\n <ion-radio-group [value]=\"country.isoCode\">\n <ion-item style=\"white-space:normal\" *ngFor=\"let c of countries\">\n <ion-radio [value]=\"c.isoCode\" slot=\"start\" color=\"primary\" (click)=\"itemTapped(c)\"></ion-radio>\n <ion-label>{{c.name}} <span *ngIf=\"dialCode\">{{dialCode}}{{c.displayDialCode}}</span></ion-label>\n <span slot=\"end\" class=\"fi fi-{{c.flagClass}}\"></span>\n </ion-item>\n </ion-radio-group>\n <ion-item lines=\"none\" *ngIf=\"notFound\">\n <ion-text>{{searchFailText}}</ion-text>\n </ion-item>\n </ion-list>\n</ion-content>\n" }]
|
|
48
|
+
}], ctorParameters: function () { return [{ type: i1.ModalController }]; }, propDecorators: { country: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], canSearch: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}], closeButtonText: [{
|
|
53
|
+
type: Input
|
|
54
|
+
}], closeButtonSlot: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}], countries: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], searchFailText: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], searchPlaceholder: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], shouldFocusSearchbar: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], title: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], dialCode: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], sbar: [{
|
|
69
|
+
type: ViewChild,
|
|
70
|
+
args: ['searchBar']
|
|
71
|
+
}] } });
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uLWludGwtdGVsLWNvZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW9uLWludGwtdGVsLWlucHV0L3NyYy9saWIvaW9uLWludGwtdGVsLWlucHV0L2lvbi1pbnRsLXRlbC1jb2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lvbi1pbnRsLXRlbC1pbnB1dC9zcmMvbGliL2lvbi1pbnRsLXRlbC1pbnB1dC9pb24taW50bC10ZWwtY29kZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQVMvRCxNQUFNLE9BQU8sc0JBQXNCO0lBbUJqQyxZQUNZLFNBQTBCO1FBQTFCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBaEI3QixvQkFBZSxHQUFHLE9BQU8sQ0FBQztRQUMxQixvQkFBZSxHQUFHLEtBQUssQ0FBQztJQWtCakMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDckMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzFDLFVBQVUsQ0FBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ25EO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFFO1FBQ1AsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxNQUFNLEtBQUssRUFBRSxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQ3BDO2FBQU07WUFDTCxNQUFNLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBRSxDQUFDLENBQUMsRUFBRTtnQkFDN0MsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZFLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2FBQ3RCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLENBQUM7UUFDVixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7O3NJQXpEVSxzQkFBc0I7MEhBQXRCLHNCQUFzQixrZENWbkMsK25DQTZCQTsyRkRuQmEsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUVFLG1CQUFtQjtzR0FNcEIsT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVrQixJQUFJO3NCQUEzQixTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uU2VhcmNoYmFyLCBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBDb3VudHJ5SSB9IGZyb20gJy4uL21vZGVscy9jb3VudHJ5Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdpb24taW50bC10ZWwtY29kZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9pb24taW50bC10ZWwtY29kZS5jb21wb25lbnQuaHRtbCdcbn0pXG5cbmV4cG9ydCBjbGFzcyBJb25JbnRUZWxDb2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBjb3VudHJ5OiBDb3VudHJ5STtcbiAgQElucHV0KCkgY2FuU2VhcmNoOiBib29sZWFuO1xuICBASW5wdXQoKSBjbG9zZUJ1dHRvblRleHQgPSAnQ2xvc2UnO1xuICBASW5wdXQoKSBjbG9zZUJ1dHRvblNsb3QgPSAnZW5kJztcbiAgQElucHV0KCkgY291bnRyaWVzOiBDb3VudHJ5SVtdO1xuICBASW5wdXQoKSBzZWFyY2hGYWlsVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoKSBzaG91bGRGb2N1c1NlYXJjaGJhcjogYm9vbGVhbjtcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgZGlhbENvZGU6IHN0cmluZztcblxuICBAVmlld0NoaWxkKCdzZWFyY2hCYXInKSBzYmFyOiBJb25TZWFyY2hiYXI7XG5cbiAgcHJpdmF0ZSBhbGxDb3VudHJpZXM6IENvdW50cnlJW107XG5cbiAgcHVibGljIG5vdEZvdW5kO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBtb2RhbEN0cmw6IE1vZGFsQ29udHJvbGxlclxuICApIHtcblxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hbGxDb3VudHJpZXMgPSB0aGlzLmNvdW50cmllcztcbiAgfVxuXG4gIGlvblZpZXdEaWRFbnRlcigpIHtcbiAgICBpZiAodGhpcy5zYmFyICYmIHRoaXMuc2hvdWxkRm9jdXNTZWFyY2hiYXIpIHtcbiAgICAgIHNldFRpbWVvdXQoICgpID0+IHsgdGhpcy5zYmFyLnNldEZvY3VzKCk7IH0sIDQwMCk7XG4gICAgfVxuICB9XG5cbiAgc2VhcmNoKGV2KSB7XG4gICAgbGV0IHNlYXJjaCA9IGV2LmRldGFpbC52YWx1ZTtcbiAgICB0aGlzLm5vdEZvdW5kID0gZmFsc2U7XG4gICAgaWYgKHNlYXJjaCA9PT0gJycgfHwgc2VhcmNoID09PSBudWxsKSB7XG4gICAgICB0aGlzLmNvdW50cmllcyA9IHRoaXMuYWxsQ291bnRyaWVzO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWFyY2ggPSBzZWFyY2gudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgIHRoaXMuY291bnRyaWVzID0gdGhpcy5hbGxDb3VudHJpZXMuZmlsdGVyKCByID0+IHtcbiAgICAgICAgcmV0dXJuIChyLm5hbWUgJiYgci5uYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2gpICE9PSAtMSk7XG4gICAgICB9KTtcbiAgICAgIGlmICh0aGlzLmNvdW50cmllcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5ub3RGb3VuZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaXRlbVRhcHBlZChjKSB7XG4gICAgdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyhjKTtcbiAgfVxuXG4gIGNsb3NlTW9kYWwoKSB7XG4gICAgdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyhudWxsKTtcbiAgfVxuXG59XG4iLCI8aW9uLWhlYWRlcj5cbiAgPGlvbi10b29sYmFyPlxuICAgIDxpb24tdGl0bGUgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIj5cbiAgICAgIHt7dGl0bGV9fVxuICAgIDwvaW9uLXRpdGxlPlxuXG4gICAgPGlvbi1idXR0b25zIFtzbG90XT1cImNsb3NlQnV0dG9uU2xvdFwiPlxuICAgICAgPGlvbi1idXR0b24gaW9uLWJ1dHRvbiAoY2xpY2spPVwiY2xvc2VNb2RhbCgpXCI+e3tjbG9zZUJ1dHRvblRleHR9fTwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuXG4gIDwvaW9uLXRvb2xiYXI+XG4gIDxpb24tc2VhcmNoYmFyICNzZWFyY2hCYXIgKm5nSWY9XCJjYW5TZWFyY2hcIiBwbGFjZWhvbGRlcj1cInt7c2VhcmNoUGxhY2Vob2xkZXJ9fVwiIFtkZWJvdW5jZV09XCI0MDBcIlxuICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiJGV2ZW50LnRhcmdldC5ibHVyKClcIiAoaW9uQ2hhbmdlKT1cInNlYXJjaCgkZXZlbnQpXCI+PC9pb24tc2VhcmNoYmFyPlxuPC9pb24taGVhZGVyPlxuXG48aW9uLWNvbnRlbnQ+XG4gIDxpb24tbGlzdD5cbiAgICA8aW9uLXJhZGlvLWdyb3VwIFt2YWx1ZV09XCJjb3VudHJ5Lmlzb0NvZGVcIj5cbiAgICAgIDxpb24taXRlbSBzdHlsZT1cIndoaXRlLXNwYWNlOm5vcm1hbFwiICpuZ0Zvcj1cImxldCBjIG9mIGNvdW50cmllc1wiPlxuICAgICAgICA8aW9uLXJhZGlvIFt2YWx1ZV09XCJjLmlzb0NvZGVcIiBzbG90PVwic3RhcnRcIiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiaXRlbVRhcHBlZChjKVwiPjwvaW9uLXJhZGlvPlxuICAgICAgICA8aW9uLWxhYmVsPnt7Yy5uYW1lfX0gPHNwYW4gKm5nSWY9XCJkaWFsQ29kZVwiPnt7ZGlhbENvZGV9fXt7Yy5kaXNwbGF5RGlhbENvZGV9fTwvc3Bhbj48L2lvbi1sYWJlbD5cbiAgICAgICAgPHNwYW4gc2xvdD1cImVuZFwiIGNsYXNzPVwiZmkgZmkte3tjLmZsYWdDbGFzc319XCI+PC9zcGFuPlxuICAgICAgPC9pb24taXRlbT5cbiAgICA8L2lvbi1yYWRpby1ncm91cD5cbiAgICA8aW9uLWl0ZW0gbGluZXM9XCJub25lXCIgKm5nSWY9XCJub3RGb3VuZFwiPlxuICAgICAgPGlvbi10ZXh0Pnt7c2VhcmNoRmFpbFRleHR9fTwvaW9uLXRleHQ+XG4gICAgPC9pb24taXRlbT5cbiAgPC9pb24tbGlzdD5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
|