ngx-dial-input 2.0.2 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +9 -12
  2. package/data/countries.d.ts +2 -0
  3. package/data/countries.model.d.ts +9 -0
  4. package/esm2020/data/countries.mjs +1218 -0
  5. package/esm2020/data/countries.model.mjs +2 -0
  6. package/esm2020/lib/phone-input.component.mjs +302 -0
  7. package/esm2020/lib/phone-input.module.mjs +24 -0
  8. package/esm2020/ngx-dial-input.mjs +5 -0
  9. package/esm2020/public-api.mjs +6 -0
  10. package/fesm2015/ngx-dial-input.mjs +1555 -0
  11. package/fesm2015/ngx-dial-input.mjs.map +1 -0
  12. package/fesm2020/ngx-dial-input.mjs +1551 -0
  13. package/fesm2020/ngx-dial-input.mjs.map +1 -0
  14. package/index.d.ts +5 -0
  15. package/lib/phone-input.component.d.ts +37 -0
  16. package/lib/phone-input.module.d.ts +9 -0
  17. package/package.json +32 -49
  18. package/{projects/phone-input/src/public-api.ts → public-api.d.ts} +0 -3
  19. package/.editorconfig +0 -16
  20. package/.vscode/extensions.json +0 -4
  21. package/.vscode/launch.json +0 -20
  22. package/.vscode/tasks.json +0 -42
  23. package/angular.json +0 -41
  24. package/projects/phone-input/README.md +0 -24
  25. package/projects/phone-input/ng-package.json +0 -7
  26. package/projects/phone-input/package.json +0 -9
  27. package/projects/phone-input/src/data/countries.model.ts +0 -9
  28. package/projects/phone-input/src/data/countries.ts +0 -1219
  29. package/projects/phone-input/src/lib/phone-input.component.css +0 -0
  30. package/projects/phone-input/src/lib/phone-input.component.html +0 -0
  31. package/projects/phone-input/src/lib/phone-input.component.ts +0 -348
  32. package/projects/phone-input/src/lib/phone-input.module.ts +0 -15
  33. package/projects/phone-input/src/lib/phone-input.service.spec.ts +0 -16
  34. package/projects/phone-input/tsconfig.lib.json +0 -15
  35. package/projects/phone-input/tsconfig.lib.prod.json +0 -10
  36. package/projects/phone-input/tsconfig.spec.json +0 -14
  37. package/tsconfig.json +0 -33
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyaWVzLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGhvbmUtaW5wdXQvc3JjL2RhdGEvY291bnRyaWVzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENvdW50cmllc1Bob25lSW5wdXREYXRhIHtcclxuICBuYW1lIDogc3RyaW5nO1xyXG4gIG5hdGl2ZSA6IHN0cmluZztcclxuICBpc28yIDogc3RyaW5nO1xyXG4gIGRpYWxDb2RlIDogc3RyaW5nO1xyXG4gIGZsYWcgOiBzdHJpbmc7XHJcbiAgZm9ybWF0IDogc3RyaW5nO1xyXG4gIHBob25lTGVuZ3RoOiBudW1iZXI7XHJcbn1cclxuIl19
@@ -0,0 +1,302 @@
1
+ import { Component, Input, Output, EventEmitter, HostListener, forwardRef } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { countries } from '../data/countries';
4
+ import { trigger, state, style, transition, animate } from '@angular/animations';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "@angular/forms";
8
+ export class PhoneInputComponent {
9
+ constructor(eRef) {
10
+ this.eRef = eRef;
11
+ this.countriesList = countries;
12
+ this.searchTerm = '';
13
+ this.defaultCountry = '';
14
+ this.placeholder = '';
15
+ this.searchEnabled = true;
16
+ this.numberFormat = 'international';
17
+ this.setFirstCountry = '';
18
+ this.phoneChange = new EventEmitter();
19
+ this.phoneNumber = '';
20
+ this.isInvalid = false;
21
+ this.dropdownOpen = false;
22
+ this.animating = false;
23
+ this.selectedCountry = countries[0];
24
+ this.onChange = () => { };
25
+ this.onTouched = () => { };
26
+ }
27
+ ngOnInit() {
28
+ if (this.defaultCountry) {
29
+ const match = countries.find(c => c.iso2 === this.defaultCountry.toLowerCase());
30
+ if (match)
31
+ this.selectedCountry = match;
32
+ }
33
+ }
34
+ handleClickOutside(event) {
35
+ if (!this.eRef.nativeElement.contains(event.target)) {
36
+ this.dropdownOpen = false;
37
+ }
38
+ }
39
+ onAnimationDone(event) {
40
+ if (!this.dropdownOpen) {
41
+ this.animating = false;
42
+ }
43
+ }
44
+ toggleDropdown() {
45
+ this.dropdownOpen = !this.dropdownOpen;
46
+ this.animating = true;
47
+ }
48
+ onClickOutside(event) {
49
+ if (!this.eRef.nativeElement.contains(event.target)) {
50
+ this.dropdownOpen = false;
51
+ }
52
+ }
53
+ onSearchChange() {
54
+ const term = this.searchTerm.toLowerCase();
55
+ this.countriesList = countries.filter(c => c.name.toLowerCase().includes(term) ||
56
+ (c.native?.toLowerCase().includes(term)));
57
+ }
58
+ selectCountry(country) {
59
+ this.selectedCountry = country;
60
+ this.searchTerm = '';
61
+ this.countriesList = countries;
62
+ this.dropdownOpen = false;
63
+ this.emitPhoneChange();
64
+ }
65
+ onPhoneInput() {
66
+ this.emitPhoneChange();
67
+ }
68
+ emitPhoneChange() {
69
+ const raw = this.phoneNumber || '';
70
+ const digitsOnly = raw.replace(/\D/g, '');
71
+ const hyphenCount = (raw.match(/-/g) || []).length;
72
+ const spaceCount = (raw.match(/ /g) || []).length;
73
+ const totalChars = this.phoneNumber.length;
74
+ const maxAllowedLength = this.selectedCountry?.phoneLength + hyphenCount + spaceCount;
75
+ if (digitsOnly.length !== this.selectedCountry?.phoneLength) {
76
+ this.isInvalid = true;
77
+ }
78
+ else if (totalChars > maxAllowedLength) {
79
+ this.isInvalid = true;
80
+ }
81
+ else {
82
+ this.isInvalid = false;
83
+ }
84
+ const fullPhone = this.selectedCountry.dialCode + raw;
85
+ const structuredValue = {
86
+ e164Number: fullPhone,
87
+ nationalNumber: raw,
88
+ dialCode: this.selectedCountry.dialCode,
89
+ countryCode: this.selectedCountry.iso2,
90
+ isValid: !this.isInvalid,
91
+ };
92
+ this.onChange(structuredValue);
93
+ this.phoneChange.emit(structuredValue);
94
+ }
95
+ writeValue(value) {
96
+ if (value && value.dialCode && value.countryCode) {
97
+ const match = countries.find(c => c.dialCode === value.dialCode && c.iso2 === value.countryCode);
98
+ if (match) {
99
+ this.selectedCountry = match;
100
+ }
101
+ else {
102
+ this.selectedCountry = countries[0];
103
+ }
104
+ this.phoneNumber = value.nationalNumber || '';
105
+ }
106
+ else {
107
+ this.selectedCountry = countries[0];
108
+ this.phoneNumber = '';
109
+ }
110
+ }
111
+ registerOnChange(fn) {
112
+ this.onChange = fn;
113
+ }
114
+ registerOnTouched(fn) {
115
+ this.onTouched = fn;
116
+ }
117
+ allowPhoneCharacters(event) {
118
+ const allowedChars = [' ', '-'];
119
+ const charCode = event.charCode;
120
+ // Allow digits 0–9
121
+ if (charCode >= 48 && charCode <= 57)
122
+ return;
123
+ // Allow hyphen and space
124
+ if (allowedChars.includes(event.key))
125
+ return;
126
+ event.preventDefault();
127
+ }
128
+ }
129
+ PhoneInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
130
+ PhoneInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PhoneInputComponent, selector: "phone-input", inputs: { defaultCountry: "defaultCountry", placeholder: "placeholder", searchEnabled: "searchEnabled", numberFormat: "numberFormat", setFirstCountry: "setFirstCountry" }, outputs: { phoneChange: "phoneChange" }, host: { listeners: { "document:click": "handleClickOutside($event)" } }, providers: [{
131
+ provide: NG_VALUE_ACCESSOR,
132
+ useExisting: forwardRef(() => PhoneInputComponent),
133
+ multi: true
134
+ }], ngImport: i0, template: `<div class="phone-input-wrapper">
135
+ <div class="input-container">
136
+ <!-- Country Selector (20%) -->
137
+ <div class="country-select" (click)="toggleDropdown()" (blur)="toggleDropdown()">
138
+ <img [src]="selectedCountry.flag" width="20" />
139
+ <span>{{selectedCountry.dialCode}}</span>
140
+ <span class="arrow-down">▾</span>
141
+ </div>
142
+
143
+ <!-- Phone Input (80%) -->
144
+ <input
145
+ type="tel"
146
+ pattern="[0-9\\s\\-]*"
147
+ inputmode="numeric"
148
+ class="phone-input"
149
+ [placeholder]="placeholder"
150
+ [(ngModel)]="phoneNumber"
151
+ [ngClass]="{ 'error-border': isInvalid }"
152
+ (input)="onPhoneInput()"
153
+ (keypress)="allowPhoneCharacters($event)"
154
+ />
155
+ </div>
156
+
157
+ <!-- Dropdown Content (full width below) -->
158
+ <div
159
+ class="dropdown-content"
160
+ [@dropdownAnimation]="dropdownOpen ? 'open' : 'closed'"
161
+ *ngIf="dropdownOpen || animating"
162
+ (@dropdownAnimation.done)="onAnimationDone($event)" >
163
+ <input
164
+ *ngIf="searchEnabled"
165
+ type="text"
166
+ class="search-box"
167
+ placeholder="Search Country"
168
+ [(ngModel)]="searchTerm"
169
+ (input)="onSearchChange()"
170
+ />
171
+ <div class="country-list">
172
+ <div
173
+ class="country-option"
174
+ *ngFor="let country of countriesList"
175
+ (click)="selectCountry(country)"
176
+ >
177
+ <img [src]="country.flag" width="20" />
178
+ <span class="country-name">{{ country.name }} ({{ country.native }})</span>
179
+ <span class="dial-code">{{ country.dialCode }}</span>
180
+ </div>
181
+ </div>
182
+ </div>
183
+ </div>
184
+
185
+ `, isInline: true, styles: [".phone-input-wrapper{position:relative;font-family:Arial,sans-serif}.input-container{display:flex;width:100%;padding-bottom:3px}.country-select{width:24%;display:flex;align-items:center;justify-content:space-between;border:1px solid #ccc;border-right:none;border-radius:4px 0 0 4px;padding:8px;cursor:pointer;background-color:#f8f8f8}.country-select img{margin-right:5px}.arrow-down{font-size:13px;color:#666}.arrow-down:after{display:none}.phone-input{width:80%;padding:8px 12px;border:1px solid #ccc;border-radius:0 4px 4px 0;outline:none}.dropdown-content{position:absolute;top:100%;left:0;width:100%;background:white;border:1px solid #ccc;border-radius:0 0 4px 4px;box-shadow:0 2px 4px #0000001a;z-index:1000;margin-top:-1px}.search-box{width:100%;padding:8px 12px;border:none;border-bottom:1px solid #eee;outline:none}.country-list{max-height:200px;overflow-y:auto}.country-option{display:flex;align-items:center;padding:8px 12px;cursor:pointer}.country-option:hover{background-color:#f5f5f5}.country-option img{margin-right:5px}.country-name{flex-grow:1}.dial-code{color:#666;font-size:.9em}input.error-border{border-color:red}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], animations: [
186
+ trigger('dropdownAnimation', [
187
+ state('open', style({
188
+ opacity: 1,
189
+ transform: 'scaleY(1)',
190
+ height: '*',
191
+ padding: '*'
192
+ })),
193
+ state('closed', style({
194
+ opacity: 0,
195
+ transform: 'scaleY(0)',
196
+ height: '0px',
197
+ padding: '0px'
198
+ })),
199
+ transition('closed => open', [
200
+ animate('200ms ease-out')
201
+ ]),
202
+ transition('open => closed', [
203
+ animate('150ms ease-in')
204
+ ])
205
+ ])
206
+ ] });
207
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputComponent, decorators: [{
208
+ type: Component,
209
+ args: [{ selector: 'phone-input', animations: [
210
+ trigger('dropdownAnimation', [
211
+ state('open', style({
212
+ opacity: 1,
213
+ transform: 'scaleY(1)',
214
+ height: '*',
215
+ padding: '*'
216
+ })),
217
+ state('closed', style({
218
+ opacity: 0,
219
+ transform: 'scaleY(0)',
220
+ height: '0px',
221
+ padding: '0px'
222
+ })),
223
+ transition('closed => open', [
224
+ animate('200ms ease-out')
225
+ ]),
226
+ transition('open => closed', [
227
+ animate('150ms ease-in')
228
+ ])
229
+ ])
230
+ ], template: `<div class="phone-input-wrapper">
231
+ <div class="input-container">
232
+ <!-- Country Selector (20%) -->
233
+ <div class="country-select" (click)="toggleDropdown()" (blur)="toggleDropdown()">
234
+ <img [src]="selectedCountry.flag" width="20" />
235
+ <span>{{selectedCountry.dialCode}}</span>
236
+ <span class="arrow-down">▾</span>
237
+ </div>
238
+
239
+ <!-- Phone Input (80%) -->
240
+ <input
241
+ type="tel"
242
+ pattern="[0-9\\s\\-]*"
243
+ inputmode="numeric"
244
+ class="phone-input"
245
+ [placeholder]="placeholder"
246
+ [(ngModel)]="phoneNumber"
247
+ [ngClass]="{ 'error-border': isInvalid }"
248
+ (input)="onPhoneInput()"
249
+ (keypress)="allowPhoneCharacters($event)"
250
+ />
251
+ </div>
252
+
253
+ <!-- Dropdown Content (full width below) -->
254
+ <div
255
+ class="dropdown-content"
256
+ [@dropdownAnimation]="dropdownOpen ? 'open' : 'closed'"
257
+ *ngIf="dropdownOpen || animating"
258
+ (@dropdownAnimation.done)="onAnimationDone($event)" >
259
+ <input
260
+ *ngIf="searchEnabled"
261
+ type="text"
262
+ class="search-box"
263
+ placeholder="Search Country"
264
+ [(ngModel)]="searchTerm"
265
+ (input)="onSearchChange()"
266
+ />
267
+ <div class="country-list">
268
+ <div
269
+ class="country-option"
270
+ *ngFor="let country of countriesList"
271
+ (click)="selectCountry(country)"
272
+ >
273
+ <img [src]="country.flag" width="20" />
274
+ <span class="country-name">{{ country.name }} ({{ country.native }})</span>
275
+ <span class="dial-code">{{ country.dialCode }}</span>
276
+ </div>
277
+ </div>
278
+ </div>
279
+ </div>
280
+
281
+ `, providers: [{
282
+ provide: NG_VALUE_ACCESSOR,
283
+ useExisting: forwardRef(() => PhoneInputComponent),
284
+ multi: true
285
+ }], styles: [".phone-input-wrapper{position:relative;font-family:Arial,sans-serif}.input-container{display:flex;width:100%;padding-bottom:3px}.country-select{width:24%;display:flex;align-items:center;justify-content:space-between;border:1px solid #ccc;border-right:none;border-radius:4px 0 0 4px;padding:8px;cursor:pointer;background-color:#f8f8f8}.country-select img{margin-right:5px}.arrow-down{font-size:13px;color:#666}.arrow-down:after{display:none}.phone-input{width:80%;padding:8px 12px;border:1px solid #ccc;border-radius:0 4px 4px 0;outline:none}.dropdown-content{position:absolute;top:100%;left:0;width:100%;background:white;border:1px solid #ccc;border-radius:0 0 4px 4px;box-shadow:0 2px 4px #0000001a;z-index:1000;margin-top:-1px}.search-box{width:100%;padding:8px 12px;border:none;border-bottom:1px solid #eee;outline:none}.country-list{max-height:200px;overflow-y:auto}.country-option{display:flex;align-items:center;padding:8px 12px;cursor:pointer}.country-option:hover{background-color:#f5f5f5}.country-option img{margin-right:5px}.country-name{flex-grow:1}.dial-code{color:#666;font-size:.9em}input.error-border{border-color:red}\n"] }]
286
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { defaultCountry: [{
287
+ type: Input
288
+ }], placeholder: [{
289
+ type: Input
290
+ }], searchEnabled: [{
291
+ type: Input
292
+ }], numberFormat: [{
293
+ type: Input
294
+ }], setFirstCountry: [{
295
+ type: Input
296
+ }], phoneChange: [{
297
+ type: Output
298
+ }], handleClickOutside: [{
299
+ type: HostListener,
300
+ args: ['document:click', ['$event']]
301
+ }] } });
302
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGhvbmUtaW5wdXQvc3JjL2xpYi9waG9uZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixZQUFZLEVBQ1osVUFBVSxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQTZMN0IsTUFBTSxPQUFPLG1CQUFtQjtJQWlCOUIsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQWhCcEMsa0JBQWEsR0FBRyxTQUFTLENBQUM7UUFDMUIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNQLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBQzVCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBQzlCLGlCQUFZLEdBQWlDLGVBQWUsQ0FBQztRQUM3RCxvQkFBZSxHQUFXLEVBQUUsQ0FBQztRQUM1QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFL0MsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDMUIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBRTNCLG9CQUFlLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBSXZCLGFBQVEsR0FBUSxHQUFHLEVBQUUs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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1EVCxhQXdHVSxDQUFDOzRCQUNWLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWixDQUFDO2lHQUtPLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQXNCUCxrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIGZvcndhcmRSZWZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBjb3VudHJpZXMgfSBmcm9tICcuLi9kYXRhL2NvdW50cmllcyc7XHJcbmltcG9ydCB7XHJcbiAgdHJpZ2dlcixcclxuICBzdGF0ZSxcclxuICBzdHlsZSxcclxuICB0cmFuc2l0aW9uLFxyXG4gIGFuaW1hdGVcclxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwaG9uZS1pbnB1dCcsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignZHJvcGRvd25BbmltYXRpb24nLCBbXHJcbiAgICAgIHN0YXRlKCdvcGVuJywgc3R5bGUoe1xyXG4gICAgICAgIG9wYWNpdHk6IDEsXHJcbiAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGVZKDEpJyxcclxuICAgICAgICBoZWlnaHQ6ICcqJyxcclxuICAgICAgICBwYWRkaW5nOiAnKidcclxuICAgICAgfSkpLFxyXG4gICAgICBzdGF0ZSgnY2xvc2VkJywgc3R5bGUoe1xyXG4gICAgICAgIG9wYWNpdHk6IDAsXHJcbiAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGVZKDApJyxcclxuICAgICAgICBoZWlnaHQ6ICcwcHgnLFxyXG4gICAgICAgIHBhZGRpbmc6ICcwcHgnXHJcbiAgICAgIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignY2xvc2VkID0+IG9wZW4nLCBbXHJcbiAgICAgICAgYW5pbWF0ZSgnMjAwbXMgZWFzZS1vdXQnKVxyXG4gICAgICBdKSxcclxuICAgICAgdHJhbnNpdGlvbignb3BlbiA9PiBjbG9zZWQnLCBbXHJcbiAgICAgICAgYW5pbWF0ZSgnMTUwbXMgZWFzZS1pbicpXHJcbiAgICAgIF0pXHJcbiAgICBdKVxyXG4gIF0sXHJcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwicGhvbmUtaW5wdXQtd3JhcHBlclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cclxuICAgIDwhLS0gQ291bnRyeSBTZWxlY3RvciAoMjAlKSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb3VudHJ5LXNlbGVjdFwiIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigpXCIgKGJsdXIpPVwidG9nZ2xlRHJvcGRvd24oKVwiPlxyXG4gICAgICA8aW1nIFtzcmNdPVwic2VsZWN0ZWRDb3VudHJ5LmZsYWdcIiB3aWR0aD1cIjIwXCIgLz5cclxuICAgICAgPHNwYW4+e3tzZWxlY3RlZENvdW50cnkuZGlhbENvZGV9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvdy1kb3duXCI+4pa+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBQaG9uZSBJbnB1dCAoODAlKSAtLT5cclxuICAgIDxpbnB1dFxyXG4gICAgICB0eXBlPVwidGVsXCJcclxuICAgICAgcGF0dGVybj1cIlswLTlcXFxcc1xcXFwtXSpcIlxyXG4gICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcclxuICAgICAgY2xhc3M9XCJwaG9uZS1pbnB1dFwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwicGhvbmVOdW1iZXJcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7ICdlcnJvci1ib3JkZXInOiBpc0ludmFsaWQgfVwiXHJcbiAgICAgIChpbnB1dCk9XCJvblBob25lSW5wdXQoKVwiXHJcbiAgICAgIChrZXlwcmVzcyk9XCJhbGxvd1Bob25lQ2hhcmFjdGVycygkZXZlbnQpXCJcclxuICAgIC8+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gRHJvcGRvd24gQ29udGVudCAoZnVsbCB3aWR0aCBiZWxvdykgLS0+XHJcbiAgPGRpdlxyXG4gIGNsYXNzPVwiZHJvcGRvd24tY29udGVudFwiXHJcbiAgW0Bkcm9wZG93bkFuaW1hdGlvbl09XCJkcm9wZG93bk9wZW4gPyAnb3BlbicgOiAnY2xvc2VkJ1wiXHJcbiAgKm5nSWY9XCJkcm9wZG93bk9wZW4gfHwgYW5pbWF0aW5nXCJcclxuICAoQGRyb3Bkb3duQW5pbWF0aW9uLmRvbmUpPVwib25BbmltYXRpb25Eb25lKCRldmVudClcIiA+XHJcbiAgICA8aW5wdXRcclxuICAgICAgKm5nSWY9XCJzZWFyY2hFbmFibGVkXCJcclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICBjbGFzcz1cInNlYXJjaC1ib3hcIlxyXG4gICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBDb3VudHJ5XCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCJcclxuICAgICAgKGlucHV0KT1cIm9uU2VhcmNoQ2hhbmdlKClcIlxyXG4gICAgLz5cclxuICAgIDxkaXYgY2xhc3M9XCJjb3VudHJ5LWxpc3RcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiY291bnRyeS1vcHRpb25cIlxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb3VudHJ5IG9mIGNvdW50cmllc0xpc3RcIlxyXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RDb3VudHJ5KGNvdW50cnkpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpbWcgW3NyY109XCJjb3VudHJ5LmZsYWdcIiB3aWR0aD1cIjIwXCIgLz5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50cnktbmFtZVwiPnt7IGNvdW50cnkubmFtZSB9fSAoe3sgY291bnRyeS5uYXRpdmUgfX0pPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGlhbC1jb2RlXCI+e3sgY291bnRyeS5kaWFsQ29kZSB9fTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYFxyXG4gICAgLnBob25lLWlucHV0LXdyYXBwZXIge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7XHJcbn1cclxuXHJcbi5pbnB1dC1jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgcGFkZGluZy1ib3R0b206IDNweDtcclxufVxyXG5cclxuLyogQ291bnRyeSBTZWxlY3QgKDIwJSkgKi9cclxuLmNvdW50cnktc2VsZWN0IHtcclxuICB3aWR0aDogMjQlO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxuICBib3JkZXItcmlnaHQ6IG5vbmU7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4IDAgMCA0cHg7XHJcbiAgcGFkZGluZzogOHB4IDhweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjhmODtcclxufVxyXG5cclxuLmNvdW50cnktc2VsZWN0IGltZyB7XHJcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbn1cclxuXHJcbi5hcnJvdy1kb3duIHtcclxuICBmb250LXNpemU6IDEzcHg7XHJcbiAgY29sb3I6ICM2NjY7XHJcbn1cclxuLmFycm93LWRvd246YWZ0ZXIge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG4vKiBQaG9uZSBJbnB1dCAoODAlKSAqL1xyXG4ucGhvbmUtaW5wdXQge1xyXG4gIHdpZHRoOiA4MCU7XHJcbiAgcGFkZGluZzogOHB4IDEycHg7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxuICBib3JkZXItcmFkaXVzOiAwIDRweCA0cHggMDtcclxuICBvdXRsaW5lOiBub25lO1xyXG59XHJcblxyXG4vKiBEcm9wZG93biBDb250ZW50ICovXHJcbi5kcm9wZG93bi1jb250ZW50IHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAxMDAlO1xyXG4gIGxlZnQ6IDA7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgYmFja2dyb3VuZDogd2hpdGU7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxuICBib3JkZXItcmFkaXVzOiAwIDAgNHB4IDRweDtcclxuICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLDAsMCwwLjEpO1xyXG4gIHotaW5kZXg6IDEwMDA7XHJcbiAgbWFyZ2luLXRvcDogLTFweDtcclxufVxyXG5cclxuLnNlYXJjaC1ib3gge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIHBhZGRpbmc6IDhweCAxMnB4O1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG59XHJcblxyXG4uY291bnRyeS1saXN0IHtcclxuICBtYXgtaGVpZ2h0OiAyMDBweDtcclxuICBvdmVyZmxvdy15OiBhdXRvO1xyXG59XHJcblxyXG4uY291bnRyeS1vcHRpb24ge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBwYWRkaW5nOiA4cHggMTJweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5jb3VudHJ5LW9wdGlvbjpob3ZlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcclxufVxyXG5cclxuLmNvdW50cnktb3B0aW9uIGltZyB7XHJcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbn1cclxuXHJcbi5jb3VudHJ5LW5hbWUge1xyXG4gIGZsZXgtZ3JvdzogMTtcclxufVxyXG5cclxuLmRpYWwtY29kZSB7XHJcbiAgY29sb3I6ICM2NjY7XHJcbiAgZm9udC1zaXplOiAwLjllbTtcclxufVxyXG5cclxuLyogRXJyb3IgU3RhdGUgKi9cclxuaW5wdXQuZXJyb3ItYm9yZGVyIHtcclxuICBib3JkZXItY29sb3I6IHJlZDtcclxufVxyXG5cclxuICBgXSxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBob25lSW5wdXRDb21wb25lbnQpLFxyXG4gICAgbXVsdGk6IHRydWVcclxuICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGhvbmVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBjb3VudHJpZXNMaXN0ID0gY291bnRyaWVzO1xyXG4gIHNlYXJjaFRlcm0gPSAnJztcclxuICBASW5wdXQoKSBkZWZhdWx0Q291bnRyeTogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHNlYXJjaEVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIG51bWJlckZvcm1hdDogJ2ludGVybmF0aW9uYWwnIHwgJ25hdGlvbmFsJyA9ICdpbnRlcm5hdGlvbmFsJztcclxuICBASW5wdXQoKSBzZXRGaXJzdENvdW50cnk6IHN0cmluZyA9ICcnO1xyXG4gIEBPdXRwdXQoKSBwaG9uZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgcGhvbmVOdW1iZXI6IHN0cmluZyA9ICcnO1xyXG4gIGlzSW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRyb3Bkb3duT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFuaW1hdGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzZWxlY3RlZENvdW50cnkgPSBjb3VudHJpZXNbMF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZVJlZjogRWxlbWVudFJlZikge31cclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xyXG5cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5kZWZhdWx0Q291bnRyeSkge1xyXG4gICAgICBjb25zdCBtYXRjaCA9IGNvdW50cmllcy5maW5kKGMgPT4gYy5pc28yID09PSB0aGlzLmRlZmF1bHRDb3VudHJ5LnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICBpZiAobWF0Y2gpIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gbWF0Y2g7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVDbGlja091dHNpZGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICB0aGlzLmRyb3Bkb3duT3BlbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25BbmltYXRpb25Eb25lKGV2ZW50OiBhbnkpIHtcclxuICBpZiAoIXRoaXMuZHJvcGRvd25PcGVuKSB7XHJcbiAgICB0aGlzLmFuaW1hdGluZyA9IGZhbHNlO1xyXG4gIH1cclxuICB9XHJcblxyXG4gIHRvZ2dsZURyb3Bkb3duKCkge1xyXG4gICAgdGhpcy5kcm9wZG93bk9wZW4gPSAhdGhpcy5kcm9wZG93bk9wZW47XHJcbiAgICB0aGlzLmFuaW1hdGluZyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmVSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuIG9uU2VhcmNoQ2hhbmdlKCkge1xyXG4gICAgY29uc3QgdGVybSA9IHRoaXMuc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgdGhpcy5jb3VudHJpZXNMaXN0ID0gY291bnRyaWVzLmZpbHRlcihjID0+XHJcbiAgICAgIGMubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pIHx8XHJcbiAgICAgIChjLm5hdGl2ZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2VsZWN0Q291bnRyeShjb3VudHJ5OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gY291bnRyeTtcclxuICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xyXG4gICAgdGhpcy5jb3VudHJpZXNMaXN0ID0gY291bnRyaWVzO1xyXG4gICAgdGhpcy5kcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuZW1pdFBob25lQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBvblBob25lSW5wdXQoKSB7XHJcbiAgICB0aGlzLmVtaXRQaG9uZUNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0UGhvbmVDaGFuZ2UoKSB7XHJcbiAgICBjb25zdCByYXcgPSB0aGlzLnBob25lTnVtYmVyIHx8ICcnO1xyXG4gICAgY29uc3QgZGlnaXRzT25seSA9IHJhdy5yZXBsYWNlKC9cXEQvZywgJycpO1xyXG4gICAgY29uc3QgaHlwaGVuQ291bnQgPSAocmF3Lm1hdGNoKC8tL2cpIHx8IFtdKS5sZW5ndGg7XHJcbiAgICBjb25zdCBzcGFjZUNvdW50ID0gKHJhdy5tYXRjaCgvIC9nKSB8fCBbXSkubGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IHRvdGFsQ2hhcnMgPSB0aGlzLnBob25lTnVtYmVyLmxlbmd0aDtcclxuICAgIGNvbnN0IG1heEFsbG93ZWRMZW5ndGggPSB0aGlzLnNlbGVjdGVkQ291bnRyeT8ucGhvbmVMZW5ndGggKyBoeXBoZW5Db3VudCArIHNwYWNlQ291bnQ7XHJcblxyXG4gICAgaWYgKGRpZ2l0c09ubHkubGVuZ3RoICE9PSB0aGlzLnNlbGVjdGVkQ291bnRyeT8ucGhvbmVMZW5ndGgpIHtcclxuICAgICAgdGhpcy5pc0ludmFsaWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodG90YWxDaGFycyA+IG1heEFsbG93ZWRMZW5ndGgpIHtcclxuICAgICAgdGhpcy5pc0ludmFsaWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBmdWxsUGhvbmUgPSB0aGlzLnNlbGVjdGVkQ291bnRyeS5kaWFsQ29kZSArIHJhdztcclxuXHJcbiAgICBjb25zdCBzdHJ1Y3R1cmVkVmFsdWUgPSB7XHJcbiAgICAgIGUxNjROdW1iZXI6IGZ1bGxQaG9uZSxcclxuICAgICAgbmF0aW9uYWxOdW1iZXI6IHJhdyxcclxuICAgICAgZGlhbENvZGU6IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlLFxyXG4gICAgICBjb3VudHJ5Q29kZTogdGhpcy5zZWxlY3RlZENvdW50cnkuaXNvMixcclxuICAgICAgaXNWYWxpZDogIXRoaXMuaXNJbnZhbGlkLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLm9uQ2hhbmdlKHN0cnVjdHVyZWRWYWx1ZSk7XHJcbiAgICB0aGlzLnBob25lQ2hhbmdlLmVtaXQoc3RydWN0dXJlZFZhbHVlKTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHZhbHVlICYmIHZhbHVlLmRpYWxDb2RlICYmIHZhbHVlLmNvdW50cnlDb2RlKSB7XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gY291bnRyaWVzLmZpbmQoYyA9PlxyXG4gICAgICAgIGMuZGlhbENvZGUgPT09IHZhbHVlLmRpYWxDb2RlICYmIGMuaXNvMiA9PT0gdmFsdWUuY291bnRyeUNvZGVcclxuICAgICAgKTtcclxuICAgICAgaWYgKG1hdGNoKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBtYXRjaDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IGNvdW50cmllc1swXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBob25lTnVtYmVyID0gdmFsdWUubmF0aW9uYWxOdW1iZXIgfHwgJyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IGNvdW50cmllc1swXTtcclxuICAgICAgdGhpcy5waG9uZU51bWJlciA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG4gIGFsbG93UGhvbmVDaGFyYWN0ZXJzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBjb25zdCBhbGxvd2VkQ2hhcnMgPSBbJyAnLCAnLSddO1xyXG4gICAgY29uc3QgY2hhckNvZGUgPSBldmVudC5jaGFyQ29kZTtcclxuXHJcbiAgICAvLyBBbGxvdyBkaWdpdHMgMOKAkzlcclxuICAgIGlmIChjaGFyQ29kZSA+PSA0OCAmJiBjaGFyQ29kZSA8PSA1NykgcmV0dXJuO1xyXG5cclxuICAgIC8vIEFsbG93IGh5cGhlbiBhbmQgc3BhY2VcclxuICAgIGlmIChhbGxvd2VkQ2hhcnMuaW5jbHVkZXMoZXZlbnQua2V5KSkgcmV0dXJuO1xyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,24 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { PhoneInputComponent } from './phone-input.component';
4
+ import { FormsModule } from '@angular/forms';
5
+ import * as i0 from "@angular/core";
6
+ export class PhoneInputModule {
7
+ }
8
+ PhoneInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ PhoneInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputModule, declarations: [PhoneInputComponent], imports: [CommonModule,
10
+ FormsModule], exports: [PhoneInputComponent] });
11
+ PhoneInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputModule, imports: [CommonModule,
12
+ FormsModule] });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputModule, decorators: [{
14
+ type: NgModule,
15
+ args: [{
16
+ declarations: [PhoneInputComponent],
17
+ imports: [
18
+ CommonModule,
19
+ FormsModule
20
+ ],
21
+ exports: [PhoneInputComponent]
22
+ }]
23
+ }] });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGhvbmUtaW5wdXQvc3JjL2xpYi9waG9uZS1pbnB1dC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVU3QyxNQUFNLE9BQU8sZ0JBQWdCOzs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsaUJBUFosbUJBQW1CLGFBRWhDLFlBQVk7UUFDWixXQUFXLGFBRUgsbUJBQW1COytHQUVsQixnQkFBZ0IsWUFMekIsWUFBWTtRQUNaLFdBQVc7NEZBSUYsZ0JBQWdCO2tCQVI1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNuQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3FCQUNaO29CQUNELE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFBob25lSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL3Bob25lLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtQaG9uZUlucHV0Q29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1Bob25lSW5wdXRDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQaG9uZUlucHV0TW9kdWxlIHsgfVxyXG5cclxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRpYWwtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9waG9uZS1pbnB1dC9zcmMvbmd4LWRpYWwtaW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Public API Surface of phone-input
3
+ */
4
+ export * from './lib/phone-input.component';
5
+ export * from './lib/phone-input.module';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3Bob25lLWlucHV0L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHBob25lLWlucHV0XHJcbiAqL1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waG9uZS1pbnB1dC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waG9uZS1pbnB1dC5tb2R1bGUnO1xyXG4iXX0=