class AbstractSmartDatePart{constructor(a,b){this._state=AbstractSmartDatePart.STATE_NONE,this._cleanedValue="",this._parsedValue="",this._scanned="",this._placeholder=a,this._static=b}state(){return this._state}isNoState(){return this._state===AbstractSmartDatePart.STATE_NONE}isIncomplete(){return this._state===AbstractSmartDatePart.STATE_INCOMPLETE}isComplete(){return this._state===AbstractSmartDatePart.STATE_COMPLETE}resetState(){this._state=AbstractSmartDatePart.STATE_NONE}cleanedValue(){return this._cleanedValue}parsedValue(){return this._parsedValue}placeHolder(){return this._placeholder}isStatic(){return this._static}_isNumericSymbol(a){return"0"<=a&&"9">=a}check(a){return!1}}AbstractSmartDatePart.STATE_NONE=0,AbstractSmartDatePart.STATE_INCOMPLETE=1,AbstractSmartDatePart.STATE_COMPLETE=2;class SmartDateStaticPart extends AbstractSmartDatePart{constructor(a){super(a,!0),this._cleanedValue=a}parse(a){let b=a.value(),c=a.valueIndex();for(;cthis._size?b.substring(0,this._size):b.lengthb&&d--,+a.substring(c,d)}scanValue(a,b){let c=a.valueIndex(),d=a.value(),e=0;for(;cb&&c--;let f=d.substring(a.valueIndex(),c);return a.setValueIndex(c),f}_defineParsingState(a,b){return 0=this._size||!b)?void(this._state=AbstractSmartDatePart.STATE_COMPLETE):10*this._numericValue>a?void(this._state=AbstractSmartDatePart.STATE_COMPLETE):void(this._state=AbstractSmartDatePart.STATE_INCOMPLETE)}_defineCleanValue(){return this._cleanedValue="",this.isNoState()?void 0:this.isComplete()?void(this._cleanedValue=this.formatValue(this._numericValue)):void(0SmartDateYearPart.MAXIMAL_VALUE&&(this._numericValue=SmartDateYearPart.MAXIMAL_VALUE),this.isComplete()&&this._numericValue=this._size?void(this._state=AbstractSmartDatePart.STATE_COMPLETE):void(this._state=AbstractSmartDatePart.STATE_INCOMPLETE)}_defineCleanValue(){this._cleanedValue=0=this._value.length}value(){return this._value}valueIndex(){return this._valueIndex}setValueIndex(a){this._valueIndexa||a>=SmartDateMonthPart.MAXIMAL_VALUE?SmartDateMonthPart.MAXIMAL_VALUE:1===a&&b?SmartDateFormat.BASIC_MONTH_SIZES[a]+1:SmartDateFormat.BASIC_MONTH_SIZES[a]}_isLeaPYear(a){return 0==a%4&&(0!=a%100||0==a%400)}getCorrectedValue(){let a=0,b="";for(;athis._maximalDate.valueOf()){let a=this._minimalDate;this._minimalDate=this._maximalDate,this._maximalDate=a}null===this._defaultDate||(this._defaultDate.valueOf()this._maximalDate.valueOf()&&(this._defaultDate=this._maximalDate))}_parseDateValue(a){if("object"==typeof a&&null!==a&&a instanceof Date)return a;if("string"!=typeof a||""===a.trim())return null;let b=this._dateYmdParser.exec(a);return null===b?(b=this._dateDmyParser.exec(a),null===b?null:new Date(+b[3],+b[2]-1,+b[1])):new Date(+b[1],+b[2]-1,+b[3])}_initField(a){this._field=a,this._field.placeholder=this._formatter.getPlaceHolder(),this._isEmptyValue(this._field.value)?this._field.value=null===this._defaultDate?"":this._formatter.formatDate(this._defaultDate):this.correctValue(!0)}_subscribeEvents(){let a=this,b=function(b){(null===b||"keyup"!==b.type)&&a.correctValue(!0);a._isServiceCode(b.keyCode)||(27===b.keyCode&&a.returnLastCorrectValue(),a.correctValue(!0))};this._field.addEventListener("change",b),this._field.addEventListener("keyup",b),this._field.addEventListener("blur",function(){a.correctValue(!0),a._isEmptyValue(a._field.value)||a.returnLastCorrectValue()})}_isServiceCode(a){return 8===a||46===a||16===a||17===a||18===a||20===a||35===a||36===a||37===a||39===a||46===a}_isEmptyValue(a){return""===a.trim()}getDefaultValue(){return null===this._defaultDate?"":this._formatter.formatDate(this._defaultDate)}correctValue(a){this._formatter.parse(this._field.value,a);let b=this._getLimitedParsedValue();this._formatter.isComplete()&&(this._lastCorrectValue=b);this._field.value===b||this._setValueToField(b)}setValue(a){let b=this._parseDateValue(a);null===b||b.valueOf()this._maximalDate.valueOf()||(this._lastCorrectValue=this._formatter.formatDate(b),this._field.value=this._lastCorrectValue)}_getLimitedParsedValue(){if(!this._formatter.isComplete())return this._formatter.getCorrectedValue();let a=this._formatter.getParsedDate();if(a.valueOf()this._maximalDate.valueOf()?this._formatter.formatDate(this._maximalDate):this._formatter.getCorrectedValue()}_setValueToField(a){let b=this._field.selectionStart,c=b===this._field.value.length;this._field.value=a,!c&&b