ngx-dial-input 2.0.1 → 2.0.2

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 (38) hide show
  1. package/.editorconfig +16 -0
  2. package/.vscode/extensions.json +4 -0
  3. package/.vscode/launch.json +20 -0
  4. package/.vscode/tasks.json +42 -0
  5. package/README.md +12 -9
  6. package/angular.json +41 -0
  7. package/package.json +49 -32
  8. package/projects/phone-input/README.md +24 -0
  9. package/projects/phone-input/ng-package.json +7 -0
  10. package/projects/phone-input/package.json +9 -0
  11. package/projects/phone-input/src/data/countries.model.ts +9 -0
  12. package/projects/phone-input/src/data/countries.ts +1219 -0
  13. package/projects/phone-input/src/lib/phone-input.component.css +0 -0
  14. package/projects/phone-input/src/lib/phone-input.component.html +0 -0
  15. package/projects/phone-input/src/lib/phone-input.component.ts +348 -0
  16. package/projects/phone-input/src/lib/phone-input.module.ts +15 -0
  17. package/projects/phone-input/src/lib/phone-input.service.spec.ts +16 -0
  18. package/{public-api.d.ts → projects/phone-input/src/public-api.ts} +3 -0
  19. package/projects/phone-input/tsconfig.lib.json +15 -0
  20. package/projects/phone-input/tsconfig.lib.prod.json +10 -0
  21. package/projects/phone-input/tsconfig.spec.json +14 -0
  22. package/tsconfig.json +33 -0
  23. package/data/countries.d.ts +0 -2
  24. package/data/countries.model.d.ts +0 -9
  25. package/esm2020/data/countries.mjs +0 -1218
  26. package/esm2020/data/countries.model.mjs +0 -2
  27. package/esm2020/lib/phone-input.component.mjs +0 -292
  28. package/esm2020/lib/phone-input.module.mjs +0 -24
  29. package/esm2020/ngx-dial-input.mjs +0 -5
  30. package/esm2020/public-api.mjs +0 -6
  31. package/fesm2015/ngx-dial-input.mjs +0 -1542
  32. package/fesm2015/ngx-dial-input.mjs.map +0 -1
  33. package/fesm2020/ngx-dial-input.mjs +0 -1541
  34. package/fesm2020/ngx-dial-input.mjs.map +0 -1
  35. package/index.d.ts +0 -5
  36. package/lib/phone-input.component.d.ts +0 -37
  37. package/lib/phone-input.module.d.ts +0 -9
  38. package/ngx-dial-input-2.0.1.tgz +0 -0
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyaWVzLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGhvbmUtaW5wdXQvc3JjL2RhdGEvY291bnRyaWVzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENvdW50cmllc1Bob25lSW5wdXREYXRhIHtcclxuICBuYW1lIDogc3RyaW5nO1xyXG4gIG5hdGl2ZSA6IHN0cmluZztcclxuICBpc28yIDogc3RyaW5nO1xyXG4gIGRpYWxDb2RlIDogc3RyaW5nO1xyXG4gIGZsYWcgOiBzdHJpbmc7XHJcbiAgZm9ybWF0IDogc3RyaW5nO1xyXG4gIHBob25lTGVuZ3RoOiBudW1iZXI7XHJcbn1cclxuIl19
@@ -1,292 +0,0 @@
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
- }
57
- selectCountry(country) {
58
- this.selectedCountry = country;
59
- this.searchTerm = '';
60
- this.countriesList = countries;
61
- this.dropdownOpen = false;
62
- this.emitPhoneChange();
63
- }
64
- onPhoneInput() {
65
- this.emitPhoneChange();
66
- }
67
- emitPhoneChange() {
68
- const digitsOnly = this.phoneNumber.replace(/\D/g, '');
69
- const length = digitsOnly.length;
70
- const expectedLength = this.selectedCountry?.phoneLength;
71
- if (expectedLength) {
72
- this.isInvalid = length !== expectedLength;
73
- }
74
- else {
75
- // fallback validation
76
- this.isInvalid = length < 7 || length > 12;
77
- }
78
- const fullPhone = this.selectedCountry.dialCode + this.phoneNumber;
79
- const structuredValue = {
80
- e164Number: fullPhone,
81
- nationalNumber: this.phoneNumber,
82
- dialCode: this.selectedCountry.dialCode,
83
- countryCode: this.selectedCountry.iso2,
84
- isValid: !this.isInvalid,
85
- };
86
- this.onChange(structuredValue);
87
- this.phoneChange.emit(structuredValue);
88
- }
89
- writeValue(value) {
90
- if (value && value.dialCode && value.countryCode) {
91
- const match = countries.find(c => c.dialCode === value.dialCode && c.iso2 === value.countryCode);
92
- if (match) {
93
- this.selectedCountry = match;
94
- }
95
- else {
96
- this.selectedCountry = countries[0];
97
- }
98
- this.phoneNumber = value.nationalNumber || '';
99
- }
100
- else {
101
- this.selectedCountry = countries[0];
102
- this.phoneNumber = '';
103
- }
104
- }
105
- registerOnChange(fn) {
106
- this.onChange = fn;
107
- }
108
- registerOnTouched(fn) {
109
- this.onTouched = fn;
110
- }
111
- allowOnlyNumbers(event) {
112
- const charCode = event.charCode;
113
- // Allow only digits (0–9)
114
- if (charCode < 48 || charCode > 57) {
115
- event.preventDefault();
116
- }
117
- }
118
- }
119
- PhoneInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
120
- 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: [{
121
- provide: NG_VALUE_ACCESSOR,
122
- useExisting: forwardRef(() => PhoneInputComponent),
123
- multi: true
124
- }], ngImport: i0, template: `<div class="phone-input-wrapper">
125
- <div class="input-container">
126
- <!-- Country Selector (20%) -->
127
- <div class="country-select" (click)="toggleDropdown()" (blur)="toggleDropdown()">
128
- <img [src]="selectedCountry.flag" width="20" />
129
- <span>{{selectedCountry.dialCode}}</span>
130
- <span class="arrow-down">▾</span>
131
- </div>
132
-
133
- <!-- Phone Input (80%) -->
134
- <input
135
- type="tel"
136
- pattern="[0-9]*"
137
- inputmode="numeric"
138
- class="phone-input"
139
- [placeholder]="placeholder"
140
- [(ngModel)]="phoneNumber"
141
- [ngClass]="{ 'error-border': isInvalid }"
142
- (input)="onPhoneInput()"
143
- (keypress)="allowOnlyNumbers($event)"
144
- />
145
- </div>
146
-
147
- <!-- Dropdown Content (full width below) -->
148
- <div
149
- class="dropdown-content"
150
- [@dropdownAnimation]="dropdownOpen ? 'open' : 'closed'"
151
- *ngIf="dropdownOpen || animating"
152
- (@dropdownAnimation.done)="onAnimationDone($event)" >
153
- <input
154
- *ngIf="searchEnabled"
155
- type="text"
156
- class="search-box"
157
- placeholder="Search Country"
158
- [(ngModel)]="searchTerm"
159
- (input)="onSearchChange()"
160
- />
161
- <div class="country-list">
162
- <div
163
- class="country-option"
164
- *ngFor="let country of countriesList"
165
- (click)="selectCountry(country)"
166
- >
167
- <img [src]="country.flag" width="20" />
168
- <span class="country-name">{{ country.name }} ({{ country.native }})</span>
169
- <span class="dial-code">{{ country.dialCode }}</span>
170
- </div>
171
- </div>
172
- </div>
173
- </div>
174
-
175
- `, 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: [
176
- trigger('dropdownAnimation', [
177
- state('open', style({
178
- opacity: 1,
179
- transform: 'scaleY(1)',
180
- height: '*',
181
- padding: '*'
182
- })),
183
- state('closed', style({
184
- opacity: 0,
185
- transform: 'scaleY(0)',
186
- height: '0px',
187
- padding: '0px'
188
- })),
189
- transition('closed => open', [
190
- animate('200ms ease-out')
191
- ]),
192
- transition('open => closed', [
193
- animate('150ms ease-in')
194
- ])
195
- ])
196
- ] });
197
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputComponent, decorators: [{
198
- type: Component,
199
- args: [{ selector: 'phone-input', animations: [
200
- trigger('dropdownAnimation', [
201
- state('open', style({
202
- opacity: 1,
203
- transform: 'scaleY(1)',
204
- height: '*',
205
- padding: '*'
206
- })),
207
- state('closed', style({
208
- opacity: 0,
209
- transform: 'scaleY(0)',
210
- height: '0px',
211
- padding: '0px'
212
- })),
213
- transition('closed => open', [
214
- animate('200ms ease-out')
215
- ]),
216
- transition('open => closed', [
217
- animate('150ms ease-in')
218
- ])
219
- ])
220
- ], template: `<div class="phone-input-wrapper">
221
- <div class="input-container">
222
- <!-- Country Selector (20%) -->
223
- <div class="country-select" (click)="toggleDropdown()" (blur)="toggleDropdown()">
224
- <img [src]="selectedCountry.flag" width="20" />
225
- <span>{{selectedCountry.dialCode}}</span>
226
- <span class="arrow-down">▾</span>
227
- </div>
228
-
229
- <!-- Phone Input (80%) -->
230
- <input
231
- type="tel"
232
- pattern="[0-9]*"
233
- inputmode="numeric"
234
- class="phone-input"
235
- [placeholder]="placeholder"
236
- [(ngModel)]="phoneNumber"
237
- [ngClass]="{ 'error-border': isInvalid }"
238
- (input)="onPhoneInput()"
239
- (keypress)="allowOnlyNumbers($event)"
240
- />
241
- </div>
242
-
243
- <!-- Dropdown Content (full width below) -->
244
- <div
245
- class="dropdown-content"
246
- [@dropdownAnimation]="dropdownOpen ? 'open' : 'closed'"
247
- *ngIf="dropdownOpen || animating"
248
- (@dropdownAnimation.done)="onAnimationDone($event)" >
249
- <input
250
- *ngIf="searchEnabled"
251
- type="text"
252
- class="search-box"
253
- placeholder="Search Country"
254
- [(ngModel)]="searchTerm"
255
- (input)="onSearchChange()"
256
- />
257
- <div class="country-list">
258
- <div
259
- class="country-option"
260
- *ngFor="let country of countriesList"
261
- (click)="selectCountry(country)"
262
- >
263
- <img [src]="country.flag" width="20" />
264
- <span class="country-name">{{ country.name }} ({{ country.native }})</span>
265
- <span class="dial-code">{{ country.dialCode }}</span>
266
- </div>
267
- </div>
268
- </div>
269
- </div>
270
-
271
- `, providers: [{
272
- provide: NG_VALUE_ACCESSOR,
273
- useExisting: forwardRef(() => PhoneInputComponent),
274
- multi: true
275
- }], 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"] }]
276
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { defaultCountry: [{
277
- type: Input
278
- }], placeholder: [{
279
- type: Input
280
- }], searchEnabled: [{
281
- type: Input
282
- }], numberFormat: [{
283
- type: Input
284
- }], setFirstCountry: [{
285
- type: Input
286
- }], phoneChange: [{
287
- type: Output
288
- }], handleClickOutside: [{
289
- type: HostListener,
290
- args: ['document:click', ['$event']]
291
- }] } });
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGhvbmUtaW5wdXQvc3JjL2xpYi9waG9uZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixZQUFZLEVBQ1osVUFBVSxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQTZMN0IsTUFBTSxPQUFPLG1CQUFtQjtJQWlCOUIsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQWhCcEMsa0JBQWEsR0FBRyxTQUFTLENBQUM7UUFDMUIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNQLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBQzVCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBQzlCLGlCQUFZLEdBQWlDLGVBQWUsQ0FBQztRQUM3RCxvQkFBZSxHQUFXLEVBQUUsQ0FBQztRQUM1QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFL0MsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDMUIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBRTNCLG9CQUFlLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBSXZCLGFBQVEsR0FBUSxHQUFHLEVBQUUs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QUssQ0FBQztnQ0FDbEIsT0FBTyxFQUFFLENBQUM7Z0NBQ1YsU0FBUyxFQUFFLFdBQVc7Z0NBQ3RCLE1BQU0sRUFBRSxHQUFHO2dDQUNYLE9BQU8sRUFBRSxHQUFHOzZCQUNiLENBQUMsQ0FBQzs0QkFDSCxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQztnQ0FDcEIsT0FBTyxFQUFFLENBQUM7Z0NBQ1YsU0FBUyxFQUFFLFdBQVc7Z0NBQ3RCLE1BQU0sRUFBRSxLQUFLO2dDQUNiLE9BQU8sRUFBRSxLQUFLOzZCQUNmLENBQUMsQ0FBQzs0QkFDSCxVQUFVLENBQUMsZ0JBQWdCLEVBQUU7Z0NBQzNCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQzs2QkFDMUIsQ0FBQzs0QkFDRixVQUFVLENBQUMsZ0JBQWdCLEVBQUU7Z0NBQzNCLE9BQU8sQ0FBQyxlQUFlLENBQUM7NkJBQ3pCLENBQUM7eUJBQ0gsQ0FBQztxQkFDSCxZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtRFQsYUF3R1UsQ0FBQzs0QkFDVixPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1osQ0FBQztpR0FLTyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFzQlAsa0JBQWtCO3NCQURqQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBFbGVtZW50UmVmLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBmb3J3YXJkUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgY291bnRyaWVzIH0gZnJvbSAnLi4vZGF0YS9jb3VudHJpZXMnO1xyXG5pbXBvcnQge1xyXG4gIHRyaWdnZXIsXHJcbiAgc3RhdGUsXHJcbiAgc3R5bGUsXHJcbiAgdHJhbnNpdGlvbixcclxuICBhbmltYXRlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcblxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncGhvbmUtaW5wdXQnLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2Ryb3Bkb3duQW5pbWF0aW9uJywgW1xyXG4gICAgICBzdGF0ZSgnb3BlbicsIHN0eWxlKHtcclxuICAgICAgICBvcGFjaXR5OiAxLFxyXG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlWSgxKScsXHJcbiAgICAgICAgaGVpZ2h0OiAnKicsXHJcbiAgICAgICAgcGFkZGluZzogJyonXHJcbiAgICAgIH0pKSxcclxuICAgICAgc3RhdGUoJ2Nsb3NlZCcsIHN0eWxlKHtcclxuICAgICAgICBvcGFjaXR5OiAwLFxyXG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlWSgwKScsXHJcbiAgICAgICAgaGVpZ2h0OiAnMHB4JyxcclxuICAgICAgICBwYWRkaW5nOiAnMHB4J1xyXG4gICAgICB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2Nsb3NlZCA9PiBvcGVuJywgW1xyXG4gICAgICAgIGFuaW1hdGUoJzIwMG1zIGVhc2Utb3V0JylcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ29wZW4gPT4gY2xvc2VkJywgW1xyXG4gICAgICAgIGFuaW1hdGUoJzE1MG1zIGVhc2UtaW4nKVxyXG4gICAgICBdKVxyXG4gICAgXSlcclxuICBdLFxyXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cInBob25lLWlucHV0LXdyYXBwZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICA8IS0tIENvdW50cnkgU2VsZWN0b3IgKDIwJSkgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY291bnRyeS1zZWxlY3RcIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiIChibHVyKT1cInRvZ2dsZURyb3Bkb3duKClcIj5cclxuICAgICAgPGltZyBbc3JjXT1cInNlbGVjdGVkQ291bnRyeS5mbGFnXCIgd2lkdGg9XCIyMFwiIC8+XHJcbiAgICAgIDxzcGFuPnt7c2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlfX08L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3ctZG93blwiPuKWvjwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUGhvbmUgSW5wdXQgKDgwJSkgLS0+XHJcbiAgICA8aW5wdXRcclxuICAgICAgdHlwZT1cInRlbFwiXHJcbiAgICAgIHBhdHRlcm49XCJbMC05XSpcIlxyXG4gICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcclxuICAgICAgY2xhc3M9XCJwaG9uZS1pbnB1dFwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwicGhvbmVOdW1iZXJcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7ICdlcnJvci1ib3JkZXInOiBpc0ludmFsaWQgfVwiXHJcbiAgICAgIChpbnB1dCk9XCJvblBob25lSW5wdXQoKVwiXHJcbiAgICAgIChrZXlwcmVzcyk9XCJhbGxvd09ubHlOdW1iZXJzKCRldmVudClcIlxyXG4gICAgLz5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBEcm9wZG93biBDb250ZW50IChmdWxsIHdpZHRoIGJlbG93KSAtLT5cclxuICA8ZGl2XHJcbiAgY2xhc3M9XCJkcm9wZG93bi1jb250ZW50XCJcclxuICBbQGRyb3Bkb3duQW5pbWF0aW9uXT1cImRyb3Bkb3duT3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnXCJcclxuICAqbmdJZj1cImRyb3Bkb3duT3BlbiB8fCBhbmltYXRpbmdcIlxyXG4gIChAZHJvcGRvd25BbmltYXRpb24uZG9uZSk9XCJvbkFuaW1hdGlvbkRvbmUoJGV2ZW50KVwiID5cclxuICAgIDxpbnB1dFxyXG4gICAgICAqbmdJZj1cInNlYXJjaEVuYWJsZWRcIlxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIGNsYXNzPVwic2VhcmNoLWJveFwiXHJcbiAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIENvdW50cnlcIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxyXG4gICAgICAoaW5wdXQpPVwib25TZWFyY2hDaGFuZ2UoKVwiXHJcbiAgICAvPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvdW50cnktbGlzdFwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJjb3VudHJ5LW9wdGlvblwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGNvdW50cnkgb2YgY291bnRyaWVzTGlzdFwiXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdENvdW50cnkoY291bnRyeSlcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGltZyBbc3JjXT1cImNvdW50cnkuZmxhZ1wiIHdpZHRoPVwiMjBcIiAvPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRyeS1uYW1lXCI+e3sgY291bnRyeS5uYW1lIH19ICh7eyBjb3VudHJ5Lm5hdGl2ZSB9fSk8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkaWFsLWNvZGVcIj57eyBjb3VudHJ5LmRpYWxDb2RlIH19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbiAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICAucGhvbmUtaW5wdXQtd3JhcHBlciB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjtcclxufVxyXG5cclxuLmlucHV0LWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICB3aWR0aDogMTAwJTtcclxuICBwYWRkaW5nLWJvdHRvbTogM3B4O1xyXG59XHJcblxyXG4vKiBDb3VudHJ5IFNlbGVjdCAoMjAlKSAqL1xyXG4uY291bnRyeS1zZWxlY3Qge1xyXG4gIHdpZHRoOiAyNCU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIGJvcmRlci1yaWdodDogbm9uZTtcclxuICBib3JkZXItcmFkaXVzOiA0cHggMCAwIDRweDtcclxuICBwYWRkaW5nOiA4cHggOHB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGY4O1xyXG59XHJcblxyXG4uY291bnRyeS1zZWxlY3QgaW1nIHtcclxuICBtYXJnaW4tcmlnaHQ6IDVweDtcclxufVxyXG5cclxuLmFycm93LWRvd24ge1xyXG4gIGZvbnQtc2l6ZTogMTNweDtcclxuICBjb2xvcjogIzY2NjtcclxufVxyXG4uYXJyb3ctZG93bjphZnRlciB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcbi8qIFBob25lIElucHV0ICg4MCUpICovXHJcbi5waG9uZS1pbnB1dCB7XHJcbiAgd2lkdGg6IDgwJTtcclxuICBwYWRkaW5nOiA4cHggMTJweDtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAgNHB4IDRweCAwO1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbn1cclxuXHJcbi8qIERyb3Bkb3duIENvbnRlbnQgKi9cclxuLmRyb3Bkb3duLWNvbnRlbnQge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDEwMCU7XHJcbiAgbGVmdDogMDtcclxuICB3aWR0aDogMTAwJTtcclxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAgMCA0cHggNHB4O1xyXG4gIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsMCwwLDAuMSk7XHJcbiAgei1pbmRleDogMTAwMDtcclxuICBtYXJnaW4tdG9wOiAtMXB4O1xyXG59XHJcblxyXG4uc2VhcmNoLWJveCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgcGFkZGluZzogOHB4IDEycHg7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlO1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbn1cclxuXHJcbi5jb3VudHJ5LWxpc3Qge1xyXG4gIG1heC1oZWlnaHQ6IDIwMHB4O1xyXG4gIG92ZXJmbG93LXk6IGF1dG87XHJcbn1cclxuXHJcbi5jb3VudHJ5LW9wdGlvbiB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIHBhZGRpbmc6IDhweCAxMnB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmNvdW50cnktb3B0aW9uOmhvdmVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xyXG59XHJcblxyXG4uY291bnRyeS1vcHRpb24gaW1nIHtcclxuICBtYXJnaW4tcmlnaHQ6IDVweDtcclxufVxyXG5cclxuLmNvdW50cnktbmFtZSB7XHJcbiAgZmxleC1ncm93OiAxO1xyXG59XHJcblxyXG4uZGlhbC1jb2RlIHtcclxuICBjb2xvcjogIzY2NjtcclxuICBmb250LXNpemU6IDAuOWVtO1xyXG59XHJcblxyXG4vKiBFcnJvciBTdGF0ZSAqL1xyXG5pbnB1dC5lcnJvci1ib3JkZXIge1xyXG4gIGJvcmRlci1jb2xvcjogcmVkO1xyXG59XHJcblxyXG4gIGBdLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGhvbmVJbnB1dENvbXBvbmVudCksXHJcbiAgICBtdWx0aTogdHJ1ZVxyXG4gIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQaG9uZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIGNvdW50cmllc0xpc3QgPSBjb3VudHJpZXM7XHJcbiAgc2VhcmNoVGVybSA9ICcnO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRDb3VudHJ5OiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgc2VhcmNoRW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgbnVtYmVyRm9ybWF0OiAnaW50ZXJuYXRpb25hbCcgfCAnbmF0aW9uYWwnID0gJ2ludGVybmF0aW9uYWwnO1xyXG4gIEBJbnB1dCgpIHNldEZpcnN0Q291bnRyeTogc3RyaW5nID0gJyc7XHJcbiAgQE91dHB1dCgpIHBob25lQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICBwaG9uZU51bWJlcjogc3RyaW5nID0gJyc7XHJcbiAgaXNJbnZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZHJvcGRvd25PcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYW5pbWF0aW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHNlbGVjdGVkQ291bnRyeSA9IGNvdW50cmllc1swXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlUmVmOiBFbGVtZW50UmVmKSB7fVxyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcclxuICBwcml2YXRlIG9uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XHJcblxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmRlZmF1bHRDb3VudHJ5KSB7XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gY291bnRyaWVzLmZpbmQoYyA9PiBjLmlzbzIgPT09IHRoaXMuZGVmYXVsdENvdW50cnkudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgIGlmIChtYXRjaCkgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBtYXRjaDtcclxuICAgIH1cclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmVSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkFuaW1hdGlvbkRvbmUoZXZlbnQ6IGFueSkge1xyXG4gIGlmICghdGhpcy5kcm9wZG93bk9wZW4pIHtcclxuICAgIHRoaXMuYW5pbWF0aW5nID0gZmFsc2U7XHJcbiAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRHJvcGRvd24oKSB7XHJcbiAgICB0aGlzLmRyb3Bkb3duT3BlbiA9ICF0aGlzLmRyb3Bkb3duT3BlbjtcclxuICAgIHRoaXMuYW5pbWF0aW5nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tPdXRzaWRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgdGhpcy5kcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VhcmNoQ2hhbmdlKCkge1xyXG4gICAgY29uc3QgdGVybSA9IHRoaXMuc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgdGhpcy5jb3VudHJpZXNMaXN0ID0gY291bnRyaWVzLmZpbHRlcihjID0+XHJcbiAgICAgIGMubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q291bnRyeShjb3VudHJ5OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gY291bnRyeTtcclxuICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xyXG4gICAgdGhpcy5jb3VudHJpZXNMaXN0ID0gY291bnRyaWVzO1xyXG4gICAgdGhpcy5kcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuZW1pdFBob25lQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBvblBob25lSW5wdXQoKSB7XHJcbiAgICB0aGlzLmVtaXRQaG9uZUNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0UGhvbmVDaGFuZ2UoKSB7XHJcbiAgICBjb25zdCBkaWdpdHNPbmx5ID0gdGhpcy5waG9uZU51bWJlci5yZXBsYWNlKC9cXEQvZywgJycpO1xyXG4gICAgY29uc3QgbGVuZ3RoID0gZGlnaXRzT25seS5sZW5ndGg7XHJcblxyXG4gICAgY29uc3QgZXhwZWN0ZWRMZW5ndGggPSB0aGlzLnNlbGVjdGVkQ291bnRyeT8ucGhvbmVMZW5ndGg7XHJcblxyXG4gICAgaWYgKGV4cGVjdGVkTGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gbGVuZ3RoICE9PSBleHBlY3RlZExlbmd0aDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGZhbGxiYWNrIHZhbGlkYXRpb25cclxuICAgICAgdGhpcy5pc0ludmFsaWQgPSBsZW5ndGggPCA3IHx8IGxlbmd0aCA+IDEyO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZ1bGxQaG9uZSA9IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlICsgdGhpcy5waG9uZU51bWJlcjtcclxuXHJcbiAgICBjb25zdCBzdHJ1Y3R1cmVkVmFsdWUgPSB7XHJcbiAgICAgIGUxNjROdW1iZXI6IGZ1bGxQaG9uZSxcclxuICAgICAgbmF0aW9uYWxOdW1iZXI6IHRoaXMucGhvbmVOdW1iZXIsXHJcbiAgICAgIGRpYWxDb2RlOiB0aGlzLnNlbGVjdGVkQ291bnRyeS5kaWFsQ29kZSxcclxuICAgICAgY291bnRyeUNvZGU6IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmlzbzIsXHJcbiAgICAgIGlzVmFsaWQ6ICF0aGlzLmlzSW52YWxpZCxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5vbkNoYW5nZShzdHJ1Y3R1cmVkVmFsdWUpO1xyXG4gICAgdGhpcy5waG9uZUNoYW5nZS5lbWl0KHN0cnVjdHVyZWRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5kaWFsQ29kZSAmJiB2YWx1ZS5jb3VudHJ5Q29kZSkge1xyXG4gICAgICBjb25zdCBtYXRjaCA9IGNvdW50cmllcy5maW5kKGMgPT5cclxuICAgICAgICBjLmRpYWxDb2RlID09PSB2YWx1ZS5kaWFsQ29kZSAmJiBjLmlzbzIgPT09IHZhbHVlLmNvdW50cnlDb2RlXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChtYXRjaCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gbWF0Y2g7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBjb3VudHJpZXNbMF07XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5waG9uZU51bWJlciA9IHZhbHVlLm5hdGlvbmFsTnVtYmVyIHx8ICcnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBjb3VudHJpZXNbMF07XHJcbiAgICAgIHRoaXMucGhvbmVOdW1iZXIgPSAnJztcclxuICAgIH1cclxuICB9XHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuICBhbGxvd09ubHlOdW1iZXJzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgY29uc3QgY2hhckNvZGUgPSBldmVudC5jaGFyQ29kZTtcclxuXHJcbiAgLy8gQWxsb3cgb25seSBkaWdpdHMgKDDigJM5KVxyXG4gIGlmIChjaGFyQ29kZSA8IDQ4IHx8IGNoYXJDb2RlID4gNTcpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG59XHJcblxyXG59XHJcbiJdfQ==
@@ -1,24 +0,0 @@
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
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRpYWwtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9waG9uZS1pbnB1dC9zcmMvbmd4LWRpYWwtaW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -1,6 +0,0 @@
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=