UNPKG

@schoolbelle/common

Version:

Demo library to showcase Angular packaging format

1,069 lines (1,050 loc) 113 kB
import { InjectionToken, Injectable, Inject, Component, forwardRef, Input, NgModule, ChangeDetectionStrategy, ChangeDetectorRef, Directive, HostListener, ElementRef, Renderer2, ViewEncapsulation } from '@angular/core'; import { find } from 'lodash'; import { NG_VALUE_ACCESSOR, FormsModule, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms'; import { CommonModule } from '@angular/common'; import { BsDropdownModule } from 'ngx-bootstrap/dropdown'; import { parseNumber, formatNumber, AsYouType, isValidNumber, parse } from 'libphonenumber-js'; /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ const /** @type {?} */ INTL_TEL_INPUT_CONFIG = new InjectionToken('IntlTelCountryConfigInterface'); /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ const /** @type {?} */ IntlTelCountryConfigDefault = { preSelectedCountry: /** @type {?} */ ('KR'), allowedCountries: /** @type {?} */ (['KR', 'RU']), preferredCountries: [] }; /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ class CountryCode { constructor() { this.allCountries = [ ['Afghanistan (‫افغانستان‬‎)', 'af', '93'], ['Albania (Shqipëri)', 'al', '355'], ['Algeria (‫الجزائر‬‎)', 'dz', '213'], ['American Samoa', 'as', '1684'], ['Andorra', 'ad', '376'], ['Angola', 'ao', '244'], ['Anguilla', 'ai', '1264'], ['Antigua and Barbuda', 'ag', '1268'], ['Argentina', 'ar', '54'], ['Armenia (Հայաստան)', 'am', '374'], ['Aruba', 'aw', '297'], ['Australia', 'au', '61', 0], ['Austria (Österreich)', 'at', '43'], ['Azerbaijan (Azərbaycan)', 'az', '994'], ['Bahamas', 'bs', '1242'], ['Bahrain (‫البحرين‬‎)', 'bh', '973'], ['Bangladesh (বাংলাদেশ)', 'bd', '880'], ['Barbados', 'bb', '1246'], ['Belarus (Беларусь)', 'by', '375'], ['Belgium (België)', 'be', '32'], ['Belize', 'bz', '501'], ['Benin (Bénin)', 'bj', '229'], ['Bermuda', 'bm', '1441'], ['Bhutan (འབྲུག)', 'bt', '975'], ['Bolivia', 'bo', '591'], ['Bosnia and Herzegovina (Босна и Херцеговина)', 'ba', '387'], ['Botswana', 'bw', '267'], ['Brazil (Brasil)', 'br', '55'], ['British Indian Ocean Territory', 'io', '246'], ['British Virgin Islands', 'vg', '1284'], ['Brunei', 'bn', '673'], ['Bulgaria (България)', 'bg', '359'], ['Burkina Faso', 'bf', '226'], ['Burundi (Uburundi)', 'bi', '257'], ['Cambodia (កម្ពុជា)', 'kh', '855'], ['Cameroon (Cameroun)', 'cm', '237'], [ 'Canada', 'ca', '1', 1, [ '204', '226', '236', '249', '250', '289', '306', '343', '365', '387', '403', '416', '418', '431', '437', '438', '450', '506', '514', '519', '548', '579', '581', '587', '604', '613', '639', '647', '672', '705', '709', '742', '778', '780', '782', '807', '819', '825', '867', '873', '902', '905' ] ], ['Cape Verde (Kabu Verdi)', 'cv', '238'], ['Caribbean Netherlands', 'bq', '599', 1], ['Cayman Islands', 'ky', '1345'], ['Central African Republic (République centrafricaine)', 'cf', '236'], ['Chad (Tchad)', 'td', '235'], ['Chile', 'cl', '56'], ['China (中国)', 'cn', '86'], ['Christmas Island', 'cx', '61', 2], ['Cocos (Keeling) Islands', 'cc', '61', 1], ['Colombia', 'co', '57'], ['Comoros (‫جزر القمر‬‎)', 'km', '269'], ['Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)', 'cd', '243'], ['Congo (Republic) (Congo-Brazzaville)', 'cg', '242'], ['Cook Islands', 'ck', '682'], ['Costa Rica', 'cr', '506'], ['Côte d’Ivoire', 'ci', '225'], ['Croatia (Hrvatska)', 'hr', '385'], ['Cuba', 'cu', '53'], ['Curaçao', 'cw', '599', 0], ['Cyprus (Κύπρος)', 'cy', '357'], ['Czech Republic (Česká republika)', 'cz', '420'], ['Denmark (Danmark)', 'dk', '45'], ['Djibouti', 'dj', '253'], ['Dominica', 'dm', '1767'], [ 'Dominican Republic (República Dominicana)', 'do', '1', 2, ['809', '829', '849'] ], ['Ecuador', 'ec', '593'], ['Egypt (‫مصر‬‎)', 'eg', '20'], ['El Salvador', 'sv', '503'], ['Equatorial Guinea (Guinea Ecuatorial)', 'gq', '240'], ['Eritrea', 'er', '291'], ['Estonia (Eesti)', 'ee', '372'], ['Ethiopia', 'et', '251'], ['Falkland Islands (Islas Malvinas)', 'fk', '500'], ['Faroe Islands (Føroyar)', 'fo', '298'], ['Fiji', 'fj', '679'], ['Finland (Suomi)', 'fi', '358', 0], ['France', 'fr', '33'], ['French Guiana (Guyane française)', 'gf', '594'], ['French Polynesia (Polynésie française)', 'pf', '689'], ['Gabon', 'ga', '241'], ['Gambia', 'gm', '220'], ['Georgia (საქართველო)', 'ge', '995'], ['Germany (Deutschland)', 'de', '49'], ['Ghana (Gaana)', 'gh', '233'], ['Gibraltar', 'gi', '350'], ['Greece (Ελλάδα)', 'gr', '30'], ['Greenland (Kalaallit Nunaat)', 'gl', '299'], ['Grenada', 'gd', '1473'], ['Guadeloupe', 'gp', '590', 0], ['Guam', 'gu', '1671'], ['Guatemala', 'gt', '502'], ['Guernsey', 'gg', '44', 1], ['Guinea (Guinée)', 'gn', '224'], ['Guinea-Bissau (Guiné Bissau)', 'gw', '245'], ['Guyana', 'gy', '592'], ['Haiti', 'ht', '509'], ['Honduras', 'hn', '504'], ['Hong Kong (香港)', 'hk', '852'], ['Hungary (Magyarország)', 'hu', '36'], ['Iceland (Ísland)', 'is', '354'], ['India (भारत)', 'in', '91'], ['Indonesia', 'id', '62'], ['Iran (‫ایران‬‎)', 'ir', '98'], ['Iraq (‫العراق‬‎)', 'iq', '964'], ['Ireland', 'ie', '353'], ['Isle of Man', 'im', '44', 2], ['Israel (‫ישראל‬‎)', 'il', '972'], ['Italy (Italia)', 'it', '39', 0], ['Jamaica', 'jm', '1876'], ['Japan (日本)', 'jp', '81'], ['Jersey', 'je', '44', 3], ['Jordan (‫الأردن‬‎)', 'jo', '962'], ['Kazakhstan (Казахстан)', 'kz', '7', 1], ['Kenya', 'ke', '254'], ['Kiribati', 'ki', '686'], ['Kosovo', 'xk', '383'], ['Kuwait (‫الكويت‬‎)', 'kw', '965'], ['Kyrgyzstan (Кыргызстан)', 'kg', '996'], ['Laos (ລາວ)', 'la', '856'], ['Latvia (Latvija)', 'lv', '371'], ['Lebanon (‫لبنان‬‎)', 'lb', '961'], ['Lesotho', 'ls', '266'], ['Liberia', 'lr', '231'], ['Libya (‫ليبيا‬‎)', 'ly', '218'], ['Liechtenstein', 'li', '423'], ['Lithuania (Lietuva)', 'lt', '370'], ['Luxembourg', 'lu', '352'], ['Macau (澳門)', 'mo', '853'], ['Macedonia (FYROM) (Македонија)', 'mk', '389'], ['Madagascar (Madagasikara)', 'mg', '261'], ['Malawi', 'mw', '265'], ['Malaysia', 'my', '60'], ['Maldives', 'mv', '960'], ['Mali', 'ml', '223'], ['Malta', 'mt', '356'], ['Marshall Islands', 'mh', '692'], ['Martinique', 'mq', '596'], ['Mauritania (‫موريتانيا‬‎)', 'mr', '222'], ['Mauritius (Moris)', 'mu', '230'], ['Mayotte', 'yt', '262', 1], ['Mexico (México)', 'mx', '52'], ['Micronesia', 'fm', '691'], ['Moldova (Republica Moldova)', 'md', '373'], ['Monaco', 'mc', '377'], ['Mongolia (Монгол)', 'mn', '976'], ['Montenegro (Crna Gora)', 'me', '382'], ['Montserrat', 'ms', '1664'], ['Morocco (‫المغرب‬‎)', 'ma', '212', 0], ['Mozambique (Moçambique)', 'mz', '258'], ['Myanmar (Burma) (မြန်မာ)', 'mm', '95'], ['Namibia (Namibië)', 'na', '264'], ['Nauru', 'nr', '674'], ['Nepal (नेपाल)', 'np', '977'], ['Netherlands (Nederland)', 'nl', '31'], ['New Caledonia (Nouvelle-Calédonie)', 'nc', '687'], ['New Zealand', 'nz', '64'], ['Nicaragua', 'ni', '505'], ['Niger (Nijar)', 'ne', '227'], ['Nigeria', 'ng', '234'], ['Niue', 'nu', '683'], ['Norfolk Island', 'nf', '672'], ['North Korea (조선 민주주의 인민 공화국)', 'kp', '850'], ['Northern Mariana Islands', 'mp', '1670'], ['Norway (Norge)', 'no', '47', 0], ['Oman (‫عُمان‬‎)', 'om', '968'], ['Pakistan (‫پاکستان‬‎)', 'pk', '92'], ['Palau', 'pw', '680'], ['Palestine (‫فلسطين‬‎)', 'ps', '970'], ['Panama (Panamá)', 'pa', '507'], ['Papua New Guinea', 'pg', '675'], ['Paraguay', 'py', '595'], ['Peru (Perú)', 'pe', '51'], ['Philippines', 'ph', '63'], ['Poland (Polska)', 'pl', '48'], ['Portugal', 'pt', '351'], ['Puerto Rico', 'pr', '1', 3, ['787', '939']], ['Qatar (‫قطر‬‎)', 'qa', '974'], ['Réunion (La Réunion)', 're', '262', 0], ['Romania (România)', 'ro', '40'], ['Russia (Россия)', 'ru', '7', 0], ['Rwanda', 'rw', '250'], ['Saint Barthélemy (Saint-Barthélemy)', 'bl', '590', 1], ['Saint Helena', 'sh', '290'], ['Saint Kitts and Nevis', 'kn', '1869'], ['Saint Lucia', 'lc', '1758'], ['Saint Martin (Saint-Martin (partie française))', 'mf', '590', 2], ['Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)', 'pm', '508'], ['Saint Vincent and the Grenadines', 'vc', '1784'], ['Samoa', 'ws', '685'], ['San Marino', 'sm', '378'], ['São Tomé and Príncipe (São Tomé e Príncipe)', 'st', '239'], ['Saudi Arabia (‫المملكة العربية السعودية‬‎)', 'sa', '966'], ['Senegal (Sénégal)', 'sn', '221'], ['Serbia (Србија)', 'rs', '381'], ['Seychelles', 'sc', '248'], ['Sierra Leone', 'sl', '232'], ['Singapore', 'sg', '65'], ['Sint Maarten', 'sx', '1721'], ['Slovakia (Slovensko)', 'sk', '421'], ['Slovenia (Slovenija)', 'si', '386'], ['Solomon Islands', 'sb', '677'], ['Somalia (Soomaaliya)', 'so', '252'], ['South Africa', 'za', '27'], ['South Korea (대한민국)', 'kr', '82'], ['South Sudan (‫جنوب السودان‬‎)', 'ss', '211'], ['Spain (España)', 'es', '34'], ['Sri Lanka (ශ්‍රී ලංකාව)', 'lk', '94'], ['Sudan (‫السودان‬‎)', 'sd', '249'], ['Suriname', 'sr', '597'], ['Svalbard and Jan Mayen', 'sj', '47', 1], ['Swaziland', 'sz', '268'], ['Sweden (Sverige)', 'se', '46'], ['Switzerland (Schweiz)', 'ch', '41'], ['Syria (‫سوريا‬‎)', 'sy', '963'], ['Taiwan (台灣)', 'tw', '886'], ['Tajikistan', 'tj', '992'], ['Tanzania', 'tz', '255'], ['Thailand (ไทย)', 'th', '66'], ['Timor-Leste', 'tl', '670'], ['Togo', 'tg', '228'], ['Tokelau', 'tk', '690'], ['Tonga', 'to', '676'], ['Trinidad and Tobago', 'tt', '1868'], ['Tunisia (‫تونس‬‎)', 'tn', '216'], ['Turkey (Türkiye)', 'tr', '90'], ['Turkmenistan', 'tm', '993'], ['Turks and Caicos Islands', 'tc', '1649'], ['Tuvalu', 'tv', '688'], ['U.S. Virgin Islands', 'vi', '1340'], ['Uganda', 'ug', '256'], ['Ukraine (Україна)', 'ua', '380'], ['United Arab Emirates (‫الإمارات العربية المتحدة‬‎)', 'ae', '971'], ['United Kingdom', 'gb', '44', 0], ['United States', 'us', '1', 0], ['Uruguay', 'uy', '598'], ['Uzbekistan (Oʻzbekiston)', 'uz', '998'], ['Vanuatu', 'vu', '678'], ['Vatican City (Città del Vaticano)', 'va', '39', 1], ['Venezuela', 've', '58'], ['Vietnam (Việt Nam)', 'vn', '84'], ['Wallis and Futuna', 'wf', '681'], ['Western Sahara (‫الصحراء الغربية‬‎)', 'eh', '212', 1], ['Yemen (‫اليمن‬‎)', 'ye', '967'], ['Zambia', 'zm', '260'], ['Zimbabwe', 'zw', '263'], ['Åland Islands', 'ax', '358', 1] ]; } } /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ class Country { constructor() { } } /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ class IntTelCountryService { /** * @param {?} countryCodeData * @param {?} intltelInputConfig */ constructor(countryCodeData, intltelInputConfig) { this.countryCodeData = countryCodeData; this.allCountries = []; this.preferredCountries = []; const /** @type {?} */ defaultIntlTelInputConfig = IntlTelCountryConfigDefault; this.intltelInputConfig = Object.assign({}, defaultIntlTelInputConfig, intltelInputConfig); this.fetchCountryData(); if (this.intltelInputConfig.preferredCountries.length) { this.intltelInputConfig.preferredCountries.forEach(iso2 => { let /** @type {?} */ preferredCountry = this.allCountries.filter(c => { return c.iso2 === iso2; }); this.preferredCountries.push(preferredCountry[0]); }); } // if (this.intltelInputConfig.preSelectedCountry) { // this.allCountries.forEach(country=>{ // if (country.iso2 === this.intltelInputConfig.preSelectedCountry) this.selectedCountry = country; // }); // } } /** * @param {?} conditions * @return {?} */ find(conditions) { return find(this.allCountries, conditions); } /** * @return {?} */ fetchCountryData() { this.countryCodeData.allCountries.forEach(c => { let /** @type {?} */ iso2 = /** @type {?} */ (c[1].toString().toUpperCase()); if (!this.intltelInputConfig.allowedCountries || this.intltelInputConfig.allowedCountries.indexOf(iso2) !== -1) { let /** @type {?} */ country = new Country(); country.name = c[0].toString(); (country.iso2 = iso2), (country.dialCode = c[2].toString()); country.priority = +c[3] || 0; country.areaCode = +c[4] || null; country.flagClass = country.iso2.toLocaleLowerCase(); this.allCountries.push(country); } }); } } IntTelCountryService.decorators = [ { type: Injectable }, ]; /** @nocollapse */ IntTelCountryService.ctorParameters = () => [ { type: CountryCode, }, { type: undefined, decorators: [{ type: Inject, args: [INTL_TEL_INPUT_CONFIG,] },] }, ]; /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ const /** @type {?} */ CountrySelectComponentValueAccessor = { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CountrySelectComponent), multi: true }; class CountrySelectComponent { /** * @param {?} intTelCountryService */ constructor(intTelCountryService) { this.intTelCountryService = intTelCountryService; this.onChange = _ => { }; this.onTouched = () => { }; } /** * @return {?} */ get value() { return this.countryDialCode; } /** * @param {?} v * @return {?} */ set value(v) { if (v !== this.countryDialCode) { let /** @type {?} */ country = this.intTelCountryService.find({ dialCode: v }); if (country) { this.country = country; this.countryDialCode = v; this.onChange(v); } } } /** * @param {?} value * @return {?} */ writeValue(value) { let /** @type {?} */ country = this.intTelCountryService.find({ dialCode: value }); if (country) this.onCountrySelect(country); } /** * @param {?} fn * @return {?} */ registerOnChange(fn) { this.onChange = fn; } /** * @param {?} fn * @return {?} */ registerOnTouched(fn) { this.onTouched = fn; } /** * @param {?} isDisabled * @return {?} */ setDisabledState(isDisabled) { this.disabled = isDisabled; } /** * @return {?} */ ngOnInit() { let /** @type {?} */ country = this.intTelCountryService.find({ dialCode: this.countryDialCode }); if (country) this.onCountrySelect(country); } /** * @param {?} country * @return {?} */ onCountrySelect(country) { this.value = country.dialCode; } } CountrySelectComponent.decorators = [ { type: Component, args: [{ selector: 'country-select', template: `<div dropdown [isDisabled]="disabled"> <button type="button" class="btn dropdown-toggle" [ngClass]="{'btn-danger':ngClass && ngClass['is-invalid'], 'btn-success':ngClass && ngClass['is-valid'], 'btn-sm': size === 'sm'}" dropdownToggle> <span class="flag-icon flag-icon-{{country?.flagClass}}"></span> <!-- <intl-flag [countryDialCode]="country?.dialCode"></intl-flag> --> </button> <ul class="dropdown-menu" *dropdownMenu> <li class="dropdown-item" *ngFor="let country of intTelCountryService.preferredCountries" (click)="onCountrySelect(country)"> <span class="flag-icon flag-icon-{{country.flagClass}}"></span> <span class="country-name">{{country.name}}</span> <span class="dial-code">+{{country.dialCode}}</span> </li> <li *ngIf="intTelCountryService.allCountries.length !== 0 && intTelCountryService.preferredCountries.length !== 0" class="divider"></li> <li class="dropdown-item" *ngFor="let country of intTelCountryService.allCountries" (click)="onCountrySelect(country)"> <span class="flag-icon flag-icon-{{country.flagClass}}"></span> <span class="country-name">{{country.name}}</span> <span class="dial-code">+{{country.dialCode}}</span> </li> </ul> </div> `, styles: [`div[dropdown]{position:absolute;height:100%}div[dropdown] button{padding:.3em .3em .3em 1em;height:100%;font-size:1em}`], providers: [CountrySelectComponentValueAccessor] },] }, ]; /** @nocollapse */ CountrySelectComponent.ctorParameters = () => [ { type: IntTelCountryService, }, ]; CountrySelectComponent.propDecorators = { "size": [{ type: Input, args: ['size',] },], "ngClass": [{ type: Input, args: ['ngClass',] },], }; /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ class CountrySelectModule { } CountrySelectModule.decorators = [ { type: NgModule, args: [{ imports: [CommonModule, FormsModule, BsDropdownModule], declarations: [CountrySelectComponent], exports: [CountrySelectComponent] },] }, ]; /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ class IntlFlagComponent { /** * @param {?} intTelCountryService * @param {?} cdRef */ constructor(intTelCountryService, cdRef) { this.intTelCountryService = intTelCountryService; this.cdRef = cdRef; } /** * @param {?} change * @return {?} */ ngOnChanges(change) { if (change && change.intlTel) { let /** @type {?} */ value = change.intlTel.currentValue; let /** @type {?} */ parsed, /** @type {?} */ countryDialCode; try { parsed = parseNumber(value, { extended: true }); countryDialCode = parsed.countryCallingCode; } catch (/** @type {?} */ e) { } this.country = this.intTelCountryService.find({ dialCode: countryDialCode }); } } } IntlFlagComponent.decorators = [ { type: Component, args: [{ selector: 'intl-flag', template: `<span class="flag-icon flag-icon-{{country?.flagClass}}"></span> `, styles: [``], changeDetection: ChangeDetectionStrategy.OnPush },] }, ]; /** @nocollapse */ IntlFlagComponent.ctorParameters = () => [ { type: IntTelCountryService, }, { type: ChangeDetectorRef, }, ]; IntlFlagComponent.propDecorators = { "intlTel": [{ type: Input, args: ['intlTel',] },], }; /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ class IntlFlagModule { } IntlFlagModule.decorators = [ { type: NgModule, args: [{ imports: [CommonModule], declarations: [IntlFlagComponent], exports: [IntlFlagComponent] },] }, ]; /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ const /** @type {?} */ TEL_VALUE_ACCESSOR = { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => LocalTelInputDirective), multi: true }; class LocalTelInputDirective { /** * @param {?} renderer * @param {?} elementRef * @param {?} intTelCountryService */ constructor(renderer, elementRef, intTelCountryService) { this.renderer = renderer; this.elementRef = elementRef; this.intTelCountryService = intTelCountryService; this.cursor = 0; } /** * @param {?} v * @return {?} */ ngOnChanges(v) { if (v.countryDialCode && v.countryDialCode.currentValue) { let /** @type {?} */ formatted_n = this.formatter(this.elementRef.nativeElement.value || ''); this.renderer.setProperty(this.elementRef.nativeElement, 'value', formatted_n); } } /** * @return {?} */ get iso2() { let /** @type {?} */ country = this.intTelCountryService.find({ dialCode: this.countryDialCode }); return country ? country.iso2 : undefined; } /** * @param {?} elm * @return {?} */ getCaretPosition(elm) { var /** @type {?} */ pos = 0; // Firefox support if (elm.selectionStart || elm.selectionStart == '0') { pos = elm.selectionStart; } else if ((/** @type {?} */ (document)).selection) { // IE Support // Set focus on the element elm.focus(); // To get cursor position, get empty selection range var /** @type {?} */ selection = (/** @type {?} */ (document)).selection.createRange(); // Move selection start to 0 position selection.moveStart('character', -elm.value.length); // The caret position is selection length pos = selection.text.length; } // Return results return pos; } /** * @param {?} elm * @param {?} caretPos * @return {?} */ setCaretPosition(elm, caretPos) { if (elm !== null) { this.cursor = caretPos; if (elm.createTextRange) { setTimeout(() => { var /** @type {?} */ range = elm.createTextRange(); range.move('character', caretPos); range.select(); }, 0); } else { if (elm.setSelectionRange) { elm.focus(); setTimeout(() => elm.setSelectionRange(caretPos, caretPos), 0); } else { elm.focus(); } } } } /** * @param {?=} value * @return {?} */ formatter(value = '') { return new AsYouType(this.iso2).input(value); } /** * @param {?} $event * @return {?} */ refreshCaretPosition($event) { this.cursor = this.getCaretPosition(this.elementRef.nativeElement); } /** * @param {?=} $event * @return {?} */ onInputChange($event = undefined) { let /** @type {?} */ formatted_o = $event.target.value; let /** @type {?} */ formatted_n = this.formatter(formatted_o || ''); // update model value this.onChange(formatted_n.replace(/\D/g, '')); let /** @type {?} */ formattingCharacterIsAdded = formatted_n.replace(/[\d]/g, '').length - formatted_o.replace(/[\d]/g, '').length; if ($event.key.match(/\d/) || $event.key === 'Backspace') { // press number key // if formatting charater ex - or ) is added, // 1. render to the screen // 2. correct cursor position accordingly. if (formattingCharacterIsAdded > 0) { this.renderer.setProperty(this.elementRef.nativeElement, 'value', formatted_n); this.setCaretPosition(this.elementRef.nativeElement, this.cursor + 1 + formattingCharacterIsAdded); } } else if ($event.key === 'ArrowLeft') { // press left // remember change in cursor position this.cursor--; } else if ($event.key === 'ArrowRight') { // press right // remember change in cursor position this.cursor++; } } /** * @param {?} $event * @return {?} */ preventNonNumericInput($event) { const /** @type {?} */ pattern = /[\d]/; let /** @type {?} */ inputChar = String.fromCharCode($event.charCode); if (!pattern.test(inputChar)) { event.preventDefault(); } } /** * @param {?} value * @return {?} */ writeValue(value) { let /** @type {?} */ formatted = this.formatter(value || ''); this.renderer.setProperty(this.elementRef.nativeElement, 'value', formatted); } /** * @param {?} fn * @return {?} */ registerOnChange(fn) { this.onChange = fn; } /** * @param {?} fn * @return {?} */ registerOnTouched(fn) { this.onTouched = fn; } /** * @param {?} isDisabled * @return {?} */ setDisabledState(isDisabled) { this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', isDisabled); } } LocalTelInputDirective.decorators = [ { type: Directive, args: [{ selector: '[local-tel][formControlName],[local-tel][formControl],[local-tel][ngModel]', providers: [TEL_VALUE_ACCESSOR] },] }, ]; /** @nocollapse */ LocalTelInputDirective.ctorParameters = () => [ { type: Renderer2, }, { type: ElementRef, }, { type: IntTelCountryService, }, ]; LocalTelInputDirective.propDecorators = { "countryDialCode": [{ type: Input },], "refreshCaretPosition": [{ type: HostListener, args: ['keydown', ['$event'],] }, { type: HostListener, args: ['click', ['$event'],] }, { type: HostListener, args: ['focus', ['$event'],] },], "onInputChange": [{ type: HostListener, args: ['keyup', ['$event'],] },], "preventNonNumericInput": [{ type: HostListener, args: ['keypress', ['$event'],] },], }; /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ class LocalTelInputModule { } LocalTelInputModule.decorators = [ { type: NgModule, args: [{ imports: [CommonModule, FormsModule], declarations: [LocalTelInputDirective], exports: [LocalTelInputDirective] },] }, ]; /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ const /** @type {?} */ IntlTelInputComponentValueAccessor = { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => IntlTelInputComponent), multi: true }; class IntlTelInputComponent { /** * @param {?} cdRef * @param {?} elementRef * @param {?} renderer */ constructor(cdRef, elementRef, renderer) { this.cdRef = cdRef; this.elementRef = elementRef; this.renderer = renderer; this.onChange = _ => { }; this.onTouched = () => { }; this.subscriptions = []; } /** * @param {?=} value * @return {?} */ writeValue(value = '') { if (typeof value === 'string') { let /** @type {?} */ parsed, /** @type {?} */ tel, /** @type {?} */ countryDialCode; try { parsed = parseNumber(value, { extended: true }); countryDialCode = parsed.countryCallingCode; tel = formatNumber(parsed, 'National').replace(/\D/g, ''); } catch (/** @type {?} */ e) { } if (tel) this.tel.setValue(tel); if (countryDialCode) this.countryDialCode.setValue(countryDialCode); if (tel || countryDialCode) this.cdRef.detectChanges(); } } /** * @param {?} fn * @return {?} */ registerOnChange(fn) { this.onChange = fn; } /** * @param {?} fn * @return {?} */ registerOnTouched(fn) { this.onTouched = fn; } /** * @param {?} isDisabled * @return {?} */ setDisabledState(isDisabled) { this.disabled = isDisabled; if (isDisabled) { this.tel.disable(); this.countryDialCode.disable(); } else { this.tel.enable(); this.countryDialCode.enable(); } } /** * @return {?} */ updateIntlTel() { this.value = '+' + this.countryDialCode.value + parseInt(this.tel.value); this.onChange(this.value); } /** * @return {?} */ createFormControls() { this.tel = new FormControl({ value: '', disabled: this.disabled }); this.countryDialCode = new FormControl({ value: '', disabled: this.disabled }); } /** * @return {?} */ createForm() { this.form = new FormGroup({ countryDialCode: this.countryDialCode, tel: this.tel }); } /** * @return {?} */ focus() { this.renderer.addClass(this.elementRef.nativeElement, 'focus'); } /** * @return {?} */ blur() { this.renderer.removeClass(this.elementRef.nativeElement, 'focus'); } /** * @return {?} */ ngOnInit() { this.createFormControls(); this.createForm(); this.subscriptions.push(this.form.valueChanges.subscribe(() => this.updateIntlTel())); } /** * @return {?} */ ngOnDestroy() { this.subscriptions.forEach(sub => sub.unsubscribe()); } } IntlTelInputComponent.decorators = [ { type: Component, args: [{ selector: 'intl-tel-input', styles: [`input{border:none;padding:.375em .75em .375em 4.3em;display:block;width:100%;line-height:1.5;color:#495057;text-align:inherit;background-color:transparent}input:focus{outline:0;box-shadow:none}input:disabled,input[readonly]{background-color:#e9ecef;opacity:1}`], template: `<form novalidate [formGroup]="form"> <div [ngClass]="{'input-group-lg':size === 'lg', 'input-group-sm':size === 'sm' }" style="position: relative;"> <country-select formControlName="countryDialCode" required></country-select> <input type="text" formControlName="tel" [countryDialCode]="countryDialCode.value" (focus)="focus()" (blur)="blur()" local-tel required autocomplete="off" i18n-placeholder="@@schoolbelleIntlTelInputPlaceHolder" placeholder="전화번호를 입력하세요."> </div> </form>`, providers: [IntlTelInputComponentValueAccessor], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated },] }, ]; /** @nocollapse */ IntlTelInputComponent.ctorParameters = () => [ { type: ChangeDetectorRef, }, { type: ElementRef, }, { type: Renderer2, }, ]; IntlTelInputComponent.propDecorators = { "ngClass": [{ type: Input, args: ['ngClass',] },], "size": [{ type: Input, args: ['size',] },], }; /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ class IntlTelInputModule { /** * @param {?=} config * @return {?} */ static forRoot(config = IntlTelCountryConfigDefault) { return { ngModule: IntlTelInputModule, providers: [ { provide: INTL_TEL_INPUT_CONFIG, useValue: config }, CountryCode, IntTelCountryService ] }; } } IntlTelInputModule.decorators = [ { type: NgModule, args: [{ imports: [ CommonModule, FormsModule, ReactiveFormsModule, CountrySelectModule, IntlFlagModule, LocalTelInputModule, BsDropdownModule.forRoot() ], declarations: [IntlTelInputComponent], exports: [ CountrySelectModule, IntlFlagModule, LocalTelInputModule, IntlTelInputComponent ] },] }, ]; /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * @param {?} control * @return {?} */ function IntlTelValidatorFn(control) { if (control.value) { if (control.value.match(/\+82000/)) { return null; } else { let /** @type {?} */ valid = false; try { valid = isValidNumber(parse(control.value)); } catch (/** @type {?} */ e) { valid = false; } if (!valid) { return { intltel: true }; } } } return null; } /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ export { IntlTelInputModule, IntlTelValidatorFn, IntTelCountryService, CountrySelectComponent as ɵc, CountrySelectComponentValueAccessor as ɵb, CountrySelectModule as ɵa, IntlFlagComponent as ɵh, IntlFlagModule as ɵg, IntlTelCountryConfigDefault as ɵm, INTL_TEL_INPUT_CONFIG as ɵd, LocalTelInputDirective as ɵj, LocalTelInputModule as ɵi, IntlTelInputComponent as ɵl, IntlTelInputComponentValueAccessor as ɵk, CountryCode as ɵe }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nob29sYmVsbGUtY29tbW9uLWNvbXBvbmVudHMtaW50bC10ZWwtaW5wdXQuanMubWFwIiwic291cmNlcyI6WyJuZzovL0BzY2hvb2xiZWxsZS9jb21tb24vY29tcG9uZW50cy9pbnRsLXRlbC1pbnB1dC9zcmMvY29uZmlncy9pbnRsLXRlbC1jb3VudHJ5LnRva2VuLnRzIiwibmc6Ly9Ac2Nob29sYmVsbGUvY29tbW9uL2NvbXBvbmVudHMvaW50bC10ZWwtaW5wdXQvc3JjL2NvbmZpZ3MvaW50bC10ZWwtY291bnRyeS1jb25maWcuZGVmYXVsdC50cyIsIm5nOi8vQHNjaG9vbGJlbGxlL2NvbW1vbi9jb21wb25lbnRzL2ludGwtdGVsLWlucHV0L3NyYy9yZXNvdXJjZS9jb3VudHJ5LWNvZGUudHMiLCJuZzovL0BzY2hvb2xiZWxsZS9jb21tb24vY29tcG9uZW50cy9pbnRsLXRlbC1pbnB1dC9zcmMvcmVzb3VyY2UvY291bnRyeS5tb2RlbC50cyIsIm5nOi8vQHNjaG9vbGJlbGxlL2NvbW1vbi9jb21wb25lbnRzL2ludGwtdGVsLWlucHV0L3NyYy9zZXJ2aWNlcy9pbnRsLXRlbC1jb3VudHJ5LnNlcnZpY2UudHMiLCJuZzovL0BzY2hvb2xiZWxsZS9jb21tb24vY29tcG9uZW50cy9pbnRsLXRlbC1pbnB1dC9zcmMvY29tcG9uZW50cy9jb3VudHJ5LXNlbGVjdC9jb3VudHJ5LXNlbGVjdC5jb21wb25lbnQudHMiLCJuZzovL0BzY2hvb2xiZWxsZS9jb21tb24vY29tcG9uZW50cy9pbnRsLXRlbC1pbnB1dC9zcmMvY29tcG9uZW50cy9jb3VudHJ5LXNlbGVjdC9jb3VudHJ5LXNlbGVjdC5tb2R1bGUudHMiLCJuZzovL0BzY2hvb2xiZWxsZS9jb21tb24vY29tcG9uZW50cy9pbnRsLXRlbC1pbnB1dC9zcmMvY29tcG9uZW50cy9pbnRsLWZsYWcvaW50bC1mbGFnLmNvbXBvbmVudC50cyIsIm5nOi8vQHNjaG9vbGJlbGxlL2NvbW1vbi9jb21wb25lbnRzL2ludGwtdGVsLWlucHV0L3NyYy9jb21wb25lbnRzL2ludGwtZmxhZy9pbnRsLWZsYWcubW9kdWxlLnRzIiwibmc6Ly9Ac2Nob29sYmVsbGUvY29tbW9uL2NvbXBvbmVudHMvaW50bC10ZWwtaW5wdXQvc3JjL2RpcmVjdGl2ZXMvbG9jYWwtdGVsLWlucHV0L2xvY2FsLXRlbC1pbnB1dC5kaXJlY3RpdmUudHMiLCJuZzovL0BzY2hvb2xiZWxsZS9jb21tb24vY29tcG9uZW50cy9pbnRsLXRlbC1pbnB1dC9zcmMvZGlyZWN0aXZlcy9sb2NhbC10ZWwtaW5wdXQvbG9jYWwtdGVsLWlucHV0Lm1vZHVsZS50cyIsIm5nOi8vQHNjaG9vbGJlbGxlL2NvbW1vbi9jb21wb25lbnRzL2ludGwtdGVsLWlucHV0L3NyYy9pbnRsLXRlbC1pbnB1dC5jb21wb25lbnQudHMiLCJuZzovL0BzY2hvb2xiZWxsZS9jb21tb24vY29tcG9uZW50cy9pbnRsLXRlbC1pbnB1dC9zcmMvaW50bC10ZWwtaW5wdXQubW9kdWxlLnRzIiwibmc6Ly9Ac2Nob29sYmVsbGUvY29tbW9uL2NvbXBvbmVudHMvaW50bC10ZWwtaW5wdXQvc3JjL2ludGwtdGVsLXZhbGlkYXRvci9pbnRsLXRlbC12YWxpZGF0b3IuZm4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEludGxUZWxDb3VudHJ5Q29uZmlnSW50ZXJmYWNlIH0gZnJvbSAnLi9pbnRsLXRlbC1jb3VudHJ5LWNvbmZpZy5pbnRlcmZhY2UnO1xuZXhwb3J0IGNvbnN0IElOVExfVEVMX0lOUFVUX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxcbiAgSW50bFRlbENvdW50cnlDb25maWdJbnRlcmZhY2Vcbj4oJ0ludGxUZWxDb3VudHJ5Q29uZmlnSW50ZXJmYWNlJyk7XG4iLCJpbXBvcnQgeyBJbnRsVGVsQ291bnRyeUNvbmZpZ0ludGVyZmFjZSB9IGZyb20gJy4vaW50bC10ZWwtY291bnRyeS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCAqIGFzIGxpYnBob25lbnVtYmVyIGZyb20gJ2xpYnBob25lbnVtYmVyLWpzJztcblxuZXhwb3J0IGNvbnN0IEludGxUZWxDb3VudHJ5Q29uZmlnRGVmYXVsdDogSW50bFRlbENvdW50cnlDb25maWdJbnRlcmZhY2UgPSB7XG4gIHByZVNlbGVjdGVkQ291bnRyeTogJ0tSJyBhcyBsaWJwaG9uZW51bWJlci5Db3VudHJ5Q29kZSxcbiAgYWxsb3dlZENvdW50cmllczogWydLUicsICdSVSddIGFzIEFycmF5PGxpYnBob25lbnVtYmVyLkNvdW50cnlDb2RlPixcbiAgcHJlZmVycmVkQ291bnRyaWVzOiBbXVxufTtcbiIsImV4cG9ydCBjbGFzcyBDb3VudHJ5Q29kZSB7XG4gIHB1YmxpYyBhbGxDb3VudHJpZXMgPSBbXG4gICAgWydBZmdoYW5pc3RhbiAow6LCgMKrw5jCp8OZwoHDmMK6w5jCp8OZwobDmMKzw5jCqsOYwqfDmcKGw6LCgMKsw6LCgMKOKScsICdhZicsICc5MyddLFxuICAgIFsnQWxiYW5pYSAoU2hxaXDDg8KrcmkpJywgJ2FsJywgJzM1NSddLFxuICAgIFsnQWxnZXJpYSAow6LCgMKrw5jCp8OZwoTDmMKsw5jCssOYwqfDmMKmw5jCscOiwoDCrMOiwoDCjiknLCAnZHonLCAnMjEzJ10sXG4gICAgWydBbWVyaWNhbiBTYW1vYScsICdhcycsICcxNjg0J10sXG4gICAgWydBbmRvcnJhJywgJ2FkJywgJzM3NiddLFxuICAgIFsnQW5nb2xhJywgJ2FvJywgJzI0NCddLFxuICAgIFsnQW5ndWlsbGEnLCAnYWknLCAnMTI2NCddLFxuICAgIFsnQW50aWd1YSBhbmQgQmFyYnVkYScsICdhZycsICcxMjY4J10sXG4gICAgWydBcmdlbnRpbmEnLCAnYXInLCAnNTQnXSxcbiAgICBbJ0FybWVuaWEgKMOVwoDDlcKhw5XCtcOVwqHDlcK9w5XCv8OVwqHDlcK2KScsICdhbScsICczNzQnXSxcbiAgICBbJ0FydWJhJywgJ2F3JywgJzI5NyddLFxuICAgIFsnQXVzdHJhbGlhJywgJ2F1JywgJzYxJywgMF0sXG4gICAgWydBdXN0cmlhICjDg8KWc3RlcnJlaWNoKScsICdhdCcsICc0MyddLFxuICAgIFsnQXplcmJhaWphbiAoQXrDicKZcmJheWNhbiknLCAnYXonLCAnOTk0J10sXG4gICAgWydCYWhhbWFzJywgJ2JzJywgJzEyNDInXSxcbiAgICBbJ0JhaHJhaW4gKMOiwoDCq8OYwqfDmcKEw5jCqMOYwq3DmMKxw5nCisOZwobDosKAwqzDosKAwo4pJywgJ2JoJywgJzk3MyddLFxuICAgIFsnQmFuZ2xhZGVzaCAow6DCpsKsw6DCpsK+w6DCpsKCw6DCpsKyw6DCpsK+w6DCpsKmw6DCp8KHw6DCpsK2KScsICdiZCcsICc4ODAnXSxcbiAgICBbJ0JhcmJhZG9zJywgJ2JiJywgJzEyNDYnXSxcbiAgICBbJ0JlbGFydXMgKMOQwpHDkMK1w5DCu8OQwrDDkcKAw5HCg8ORwoHDkcKMKScsICdieScsICczNzUnXSxcbiAgICBbJ0JlbGdpdW0gKEJlbGdpw4PCqyknLCAnYmUnLCAnMzInXSxcbiAgICBbJ0JlbGl6ZScsICdieicsICc1MDEnXSxcbiAgICBbJ0JlbmluIChCw4PCqW5pbiknLCAnYmonLCAnMjI5J10sXG4gICAgWydCZXJtdWRhJywgJ2JtJywgJzE0NDEnXSxcbiAgICBbJ0JodXRhbiAow6DCvcKgw6DCvcKWw6DCvsKyw6DCvcK0w6DCvcKCKScsICdidCcsICc5NzUnXSxcbiAgICBbJ0JvbGl2aWEnLCAnYm8nLCAnNTkxJ10sXG4gICAgWydCb3NuaWEgYW5kIEhlcnplZ292aW5hICjDkMKRw5DCvsORwoHDkMK9w5DCsCDDkMK4IMOQwqXDkMK1w5HCgMORwobDkMK1w5DCs8OQwr7DkMKyw5DCuMOQwr3DkMKwKScsICdiYScsICczODcnXSxcbiAgICBbJ0JvdHN3YW5hJywgJ2J3JywgJzI2NyddLFxuICAgIFsnQnJhemlsIChCcmFzaWwpJywgJ2JyJywgJzU1J10sXG4gICAgWydCcml0aXNoIEluZGlhbiBPY2VhbiBUZXJyaXRvcnknLCAnaW8nLCAnMjQ2J10sXG4gICAgWydCcml0aXNoIFZpcmdpbiBJc2xhbmRzJywgJ3ZnJywgJzEyODQnXSxcbiAgICBbJ0JydW5laScsICdibicsICc2NzMnXSxcbiAgICBbJ0J1bGdhcmlhICjDkMKRw5HCisOQwrvDkMKzw5DCsMORwoDDkMK4w5HCjyknLCAnYmcnLCAnMzU5J10sXG4gICAgWydCdXJraW5hIEZhc28nLCAnYmYnLCAnMjI2J10sXG4gICAgWydCdXJ1bmRpIChVYnVydW5kaSknLCAnYmknLCAnMjU3J10sXG4gICAgWydDYW1ib2RpYSAow6HCnsKAw6HCnsKYw6HCn8KSw6HCnsKWw6HCnsK7w6HCnsKHw6HCnsK2KScsICdraCcsICc4NTUnXSxcbiAgICBbJ0NhbWVyb29uIChDYW1lcm91biknLCAnY20nLCAnMjM3J10sXG4gICAgW1xuICAgICAgJ0NhbmFkYScsXG4gICAgICAnY2EnLFxuICAgICAgJzEnLFxuICAgICAgMSxcbiAgICAgIFtcbiAgICAgICAgJzIwNCcsXG4gICAgICAgICcyMjYnLFxuICAgICAgICAnMjM2JyxcbiAgICAgICAgJzI0OScsXG4gICAgICAgICcyNTAnLFxuICAgICAgICAnMjg5JyxcbiAgICAgICAgJzMwNicsXG4gICAgICAgICczNDMnLFxuICAgICAgICAnMzY1JyxcbiAgICAgICAgJzM4NycsXG4gICAgICAgICc0MDMnLFxuICAgICAgICAnNDE2JyxcbiAgICAgICAgJzQxOCcsXG4gICAgICAgICc0MzEnLFxuICAgICAgICAnNDM3JyxcbiAgICAgICAgJzQzOCcsXG4gICAgICAgICc0NTAnLFxuICAgICAgICAnNTA2JyxcbiAgICAgICAgJzUxNCcsXG4gICAgICAgICc1MTknLFxuICAgICAgICAnNTQ4JyxcbiAgICAgICAgJzU3OScsXG4gICAgICAgICc1ODEnLFxuICAgICAgICAnNTg3JyxcbiAgICAgICAgJzYwNCcsXG4gICAgICAgICc2MTMnLFxuICAgICAgICAnNjM5JyxcbiAgICAgICAgJzY0NycsXG4gICAgICAgICc2NzInLFxuICAgICAgICAnNzA1JyxcbiAgICAgICAgJzcwOScsXG4gICAgICAgICc3NDInLFxuICAgICAgICAnNzc4JyxcbiAgICAgICAgJzc4MCcsXG4gICAgICAgICc3ODInLFxuICAgICAgICAnODA3JyxcbiAgICAgICAgJzgxOScsXG4gICAgICAgICc4MjUnLFxuICAgICAgICAnODY3JyxcbiAgICAgICAgJzg3MycsXG4gICAgICAgICc5MDInLFxuICAgICAgICAnOTA1J1xuICAgICAgXVxuICAgIF0sXG4gICAgWydDYXBlIFZlcmRlIChLYWJ1IFZlcmRpKScsICdjdicsICcyMzgnXSxcbiAgICBbJ0NhcmliYmVhbiBOZXRoZXJsYW5kcycsICdicScsICc1OTknLCAxXSxcbiAgICBbJ0NheW1hbiBJc2xhbmRzJywgJ2t5JywgJzEzNDUnXSxcbiAgICBbJ0NlbnRyYWwgQWZyaWNhbiBSZXB1YmxpYyAoUsODwqlwdWJsaXF1ZSBjZW50cmFmcmljYWluZSknLCAnY2YnLCAnMjM2J10sXG4gICAgWydDaGFkIChUY2hhZCknLCAndGQnLCAnMjM1J10sXG4gICAgWydDaGlsZScsICdjbCcsICc1NiddLFxuICAgIFsnQ2hpbmEgKMOkwrjCrcOlwpvCvSknLCAnY24nLCAnODYnXSxcbiAgICBbJ0NocmlzdG1hcyBJc2xhbmQnLCAnY3gnLCAnNjEnLCAyXSxcbiAgICBbJ0NvY29zIChLZWVsaW5nKSBJc2xhbmRzJywgJ2NjJywgJzYxJywgMV0sXG4gICAgWydDb2xvbWJpYScsICdjbycsICc1NyddLFxuICAgIFsnQ29tb3JvcyAow6LCgMKrw5jCrMOYwrLDmMKxIMOYwqfDmcKEw5nCgsOZwoXDmMKxw6LCgMKsw6LCgMKOKScsICdrbScsICcyNjknXSxcbiAgICBbJ0NvbmdvIChEUkMpIChKYW1odXJpIHlhIEtpZGVtb2tyYXNpYSB5YSBLb25nbyknLCAnY2QnLCAnMjQzJ10sXG4gICAgWydDb25nbyAoUmVwdWJsaWMpIChDb25nby1CcmF6emF2aWxsZSknLCAnY2cnLCAnMjQyJ10sXG4gICAgWydDb29rIElzbGFuZHMnLCAnY2snLCAnNjgyJ10sXG4gICAgWydDb3N0YSBSaWNhJywgJ2NyJywgJzUwNiddLFxuICAgIFsnQ8ODwrR0ZSBkw6LCgMKZSXZvaXJlJywgJ2NpJywgJzIyNSddLFxuICAgIFsnQ3JvYXRpYSAoSHJ2YXRza2EpJywgJ2hyJywgJzM4NSddLFxuICAgIFsnQ3ViYScsICdjdScsICc1MyddLFxuICAgIFsnQ3VyYcODwqdhbycsICdjdycsICc1OTknLCAwXSxcbiAgICBbJ0N5cHJ1cyAow47CmsOPwo3Dj8KAw4/CgcOOwr/Dj8KCKScsICdjeScsICczNTcnXSxcbiAgICBbJ0N6ZWNoIFJlcHVibGljICjDhMKMZXNrw4PCoSByZXB1Ymxpa2EpJywgJ2N6JywgJzQyMCddLFxuICAgIFsnRGVubWFyayAoRGFubWFyayknLCAnZGsnLCAnNDUnXSxcbiAgICBbJ0RqaWJvdXRpJywgJ2RqJywgJzI1MyddLFxuICAgIFsnRG9taW5pY2EnLCAnZG0nLCAnMTc2NyddLFxuICAgIFtcbiAgICAgICdEb21pbmljYW4gUmVwdWJsaWMgKFJlcMODwrpibGljYSBEb21pbmljYW5hKScsXG4gICAgICAnZG8nLFxuICAgICAgJzEnLFxuICAgICAgMixcbiAgICAgIFsnODA5JywgJzgyOScsICc4NDknXVxuICAgIF0sXG4gICAgWydFY3VhZG9yJywgJ2VjJywgJzU5MyddLFxuICAgIFsnRWd5cHQgKMOiwoDCq8OZwoXDmMK1w5jCscOiwoDCrMOiwoDCjiknLCAnZWcnLCAnMjAnXSxcbiAgICBbJ0VsIFNhbHZhZG9yJywgJ3N2JywgJzUwMyddLFxuICAgIFsnRXF1YXRvcmlhbCBHdWluZWEgKEd1aW5lYSBFY3VhdG9yaWFsKScsICdncScsICcyNDAnXSxcbiAgICBbJ0VyaXRyZWEnLCAnZXInLCAnMjkxJ10sXG4gICAgWydFc3RvbmlhIChFZXN0aSknLCAnZWUnLCAnMzcyJ10sXG4gICAgWydFdGhpb3BpYScsICdldCcsICcyNTEnXSxcbiAgICBbJ0ZhbGtsYW5kIElzbGFuZHMgKElzbGFzIE1hbHZpbmFzKScsICdmaycsICc1MDAnXSxcbiAgICBbJ0Zhcm9lIElzbGFuZHMgKEbDg8K4cm95YXIpJywgJ2ZvJywgJzI5OCddLFxuICAgIFsnRmlqaScsICdmaicsICc2NzknXSxcbiAgICBbJ0ZpbmxhbmQgKFN1b21pKScsICdmaScsICczNTgnLCAwXSxcbiAgICBbJ0ZyYW5jZScsICdmcicsICczMyddLFxuICAgIFsnRnJlbmNoIEd1aWFuYSAoR3V5YW5lIGZyYW7Dg8KnYWlzZSknLCAnZ2YnLCAnNTk0J10sXG4gICAgWydGcmVuY2ggUG9seW5lc2lhIChQb2x5bsODwqlzaWUgZnJhbsODwqdhaXNlKScsICdwZicsICc2ODknXSxcbiAgICBbJ0dhYm9uJywgJ2dhJywgJzI0MSddLFxuICAgIFsnR2FtYmlhJywgJ2dtJywgJzIyMCddLFxuICAgIFsnR2VvcmdpYSAow6HCg8Khw6HCg8KQw6HCg8Klw6HCg8KQw6HCg8Kgw6HCg8KXw6HCg8KVw6HCg8KUw6HCg8Kaw6HCg8KdKScsICdnZScsICc5OTUnXSxcbiAgICBbJ0dlcm1hbnkgKERldXRzY2hsYW5kKScsICdkZScsICc0OSddLFxuICAgIFsnR2hhbmEgKEdhYW5hKScsICdnaCcsICcyMzMnXSxcbiAgICBbJ0dpYnJhbHRhcicsICdnaScsICczNTAnXSxcbiAgICBbJ0dyZWVjZSAow47ClcOOwrvDjsK7w47CrMOOwrTDjsKxKScsICdncicsICczMCddLFxuICAgIFsnR3JlZW5sYW5kIChLYWxhYWxsaXQgTnVuYWF0KScsICdnbCcsICcyOTknXSxcbiAgICBbJ0dyZW5hZGEnLCAnZ2QnLCAnMTQ3MyddLFxuICAgIFsnR3VhZGVsb3VwZScsICdncCcsICc1OTAnLCAwXSxcbiAgICBbJ0d1YW0nLCAnZ3UnLCAnMTY3MSddLFxuICAgIFsnR3VhdGVtYWxhJywgJ2d0JywgJzUwMiddLFxuICAgIFsnR3Vlcm5zZXknLCAnZ2cnLCAnNDQnLCAxXSxcbiAgICBbJ0d1aW5lYSAoR3VpbsODwqllKScsICdnbicsICcyMjQnXSxcbiAgICBbJ0d1aW5lYS1CaXNzYXUgKEd1aW7Dg8KpIEJpc3NhdSknLCAnZ3cnLCAnMjQ1J10sXG4gICAgWydHdXlhbmEnLCAnZ3knLCAnNTkyJ10sXG4gICAgWydIYWl0aScsICdodCcsICc1MDknXSxcbiAgICBbJ0hvbmR1cmFzJywgJ2huJywgJzUwNCddLFxuICAgIFsnSG9uZyBLb25nICjDqcKmwpnDpsK4wq8pJywgJ2hrJywgJzg1MiddLFxuICAgIFsnSHVuZ2FyeSAoTWFneWFyb3JzesODwqFnKScsICdodScsICczNiddLFxuICAgIFsnSWNlbGFuZCAow4PCjXNsYW5kKScsICdpcycsICczNTQnXSxcbiAgICBbJ0luZGlhICjDoMKkwq3DoMKkwr7DoMKkwrDDoMKkwqQpJywgJ2luJywgJzkxJ10sXG4gICAgWydJbmRvbmVzaWEnLCAnaWQnLCAnNjInXSxcbiAgICBbJ0lyYW4gKMOiwoDCq8OYwqfDm8KMw5jCscOYwqfDmcKGw6LCgMKsw6LCgMKOKScsICdpcicsICc5OCddLFxuICAgIFsnSXJhcSAow6LCgMKrw5jCp8OZwoTDmMK5w5jCscOYwqfDmcKCw6LCgMKsw6LCgMKOKScsICdpcScsICc5NjQnXSxcbiAgICBbJ0lyZWxhbmQnLCAnaWUnLCAnMzUzJ10sXG4gICAgWydJc2xlIG9mIE1hbicsICdpbScsICc0NCcsIDJdLFxuICAgIFsnSXNyYWVsICjDosKAwqvDl8KZw5fCqcOXwqjDl8KQw5fCnMOiwoDCrMOiwoDCjiknLCAnaWwnLCAnOTcyJ10sXG4gICAgWydJdGFseSAoSXRhbGlhKScsICdpdCcsICczOScsIDBdLFxuICAgIFsnSmFtYWljYScsICdqbScsICcxODc2J10sXG4gICAgWydKYXBhbiAow6bCl8Klw6bCnMKsKScsICdqcCcsICc4MSddLFxuICAgIFsnSmVyc2V5JywgJ2plJywgJzQ0JywgM10sXG4gICAgWydKb3JkYW4gKMOiwoDCq8OYwqfDmcKEw5jCo8OYwrHDmMKvw5nChsOiwoDCrMOiwoDCjiknLCAnam8nLCAnOTYyJ10sXG4gICAgWydLYXpha2hzdGFuICjDkMKaw5DCsMOQwrfDkMKww5HChcORwoHDkcKCw5DCsMOQwr0pJywgJ2t6JywgJzcnLCAxXSxcbiAgICBbJ0tlbnlhJywgJ2tlJywgJzI1NCddLFxuICAgIFsnS2lyaWJhdGknLCAna2knLCAnNjg2J10sXG4gICAgWydLb3Nvdm8nLCAneGsnLCAnMzgzJ10sXG4gICAgWydLdXdhaXQgKMOiwoDCq8OYwqfDmcKEw5nCg8OZwojDmcKKw5jCqsOiwoDCrMOiwoDCjiknLCAna3cnLCAnOTY1J10sXG4gICAgWydLeXJneXpzdGFuICjDkMKaw5HCi8ORwoDDkMKzw5HCi8OQwrfDkcKBw5HCgsOQwrDDkMK9KScsICdrZycsICc5OTYnXSxcbiAgICBbJ0xhb3MgKMOgwrrCpcOgwrrCssOgwrrCpyknLCAnbGEnLCAnODU2J10sXG4gICAgWydMYXR2aWEgKExhdHZpamEpJywgJ2x2JywgJzM3MSddLFxuICAgIFsnTGViYW5vbiAow6LCgMKrw5nChMOYwqjDmcKGw5jCp8OZwobDosKAwqzDosKAwo4pJywgJ2xiJywgJzk2MSddLFxuICAgIFsnTGVzb3RobycsICdscycsICcyNjYnXSxcbiAgICBbJ0xpYmVyaWEnLCAnbHInLCAnMjMxJ10sXG4gICAgWydMaWJ5YSAow6LCgMKrw5nChMOZworDmMKow5nCisOYwqfDosKAwqzDosKAwo4pJywgJ2x5JywgJzIxOCddLFxuICAgIFsnTGllY2h0ZW5zdGVpbicsICdsaScsICc0MjMnXSxcbiAgICBbJ0xpdGh1YW5pYSAoTGlldHV2YSknLCAnbHQnLCAnMzcwJ10sXG4gICAgWydMdXhlbWJvdXJnJywgJ2x1JywgJzM1MiddLFxuICAgIFsnTWFjYXUgKMOmwr7Cs8OpwpbCgCknLCAnbW8nLCAnODUzJ10sXG4gICAgWydNYWNlZG9uaWEgKEZZUk9NKSAow5DCnMOQwrDDkMK6w5DCtcOQwrTDkMK+w5DCvcOQwrjDkcKYw5DCsCknLCAnbWsnLCAnMzg5J10sXG4gICAgWydNYWRhZ2FzY2FyIChNYWRhZ2FzaWthcmEpJywgJ21nJywgJzI2MSddLFxuICAgIFsnTWFsYXdpJywgJ213JywgJzI2NSddLFxuICAgIFsnTWFsYXlzaWEnLCAnbXknLCAnNjAnXSxcbiAgICBbJ01hbGRpdmVzJywgJ212JywgJzk2MCddLFxuICAgIFsnTWFsaScsICdtbCcsICcyMjMnXSxcbiAgICBbJ01hbHRhJywgJ210JywgJzM1NiddLFxuICAgIFsnTWFyc2hhbGwgSXNsYW5kcycsICdtaCcsICc2OTInXSxcbiAgICBbJ01hcnRpbmlxdWUnLCAnbXEnLCAnNTk2J10sXG4gICAgWydNYXVyaXRhbmlhICjDosKAwqvDmcKFw5nCiMOYwrHDmcKKw5jCqsOYwqfDmcKGw5nCisOYwqfDosKAwqzDosKAwo4pJywgJ21yJywgJzIyMiddLFxuICAgIFsnTWF1cml0aXVzIChNb3JpcyknLCAnbXUnLCAnMjMwJ10sXG4gICAgWydNYXlvdHRlJywgJ3l0JywgJzI2MicsIDFdLFxuICAgIFsnTWV4aWNvIChNw4PCqXhpY28pJywgJ214JywgJzUyJ10sXG4gICAgWydNaWNyb25lc2lhJywgJ2ZtJywgJzY5MSddLFxuICAgIFsnTW9sZG92YSAoUmVwdWJsaWNhIE1vbGRvdmEpJywgJ21kJywgJzM3MyddLFxuICAgIFsnTW9uYWNvJywgJ21jJywgJzM3NyddLFxuICAgIFsnTW9uZ29saWEgKMOQwpzDkMK+w5DCvcOQwrPDkMK+w5DCuyknLCAnbW4nLCAnOTc2J10sXG4gICAgWydNb250ZW5lZ3JvIChDcm5hIEdvcmEpJywgJ21lJywgJzM4MiddLFxuICAgIFsnTW9udHNlcnJhdCcsICdtcycsICcxNjY0J10sXG4gICAgWydNb3JvY2NvICjDosKAwqvDmMKnw5nChMOZwoXDmMK6w5jCscOYwqjDosKAwqzDosKAwo4pJywgJ21hJywgJzIxMicsIDBdLFxuICAgIFsnTW96YW1iaXF1ZSAoTW/Dg8KnYW1iaXF1ZSknLCAnbXonLCAnMjU4J10sXG4gICAgWydNeWFubWFyIChCdXJtYSkgKMOhwoDCmcOhwoDCvMOhwoDClMOhwoDCusOhwoDCmcOhwoDCrCknLCAnbW0nLCAnOTUnXSxcbiAgICBbJ05hbWliaWEgKE5hbWliacODwqspJywgJ25hJywgJzI2NCddLFxuICAgIFsnTmF1cnUnLCAnbnInLCAnNjc0J10sXG4gICAgWydOZXBhbCAow6DCpMKow6DCpcKHw6DCpMKqw6DCpMK+w6DCpMKyKScsICducCcsICc5NzcnXSxcbiAgICBbJ05ldGhlcmxhbmRzIChOZWRlcmxhbmQpJywgJ25sJywgJzMxJ10sXG4gICAgWydOZXcgQ2FsZWRvbmlhIChOb3V2ZWxsZS1DYWzDg8KpZG9uaWUpJyw