{"version":3,"sources":["AX6Util.js"],"names":["reIsJson","_fn","reMs","O","reSnakeCase","l","length","undefined","reInt","reNotNum","key","reMoneySplit","RegExp","i","isNothing","isObject","isFunction","call","filter","k","results","push","fnResult","toJson","jsonString","isArray","each","value","join","jsonObjectBody","isUndefined","parseJson","str","force","test","error","msg","Function","getType","typeName","window","nodeType","_toString","isWindow","isString","isNumber","isNodelist","result","isDate","Date","isNaN","valueOf","isDateFormat","dd","date","replace","isPlainObject","proto","getDate","getPrototypeOf","constructor","first","_hasOwnProperty","_fnToString","objectCtorString","keys","Object","item","console","last","setCookie","cn","expire","setDate","opts","doc","cookie","escape","cv","exdays","ca","charAt","c","substring","toUTCString","alert","path","win","domain","getCookie","cname","indexOf","split","substr","name","unescape","left","pos","camelCase","letter","lastIndexOf","pair","all","snakeCase","returnValue","toLowerCase","number","cond","Math","round","isMinus","abs","Number","txtNumber","arrNumber","floor","ceil","val","nUnit","myByte","toArray","param","p","reAmp","reEq","Array","prototype","slice","decodeURIComponent","s","this","localDate","mm","mi","utcD","v","setUTCHours","getUTCHours","yy","aDateTime","aDate","_AX6Info2","default","va","arguments","hh","ss","d","ISO_8601_FULL","ISO_8601","UTC","parseFloat","aTimes","aTime","getTimezoneOffset","right","mxdd","_d","setTime","getTime","getMonth","parseInt","daysOfMonth","processor","getFullYear","fStr","nY","nD","nH","nMM","nS","nDW","regM","yre","regY","mre","regD","regMI","hre","regH","mire","dwre","regDW","getUTCFullYear","setDigit","nM","regS","DyMilli","exec","$1","getHours","dre","getMinutes","getSeconds","sre","dday","weekNames","label","getDayTime","diffnum","memoryDay","today","thisYearMemoryDay","m","year","myDate","month","y","count","padder","radix","num","times","findParentNode","tagName","toLocaleLowerCase","_target","parentNode","hasClass","klasss","className","reClassNameSplit","getAttribute","a","unit","found","css","returns","re","valSplited","forEach","match","trim","vSplited","stopEvent","cancelBubble","stopPropagation","e","preventDefault","range","event","moveEnd","src","obj","copy","copyIsArray","clone","target","deep","deepCopy","r","assign","extend","options","_typeof","escapeHtml","unescapeHtml","_string","encode","decode","args","concat","_pos","color","_hexColor","isOnePointZero","n","isPercentage","convertToPercentage","max","min","toString","bound01","g","h","b","hslToRgb","t","hue2rgb","q","_originalValue","_color","convertObject","_format","format","_hex","convertToHex","CSS_UNIT","hsl","hex4","rgb","matchers","rgba","PERMISSIVE_MATCH3","hsla","hsv","hsva","PERMISSIVE_MATCH4","hex3","hex6","hex8","amount","getHexValue","rgbToHsl","convertTo255","getBrightness","isDark","isLight","getHsl","_AX6Info","require","hasOwnProperty","reCamelCase","reDot","selectRange","selectAll","el","offset","setStart","collapse","firstChild","start","moveStart","text","selectNodeContents","arr","rangeType","selection","node","setEnd","body","createTextRange","document","moveToElementText","end","getSelection","createRange","select","lastArgs","lastThis","maxWait","maxing","trailing","focus","TypeError","wait","removeAllRanges","debounce","invokeFunc","func","thisArg","timeSinceLastCall","lastInvokeTime","timeSinceLastInvoke","apply","lastCallTime","time","timerId","timerExpired","leading","trailingEdge","cancel","shouldInvoke","setTimeout","remainingWait","isInvoking","now","_len","_key","debounced","flush","throttle","leadingEdge","clearTimeout","search","isElement","weeksOfMonth","cssNumber","string"],"mappings":"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","file":"AX6Util.js","sourcesContent":["import info from \"./AX6Info\";\n\n/**\n * @module AX6Util\n */\n\nconst _toString = Object.prototype.toString;\nconst _hasOwnProperty = Object.prototype.hasOwnProperty;\nconst _fnToString = Function.prototype.toString;\nconst objectCtorString = _fnToString.call(Object);\n\nconst reIsJson         = /^([\"'](\\\\.|[^\"\\\\\\n\\r])*?[\"']|[,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t])+?$/,\n      reMs             = /^-ms-/,\n      reSnakeCase      = /[\\-_]([\\da-z])/gi,\n      reCamelCase      = /([A-Z])/g,\n      reDot            = /\\./,\n      reInt            = /[-|+]?[\\D]/gi,\n      reNotNum         = /\\D/gi,\n      reMoneySplit     = new RegExp('([0-9])([0-9][0-9][0-9][,.])'),\n      reAmp            = /&/g,\n      reEq             = /=/,\n      reClassNameSplit = /[ ]+/g;\n\nfunction each(O, _fn) {\n  if (isNothing(O)) return [];\n  let key, i = 0, l = O.length,\n      isObj         = l === undefined || typeof O === \"function\";\n  if (isObj) {\n    for (key in O) {\n      if (typeof O[key] != \"undefined\")\n        if (_fn.call(O[key], key, O[key]) === false) break;\n    }\n  }\n  else {\n    for (; i < l;) {\n      if (typeof O[i] != \"undefined\")\n        if (_fn.call(O[i], i, O[i++]) === false) break;\n    }\n  }\n  return O;\n}\n\nfunction search(O, _fn) {\n  if (isNothing(O)) return -1;\n  if (isObject(O)) {\n    for (let key in O) {\n      if (typeof O[key] != \"undefined\" && isFunction(_fn) && _fn.call(O[key], key, O[key])) {\n        return key;\n        break;\n      }\n      else if (O[key] == _fn) {\n        return key;\n        break;\n      }\n    }\n  }\n  else {\n    for (let i = 0, l = O.length; i < l; i++) {\n      if (typeof O[i] != \"undefined\" && isFunction(_fn) && _fn.call(O[i], i, O[i])) {\n        return i;\n        break;\n      }\n      else if (O[i] == _fn) {\n        return i;\n        break;\n      }\n    }\n  }\n  return -1;\n}\n\nfunction filter(O, _fn) {\n  if (isNothing(O)) return [];\n  let k, i = 0, l = O.length, results = [], fnResult;\n  if (isObject(O)) {\n    for (k in O) {\n      if (typeof O[k] != \"undefined\") {\n        if (fnResult = _fn.call(O[k], k, O[k])) results.push(O[k]);\n      }\n    }\n  }\n  else {\n    for (; i < l;) {\n      if (typeof O[i] != \"undefined\") {\n        if (fnResult = _fn.call(O[i], i, O[i])) results.push(O[i]);\n        i++;\n      }\n    }\n  }\n  return results;\n}\n\n\nfunction toJson(O) {\n  let jsonString = \"\";\n  if (isArray(O)) {\n    let i = 0, l = O.length;\n    jsonString += \"[\";\n    for (; i < l; i++) {\n      if (i > 0) jsonString += \",\";\n      jsonString += toJson(O[i]);\n    }\n    jsonString += \"]\";\n  }\n  else if (isObject(O)) {\n    jsonString += \"{\";\n    let jsonObjectBody = [];\n    each(O, function (key, value) {\n      jsonObjectBody.push('\"' + key + '\": ' + toJson(value));\n    });\n    jsonString += jsonObjectBody.join(\", \");\n    jsonString += \"}\";\n  }\n  else if (isString(O)) {\n    jsonString = '\"' + O + '\"';\n  }\n  else if (isNumber(O)) {\n    jsonString = O;\n  }\n  else if (isUndefined(O)) {\n    jsonString = \"undefined\";\n  }\n  else if (isFunction(O)) {\n    jsonString = '\"{Function}\"';\n  }\n  else {\n    jsonString = O;\n  }\n  return jsonString;\n}\n\n\nfunction parseJson(str, force) {\n  if (force || (reIsJson).test(str)) {\n    try {\n      return (new Function('', 'return ' + str))();\n    }\n    catch (e) {\n      return {error: 500, msg: 'syntax error'};\n    }\n  }\n  else {\n    return {error: 500, msg: 'syntax error'};\n  }\n}\n\nfunction getType(O) {\n  let typeName;\n  if (O != null && O == O.window) {\n    typeName = \"window\";\n  }\n  else if (!!(O && O.nodeType == 1)) {\n    typeName = \"element\";\n  }\n  else if (!!(O && O.nodeType == 11)) {\n    typeName = \"fragment\";\n  }\n  else if (O === null) {\n    typeName = \"null\";\n  }\n  else if (typeof O === \"undefined\") {\n    typeName = \"undefined\";\n  }\n  else if (_toString.call(O) == \"[object Object]\") {\n    typeName = \"object\";\n  }\n  else if (_toString.call(O) == \"[object Array]\") {\n    typeName = \"array\";\n  }\n  else if (_toString.call(O) == \"[object String]\") {\n    typeName = \"string\";\n  }\n  else if (_toString.call(O) == \"[object Number]\") {\n    typeName = \"number\";\n  }\n  else if (_toString.call(O) == \"[object NodeList]\") {\n    typeName = \"nodelist\";\n  }\n  else if (typeof O === \"function\") {\n    typeName = \"function\";\n  }\n  return typeName;\n}\n\n\nfunction isWindow(O) {\n  return O != null && O == O.window;\n}\n\nfunction isElement(O) {\n  return !!(O && (O.nodeType == 1 || O.nodeType == 11));\n}\n\nfunction isObject(O) {\n  return _toString.call(O) == \"[object Object]\";\n}\n\nfunction isArray(O) {\n  return _toString.call(O) == \"[object Array]\";\n}\n\nfunction isFunction(O) {\n  return typeof O === \"function\";\n}\n\nfunction isString(O) {\n  return _toString.call(O) == \"[object String]\";\n}\n\nfunction isNumber(O) {\n  return _toString.call(O) == \"[object Number]\";\n}\n\nfunction isNodelist(O) {\n  return !!(_toString.call(O) == \"[object NodeList]\" || (typeof O !== \"undefined\" && O && O[0] && O[0].nodeType == 1));\n}\n\nfunction isUndefined(O) {\n  return typeof O === \"undefined\";\n}\n\nfunction isNothing(O) {\n  return (typeof O === \"undefined\" || O === null || O === \"\");\n}\n\nfunction isDate(O) {\n  return (O instanceof Date && !isNaN(O.valueOf()));\n}\n\nfunction isDateFormat(O) {\n  let result = false;\n\n  if (!O) {\n  }\n  else if (O instanceof Date && !isNaN(O.valueOf())) {\n    result = true;\n  }\n  else {\n    if (O.length > 7) {\n      if (date(O) instanceof Date) {\n        return true;\n      }\n    }\n    O = O.replace(/\\D/g, '');\n    if (O.length > 7) {\n      let mm = O.substr(4, 2),\n          dd = O.substr(6, 2);\n\n      O = date(O);\n      if (O.getMonth() == (mm - 1) && O.getDate() == dd) {\n        result = true;\n      }\n    }\n  }\n  return result;\n}\n\nfunction isPlainObject(O) {\n  let proto, constructor;\n\n  if (!O || _toString.call(O) !== \"[object Object]\") return false;\n  proto = Object.getPrototypeOf(O);\n\n  if (!proto) {\n    return true;\n  }\n\n  constructor = _hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n  return typeof constructor === \"function\" && _fnToString.call(constructor) === objectCtorString;\n}\n\nfunction first(O) {\n  if (isObject(O)) {\n    let keys = Object.keys(O);\n    let item = {};\n    item[keys[0]] = O[keys[0]];\n    return item;\n  }\n  else if (isArray(O)) {\n    return O[0];\n  }\n  else {\n    console.error(\"AX6Util.object.first\", \"argument type error\");\n    return undefined;\n  }\n}\n\nfunction last(O) {\n  if (isObject(O)) {\n    let keys = Object.keys(O);\n    let item = {};\n    item[keys[keys.length - 1]] = O[keys[keys.length - 1]];\n    return item;\n  }\n  else if (isArray(O)) {\n    return O[O.length - 1];\n  }\n  else {\n    console.error(\"AX6Util.object.last\", \"argument type error\");\n    return undefined;\n  }\n}\n\nfunction setCookie(cn, cv, exdays, opts) {\n  let expire;\n  if (typeof exdays === \"number\") {\n    expire = new Date();\n    expire.setDate(expire.getDate() + exdays);\n  }\n  opts = opts || {};\n  return (doc.cookie = [\n    escape(cn), '=', escape(cv),\n    expire ? \"; expires=\" + expire.toUTCString() : \"\", // use expires attribute, max-age is not supported by IE\n    opts.path ? \"; path=\" + opts.path : \"\",\n    opts.domain ? \"; domain=\" + opts.domain : \"\",\n    opts.secure ? \"; secure\" : \"\"\n  ].join(\"\"));\n}\n\nfunction getCookie(cname) {\n  let name = cname + \"=\";\n  let ca = doc.cookie.split(';'), i = 0, l = ca.length;\n  for (; i < l; i++) {\n    let c = ca[i];\n    while (c.charAt(0) == ' ') c = c.substring(1);\n    if (c.indexOf(name) != -1) return unescape(c.substring(name.length, c.length));\n  }\n  return \"\";\n}\n\nfunction alert(O) {\n  win.alert(toJson(O));\n  return O;\n}\n\nfunction left(str, pos) {\n  if (typeof str === \"undefined\" || typeof pos === \"undefined\") return \"\";\n  if (isString(pos)) {\n    return (str.indexOf(pos) > -1) ? str.substr(0, str.indexOf(pos)) : \"\";\n  }\n  else if (isNumber(pos)) {\n    return str.substr(0, pos);\n  }\n  else {\n    return \"\";\n  }\n}\n\nfunction right(str, pos) {\n  if (typeof str === \"undefined\" || typeof pos === \"undefined\") return \"\";\n  str = '' + str;\n  if (isString(pos)) {\n    return (str.lastIndexOf(pos) > -1) ? str.substr(str.lastIndexOf(pos) + 1) : \"\";\n  }\n  else if (isNumber(pos)) {\n    return str.substr(str.length - pos);\n  }\n  else {\n    return \"\";\n  }\n}\n\nfunction camelCase(str) {\n  return str.replace(reMs, \"ms-\").replace(reSnakeCase, function (all, letter) {\n    return letter.toUpperCase();\n  });\n}\n\nfunction snakeCase(str) {\n  return camelCase(str).replace(reCamelCase, function (all, letter) {\n    return \"-\" + letter.toLowerCase();\n  });\n}\n\nfunction number(str, cond) {\n  let result, pair = ('' + str).split(reDot), isMinus, returnValue;\n\n  isMinus = (Number(pair[0].replace(/,/g, \"\")) < 0 || pair[0] == \"-0\");\n  returnValue = 0.0;\n  pair[0] = pair[0].replace(reInt, \"\");\n\n  if (pair[1]) {\n    pair[1] = pair[1].replace(reNotNum, \"\");\n    returnValue = Number(pair[0] + \".\" + pair[1]) || 0;\n  }\n  else {\n    returnValue = Number(pair[0]) || 0;\n  }\n  result = (isMinus) ? -returnValue : returnValue;\n\n  each(cond, function (k, c) {\n    if (k == \"round\") {\n      if (isNumber(c)) {\n        if (c < 0) {\n          result = +(Math.round(result + \"e-\" + Math.abs(c)) + \"e+\" + Math.abs(c));\n        }\n        else {\n          result = +(Math.round(result + \"e+\" + c) + \"e-\" + c);\n        }\n      }\n      else {\n        result = Math.round(result);\n      }\n    }\n    if (k == \"floor\") {\n      result = Math.floor(result);\n    }\n    if (k == \"ceil\") {\n      result = Math.ceil(result);\n    }\n    else if (k == \"money\") {\n      result = (function (val) {\n        var txtNumber = '' + val;\n        if (isNaN(txtNumber) || txtNumber == \"\") {\n          return \"\";\n        }\n        else {\n          var arrNumber = txtNumber.split('.');\n          arrNumber[0] += '.';\n          do {\n            arrNumber[0] = arrNumber[0].replace(reMoneySplit, '$1,$2');\n          } while (reMoneySplit.test(arrNumber[0]));\n          if (arrNumber.length > 1) {\n            return arrNumber.join('');\n          }\n          else {\n            return arrNumber[0].split('.')[0];\n          }\n        }\n      })(result);\n    }\n    else if (k == \"abs\") {\n      result = Math.abs(Number(result));\n    }\n    else if (k == \"byte\") {\n      result = (function (val) {\n        val = Number(result);\n        var nUnit = \"KB\";\n        var myByte = val / 1024;\n        if (myByte / 1024 > 1) {\n          nUnit = \"MB\";\n          myByte = myByte / 1024;\n        }\n        if (myByte / 1024 > 1) {\n          nUnit = \"GB\";\n          myByte = myByte / 1024;\n        }\n        return number(myByte, {round: 1}) + nUnit;\n      })(result);\n    }\n  });\n\n  return result;\n}\n\nfunction toArray(O) {\n  if (typeof O.length != \"undefined\") return Array.prototype.slice.call(O);\n  return [];\n}\n\nfunction param(O, cond) {\n  var p;\n  if (isString(O) && typeof cond !== \"undefined\" && cond == \"param\") {\n    return O;\n  }\n  else if ((isString(O) && typeof cond !== \"undefined\" && cond == \"object\") || (isString(O) && typeof cond === \"undefined\")) {\n    p = {};\n    each(O.split(reAmp), function () {\n      var item = this.split(reEq);\n      if (!p[item[0]]) p[item[0]] = item[1];\n      else {\n        if (isString(p[item[0]])) p[item[0]] = [p[item[0]]];\n        p[item[0]].push(item[1]);\n      }\n    });\n    return p;\n  }\n  else {\n    p = [];\n    each(O, function (k, v) {\n      p.push(k + \"=\" + escape(v));\n    });\n    return p.join('&');\n  }\n}\n\nfunction encode(s) {\n  return encodeURIComponent(s);\n}\n\nfunction decode(s) {\n  return decodeURIComponent(s);\n}\n\nfunction error() {\n  info.onerror.apply(this, arguments);\n}\n\nfunction localDate(yy, mm, dd, hh, mi, ss) {\n  var utcD, localD;\n  localD = new Date();\n  if (mm < 0) mm = 0;\n  if (typeof hh === \"undefined\") hh = 12;\n  if (typeof mi === \"undefined\") mi = 0;\n  utcD = new Date(Date.UTC(yy, mm, dd || 1, hh, mi, ss || 0));\n\n  if (mm == 0 && dd == 1 && utcD.getUTCHours() + (utcD.getTimezoneOffset() / 60) < 0) {\n    utcD.setUTCHours(0);\n  }\n  else {\n    utcD.setUTCHours(utcD.getUTCHours() + (utcD.getTimezoneOffset() / 60));\n  }\n  return utcD;\n}\n\nfunction date(d, cond) {\n  let yy, mm, dd, hh, mi,\n      aDateTime, aTimes, aTime, aDate,\n      va,\n      ISO_8601      = /^\\d{4}(-\\d\\d(-\\d\\d(T\\d\\d:\\d\\d(:\\d\\d)?(\\.\\d+)?(([+-]\\d\\d:\\d\\d)|Z)?)?)?)?$/i,\n      ISO_8601_FULL = /^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(\\.\\d+)?(([+-]\\d\\d:\\d\\d)|Z)?$/i;\n\n  if (isString(d)) {\n    if (d.length == 0) {\n      d = new Date();\n    }\n    else if (d.length > 15) {\n      if (ISO_8601_FULL.test(d) || ISO_8601.test(d)) {\n        d = new Date(d);\n      } else {\n        aDateTime = d.split(/ /g), aTimes, aTime,\n          aDate = aDateTime[0].split(/\\D/g),\n          yy = aDate[0];\n        mm = parseFloat(aDate[1]);\n        dd = parseFloat(aDate[2]);\n        aTime = aDateTime[1] || \"09:00\";\n        aTimes = aTime.substring(0, 5).split(\":\");\n        hh = parseFloat(aTimes[0]);\n        mi = parseFloat(aTimes[1]);\n        if (right(aTime, 2) === \"AM\" || right(aTime, 2) === \"PM\") hh += 12;\n        d = localDate(yy, mm - 1, dd, hh, mi);\n      }\n    }\n    else if (d.length == 14) {\n      va = d.replace(/\\D/g, \"\");\n      d = localDate(va.substr(0, 4), va.substr(4, 2) - 1, number(va.substr(6, 2)), number(va.substr(8, 2)), number(va.substr(10, 2)), number(va.substr(12, 2)));\n    }\n    else if (d.length > 7) {\n      va = d.replace(/\\D/g, \"\");\n      d = localDate(va.substr(0, 4), va.substr(4, 2) - 1, number(va.substr(6, 2)));\n    }\n    else if (d.length > 4) {\n      va = d.replace(/\\D/g, \"\");\n      d = localDate(va.substr(0, 4), va.substr(4, 2) - 1, 1);\n    }\n    else if (d.length > 2) {\n      va = d.replace(/\\D/g, \"\");\n      return localDate(va.substr(0, 4), va.substr(4, 2) - 1, 1);\n    }\n    else {\n      d = new Date();\n    }\n  }\n  if (typeof cond === \"undefined\" || typeof d === \"undefined\") {\n    return d;\n  }\n  else {\n    if (\"add\" in cond) {\n      d = (function (_d, opts) {\n        let yy, mm, dd, mxdd,\n            DyMilli = ((1000 * 60) * 60) * 24;\n\n        if (typeof opts[\"d\"] !== \"undefined\") {\n          _d.setTime(_d.getTime() + (opts[\"d\"] * DyMilli));\n        }\n        else if (typeof opts[\"m\"] !== \"undefined\") {\n          yy = _d.getFullYear();\n          mm = _d.getMonth();\n          dd = _d.getDate();\n          yy = yy + parseInt(opts[\"m\"] / 12);\n          mm += opts[\"m\"] % 12;\n          mxdd = daysOfMonth(yy, mm);\n          if (mxdd < dd) dd = mxdd;\n          _d = new Date(yy, mm, dd, 12);\n        }\n        else if (typeof opts[\"y\"] !== \"undefined\") {\n          _d.setTime(_d.getTime() + ((opts[\"y\"] * 365) * DyMilli));\n        }\n        else if (typeof opts[\"h\"] !== \"undefined\") {\n          _d.setTime(_d.getTime() + (opts[\"h\"] * 1000 * 60 * 60));\n        }\n\n        return _d;\n      })(new Date(d), cond[\"add\"]);\n    }\n    if (\"set\" in cond) {\n      d = (function (_d, opts) {\n        let yy, mm, dd,\n            processor = {\n              \"firstDayOfMonth\": function (date) {\n                yy = date.getFullYear();\n                mm = date.getMonth();\n                dd = 1;\n                return new Date(yy, mm, dd, 12);\n              },\n              \"lastDayOfMonth\": function (date) {\n                yy = date.getFullYear();\n                mm = date.getMonth();\n                dd = daysOfMonth(yy, mm);\n                return new Date(yy, mm, dd, 12);\n              }\n            };\n        if (opts in processor) {\n          return processor[opts](_d);\n        } else {\n          return _d;\n        }\n      })(new Date(d), cond[\"set\"]);\n    }\n    if (\"return\" in cond) {\n      return (function () {\n\n        let fStr = cond[\"return\"], nY, nM, nD, nH, nMM, nS, nDW,\n            yre, regY, mre, regM, dre, regD, hre, regH, mire, regMI, sre, regS, dwre, regDW;\n\n        nY = d.getUTCFullYear();\n        nM = setDigit(d.getMonth() + 1, 2);\n        nD = setDigit(d.getDate(), 2);\n        nH = setDigit(d.getHours(), 2);\n        nMM = setDigit(d.getMinutes(), 2);\n        nS = setDigit(d.getSeconds(), 2);\n        nDW = d.getDay();\n\n        yre = /[^y]*(yyyy)[^y]*/gi;\n        yre.exec(fStr);\n        regY = RegExp.$1;\n        mre = /[^m]*(MM)[^m]*/g;\n        mre.exec(fStr);\n        regM = RegExp.$1;\n        dre = /[^d]*(dd)[^d]*/gi;\n        dre.exec(fStr);\n        regD = RegExp.$1;\n        hre = /[^h]*(hh)[^h]*/gi;\n        hre.exec(fStr);\n        regH = RegExp.$1;\n        mire = /[^m]*(mm)[^i]*/g;\n        mire.exec(fStr);\n        regMI = RegExp.$1;\n        sre = /[^s]*(ss)[^s]*/gi;\n        sre.exec(fStr);\n        regS = RegExp.$1;\n        dwre = /[^d]*(dw)[^w]*/gi;\n        dwre.exec(fStr);\n        regDW = RegExp.$1;\n\n        if (regY === \"yyyy\") {\n          fStr = fStr.replace(regY, right(nY, regY.length));\n        }\n        if (regM === \"MM\") {\n          if (regM.length == 1) nM = (d.getMonth() + 1);\n          fStr = fStr.replace(regM, nM);\n        }\n        if (regD === \"dd\") {\n          if (regD.length == 1) nD = d.getDate();\n          fStr = fStr.replace(regD, nD);\n        }\n        if (regH === \"hh\") {\n          fStr = fStr.replace(regH, nH);\n        }\n        if (regMI === \"mm\") {\n          fStr = fStr.replace(regMI, nMM);\n        }\n        if (regS === \"ss\") {\n          fStr = fStr.replace(regS, nS);\n        }\n        if (regDW == \"dw\") {\n          fStr = fStr.replace(regDW, info.weekNames[nDW].label);\n        }\n        return fStr;\n      })();\n    }\n    else {\n      return d;\n    }\n  }\n}\n\nfunction dday(d, cond) {\n  let memoryDay = date(d), DyMilli = ((1000 * 60) * 60) * 24, today = new Date(), diffnum, thisYearMemoryDay;\n\n  function getDayTime(_d) {\n    return Math.floor(_d.getTime() / DyMilli) * DyMilli;\n  }\n\n  if (typeof cond === \"undefined\") {\n    diffnum = number((( getDayTime(memoryDay) - getDayTime(today) ) / DyMilli), {floor: true});\n    return diffnum;\n  }\n\n  else {\n    diffnum = number((( getDayTime(memoryDay) - getDayTime(today) ) / DyMilli), {floor: true});\n    if (cond[\"today\"]) {\n      today = date(cond.today);\n      diffnum = number((( getDayTime(memoryDay) - getDayTime(today) ) / DyMilli), {floor: true});\n    }\n    if (cond[\"thisYear\"]) {\n      thisYearMemoryDay = new Date(today.getFullYear(), memoryDay.getMonth(), memoryDay.getDate());\n      diffnum = number((( getDayTime(thisYearMemoryDay) - getDayTime(today) ) / DyMilli), {floor: true});\n      if (diffnum < 0) {\n        thisYearMemoryDay = new Date(today.getFullYear() + 1, memoryDay.getMonth(), memoryDay.getDate());\n        diffnum = number((( getDayTime(thisYearMemoryDay) - getDayTime(today) ) / DyMilli), {floor: true});\n      }\n    }\n    if (cond[\"age\"]) {\n      thisYearMemoryDay = new Date(today.getFullYear(), memoryDay.getMonth(), memoryDay.getDate());\n      diffnum = thisYearMemoryDay.getFullYear() - memoryDay.getFullYear();\n    }\n\n    return diffnum;\n  }\n}\n\nfunction weeksOfMonth(d) {\n  let myDate = date(d);\n  return {\n    year: myDate.getFullYear(),\n    month: myDate.getMonth() + 1,\n    count: parseInt(myDate.getDate() / 7 + 1)\n  };\n}\n\nfunction daysOfMonth(y, m) {\n  if (m == 3 || m == 5 || m == 8 || m == 10) {\n    return 30;\n  }\n  else if (m == 1) {\n    return (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)) ? 29 : 28;\n  }\n  else {\n    return 31;\n  }\n}\n\nfunction setDigit(num, length, padder, radix) {\n  let s = num.toString(radix || 10);\n  return times((padder || '0'), (length - s.length)) + s;\n}\n\nfunction times(s, count) {\n  return count < 1 ? '' : new Array(count + 1).join(s);\n}\n\nfunction findParentNode(_target, cond) {\n  if (_target) {\n    while ((function () {\n      let result = true;\n      if (typeof cond === \"undefined\") {\n        _target = (_target.parentNode) ? _target.parentNode : false;\n      }\n      else if (isFunction(cond)) {\n        result = cond(_target);\n      }\n      else if (isObject(cond)) {\n        for (let k in cond) {\n          if (k === \"tagname\") {\n            if (_target.tagName.toLocaleLowerCase() != cond[k]) {\n              result = false;\n              break;\n            }\n          }\n          else if (k === \"clazz\" || k === \"class_name\") {\n            if (\"className\" in _target) {\n              let klasss   = _target.className.split(reClassNameSplit),\n                  hasClass = false;\n\n              for (let a = 0; a < klasss.length; a++) {\n                if (klasss[a] == cond[k]) {\n                  hasClass = true;\n                  break;\n                }\n              }\n              result = hasClass;\n            }\n            else {\n              result = false;\n              break;\n            }\n          }\n          else { // 그외 속성값들.\n            if (_target.getAttribute) {\n              if (_target.getAttribute(k) != cond[k]) {\n                result = false;\n                break;\n              }\n            }\n            else {\n              result = false;\n              break;\n            }\n          }\n        }\n      }\n      return !result;\n    })()) {\n      if (_target.parentNode && _target.parentNode.parentNode) {\n        _target = _target.parentNode;\n      }\n      else {\n        _target = false;\n        break;\n      }\n    }\n  }\n  return _target;\n}\n\nfunction cssNumber(val) {\n  let re    = /\\D?(\\d+)([a-zA-Z%]*)/i,\n      found = ('' + val).match(re),\n      unit  = found[2] || \"px\";\n\n  return found[1] + unit;\n}\n\nfunction css(val) {\n  let returns;\n  if (isObject(val)) {\n    returns = '';\n    for (let k in val) {\n      returns += k + ':' + val[k] + ';';\n    }\n    return returns;\n  }\n  else if (isString(val)) {\n    returns = {};\n    let valSplited = val.split(/[ ]*;[ ]*/g);\n    valSplited.forEach(function (v) {\n      if ((v = v.trim()) !== \"\") {\n        var vSplited = v.split(/[ ]*:[ ]*/g);\n        returns[vSplited[0]] = vSplited[1];\n      }\n    });\n    return returns;\n  }\n}\n\nfunction stopEvent(e) {\n  // 이벤트 중지 구문\n  if (!e) e = window.event;\n\n  //e.cancelBubble is supported by IE -\n  // this will kill the bubbling process.\n  e.cancelBubble = true;\n  e.returnValue = false;\n\n  //e.stopPropagation works only in Firefox.\n  if (e.stopPropagation) e.stopPropagation();\n  if (e.preventDefault) e.preventDefault();\n\n  return false;\n  // 이벤트 중지 구문 끝\n}\n\nconst selectRange = (function () {\n  const processor = {\n    'textRange': {\n      'selectAll': function (el, range, offset) {\n\n      },\n      'arr': function (el, range, offset) {\n        range.moveStart(\"character\", offset[0]); // todo ie node select 체크필요\n        range.collapse();\n        range.moveEnd(\"character\", offset[1]);\n      },\n      'start': function (el, range, offset) {\n        range.moveStart(\"character\", 0);\n        range.collapse();\n      },\n      'end': function (el, range, offset) {\n        range.moveStart(\"character\", range.text.length);\n        range.collapse();\n      }\n    },\n    'range': {\n      'selectAll': function (el, range, offset) {\n        range.selectNodeContents(el);\n      },\n      'arr': function (el, range, offset) {\n        if (isObject(offset[0])) {\n          range.setStart(offset[0].node, offset[0].offset);\n          range.setEnd(offset[1].node, offset[1].offset);\n        }\n        else {\n          range.setStart(el.firstChild, offset[0]);\n          range.setEnd(el.firstChild, offset[1]);\n        }\n      },\n      'start': function (el, range, offset) {\n        range.selectNodeContents(el);\n        range.collapse(true);\n      },\n      'end': function (el, range, offset) {\n        range.selectNodeContents(el);\n        range.collapse(false);\n      }\n    }\n  };\n  return function (el, offset) {\n    let range, rangeType, selection;\n\n    if (el instanceof jQuery) {\n      el = el.get(0);\n    }\n    if (!el) return;\n\n    // 레인지 타입 선택\n    if (doc.body.createTextRange) {\n      range = document.body.createTextRange();\n      range.moveToElementText(el);\n      rangeType = \"textRange\";\n    }\n    else if (window.getSelection) {\n      selection = window.getSelection();\n      range = document.createRange();\n      rangeType = \"range\";\n    }\n\n    // range 적용\n    if (typeof offset == \"undefined\") {\n      processor[rangeType].selectAll.call(this, el, range, offset);\n    }\n    else if (isArray(offset)) {\n      processor[rangeType].arr.call(this, el, range, offset);\n    }\n    else {\n      for (var key in processor[rangeType]) {\n        if (offset == key) {\n          processor[rangeType][key].call(this, el, range, offset);\n          break;\n        }\n      }\n    }\n\n    // 포커스 및 셀렉트\n    if (doc.body.createTextRange) {\n      range.select();\n      el.focus();\n    }\n    else if (window.getSelection) {\n      el.focus();\n      selection.removeAllRanges();\n      selection.addRange(range);\n    }\n\n  }\n})();\n\n// https://github.com/lodash/lodash/blob/master/debounce.js\nconst debounce = function (func, wait, options) {\n  let lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime;\n\n  let lastInvokeTime = 0;\n  let leading = false;\n  let maxing = false;\n  let trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError('Expected a function')\n  }\n  wait = +wait || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? Math.max(+options.maxWait || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    const args = lastArgs;\n    const thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    const timeSinceLastCall = time - lastCallTime;\n    const timeSinceLastInvoke = time - lastInvokeTime;\n    const result = wait - timeSinceLastCall;\n\n    return maxing ? Math.min(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    const timeSinceLastCall = time - lastCallTime;\n    const timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait))\n  }\n\n  function timerExpired() {\n    const time = Date.now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time)\n    }\n    lastArgs = lastThis = undefined;\n    return result\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(Date.now())\n  }\n\n  function debounced(...args) {\n    const time = Date.now();\n    const isInvoking = shouldInvoke(time);\n\n    lastArgs = args;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime)\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime)\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait)\n    }\n    return result\n  }\n\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced\n};\n\n//https://github.com/lodash/lodash/blob/master/throttle.js\nconst throttle = function (func, wait, options) {\n  let leading = true;\n  let trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError('Expected a function');\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n};\n\n\nfunction deepCopy(obj) {\n  let r, l;\n  if (typeof obj == 'object') {\n    if (isArray(obj)) {\n      l = obj.length;\n      r = new Array(l);\n      for (let i = 0; i < l; i++) {\n        r[i] = deepCopy(obj[i]);\n      }\n      return r;\n    } else {\n      return Object.assign({}, obj);\n    }\n  }\n  return obj;\n}\n\n// jQuery extend\nfunction extend() {\n  let options, name, src, copy, copyIsArray, clone,\n      target = arguments[0] || {},\n      i      = 1,\n      length = arguments.length,\n      deep   = false;\n\n  // Handle a deep copy situation\n  if (typeof target === \"boolean\") {\n    deep = target;\n\n    // Skip the boolean and the target\n    target = arguments[i] || {};\n    i++;\n  }\n\n  // Handle case when target is a string or something (possible in deep copy)\n  if (typeof target !== \"object\" && !isFunction(target)) {\n    target = {};\n  }\n\n  // Extend jQuery itself if only one argument is passed\n  if (i === length) {\n    target = this;\n    i--;\n  }\n\n  for (; i < length; i++) {\n\n    // Only deal with non-null/undefined values\n    if (( options = arguments[i] ) != null) {\n\n      // Extend the base object\n      for (name in options) {\n        src = target[name];\n        copy = options[name];\n\n        // Prevent never-ending loop\n        if (target === copy) {\n          continue;\n        }\n\n        // Recurse if we're merging plain objects or arrays\n        if (deep && copy && ( isPlainObject(copy) ||\n            ( copyIsArray = isArray(copy) ) )) {\n\n          if (copyIsArray) {\n            copyIsArray = false;\n            clone = src && isArray(src) ? src : [];\n\n          } else {\n            clone = src && isPlainObject(src) ? src : {};\n          }\n\n          // Never move original objects, clone them\n          target[name] = extend(deep, clone, copy);\n\n          // Don't bring in undefined values\n        } else if (copy !== undefined) {\n          target[name] = copy;\n        }\n      }\n    }\n  }\n\n  // Return the modified object\n  return target;\n}\n\nfunction escapeHtml(s) {\n  if (_toString.call(s) != \"[object String]\") return s;\n  if (!s) return \"\";\n  return s.replace(/[\\<\\>\\&\\\"]/gm, function (match) {\n    switch (match) {\n      case \"<\":\n        return \"&lt;\";\n      case \">\":\n        return \"&gt;\";\n      case \"&\":\n        return \"&amp;\";\n      case \"\\\"\":\n        return \"&quot;\";\n      default:\n        return match;\n    }\n  });\n}\n\nfunction unescapeHtml(s) {\n  if (_toString.call(s) != \"[object String]\") return s;\n  if (!s) return \"\";\n  return s.replace(/(&lt;)|(&gt;)|(&amp;)|(&quot;)/gm, function (match) {\n    switch (match) {\n      case \"&lt;\":\n        return \"<\";\n      case \"&gt;\":\n        return \">\";\n      case \"&amp;\":\n        return \"&\";\n      case \"&quot;\":\n        return \"\\\"\";\n      default:\n        return match;\n    }\n  });\n}\n\n/**\n * @namespace ax6string\n * @example\n * ```js\n * AX6Util.string(\"{0} is dead\").format(\"A\");\n * AX6Util.string(\"String\").escape();\n * AX6Util.string(\"String\").unescape();\n * AX6Util.string(\"String\").encode();\n * AX6Util.string(\"String\").decode();\n * AX6Util.string(\"String\").left(1);\n * AX6Util.string(\"String\").right(1);\n * AX6Util.string(\"String\").camelCase();\n * AX6Util.string(\"String\").snakeCase();\n * ```\n */\n\nfunction string(_string) {\n  return new (function (_string) {\n    this.value = _string;\n    this.toString = function () {\n      return this.value;\n    };\n    this.format = function () {\n      let args = [];\n      for (let i = 0, l = arguments.length; i < l; i++) {\n        args = args.concat(arguments[i]);\n      }\n      return this.value.replace(/{(\\d+)}/g, function (match, number) {\n        return typeof args[number] != 'undefined' ? args[number] : match;\n      });\n    };\n    this.escape = function () {\n      return escapeHtml(this.value);\n    };\n    this.unescape = function () {\n      return unescapeHtml(this.value);\n    };\n    this.encode = function () {\n      return encode(this.value);\n    };\n    this.decode = function () {\n      return decode(this.value);\n    };\n    this.left = function (_pos) {\n      return left(this.value, _pos);\n    };\n    this.right = function (_pos) {\n      return right(this.value, _pos);\n    };\n    this.camelCase = function () {\n      return camelCase(this.value);\n    };\n    this.snakeCase = function () {\n      return snakeCase(this.value);\n    };\n  })(_string);\n}\n\nfunction color(_hexColor) {\n\n  const matchers = (function () {\n\n    // <http://www.w3.org/TR/css3-values/#integers>\n    const CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n    // <http://www.w3.org/TR/css3-values/#number-value>\n    const CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n    // Allow positive/negative integer/number.  Don't capture the either/or, just the entire outcome.\n    const CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n    // Actual matching.\n    // Parentheses and commas are optional, but not required.\n    // Whitespace can take the place of commas or opening paren\n    const PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n    const PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n    return {\n      CSS_UNIT: new RegExp(CSS_UNIT),\n      rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n      rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n      hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n      hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n      hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n      hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n      hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n      hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n      hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n      hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n    };\n  })();\n\n  const convertObject = function (_color) {\n    let match;\n    if ((match = matchers.rgb.exec(_color))) {\n      return {r: match[1], g: match[2], b: match[3]};\n    }\n    if ((match = matchers.rgba.exec(_color))) {\n      return {r: match[1], g: match[2], b: match[3], a: match[4]};\n    }\n    if ((match = matchers.hsl.exec(_color))) {\n      return {h: match[1], s: match[2], l: match[3]};\n    }\n    if ((match = matchers.hsla.exec(_color))) {\n      return {h: match[1], s: match[2], l: match[3], a: match[4]};\n    }\n    if ((match = matchers.hsv.exec(_color))) {\n      return {h: match[1], s: match[2], v: match[3]};\n    }\n    if ((match = matchers.hsva.exec(_color))) {\n      return {h: match[1], s: match[2], v: match[3], a: match[4]};\n    }\n    if ((match = matchers.hex8.exec(_color))) {\n      return {\n        r: parseInt(match[1], 16),\n        g: parseInt(match[2], 16),\n        b: parseInt(match[3], 16),\n        a: parseInt((match[4]) / 255, 16),\n        format: \"hex8\"\n      };\n    }\n    if ((match = matchers.hex6.exec(_color))) {\n      return {\n        r: parseInt(match[1], 16),\n        g: parseInt(match[2], 16),\n        b: parseInt(match[3], 16),\n        format: \"hex\"\n      };\n    }\n    if ((match = matchers.hex4.exec(_color))) {\n      return {\n        r: parseInt(match[1] + '' + match[1], 16),\n        g: parseInt(match[2] + '' + match[2], 16),\n        b: parseInt(match[3] + '' + match[3], 16),\n        a: parseInt(match[4] + '' + match[4], 16),\n        format: \"hex8\"\n      };\n    }\n    if ((match = matchers.hex3.exec(_color))) {\n      return {\n        r: parseInt(match[1] + '' + match[1], 16),\n        g: parseInt(match[2] + '' + match[2], 16),\n        b: parseInt(match[3] + '' + match[3], 16),\n        format: \"hex\"\n      };\n    }\n\n    return false;\n  };\n\n  function isOnePointZero(n) {\n    return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n  }\n\n  function isPercentage(n) {\n    return typeof n === \"string\" && n.indexOf('%') != -1;\n  }\n\n  function convertToPercentage(n) {\n    if (n <= 1) {\n      n = (n * 100) + \"%\";\n    }\n\n    return n;\n  }\n\n  function convertTo255(n) {\n    return number(Math.min(255, Math.max(n, 0)), {'round': 2});\n  }\n\n  function convertToHex(n) {\n    return setDigit(Math.round(n).toString(16), 2)\n  }\n\n  function bound01(n, max) {\n    if (isOnePointZero(n)) {\n      n = \"100%\";\n    }\n\n    let processPercent = isPercentage(n);\n    n = Math.min(max, Math.max(0, parseFloat(n)));\n\n    // Automatically convert percentage into number\n    if (processPercent) {\n      n = parseInt(n * max, 10) / 100;\n    }\n\n    // Handle floating point rounding errors\n    if ((Math.abs(n - max) < 0.000001)) {\n      return 1;\n    }\n\n    // Convert into [0, 1] range if it isn't already\n    return (n % max) / parseFloat(max);\n  }\n\n  function rgbToHsl(r, g, b) {\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n\n    let max = Math.max(r, g, b), min = Math.min(r, g, b);\n    let h, s, l = (max + min) / 2;\n\n    if (max == min) {\n      h = s = 0; // achromatic\n    }\n    else {\n      let d = max - min;\n      s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n      switch (max) {\n        case r:\n          h = (g - b) / d + (g < b ? 6 : 0);\n          break;\n        case g:\n          h = (b - r) / d + 2;\n          break;\n        case b:\n          h = (r - g) / d + 4;\n          break;\n      }\n\n      h /= 6;\n    }\n\n    return {h: h, s: s, l: l};\n  }\n\n  function hslToRgb(h, s, l) {\n    let r, g, b;\n\n    h = bound01(h, 360);\n    s = bound01(s, 100);\n    l = bound01(l, 100);\n\n    function hue2rgb(p, q, t) {\n      if (t < 0) t += 1;\n      if (t > 1) t -= 1;\n      if (t < 1 / 6) return p + (q - p) * 6 * t;\n      if (t < 1 / 2) return q;\n      if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n      return p;\n    }\n\n    if (s === 0) {\n      r = g = b = l; // achromatic\n    }\n    else {\n      let q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n      let p = 2 * l - q;\n      r = hue2rgb(p, q, h + 1 / 3);\n      g = hue2rgb(p, q, h);\n      b = hue2rgb(p, q, h - 1 / 3);\n    }\n\n    return {r: r * 255, g: g * 255, b: b * 255};\n  }\n\n  return new (function (_color) {\n    this._originalValue = _color;\n    _color = convertObject(_color);\n    this.r = _color.r;\n    this.g = _color.g;\n    this.b = _color.b;\n    this.a = _color.a || 1;\n    this._format = _color.format;\n    this._hex = convertToHex(this.r) + convertToHex(this.g) + convertToHex(this.b);\n\n    this.getHexValue = function () {\n      return this._hex;\n    };\n\n    this.lighten = function (amount) {\n      amount = (amount === 0) ? 0 : (amount || 10);\n      let hsl = rgbToHsl(this.r, this.g, this.b), rgb = {};\n\n      hsl.l += amount / 100;\n      hsl.l = Math.min(1, Math.max(0, hsl.l));\n      hsl.h = hsl.h * 360;\n\n      rgb = hslToRgb(hsl.h, convertToPercentage(hsl.s), convertToPercentage(hsl.l));\n\n      return color('rgba(' + convertTo255(rgb.r) + ', ' + convertTo255(rgb.g) + ', ' + convertTo255(rgb.b) + ', ' + this.a + ')');\n    };\n\n    this.darken = function (amount) {\n      amount = (amount === 0) ? 0 : (amount || 10);\n      let hsl = rgbToHsl(this.r, this.g, this.b), rgb = {};\n\n      hsl.l -= amount / 100;\n      hsl.l = Math.min(1, Math.max(0, hsl.l));\n      hsl.h = hsl.h * 360;\n\n      rgb = hslToRgb(hsl.h, convertToPercentage(hsl.s), convertToPercentage(hsl.l));\n\n      return color('rgba(' + convertTo255(rgb.r) + ', ' + convertTo255(rgb.g) + ', ' + convertTo255(rgb.b) + ', ' + this.a + ')');\n    };\n\n    this.getBrightness = function () {\n      return (this.r * 299 + this.g * 587 + this.b * 114) / 1000;\n    };\n\n    this.isDark = function () {\n      return this.getBrightness() < 128;\n    };\n\n    this.isLight = function () {\n      return !this.isDark();\n    };\n\n    this.getHsl = function () {\n      let hsl = rgbToHsl(this.r, this.g, this.b);\n      hsl.l = Math.min(1, Math.max(0, hsl.l));\n      hsl.h = hsl.h * 360;\n      return {\n        h: hsl.h,\n        s: hsl.s,\n        l: hsl.l\n      }\n    };\n\n  })(_hexColor);\n}\n\nexport default {\n\n  /**\n   * jsonString 으로 alert 합니다.\n   * @param {Object|Array|String|Number} O\n   * @returns {Object|Array|String|Number} O\n   * @example ```js\n   * AX6Util.alert({a:1,b:2});\n   * AX6Util.alert(\"정말?\");\n   * ```\n   */\n  alert: alert,\n  /**\n   * Object나 Array의 아이템으로 사용자 함수를 호출합니다.\n   * @param {Object|Array} O\n   * @param {Function} _fn\n   * @example\n   * ```js\n   * var axf = AX6Util;\n   * axf.each([0,1,2], function(){\n\t\t * \t// with this\n\t\t * });\n   * axf.each({a:1, b:2}, function(){\n\t\t * \t// with this\n\t\t * });\n   * ```\n   */\n  each: each,\n  /**\n   * 원본 아이템들을 이용하여 사용자 함수의 리턴값이 참인 아이템의 위치나 키값을 반환합니다.\n   * @param {Object|Array} O\n   * @param {Function|String|Number} _fn - 함수 또는 값\n   * @returns {Number|String}\n   * @example\n   * ```js\n   * var myArray = [0,1,2,3,4,5,6];\n   * var myObject = {a:\"123\",\"b\":\"123\",c:123};\n   *\n   * AX6Util.search(myArray,  function(){\n\t\t *    return this > 3;\n\t\t * });\n   * // 4\n   * AX6Util.search(myObject,  function(k, v){\n\t\t *    return v === 123;\n\t\t * });\n   * // \"c\"\n   * AX6Util.search([1,2,3,4], 3);\n   * // 2\n   * AX6Util.search([1,2], 4);\n   * // -1\n   * AX6Util.search([\"name\",\"value\"], \"value\");\n   * // 1\n   * AX6Util.search([\"name\",\"value\"], \"values\");\n   * // -1\n   * AX6Util.search({k1:\"name\",k2:\"value\"}, \"value2\");\n   * // -1\n   * AX6Util.search({k1:\"name\",k2:\"value\"}, \"value\");\n   * // \"k2\"\n   * ```\n   */\n  search: search,\n  /**\n   * 배열또는 오브젝트의 각 아이템을 인자로 하는 사용자 함수의 결과가 참인 아이템들의 배열을 반환합니다.\n   * @param {Object|Array} O\n   * @param {Function} _fn\n   * @returns {Array}\n   * @example\n   * ```js\n   * var aarray = [5,4,3,2,1];\n   * result = AX6Util.filter( aarray, function(){\n\t\t *    return this % 2;\n\t\t * });\n   * console.log(result);\n   * // [5, 3, 1]\n   *\n   * var filObject = {a:1, s:\"string\", oa:{pickup:true, name:\"AXISJ\"}, os:{pickup:true, name:\"AX5\"}};\n   * result = AX6Util.filter( filObject, function(){\n\t\t * \treturn this.pickup;\n\t\t * });\n   * console.log( AX6Util.toJson(result) );\n   * // [{\"pickup\": , \"name\": \"AXISJ\"}, {\"pickup\": , \"name\": \"AX5\"}]\n   * ```\n   */\n  filter: filter,\n  /**\n   * Object를 JSONString 으로 반환합니다.\n   * @method AX6Util.toJson\n   * @param {Object|Array} O\n   * @returns {String} JSON\n   * @example\n   * ```js\n   * var ax = AX6Util;\n   * var myObject = {\n\t\t *    a:1, b:\"2\", c:{axj:\"what\", arrs:[0,2,\"3\"]},\n\t\t *    fn: function(abcdd){\n\t\t *        return abcdd;\n\t\t *    }\n\t\t * };\n   * console.log( ax.toJson(myObject) );\n   * ```\n   */\n  toJson: toJson,\n  /**\n   * 관용의 JSON Parser\n   * @param {String} JSONString\n   * @param {Boolean} [force] - 강제 적용 여부 (json 문자열 검사를 무시하고 오브젝트 변환을 시도합니다.)\n   * @returns {Object}\n   * @example\n   * ```\n   * console.log(AX6Util.parseJson('{\"a\":1}'));\n   * // Object {a: 1}\n   * console.log(AX6Util.parseJson(\"{'a':1, 'b':'b'}\"));\n   * // Object {a: 1, b: \"b\"}\n   * console.log(AX6Util.parseJson(\"{'a':1, 'b':function(){return 1;}}\", true));\n   * // Object {a: 1, b: function}\n   * console.log(AX6Util.parseJson(\"{a:1}\"));\n   * // Object {a: 1}\n   * console.log(AX6Util.parseJson(\"[1,2,3]\"));\n   * // [1, 2, 3]\n   * console.log(AX6Util.parseJson(\"['1','2','3']\"));\n   * // [\"1\", \"2\", \"3\"]\n   * console.log(AX6Util.parseJson(\"[{'a':'99'},'2','3']\"));\n   * // [Object, \"2\", \"3\"]\n   * ```\n   */\n  parseJson: parseJson,\n  /**\n   * 오브젝트의 첫번째 아이템을 반환합니다.\n   * @param {Object|Array} O\n   * @returns {Object}\n   * @example\n   * ```js\n   * AX6Util.first({a:1, b:2});\n   * // Object {a: 1}\n   * AX6Util.first([1,2,3,4]);\n   * // 1\n   * ```\n   */\n  first: first,\n  /**\n   * 오브젝트의 마지막 아이템을 반환합니다.\n   * @param {Object|Array} O\n   * @returns {Object}\n   * @example\n   * ```js\n   * AX6Util.last({a:1, b:2});\n   * // Object {b: 2}\n   * AX6Util.last([1,2,3,4]);\n   * // 4\n   * ```\n   */\n  last: last,\n  /**\n   * 문자열의 특정 문자열까지 잘라주거나 원하는 포지션까지 잘라줍니다.\n   * @param {String} str - 문자열\n   * @param {String|Number} pos - 찾을 문자열 또는 포지션\n   * @returns {String}\n   * @example\n   * ```js\n   * AX6Util.left(\"abcd.efd\", 3);\n   * // abc\n   * AX6Util.left(\"abcd.efd\", \".\");\n   * // abcd\n   * ```\n   */\n  left: left,\n  /**\n   * 문자열의 특정 문자열까지 잘라주거나 원하는 포지션까지 잘라줍니다.\n   * @param {String} str - 문자열\n   * @param {String|Number} pos - 찾을 문자열 또는 포지션\n   * @returns {String}\n   * @example\n   * ```js\n   * AX6Util.right(\"abcd.efd\", 3);\n   * // efd\n   * AX6Util.right(\"abcd.efd\", \".\");\n   * // efd\n   * ```\n   */\n  right: right,\n  /**\n   * 인자의 타입을 반환합니다.\n   * @param {Object|Array|String|Number|Element|Etc} O\n   * @returns {String} window|element|object|array|function|string|number|undefined|nodelist\n   * @example\n   * ```js\n   * var axf = AX6Util;\n   * var a = 11;\n   * var b = \"11\";\n   * console.log( axf.getType(a) );\n   * console.log( axf.getType(b) );\n   * ```\n   */\n  getType: getType,\n  /**\n   * 오브젝트가 window 인지 판단합니다.\n   * @param {Object} O\n   * @returns {Boolean}\n   */\n  isWindow: isWindow,\n  /**\n   * 오브젝트가 HTML 엘리먼트여부인지 판단합니다.\n   * @param {Object} O\n   * @returns {Boolean}\n   */\n  isElement: isElement,\n  /**\n   * 오브젝트가 Object인지 판단합니다.\n   * @param {Object} O\n   * @returns {Boolean}\n   */\n  isObject: isObject,\n  /**\n   * 오브젝트가 Array인지 판단합니다.\n   * @param {Object} O\n   * @returns {Boolean}\n   */\n  isArray: isArray,\n  /**\n   * 오브젝트가 Function인지 판단합니다.\n   * @param {Object} O\n   * @returns {Boolean}\n   */\n  isFunction: isFunction,\n  /**\n   * 오브젝트가 String인지 판단합니다.\n   * @param {Object} O\n   * @returns {Boolean}\n   */\n  isString: isString,\n  /**\n   * 오브젝트가 Number인지 판단합니다.\n   * @param {Object} O\n   * @returns {Boolean}\n   */\n  isNumber: isNumber,\n  /**\n   * 오브젝트가 NodeList인지 판단합니다.\n   * @param {Object} O\n   * @returns {Boolean}\n   */\n  isNodelist: isNodelist,\n  /**\n   * 오브젝트가 undefined인지 판단합니다.\n   * @param {Object} O\n   * @returns {Boolean}\n   */\n  isUndefined: isUndefined,\n  /**\n   * 오브젝트가 undefined이거나 null이거나 빈값인지 판단합니다.\n   * @param {Object} O\n   * @returns {Boolean}\n   */\n  /**\n   * 오브젝트가 날자값인지 판단합니다.\n   * @param {Date} O\n   * @returns {Boolean}\n   * @example\n   * ```js\n   * AX6Util.isDate('2016-09-30');\n   * // false\n   * AX6Util.isDate( new Date('2016-09-30') );\n   * // true\n   * ```\n   */\n  isDate: isDate,\n  /**\n   * 오브젝트가 날짜형 변수인지 판단합니다\n   */\n  isDateFormat: isDateFormat,\n  /**\n   * @param {*} object\n   * @return {Boolean}\n   */\n  isNothing: isNothing,\n  /**\n   * @param {*} object\n   * @return {Boolean}\n   */\n  isPlainObject: isPlainObject,\n  /**\n   * 쿠키를 설정합니다.\n   * @param {String} cname - 쿠키이름\n   * @param {String} cvalue - 쿠키값\n   * @param {Number} [exdays] - 쿠키 유지일수\n   * @param {Object} [opts] - path, domain 설정 옵션\n   * @example\n   * ```js\n   * AX6Util.setCookie(\"jslib\", \"AX5\");\n   * AX6Util.setCookie(\"jslib\", \"AX5\", 3);\n   * AX6Util.setCookie(\"jslib\", \"AX5\", 3, {path:\"/\", domain:\".axisj.com\"});\n   * ```\n   */\n  setCookie: setCookie,\n  /**\n   * 쿠키를 가져옵니다.\n   * @param {String} cname\n   * @returns {String} cookie value\n   * @example\n   * ```js\n   * AX6Util.getCookie(\"jslib\");\n   * ```\n   */\n  getCookie: getCookie,\n  /**\n   * css형 문자열이나 특수문자가 포함된 문자열을 카멜케이스로 바꾸어 반환합니다.\n   * @param {String} str\n   * @returns {String}\n   * @example\n   * ```js\n   * AX6Util.camelCase(\"inner-width\");\n   * AX6Util.camelCase(\"innerWidth\");\n   * // innerWidth\n   * ```\n   */\n  camelCase: camelCase,\n  /**\n   * css형 문자열이나 카멜케이스문자열을 스네이크 케이스 문자열로 바꾸어 반환합니다.\n   * @param {String} str\n   * @returns {String}\n   * @example\n   * ```js\n   * AX6Util.snakeCase(\"innerWidth\");\n   * AX6Util.snakeCase(\"inner-Width\");\n   * AX6Util.snakeCase(\"innerWidth\");\n   * // inner-width\n   * ```\n   */\n  snakeCase: snakeCase,\n  /**\n   * 문자열에서 -. 을 제외한 모든 문자열을 제거하고 숫자로 반환합니다. 옵션에 따라 원하는 형식의 숫자로 변환 할 수 도 있습니다.\n   * @param {String|Number} str\n   * @param {Object} cond - 옵션\n   * @returns {String|Number}\n   * @example\n   * ```js\n   * var cond = {\n\t\t * \tround: {Number|Boolean} - 반올림할 자릿수,\n\t\t * \tmoney: {Boolean} - 통화,\n\t\t * \tabs: {Boolean} - 절대값,\n\t\t * \tbyte: {Boolean} - 바이트\n\t\t * }\n   *\n   * console.log(AX6Util.number(123456789.678, {round:1}));\n   * console.log(AX6Util.number(123456789.678, {round:1, money:true}));\n   * console.log(AX6Util.number(123456789.678, {round:2, byte:true}));\n   * console.log(AX6Util.number(-123456789.8888, {abs:true, round:2, money:true}));\n   * console.log(AX6Util.number(\"A-1234~~56789.8~888PX\", {abs:true, round:2, money:true}));\n   *\n   * //123456789.7\n   * //123,456,789.7\n   * //117.7MB\n   * //123,456,789.89\n   * //123,456,789.89\n   * ```\n   */\n  number: number,\n  /**\n   * 배열 비슷한 오브젝트를 배열로 변환해줍니다.\n   * @param {Object|Elements|Arguments} O\n   * @returns {Array}\n   * @example\n   * ```js\n   * AX6Util.toArray(arguments);\n   * //\n   * ```\n   */\n  toArray: toArray,\n  /**\n   * 오브젝트를 파라미터형식으로 또는 파라미터를 오브젝트 형식으로 변환합니다.\n   * @param {Object|Array|String} O\n   * @param {String} [cond] - param|object\n   * @returns {Object|String}\n   * @example\n   * ```\n   * AX6Util.param({a:1,b:'1232'}, \"param\");\n   * AX6Util.param(\"a=1&b=1232\", \"param\");\n   * // \"a=1&b=1232\"\n   * AX6Util.param(\"a=1&b=1232\");\n   * // {a: \"1\", b: \"1232\"}\n   * ```\n   */\n  param: param,\n  error: error,\n  /**\n   * 날짜 형식의 문자열이나 Date객체를 조건에 맞게 처리 한 후 원하는 return 값으로 반환합니다.\n   * @param {String|Date} d\n   * @param {Object} cond\n   * @returns {Date|String}\n   * @example\n   * ```js\n   * AX6Util.date('2013-01-01'); // Tue Jan 01 2013 23:59:00 GMT+0900 (KST)\n   * AX6Util.date((new Date()), {add:{d:10}, return:'yyyy/MM/dd'}); // \"2015/07/01\"\n   * AX6Util.date('1919-03-01', {add:{d:10}, return:'yyyy/MM/dd hh:mm:ss'}); // \"1919/03/11 23:59:00\"\n   * ```\n   */\n  date: date,\n  /**\n   * 인자인 날짜가 오늘부터 몇일전인지 반환합니다. 또는 인자인 날짜가 가까운 미래에 몇일 후인지 반환합니다.\n   * @param {String|Data} d\n   * @param {Object} cond\n   * @returns {Number}\n   * @example\n   * ```js\n   * AX6Util.dday('2016-01-29');\n   * // 1\n   * AX6Util.dday('2016-01-29', {today:'2016-01-28'});\n   * // 1\n   * AX6Util.dday('1977-03-29', {today:'2016-01-28', age:true});\n   * // 39\n   * ```\n   */\n  dday: dday,\n  /**\n   * 년월에 맞는 날자수를 반환합니다.\n   * (new Date()).getMonth() 기준으로 월값을 보냅니다. \"2월\" 인경우 \"1\" 을 넘기게 됩니다.\n   * @param {Number} y\n   * @param {Number} m\n   * @returns {Number}\n   * @examples\n   * ```js\n   * AX6Util.daysOfMonth(2015, 11); // 31\n   * AX6Util.daysOfMonth(2015, 1); // 28\n   * ```\n   */\n  daysOfMonth: daysOfMonth,\n  /**\n   * 인자인 날짜가 몇년 몇월의 몇번째 주차인지 반환합니다.\n   * @param {String|Data} d\n   * @returns {Object}\n   * @example\n   * ```js\n   * AX6Util.weeksOfMonth(\"2015-10-01\"); // {year: 2015, month: 10, count: 1}\n   * AX6Util.weeksOfMonth(\"2015-09-19\"); // {year: 2015, month: 9, count: 3}\n   * ```\n   */\n  weeksOfMonth: weeksOfMonth,\n  /**\n   * 원하는 횟수 만큼 자릿수 맞춤 문자열을 포함한 문자열을 반환합니다.\n   * 문자열 길이보다 작은값을 보내면 무시됩니다.\n   * @param {String|Number} num\n   * @param {Number} length\n   * @param {String} [padder=0]\n   * @param {Number} [radix]\n   * @returns {String}\n   * @example\n   * ```\n   * AX6Util.setDigit(2016, 6)\n   * // \"002016\"\n   * AX6Util.setDigit(2016, 2)\n   * // \"2016\"\n   * ```\n   */\n  setDigit: setDigit,\n  /**\n   * 문자열을 지정된 수만큼 반복 합니다.\n   * @param {String} s\n   * @param {Number} count\n   * @returns {string}\n   * @example\n   * ```\n   * AX6Util.times(2016, 2)\n   * //\"20162016\"\n   * ```\n   */\n  times: times,\n  /**\n   * 타겟엘리먼트의 부모 엘리멘트 트리에서 원하는 조건의 엘리먼트를 얻습니다.\n   * @param {Element} _target - target element\n   * @param {Object|Function} cond - 원하는 element를 찾을 조건\n   * @returns {Element}\n   * @example\n   * ```\n   * // cond 속성정의\n   * var cond = {\n\t\t * \ttagname: {String} - 태그명 (ex. a, div, span..),\n\t\t * \tclazz: {String} - 클래스명\n\t\t * \t[, 그 외 찾고 싶은 attribute명들]\n\t\t * };\n   * console.log(\n   * console.log(\n   *    AX6Util.findParentNode(e.target, {tagname:\"a\", clazz:\"ax-menu-handel\", \"data-custom-attr\":\"attr_value\"})\n   * );\n   * // cond 함수로 처리하기\n   * jQuery('#id').bind(\"click.app_expand\", function(e){\n\t\t * \tvar target = AX6Util.findParentNode(e.target, function(target){\n\t\t * \t\tif($(target).hasClass(\"aside\")){\n\t\t * \t\t\treturn true;\n\t\t * \t\t}\n\t\t * \t\telse{\n\t\t * \t\t\treturn true;\n\t\t * \t\t}\n\t\t * \t});\n\t\t * \t//client-aside\n\t\t * \tif(target.id !== \"client-aside\"){\n\t\t * \t\t// some action\n\t\t * \t}\n\t\t * });\n   * ```\n   */\n  findParentNode: findParentNode,\n  /**\n   * @param {String|Number} val\n   * @returns {String}\n   * @example\n   * ```\n   * console.log(AX6Util.cssNumber(\"100px\"))\n   * console.log(AX6Util.cssNumber(\"100%\"))\n   * console.log(AX6Util.cssNumber(\"100\"))\n   * console.log(AX6Util.cssNumber(100))\n   * console.log(AX6Util.cssNumber(\"!!100@#\"))\n   * ```\n   */\n  cssNumber: cssNumber,\n  /**\n   * css string 및 object 를 넘기면 object 및 string 으로 변환되어 리턴됩니다.\n   * @param {Object|String} val - CSS String or CSS Object\n   * @returns {String|Object}\n   * @example\n   * ```\n   * console.log(AX6Util.css({background: \"#ccc\", padding: \"50px\", width: \"100px\"}));\n   * //\"background:#ccc;padding:50px;width:100px;\"\n   * console.log(AX6Util.css('width:100px;padding: 50px; background: #ccc'));\n   * // object {width: \"100px\", padding: \"50px\", background: \"#ccc\"}\n   * ```\n   */\n  css: css,\n  /**\n   * @param {Event} e\n   * @example\n   * ```\n   * AX6Util.stopEvent(e);\n   * ```\n   */\n  stopEvent: stopEvent,\n  /**\n   * @param {Element} el\n   * @param {Element} offset\n   * @example\n   * ```\n   * AX6Util.selectRange($(\"#select-test-0\")); // selectAll\n   * AX6Util.selectRange($(\"#select-test-0\"), \"selectAll\"); //selectAll\n   * AX6Util.selectRange($(\"#select-test-0\"), \"start\"); // focus on start\n   * AX6Util.selectRange($(\"#select-test-0\"), \"end\"); // focus on end\n   * AX6Util.selectRange($(\"#select-test-0\"), [1, 5]); // select 1~5\n   * ```\n   */\n  selectRange: selectRange,\n  /**\n   * 지정한 시간을 지연시켜 함수를 실행합니다.\n   * @param {Function} func\n   * @param {Number} wait\n   * @param {Object} options\n   * @returns {debounced}\n   * @example\n   * ```js\n   * // https://github.com/lodash/lodash/blob/master/debounce.js\n   * var debounceFn = AX6Util.debounce(function( val ) { console.log(val); }, 300);\n   * $(document.body).click(function(){\n         *  debounceFn(new Date());\n         * });\n   * ```\n   */\n  debounce: debounce,\n  /**\n   * @param func\n   * @param wait\n   * @param options\n   * @return {throttled}\n   * @example\n   * ```js\n   * //https://github.com/lodash/lodash/blob/master/throttle.js\n   * var throttleFn = AX6Util.throttle(function( val ) { console.log(val); }, 300);\n   * $(window).scroll(function(){\n     *      throttleFn(new Date());\n     * });\n   * ```\n   */\n  throttle: throttle,\n  /**\n   * @param {Object} obj\n   * @returns {Object}\n   * @example\n   * ```js\n   * var obj = [\n   *  {name:\"A\", child:[{name:\"a-1\"}]},\n   *  {name:\"B\", child:[{name:\"b-1\"}], callBack: function(){ console.log('callBack'); }}\n   * ];\n   * var copiedObj = AX6Util.deepCopy(obj)\n   * ```\n   */\n  deepCopy: deepCopy,\n  /**\n   * @param {Boolean} [deep]\n   * @param {Object} src\n   * @param {Object} copy\n   * @return {Object}\n   * @example\n   * ```js\n   * AX6Util.extend({a:1}, {b:1});\n   * AX6Util.extend(true, {a:1, b:{name:'t'}, {b:{etc:true}});\n   * ```\n   */\n  extend: extend,\n  /**\n   * HTML 문자열을 escape 처리합니다.\n   * \"&lt;\" represents the < sign.\n   * \"&gt;\" represents the > sign.\n   * \"&amp;\" represents the & sign.\n   * \"&quot; represents the \" mark.\n   * [Character entity references](https://www.w3.org/TR/html401/charset.html#h-5.3)\n   * @param {String} s\n   * @returns {string}\n   * @example\n   * ```\n   * AX6Util.escapeHtml('HTML <span>string</span> & \"escape\"')\n   * //\"HTML &lt;span&gt;string&lt;/span&gt; &amp; &quot;escape&quot;\"\n   * ```\n   */\n  escapeHtml: escapeHtml,\n  /**\n   * HTML 문자열을 unescape 처리합니다.\n   * escapeHtml를 참고하세요.\n   * @param {String} s\n   * @returns {string}\n   * @example\n   * ```\n   * AX6Util.unescapeHtml('HTML &lt;span&gt;string&lt;/span&gt; &amp; &quot;escape&quot;')\n   * //\"HTML <span>string</span> & \"escape\"\"\n   * ```\n   */\n  unescapeHtml: unescapeHtml,\n  /**\n   * @param {String} tmpl\n   * @param {*} args\n   * @return {ax6string}\n   * @example\n   * ```js\n   * AX6Util.string(\"{0} is dead, but {1} is alive! {0} {2}\").format(\"ASP\", \"ASP.NET\");\n   * AX6Util.string(\"{0} is dead, but {1} is alive! {0} {2}\").format([\"ASP\", \"ASP.NET\"]);\n   * AX6Util.stinrg(\"{0} counts\").format(100);\n   * ```\n   */\n  string: string,\n  /**\n   * @param _hexColor\n   * @return {ax5color}\n   * @example\n   * ```js\n   * AX6Util.color(\"#ff3300\").lighten(10).getHexValue()\n   * console.log(AX6Util.color(\"#ff3300\").darken(10).getHexValue());\n   * ```\n   */\n  color: color\n};"]}