diff --git a/lib/parser.js b/lib/parser.js index cd56e1ed..5013c567 100644 --- a/lib/parser.js +++ b/lib/parser.js @@ -216,25 +216,32 @@ localeRange:'a-zA-Z'};var props=['allowBooleanAttributes','localeRange'];//const exports.validate=function(xmlData,options){options=util.buildOptions(options,defaultOptions,props);//xmlData = xmlData.replace(/(\r\n|\n|\r)/gm,"");//make it single line //xmlData = xmlData.replace(/(^\s*<\?xml.*?\?>)/g,"");//Remove XML starting tag //xmlData = xmlData.replace(/()/g,"");//Remove DOCTYPE -var tags=[];var tagFound=false;if(xmlData[0]==="\uFEFF"){// check for byte order mark (BOM) -xmlData=xmlData.substr(1);}var regxAttrName=new RegExp('^[_w][\\w\\-.:]*$'.replace('_w','_'+options.localeRange));var regxTagName=new RegExp('^([w]|_)[\\w.\\-_:]*'.replace('([w','(['+options.localeRange));for(var i=0;i' avoiding any '>' in attribute value i++;if(xmlData[i]==='?'){i=readPI(xmlData,++i);if(i.err){return i;}}else if(xmlData[i]==='!'){i=readCommentAndCDATA(xmlData,i);continue;}else{var closingTag=false;if(xmlData[i]==='/'){//closing tag closingTag=true;i++;}//read tagname var tagName='';for(;i'&&xmlData[i]!==' '&&xmlData[i]!=='\t'&&xmlData[i]!=='\n'&&xmlData[i]!=='\r';i++){tagName+=xmlData[i];}tagName=tagName.trim();//console.log(tagName); if(tagName[tagName.length-1]==='/'){//self closing tag without attributes -tagName=tagName.substring(0,tagName.length-1);continue;}if(!validateTagName(tagName,regxTagName)){return{err:{code:'InvalidTag',msg:'Tag '+tagName+' is an invalid name.'}};}var result=readAttributeStr(xmlData,i);if(result===false){return{err:{code:'InvalidAttr',msg:'Attributes for "'+tagName+'" have open quote.'}};}var attrStr=result.value;i=result.index;if(attrStr[attrStr.length-1]==='/'){//self closing tag +tagName=tagName.substring(0,tagName.length-1);//continue; +i--;}if(!validateTagName(tagName,regxTagName)){var msg=void 0;if(tagName.trim().length===0){msg="There is an unnecessary space between tag name and backward slash '0){return{err:{code:'InvalidTag',msg:'closing tag "'+tagName+"\" can't have attributes or invalid starting."}};}else{var otg=tags.pop();if(tagName!==otg){return{err:{code:'InvalidTag',msg:'closing tag '+otg+' is expected inplace of '+tagName+'.'}};}}}else{var _isValid=validateAttributeString(attrStr,options,regxAttrName);if(_isValid!==true){return _isValid;}tags.push(tagName);tagFound=true;}//skip tag text value +}else{//the result from the nested function returns the position of the error within the attribute +//in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute +//this gives us the absolute index in the entire xml, which we can use to find the line at last +return getErrorObject(isValid.err.code,isValid.err.msg,getLineNumberForPosition(xmlData,i-attrStr.length+isValid.err.line));}}else if(closingTag){if(!result.tagClosed){return getErrorObject('InvalidTag',"Closing tag '"+tagName+"' doesn't have proper closing.",getLineNumberForPosition(xmlData,i));}else if(attrStr.trim().length>0){return getErrorObject('InvalidTag',"Closing tag '"+tagName+"' can't have attributes or invalid starting.",getLineNumberForPosition(xmlData,i));}else{var otg=tags.pop();if(tagName!==otg){return getErrorObject('InvalidTag',"Closing tag '"+otg+"' is expected inplace of '"+tagName+"'.",getLineNumberForPosition(xmlData,i));}}}else{var _isValid=validateAttributeString(attrStr,options,regxAttrName);if(_isValid!==true){//the result from the nested function returns the position of the error within the attribute +//in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute +//this gives us the absolute index in the entire xml, which we can use to find the line at last +return getErrorObject(_isValid.err.code,_isValid.err.msg,getLineNumberForPosition(xmlData,i-attrStr.length+_isValid.err.line));}tags.push(tagName);tagFound=true;}//skip tag text value //It may include comments and CDATA value for(i++;i0){return{err:{code:'InvalidXml',msg:'Invalid '+JSON.stringify(tags,null,4).replace(/\r?\n/g,'')+' found.'}};}return true;};/** +if(xmlData[i]==='<'){i--;}}}else{if(xmlData[i]===' '||xmlData[i]==='\t'||xmlData[i]==='\n'||xmlData[i]==='\r'){continue;}return getErrorObject('InvalidChar',"char '"+xmlData[i]+"' is not expected.",getLineNumberForPosition(xmlData,i));}}if(!tagFound){return getErrorObject('InvalidXml','Start tag expected.',1);}else if(tags.length>0){return getErrorObject('InvalidXml',"Invalid '"+JSON.stringify(tags,null,4).replace(/\r?\n/g,'')+"' found.",1);}return true;};/** * Read Processing insstructions and skip * @param {*} xmlData * @param {*} i */function readPI(xmlData,i){var start=i;for(;i5&&tagname==='xml'){return{err:{code:'InvalidXml',msg:'XML declaration allowed only at the start of the document.'}};}else if(xmlData[i]=='?'&&xmlData[i+1]=='>'){//check if valid attribut string +var tagname=xmlData.substr(start,i-start);if(i>5&&tagname==='xml'){return getErrorObject('InvalidXml','XML declaration allowed only at the start of the document.',getLineNumberForPosition(xmlData,i));}else if(xmlData[i]=='?'&&xmlData[i+1]=='>'){//check if valid attribut string i++;break;}else{continue;}}}return i;}function readCommentAndCDATA(xmlData,i){if(xmlData.length>i+5&&xmlData[i+1]==='-'&&xmlData[i+2]==='-'){//comment for(i+=3;i'){i+=2;break;}}}else if(xmlData.length>i+8&&xmlData[i+1]==='D'&&xmlData[i+2]==='O'&&xmlData[i+3]==='C'&&xmlData[i+4]==='T'&&xmlData[i+5]==='Y'&&xmlData[i+6]==='P'&&xmlData[i+7]==='E'){var angleBracketsCount=1;for(i+=8;i'){angleBracketsCount--;if(angleBracketsCount===0){break;}}}}else if(xmlData.length>i+9&&xmlData[i+1]==='['&&xmlData[i+2]==='C'&&xmlData[i+3]==='D'&&xmlData[i+4]==='A'&&xmlData[i+5]==='T'&&xmlData[i+6]==='A'&&xmlData[i+7]==='['){for(i+=8;i'){i+=2;break;}}}return i;}var doubleQuote='"';var singleQuote="'";/** * Keep reading xmlData until '<' is found outside the attribute value. @@ -246,18 +253,19 @@ continue;}else{startChar='';}}else if(xmlData[i]==='>'){if(startChar===''){tagCl */var validAttrStrRegxp=new RegExp('(\\s*)([^\\s=]+)(\\s*=)?(\\s*([\'"])(([\\s\\S])*?)\\5)?','g');//attr, ="sd", a="amit's", a="sd"b="saf", ab cd="" function validateAttributeString(attrStr,options,regxAttrName){//console.log("start:"+attrStr+":end"); //if(attrStr.trim().length === 0) return true; //empty string -var matches=util.getAllMatches(attrStr,validAttrStrRegxp);var attrNames={};for(var i=0;i0){tag[8]=tag[8].substr(0,tag[8].length-1);}_childNode.attrsMap=buildAttributesMap(tag[8],options);currentNode.addChild(_childNode);}else{//TagType.OPENING var _childNode2=new xmlNode(options.ignoreNameSpace?tag[7]:tag[5],currentNode,processTagValue(tag,options));if(options.stopNodes.length&&options.stopNodes.includes(_childNode2.tagname)){_childNode2.startIndex=tag.index+tag[1].length;}_childNode2.attrsMap=buildAttributesMap(tag[8],options);currentNode.addChild(_childNode2);currentNode=_childNode2;}tag=nextTag;nextTag=tagsRegx.exec(xmlData);}return xmlObj;};function processTagValue(parsedTags,options,parentTagName){var tagName=parsedTags[7]||parentTagName;var val=parsedTags[14];if(val){if(options.trimValues){val=val.trim();}val=options.tagValueProcessor(val,tagName);val=parseValue(val,options.parseNodeValue,options.parseTrueNumberOnly);}return val;}function checkForTagType(match){if(match[4]===']]>'){return TagType.CDATA;}else if(match[10]==='/'){return TagType.CLOSING;}else if(typeof match[8]!=='undefined'&&match[8].substr(match[8].length-1)==='/'){return TagType.SELF;}else{return TagType.OPENING;}}function resolveNameSpace(tagname,options){if(options.ignoreNameSpace){var tags=tagname.split(':');var prefix=tagname.charAt(0)==='/'?'/':'';if(tags[0]==='xmlns'){return'';}if(tags.length===2){tagname=prefix+tags[1];}}return tagname;}function parseValue(val,shouldParse,parseTrueNumberOnly){if(shouldParse&&typeof val==='string'){var parsed;if(val.trim()===''||isNaN(val)){parsed=val==='true'?true:val==='false'?false:val;}else{if(val.indexOf('0x')!==-1){//support hexa decimal -parsed=Number.parseInt(val,16);}else if(val.indexOf('.')!==-1){parsed=Number.parseFloat(val);}else{parsed=Number.parseInt(val,10);}if(parseTrueNumberOnly){parsed=String(parsed)===val?parsed:val;}}return parsed;}else{if(util.isExist(val)){return val;}else{return'';}}}//TODO: change regex to capture NS +parsed=Number.parseInt(val,16);}else if(val.indexOf('.')!==-1){parsed=Number.parseFloat(val);val=val.replace(/0+$/,"");}else{parsed=Number.parseInt(val,10);}if(parseTrueNumberOnly){parsed=String(parsed)===val?parsed:val;}}return parsed;}else{if(util.isExist(val)){return val;}else{return'';}}}//TODO: change regex to capture NS //const attrsRegx = new RegExp("([\\w\\-\\.\\:]+)\\s*=\\s*(['\"])((.|\n)*?)\\2","gm"); var attrsRegx=new RegExp('([^\\s=]+)\\s*(=\\s*([\'"])(.*?)\\3)?','g');function buildAttributesMap(attrStr,options){if(!options.ignoreAttributes&&typeof attrStr==='string'){attrStr=attrStr.replace(/\r?\n/g,' ');//attrStr = attrStr || attrStr.trim(); var matches=util.getAllMatches(attrStr,attrsRegx);var len=matches.length;//don't make it inline diff --git a/lib/parser.js.map b/lib/parser.js.map index 5cfef28e..41dc36d2 100644 --- a/lib/parser.js.map +++ b/lib/parser.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://parser/webpack/bootstrap","webpack://parser/./src/json2xml.js","webpack://parser/./src/nimndata.js","webpack://parser/./src/node2json.js","webpack://parser/./src/node2json_str.js","webpack://parser/./src/parser.js","webpack://parser/./src/util.js","webpack://parser/./src/validator.js","webpack://parser/./src/xmlNode.js","webpack://parser/./src/xmlstr2xmlnode.js"],"names":["buildOptions","require","defaultOptions","attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","cdataTagName","cdataPositionChar","format","indentBy","supressEmptyNode","tagValueProcessor","a","attrValueProcessor","props","Parser","options","isAttribute","attrPrefixLen","length","isCDATA","replaceCDATAstr","replaceCDATAarr","indentate","tagEndChar","newLine","buildTextNode","buildEmptyTextNode","buildObjNode","buildEmptyObjNode","buildTextValNode","buildObjectNode","prototype","parse","jObj","j2x","val","level","attrStr","keys","Object","len","i","key","Date","attr","Array","isArray","arrLen","j","item","result","Ks","L","str","cdata","replace","join","v","includes","repeat","name","startsWith","substr","module","exports","char","String","fromCharCode","chars","nilChar","missingChar","nilPremitive","missingPremitive","emptyChar","emptyValue","boundryChar","objStart","arrStart","arrayEnd","charsArr","_e","node","e_schema","undefined","getValue","hasValidData","hasData","itemSchema","arr_len","arr_i","r","processValue","attrsMap","child","isAppChar","ch","indexOf","x2j","convert2nimn","util","convertToJson","isEmptyObject","isExist","arrayMode","merge","index","tagname","tag","push","convertToJsonString","_cToJsonStr","stringval","isNaN","nodeToJson","xmlToNodeobj","x2xmlnode","validator","xmlData","validationOption","validate","Error","err","msg","getTraversalObj","convertTonimn","j2xParser","parseToNimn","schema","getAllMatches","string","regex","matches","match","exec","allmatches","doesMatch","doesNotMatch","obj","target","newOptions","allowBooleanAttributes","localeRange","tags","tagFound","regxAttrName","RegExp","regxTagName","readPI","readCommentAndCDATA","closingTag","tagName","trim","substring","validateTagName","code","readAttributeStr","value","isValid","validateAttributeString","tagClosed","otg","pop","JSON","stringify","start","angleBracketsCount","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","attrName","validateAttrName","hasOwnProperty","parent","addChild","xmlNode","TagType","OPENING","CLOSING","SELF","CDATA","regx","Number","parseInt","window","parseFloat","ignoreNameSpace","parseNodeValue","parseAttributeValue","trimValues","stopNodes","xmlObj","currentNode","tagsRegx","nextTag","tagType","checkForTagType","processTagValue","startIndex","childNode","buildAttributesMap","parsedTags","parentTagName","parseValue","parseTrueNumberOnly","resolveNameSpace","split","prefix","charAt","shouldParse","parsed","attrsRegx","attrs","attrCollection"],"mappings":";;QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;ACjFA;AACA,GAAMA,aAAY,CAAGC,mBAAO,CAAC,6BAAD,CAAP,CAAkBD,YAAvC,CAEA,GAAME,eAAc,CAAG,CACrBC,mBAAmB,CAAE,IADA,CAErBC,YAAY,CAAE,KAFO,CAGrBC,YAAY,CAAE,OAHO,CAIrBC,gBAAgB,CAAE,IAJG,CAKrBC,YAAY,CAAE,KALO,CAMrBC,iBAAiB,CAAE,KANE,CAOrBC,MAAM,CAAE,KAPa,CAQrBC,QAAQ,CAAE,IARW,CASrBC,gBAAgB,CAAE,KATG,CAUrBC,iBAAiB,CAAE,2BAASC,CAAT,CAAY,CAC7B,MAAOA,EAAP,CACD,CAZoB,CAarBC,kBAAkB,CAAE,4BAASD,CAAT,CAAY,CAC9B,MAAOA,EAAP,CACD,CAfoB,CAAvB,CAkBA,GAAME,MAAK,CAAG,CACZ,qBADY,CAEZ,cAFY,CAGZ,cAHY,CAIZ,kBAJY,CAKZ,cALY,CAMZ,mBANY,CAOZ,QAPY,CAQZ,UARY,CASZ,kBATY,CAUZ,mBAVY,CAWZ,oBAXY,CAAd,CAcA,QAASC,OAAT,CAAgBC,OAAhB,CAAyB,CACvB,KAAKA,OAAL,CAAejB,YAAY,CAACiB,OAAD,CAAUf,cAAV,CAA0Ba,KAA1B,CAA3B,CACA,GAAI,KAAKE,OAAL,CAAaX,gBAAb,EAAiC,KAAKW,OAAL,CAAab,YAAlD,CAAgE,CAC9D,KAAKc,WAAL,CAAmB,UAAS,KAAO,CACjC,MAAO,MAAP,CACD,CAFD,CAGD,CAJD,IAIO,CACL,KAAKC,aAAL,CAAqB,KAAKF,OAAL,CAAad,mBAAb,CAAiCiB,MAAtD,CACA,KAAKF,WAAL,CAAmBA,WAAnB,CACD,CACD,GAAI,KAAKD,OAAL,CAAaV,YAAjB,CAA+B,CAC7B,KAAKc,OAAL,CAAeA,OAAf,CACD,CAFD,IAEO,CACL,KAAKA,OAAL,CAAe,UAAS,KAAO,CAC7B,MAAO,MAAP,CACD,CAFD,CAGD,CACD,KAAKC,eAAL,CAAuBA,eAAvB,CACA,KAAKC,eAAL,CAAuBA,eAAvB,CAEA,GAAI,KAAKN,OAAL,CAAaR,MAAjB,CAAyB,CACvB,KAAKe,SAAL,CAAiBA,SAAjB,CACA,KAAKC,UAAL,CAAkB,KAAlB,CACA,KAAKC,OAAL,CAAe,IAAf,CACD,CAJD,IAIO,CACL,KAAKF,SAAL,CAAiB,UAAW,CAC1B,MAAO,EAAP,CACD,CAFD,CAGA,KAAKC,UAAL,CAAkB,GAAlB,CACA,KAAKC,OAAL,CAAe,EAAf,CACD,CAED,GAAI,KAAKT,OAAL,CAAaN,gBAAjB,CAAmC,CACjC,KAAKgB,aAAL,CAAqBC,kBAArB,CACA,KAAKC,YAAL,CAAoBC,iBAApB,CACD,CAHD,IAGO,CACL,KAAKH,aAAL,CAAqBI,gBAArB,CACA,KAAKF,YAAL,CAAoBG,eAApB,CACD,CAED,KAAKD,gBAAL,CAAwBA,gBAAxB,CACA,KAAKC,eAAL,CAAuBA,eAAvB,CACD,CAEDhB,MAAM,CAACiB,SAAP,CAAiBC,KAAjB,CAAyB,SAASC,IAAT,CAAe,CACtC,MAAO,MAAKC,GAAL,CAASD,IAAT,CAAe,CAAf,EAAkBE,GAAzB,CACD,CAFD,CAIArB,MAAM,CAACiB,SAAP,CAAiBG,GAAjB,CAAuB,SAASD,IAAT,CAAeG,KAAf,CAAsB,CAC3C,GAAIC,QAAO,CAAG,EAAd,CACA,GAAIF,IAAG,CAAG,EAAV,CACA,GAAMG,KAAI,CAAGC,MAAM,CAACD,IAAP,CAAYL,IAAZ,CAAb,CACA,GAAMO,IAAG,CAAGF,IAAI,CAACpB,MAAjB,CACA,IAAK,GAAIuB,EAAC,CAAG,CAAb,CAAgBA,CAAC,CAAGD,GAApB,CAAyBC,CAAC,EAA1B,CAA8B,CAC5B,GAAMC,IAAG,CAAGJ,IAAI,CAACG,CAAD,CAAhB,CACA,GAAI,MAAOR,KAAI,CAACS,GAAD,CAAX,GAAqB,WAAzB,CAAsC,CACpC;AACD,CAFD,IAEO,IAAIT,IAAI,CAACS,GAAD,CAAJ,GAAc,IAAlB,CAAwB,CAC7BP,GAAG,EAAI,KAAKb,SAAL,CAAec,KAAf,EAAwB,GAAxB,CAA8BM,GAA9B,CAAoC,GAApC,CAA0C,KAAKnB,UAAtD,CACD,CAFM,IAEA,IAAIU,IAAI,CAACS,GAAD,CAAJ,UAAqBC,KAAzB,CAA+B,CACpCR,GAAG,EAAI,KAAKV,aAAL,CAAmBQ,IAAI,CAACS,GAAD,CAAvB,CAA8BA,GAA9B,CAAmC,EAAnC,CAAuCN,KAAvC,CAAP,CACD,CAFM,IAEA,IAAI,MAAOH,KAAI,CAACS,GAAD,CAAX,GAAqB,QAAzB,CAAmC,CACxC;AACA,GAAME,KAAI,CAAG,KAAK5B,WAAL,CAAiB0B,GAAjB,CAAb,CACA,GAAIE,IAAJ,CAAU,CACRP,OAAO,EAAI,IAAMO,IAAN,CAAa,IAAb,CAAoB,KAAK7B,OAAL,CAAaH,kBAAb,CAAgC,GAAKqB,IAAI,CAACS,GAAD,CAAzC,CAApB,CAAsE,GAAjF,CACD,CAFD,IAEO,IAAI,KAAKvB,OAAL,CAAauB,GAAb,CAAJ,CAAuB,CAC5B,GAAIT,IAAI,CAAC,KAAKlB,OAAL,CAAaZ,YAAd,CAAR,CAAqC,CACnCgC,GAAG,EAAI,KAAKf,eAAL,CAAqBa,IAAI,CAAC,KAAKlB,OAAL,CAAaZ,YAAd,CAAzB,CAAsD8B,IAAI,CAACS,GAAD,CAA1D,CAAP,CACD,CAFD,IAEO,CACLP,GAAG,EAAI,KAAKf,eAAL,CAAqB,EAArB,CAAyBa,IAAI,CAACS,GAAD,CAA7B,CAAP,CACD,CACF,CANM,IAMA,CACL;AACA,GAAIA,GAAG,GAAK,KAAK3B,OAAL,CAAaZ,YAAzB,CAAuC,CACrC,GAAI8B,IAAI,CAAC,KAAKlB,OAAL,CAAaV,YAAd,CAAR,CAAqC,CACnC;AACD,CAFD,IAEO,CACL8B,GAAG,EAAI,KAAKpB,OAAL,CAAaL,iBAAb,CAA+B,GAAKuB,IAAI,CAACS,GAAD,CAAxC,CAAP,CACD,CACF,CAND,IAMO,CACLP,GAAG,EAAI,KAAKV,aAAL,CAAmBQ,IAAI,CAACS,GAAD,CAAvB,CAA8BA,GAA9B,CAAmC,EAAnC,CAAuCN,KAAvC,CAAP,CACD,CACF,CACF,CAvBM,IAuBA,IAAIS,KAAK,CAACC,OAAN,CAAcb,IAAI,CAACS,GAAD,CAAlB,CAAJ,CAA8B,CACnC;AACA,GAAI,KAAKvB,OAAL,CAAauB,GAAb,CAAJ,CAAuB,CACrBP,GAAG,EAAI,KAAKb,SAAL,CAAec,KAAf,CAAP,CACA,GAAIH,IAAI,CAAC,KAAKlB,OAAL,CAAaZ,YAAd,CAAR,CAAqC,CACnCgC,GAAG,EAAI,KAAKd,eAAL,CAAqBY,IAAI,CAAC,KAAKlB,OAAL,CAAaZ,YAAd,CAAzB,CAAsD8B,IAAI,CAACS,GAAD,CAA1D,CAAP,CACD,CAFD,IAEO,CACLP,GAAG,EAAI,KAAKd,eAAL,CAAqB,EAArB,CAAyBY,IAAI,CAACS,GAAD,CAA7B,CAAP,CACD,CACF,CAPD,IAOO,CACL;AACA,GAAMK,OAAM,CAAGd,IAAI,CAACS,GAAD,CAAJ,CAAUxB,MAAzB,CACA,IAAK,GAAI8B,EAAC,CAAG,CAAb,CAAgBA,CAAC,CAAGD,MAApB,CAA4BC,CAAC,EAA7B,CAAiC,CAC/B,GAAMC,KAAI,CAAGhB,IAAI,CAACS,GAAD,CAAJ,CAAUM,CAAV,CAAb,CACA,GAAI,MAAOC,KAAP,GAAgB,WAApB,CAAiC,CAC/B;AACD,CAFD,IAEO,IAAIA,IAAI,GAAK,IAAb,CAAmB,CACxBd,GAAG,EAAI,KAAKb,SAAL,CAAec,KAAf,EAAwB,GAAxB,CAA8BM,GAA9B,CAAoC,GAApC,CAA0C,KAAKnB,UAAtD,CACD,CAFM,IAEA,IAAI,MAAO0B,KAAP,GAAgB,QAApB,CAA8B,CACnC,GAAMC,OAAM,CAAG,KAAKhB,GAAL,CAASe,IAAT,CAAeb,KAAK,CAAG,CAAvB,CAAf,CACAD,GAAG,EAAI,KAAKR,YAAL,CAAkBuB,MAAM,CAACf,GAAzB,CAA8BO,GAA9B,CAAmCQ,MAAM,CAACb,OAA1C,CAAmDD,KAAnD,CAAP,CACD,CAHM,IAGA,CACLD,GAAG,EAAI,KAAKV,aAAL,CAAmBwB,IAAnB,CAAyBP,GAAzB,CAA8B,EAA9B,CAAkCN,KAAlC,CAAP,CACD,CACF,CACF,CACF,CA1BM,IA0BA,CACL;AACA,GAAI,KAAKrB,OAAL,CAAab,YAAb,EAA6BwC,GAAG,GAAK,KAAK3B,OAAL,CAAab,YAAtD,CAAoE,CAClE,GAAMiD,GAAE,CAAGZ,MAAM,CAACD,IAAP,CAAYL,IAAI,CAACS,GAAD,CAAhB,CAAX,CACA,GAAMU,EAAC,CAAGD,EAAE,CAACjC,MAAb,CACA,IAAK,GAAI8B,GAAC,CAAG,CAAb,CAAgBA,EAAC,CAAGI,CAApB,CAAuBJ,EAAC,EAAxB,CAA4B,CAC1BX,OAAO,EAAI,IAAMc,EAAE,CAACH,EAAD,CAAR,CAAc,IAAd,CAAqB,KAAKjC,OAAL,CAAaH,kBAAb,CAAgC,GAAKqB,IAAI,CAACS,GAAD,CAAJ,CAAUS,EAAE,CAACH,EAAD,CAAZ,CAArC,CAArB,CAA8E,GAAzF,CACD,CACF,CAND,IAMO,CACL,GAAME,QAAM,CAAG,KAAKhB,GAAL,CAASD,IAAI,CAACS,GAAD,CAAb,CAAoBN,KAAK,CAAG,CAA5B,CAAf,CACAD,GAAG,EAAI,KAAKR,YAAL,CAAkBuB,OAAM,CAACf,GAAzB,CAA8BO,GAA9B,CAAmCQ,OAAM,CAACb,OAA1C,CAAmDD,KAAnD,CAAP,CACD,CACF,CACF,CACD,MAAO,CAACC,OAAO,CAAEA,OAAV,CAAmBF,GAAG,CAAEA,GAAxB,CAAP,CACD,CA7ED,CA+EA,QAASf,gBAAT,CAAyBiC,GAAzB,CAA8BC,KAA9B,CAAqC,CACnCD,GAAG,CAAG,KAAKtC,OAAL,CAAaL,iBAAb,CAA+B,GAAK2C,GAApC,CAAN,CACA,GAAI,KAAKtC,OAAL,CAAaT,iBAAb,GAAmC,EAAnC,EAAyC+C,GAAG,GAAK,EAArD,CAAyD,CACvD,MAAOA,IAAG,CAAG,WAAN,CAAoBC,KAApB,CAA4B,IAA5B,CAAmC,KAAK/B,UAA/C,CACD,CAFD,IAEO,CACL,MAAO8B,IAAG,CAACE,OAAJ,CAAY,KAAKxC,OAAL,CAAaT,iBAAzB,CAA4C,YAAcgD,KAAd,CAAsB,IAAtB,CAA6B,KAAK/B,UAA9E,CAAP,CACD,CACF,CAED,QAASF,gBAAT,CAAyBgC,GAAzB,CAA8BC,KAA9B,CAAqC,CACnCD,GAAG,CAAG,KAAKtC,OAAL,CAAaL,iBAAb,CAA+B,GAAK2C,GAApC,CAAN,CACA,GAAI,KAAKtC,OAAL,CAAaT,iBAAb,GAAmC,EAAnC,EAAyC+C,GAAG,GAAK,EAArD,CAAyD,CACvD,MAAOA,IAAG,CAAG,WAAN,CAAoBC,KAAK,CAACE,IAAN,CAAW,cAAX,CAApB,CAAiD,IAAjD,CAAwD,KAAKjC,UAApE,CACD,CAFD,IAEO,CACL,IAAK,GAAIkC,EAAT,GAAcH,MAAd,CAAqB,CACnBD,GAAG,CAAGA,GAAG,CAACE,OAAJ,CAAY,KAAKxC,OAAL,CAAaT,iBAAzB,CAA4C,YAAcgD,KAAK,CAACG,CAAD,CAAnB,CAAyB,KAArE,CAAN,CACD,CACD,MAAOJ,IAAG,CAAG,KAAK7B,OAAlB,CACD,CACF,CAED,QAASM,gBAAT,CAAyBK,GAAzB,CAA8BO,GAA9B,CAAmCL,OAAnC,CAA4CD,KAA5C,CAAmD,CACjD,GAAIC,OAAO,EAAI,CAACF,GAAG,CAACuB,QAAJ,CAAa,GAAb,CAAhB,CAAmC,CACjC,MACE,MAAKpC,SAAL,CAAec,KAAf,EACA,GADA,CAEAM,GAFA,CAGAL,OAHA,CAIA,GAJA,CAKAF,GALA,CAMA;AACA;AACA,IARA,CASAO,GATA,CAUA,KAAKnB,UAXP,CAaD,CAdD,IAcO,CACL,MACE,MAAKD,SAAL,CAAec,KAAf,EACA,GADA,CAEAM,GAFA,CAGAL,OAHA,CAIA,KAAKd,UAJL,CAKAY,GALA,CAMA;AACA,KAAKb,SAAL,CAAec,KAAf,CAPA,CAQA,IARA,CASAM,GATA,CAUA,KAAKnB,UAXP,CAaD,CACF,CAED,QAASK,kBAAT,CAA2BO,GAA3B,CAAgCO,GAAhC,CAAqCL,OAArC,CAA8CD,KAA9C,CAAqD,CACnD,GAAID,GAAG,GAAK,EAAZ,CAAgB,CACd,MAAO,MAAKL,eAAL,CAAqBK,GAArB,CAA0BO,GAA1B,CAA+BL,OAA/B,CAAwCD,KAAxC,CAAP,CACD,CAFD,IAEO,CACL,MAAO,MAAKd,SAAL,CAAec,KAAf,EAAwB,GAAxB,CAA8BM,GAA9B,CAAoCL,OAApC,CAA8C,GAA9C,CAAoD,KAAKd,UAAhE,CACA;AACD,CACF,CAED,QAASM,iBAAT,CAA0BM,GAA1B,CAA+BO,GAA/B,CAAoCL,OAApC,CAA6CD,KAA7C,CAAoD,CAClD,MACE,MAAKd,SAAL,CAAec,KAAf,EACA,GADA,CAEAM,GAFA,CAGAL,OAHA,CAIA,GAJA,CAKA,KAAKtB,OAAL,CAAaL,iBAAb,CAA+ByB,GAA/B,CALA,CAMA,IANA,CAOAO,GAPA,CAQA,KAAKnB,UATP,CAWD,CAED,QAASG,mBAAT,CAA4BS,GAA5B,CAAiCO,GAAjC,CAAsCL,OAAtC,CAA+CD,KAA/C,CAAsD,CACpD,GAAID,GAAG,GAAK,EAAZ,CAAgB,CACd,MAAO,MAAKN,gBAAL,CAAsBM,GAAtB,CAA2BO,GAA3B,CAAgCL,OAAhC,CAAyCD,KAAzC,CAAP,CACD,CAFD,IAEO,CACL,MAAO,MAAKd,SAAL,CAAec,KAAf,EAAwB,GAAxB,CAA8BM,GAA9B,CAAoCL,OAApC,CAA8C,GAA9C,CAAoD,KAAKd,UAAhE,CACD,CACF,CAED,QAASD,UAAT,CAAmBc,KAAnB,CAA0B,CACxB,MAAO,MAAKrB,OAAL,CAAaP,QAAb,CAAsBmD,MAAtB,CAA6BvB,KAA7B,CAAP,CACD,CAED,QAASpB,YAAT,CAAqB4C,IAAK,aAA1B,CAAyC,CACvC,GAAIA,IAAI,CAACC,UAAL,CAAgB,KAAK9C,OAAL,CAAad,mBAA7B,CAAJ,CAAuD,CACrD,MAAO2D,KAAI,CAACE,MAAL,CAAY,KAAK7C,aAAjB,CAAP,CACD,CAFD,IAEO,CACL,MAAO,MAAP,CACD,CACF,CAED,QAASE,QAAT,CAAiByC,IAAjB,CAAuB,CACrB,MAAOA,KAAI,GAAK,KAAK7C,OAAL,CAAaV,YAA7B,CACD,CAED;AACA;AACA;AAEA0D,MAAM,CAACC,OAAP,CAAiBlD,MAAjB,C;;;;;;;;;;;;AC1QA,GAAMmD,MAAI,CAAG,QAAPA,MAAO,CAAStD,CAAT,CAAY,CACvB,MAAOuD,OAAM,CAACC,YAAP,CAAoBxD,CAApB,CAAP,CACD,CAFD,CAIA,GAAMyD,MAAK,CAAG,CACZC,OAAO,CAAEJ,KAAI,CAAC,GAAD,CADD,CAEZK,WAAW,CAAEL,KAAI,CAAC,GAAD,CAFL,CAGZM,YAAY,CAAEN,KAAI,CAAC,GAAD,CAHN,CAIZO,gBAAgB,CAAEP,KAAI,CAAC,GAAD,CAJV,CAMZQ,SAAS,CAAER,KAAI,CAAC,GAAD,CANH,CAOZS,UAAU,CAAET,KAAI,CAAC,GAAD,CAPJ,CAOW;AAEvBU,WAAW,CAAEV,KAAI,CAAC,GAAD,CATL,CAWZW,QAAQ,CAAEX,KAAI,CAAC,GAAD,CAXF,CAYZY,QAAQ,CAAEZ,KAAI,CAAC,GAAD,CAZF,CAaZa,QAAQ,CAAEb,KAAI,CAAC,GAAD,CAbF,CAAd,CAgBA,GAAMc,SAAQ,CAAG,CACfX,KAAK,CAACC,OADS,CAEfD,KAAK,CAACG,YAFS,CAGfH,KAAK,CAACE,WAHS,CAIfF,KAAK,CAACI,gBAJS,CAKfJ,KAAK,CAACO,WALS,CAMfP,KAAK,CAACK,SANS,CAOfL,KAAK,CAACM,UAPS,CAQfN,KAAK,CAACU,QARS,CASfV,KAAK,CAACQ,QATS,CAUfR,KAAK,CAACS,QAVS,CAAjB,CAaA,GAAMG,GAAE,CAAG,QAALA,GAAK,CAASC,IAAT,CAAeC,QAAf,CAAyBnE,OAAzB,CAAkC,CAC3C,GAAI,MAAOmE,SAAP,GAAoB,QAAxB,CAAkC,CAChC;AACA,GAAID,IAAI,EAAIA,IAAI,CAAC,CAAD,CAAZ,EAAmBA,IAAI,CAAC,CAAD,CAAJ,CAAQ9C,GAAR,GAAgBgD,SAAvC,CAAkD,CAChD,MAAOC,SAAQ,CAACH,IAAI,CAAC,CAAD,CAAJ,CAAQ9C,GAAT,CAAc+C,QAAd,CAAf,CACD,CAFD,IAEO,CACL,MAAOE,SAAQ,CAACH,IAAD,CAAOC,QAAP,CAAf,CACD,CACF,CAPD,IAOO,CACL,GAAMG,aAAY,CAAGC,OAAO,CAACL,IAAD,CAA5B,CACA,GAAII,YAAY,GAAK,IAArB,CAA2B,CACzB,GAAIhC,IAAG,CAAG,EAAV,CACA,GAAIR,KAAK,CAACC,OAAN,CAAcoC,QAAd,CAAJ,CAA6B,CAC3B;AACA7B,GAAG,EAAIe,KAAK,CAACS,QAAb,CACA,GAAMU,WAAU,CAAGL,QAAQ,CAAC,CAAD,CAA3B,CACA;AACA,GAAMM,QAAO,CAAGP,IAAI,CAAC/D,MAArB,CAEA,GAAI,MAAOqE,WAAP,GAAsB,QAA1B,CAAoC,CAClC,IAAK,GAAIE,MAAK,CAAG,CAAjB,CAAoBA,KAAK,CAAGD,OAA5B,CAAqCC,KAAK,EAA1C,CAA8C,CAC5C,GAAMC,EAAC,CAAGN,QAAQ,CAACH,IAAI,CAACQ,KAAD,CAAJ,CAAYtD,GAAb,CAAkBoD,UAAlB,CAAlB,CACAlC,GAAG,CAAGsC,YAAY,CAACtC,GAAD,CAAMqC,CAAN,CAAlB,CACD,CACF,CALD,IAKO,CACL,IAAK,GAAID,OAAK,CAAG,CAAjB,CAAoBA,MAAK,CAAGD,OAA5B,CAAqCC,MAAK,EAA1C,CAA8C,CAC5C,GAAMC,GAAC,CAAGV,EAAE,CAACC,IAAI,CAACQ,MAAD,CAAL,CAAcF,UAAd,CAA0BxE,OAA1B,CAAZ,CACAsC,GAAG,CAAGsC,YAAY,CAACtC,GAAD,CAAMqC,EAAN,CAAlB,CACD,CACF,CACDrC,GAAG,EAAIe,KAAK,CAACU,QAAb,CAAuB;AACxB,CAnBD,IAmBO,CACL;AACAzB,GAAG,EAAIe,KAAK,CAACQ,QAAb,CACA,GAAMtC,KAAI,CAAGC,MAAM,CAACD,IAAP,CAAY4C,QAAZ,CAAb,CACA,GAAIrC,KAAK,CAACC,OAAN,CAAcmC,IAAd,CAAJ,CAAyB,CACvBA,IAAI,CAAGA,IAAI,CAAC,CAAD,CAAX,CACD,CACD,IAAK,GAAIxC,EAAT,GAAcH,KAAd,CAAoB,CAClB,GAAMI,IAAG,CAAGJ,IAAI,CAACG,CAAD,CAAhB,CACA;AACA;AACA;AACA,GAAIiD,IAAC,OAAL,CACA,GAAI,CAAC3E,OAAO,CAACX,gBAAT,EAA6B6E,IAAI,CAACW,QAAlC,EAA8CX,IAAI,CAACW,QAAL,CAAclD,GAAd,CAAlD,CAAsE,CACpEgD,GAAC,CAAGV,EAAE,CAACC,IAAI,CAACW,QAAL,CAAclD,GAAd,CAAD,CAAqBwC,QAAQ,CAACxC,GAAD,CAA7B,CAAoC3B,OAApC,CAAN,CACD,CAFD,IAEO,IAAI2B,GAAG,GAAK3B,OAAO,CAACZ,YAApB,CAAkC,CACvCuF,GAAC,CAAGV,EAAE,CAACC,IAAI,CAAC9C,GAAN,CAAW+C,QAAQ,CAACxC,GAAD,CAAnB,CAA0B3B,OAA1B,CAAN,CACD,CAFM,IAEA,CACL2E,GAAC,CAAGV,EAAE,CAACC,IAAI,CAACY,KAAL,CAAWnD,GAAX,CAAD,CAAkBwC,QAAQ,CAACxC,GAAD,CAA1B,CAAiC3B,OAAjC,CAAN,CACD,CACDsC,GAAG,CAAGsC,YAAY,CAACtC,GAAD,CAAMqC,GAAN,CAAlB,CACD,CACF,CACD,MAAOrC,IAAP,CACD,CA7CD,IA6CO,CACL,MAAOgC,aAAP,CACD,CACF,CACF,CA3DD,CA6DA,GAAMD,SAAQ,CAAG,QAAXA,SAAW,CAASzE,CAAE,UAAX,CAAuB,CACtC,OAAQA,CAAR,EACE,IAAKwE,UAAL,CACE,MAAOf,MAAK,CAACI,gBAAb,CACF,IAAK,KAAL,CACE,MAAOJ,MAAK,CAACG,YAAb,CACF,IAAK,EAAL,CACE,MAAOH,MAAK,CAACM,UAAb,CACF,QACE,MAAO/D,EAAP,CARJ,CAUD,CAXD,CAaA,GAAMgF,aAAY,CAAG,QAAfA,aAAe,CAAStC,GAAT,CAAcqC,CAAd,CAAiB,CACpC,GAAI,CAACI,SAAS,CAACJ,CAAC,CAAC,CAAD,CAAF,CAAV,EAAoB,CAACI,SAAS,CAACzC,GAAG,CAACA,GAAG,CAACnC,MAAJ,CAAa,CAAd,CAAJ,CAAlC,CAAyD,CACvDmC,GAAG,EAAIe,KAAK,CAACO,WAAb,CACD,CACD,MAAOtB,IAAG,CAAGqC,CAAb,CACD,CALD,CAOA,GAAMI,UAAS,CAAG,QAAZA,UAAY,CAASC,EAAT,CAAa,CAC7B,MAAOhB,SAAQ,CAACiB,OAAT,CAAiBD,EAAjB,IAAyB,CAAC,CAAjC,CACD,CAFD,CAIA,QAAST,QAAT,CAAiBrD,IAAjB,CAAuB,CACrB,GAAIA,IAAI,GAAKkD,SAAb,CAAwB,CACtB,MAAOf,MAAK,CAACE,WAAb,CACD,CAFD,IAEO,IAAIrC,IAAI,GAAK,IAAb,CAAmB,CACxB,MAAOmC,MAAK,CAACC,OAAb,CACD,CAFM,IAEA,IACLpC,IAAI,CAAC4D,KAAL,EACAtD,MAAM,CAACD,IAAP,CAAYL,IAAI,CAAC4D,KAAjB,EAAwB3E,MAAxB,GAAmC,CADnC,GAEC,CAACe,IAAI,CAAC2D,QAAN,EAAkBrD,MAAM,CAACD,IAAP,CAAYL,IAAI,CAAC2D,QAAjB,EAA2B1E,MAA3B,GAAsC,CAFzD,CADK,CAIL,CACA,MAAOkD,MAAK,CAACK,SAAb,CACD,CANM,IAMA,CACL,MAAO,KAAP,CACD,CACF,CAED,GAAMwB,IAAG,CAAGlG,mBAAO,CAAC,iDAAD,CAAnB,CACA,GAAMD,aAAY,CAAGC,mBAAO,CAAC,6BAAD,CAAP,CAAkBD,YAAvC,CAEA,GAAMoG,aAAY,CAAG,QAAfA,aAAe,CAASjB,IAAT,CAAeC,QAAf,CAAyBnE,OAAzB,CAAkC,CACrDA,OAAO,CAAGjB,YAAY,CAACiB,OAAD,CAAUkF,GAAG,CAACjG,cAAd,CAA8BiG,GAAG,CAACpF,KAAlC,CAAtB,CACA,MAAOmE,GAAE,CAACC,IAAD,CAAOC,QAAP,CAAiBnE,OAAjB,CAAT,CACD,CAHD,CAKAiD,OAAO,CAACkC,YAAR,CAAuBA,YAAvB,C;;;;;;;;;;;;AC7IA,GAAMC,KAAI,CAAGpG,mBAAO,CAAC,6BAAD,CAApB,CAEA,GAAMqG,cAAa,CAAG,QAAhBA,cAAgB,CAASnB,IAAT,CAAelE,OAAf,CAAwB,CAC5C,GAAMkB,KAAI,CAAG,EAAb,CAEA;AACA,GAAI,CAAC,CAACgD,IAAI,CAACY,KAAN,EAAeM,IAAI,CAACE,aAAL,CAAmBpB,IAAI,CAACY,KAAxB,CAAhB,IAAoD,CAACZ,IAAI,CAACW,QAAN,EAAkBO,IAAI,CAACE,aAAL,CAAmBpB,IAAI,CAACW,QAAxB,CAAtE,CAAJ,CAA8G,CAC5G,MAAOO,KAAI,CAACG,OAAL,CAAarB,IAAI,CAAC9C,GAAlB,EAAyB8C,IAAI,CAAC9C,GAA9B,CAAoC,EAA3C,CACD,CAFD,IAEO,CACL;AACA,GAAIgE,IAAI,CAACG,OAAL,CAAarB,IAAI,CAAC9C,GAAlB,CAAJ,CAA4B,CAC1B,GAAI,EAAE,MAAO8C,KAAI,CAAC9C,GAAZ,GAAoB,QAApB,GAAiC8C,IAAI,CAAC9C,GAAL,GAAa,EAAb,EAAmB8C,IAAI,CAAC9C,GAAL,GAAapB,OAAO,CAACT,iBAAzE,CAAF,CAAJ,CAAoG,CAClG,GAAGS,OAAO,CAACwF,SAAR,GAAsB,QAAzB,CAAkC,CAChCtE,IAAI,CAAClB,OAAO,CAACZ,YAAT,CAAJ,CAA6B,CAAE8E,IAAI,CAAC9C,GAAP,CAA7B,CACD,CAFD,IAEK,CACHF,IAAI,CAAClB,OAAO,CAACZ,YAAT,CAAJ,CAA6B8E,IAAI,CAAC9C,GAAlC,CACD,CACF,CACF,CACF,CAEDgE,IAAI,CAACK,KAAL,CAAWvE,IAAX,CAAiBgD,IAAI,CAACW,QAAtB,CAAgC7E,OAAO,CAACwF,SAAxC,EAEA,GAAMjE,KAAI,CAAGC,MAAM,CAACD,IAAP,CAAY2C,IAAI,CAACY,KAAjB,CAAb,CACA,IAAK,GAAIY,MAAK,CAAG,CAAjB,CAAoBA,KAAK,CAAGnE,IAAI,CAACpB,MAAjC,CAAyCuF,KAAK,EAA9C,CAAkD,CAChD,GAAIC,QAAO,CAAGpE,IAAI,CAACmE,KAAD,CAAlB,CACA,GAAIxB,IAAI,CAACY,KAAL,CAAWa,OAAX,GAAuBzB,IAAI,CAACY,KAAL,CAAWa,OAAX,EAAoBxF,MAApB,CAA6B,CAAxD,CAA2D,CACzDe,IAAI,CAACyE,OAAD,CAAJ,CAAgB,EAAhB,CACA,IAAK,GAAIC,IAAT,GAAgB1B,KAAI,CAACY,KAAL,CAAWa,OAAX,CAAhB,CAAqC,CACnCzE,IAAI,CAACyE,OAAD,CAAJ,CAAcE,IAAd,CAAmBR,aAAa,CAACnB,IAAI,CAACY,KAAL,CAAWa,OAAX,EAAoBC,GAApB,CAAD,CAA2B5F,OAA3B,CAAhC,EACD,CACF,CALD,IAKO,CACL,GAAGA,OAAO,CAACwF,SAAR,GAAsB,IAAzB,CAA8B,CAC5B,GAAMrD,OAAM,CAAGkD,aAAa,CAACnB,IAAI,CAACY,KAAL,CAAWa,OAAX,EAAoB,CAApB,CAAD,CAAyB3F,OAAzB,CAA5B,CACA,GAAG,MAAOmC,OAAP,GAAkB,QAArB,CACEjB,IAAI,CAACyE,OAAD,CAAJ,CAAgB,CAAExD,MAAF,CAAhB,CADF,IAGEjB,KAAI,CAACyE,OAAD,CAAJ,CAAgBxD,MAAhB,CACH,CAND,IAMM,IAAGnC,OAAO,CAACwF,SAAR,GAAsB,QAAzB,CAAkC,CACtCtE,IAAI,CAACyE,OAAD,CAAJ,CAAgB,CAACN,aAAa,CAACnB,IAAI,CAACY,KAAL,CAAWa,OAAX,EAAoB,CAApB,CAAD,CAAyB3F,OAAzB,CAAd,CAAhB,CACD,CAFK,IAED,CACHkB,IAAI,CAACyE,OAAD,CAAJ,CAAgBN,aAAa,CAACnB,IAAI,CAACY,KAAL,CAAWa,OAAX,EAAoB,CAApB,CAAD,CAAyB3F,OAAzB,CAA7B,CACD,CACF,CACF,CAED;AACA,MAAOkB,KAAP,CACD,CA9CD,CAgDA+B,OAAO,CAACoC,aAAR,CAAwBA,aAAxB,C;;;;;;;;;;;;AClDA,GAAMD,KAAI,CAAGpG,mBAAO,CAAC,6BAAD,CAApB,CACA,GAAMD,aAAY,CAAGC,mBAAO,CAAC,6BAAD,CAAP,CAAkBD,YAAvC,CACA,GAAMmG,IAAG,CAAGlG,mBAAO,CAAC,iDAAD,CAAnB,CAEA;AACA,GAAM8G,oBAAmB,CAAG,QAAtBA,oBAAsB,CAAS5B,IAAT,CAAelE,OAAf,CAAwB,CAClDA,OAAO,CAAGjB,YAAY,CAACiB,OAAD,CAAUkF,GAAG,CAACjG,cAAd,CAA8BiG,GAAG,CAACpF,KAAlC,CAAtB,CAEAE,OAAO,CAACP,QAAR,CAAmBO,OAAO,CAACP,QAAR,EAAoB,EAAvC,CACA,MAAOsG,YAAW,CAAC7B,IAAD,CAAOlE,OAAP,CAAgB,CAAhB,CAAlB,CACD,CALD,CAOA,GAAM+F,YAAW,CAAG,QAAdA,YAAc,CAAS7B,IAAT,CAAelE,OAAf,CAAwBqB,KAAxB,CAA+B,CACjD,GAAIH,KAAI,CAAG,GAAX,CAEA;AACA,GAAMK,KAAI,CAAGC,MAAM,CAACD,IAAP,CAAY2C,IAAI,CAACY,KAAjB,CAAb,CAEA,IAAK,GAAIY,MAAK,CAAG,CAAjB,CAAoBA,KAAK,CAAGnE,IAAI,CAACpB,MAAjC,CAAyCuF,KAAK,EAA9C,CAAkD,CAChD,GAAIC,QAAO,CAAGpE,IAAI,CAACmE,KAAD,CAAlB,CACA,GAAIxB,IAAI,CAACY,KAAL,CAAWa,OAAX,GAAuBzB,IAAI,CAACY,KAAL,CAAWa,OAAX,EAAoBxF,MAApB,CAA6B,CAAxD,CAA2D,CACzDe,IAAI,EAAI,IAAMyE,OAAN,CAAgB,QAAxB,CACA,IAAK,GAAIC,IAAT,GAAgB1B,KAAI,CAACY,KAAL,CAAWa,OAAX,CAAhB,CAAqC,CACnCzE,IAAI,EAAI6E,WAAW,CAAC7B,IAAI,CAACY,KAAL,CAAWa,OAAX,EAAoBC,GAApB,CAAD,CAA2B5F,OAA3B,CAAX,CAAiD,KAAzD,CACD,CACDkB,IAAI,CAAGA,IAAI,CAAC6B,MAAL,CAAY,CAAZ,CAAe7B,IAAI,CAACf,MAAL,CAAc,CAA7B,EAAkC,KAAzC,CAAgD;AACjD,CAND,IAMO,CACLe,IAAI,EAAI,IAAMyE,OAAN,CAAgB,MAAhB,CAAyBI,WAAW,CAAC7B,IAAI,CAACY,KAAL,CAAWa,OAAX,EAAoB,CAApB,CAAD,CAAyB3F,OAAzB,CAApC,CAAwE,IAAhF,CACD,CACF,CACDoF,IAAI,CAACK,KAAL,CAAWvE,IAAX,CAAiBgD,IAAI,CAACW,QAAtB,EACA;AACA,GAAIO,IAAI,CAACE,aAAL,CAAmBpE,IAAnB,CAAJ,CAA8B,CAC5B,MAAOkE,KAAI,CAACG,OAAL,CAAarB,IAAI,CAAC9C,GAAlB,EAAyB8C,IAAI,CAAC9C,GAA9B,CAAoC,EAA3C,CACD,CAFD,IAEO,CACL,GAAIgE,IAAI,CAACG,OAAL,CAAarB,IAAI,CAAC9C,GAAlB,CAAJ,CAA4B,CAC1B,GAAI,EAAE,MAAO8C,KAAI,CAAC9C,GAAZ,GAAoB,QAApB,GAAiC8C,IAAI,CAAC9C,GAAL,GAAa,EAAb,EAAmB8C,IAAI,CAAC9C,GAAL,GAAapB,OAAO,CAACT,iBAAzE,CAAF,CAAJ,CAAoG,CAClG2B,IAAI,EAAI,IAAMlB,OAAO,CAACZ,YAAd,CAA6B,MAA7B,CAAsC4G,SAAS,CAAC9B,IAAI,CAAC9C,GAAN,CAAvD,CACD,CACF,CACF,CACD;AACA,GAAIF,IAAI,CAACA,IAAI,CAACf,MAAL,CAAc,CAAf,CAAJ,GAA0B,GAA9B,CAAmC,CACjCe,IAAI,CAAGA,IAAI,CAAC6B,MAAL,CAAY,CAAZ,CAAe7B,IAAI,CAACf,MAAL,CAAc,CAA7B,CAAP,CACD,CACD,MAAOe,KAAI,CAAG,GAAd,CACD,CAlCD,CAoCA,QAAS8E,UAAT,CAAmBtD,CAAnB,CAAsB,CACpB,GAAIA,CAAC,GAAK,IAAN,EAAcA,CAAC,GAAK,KAApB,EAA6B,CAACuD,KAAK,CAACvD,CAAD,CAAvC,CAA4C,CAC1C,MAAOA,EAAP,CACD,CAFD,IAEO,CACL,MAAO,IAAMA,CAAN,CAAU,GAAjB,CACD,CACF,CAED,QAASnC,UAAT,CAAmBP,OAAnB,CAA4BqB,KAA5B,CAAmC,CACjC,MAAOrB,QAAO,CAACP,QAAR,CAAiBmD,MAAjB,CAAwBvB,KAAxB,CAAP,CACD,CAED4B,OAAO,CAAC6C,mBAAR,CAA8BA,mBAA9B,C;;;;;;;;;;;;AC5DA,GAAMI,WAAU,CAAGlH,mBAAO,CAAC,uCAAD,CAA1B,CACA,GAAMmH,aAAY,CAAGnH,mBAAO,CAAC,iDAAD,CAA5B,CACA,GAAMoH,UAAS,CAAGpH,mBAAO,CAAC,iDAAD,CAAzB,CACA,GAAMD,aAAY,CAAGC,mBAAO,CAAC,6BAAD,CAAP,CAAkBD,YAAvC,CACA,GAAMsH,UAAS,CAAGrH,mBAAO,CAAC,uCAAD,CAAzB,CAEAiE,OAAO,CAAChC,KAAR,CAAgB,SAASqF,OAAT,CAAkBtG,OAAlB,CAA2BuG,gBAA3B,CAA6C,CAC3D,GAAIA,gBAAJ,CAAqB,CACnB,GAAGA,gBAAgB,GAAK,IAAxB,CAA8BA,gBAAgB,CAAG,EAAnB,CAE9B,GAAMpE,OAAM,CAAGkE,SAAS,CAACG,QAAV,CAAmBF,OAAnB,CAA4BC,gBAA5B,CAAf,CACA,GAAIpE,MAAM,GAAK,IAAf,CAAqB,CACnB,KAAMsE,MAAK,CAAEtE,MAAM,CAACuE,GAAP,CAAWC,GAAb,CAAX,CACD,CACF,CACD3G,OAAO,CAAGjB,YAAY,CAACiB,OAAD,CAAUoG,SAAS,CAACnH,cAApB,CAAoCmH,SAAS,CAACtG,KAA9C,CAAtB,CACA,MAAOoG,WAAU,CAACb,aAAX,CAAyBc,YAAY,CAACS,eAAb,CAA6BN,OAA7B,CAAsCtG,OAAtC,CAAzB,CAAyEA,OAAzE,CAAP,CACD,CAXD,CAYAiD,OAAO,CAAC4D,aAAR,CAAwB7H,mBAAO,CAAC,0CAAD,CAAP,CAA2BmG,YAAnD,CACAlC,OAAO,CAAC2D,eAAR,CAA0BT,YAAY,CAACS,eAAvC,CACA3D,OAAO,CAACoC,aAAR,CAAwBa,UAAU,CAACb,aAAnC,CACApC,OAAO,CAAC6C,mBAAR,CAA8B9G,mBAAO,CAAC,+CAAD,CAAP,CAA2B8G,mBAAzD,CACA7C,OAAO,CAACuD,QAAR,CAAmBH,SAAS,CAACG,QAA7B,CACAvD,OAAO,CAAC6D,SAAR,CAAoB9H,mBAAO,CAAC,qCAAD,CAA3B,CACAiE,OAAO,CAAC8D,WAAR,CAAsB,SAAST,OAAT,CAAkBU,MAAlB,CAA0BhH,OAA1B,CAAmC,CACvD,MAAOiD,QAAO,CAAC4D,aAAR,CAAsB5D,OAAO,CAAC2D,eAAR,CAAwBN,OAAxB,CAAiCtG,OAAjC,CAAtB,CAAiEgH,MAAjE,CAAyEhH,OAAzE,CAAP,CACD,CAFD,C;;;;;;;;;;;;ACxBA,GAAMiH,cAAa,CAAG,QAAhBA,cAAgB,CAASC,MAAT,CAAiBC,KAAjB,CAAwB,CAC5C,GAAMC,QAAO,CAAG,EAAhB,CACA,GAAIC,MAAK,CAAGF,KAAK,CAACG,IAAN,CAAWJ,MAAX,CAAZ,CACA,MAAOG,KAAP,CAAc,CACZ,GAAME,WAAU,CAAG,EAAnB,CACA,GAAM9F,IAAG,CAAG4F,KAAK,CAAClH,MAAlB,CACA,IAAK,GAAIuF,MAAK,CAAG,CAAjB,CAAoBA,KAAK,CAAGjE,GAA5B,CAAiCiE,KAAK,EAAtC,CAA0C,CACxC6B,UAAU,CAAC1B,IAAX,CAAgBwB,KAAK,CAAC3B,KAAD,CAArB,EACD,CACD0B,OAAO,CAACvB,IAAR,CAAa0B,UAAb,EACAF,KAAK,CAAGF,KAAK,CAACG,IAAN,CAAWJ,MAAX,CAAR,CACD,CACD,MAAOE,QAAP,CACD,CAbD,CAeA,GAAMI,UAAS,CAAG,QAAZA,UAAY,CAASN,MAAT,CAAiBC,KAAjB,CAAwB,CACxC,GAAME,MAAK,CAAGF,KAAK,CAACG,IAAN,CAAWJ,MAAX,CAAd,CACA,MAAO,EAAEG,KAAK,GAAK,IAAV,EAAkB,MAAOA,MAAP,GAAiB,WAArC,CAAP,CACD,CAHD,CAKA,GAAMI,aAAY,CAAG,QAAfA,aAAe,CAASP,MAAT,CAAiBC,KAAjB,CAAwB,CAC3C,MAAO,CAACK,SAAS,CAACN,MAAD,CAASC,KAAT,CAAjB,CACD,CAFD,CAIAlE,OAAO,CAACsC,OAAR,CAAkB,SAAS7C,CAAT,CAAY,CAC5B,MAAO,OAAOA,EAAP,GAAa,WAApB,CACD,CAFD,CAIAO,OAAO,CAACqC,aAAR,CAAwB,SAASoC,GAAT,CAAc,CACpC,MAAOlG,OAAM,CAACD,IAAP,CAAYmG,GAAZ,EAAiBvH,MAAjB,GAA4B,CAAnC,CACD,CAFD,CAIA;;;;GAKA8C,OAAO,CAACwC,KAAR,CAAgB,SAASkC,MAAT,CAAiB/H,CAAjB,CAAoB4F,SAApB,CAA+B,CAC7C,GAAI5F,CAAJ,CAAO,CACL,GAAM2B,KAAI,CAAGC,MAAM,CAACD,IAAP,CAAY3B,CAAZ,CAAb,CAA6B;AAC7B,GAAM6B,IAAG,CAAGF,IAAI,CAACpB,MAAjB,CAAyB;AACzB,IAAK,GAAIuB,EAAC,CAAG,CAAb,CAAgBA,CAAC,CAAGD,GAApB,CAAyBC,CAAC,EAA1B,CAA8B,CAC5B,GAAG8D,SAAS,GAAK,QAAjB,CAA0B,CACxBmC,MAAM,CAACpG,IAAI,CAACG,CAAD,CAAL,CAAN,CAAkB,CAAE9B,CAAC,CAAC2B,IAAI,CAACG,CAAD,CAAL,CAAH,CAAlB,CACD,CAFD,IAEK,CACHiG,MAAM,CAACpG,IAAI,CAACG,CAAD,CAAL,CAAN,CAAkB9B,CAAC,CAAC2B,IAAI,CAACG,CAAD,CAAL,CAAnB,CACD,CACF,CACF,CACF,CAZD,CAaA;;IAIAuB,OAAO,CAACoB,QAAR,CAAmB,SAAS3B,CAAT,CAAY,CAC7B,GAAIO,OAAO,CAACsC,OAAR,CAAgB7C,CAAhB,CAAJ,CAAwB,CACtB,MAAOA,EAAP,CACD,CAFD,IAEO,CACL,MAAO,EAAP,CACD,CACF,CAND,CAQA;AACA;AAEAO,OAAO,CAAClE,YAAR,CAAuB,SAASiB,OAAT,CAAkBf,cAAlB,CAAkCa,KAAlC,CAAyC,CAC9D,GAAI8H,WAAU,CAAG,EAAjB,CACA,GAAI,CAAC5H,OAAL,CAAc,CACZ,MAAOf,eAAP,CAAuB;AACxB,CAED,IAAK,GAAIyC,EAAC,CAAG,CAAb,CAAgBA,CAAC,CAAG5B,KAAK,CAACK,MAA1B,CAAkCuB,CAAC,EAAnC,CAAuC,CACrC,GAAI1B,OAAO,CAACF,KAAK,CAAC4B,CAAD,CAAN,CAAP,GAAsB0C,SAA1B,CAAqC,CACnCwD,UAAU,CAAC9H,KAAK,CAAC4B,CAAD,CAAN,CAAV,CAAuB1B,OAAO,CAACF,KAAK,CAAC4B,CAAD,CAAN,CAA9B,CACD,CAFD,IAEO,CACLkG,UAAU,CAAC9H,KAAK,CAAC4B,CAAD,CAAN,CAAV,CAAuBzC,cAAc,CAACa,KAAK,CAAC4B,CAAD,CAAN,CAArC,CACD,CACF,CACD,MAAOkG,WAAP,CACD,CAdD,CAgBA3E,OAAO,CAACuE,SAAR,CAAoBA,SAApB,CACAvE,OAAO,CAACwE,YAAR,CAAuBA,YAAvB,CACAxE,OAAO,CAACgE,aAAR,CAAwBA,aAAxB,C;;;;;;;;;;;;ACnFA,GAAM7B,KAAI,CAAGpG,mBAAO,CAAC,6BAAD,CAApB,CAEA,GAAMC,eAAc,CAAG,CACrB4I,sBAAsB,CAAE,KADH,CACU;AAC/BC,WAAW,CAAE,QAFQ,CAAvB,CAKA,GAAMhI,MAAK,CAAG,CAAC,wBAAD,CAA2B,aAA3B,CAAd,CAEA;AACAmD,OAAO,CAACuD,QAAR,CAAmB,SAASF,OAAT,CAAkBtG,OAAlB,CAA2B,CAC5CA,OAAO,CAAGoF,IAAI,CAACrG,YAAL,CAAkBiB,OAAlB,CAA2Bf,cAA3B,CAA2Ca,KAA3C,CAAV,CAEA;AACA;AACA;AAEA,GAAMiI,KAAI,CAAG,EAAb,CACA,GAAIC,SAAQ,CAAG,KAAf,CACA,GAAI1B,OAAO,CAAC,CAAD,CAAP,GAAe,QAAnB,CAA6B,CAC3B;AACAA,OAAO,CAAGA,OAAO,CAACvD,MAAR,CAAe,CAAf,CAAV,CACD,CACD,GAAMkF,aAAY,CAAG,GAAIC,OAAJ,CAAW,oBAAoB1F,OAApB,CAA4B,IAA5B,CAAkC,IAAMxC,OAAO,CAAC8H,WAAhD,CAAX,CAArB,CACA,GAAMK,YAAW,CAAG,GAAID,OAAJ,CAAW,uBAAuB1F,OAAvB,CAA+B,KAA/B,CAAsC,KAAOxC,OAAO,CAAC8H,WAArD,CAAX,CAApB,CACA,IAAK,GAAIpG,EAAC,CAAG,CAAb,CAAgBA,CAAC,CAAG4E,OAAO,CAACnG,MAA5B,CAAoCuB,CAAC,EAArC,CAAyC,CACvC,GAAI4E,OAAO,CAAC5E,CAAD,CAAP,GAAe,GAAnB,CAAwB,CACtB;AACA;AAEAA,CAAC,GACD,GAAI4E,OAAO,CAAC5E,CAAD,CAAP,GAAe,GAAnB,CAAwB,CACtBA,CAAC,CAAG0G,MAAM,CAAC9B,OAAD,CAAU,EAAE5E,CAAZ,CAAV,CACA,GAAIA,CAAC,CAACgF,GAAN,CAAW,CACT,MAAOhF,EAAP,CACD,CACF,CALD,IAKO,IAAI4E,OAAO,CAAC5E,CAAD,CAAP,GAAe,GAAnB,CAAwB,CAC7BA,CAAC,CAAG2G,mBAAmB,CAAC/B,OAAD,CAAU5E,CAAV,CAAvB,CACA,SACD,CAHM,IAGA,CACL,GAAI4G,WAAU,CAAG,KAAjB,CACA,GAAIhC,OAAO,CAAC5E,CAAD,CAAP,GAAe,GAAnB,CAAwB,CACtB;AACA4G,UAAU,CAAG,IAAb,CACA5G,CAAC,GACF,CACD;AACA,GAAI6G,QAAO,CAAG,EAAd,CACA,KAEE7G,CAAC,CAAG4E,OAAO,CAACnG,MAAZ,EACAmG,OAAO,CAAC5E,CAAD,CAAP,GAAe,GADf,EAEA4E,OAAO,CAAC5E,CAAD,CAAP,GAAe,GAFf,EAGA4E,OAAO,CAAC5E,CAAD,CAAP,GAAe,IAHf,EAIA4E,OAAO,CAAC5E,CAAD,CAAP,GAAe,IAJf,EAKA4E,OAAO,CAAC5E,CAAD,CAAP,GAAe,IAPjB,CAQEA,CAAC,EARH,CASE,CACA6G,OAAO,EAAIjC,OAAO,CAAC5E,CAAD,CAAlB,CACD,CACD6G,OAAO,CAAGA,OAAO,CAACC,IAAR,EAAV,CACA;AAEA,GAAID,OAAO,CAACA,OAAO,CAACpI,MAAR,CAAiB,CAAlB,CAAP,GAAgC,GAApC,CAAyC,CACvC;AACAoI,OAAO,CAAGA,OAAO,CAACE,SAAR,CAAkB,CAAlB,CAAqBF,OAAO,CAACpI,MAAR,CAAiB,CAAtC,CAAV,CACA,SACD,CACD,GAAI,CAACuI,eAAe,CAACH,OAAD,CAAUJ,WAAV,CAApB,CAA4C,CAC1C,MAAO,CAACzB,GAAG,CAAE,CAACiC,IAAI,CAAE,YAAP,CAAqBhC,GAAG,CAAE,OAAS4B,OAAT,CAAmB,sBAA7C,CAAN,CAAP,CACD,CAED,GAAMpG,OAAM,CAAGyG,gBAAgB,CAACtC,OAAD,CAAU5E,CAAV,CAA/B,CACA,GAAIS,MAAM,GAAK,KAAf,CAAsB,CACpB,MAAO,CAACuE,GAAG,CAAE,CAACiC,IAAI,CAAE,aAAP,CAAsBhC,GAAG,CAAE,mBAAqB4B,OAArB,CAA+B,oBAA1D,CAAN,CAAP,CACD,CACD,GAAIjH,QAAO,CAAGa,MAAM,CAAC0G,KAArB,CACAnH,CAAC,CAAGS,MAAM,CAACuD,KAAX,CAEA,GAAIpE,OAAO,CAACA,OAAO,CAACnB,MAAR,CAAiB,CAAlB,CAAP,GAAgC,GAApC,CAAyC,CACvC;AACAmB,OAAO,CAAGA,OAAO,CAACmH,SAAR,CAAkB,CAAlB,CAAqBnH,OAAO,CAACnB,MAAR,CAAiB,CAAtC,CAAV,CACA,GAAM2I,QAAO,CAAGC,uBAAuB,CAACzH,OAAD,CAAUtB,OAAV,CAAmBiI,YAAnB,CAAvC,CACA,GAAIa,OAAO,GAAK,IAAhB,CAAsB,CACpBd,QAAQ,CAAG,IAAX,CACA;AACD,CAHD,IAGO,CACL,MAAOc,QAAP,CACD,CACF,CAVD,IAUO,IAAIR,UAAJ,CAAgB,CACrB,GAAG,CAACnG,MAAM,CAAC6G,SAAX,CAAqB,CACnB,MAAO,CACLtC,GAAG,CAAE,CAACiC,IAAI,CAAE,YAAP,CAAqBhC,GAAG,CAAE,gBAAkB4B,OAAlB,CAA4B,+BAAtD,CADA,CAAP,CAGD,CAJD,IAIM,IAAIjH,OAAO,CAACkH,IAAR,GAAerI,MAAf,CAAwB,CAA5B,CAA+B,CACnC,MAAO,CACLuG,GAAG,CAAE,CAACiC,IAAI,CAAE,YAAP,CAAqBhC,GAAG,CAAE,gBAAkB4B,OAAlB,CAA4B,+CAAtD,CADA,CAAP,CAGD,CAJK,IAIC,CACL,GAAMU,IAAG,CAAGlB,IAAI,CAACmB,GAAL,EAAZ,CACA,GAAIX,OAAO,GAAKU,GAAhB,CAAqB,CACnB,MAAO,CACLvC,GAAG,CAAE,CAACiC,IAAI,CAAE,YAAP,CAAqBhC,GAAG,CAAE,eAAiBsC,GAAjB,CAAuB,0BAAvB,CAAoDV,OAApD,CAA8D,GAAxF,CADA,CAAP,CAGD,CACF,CACF,CAjBM,IAiBA,CACL,GAAMO,SAAO,CAAGC,uBAAuB,CAACzH,OAAD,CAAUtB,OAAV,CAAmBiI,YAAnB,CAAvC,CACA,GAAIa,QAAO,GAAK,IAAhB,CAAsB,CACpB,MAAOA,SAAP,CACD,CACDf,IAAI,CAAClC,IAAL,CAAU0C,OAAV,EACAP,QAAQ,CAAG,IAAX,CACD,CAED;AACA;AACA,IAAKtG,CAAC,EAAN,CAAUA,CAAC,CAAG4E,OAAO,CAACnG,MAAtB,CAA8BuB,CAAC,EAA/B,CAAmC,CACjC,GAAI4E,OAAO,CAAC5E,CAAD,CAAP,GAAe,GAAnB,CAAwB,CACtB,GAAI4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GAAvB,CAA4B,CAC1B;AACAA,CAAC,GACDA,CAAC,CAAG2G,mBAAmB,CAAC/B,OAAD,CAAU5E,CAAV,CAAvB,CACA,SACD,CALD,IAKO,CACL,MACD,CACF,CACF,CAAC;AACF,GAAI4E,OAAO,CAAC5E,CAAD,CAAP,GAAe,GAAnB,CAAwB,CACtBA,CAAC,GACF,CACF,CACF,CA3GD,IA2GO,CACL,GAAI4E,OAAO,CAAC5E,CAAD,CAAP,GAAe,GAAf,EAAsB4E,OAAO,CAAC5E,CAAD,CAAP,GAAe,IAArC,EAA6C4E,OAAO,CAAC5E,CAAD,CAAP,GAAe,IAA5D,EAAoE4E,OAAO,CAAC5E,CAAD,CAAP,GAAe,IAAvF,CAA6F,CAC3F,SACD,CACD,MAAO,CAACgF,GAAG,CAAE,CAACiC,IAAI,CAAE,aAAP,CAAsBhC,GAAG,CAAE,QAAUL,OAAO,CAAC5E,CAAD,CAAjB,CAAuB,oBAAlD,CAAN,CAAP,CACD,CACF,CAED,GAAI,CAACsG,QAAL,CAAe,CACb,MAAO,CAACtB,GAAG,CAAE,CAACiC,IAAI,CAAE,YAAP,CAAqBhC,GAAG,CAAE,qBAA1B,CAAN,CAAP,CACD,CAFD,IAEO,IAAIoB,IAAI,CAAC5H,MAAL,CAAc,CAAlB,CAAqB,CAC1B,MAAO,CACLuG,GAAG,CAAE,CAACiC,IAAI,CAAE,YAAP,CAAqBhC,GAAG,CAAE,WAAawC,IAAI,CAACC,SAAL,CAAerB,IAAf,CAAqB,IAArB,CAA2B,CAA3B,EAA8BvF,OAA9B,CAAsC,QAAtC,CAAgD,EAAhD,CAAb,CAAmE,SAA7F,CADA,CAAP,CAGD,CAED,MAAO,KAAP,CACD,CA5ID,CA8IA;;;;GAKA,QAAS4F,OAAT,CAAgB9B,OAAhB,CAAyB5E,CAAzB,CAA4B,CAC1B,GAAI2H,MAAK,CAAG3H,CAAZ,CACA,KAAOA,CAAC,CAAG4E,OAAO,CAACnG,MAAnB,CAA2BuB,CAAC,EAA5B,CAAgC,CAC9B,GAAI4E,OAAO,CAAC5E,CAAD,CAAP,EAAc,GAAd,EAAqB4E,OAAO,CAAC5E,CAAD,CAAP,EAAc,GAAvC,CAA4C,CAC1C;AACA,GAAIiE,QAAO,CAAGW,OAAO,CAACvD,MAAR,CAAesG,KAAf,CAAsB3H,CAAC,CAAG2H,KAA1B,CAAd,CACA,GAAI3H,CAAC,CAAG,CAAJ,EAASiE,OAAO,GAAK,KAAzB,CAAgC,CAC9B,MAAO,CAACe,GAAG,CAAE,CAACiC,IAAI,CAAE,YAAP,CAAqBhC,GAAG,CAAE,4DAA1B,CAAN,CAAP,CACD,CAFD,IAEO,IAAIL,OAAO,CAAC5E,CAAD,CAAP,EAAc,GAAd,EAAqB4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,EAAkB,GAA3C,CAAgD,CACrD;AACAA,CAAC,GACD,MACD,CAJM,IAIA,CACL,SACD,CACF,CACF,CACD,MAAOA,EAAP,CACD,CAED,QAAS2G,oBAAT,CAA6B/B,OAA7B,CAAsC5E,CAAtC,CAAyC,CACvC,GAAI4E,OAAO,CAACnG,MAAR,CAAiBuB,CAAC,CAAG,CAArB,EAA0B4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GAA7C,EAAoD4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GAA3E,CAAgF,CAC9E;AACA,IAAKA,CAAC,EAAI,CAAV,CAAaA,CAAC,CAAG4E,OAAO,CAACnG,MAAzB,CAAiCuB,CAAC,EAAlC,CAAsC,CACpC,GAAI4E,OAAO,CAAC5E,CAAD,CAAP,GAAe,GAAf,EAAsB4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GAAzC,EAAgD4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GAAvE,CAA4E,CAC1EA,CAAC,EAAI,CAAL,CACA,MACD,CACF,CACF,CARD,IAQO,IACL4E,OAAO,CAACnG,MAAR,CAAiBuB,CAAC,CAAG,CAArB,EACA4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GADnB,EAEA4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GAFnB,EAGA4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GAHnB,EAIA4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GAJnB,EAKA4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GALnB,EAMA4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GANnB,EAOA4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GARd,CASL,CACA,GAAI4H,mBAAkB,CAAG,CAAzB,CACA,IAAK5H,CAAC,EAAI,CAAV,CAAaA,CAAC,CAAG4E,OAAO,CAACnG,MAAzB,CAAiCuB,CAAC,EAAlC,CAAsC,CACpC,GAAI4E,OAAO,CAAC5E,CAAD,CAAP,GAAe,GAAnB,CAAwB,CACtB4H,kBAAkB,GACnB,CAFD,IAEO,IAAIhD,OAAO,CAAC5E,CAAD,CAAP,GAAe,GAAnB,CAAwB,CAC7B4H,kBAAkB,GAClB,GAAIA,kBAAkB,GAAK,CAA3B,CAA8B,CAC5B,MACD,CACF,CACF,CACF,CArBM,IAqBA,IACLhD,OAAO,CAACnG,MAAR,CAAiBuB,CAAC,CAAG,CAArB,EACA4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GADnB,EAEA4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GAFnB,EAGA4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GAHnB,EAIA4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GAJnB,EAKA4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GALnB,EAMA4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GANnB,EAOA4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GARd,CASL,CACA,IAAKA,CAAC,EAAI,CAAV,CAAaA,CAAC,CAAG4E,OAAO,CAACnG,MAAzB,CAAiCuB,CAAC,EAAlC,CAAsC,CACpC,GAAI4E,OAAO,CAAC5E,CAAD,CAAP,GAAe,GAAf,EAAsB4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GAAzC,EAAgD4E,OAAO,CAAC5E,CAAC,CAAG,CAAL,CAAP,GAAmB,GAAvE,CAA4E,CAC1EA,CAAC,EAAI,CAAL,CACA,MACD,CACF,CACF,CAED,MAAOA,EAAP,CACD,CAED,GAAI6H,YAAW,CAAG,GAAlB,CACA,GAAIC,YAAW,CAAG,GAAlB,CAEA;;;;GAKA,QAASZ,iBAAT,CAA0BtC,OAA1B,CAAmC5E,CAAnC,CAAsC,CACpC,GAAIJ,QAAO,CAAG,EAAd,CACA,GAAImI,UAAS,CAAG,EAAhB,CACA,GAAIT,UAAS,CAAG,KAAhB,CACA,KAAOtH,CAAC,CAAG4E,OAAO,CAACnG,MAAnB,CAA2BuB,CAAC,EAA5B,CAAgC,CAC9B,GAAI4E,OAAO,CAAC5E,CAAD,CAAP,GAAe6H,WAAf,EAA8BjD,OAAO,CAAC5E,CAAD,CAAP,GAAe8H,WAAjD,CAA8D,CAC5D,GAAIC,SAAS,GAAK,EAAlB,CAAsB,CACpBA,SAAS,CAAGnD,OAAO,CAAC5E,CAAD,CAAnB,CACD,CAFD,IAEO,IAAI+H,SAAS,GAAKnD,OAAO,CAAC5E,CAAD,CAAzB,CAA8B,CACnC;AACA,SACD,CAHM,IAGA,CACL+H,SAAS,CAAG,EAAZ,CACD,CACF,CATD,IASO,IAAInD,OAAO,CAAC5E,CAAD,CAAP,GAAe,GAAnB,CAAwB,CAC7B,GAAI+H,SAAS,GAAK,EAAlB,CAAsB,CACpBT,SAAS,CAAG,IAAZ,CACA,MACD,CACF,CACD1H,OAAO,EAAIgF,OAAO,CAAC5E,CAAD,CAAlB,CACD,CACD,GAAI+H,SAAS,GAAK,EAAlB,CAAsB,CACpB,MAAO,MAAP,CACD,CAED,MAAO,CAACZ,KAAK,CAAEvH,OAAR,CAAiBoE,KAAK,CAAEhE,CAAxB,CAA2BsH,SAAS,CAAEA,SAAtC,CAAP,CACD,CAED;;GAGA,GAAMU,kBAAiB,CAAG,GAAIxB,OAAJ,CAAW,yDAAX,CAAsE,GAAtE,CAA1B,CAEA;AAEA,QAASa,wBAAT,CAAiCzH,OAAjC,CAA0CtB,OAA1C,CAAmDiI,YAAnD,CAAiE,CAC/D;AAEA;AAEA,GAAMb,QAAO,CAAGhC,IAAI,CAAC6B,aAAL,CAAmB3F,OAAnB,CAA4BoI,iBAA5B,CAAhB,CACA,GAAMC,UAAS,CAAG,EAAlB,CAEA,IAAK,GAAIjI,EAAC,CAAG,CAAb,CAAgBA,CAAC,CAAG0F,OAAO,CAACjH,MAA5B,CAAoCuB,CAAC,EAArC,CAAyC,CACvC;AAEA,GAAI0F,OAAO,CAAC1F,CAAD,CAAP,CAAW,CAAX,EAAcvB,MAAd,GAAyB,CAA7B,CAAgC,CAC9B;AACA,MAAO,CAACuG,GAAG,CAAE,CAACiC,IAAI,CAAE,aAAP,CAAsBhC,GAAG,CAAE,aAAeS,OAAO,CAAC1F,CAAD,CAAP,CAAW,CAAX,CAAf,CAA+B,4BAA1D,CAAN,CAAP,CACD,CAHD,IAGO,IAAI0F,OAAO,CAAC1F,CAAD,CAAP,CAAW,CAAX,IAAkB0C,SAAlB,EAA+B,CAACpE,OAAO,CAAC6H,sBAA5C,CAAoE,CACzE;AACA,MAAO,CAACnB,GAAG,CAAE,CAACiC,IAAI,CAAE,aAAP,CAAsBhC,GAAG,CAAE,qBAAuBS,OAAO,CAAC1F,CAAD,CAAP,CAAW,CAAX,CAAvB,CAAuC,kBAAlE,CAAN,CAAP,CACD,CACD;;oBAGA,GAAMkI,SAAQ,CAAGxC,OAAO,CAAC1F,CAAD,CAAP,CAAW,CAAX,CAAjB,CACA,GAAI,CAACmI,gBAAgB,CAACD,QAAD,CAAW3B,YAAX,CAArB,CAA+C,CAC7C,MAAO,CAACvB,GAAG,CAAE,CAACiC,IAAI,CAAE,aAAP,CAAsBhC,GAAG,CAAE,aAAeiD,QAAf,CAA0B,sBAArD,CAAN,CAAP,CACD,CACD,GAAI,CAACD,SAAS,CAACG,cAAV,CAAyBF,QAAzB,CAAL,CAAyC,CACvC;AACAD,SAAS,CAACC,QAAD,CAAT,CAAsB,CAAtB,CACD,CAHD,IAGO,CACL,MAAO,CAAClD,GAAG,CAAE,CAACiC,IAAI,CAAE,aAAP,CAAsBhC,GAAG,CAAE,aAAeiD,QAAf,CAA0B,eAArD,CAAN,CAAP,CACD,CACF,CAED,MAAO,KAAP,CACD,CAED;AAEA,QAASC,iBAAT,CAA0BD,QAA1B,CAAoC3B,YAApC,CAAkD,CAChD;AACA,MAAO7C,KAAI,CAACoC,SAAL,CAAeoC,QAAf,CAAyB3B,YAAzB,CAAP,CACD,CAED;AACA;AAEA,QAASS,gBAAT,CAAyB/C,OAAzB,CAAkCwC,WAAlC,CAA+C,CAC7C;UAEA,MAAO,CAAC/C,IAAI,CAACqC,YAAL,CAAkB9B,OAAlB,CAA2BwC,WAA3B,CAAR,CACD,C;;;;;;;;;;;;AClUDnF,MAAM,CAACC,OAAP,CAAiB,SAAS0C,OAAT,CAAkBoE,MAAlB,CAA0B3I,GAA1B,CAA+B,CAC9C,KAAKuE,OAAL,CAAeA,OAAf,CACA,KAAKoE,MAAL,CAAcA,MAAd,CACA,KAAKjF,KAAL,CAAa,EAAb,CAAiB;AACjB,KAAKD,QAAL,CAAgB,EAAhB,CAAoB;AACpB,KAAKzD,GAAL,CAAWA,GAAX,CAAgB;AAChB,KAAK4I,QAAL,CAAgB,SAASlF,KAAT,CAAgB,CAC9B,GAAIhD,KAAK,CAACC,OAAN,CAAc,KAAK+C,KAAL,CAAWA,KAAK,CAACa,OAAjB,CAAd,CAAJ,CAA8C,CAC5C;AACA,KAAKb,KAAL,CAAWA,KAAK,CAACa,OAAjB,EAA0BE,IAA1B,CAA+Bf,KAA/B,EACD,CAHD,IAGO,CACL,KAAKA,KAAL,CAAWA,KAAK,CAACa,OAAjB,EAA4B,CAACb,KAAD,CAA5B,CACD,CACF,CAPD,CAQD,CAdD,C;;;;;;;;;;;;ACAA,GAAMM,KAAI,CAAGpG,mBAAO,CAAC,6BAAD,CAApB,CACA,GAAMD,aAAY,CAAGC,mBAAO,CAAC,6BAAD,CAAP,CAAkBD,YAAvC,CACA,GAAMkL,QAAO,CAAGjL,mBAAO,CAAC,mCAAD,CAAvB,CACA,GAAMkL,QAAO,CAAG,CAACC,OAAO,CAAE,CAAV,CAAaC,OAAO,CAAE,CAAtB,CAAyBC,IAAI,CAAE,CAA/B,CAAkCC,KAAK,CAAE,CAAzC,CAAhB,CACA,GAAIC,KAAI,CACN,iIADF,CAGA;AACA;AAEA;AACA,GAAI,CAACC,MAAM,CAACC,QAAR,EAAoBC,MAAM,CAACD,QAA/B,CAAyC,CACvCD,MAAM,CAACC,QAAP,CAAkBC,MAAM,CAACD,QAAzB,CACD,CACD,GAAI,CAACD,MAAM,CAACG,UAAR,EAAsBD,MAAM,CAACC,UAAjC,CAA6C,CAC3CH,MAAM,CAACG,UAAP,CAAoBD,MAAM,CAACC,UAA3B,CACD,CAED,GAAM1L,eAAc,CAAG,CACrBC,mBAAmB,CAAE,IADA,CAErBC,YAAY,CAAE,KAFO,CAGrBC,YAAY,CAAE,OAHO,CAIrBC,gBAAgB,CAAE,IAJG,CAKrBuL,eAAe,CAAE,KALI,CAMrB/C,sBAAsB,CAAE,KANH,CAMU;AAC/B;AACAgD,cAAc,CAAE,IARK,CASrBC,mBAAmB,CAAE,KATA,CAUrBtF,SAAS,CAAE,KAVU,CAWrBuF,UAAU,CAAE,IAXS,CAWH;AAClBzL,YAAY,CAAE,KAZO,CAarBC,iBAAiB,CAAE,KAbE,CAcrBuI,WAAW,CAAE,EAdQ,CAerBnI,iBAAiB,CAAE,2BAASC,CAAT,CAAY2I,OAAZ,CAAqB,CACtC,MAAO3I,EAAP,CACD,CAjBoB,CAkBrBC,kBAAkB,CAAE,4BAASD,CAAT,CAAYgK,QAAZ,CAAsB,CACxC,MAAOhK,EAAP,CACD,CApBoB,CAqBrBoL,SAAS,CAAE,EACX;AAtBqB,CAAvB,CAyBA/H,OAAO,CAAChE,cAAR,CAAyBA,cAAzB,CAEA,GAAMa,MAAK,CAAG,CACZ,qBADY,CAEZ,cAFY,CAGZ,cAHY,CAIZ,kBAJY,CAKZ,iBALY,CAMZ,wBANY,CAOZ,gBAPY,CAQZ,qBARY,CASZ,WATY,CAUZ,YAVY,CAWZ,cAXY,CAYZ,mBAZY,CAaZ,aAbY,CAcZ,mBAdY,CAeZ,oBAfY,CAgBZ,qBAhBY,CAiBZ,WAjBY,CAAd,CAmBAmD,OAAO,CAACnD,KAAR,CAAgBA,KAAhB,CAEA,GAAM8G,gBAAe,CAAG,QAAlBA,gBAAkB,CAASN,OAAT,CAAkBtG,OAAlB,CAA2B,CACjDA,OAAO,CAAGjB,YAAY,CAACiB,OAAD,CAAUf,cAAV,CAA0Ba,KAA1B,CAAtB,CACA;AACAwG,OAAO,CAAGA,OAAO,CAAC9D,OAAR,CAAgB,kBAAhB,CAAoC,EAApC,CAAV,CAAmD;AAEnD,GAAMyI,OAAM,CAAG,GAAIhB,QAAJ,CAAY,MAAZ,CAAf,CACA,GAAIiB,YAAW,CAAGD,MAAlB,CAEAV,IAAI,CAAGA,IAAI,CAAC/H,OAAL,CAAa,QAAb,CAAuB,IAAMxC,OAAO,CAAC8H,WAAd,CAA4B,KAAnD,CAAP,CACA,GAAMqD,SAAQ,CAAG,GAAIjD,OAAJ,CAAWqC,IAAX,CAAiB,GAAjB,CAAjB,CACA,GAAI3E,IAAG,CAAGuF,QAAQ,CAAC7D,IAAT,CAAchB,OAAd,CAAV,CACA,GAAI8E,QAAO,CAAGD,QAAQ,CAAC7D,IAAT,CAAchB,OAAd,CAAd,CACA,MAAOV,GAAP,CAAY,CACV,GAAMyF,QAAO,CAAGC,eAAe,CAAC1F,GAAD,CAA/B,CAEA,GAAIyF,OAAO,GAAKnB,OAAO,CAACE,OAAxB,CAAiC,CAC/B;AACA,GAAIc,WAAW,CAACnB,MAAZ,EAAsBnE,GAAG,CAAC,EAAD,CAA7B,CAAmC,CACjCsF,WAAW,CAACnB,MAAZ,CAAmB3I,GAAnB,CAAyBgE,IAAI,CAACf,QAAL,CAAc6G,WAAW,CAACnB,MAAZ,CAAmB3I,GAAjC,EAAwC,EAAxC,CAA6CmK,eAAe,CAAC3F,GAAD,CAAM5F,OAAN,CAAekL,WAAW,CAACnB,MAAZ,CAAmBpE,OAAlC,CAArF,CACD,CACD,GAAI3F,OAAO,CAACgL,SAAR,CAAkB7K,MAAlB,EAA4BH,OAAO,CAACgL,SAAR,CAAkBrI,QAAlB,CAA2BuI,WAAW,CAACvF,OAAvC,CAAhC,CAAiF,CAC/EuF,WAAW,CAACpG,KAAZ,CAAoB,EAApB,CACA,GAAIoG,WAAW,CAACrG,QAAZ,EAAwBT,SAA5B,CAAuC,CAAE8G,WAAW,CAACrG,QAAZ,CAAuB,EAAvB,CAA0B,CACnEqG,WAAW,CAAC9J,GAAZ,CAAkBkF,OAAO,CAACvD,MAAR,CAAemI,WAAW,CAACM,UAAZ,CAAyB,CAAxC,CAA2C5F,GAAG,CAACF,KAAJ,CAAYwF,WAAW,CAACM,UAAxB,CAAqC,CAAhF,CAAlB,CACD,CACDN,WAAW,CAAGA,WAAW,CAACnB,MAA1B,CACD,CAXD,IAWO,IAAIsB,OAAO,GAAKnB,OAAO,CAACI,KAAxB,CAA+B,CACpC,GAAItK,OAAO,CAACV,YAAZ,CAA0B,CACxB;AACA,GAAMmM,UAAS,CAAG,GAAIxB,QAAJ,CAAYjK,OAAO,CAACV,YAApB,CAAkC4L,WAAlC,CAA+CtF,GAAG,CAAC,CAAD,CAAlD,CAAlB,CACA6F,SAAS,CAAC5G,QAAV,CAAqB6G,kBAAkB,CAAC9F,GAAG,CAAC,CAAD,CAAJ,CAAS5F,OAAT,CAAvC,CACAkL,WAAW,CAAClB,QAAZ,CAAqByB,SAArB,EACA;AACAP,WAAW,CAAC9J,GAAZ,CAAkBgE,IAAI,CAACf,QAAL,CAAc6G,WAAW,CAAC9J,GAA1B,EAAiCpB,OAAO,CAACT,iBAA3D,CACA;AACA,GAAIqG,GAAG,CAAC,EAAD,CAAP,CAAa,CACXsF,WAAW,CAAC9J,GAAZ,EAAmBmK,eAAe,CAAC3F,GAAD,CAAM5F,OAAN,CAAlC,CACD,CACF,CAXD,IAWO,CACLkL,WAAW,CAAC9J,GAAZ,CAAkB,CAAC8J,WAAW,CAAC9J,GAAZ,EAAmB,EAApB,GAA2BwE,GAAG,CAAC,CAAD,CAAH,EAAU,EAArC,EAA2C2F,eAAe,CAAC3F,GAAD,CAAM5F,OAAN,CAA5E,CACD,CACF,CAfM,IAeA,IAAIqL,OAAO,GAAKnB,OAAO,CAACG,IAAxB,CAA8B,CACnC,GAAIa,WAAW,EAAItF,GAAG,CAAC,EAAD,CAAtB,CAA4B,CAC1BsF,WAAW,CAAC9J,GAAZ,CAAkBgE,IAAI,CAACf,QAAL,CAAc6G,WAAW,CAAC9J,GAA1B,EAAiC,EAAjC,CAAsCmK,eAAe,CAAC3F,GAAD,CAAM5F,OAAN,CAAvE,CACD,CAED,GAAMyL,WAAS,CAAG,GAAIxB,QAAJ,CAAYjK,OAAO,CAAC4K,eAAR,CAA0BhF,GAAG,CAAC,CAAD,CAA7B,CAAmCA,GAAG,CAAC,CAAD,CAAlD,CAAuDsF,WAAvD,CAAoE,EAApE,CAAlB,CACA,GAAItF,GAAG,CAAC,CAAD,CAAH,EAAUA,GAAG,CAAC,CAAD,CAAH,CAAOzF,MAAP,CAAgB,CAA9B,CAAiC,CAC/ByF,GAAG,CAAC,CAAD,CAAH,CAASA,GAAG,CAAC,CAAD,CAAH,CAAO7C,MAAP,CAAc,CAAd,CAAiB6C,GAAG,CAAC,CAAD,CAAH,CAAOzF,MAAP,CAAgB,CAAjC,CAAT,CACD,CACDsL,UAAS,CAAC5G,QAAV,CAAqB6G,kBAAkB,CAAC9F,GAAG,CAAC,CAAD,CAAJ,CAAS5F,OAAT,CAAvC,CACAkL,WAAW,CAAClB,QAAZ,CAAqByB,UAArB,EACD,CAXM,IAWA,CACL;AACA,GAAMA,YAAS,CAAG,GAAIxB,QAAJ,CAChBjK,OAAO,CAAC4K,eAAR,CAA0BhF,GAAG,CAAC,CAAD,CAA7B,CAAmCA,GAAG,CAAC,CAAD,CADtB,CAEhBsF,WAFgB,CAGhBK,eAAe,CAAC3F,GAAD,CAAM5F,OAAN,CAHC,CAAlB,CAKA,GAAIA,OAAO,CAACgL,SAAR,CAAkB7K,MAAlB,EAA4BH,OAAO,CAACgL,SAAR,CAAkBrI,QAAlB,CAA2B8I,WAAS,CAAC9F,OAArC,CAAhC,CAA+E,CAC7E8F,WAAS,CAACD,UAAV,CAAqB5F,GAAG,CAACF,KAAJ,CAAYE,GAAG,CAAC,CAAD,CAAH,CAAOzF,MAAxC,CACD,CACDsL,WAAS,CAAC5G,QAAV,CAAqB6G,kBAAkB,CAAC9F,GAAG,CAAC,CAAD,CAAJ,CAAS5F,OAAT,CAAvC,CACAkL,WAAW,CAAClB,QAAZ,CAAqByB,WAArB,EACAP,WAAW,CAAGO,WAAd,CACD,CAED7F,GAAG,CAAGwF,OAAN,CACAA,OAAO,CAAGD,QAAQ,CAAC7D,IAAT,CAAchB,OAAd,CAAV,CACD,CAED,MAAO2E,OAAP,CACD,CAxED,CA0EA,QAASM,gBAAT,CAAyBI,UAAzB,CAAqC3L,OAArC,CAA8C4L,aAA9C,CAA6D,CAC3D,GAAMrD,QAAO,CAAGoD,UAAU,CAAC,CAAD,CAAV,EAAiBC,aAAjC,CACA,GAAIxK,IAAG,CAAGuK,UAAU,CAAC,EAAD,CAApB,CACA,GAAIvK,GAAJ,CAAS,CACP,GAAIpB,OAAO,CAAC+K,UAAZ,CAAwB,CACtB3J,GAAG,CAAGA,GAAG,CAACoH,IAAJ,EAAN,CACD,CACDpH,GAAG,CAAGpB,OAAO,CAACL,iBAAR,CAA0ByB,GAA1B,CAA+BmH,OAA/B,CAAN,CACAnH,GAAG,CAAGyK,UAAU,CAACzK,GAAD,CAAMpB,OAAO,CAAC6K,cAAd,CAA8B7K,OAAO,CAAC8L,mBAAtC,CAAhB,CACD,CAED,MAAO1K,IAAP,CACD,CAED,QAASkK,gBAAT,CAAyBjE,KAAzB,CAAgC,CAC9B,GAAIA,KAAK,CAAC,CAAD,CAAL,GAAa,KAAjB,CAAwB,CACtB,MAAO6C,QAAO,CAACI,KAAf,CACD,CAFD,IAEO,IAAIjD,KAAK,CAAC,EAAD,CAAL,GAAc,GAAlB,CAAuB,CAC5B,MAAO6C,QAAO,CAACE,OAAf,CACD,CAFM,IAEA,IAAI,MAAO/C,MAAK,CAAC,CAAD,CAAZ,GAAoB,WAApB,EAAmCA,KAAK,CAAC,CAAD,CAAL,CAAStE,MAAT,CAAgBsE,KAAK,CAAC,CAAD,CAAL,CAASlH,MAAT,CAAkB,CAAlC,IAAyC,GAAhF,CAAqF,CAC1F,MAAO+J,QAAO,CAACG,IAAf,CACD,CAFM,IAEA,CACL,MAAOH,QAAO,CAACC,OAAf,CACD,CACF,CAED,QAAS4B,iBAAT,CAA0BpG,OAA1B,CAAmC3F,OAAnC,CAA4C,CAC1C,GAAIA,OAAO,CAAC4K,eAAZ,CAA6B,CAC3B,GAAM7C,KAAI,CAAGpC,OAAO,CAACqG,KAAR,CAAc,GAAd,CAAb,CACA,GAAMC,OAAM,CAAGtG,OAAO,CAACuG,MAAR,CAAe,CAAf,IAAsB,GAAtB,CAA4B,GAA5B,CAAkC,EAAjD,CACA,GAAInE,IAAI,CAAC,CAAD,CAAJ,GAAY,OAAhB,CAAyB,CACvB,MAAO,EAAP,CACD,CACD,GAAIA,IAAI,CAAC5H,MAAL,GAAgB,CAApB,CAAuB,CACrBwF,OAAO,CAAGsG,MAAM,CAAGlE,IAAI,CAAC,CAAD,CAAvB,CACD,CACF,CACD,MAAOpC,QAAP,CACD,CAED,QAASkG,WAAT,CAAoBzK,GAApB,CAAyB+K,WAAzB,CAAsCL,mBAAtC,CAA2D,CACzD,GAAIK,WAAW,EAAI,MAAO/K,IAAP,GAAe,QAAlC,CAA4C,CAC1C,GAAIgL,OAAJ,CACA,GAAIhL,GAAG,CAACoH,IAAJ,KAAe,EAAf,EAAqBvC,KAAK,CAAC7E,GAAD,CAA9B,CAAqC,CACnCgL,MAAM,CAAGhL,GAAG,GAAK,MAAR,CAAiB,IAAjB,CAAwBA,GAAG,GAAK,OAAR,CAAkB,KAAlB,CAA0BA,GAA3D,CACD,CAFD,IAEO,CACL,GAAIA,GAAG,CAAC6D,OAAJ,CAAY,IAAZ,IAAsB,CAAC,CAA3B,CAA8B,CAC5B;AACAmH,MAAM,CAAG5B,MAAM,CAACC,QAAP,CAAgBrJ,GAAhB,CAAqB,EAArB,CAAT,CACD,CAHD,IAGO,IAAIA,GAAG,CAAC6D,OAAJ,CAAY,GAAZ,IAAqB,CAAC,CAA1B,CAA6B,CAClCmH,MAAM,CAAG5B,MAAM,CAACG,UAAP,CAAkBvJ,GAAlB,CAAT,CACD,CAFM,IAEA,CACLgL,MAAM,CAAG5B,MAAM,CAACC,QAAP,CAAgBrJ,GAAhB,CAAqB,EAArB,CAAT,CACD,CACD,GAAI0K,mBAAJ,CAAyB,CACvBM,MAAM,CAAGjJ,MAAM,CAACiJ,MAAD,CAAN,GAAmBhL,GAAnB,CAAyBgL,MAAzB,CAAkChL,GAA3C,CACD,CACF,CACD,MAAOgL,OAAP,CACD,CAlBD,IAkBO,CACL,GAAIhH,IAAI,CAACG,OAAL,CAAanE,GAAb,CAAJ,CAAuB,CACrB,MAAOA,IAAP,CACD,CAFD,IAEO,CACL,MAAO,EAAP,CACD,CACF,CACF,CAED;AACA;AACA,GAAMiL,UAAS,CAAG,GAAInE,OAAJ,CAAW,uCAAX,CAAoD,GAApD,CAAlB,CAEA,QAASwD,mBAAT,CAA4BpK,OAA5B,CAAqCtB,OAArC,CAA8C,CAC5C,GAAI,CAACA,OAAO,CAACX,gBAAT,EAA6B,MAAOiC,QAAP,GAAmB,QAApD,CAA8D,CAC5DA,OAAO,CAAGA,OAAO,CAACkB,OAAR,CAAgB,QAAhB,CAA0B,GAA1B,CAAV,CACA;AAEA,GAAM4E,QAAO,CAAGhC,IAAI,CAAC6B,aAAL,CAAmB3F,OAAnB,CAA4B+K,SAA5B,CAAhB,CACA,GAAM5K,IAAG,CAAG2F,OAAO,CAACjH,MAApB,CAA4B;AAC5B,GAAMmM,MAAK,CAAG,EAAd,CACA,IAAK,GAAI5K,EAAC,CAAG,CAAb,CAAgBA,CAAC,CAAGD,GAApB,CAAyBC,CAAC,EAA1B,CAA8B,CAC5B,GAAMkI,SAAQ,CAAGmC,gBAAgB,CAAC3E,OAAO,CAAC1F,CAAD,CAAP,CAAW,CAAX,CAAD,CAAgB1B,OAAhB,CAAjC,CACA,GAAI4J,QAAQ,CAACzJ,MAAb,CAAqB,CACnB,GAAIiH,OAAO,CAAC1F,CAAD,CAAP,CAAW,CAAX,IAAkB0C,SAAtB,CAAiC,CAC/B,GAAIpE,OAAO,CAAC+K,UAAZ,CAAwB,CACtB3D,OAAO,CAAC1F,CAAD,CAAP,CAAW,CAAX,EAAgB0F,OAAO,CAAC1F,CAAD,CAAP,CAAW,CAAX,EAAc8G,IAAd,EAAhB,CACD,CACDpB,OAAO,CAAC1F,CAAD,CAAP,CAAW,CAAX,EAAgB1B,OAAO,CAACH,kBAAR,CAA2BuH,OAAO,CAAC1F,CAAD,CAAP,CAAW,CAAX,CAA3B,CAA0CkI,QAA1C,CAAhB,CACA0C,KAAK,CAACtM,OAAO,CAACd,mBAAR,CAA8B0K,QAA/B,CAAL,CAAgDiC,UAAU,CACxDzE,OAAO,CAAC1F,CAAD,CAAP,CAAW,CAAX,CADwD,CAExD1B,OAAO,CAAC8K,mBAFgD,CAGxD9K,OAAO,CAAC8L,mBAHgD,CAA1D,CAKD,CAVD,IAUO,IAAI9L,OAAO,CAAC6H,sBAAZ,CAAoC,CACzCyE,KAAK,CAACtM,OAAO,CAACd,mBAAR,CAA8B0K,QAA/B,CAAL,CAAgD,IAAhD,CACD,CACF,CACF,CACD,GAAI,CAACpI,MAAM,CAACD,IAAP,CAAY+K,KAAZ,EAAmBnM,MAAxB,CAAgC,CAC9B,OACD,CACD,GAAIH,OAAO,CAACb,YAAZ,CAA0B,CACxB,GAAMoN,eAAc,CAAG,EAAvB,CACAA,cAAc,CAACvM,OAAO,CAACb,YAAT,CAAd,CAAuCmN,KAAvC,CACA,MAAOC,eAAP,CACD,CACD,MAAOD,MAAP,CACD,CACF,CAEDrJ,OAAO,CAAC2D,eAAR,CAA0BA,eAA1B,C","file":"./lib/parser.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/parser.js\");\n","'use strict';\n//parse Empty Node as self closing node\nconst buildOptions = require('./util').buildOptions;\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attrNodeName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataTagName: false,\n cdataPositionChar: '\\\\c',\n format: false,\n indentBy: ' ',\n supressEmptyNode: false,\n tagValueProcessor: function(a) {\n return a;\n },\n attrValueProcessor: function(a) {\n return a;\n },\n};\n\nconst props = [\n 'attributeNamePrefix',\n 'attrNodeName',\n 'textNodeName',\n 'ignoreAttributes',\n 'cdataTagName',\n 'cdataPositionChar',\n 'format',\n 'indentBy',\n 'supressEmptyNode',\n 'tagValueProcessor',\n 'attrValueProcessor',\n];\n\nfunction Parser(options) {\n this.options = buildOptions(options, defaultOptions, props);\n if (this.options.ignoreAttributes || this.options.attrNodeName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n if (this.options.cdataTagName) {\n this.isCDATA = isCDATA;\n } else {\n this.isCDATA = function(/*a*/) {\n return false;\n };\n }\n this.replaceCDATAstr = replaceCDATAstr;\n this.replaceCDATAarr = replaceCDATAarr;\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n\n if (this.options.supressEmptyNode) {\n this.buildTextNode = buildEmptyTextNode;\n this.buildObjNode = buildEmptyObjNode;\n } else {\n this.buildTextNode = buildTextValNode;\n this.buildObjNode = buildObjectNode;\n }\n\n this.buildTextValNode = buildTextValNode;\n this.buildObjectNode = buildObjectNode;\n}\n\nParser.prototype.parse = function(jObj) {\n return this.j2x(jObj, 0).val;\n};\n\nParser.prototype.j2x = function(jObj, level) {\n let attrStr = '';\n let val = '';\n const keys = Object.keys(jObj);\n const len = keys.length;\n for (let i = 0; i < len; i++) {\n const key = keys[i];\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node\n } else if (jObj[key] === null) {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr) {\n attrStr += ' ' + attr + '=\"' + this.options.attrValueProcessor('' + jObj[key]) + '\"';\n } else if (this.isCDATA(key)) {\n if (jObj[this.options.textNodeName]) {\n val += this.replaceCDATAstr(jObj[this.options.textNodeName], jObj[key]);\n } else {\n val += this.replaceCDATAstr('', jObj[key]);\n }\n } else {\n //tag value\n if (key === this.options.textNodeName) {\n if (jObj[this.options.cdataTagName]) {\n //value will added while processing cdata\n } else {\n val += this.options.tagValueProcessor('' + jObj[key]);\n }\n } else {\n val += this.buildTextNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n if (this.isCDATA(key)) {\n val += this.indentate(level);\n if (jObj[this.options.textNodeName]) {\n val += this.replaceCDATAarr(jObj[this.options.textNodeName], jObj[key]);\n } else {\n val += this.replaceCDATAarr('', jObj[key]);\n }\n } else {\n //nested nodes\n const arrLen = jObj[key].length;\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n const result = this.j2x(item, level + 1);\n val += this.buildObjNode(result.val, key, result.attrStr, level);\n } else {\n val += this.buildTextNode(item, key, '', level);\n }\n }\n }\n } else {\n //nested node\n if (this.options.attrNodeName && key === this.options.attrNodeName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += ' ' + Ks[j] + '=\"' + this.options.attrValueProcessor('' + jObj[key][Ks[j]]) + '\"';\n }\n } else {\n const result = this.j2x(jObj[key], level + 1);\n val += this.buildObjNode(result.val, key, result.attrStr, level);\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nfunction replaceCDATAstr(str, cdata) {\n str = this.options.tagValueProcessor('' + str);\n if (this.options.cdataPositionChar === '' || str === '') {\n return str + '');\n }\n return str + this.newLine;\n }\n}\n\nfunction buildObjectNode(val, key, attrStr, level) {\n if (attrStr && !val.includes('<')) {\n return (\n this.indentate(level) +\n '<' +\n key +\n attrStr +\n '>' +\n val +\n //+ this.newLine\n // + this.indentate(level)\n '' +\n this.options.tagValueProcessor(val) +\n ' 1) {\n jObj[tagname] = [];\n for (var tag in node.child[tagname]) {\n jObj[tagname].push(convertToJson(node.child[tagname][tag], options));\n }\n } else {\n if(options.arrayMode === true){\n const result = convertToJson(node.child[tagname][0], options)\n if(typeof result === 'object')\n jObj[tagname] = [ result ];\n else\n jObj[tagname] = result;\n }else if(options.arrayMode === \"strict\"){\n jObj[tagname] = [convertToJson(node.child[tagname][0], options) ];\n }else{\n jObj[tagname] = convertToJson(node.child[tagname][0], options);\n }\n }\n }\n\n //add value\n return jObj;\n};\n\nexports.convertToJson = convertToJson;\n","'use strict';\n\nconst util = require('./util');\nconst buildOptions = require('./util').buildOptions;\nconst x2j = require('./xmlstr2xmlnode');\n\n//TODO: do it later\nconst convertToJsonString = function(node, options) {\n options = buildOptions(options, x2j.defaultOptions, x2j.props);\n\n options.indentBy = options.indentBy || '';\n return _cToJsonStr(node, options, 0);\n};\n\nconst _cToJsonStr = function(node, options, level) {\n let jObj = '{';\n\n //traver through all the children\n const keys = Object.keys(node.child);\n\n for (let index = 0; index < keys.length; index++) {\n var tagname = keys[index];\n if (node.child[tagname] && node.child[tagname].length > 1) {\n jObj += '\"' + tagname + '\" : [ ';\n for (var tag in node.child[tagname]) {\n jObj += _cToJsonStr(node.child[tagname][tag], options) + ' , ';\n }\n jObj = jObj.substr(0, jObj.length - 1) + ' ] '; //remove extra comma in last\n } else {\n jObj += '\"' + tagname + '\" : ' + _cToJsonStr(node.child[tagname][0], options) + ' ,';\n }\n }\n util.merge(jObj, node.attrsMap);\n //add attrsMap as new children\n if (util.isEmptyObject(jObj)) {\n return util.isExist(node.val) ? node.val : '';\n } else {\n if (util.isExist(node.val)) {\n if (!(typeof node.val === 'string' && (node.val === '' || node.val === options.cdataPositionChar))) {\n jObj += '\"' + options.textNodeName + '\" : ' + stringval(node.val);\n }\n }\n }\n //add value\n if (jObj[jObj.length - 1] === ',') {\n jObj = jObj.substr(0, jObj.length - 2);\n }\n return jObj + '}';\n};\n\nfunction stringval(v) {\n if (v === true || v === false || !isNaN(v)) {\n return v;\n } else {\n return '\"' + v + '\"';\n }\n}\n\nfunction indentate(options, level) {\n return options.indentBy.repeat(level);\n}\n\nexports.convertToJsonString = convertToJsonString;\n","'use strict';\n\nconst nodeToJson = require('./node2json');\nconst xmlToNodeobj = require('./xmlstr2xmlnode');\nconst x2xmlnode = require('./xmlstr2xmlnode');\nconst buildOptions = require('./util').buildOptions;\nconst validator = require('./validator');\n\nexports.parse = function(xmlData, options, validationOption) {\n if( validationOption){\n if(validationOption === true) validationOption = {}\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( result.err.msg)\n }\n }\n options = buildOptions(options, x2xmlnode.defaultOptions, x2xmlnode.props);\n return nodeToJson.convertToJson(xmlToNodeobj.getTraversalObj(xmlData, options), options);\n};\nexports.convertTonimn = require('../src/nimndata').convert2nimn;\nexports.getTraversalObj = xmlToNodeobj.getTraversalObj;\nexports.convertToJson = nodeToJson.convertToJson;\nexports.convertToJsonString = require('./node2json_str').convertToJsonString;\nexports.validate = validator.validate;\nexports.j2xParser = require('./json2xml');\nexports.parseToNimn = function(xmlData, schema, options) {\n return exports.convertTonimn(exports.getTraversalObj(xmlData, options), schema, options);\n};\n","'use strict';\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst doesMatch = function(string, regex) {\n const match = regex.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nconst doesNotMatch = function(string, regex) {\n return !doesMatch(string, regex);\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if(arrayMode === 'strict'){\n target[keys[i]] = [ a[keys[i]] ];\n }else{\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.buildOptions = function(options, defaultOptions, props) {\n var newOptions = {};\n if (!options) {\n return defaultOptions; //if there are not options\n }\n\n for (let i = 0; i < props.length; i++) {\n if (options[props[i]] !== undefined) {\n newOptions[props[i]] = options[props[i]];\n } else {\n newOptions[props[i]] = defaultOptions[props[i]];\n }\n }\n return newOptions;\n};\n\nexports.doesMatch = doesMatch;\nexports.doesNotMatch = doesNotMatch;\nexports.getAllMatches = getAllMatches;\n","'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n localeRange: 'a-zA-Z',\n};\n\nconst props = ['allowBooleanAttributes', 'localeRange'];\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function(xmlData, options) {\n options = util.buildOptions(options, defaultOptions, props);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n\n const tags = [];\n let tagFound = false;\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n const regxAttrName = new RegExp('^[_w][\\\\w\\\\-.:]*$'.replace('_w', '_' + options.localeRange));\n const regxTagName = new RegExp('^([w]|_)[\\\\w.\\\\-_:]*'.replace('([w', '([' + options.localeRange));\n for (let i = 0; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n\n i++;\n if (xmlData[i] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) {\n return i;\n }\n } else if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (\n ;\n i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r';\n i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n continue;\n }\n if (!validateTagName(tagName, regxTagName)) {\n return {err: {code: 'InvalidTag', msg: 'Tag ' + tagName + ' is an invalid name.'}};\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return {err: {code: 'InvalidAttr', msg: 'Attributes for \"' + tagName + '\" have open quote.'}};\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options, regxAttrName);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n return isValid;\n }\n } else if (closingTag) {\n if(!result.tagClosed){\n return {\n err: {code: 'InvalidTag', msg: 'closing tag \"' + tagName + \"\\\" don't have proper closing.\"},\n };\n }else if (attrStr.trim().length > 0) {\n return {\n err: {code: 'InvalidTag', msg: 'closing tag \"' + tagName + \"\\\" can't have attributes or invalid starting.\"},\n };\n } else {\n const otg = tags.pop();\n if (tagName !== otg) {\n return {\n err: {code: 'InvalidTag', msg: 'closing tag ' + otg + ' is expected inplace of ' + tagName + '.'},\n };\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options, regxAttrName);\n if (isValid !== true) {\n return isValid;\n }\n tags.push(tagName);\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n break;\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if (xmlData[i] === ' ' || xmlData[i] === '\\t' || xmlData[i] === '\\n' || xmlData[i] === '\\r') {\n continue;\n }\n return {err: {code: 'InvalidChar', msg: 'char ' + xmlData[i] + ' is not expected .'}};\n }\n }\n\n if (!tagFound) {\n return {err: {code: 'InvalidXml', msg: 'Start tag expected.'}};\n } else if (tags.length > 0) {\n return {\n err: {code: 'InvalidXml', msg: 'Invalid ' + JSON.stringify(tags, null, 4).replace(/\\r?\\n/g, '') + ' found.'},\n };\n }\n\n return true;\n};\n\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n var start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n var tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return {err: {code: 'InvalidXml', msg: 'XML declaration allowed only at the start of the document.'}};\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nvar doubleQuote = '\"';\nvar singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n continue;\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {value: attrStr, index: i, tagClosed: tagClosed};\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options, regxAttrName) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n //console.log(matches[i]);\n\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return {err: {code: 'InvalidAttr', msg: 'attribute ' + matches[i][2] + ' has no space in starting.'}};\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return {err: {code: 'InvalidAttr', msg: 'boolean attribute ' + matches[i][2] + ' is not allowed.'}};\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName, regxAttrName)) {\n return {err: {code: 'InvalidAttr', msg: 'attribute ' + attrName + ' is an invalid name.'}};\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return {err: {code: 'InvalidAttr', msg: 'attribute ' + attrName + ' is repeated.'}};\n }\n }\n\n return true;\n}\n\n// const validAttrRegxp = /^[_a-zA-Z][\\w\\-.:]*$/;\n\nfunction validateAttrName(attrName, regxAttrName) {\n // const validAttrRegxp = new RegExp(regxAttrName);\n return util.doesMatch(attrName, regxAttrName);\n}\n\n//const startsWithXML = new RegExp(\"^[Xx][Mm][Ll]\");\n// startsWith = /^([a-zA-Z]|_)[\\w.\\-_:]*/;\n\nfunction validateTagName(tagname, regxTagName) {\n /*if(util.doesMatch(tagname,startsWithXML)) return false;\n else*/\n return !util.doesNotMatch(tagname, regxTagName);\n}\n","'use strict';\n\nmodule.exports = function(tagname, parent, val) {\n this.tagname = tagname;\n this.parent = parent;\n this.child = {}; //child tags\n this.attrsMap = {}; //attributes map\n this.val = val; //text only\n this.addChild = function(child) {\n if (Array.isArray(this.child[child.tagname])) {\n //already presents\n this.child[child.tagname].push(child);\n } else {\n this.child[child.tagname] = [child];\n }\n };\n};\n","'use strict';\n\nconst util = require('./util');\nconst buildOptions = require('./util').buildOptions;\nconst xmlNode = require('./xmlNode');\nconst TagType = {OPENING: 1, CLOSING: 2, SELF: 3, CDATA: 4};\nlet regx =\n '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|(([\\\\w:\\\\-._]*:)?([\\\\w:\\\\-._]+))([^>]*)>|((\\\\/)(([\\\\w:\\\\-._]*:)?([\\\\w:\\\\-._]+))\\\\s*>))([^<]*)';\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attrNodeName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n ignoreNameSpace: false,\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseNodeValue: true,\n parseAttributeValue: false,\n arrayMode: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataTagName: false,\n cdataPositionChar: '\\\\c',\n localeRange: '',\n tagValueProcessor: function(a, tagName) {\n return a;\n },\n attrValueProcessor: function(a, attrName) {\n return a;\n },\n stopNodes: []\n //decodeStrict: false,\n};\n\nexports.defaultOptions = defaultOptions;\n\nconst props = [\n 'attributeNamePrefix',\n 'attrNodeName',\n 'textNodeName',\n 'ignoreAttributes',\n 'ignoreNameSpace',\n 'allowBooleanAttributes',\n 'parseNodeValue',\n 'parseAttributeValue',\n 'arrayMode',\n 'trimValues',\n 'cdataTagName',\n 'cdataPositionChar',\n 'localeRange',\n 'tagValueProcessor',\n 'attrValueProcessor',\n 'parseTrueNumberOnly',\n 'stopNodes'\n];\nexports.props = props;\n\nconst getTraversalObj = function(xmlData, options) {\n options = buildOptions(options, defaultOptions, props);\n //xmlData = xmlData.replace(/\\r?\\n/g, \" \");//make it single line\n xmlData = xmlData.replace(//g, ''); //Remove comments\n\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n\n regx = regx.replace(/\\[\\\\w/g, '[' + options.localeRange + '\\\\w');\n const tagsRegx = new RegExp(regx, 'g');\n let tag = tagsRegx.exec(xmlData);\n let nextTag = tagsRegx.exec(xmlData);\n while (tag) {\n const tagType = checkForTagType(tag);\n\n if (tagType === TagType.CLOSING) {\n //add parsed data to parent node\n if (currentNode.parent && tag[14]) {\n currentNode.parent.val = util.getValue(currentNode.parent.val) + '' + processTagValue(tag, options, currentNode.parent.tagname);\n }\n if (options.stopNodes.length && options.stopNodes.includes(currentNode.tagname)) {\n currentNode.child = []\n if (currentNode.attrsMap == undefined) { currentNode.attrsMap = {}}\n currentNode.val = xmlData.substr(currentNode.startIndex + 1, tag.index - currentNode.startIndex - 1)\n }\n currentNode = currentNode.parent;\n } else if (tagType === TagType.CDATA) {\n if (options.cdataTagName) {\n //add cdata node\n const childNode = new xmlNode(options.cdataTagName, currentNode, tag[3]);\n childNode.attrsMap = buildAttributesMap(tag[8], options);\n currentNode.addChild(childNode);\n //for backtracking\n currentNode.val = util.getValue(currentNode.val) + options.cdataPositionChar;\n //add rest value to parent node\n if (tag[14]) {\n currentNode.val += processTagValue(tag, options);\n }\n } else {\n currentNode.val = (currentNode.val || '') + (tag[3] || '') + processTagValue(tag, options);\n }\n } else if (tagType === TagType.SELF) {\n if (currentNode && tag[14]) {\n currentNode.val = util.getValue(currentNode.val) + '' + processTagValue(tag, options);\n }\n\n const childNode = new xmlNode(options.ignoreNameSpace ? tag[7] : tag[5], currentNode, '');\n if (tag[8] && tag[8].length > 0) {\n tag[8] = tag[8].substr(0, tag[8].length - 1);\n }\n childNode.attrsMap = buildAttributesMap(tag[8], options);\n currentNode.addChild(childNode);\n } else {\n //TagType.OPENING\n const childNode = new xmlNode(\n options.ignoreNameSpace ? tag[7] : tag[5],\n currentNode,\n processTagValue(tag, options)\n );\n if (options.stopNodes.length && options.stopNodes.includes(childNode.tagname)) {\n childNode.startIndex=tag.index + tag[1].length\n }\n childNode.attrsMap = buildAttributesMap(tag[8], options);\n currentNode.addChild(childNode);\n currentNode = childNode;\n }\n\n tag = nextTag;\n nextTag = tagsRegx.exec(xmlData);\n }\n\n return xmlObj;\n};\n\nfunction processTagValue(parsedTags, options, parentTagName) {\n const tagName = parsedTags[7] || parentTagName;\n let val = parsedTags[14];\n if (val) {\n if (options.trimValues) {\n val = val.trim();\n }\n val = options.tagValueProcessor(val, tagName);\n val = parseValue(val, options.parseNodeValue, options.parseTrueNumberOnly);\n }\n\n return val;\n}\n\nfunction checkForTagType(match) {\n if (match[4] === ']]>') {\n return TagType.CDATA;\n } else if (match[10] === '/') {\n return TagType.CLOSING;\n } else if (typeof match[8] !== 'undefined' && match[8].substr(match[8].length - 1) === '/') {\n return TagType.SELF;\n } else {\n return TagType.OPENING;\n }\n}\n\nfunction resolveNameSpace(tagname, options) {\n if (options.ignoreNameSpace) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\nfunction parseValue(val, shouldParse, parseTrueNumberOnly) {\n if (shouldParse && typeof val === 'string') {\n let parsed;\n if (val.trim() === '' || isNaN(val)) {\n parsed = val === 'true' ? true : val === 'false' ? false : val;\n } else {\n if (val.indexOf('0x') !== -1) {\n //support hexa decimal\n parsed = Number.parseInt(val, 16);\n } else if (val.indexOf('.') !== -1) {\n parsed = Number.parseFloat(val);\n } else {\n parsed = Number.parseInt(val, 10);\n }\n if (parseTrueNumberOnly) {\n parsed = String(parsed) === val ? parsed : val;\n }\n }\n return parsed;\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])(.*?)\\\\3)?', 'g');\n\nfunction buildAttributesMap(attrStr, options) {\n if (!options.ignoreAttributes && typeof attrStr === 'string') {\n attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = resolveNameSpace(matches[i][1], options);\n if (attrName.length) {\n if (matches[i][4] !== undefined) {\n if (options.trimValues) {\n matches[i][4] = matches[i][4].trim();\n }\n matches[i][4] = options.attrValueProcessor(matches[i][4], attrName);\n attrs[options.attributeNamePrefix + attrName] = parseValue(\n matches[i][4],\n options.parseAttributeValue,\n options.parseTrueNumberOnly\n );\n } else if (options.allowBooleanAttributes) {\n attrs[options.attributeNamePrefix + attrName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (options.attrNodeName) {\n const attrCollection = {};\n attrCollection[options.attrNodeName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n}\n\nexports.getTraversalObj = getTraversalObj;\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://parser/webpack/bootstrap","webpack://parser/./src/json2xml.js","webpack://parser/./src/nimndata.js","webpack://parser/./src/node2json.js","webpack://parser/./src/node2json_str.js","webpack://parser/./src/parser.js","webpack://parser/./src/util.js","webpack://parser/./src/validator.js","webpack://parser/./src/xmlNode.js","webpack://parser/./src/xmlstr2xmlnode.js"],"names":["buildOptions","require","defaultOptions","attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","cdataTagName","cdataPositionChar","format","indentBy","supressEmptyNode","tagValueProcessor","a","attrValueProcessor","props","Parser","options","isAttribute","attrPrefixLen","length","isCDATA","replaceCDATAstr","replaceCDATAarr","indentate","tagEndChar","newLine","buildTextNode","buildEmptyTextNode","buildObjNode","buildEmptyObjNode","buildTextValNode","buildObjectNode","prototype","parse","jObj","j2x","val","level","attrStr","keys","Object","len","i","key","Date","attr","Array","isArray","arrLen","j","item","result","Ks","L","str","cdata","replace","join","v","includes","repeat","name","startsWith","substr","module","exports","char","String","fromCharCode","chars","nilChar","missingChar","nilPremitive","missingPremitive","emptyChar","emptyValue","boundryChar","objStart","arrStart","arrayEnd","charsArr","_e","node","e_schema","undefined","getValue","hasValidData","hasData","itemSchema","arr_len","arr_i","r","processValue","attrsMap","child","isAppChar","ch","indexOf","x2j","convert2nimn","util","convertToJson","isEmptyObject","isExist","arrayMode","merge","index","tagname","tag","push","convertToJsonString","_cToJsonStr","stringval","isNaN","nodeToJson","xmlToNodeobj","x2xmlnode","validator","xmlData","validationOption","validate","Error","err","msg","getTraversalObj","convertTonimn","j2xParser","parseToNimn","schema","getAllMatches","string","regex","matches","match","exec","allmatches","doesMatch","doesNotMatch","obj","target","newOptions","allowBooleanAttributes","localeRange","localRangeRegex","RegExp","test","getErrorObject","tags","tagFound","regxAttrName","regxTagName","readPI","readCommentAndCDATA","closingTag","tagName","trim","substring","validateTagName","getLineNumberForPosition","readAttributeStr","value","isValid","validateAttributeString","code","line","tagClosed","otg","pop","JSON","stringify","start","angleBracketsCount","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","attrName","validateAttrName","hasOwnProperty","message","lineNumber","lines","split","parent","addChild","xmlNode","TagType","OPENING","CLOSING","SELF","CDATA","regx","Number","parseInt","window","parseFloat","ignoreNameSpace","parseNodeValue","parseAttributeValue","trimValues","stopNodes","xmlObj","currentNode","tagsRegx","nextTag","tagType","checkForTagType","processTagValue","startIndex","childNode","buildAttributesMap","parsedTags","parentTagName","parseValue","parseTrueNumberOnly","resolveNameSpace","prefix","charAt","shouldParse","parsed","attrsRegx","attrs","attrCollection"],"mappings":"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","file":"./lib/parser.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/parser.js\");\n","'use strict';\n//parse Empty Node as self closing node\nconst buildOptions = require('./util').buildOptions;\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attrNodeName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataTagName: false,\n cdataPositionChar: '\\\\c',\n format: false,\n indentBy: ' ',\n supressEmptyNode: false,\n tagValueProcessor: function(a) {\n return a;\n },\n attrValueProcessor: function(a) {\n return a;\n },\n};\n\nconst props = [\n 'attributeNamePrefix',\n 'attrNodeName',\n 'textNodeName',\n 'ignoreAttributes',\n 'cdataTagName',\n 'cdataPositionChar',\n 'format',\n 'indentBy',\n 'supressEmptyNode',\n 'tagValueProcessor',\n 'attrValueProcessor',\n];\n\nfunction Parser(options) {\n this.options = buildOptions(options, defaultOptions, props);\n if (this.options.ignoreAttributes || this.options.attrNodeName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n if (this.options.cdataTagName) {\n this.isCDATA = isCDATA;\n } else {\n this.isCDATA = function(/*a*/) {\n return false;\n };\n }\n this.replaceCDATAstr = replaceCDATAstr;\n this.replaceCDATAarr = replaceCDATAarr;\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n\n if (this.options.supressEmptyNode) {\n this.buildTextNode = buildEmptyTextNode;\n this.buildObjNode = buildEmptyObjNode;\n } else {\n this.buildTextNode = buildTextValNode;\n this.buildObjNode = buildObjectNode;\n }\n\n this.buildTextValNode = buildTextValNode;\n this.buildObjectNode = buildObjectNode;\n}\n\nParser.prototype.parse = function(jObj) {\n return this.j2x(jObj, 0).val;\n};\n\nParser.prototype.j2x = function(jObj, level) {\n let attrStr = '';\n let val = '';\n const keys = Object.keys(jObj);\n const len = keys.length;\n for (let i = 0; i < len; i++) {\n const key = keys[i];\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node\n } else if (jObj[key] === null) {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr) {\n attrStr += ' ' + attr + '=\"' + this.options.attrValueProcessor('' + jObj[key]) + '\"';\n } else if (this.isCDATA(key)) {\n if (jObj[this.options.textNodeName]) {\n val += this.replaceCDATAstr(jObj[this.options.textNodeName], jObj[key]);\n } else {\n val += this.replaceCDATAstr('', jObj[key]);\n }\n } else {\n //tag value\n if (key === this.options.textNodeName) {\n if (jObj[this.options.cdataTagName]) {\n //value will added while processing cdata\n } else {\n val += this.options.tagValueProcessor('' + jObj[key]);\n }\n } else {\n val += this.buildTextNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n if (this.isCDATA(key)) {\n val += this.indentate(level);\n if (jObj[this.options.textNodeName]) {\n val += this.replaceCDATAarr(jObj[this.options.textNodeName], jObj[key]);\n } else {\n val += this.replaceCDATAarr('', jObj[key]);\n }\n } else {\n //nested nodes\n const arrLen = jObj[key].length;\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n const result = this.j2x(item, level + 1);\n val += this.buildObjNode(result.val, key, result.attrStr, level);\n } else {\n val += this.buildTextNode(item, key, '', level);\n }\n }\n }\n } else {\n //nested node\n if (this.options.attrNodeName && key === this.options.attrNodeName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += ' ' + Ks[j] + '=\"' + this.options.attrValueProcessor('' + jObj[key][Ks[j]]) + '\"';\n }\n } else {\n const result = this.j2x(jObj[key], level + 1);\n val += this.buildObjNode(result.val, key, result.attrStr, level);\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nfunction replaceCDATAstr(str, cdata) {\n str = this.options.tagValueProcessor('' + str);\n if (this.options.cdataPositionChar === '' || str === '') {\n return str + '');\n }\n return str + this.newLine;\n }\n}\n\nfunction buildObjectNode(val, key, attrStr, level) {\n if (attrStr && !val.includes('<')) {\n return (\n this.indentate(level) +\n '<' +\n key +\n attrStr +\n '>' +\n val +\n //+ this.newLine\n // + this.indentate(level)\n '' +\n this.options.tagValueProcessor(val) +\n ' 1) {\n jObj[tagname] = [];\n for (var tag in node.child[tagname]) {\n jObj[tagname].push(convertToJson(node.child[tagname][tag], options));\n }\n } else {\n if(options.arrayMode === true){\n const result = convertToJson(node.child[tagname][0], options)\n if(typeof result === 'object')\n jObj[tagname] = [ result ];\n else\n jObj[tagname] = result;\n }else if(options.arrayMode === \"strict\"){\n jObj[tagname] = [convertToJson(node.child[tagname][0], options) ];\n }else{\n jObj[tagname] = convertToJson(node.child[tagname][0], options);\n }\n }\n }\n\n //add value\n return jObj;\n};\n\nexports.convertToJson = convertToJson;\n","'use strict';\n\nconst util = require('./util');\nconst buildOptions = require('./util').buildOptions;\nconst x2j = require('./xmlstr2xmlnode');\n\n//TODO: do it later\nconst convertToJsonString = function(node, options) {\n options = buildOptions(options, x2j.defaultOptions, x2j.props);\n\n options.indentBy = options.indentBy || '';\n return _cToJsonStr(node, options, 0);\n};\n\nconst _cToJsonStr = function(node, options, level) {\n let jObj = '{';\n\n //traver through all the children\n const keys = Object.keys(node.child);\n\n for (let index = 0; index < keys.length; index++) {\n var tagname = keys[index];\n if (node.child[tagname] && node.child[tagname].length > 1) {\n jObj += '\"' + tagname + '\" : [ ';\n for (var tag in node.child[tagname]) {\n jObj += _cToJsonStr(node.child[tagname][tag], options) + ' , ';\n }\n jObj = jObj.substr(0, jObj.length - 1) + ' ] '; //remove extra comma in last\n } else {\n jObj += '\"' + tagname + '\" : ' + _cToJsonStr(node.child[tagname][0], options) + ' ,';\n }\n }\n util.merge(jObj, node.attrsMap);\n //add attrsMap as new children\n if (util.isEmptyObject(jObj)) {\n return util.isExist(node.val) ? node.val : '';\n } else {\n if (util.isExist(node.val)) {\n if (!(typeof node.val === 'string' && (node.val === '' || node.val === options.cdataPositionChar))) {\n jObj += '\"' + options.textNodeName + '\" : ' + stringval(node.val);\n }\n }\n }\n //add value\n if (jObj[jObj.length - 1] === ',') {\n jObj = jObj.substr(0, jObj.length - 2);\n }\n return jObj + '}';\n};\n\nfunction stringval(v) {\n if (v === true || v === false || !isNaN(v)) {\n return v;\n } else {\n return '\"' + v + '\"';\n }\n}\n\nfunction indentate(options, level) {\n return options.indentBy.repeat(level);\n}\n\nexports.convertToJsonString = convertToJsonString;\n","'use strict';\n\nconst nodeToJson = require('./node2json');\nconst xmlToNodeobj = require('./xmlstr2xmlnode');\nconst x2xmlnode = require('./xmlstr2xmlnode');\nconst buildOptions = require('./util').buildOptions;\nconst validator = require('./validator');\n\nexports.parse = function(xmlData, options, validationOption) {\n if( validationOption){\n if(validationOption === true) validationOption = {}\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( result.err.msg)\n }\n }\n options = buildOptions(options, x2xmlnode.defaultOptions, x2xmlnode.props);\n return nodeToJson.convertToJson(xmlToNodeobj.getTraversalObj(xmlData, options), options);\n};\nexports.convertTonimn = require('../src/nimndata').convert2nimn;\nexports.getTraversalObj = xmlToNodeobj.getTraversalObj;\nexports.convertToJson = nodeToJson.convertToJson;\nexports.convertToJsonString = require('./node2json_str').convertToJsonString;\nexports.validate = validator.validate;\nexports.j2xParser = require('./json2xml');\nexports.parseToNimn = function(xmlData, schema, options) {\n return exports.convertTonimn(exports.getTraversalObj(xmlData, options), schema, options);\n};\n","'use strict';\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst doesMatch = function(string, regex) {\n const match = regex.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nconst doesNotMatch = function(string, regex) {\n return !doesMatch(string, regex);\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if(arrayMode === 'strict'){\n target[keys[i]] = [ a[keys[i]] ];\n }else{\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.buildOptions = function(options, defaultOptions, props) {\n var newOptions = {};\n if (!options) {\n return defaultOptions; //if there are not options\n }\n\n for (let i = 0; i < props.length; i++) {\n if (options[props[i]] !== undefined) {\n newOptions[props[i]] = options[props[i]];\n } else {\n newOptions[props[i]] = defaultOptions[props[i]];\n }\n }\n return newOptions;\n};\n\nexports.doesMatch = doesMatch;\nexports.doesNotMatch = doesNotMatch;\nexports.getAllMatches = getAllMatches;\n","'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n localeRange: 'a-zA-Z',\n};\n\nconst props = ['allowBooleanAttributes', 'localeRange'];\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = util.buildOptions(options, defaultOptions, props);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const localRangeRegex = new RegExp(`[${options.localeRange}]`);\n\n if (localRangeRegex.test(\"<#$'\\\"\\\\\\/:0\")) {\n return getErrorObject('InvalidOptions', 'Invalid localeRange', 1);\n }\n\n const tags = [];\n let tagFound = false;\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n const regxAttrName = new RegExp(`^[${options.localeRange}_][${options.localeRange}0-9\\\\-\\\\.:]*$`);\n const regxTagName = new RegExp(`^([${options.localeRange}_])[${options.localeRange}0-9\\\\.\\\\-_:]*$`);\n for (let i = 0; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n\n i++;\n if (xmlData[i] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) {\n return i;\n }\n } else if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (\n ;\n i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r';\n i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName, regxTagName)) {\n let msg;\n if(tagName.trim().length === 0) {\n msg = \"There is an unnecessary space between tag name and backward slash ' 0) {\n return getErrorObject('InvalidTag', `Closing tag '${tagName}' can't have attributes or invalid starting.`, getLineNumberForPosition(xmlData, i));\n } else {\n const otg = tags.pop();\n if (tagName !== otg) {\n return getErrorObject('InvalidTag', `Closing tag '${otg}' is expected inplace of '${tagName}'.`, getLineNumberForPosition(xmlData, i));\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options, regxAttrName);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n tags.push(tagName);\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n break;\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if (xmlData[i] === ' ' || xmlData[i] === '\\t' || xmlData[i] === '\\n' || xmlData[i] === '\\r') {\n continue;\n }\n return getErrorObject('InvalidChar', `char '${xmlData[i]}' is not expected.`, getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n } else if (tags.length > 0) {\n return getErrorObject('InvalidXml', `Invalid '${JSON.stringify(tags, null, 4).replace(/\\r?\\n/g, '')}' found.`, 1);\n }\n\n return true;\n};\n\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n var start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n var tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nvar doubleQuote = '\"';\nvar singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n continue;\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return { value: attrStr, index: i, tagClosed: tagClosed };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options, regxAttrName) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', `Attribute '${matches[i][2]}' has no space in starting.`, getPositionFromMatch(attrStr, matches[i][0]))\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', `boolean attribute '${matches[i][2]}' is not allowed.`, getPositionFromMatch(attrStr, matches[i][0]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName, regxAttrName)) {\n return getErrorObject('InvalidAttr', `Attribute '${attrName}' is an invalid name.`, getPositionFromMatch(attrStr, matches[i][0]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', `Attribute '${attrName}' is repeated.`, getPositionFromMatch(attrStr, matches[i][0]));\n }\n }\n\n return true;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber,\n },\n };\n}\n\nfunction validateAttrName(attrName, regxAttrName) {\n // const validAttrRegxp = new RegExp(regxAttrName);\n return util.doesMatch(attrName, regxAttrName);\n}\n\n//const startsWithXML = new RegExp(\"^[Xx][Mm][Ll]\");\n// startsWith = /^([a-zA-Z]|_)[\\w.\\-_:]*/;\n\nfunction validateTagName(tagname, regxTagName) {\n /*if(util.doesMatch(tagname,startsWithXML)) return false;\n else*/\n //return !tagname.toLowerCase().startsWith(\"xml\") || !util.doesNotMatch(tagname, regxTagName);\n return !util.doesNotMatch(tagname, regxTagName);\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n var lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return lines.length;\n}\n\n//this function returns the position of the last character of match within attrStr\nfunction getPositionFromMatch(attrStr, match) {\n return attrStr.indexOf(match) + match.length;\n}","'use strict';\n\nmodule.exports = function(tagname, parent, val) {\n this.tagname = tagname;\n this.parent = parent;\n this.child = {}; //child tags\n this.attrsMap = {}; //attributes map\n this.val = val; //text only\n this.addChild = function(child) {\n if (Array.isArray(this.child[child.tagname])) {\n //already presents\n this.child[child.tagname].push(child);\n } else {\n this.child[child.tagname] = [child];\n }\n };\n};\n","'use strict';\n\nconst util = require('./util');\nconst buildOptions = require('./util').buildOptions;\nconst xmlNode = require('./xmlNode');\nconst TagType = {OPENING: 1, CLOSING: 2, SELF: 3, CDATA: 4};\nlet regx =\n '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|(([\\\\w:\\\\-._]*:)?([\\\\w:\\\\-._]+))([^>]*)>|((\\\\/)(([\\\\w:\\\\-._]*:)?([\\\\w:\\\\-._]+))\\\\s*>))([^<]*)';\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attrNodeName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n ignoreNameSpace: false,\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseNodeValue: true,\n parseAttributeValue: false,\n arrayMode: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataTagName: false,\n cdataPositionChar: '\\\\c',\n localeRange: '',\n tagValueProcessor: function(a, tagName) {\n return a;\n },\n attrValueProcessor: function(a, attrName) {\n return a;\n },\n stopNodes: []\n //decodeStrict: false,\n};\n\nexports.defaultOptions = defaultOptions;\n\nconst props = [\n 'attributeNamePrefix',\n 'attrNodeName',\n 'textNodeName',\n 'ignoreAttributes',\n 'ignoreNameSpace',\n 'allowBooleanAttributes',\n 'parseNodeValue',\n 'parseAttributeValue',\n 'arrayMode',\n 'trimValues',\n 'cdataTagName',\n 'cdataPositionChar',\n 'localeRange',\n 'tagValueProcessor',\n 'attrValueProcessor',\n 'parseTrueNumberOnly',\n 'stopNodes'\n];\nexports.props = props;\n\nconst getTraversalObj = function(xmlData, options) {\n options = buildOptions(options, defaultOptions, props);\n //xmlData = xmlData.replace(/\\r?\\n/g, \" \");//make it single line\n xmlData = xmlData.replace(//g, ''); //Remove comments\n\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n\n regx = regx.replace(/\\[\\\\w/g, '[' + options.localeRange + '\\\\w');\n const tagsRegx = new RegExp(regx, 'g');\n let tag = tagsRegx.exec(xmlData);\n let nextTag = tagsRegx.exec(xmlData);\n while (tag) {\n const tagType = checkForTagType(tag);\n\n if (tagType === TagType.CLOSING) {\n //add parsed data to parent node\n if (currentNode.parent && tag[14]) {\n currentNode.parent.val = util.getValue(currentNode.parent.val) + '' + processTagValue(tag, options, currentNode.parent.tagname);\n }\n if (options.stopNodes.length && options.stopNodes.includes(currentNode.tagname)) {\n currentNode.child = []\n if (currentNode.attrsMap == undefined) { currentNode.attrsMap = {}}\n currentNode.val = xmlData.substr(currentNode.startIndex + 1, tag.index - currentNode.startIndex - 1)\n }\n currentNode = currentNode.parent;\n } else if (tagType === TagType.CDATA) {\n if (options.cdataTagName) {\n //add cdata node\n const childNode = new xmlNode(options.cdataTagName, currentNode, tag[3]);\n childNode.attrsMap = buildAttributesMap(tag[8], options);\n currentNode.addChild(childNode);\n //for backtracking\n currentNode.val = util.getValue(currentNode.val) + options.cdataPositionChar;\n //add rest value to parent node\n if (tag[14]) {\n currentNode.val += processTagValue(tag, options);\n }\n } else {\n currentNode.val = (currentNode.val || '') + (tag[3] || '') + processTagValue(tag, options);\n }\n } else if (tagType === TagType.SELF) {\n if (currentNode && tag[14]) {\n currentNode.val = util.getValue(currentNode.val) + '' + processTagValue(tag, options);\n }\n\n const childNode = new xmlNode(options.ignoreNameSpace ? tag[7] : tag[5], currentNode, '');\n if (tag[8] && tag[8].length > 0) {\n tag[8] = tag[8].substr(0, tag[8].length - 1);\n }\n childNode.attrsMap = buildAttributesMap(tag[8], options);\n currentNode.addChild(childNode);\n } else {\n //TagType.OPENING\n const childNode = new xmlNode(\n options.ignoreNameSpace ? tag[7] : tag[5],\n currentNode,\n processTagValue(tag, options)\n );\n if (options.stopNodes.length && options.stopNodes.includes(childNode.tagname)) {\n childNode.startIndex=tag.index + tag[1].length\n }\n childNode.attrsMap = buildAttributesMap(tag[8], options);\n currentNode.addChild(childNode);\n currentNode = childNode;\n }\n\n tag = nextTag;\n nextTag = tagsRegx.exec(xmlData);\n }\n\n return xmlObj;\n};\n\nfunction processTagValue(parsedTags, options, parentTagName) {\n const tagName = parsedTags[7] || parentTagName;\n let val = parsedTags[14];\n if (val) {\n if (options.trimValues) {\n val = val.trim();\n }\n val = options.tagValueProcessor(val, tagName);\n val = parseValue(val, options.parseNodeValue, options.parseTrueNumberOnly);\n }\n\n return val;\n}\n\nfunction checkForTagType(match) {\n if (match[4] === ']]>') {\n return TagType.CDATA;\n } else if (match[10] === '/') {\n return TagType.CLOSING;\n } else if (typeof match[8] !== 'undefined' && match[8].substr(match[8].length - 1) === '/') {\n return TagType.SELF;\n } else {\n return TagType.OPENING;\n }\n}\n\nfunction resolveNameSpace(tagname, options) {\n if (options.ignoreNameSpace) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\nfunction parseValue(val, shouldParse, parseTrueNumberOnly) {\n if (shouldParse && typeof val === 'string') {\n let parsed;\n if (val.trim() === '' || isNaN(val)) {\n parsed = val === 'true' ? true : val === 'false' ? false : val;\n } else {\n if (val.indexOf('0x') !== -1) {\n //support hexa decimal\n parsed = Number.parseInt(val, 16);\n } else if (val.indexOf('.') !== -1) {\n parsed = Number.parseFloat(val);\n val = val.replace(/0+$/,\"\");\n } else {\n parsed = Number.parseInt(val, 10);\n }\n if (parseTrueNumberOnly) {\n parsed = String(parsed) === val ? parsed : val;\n }\n }\n return parsed;\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])(.*?)\\\\3)?', 'g');\n\nfunction buildAttributesMap(attrStr, options) {\n if (!options.ignoreAttributes && typeof attrStr === 'string') {\n attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = resolveNameSpace(matches[i][1], options);\n if (attrName.length) {\n if (matches[i][4] !== undefined) {\n if (options.trimValues) {\n matches[i][4] = matches[i][4].trim();\n }\n matches[i][4] = options.attrValueProcessor(matches[i][4], attrName);\n attrs[options.attributeNamePrefix + attrName] = parseValue(\n matches[i][4],\n options.parseAttributeValue,\n options.parseTrueNumberOnly\n );\n } else if (options.allowBooleanAttributes) {\n attrs[options.attributeNamePrefix + attrName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (options.attrNodeName) {\n const attrCollection = {};\n attrCollection[options.attrNodeName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n}\n\nexports.getTraversalObj = getTraversalObj;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/lib/parser.min.js b/lib/parser.min.js index 59e97404..7b14529f 100644 --- a/lib/parser.min.js +++ b/lib/parser.min.js @@ -1,2 +1,2 @@ -var parser=function(t){var e={};function r(a){if(e[a])return e[a].exports;var i=e[a]={i:a,l:!1,exports:{}};return t[a].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(t,e,a){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)r.d(a,i,function(e){return t[e]}.bind(null,i));return a},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=2)}([function(t,e,r){"use strict";var a=function(t,e){var r=e.exec(t);return!(null==r)};e.isExist=function(t){return void 0!==t},e.isEmptyObject=function(t){return 0===Object.keys(t).length},e.merge=function(t,e,r){if(e)for(var a=Object.keys(e),i=a.length,n=0;n))|(([\\w:\\-._]*:)?([\\w:\\-._]+))([^>]*)>|((\\/)(([\\w:\\-._]*:)?([\\w:\\-._]+))\\s*>))([^<]*)";!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);var l={attributeNamePrefix:"@_",attrNodeName:!1,textNodeName:"#text",ignoreAttributes:!0,ignoreNameSpace:!1,allowBooleanAttributes:!1,parseNodeValue:!0,parseAttributeValue:!1,arrayMode:!1,trimValues:!0,cdataTagName:!1,cdataPositionChar:"\\c",localeRange:"",tagValueProcessor:function(t,e){return t},attrValueProcessor:function(t,e){return t},stopNodes:[]};e.defaultOptions=l;var u=["attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","ignoreNameSpace","allowBooleanAttributes","parseNodeValue","parseAttributeValue","arrayMode","trimValues","cdataTagName","cdataPositionChar","localeRange","tagValueProcessor","attrValueProcessor","parseTrueNumberOnly","stopNodes"];e.props=u;function c(t,e,r){var a=t[7]||r,i=t[14];return i&&(e.trimValues&&(i=i.trim()),i=f(i=e.tagValueProcessor(i,a),e.parseNodeValue,e.parseTrueNumberOnly)),i}function d(t){return"]]>"===t[4]?s.CDATA:"/"===t[10]?s.CLOSING:void 0!==t[8]&&"/"===t[8].substr(t[8].length-1)?s.SELF:s.OPENING}function h(t,e){if(e.ignoreNameSpace){var r=t.split(":"),a="/"===t.charAt(0)?"/":"";if("xmlns"===r[0])return"";2===r.length&&(t=a+r[1])}return t}function f(t,e,r){var i;return e&&"string"==typeof t?(""===t.trim()||isNaN(t)?i="true"===t||"false"!==t&&t:(i=-1!==t.indexOf("0x")?Number.parseInt(t,16):-1!==t.indexOf(".")?Number.parseFloat(t):Number.parseInt(t,10),r&&(i=String(i)===t?i:t)),i):a.isExist(t)?t:""}var g=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])(.*?)\\3)?","g");function p(t,e){if(!e.ignoreAttributes&&"string"==typeof t){t=t.replace(/\r?\n/g," ");for(var r=a.getAllMatches(t,g),i=r.length,n={},s=0;s/g,"");var r=new n("!xml"),h=r;o=o.replace(/\[\\w/g,"["+e.localeRange+"\\w");for(var f=new RegExp(o,"g"),g=f.exec(t),v=f.exec(t);g;){var m=d(g);if(m===s.CLOSING)h.parent&&g[14]&&(h.parent.val=a.getValue(h.parent.val)+""+c(g,e,h.parent.tagname)),e.stopNodes.length&&e.stopNodes.includes(h.tagname)&&(h.child=[],null==h.attrsMap&&(h.attrsMap={}),h.val=t.substr(h.startIndex+1,g.index-h.startIndex-1)),h=h.parent;else if(m===s.CDATA)if(e.cdataTagName){var b=new n(e.cdataTagName,h,g[3]);b.attrsMap=p(g[8],e),h.addChild(b),h.val=a.getValue(h.val)+e.cdataPositionChar,g[14]&&(h.val+=c(g,e))}else h.val=(h.val||"")+(g[3]||"")+c(g,e);else if(m===s.SELF){h&&g[14]&&(h.val=a.getValue(h.val)+""+c(g,e));var N=new n(e.ignoreNameSpace?g[7]:g[5],h,"");g[8]&&g[8].length>0&&(g[8]=g[8].substr(0,g[8].length-1)),N.attrsMap=p(g[8],e),h.addChild(N)}else{var x=new n(e.ignoreNameSpace?g[7]:g[5],h,c(g,e));e.stopNodes.length&&e.stopNodes.includes(x.tagname)&&(x.startIndex=g.index+g[1].length),x.attrsMap=p(g[8],e),h.addChild(x),h=x}g=v,v=f.exec(t)}return r}},function(t,e,r){"use strict";var a=r(3),i=r(1),n=r(1),s=r(0).buildOptions,o=r(5);e.parse=function(t,e,r){if(r){!0===r&&(r={});var l=o.validate(t,r);if(!0!==l)throw Error(l.err.msg)}return e=s(e,n.defaultOptions,n.props),a.convertToJson(i.getTraversalObj(t,e),e)},e.convertTonimn=r(6).convert2nimn,e.getTraversalObj=i.getTraversalObj,e.convertToJson=a.convertToJson,e.convertToJsonString=r(7).convertToJsonString,e.validate=o.validate,e.j2xParser=r(8),e.parseToNimn=function(t,r,a){return e.convertTonimn(e.getTraversalObj(t,a),r,a)}},function(t,e,r){"use strict";var a=r(0);e.convertToJson=function t(e,r){var i={};if(!(e.child&&!a.isEmptyObject(e.child)||e.attrsMap&&!a.isEmptyObject(e.attrsMap)))return a.isExist(e.val)?e.val:"";a.isExist(e.val)&&("string"!=typeof e.val||""!==e.val&&e.val!==r.cdataPositionChar)&&("strict"===r.arrayMode?i[r.textNodeName]=[e.val]:i[r.textNodeName]=e.val),a.merge(i,e.attrsMap,r.arrayMode);for(var n=Object.keys(e.child),s=0;s1)for(var l in i[o]=[],e.child[o])i[o].push(t(e.child[o][l],r));else if(!0===r.arrayMode){var u=t(e.child[o][0],r);i[o]="object"==typeof u?[u]:u}else"strict"===r.arrayMode?i[o]=[t(e.child[o][0],r)]:i[o]=t(e.child[o][0],r)}return i}},function(t,e,r){"use strict";t.exports=function(t,e,r){this.tagname=t,this.parent=e,this.child={},this.attrsMap={},this.val=r,this.addChild=function(t){Array.isArray(this.child[t.tagname])?this.child[t.tagname].push(t):this.child[t.tagname]=[t]}}},function(t,e,r){"use strict";var a=r(0),i={allowBooleanAttributes:!1,localeRange:"a-zA-Z"},n=["allowBooleanAttributes","localeRange"];function s(t,e){for(var r=e;e5&&"xml"===a)return{err:{code:"InvalidXml",msg:"XML declaration allowed only at the start of the document."}};if("?"==t[e]&&">"==t[e+1]){e++;break}}return e}function o(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){var r=1;for(e+=8;e"===t[e]&&0===--r)break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e"===t[e+2]){e+=2;break}return e}e.validate=function(t,e){e=a.buildOptions(e,i,n);var r=[],l=!1;"\ufeff"===t[0]&&(t=t.substr(1));for(var u=new RegExp("^[_w][\\w\\-.:]*$".replace("_w","_"+e.localeRange)),d=new RegExp("^([w]|_)[\\w.\\-_:]*".replace("([w","(["+e.localeRange)),f=0;f"!==t[f]&&" "!==t[f]&&"\t"!==t[f]&&"\n"!==t[f]&&"\r"!==t[f];f++)v+=t[f];if("/"===(v=v.trim())[v.length-1]){v=v.substring(0,v.length-1);continue}if(!g(v,d))return{err:{code:"InvalidTag",msg:"Tag "+v+" is an invalid name."}};var m=c(t,f);if(!1===m)return{err:{code:"InvalidAttr",msg:'Attributes for "'+v+'" have open quote.'}};var b=m.value;if(f=m.index,"/"===b[b.length-1]){var N=h(b=b.substring(0,b.length-1),e,u);if(!0!==N)return N;l=!0}else if(p){if(!m.tagClosed)return{err:{code:"InvalidTag",msg:'closing tag "'+v+"\" don't have proper closing."}};if(b.trim().length>0)return{err:{code:"InvalidTag",msg:'closing tag "'+v+"\" can't have attributes or invalid starting."}};var x=r.pop();if(v!==x)return{err:{code:"InvalidTag",msg:"closing tag "+x+" is expected inplace of "+v+"."}}}else{var A=h(b,e,u);if(!0!==A)return A;r.push(v),l=!0}for(f++;f0)||{err:{code:"InvalidXml",msg:"Invalid "+JSON.stringify(r,null,4).replace(/\r?\n/g,"")+" found."}}:{err:{code:"InvalidXml",msg:"Start tag expected."}}};var l='"',u="'";function c(t,e){for(var r="",a="",i=!1;e"===t[e]&&""===a){i=!0;break}r+=t[e]}return""===a&&{value:r,index:e,tagClosed:i}}var d=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function h(t,e,r){for(var i=a.getAllMatches(t,d),n={},s=0;s1){for(var c in s+='"'+u+'" : [ ',e.child[u])s+=t(e.child[u][c],r)+" , ";s=s.substr(0,s.length-1)+" ] "}else s+='"'+u+'" : '+t(e.child[u][0],r)+" ,"}return a.merge(s,e.attrsMap),a.isEmptyObject(s)?a.isExist(e.val)?e.val:"":(a.isExist(e.val)&&("string"!=typeof e.val||""!==e.val&&e.val!==r.cdataPositionChar)&&(s+='"'+r.textNodeName+'" : '+(!0!==(n=e.val)&&!1!==n&&isNaN(n)?'"'+n+'"':n)),","===s[s.length-1]&&(s=s.substr(0,s.length-2)),s+"}")};e.convertToJsonString=function(t,e){return(e=i(e,n.defaultOptions,n.props)).indentBy=e.indentBy||"",s(t,e,0)}},function(t,e,r){"use strict";var a=r(0).buildOptions,i={attributeNamePrefix:"@_",attrNodeName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataTagName:!1,cdataPositionChar:"\\c",format:!1,indentBy:" ",supressEmptyNode:!1,tagValueProcessor:function(t){return t},attrValueProcessor:function(t){return t}},n=["attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","cdataTagName","cdataPositionChar","format","indentBy","supressEmptyNode","tagValueProcessor","attrValueProcessor"];function s(t){this.options=a(t,i,n),this.options.ignoreAttributes||this.options.attrNodeName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=g),this.options.cdataTagName?this.isCDATA=p:this.isCDATA=function(){return!1},this.replaceCDATAstr=o,this.replaceCDATAarr=l,this.options.format?(this.indentate=f,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine=""),this.options.supressEmptyNode?(this.buildTextNode=h,this.buildObjNode=c):(this.buildTextNode=d,this.buildObjNode=u),this.buildTextValNode=d,this.buildObjectNode=u}function o(t,e){return t=this.options.tagValueProcessor(""+t),""===this.options.cdataPositionChar||""===t?t+"");return t+this.newLine}function u(t,e,r,a){return r&&!t.includes("<")?this.indentate(a)+"<"+e+r+">"+t+""+this.options.tagValueProcessor(t)+"))|(([\\w:\\-._]*:)?([\\w:\\-._]+))([^>]*)>|((\\/)(([\\w:\\-._]*:)?([\\w:\\-._]+))\\s*>))([^<]*)";!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);var l={attributeNamePrefix:"@_",attrNodeName:!1,textNodeName:"#text",ignoreAttributes:!0,ignoreNameSpace:!1,allowBooleanAttributes:!1,parseNodeValue:!0,parseAttributeValue:!1,arrayMode:!1,trimValues:!0,cdataTagName:!1,cdataPositionChar:"\\c",localeRange:"",tagValueProcessor:function(t,e){return t},attrValueProcessor:function(t,e){return t},stopNodes:[]};e.defaultOptions=l;var u=["attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","ignoreNameSpace","allowBooleanAttributes","parseNodeValue","parseAttributeValue","arrayMode","trimValues","cdataTagName","cdataPositionChar","localeRange","tagValueProcessor","attrValueProcessor","parseTrueNumberOnly","stopNodes"];e.props=u;function c(t,e,r){var a=t[7]||r,n=t[14];return n&&(e.trimValues&&(n=n.trim()),n=f(n=e.tagValueProcessor(n,a),e.parseNodeValue,e.parseTrueNumberOnly)),n}function d(t){return"]]>"===t[4]?s.CDATA:"/"===t[10]?s.CLOSING:void 0!==t[8]&&"/"===t[8].substr(t[8].length-1)?s.SELF:s.OPENING}function h(t,e){if(e.ignoreNameSpace){var r=t.split(":"),a="/"===t.charAt(0)?"/":"";if("xmlns"===r[0])return"";2===r.length&&(t=a+r[1])}return t}function f(t,e,r){var n;return e&&"string"==typeof t?(""===t.trim()||isNaN(t)?n="true"===t||"false"!==t&&t:(-1!==t.indexOf("0x")?n=Number.parseInt(t,16):-1!==t.indexOf(".")?(n=Number.parseFloat(t),t=t.replace(/0+$/,"")):n=Number.parseInt(t,10),r&&(n=String(n)===t?n:t)),n):a.isExist(t)?t:""}var g=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])(.*?)\\3)?","g");function p(t,e){if(!e.ignoreAttributes&&"string"==typeof t){t=t.replace(/\r?\n/g," ");for(var r=a.getAllMatches(t,g),n=r.length,i={},s=0;s/g,"");var r=new i("!xml"),h=r;o=o.replace(/\[\\w/g,"["+e.localeRange+"\\w");for(var f=new RegExp(o,"g"),g=f.exec(t),v=f.exec(t);g;){var b=d(g);if(b===s.CLOSING)h.parent&&g[14]&&(h.parent.val=a.getValue(h.parent.val)+""+c(g,e,h.parent.tagname)),e.stopNodes.length&&e.stopNodes.includes(h.tagname)&&(h.child=[],null==h.attrsMap&&(h.attrsMap={}),h.val=t.substr(h.startIndex+1,g.index-h.startIndex-1)),h=h.parent;else if(b===s.CDATA)if(e.cdataTagName){var m=new i(e.cdataTagName,h,g[3]);m.attrsMap=p(g[8],e),h.addChild(m),h.val=a.getValue(h.val)+e.cdataPositionChar,g[14]&&(h.val+=c(g,e))}else h.val=(h.val||"")+(g[3]||"")+c(g,e);else if(b===s.SELF){h&&g[14]&&(h.val=a.getValue(h.val)+""+c(g,e));var N=new i(e.ignoreNameSpace?g[7]:g[5],h,"");g[8]&&g[8].length>0&&(g[8]=g[8].substr(0,g[8].length-1)),N.attrsMap=p(g[8],e),h.addChild(N)}else{var x=new i(e.ignoreNameSpace?g[7]:g[5],h,c(g,e));e.stopNodes.length&&e.stopNodes.includes(x.tagname)&&(x.startIndex=g.index+g[1].length),x.attrsMap=p(g[8],e),h.addChild(x),h=x}g=v,v=f.exec(t)}return r}},function(t,e,r){"use strict";var a=r(3),n=r(1),i=r(1),s=r(0).buildOptions,o=r(5);e.parse=function(t,e,r){if(r){!0===r&&(r={});var l=o.validate(t,r);if(!0!==l)throw Error(l.err.msg)}return e=s(e,i.defaultOptions,i.props),a.convertToJson(n.getTraversalObj(t,e),e)},e.convertTonimn=r(6).convert2nimn,e.getTraversalObj=n.getTraversalObj,e.convertToJson=a.convertToJson,e.convertToJsonString=r(7).convertToJsonString,e.validate=o.validate,e.j2xParser=r(8),e.parseToNimn=function(t,r,a){return e.convertTonimn(e.getTraversalObj(t,a),r,a)}},function(t,e,r){"use strict";var a=r(0);e.convertToJson=function t(e,r){var n={};if(!(e.child&&!a.isEmptyObject(e.child)||e.attrsMap&&!a.isEmptyObject(e.attrsMap)))return a.isExist(e.val)?e.val:"";a.isExist(e.val)&&("string"!=typeof e.val||""!==e.val&&e.val!==r.cdataPositionChar)&&("strict"===r.arrayMode?n[r.textNodeName]=[e.val]:n[r.textNodeName]=e.val),a.merge(n,e.attrsMap,r.arrayMode);for(var i=Object.keys(e.child),s=0;s1)for(var l in n[o]=[],e.child[o])n[o].push(t(e.child[o][l],r));else if(!0===r.arrayMode){var u=t(e.child[o][0],r);n[o]="object"==typeof u?[u]:u}else"strict"===r.arrayMode?n[o]=[t(e.child[o][0],r)]:n[o]=t(e.child[o][0],r)}return n}},function(t,e,r){"use strict";t.exports=function(t,e,r){this.tagname=t,this.parent=e,this.child={},this.attrsMap={},this.val=r,this.addChild=function(t){Array.isArray(this.child[t.tagname])?this.child[t.tagname].push(t):this.child[t.tagname]=[t]}}},function(t,e,r){"use strict";var a=r(0),n={allowBooleanAttributes:!1,localeRange:"a-zA-Z"},i=["allowBooleanAttributes","localeRange"];function s(t,e){for(var r=e;e5&&"xml"===a)return f("InvalidXml","XML declaration allowed only at the start of the document.",v(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}}return e}function o(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){var r=1;for(e+=8;e"===t[e]&&0===--r)break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e"===t[e+2]){e+=2;break}return e}e.validate=function(t,e){if(e=a.buildOptions(e,n,i),new RegExp("["+e.localeRange+"]").test("<#$'\"\\/:0"))return f("InvalidOptions","Invalid localeRange",1);var r=[],l=!1;"\ufeff"===t[0]&&(t=t.substr(1));for(var u=new RegExp("^["+e.localeRange+"_]["+e.localeRange+"0-9\\-\\.:]*$"),d=new RegExp("^(["+e.localeRange+"_])["+e.localeRange+"0-9\\.\\-_:]*$"),g=0;g"!==t[g]&&" "!==t[g]&&"\t"!==t[g]&&"\n"!==t[g]&&"\r"!==t[g];g++)m+=t[g];if("/"===(m=m.trim())[m.length-1]&&(m=m.substring(0,m.length-1),g--),!p(m,d)){return f("InvalidTag",0===m.trim().length?"There is an unnecessary space between tag name and backward slash '0)return f("InvalidTag","Closing tag '"+m+"' can't have attributes or invalid starting.",v(t,g));var y=r.pop();if(m!==y)return f("InvalidTag","Closing tag '"+y+"' is expected inplace of '"+m+"'.",v(t,g))}else{var C=h(x,e,u);if(!0!==C)return f(C.err.code,C.err.msg,v(t,g-x.length+C.err.line));r.push(m),l=!0}for(g++;g0)||f("InvalidXml","Invalid '"+JSON.stringify(r,null,4).replace(/\r?\n/g,"")+"' found.",1):f("InvalidXml","Start tag expected.",1)};var l='"',u="'";function c(t,e){for(var r="",a="",n=!1;e"===t[e]&&""===a){n=!0;break}r+=t[e]}return""===a&&{value:r,index:e,tagClosed:n}}var d=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function h(t,e,r){for(var n=a.getAllMatches(t,d),i={},s=0;s1){for(var c in s+='"'+u+'" : [ ',e.child[u])s+=t(e.child[u][c],r)+" , ";s=s.substr(0,s.length-1)+" ] "}else s+='"'+u+'" : '+t(e.child[u][0],r)+" ,"}return a.merge(s,e.attrsMap),a.isEmptyObject(s)?a.isExist(e.val)?e.val:"":(a.isExist(e.val)&&("string"!=typeof e.val||""!==e.val&&e.val!==r.cdataPositionChar)&&(s+='"'+r.textNodeName+'" : '+(!0!==(i=e.val)&&!1!==i&&isNaN(i)?'"'+i+'"':i)),","===s[s.length-1]&&(s=s.substr(0,s.length-2)),s+"}")};e.convertToJsonString=function(t,e){return(e=n(e,i.defaultOptions,i.props)).indentBy=e.indentBy||"",s(t,e,0)}},function(t,e,r){"use strict";var a=r(0).buildOptions,n={attributeNamePrefix:"@_",attrNodeName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataTagName:!1,cdataPositionChar:"\\c",format:!1,indentBy:" ",supressEmptyNode:!1,tagValueProcessor:function(t){return t},attrValueProcessor:function(t){return t}},i=["attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","cdataTagName","cdataPositionChar","format","indentBy","supressEmptyNode","tagValueProcessor","attrValueProcessor"];function s(t){this.options=a(t,n,i),this.options.ignoreAttributes||this.options.attrNodeName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=g),this.options.cdataTagName?this.isCDATA=p:this.isCDATA=function(){return!1},this.replaceCDATAstr=o,this.replaceCDATAarr=l,this.options.format?(this.indentate=f,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine=""),this.options.supressEmptyNode?(this.buildTextNode=h,this.buildObjNode=c):(this.buildTextNode=d,this.buildObjNode=u),this.buildTextValNode=d,this.buildObjectNode=u}function o(t,e){return t=this.options.tagValueProcessor(""+t),""===this.options.cdataPositionChar||""===t?t+"");return t+this.newLine}function u(t,e,r,a){return r&&!t.includes("<")?this.indentate(a)+"<"+e+r+">"+t+""+this.options.tagValueProcessor(t)+"