{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/internals/has.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/redefine.js","webpack:///./node_modules/core-js/internals/to-integer.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/set-global.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/function-to-string.js","webpack:///./node_modules/core-js/internals/object-create.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/a-function.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js/internals/add-to-unscopables.js","webpack:///./node_modules/core-js/internals/sloppy-array-method.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/core-js/internals/bind-context.js","webpack:///./node_modules/core-js/modules/es.array.iterator.js","webpack:///./node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/core-js/internals/iterators.js","webpack:///./node_modules/core-js/internals/regexp-exec.js","webpack:///./node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/modules/es.object.to-string.js","webpack:///./node_modules/core-js/modules/es.array.index-of.js","webpack:///./node_modules/core-js/internals/create-property.js","webpack:///./node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/core-js/modules/es.symbol.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/modules/es.symbol.description.js","webpack:///./node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/core-js/internals/wrapped-well-known-symbol.js","webpack:///./node_modules/core-js/internals/define-well-known-symbol.js","webpack:///./node_modules/core-js/internals/string-multibyte.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/core-js/modules/es.date.to-string.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/core-js/internals/define-iterator.js","webpack:///./node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./node_modules/core-js/internals/dom-iterables.js","webpack:///./node_modules/core-js/modules/es.array.filter.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/core-js/modules/es.string.split.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/core-js/modules/es.array.slice.js","webpack:///./node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/core-js/modules/es.array.for-each.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./node_modules/core-js/internals/species-constructor.js","webpack:///./node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/core-js/modules/es.object.keys.js","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./node_modules/core-js/internals/inherit-if-required.js","webpack:///./node_modules/core-js/modules/es.parse-float.js","webpack:///./node_modules/core-js/modules/es.string.match.js","webpack:///./src/js/pro/material-select/material-select-view-renderer.js","webpack:///external \"jQuery\"","webpack:///./node_modules/core-js/modules/es.array.includes.js","webpack:///./node_modules/core-js/modules/es.string.includes.js","webpack:///./node_modules/core-js/modules/es.function.name.js","webpack:///./node_modules/core-js/internals/forced-string-trim-method.js","webpack:///./node_modules/core-js/modules/es.parse-int.js","webpack:///./src/js/pro/material-select/material-select-view.js","webpack:///./node_modules/core-js/internals/parse-float.js","webpack:///./node_modules/core-js/internals/not-a-regexp.js","webpack:///./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./node_modules/core-js/internals/array-reduce.js","webpack:///./node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./node_modules/core-js/internals/set-species.js","webpack:///./node_modules/core-js/modules/es.array.sort.js","webpack:///./node_modules/core-js/internals/array-last-index-of.js","webpack:///./node_modules/core-js/modules/es.object.values.js","webpack:///./node_modules/core-js/internals/object-to-array.js","webpack:///./node_modules/core-js/internals/array-fill.js","webpack:///./node_modules/core-js/modules/es.array.reverse.js","webpack:///./node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./node_modules/core-js/internals/string-repeat.js","webpack:///./node_modules/core-js/internals/parse-int.js","webpack:///./node_modules/core-js/internals/array-buffer.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/core-js/internals/to-index.js","webpack:///./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./node_modules/core-js/internals/to-offset.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./src/js/free/forms-free.js","webpack:///./src/js/free/scrolling-navbar.js","webpack:///./src/js/free/treeview.js","webpack:///./src/js/free/wow.js","webpack:///./src/js/pro/buttons.js","webpack:///./src/js/pro/cards.js","webpack:///./src/js/pro/character-counter.js","webpack:///./src/js/pro/collapsible.js","webpack:///./src/js/pro/file-input.js","webpack:///./src/js/pro/mdb-autocomplete.js","webpack:///./src/js/pro/preloading.js","webpack:///./src/js/pro/range-input.js","webpack:///./src/js/pro/sidenav.js","webpack:///./src/js/pro/smooth-scroll.js","webpack:///./src/js/pro/dropdown/dropdown.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack:///./src/js/pro/dropdown/dropdown-searchable.js","webpack:///./src/js/pro/material-select/material-select.js","webpack:///./node_modules/core-js/modules/es.array.reduce.js","webpack:///./node_modules/core-js/modules/es.array.fill.js","webpack:///./src/js/vendor/free/enhanced-modals.js","webpack:///./src/js/vendor/free/jquery.easing.js","webpack:///./src/js/vendor/free/velocity.js","webpack:///./node_modules/core-js/modules/es.array-buffer.slice.js","webpack:///./node_modules/core-js/internals/redefine-all.js","webpack:///./node_modules/core-js/modules/es.typed-array.float32-array.js","webpack:///./node_modules/core-js/internals/typed-array-constructor.js","webpack:///./node_modules/core-js/internals/typed-arrays-constructors-requires-wrappers.js","webpack:///./node_modules/core-js/internals/to-positive-integer.js","webpack:///./node_modules/core-js/internals/typed-array-from.js","webpack:///./node_modules/core-js/modules/es.typed-array.copy-within.js","webpack:///./node_modules/core-js/internals/array-copy-within.js","webpack:///./node_modules/core-js/modules/es.typed-array.every.js","webpack:///./node_modules/core-js/modules/es.typed-array.fill.js","webpack:///./node_modules/core-js/modules/es.typed-array.filter.js","webpack:///./node_modules/core-js/modules/es.typed-array.find.js","webpack:///./node_modules/core-js/modules/es.typed-array.find-index.js","webpack:///./node_modules/core-js/modules/es.typed-array.for-each.js","webpack:///./node_modules/core-js/modules/es.typed-array.includes.js","webpack:///./node_modules/core-js/modules/es.typed-array.index-of.js","webpack:///./node_modules/core-js/modules/es.typed-array.iterator.js","webpack:///./node_modules/core-js/modules/es.typed-array.join.js","webpack:///./node_modules/core-js/modules/es.typed-array.last-index-of.js","webpack:///./node_modules/core-js/modules/es.typed-array.map.js","webpack:///./node_modules/core-js/modules/es.typed-array.reduce.js","webpack:///./node_modules/core-js/modules/es.typed-array.reduce-right.js","webpack:///./node_modules/core-js/modules/es.typed-array.reverse.js","webpack:///./node_modules/core-js/modules/es.typed-array.set.js","webpack:///./node_modules/core-js/modules/es.typed-array.slice.js","webpack:///./node_modules/core-js/modules/es.typed-array.some.js","webpack:///./node_modules/core-js/modules/es.typed-array.sort.js","webpack:///./node_modules/core-js/modules/es.typed-array.subarray.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-string.js","webpack:///./src/js/vendor/free/waves.js","webpack:///./src/js/vendor/pro/jquery.sticky.js","webpack:///./node_modules/core-js/modules/es.string.search.js","webpack:///./node_modules/core-js/internals/same-value.js","webpack:///./src/js/vendor/pro/scrollbar.js","webpack:///./node_modules/core-js/modules/es.array.every.js","webpack:///./src/js/vendor/pro/toastr.js","webpack:///./src/js/pro/chips.js","webpack:///./node_modules/core-js/modules/es.array.some.js","webpack:///./node_modules/core-js/modules/es.object.assign.js","webpack:///./node_modules/core-js/internals/object-assign.js","webpack:///./src/js/pro/sticky.js","webpack:///./node_modules/core-js/modules/es.number.max-safe-integer.js","webpack:///./node_modules/core-js/modules/es.number.min-safe-integer.js","webpack:///./node_modules/core-js/modules/es.symbol.to-string-tag.js","webpack:///./node_modules/core-js/modules/es.json.to-string-tag.js","webpack:///./node_modules/core-js/modules/es.math.to-string-tag.js","webpack:///./src/js/vendor/pro/picker.js","webpack:///./src/js/vendor/free/bs-custom-file-input.js","webpack:///./src/js/vendor/free/chart.js","webpack:///./node_modules/core-js/modules/es.array.find-index.js","webpack:///./node_modules/core-js/modules/es.math.log10.js","webpack:///./node_modules/core-js/modules/es.math.sign.js","webpack:///./node_modules/core-js/internals/math-sign.js","webpack:///./node_modules/core-js/modules/es.number.epsilon.js","webpack:///./src/js/vendor/free/chartjs-datalabels.js","webpack:///./node_modules/core-js/modules/es.string.anchor.js","webpack:///./node_modules/core-js/internals/create-html.js","webpack:///./node_modules/core-js/internals/forced-string-html-method.js","webpack:///external \"chart\"","webpack:///./src/js/vendor/pro/lightbox.js","webpack:///./src/js/vendor/pro/picker-date.js","webpack:///./src/js/vendor/pro/vector-map.js","webpack:///./src/js/vendor/pro/vector-map-world-mill.js","webpack:///./src/js/vendor/pro/jarallax.js","webpack:///./src/js/vendor/pro/jarallax-video.js","webpack:///./src/js/vendor/pro/ofi.js","webpack:///./src/js/vendor/pro/picker-time.js","webpack:///./src/js/vendor/pro/picker-date-time.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","it","Math","check","globalThis","window","self","global","Function","exec","error","shared","uid","NATIVE_SYMBOL","store","getOwnPropertyDescriptor","f","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","options","source","target","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","undefined","sham","DESCRIPTORS","definePropertyModule","createPropertyDescriptor","fails","a","isObject","TypeError","String","IE8_DOM_DEFINE","anObject","toPrimitive","nativeDefineProperty","O","P","Attributes","IndexedObject","requireObjectCoercible","toInteger","min","argument","IS_PURE","push","version","copyright","has","nativeFunctionToString","InternalStateModule","getInternalState","enforceInternalState","enforce","TEMPLATE","split","unsafe","simple","join","this","ceil","floor","isNaN","toString","slice","bitmap","configurable","writable","input","PREFERRED_STRING","fn","val","valueOf","propertyIsEnumerableModule","toIndexedObject","nativeGetOwnPropertyDescriptor","toObject","toLength","arraySpeciesCreate","createMethod","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","that","specificCreate","result","boundFunction","length","index","forEach","map","filter","some","every","find","findIndex","keys","id","postfix","random","classof","propertyIsEnumerable","set","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","WeakMap","wmget","wmhas","wmset","metadata","STATE","getterFor","state","type","internalObjectKeys","concat","getOwnPropertyNames","Array","isArray","arg","path","aFunction","variable","namespace","method","arguments","createElement","defineProperties","enumBugKeys","html","documentCreateElement","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","appendChild","src","contentWindow","document","open","write","lt","close","F","Properties","EXISTS","indexOf","names","max","integer","toAbsoluteIndex","IS_INCLUDES","el","fromIndex","includes","nativePropertyIsEnumerable","NASHORN_BUG","1","V","SPECIES","wellKnownSymbol","originalArray","C","constructor","$","$find","addToUnscopables","SKIPS_HOLES","proto","getOwnPropertySymbols","ownKeys","getOwnPropertyDescriptorModule","replacement","feature","detection","data","normalize","POLYFILL","NATIVE","string","replace","toLowerCase","METHOD_NAME","array","foo","Boolean","UNSCOPABLES","ArrayPrototype","getBuiltIn","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","g","e","test","b","apply","Iterators","defineIterator","setInternalState","iterated","kind","done","Arguments","NAME","getPrototypeOf","setPrototypeOf","DataView","DataViewPrototype","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","isPrototypeOf","TO_STRING_TAG","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER","ArrayBuffer","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","isTypedArray","aTypedArray","aTypedArrayConstructor","ARRAY","TypedArrayConstructor","exportProto","KEY","exportStatic","isView","klass","TAG","re1","re2","regexpFlags","nativeExec","RegExp","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","lastIndex","NPCG_INCLUDED","str","reCopy","match","re","objectKeys","$indexOf","sloppyArrayMethod","nativeIndexOf","NEGATIVE_ZERO","SLOPPY_METHOD","searchElement","propertyKey","nativeObjectCreate","getOwnPropertyNamesExternal","wrappedWellKnownSymbolModule","defineWellKnownSymbol","setToStringTag","$forEach","HIDDEN","TO_PRIMITIVE","$Symbol","JSON","nativeJSONStringify","stringify","nativeGetOwnPropertyNames","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","WellKnownSymbolsStore","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","wrap","tag","description","symbol","isSymbol","iterator","$defineProperty","$defineProperties","properties","$getOwnPropertySymbols","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","setter","keyFor","sym","useSetter","useSimple","replacer","$replacer","args","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","regexp","desc","charAt","point","DOMIterables","ArrayIteratorMethods","ITERATOR","ArrayValues","values","COLLECTION_NAME","Collection","CollectionPrototype","nativeJoin","ES3_STRINGS","separator","createProperty","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","k","len","E","A","CONVERT_TO_STRING","pos","first","second","S","position","size","charCodeAt","codeAt","__webpack_amd_options__","CORRECT_PROTOTYPE_GETTER","aPossiblePrototype","CORRECT_SETTER","__proto__","ignoreCase","multiline","dotAll","unicode","sticky","DatePrototype","Date","nativeDateToString","getTime","NaN","whitespace","ltrim","rtrim","start","end","trim","fixRegExpWellKnownSymbolLogic","advanceStringIndex","regExpExec","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","maybeCallNative","searchValue","replaceValue","res","rx","functionalReplace","fullUnicode","results","accumulatedResult","nextSourcePosition","matched","captures","j","namedCaptures","groups","replacerArgs","getSubstitution","tailPos","symbols","ch","capture","createIteratorConstructor","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","returnThis","Iterable","IteratorConstructor","next","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","PrototypeOfArrayIteratorPrototype","arrayIterator","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","arg2","forceStringMethod","stringMethod","regexMethod","R","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","$filter","classofRaw","CORRECT_ARGUMENTS","tryGet","callee","flags","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","originalModule","webpackPolyfill","children","$map","isRegExp","speciesConstructor","callRegExpExec","arrayPush","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","output","lastLastIndex","separatorCopy","splitter","unicodeMatching","q","z","nativeSlice","Constructor","fin","MATCH","windowNames","getWindowNames","defaultConstructor","splice","deleteCount","insertCount","actualDeleteCount","from","to","actualStart","argumentsLength","inheritIfRequired","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","third","radix","maxCode","digits","code","parseInt","NumberWrapper","dummy","nativeKeys","$trim","forcedStringTrimMethod","Wrapper","NewTarget","NewTargetPrototype","parseFloatImplementation","parseFloat","nativeMatch","matcher","matchStr","MaterialSelectViewRenderer","view","currentUuid","$nativeSelect","removeClass","parent","remove","hasClass","unwrap","setWrapperClasses","setMaterialSelectInitialValue","before","$selectWrapper","showResetButton","appendResetButton","appendDropdownIcon","appendMaterialSelect","appendMaterialOptionsList","appendNativeSelect","appendSelectLabel","appendCustomTemplateParts","shouldValidate","appendValidationFeedbackElements","isRequired","enableValidation","isDisabled","setMaterialOptionsListMaxHeight","dropdown","$materialSelect","hover","closeOnClick","resetScroll","shouldInheritTabindex","attr","isDefaultMaterialInput","$mainLabel","css","isCustomSelect","width","height","padding","fontSize","lineHeight","backgroundColor","border","addAccessibilityAttributes","markInitialized","addClass","marginTop","marginBottom","placeholder","prepend","sanitizedLabelHtml","$materialSelectInitialOption","$dropdownIcon","append","$btnReset","selectedIndex","hide","isSearchable","appendSearchInputOption","isEditable","appendAddOptionBtn","buildMaterialOptions","isMultiple","appendToggleAllCheckbox","$materialOptionsList","appendTo","$customTemplateParts","each","_","element","$btnSave","clone","$validFeedback","insertAfter","$invalidFeedback","top","left","opacity","$tempWrapper","visibility","show","$optionsListClone","multiplier","visibleOptions","additionalHeight","$materialOptions","not","optionHeight","text","eq","optionsCount","$searchInput","$toggleAll","maxHeight","role","divClass","inputClass","on","stopPropagation","$addOptionBtn","$nativeSelectChildren","option","is","buildSingleOption","$materialOptgroup","optgroupOption","firstOption","prop","after","$newOption","$nativeSelectChild","disabled","active","optgroupClass","iconUrl","fas","fasClasses","far","farClasses","fab","fabClasses","classes","iconHtml","checkboxHtml","secondaryText","copyClassesOption","validate","defaultMaterialInput","jQuery","$includes","notARegExp","correctIsRegExpLogic","searchString","FunctionPrototype","FunctionPrototypeToString","nameRE","whitespaces","parseIntImplementation","MaterialSelectView","_copyOptions","$noSearchResultsInfo","labels","noSearchResults","selectAll","_jQueryFallback","nextUntil","validFeedback","invalidFeedback","keyCodes","tab","enter","shift","alt","esc","space","home","arrowUp","arrowDown","renderer","navigator","userAgent","destroy","render","handler","_isPlaceholderPresent","$preselectedOption","indexOfPreselectedOption","preventDefault","_toggleResetButton","trigger","addNewOption","label","$selectedOption","_selectSingleOption","which","_updateDropdownScrollTop","isTab","isArrowUp","isArrowDown","isEnter","isEsc","isAltWithArrowDown","altKey","isAltWithArrowUp","isHome","isEnd","isSpace","isDropdownExpanded","_handleTabKey","_handleClosedArrowUpDownKey","_handleArrowUpDownKey","_handleHomeKey","_handleEndKey","_handleEnterKey","_handleLetterKey","checkbox","currentState","isToggleChecked","materialOptionIndex","materialOption","$materialOption","$optionCheckbox","toggleClass","_selectOption","_triggerChangeOnNativeSelect","removeData","scrollHeight","offsetHeight","selected","oldPropertyValue","hasOptgroup","thisIndex","_isToggleAllPresent","prevAll","_updateToggleAllOption","last","childNodes","ariaSelected","selectedOptionIndex","isEnterWithShift","shiftKey","focus","$ul","closest","$options","isOptionInList","$option","outerHTML","liValue","textContent","_handleEnterWithShiftKey","updatePosition","siblings","isMobileDevice","clientX","clientWidth","clientY","clientHeight","previousValue","$allOptionsButToggleAll","$checkedOptionsButToggleAll","isToggleAllChecked","_handleEscKey","_removeKeyboardActiveClass","keyCode","_getArrowMatchedActiveOptions","$matchedMaterialOption","$activeOption","keyboardActiveClass","scrollTop","closedDropdown","visible","$availableOptions","$firstOption","$lastOption","anySelected","$currentOption","$prevOption","prev","$nextOption","_selectBoundaryOption","firstOrLast","$boundaryOption","isLetter","isNumber","isBackspace","filterQueryString","letter","fromCharCode","nonLetters","keyboardEvt","KeyboardEvent","bubbles","cancelable","dispatchEvent","newOption","$preselected","scrollTo","extend","$lastElem","nativeParseFloat","Infinity","trimmedString","IS_RIGHT","memo","right","getFlags","setSpecies","NativeRegExp","CORRECT_NEW","RegExpWrapper","pattern","thisIsRegExp","patternIsRegExp","flagsAreUndefined","proxy","CONSTRUCTOR_NAME","nativeSort","sort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","comparefn","nativeLastIndexOf","lastIndexOf","$values","TO_ENTRIES","endPos","nativeReverse","reverse","thisNumberValue","repeat","nativeToFixed","toFixed","pow","x","acc","fractionDigits","number","fractDigits","sign","multiply","c2","divide","dataToString","RangeError","x2","log","count","nativeParseInt","hex","redefineAll","anInstance","toIndex","arrayFill","NativeArrayBuffer","$ArrayBuffer","$DataView","abs","LN2","packIEEE754","mantissaLength","bytes","exponent","mantissa","buffer","exponentLength","eMax","eBias","rt","unpackIEEE754","nBits","unpackInt32","packInt8","packInt16","packInt32","packFloat32","packFloat64","addGetter","isLittleEndian","intIndex","byteLength","byteOffset","pack","conversion","ArrayBufferPrototype","testView","nativeSetInt8","setInt8","getInt8","setUint8","bufferLength","offset","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","toPositiveInteger","BYTES","inputSelector","selector","textAreaSelector","$text","$body","$document","observe","attachEvent","event","addEventListener","resize","delayedResize","setTimeout","isNotValid","validity","badInput","updateTextFields","toggleActiveClass","addOnFocusEvent","addOnBlurEvent","addOnChangeEvent","addOnResetEvent","appendHiddenDiv","ChangeDateInputType","makeActiveAutofocus","textAreaAutoResize","action","noValue","isValid","noPlaceholder","validateField","$formReset","noDefaultValue","select","$select","$visibleInput","defaultValue","$hiddenDiv","$input","hasValue","hasPlaceholder","addOrRemove","valid","Number","$dateInputs","$item","$textarea","fontFamily","content","init","$navbar","mdbTreeview","off","treeviewToggle","$elements","$closed","$target","$pointer","slideUp","slideDown","treeviewAnimated","$header","$pointerPlus","$pointerMinus","treeviewColorful","WOW","wow","MDBWow","$wowElement","customization","animated","assignElementCustomization","scroll","mdbWow","appear","animationName","iteration","fallback","or","duration","delay","shouldElementBeVisible","countRemoveTime","thisElementOffset","getOffset","thisElementHeight","documentHeight","windowHeight","innerHeight","scrollY","isElementTopVisible","isElementBottomVisible","isScrolledToTop","isScrolledToBottom","isDocumentHeightEqual","isOffsetHigherThanDocument","isElementBottomHidden","isScrolledOverTop","isNotScrolledToTop","isScrolledOverElement","defaultAnimationTime","removeTime","checkOptionsStringFormat","valueToReturn","console","box","getBoundingClientRect","body","docEl","documentElement","pageYOffset","clientTop","round","_value","isTouchDevice","toggleOpen","btn","querySelectorAll","classList","$btn","currentTarget","openFAB","closeFAB","$reveal","$clickedElem","isTitleClicked","isTitleIconClicked","isActivatorClicked","isActivatorIconClicked","takeRevealDown","takeRevealUp","revealElem","velocity","translateY","queue","easing","complete","$cardWrapper","$front","$back","$frontHeight","outerHeight","$backHeight","updateCounter","maxLength","actualLength","isValidLength","inputHasInvalidClass","addInputStyle","removeCounterElement","characterCounter","$counterElement","ready","accordionOpen","$collapsible","$panelHeaders","expandableOpen","stop","isChildOfPanelHeader","getPanelHeader","collapsible","defaults","accordion","collapsibleType","$pathInput","files","fileNames","file","MdbAutocomplete","dataColor","closeColor","closeBlurColor","inputFocus","inputBlur","inputFocusShadow","inputBlurShadow","enterCharCode","homeCharCode","endCharCode","arrowUpCharCode","arrowDownCharCode","nextScrollHeight","assignOptions","$clearButton","$autocompleteWrap","handleEvents","setData","inputKeyupData","inputLiClick","clearAutocomplete","setAutocompleteWrapHeight","changeSVGcolors","empty","$inputValue","appendOptions","$ulList","$ulItems","nextItemHeight","previousItemHeight","homeHandler","endHandler","arrowDownHandler","arrowUpHandler","item","fillSVG","color","mdbAutocomplete","windowLoaded","preloaderFading","fadeOut","removeAttr","load","rangeType","thumbHtml","rangeMousedown","updateThumbPosition","$thumb","minValue","maxValue","widthThumb","oneStep","leftPosition","thumbAnimation","tHeight","tWidth","tTop","tMarginLeft","tDuration","tEasing","marginLeft","showThumb","hideThumb","noThumb","isRightClick","addThumb","SideNav","settings","menuLeftMinBorder","menuLeftMaxBorder","menuRightMinBorder","menuRightMaxBorder","menuVelocityOffset","menuWidth","edge","breakpoint","timeDurationOpen","timeDurationClose","timeDurationOverlayOpen","timeDurationOverlayClose","easingOpen","easingClose","showOverlay","showCloseButton","slim","$element","$elementCloned","menuOut","lastTouchVelocity","startPosition","startTime","endPosition","endTime","$menu","$sidenavOverlay","$dragTarget","newOptions","setMenuWidth","setMenuTranslation","openOnClick","bindTouchEvents","inputOnClick","handleSlim","$sidenavBg","innerWidth","removeMenu","xValue","translateX","touchmoveEventHandler","touches","now","touchendEventHandler","borderTop","restoreMenu","overflow","hideSidenavOverlay","transition","touch","touchX","disableScrolling","buildSidenavOverlay","translateSidenavX","updateOverlayOpacity","changedTouches","velocityX","calculateTouchVelocityX","leftPos","rightPos","translateMenuX","showSidenavOverlay","enableScrolling","oldWidth","fromTo","isRightDirection","isLeftDirection","overlayPercentage","sideNav","elAttr","animate","setHash","parentsUntil","history","replaceState","Dropdown","$activator","$activates","inDuration","outDuration","easingEffectIn","easingEffectOut","constrainWidth","gutter","belowOrigin","alignment","isFocused","bindMultiLevelDropdownEvents","bindBootstrapEvents","submenu","$dropdown","effects","_getDropdownEffects","_dropdownEffectStart","effectIn","effectOut","_dropdownEffectEnd","defaultInEffect","defaultOutEffect","$dropdownMenu","$parentUl","parents","effectToStart","callback","one","appendDropdownToActivator","handleHoverableDropdown","handleClickableDropdown","bindEvents","opened","unbind","placeDropdown","toEl","toElement","relatedTarget","hideDropdown","activatorClicked","activatorActive","dropdownContentClicked","eventType","outerWidth","showDropdown","durations","originHeight","offsetTop","currAlignment","_getHorizontalAlignment","gutterSpacing","$wrapper","verticalOffset","scrollOffset","doesNotFitFromBottom","doesNotFitFromTop","adjustedHeight","offsetLeft","elem","instances","returnPublicInterface","mdbDropdownAutoInit","FAILS_ON_PRIMITIVES","getOwnPropertyDescriptors","DropdownSearchable","$searchWrappers","fontWeight","borderRadius","borderColor","margin","bindSearchEvents","mdbDropSearch","originalVal","MaterialSelect","selectId","optionsSelected","maxSelectedOptions","uuid","_randomUUID","selectedOptionsIndexes","mutationObservers","observer","disconnect","customStatus","materialSelect","isInitialized","selectPreselectedOptions","optionIndex","_toggleSelectedValue","bindMutationObserverChange","bindResetButtonClick","_resetSelection","bindAddNewOptionClick","bindMaterialSelectFocus","bindMaterialSelectClick","bindMaterialSelectBlur","bindMaterialOptionsListTouchstart","bindMaterialSelectKeydown","bindMaterialSelectDropdownToggle","bindToggleAllClick","bindMaterialOptionMousedown","bindMaterialOptionClick","bindSingleMaterialOptionClick","bindSearchInputKeyup","bindHtmlClick","bindMobileDevicesMousedown","bindSaveBtnClick","MutationObserver","_onMutationObserverChange","attributes","childList","characterData","subtree","customId","clearMutationObservers","mutationsList","mutation","selectedValueIndex","isSelected","_setValueToMaterialSelect","selectedValuesCount","substring","ret","mdbSelectAutoInit","$reduce","reduce","fill","$modal_dialog","def","swing","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","PI","easeOutSine","sin","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","sqrt","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","Velocity","isWindow","nodeType","isPlainObject","expando","u","dequeue","unshift","Error","pageXOffset","scrollLeft","clientLeft","offsetParent","nodeName","borderTopWidth","borderLeftWidth","Utilities","isWrapped","isNode","h","v","w","y","isFinite","getControlPoints","T","isString","Easings","State","calls","setPropertyValue","endValue","startValue","currentValue","Hooks","registered","H","getRoot","N","rootPropertyValueCache","rootPropertyValue","L","unitType","scrollData","Normalizations","mobileHA","transformCache","translate3d","flushTransformCache","progress","isTicking","loop","isAnimating","Lists","transforms3D","Values","tweensContainer","documentMode","innerHTML","getElementsByTagName","webkitRequestAnimationFrame","mozRequestAnimationFrame","isFunction","isNodeList","jquery","Zepto","zepto","isZ","isSVG","SVGElement","isEmptyObject","isMobile","isAndroid","isGingerbread","isChrome","chrome","isFirefox","prefixElement","prefixMatches","scrollAnchor","scrollPropertyLeft","scrollPropertyTop","CSS","Redirects","Promise","begin","_cacheValues","computedStyle","hook","mock","major","minor","patch","debug","parentNode","tension","friction","dx","dv","linear","spring","exp","RegEx","isHex","valueUnwrap","wrappedValueAlreadyExtracted","valueSplit","colors","transformsBase","templates","textShadow","boxShadow","clip","backgroundPosition","transformOrigin","perspectiveOrigin","register","cleanRootPropertyValue","isCSSNullValue","extractValue","injectValue","blur","zoom","substr","black","blue","gray","green","red","white","hexToRgb","Names","camelCase","toUpperCase","SVGAttribute","prefixCheck","getUnitType","getDisplayType","tagName","add","className","getPropertyValue","offsetWidth","getComputedStyle","getBBox","getAttribute","container","direction","alternateValue","setAttribute","translate","skewX","skewY","scale","rotate","promise","myParent","lastPosition","lastParent","lastFontSize","emToPx","lastEmToPx","percentToPxWidth","lastPercentToPxWidth","percentToPxHeight","lastPercentToPxHeight","createElementNS","removeChild","remToPx","vwToPx","vhToPx","axis","opts","M","I","B","W","G","Y","D","Q","resolver","velocityQueueEntryFlag","delayTimer","elements","rejecter","clearTimeout","backwards","stagger","drag","requestAnimationFrame","hidden","paddingTop","paddingBottom","define","ArrayBufferModule","nativeArrayBufferSlice","viewSource","viewTarget","typedArrayConstructor","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","toOffset","typedArrayFrom","fromList","list","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","wrapper","CLAMPED","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","typedArrayOffset","$length","$len","checkCorrectnessOfIteration","iterable","getIteratorMethod","isArrayIteratorMethod","step","mapfn","mapping","iteratorMethod","$copyWithin","copyWithin","inc","$every","$fill","predicate","$findIndex","ArrayIterators","arrayValues","arrayKeys","arrayEntries","nativeTypedArrayIterator","CORRECT_ITER_NAME","typedArrayValues","$join","$lastIndexOf","$reduceRight","middle","arrayLike","$slice","$some","$sort","beginIndex","BYTES_PER_ELEMENT","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","Uint8ArrayPrototype","arrayToString","arrayJoin","factory","Waves","$$","isTouchAvailable","getWavesElements","nodes","obj","stringRepr","docElem","win","doc","ownerDocument","defaultView","getWindow","convertStyle","styleObj","Effect","button","ripple","relativeY","relativeX","pageY","pageX","rippleStyle","transform","ripples","getElementsByClassName","removeRipple","removeEventListener","TagWrapper","contains","replaceChild","img","TouchHandler","allowEvent","allow","registerEvent","eType","showEffect","srcElement","parentElement","getWavesEffectElement","timer","hideEffect","hideEvent","removeListeners","touchMove","moveEvent","attach","elementsLen","wait","centre","mousedown","hideRipple","mouseup","calm","displayEffect","topSpacing","zIndex","stopper","stickyClass","hasIndex","hasStopper","thisHeight","thisWidth","pushPoint","$window","stickyScroll","windowTop","stopPoint","parentWidth","diff","sameValue","SEARCH","nativeSearch","searcher","previousLastIndex","div","elMatches","Element","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","query","queryChildren","child","cls","main","rtl","thumb","rail","consuming","clicking","scrolling","scrollingClassTimeout","addScrollingClass","removeScrollingClass","isAlive","scrollingThreshold","EventElement","handlers","prototypeAccessors","isEmpty","eventName","this$1","unbindAll","EventManager","eventElements","createEvent","CustomEvent","evt","initCustomEvent","processScrollDiff","useScrollingClass","forceFireReachEvent","fields","ref","contentHeight","containerHeight","up","down","reach","setScrollingClassInstantly","processScrollDiff$1","toInt","eventElement","ee","once","onceHandler","env","isWebKit","supportsTouch","maxTouchPoints","DocumentTouch","supportsIePointer","msMaxTouchPoints","updateGeometry","roundedScrollTop","rect","containerWidth","contentWidth","scrollWidth","scrollbarXRail","scrollbarYRail","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXWidth","railXMarginWidth","railXRatio","scrollbarXWidth","getThumbSize","scrollbarXLeft","negativeScrollAdjustment","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYHeight","railYMarginHeight","railYRatio","scrollbarYHeight","scrollbarYTop","xRailOffset","isRtl","isScrollbarXUsingBottom","bottom","scrollbarXBottom","scrollbarXTop","yRailOffset","isScrollbarYUsingRight","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","updateCss","thumbSize","minScrollbarLength","maxScrollbarLength","bindMouseScrollHandler","startingScrollTop","startingMousePageY","scrollBy","mouseMoveHandler","mouseUpHandler","bindMoves","touchMode","keyboard","isDefaultPrevented","defaultPrevented","activeElement","contentDocument","shadowRoot","deltaX","deltaY","metaKey","wheelPropagation","shouldPreventDefault","wheel","mousewheelHandler","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","getDeltaFromEvent","querySelector","cursor","overflowY","maxScrollTop","overflowX","maxScrollLeft","shouldBeConsumedByChild","shouldPrevent","useBothWheelAxes","wheelSpeed","isTop","isBottom","isLeft","isRight","ctrlKey","onwheel","onmousewheel","startOffset","speed","easingLoop","touchStart","touchEnd","PointerEvent","MSPointerEvent","applyTouchMove","differenceX","differenceY","getTouch","targetTouches","shouldHandle","pointerType","buttons","MSPOINTER_TYPE_MOUSE","clearInterval","currentOffset","currentTime","timeGap","magnitudeX","magnitudeY","swipeEasing","setInterval","PerfectScrollbar","userSettings","originalScrollLeft","isNegativeScroll","railXStyle","borderRightWidth","marginRight","railYStyle","styles","paddingLeft","paddingRight","borderBottomWidth","handlerName","lastScrollTop","lastScrollLeft","onScroll","update","removePsClasses","$container","listener","previousToast","toastId","toastType","info","success","warning","toastr","clear","$toastElement","clearOptions","getOptions","getContainer","clearToast","toastsToClear","clearContainer","removeToast","message","title","optionsOverride","notify","iconClass","iconClasses","subscribe","containerId","positionClass","createContainer","force","hideMethod","hideDuration","hideEasing","publish","preventDuplicates","shouldExit","intervalId","$titleElement","$messageElement","$progressElement","$closeElement","closeHtml","progressBar","hideEta","maxHideTime","response","toastClass","titleClass","messageClass","closeButton","newestOnTop","showMethod","showDuration","showEasing","onShown","timeOut","hideToast","updateProgress","stickAround","delayedHideToast","onclick","tapToDismiss","click","cancelBubble","override","onHidden","extendedTimeOut","percentage","deps","require","MaterialChips","$chipsWrapper","dataChip","secondaryPlaceholder","sortAutocompleteData","autocompleteDataCompareFn","$autocompleteList","backspace","arrowLeft","arrowRight","delete","comma","isPublicInterfaceCall","chips","initialized","renderChips","assign","bindChipsWrapperClick","bindChipsWrapperBlur","bindSingleChipClick","bindChipsWrapperKeydown","bindChipsInputClick","bindChipsInputFocusout","bindChipsInputKeydown","bindDeleteButtonClick","bindAutocompleteInputKeyup","bindAutocompleteOptionClick","getSelectedChip","chipIndex","selectChip","backspacePressed","deletePressed","leftArrowPressed","rightArrowPressed","nextIndex","deleteSelectedChip","selectLeftChip","selectRightChip","$chipsInput","enterPressed","commaPressed","addChip","lastChipIndex","deleteChip","lastChipText","$li","$selectedChip","siblingsLength","selectIndex","selectLeftRightChip","currentIndex","getSingleChipTemplate","setPlaceholder","chip","image","$newChip","insertBefore","$chip","materialChip","materialChips","nativeAssign","chr","Sticky","startScrolling","minWidth","elementWidth","elementHeight","initialScrollTop","$placeholder","setPushPoint","setStopperPosition","isScreenHeightEnough","$pushPoint","handleResize","$parent","appendPlaceholder","stickyStart","stickyEnd","hasZIndex","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","$html","supportsTransitions","PickerConstructor","ELEMENT","COMPONENT","OPTIONS","IS_DEFAULT_THEME","handlingOpen","SETTINGS","CLASSES","klasses","$ELEMENT","OPENCOUNTER","PickerInstance","$node","autofocus","getActiveElement","readOnly","editable","component","$root","picker","aria","$holder","createWrappedComponent","prepareElementHolder","formatSubmit","hiddenName","hiddenPrefix","hiddenSuffix","_hidden","format","func","context","later","timeout","immediate","callNow","handleKeydownEvent","haspopup","expanded","readonly","owns","containerHidden","onStart","onRender","onStop","onOpen","onClose","onSet","currentStyle","theme","entireComponent","dontGiveFocus","getScrollbarWidth","frame","getRealEventTarget","isSimulated","keycode","keycodeToMove","go","highlighted","highlight","closeOnSelect","giveFocus","handleFocusToOpenEvent","focused","thing","thingItem","thingValue","thingIsObject","thingObject","updateInput","muted","formats","internal","thingName","thingMethod","namesCount","_trigger","methodList","node","holder","keydown","focusin","targetData","targetDisabled","navDisabled","href","nav","pick","closeOnClear","isKeycodeDelete","$outer","widthWithoutScroll","widthWithScroll","originalEvent","attribute","ariaSet","err","prefix","group","groupObject","loopObjectScope","nodesList","counter","lead","scope","isDate","isInteger","getDate","ariaAttr","attrVal","Component","componentData","Picker","Selector","CUSTOMFILE","CUSTOMFILELABEL","FORM","INPUT","getDefaultText","defaultText","findFirstChildNode","restoreDefaultText","bsCustomFileInput","fileApi","File","getSelectedFiles","hasAttribute","splittedValue","handleInputChange","inputValue","handleFormReset","customFileList","Event","formSelector","customFileInputList","formList","_i","_len","form","_i2","_len2","Chart","2","colorNames","getRgba","rgb","getHsla","alpha","getHwb","rgbaString","rgba","percentaString","hslaString","hsla","num","hexDouble","getRgb","getHsl","getAlpha","vals","hexString","rgbString","percentString","hslString","hwbString","hwb","keyword","reverseNames","3","convert","Color","hsl","hsv","cmyk","setValues","lightness","whiteness","cyan","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","hue","saturation","saturationv","blackness","magenta","yellow","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","dark","light","negate","lighten","ratio","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","degrees","mix","mixinColor","weight","w1","w2","toJSON","spaces","maxes","getValues","capped","chans","sname","svalues","4","rgb2hsl","delta","rgb2hsv","rgb2hwb","rgb2cmyk","rgb2keyword","reverseKeywords","rgb2xyz","rgb2lab","xyz","hsl2rgb","t1","t2","t3","hsv2rgb","hi","hwb2rgb","wh","bl","cmyk2rgb","xyz2rgb","xyz2lab","lab2xyz","lab","y2","lab2lch","atan2","lab2rgb","lch2lab","lch","hr","keyword2rgb","cssKeywords","rgb2lch","hsl2hsv","hsl2hwb","hsl2cmyk","hsl2keyword","hsv2hsl","sl","hsv2hwb","hsv2cmyk","hsv2keyword","hwb2hsl","hwb2hsv","hwb2cmyk","hwb2keyword","cmyk2hsl","cmyk2hsv","cmyk2hwb","cmyk2keyword","keyword2hsl","keyword2hsv","keyword2hwb","keyword2cmyk","keyword2lab","keyword2xyz","xyz2lch","lch2xyz","lch2rgb","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","5","conversions","Converter","pair","convs","routeSpace","fspace","6","7","helpers","Animation","animationService","Interaction","layouts","platform","plugins","Scale","scaleService","Ticks","Tooltip","initialize","Legend","legend","_element","Title","pluginService","PluginBase","canvasHelpers","canvas","layoutService","8","Bar","config","9","Bubble","10","Doughnut","11","Line","12","PolarArea","13","Radar","14","Scatter","15","_set","scales","xAxes","categoryPercentage","barPercentage","gridLines","offsetGridLines","yAxes","rectangle","borderSkipped","tooltips","callbacks","yLabel","datasets","datasetIndex","xLabel","controllers","bar","DatasetController","dataElementType","Rectangle","meta","me","getMeta","stack","getDataset","reset","ilen","rects","_ruler","getRuler","updateElement","chart","dataset","custom","rectangleOptions","_xScale","getScaleForId","xAxisID","_yScale","yAxisID","_datasetIndex","_index","_model","datasetLabel","valueAtIndexOrDefault","borderWidth","updateElementGeometry","pivot","model","vscale","getValueScale","base","getBasePixel","horizontal","isHorizontal","ruler","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","center","getValueScaleId","getIndexScaleId","getIndexScale","_getStacks","stacked","stacks","getDatasetMeta","isDatasetVisible","getStackCount","getStackIndex","stackCount","pixels","getPixelForValue","isNullOrUndef","barThickness","curr","ticks","getTicks","getPixelForTick","computeMinSampleSize","imeta","ivalue","getRightValue","controller","range","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","valueOrDefault","maxBarThickness","draw","clipArea","ctx","chartArea","unclipArea","horizontalBar","16","dataPoint","bubble","Point","points","xScale","yScale","_resolveElementOptions","dsIndex","getPixelForDecimal","_options","hitRadius","pointStyle","rotation","radius","skip","setHoverStyle","$previousStyle","hoverBackgroundColor","getHoverColor","hoverBorderColor","hoverBorderWidth","hoverRadius","resolve","dataIndex","17","animation","animateRotate","animateScale","legendCallback","generateLabels","ds","arc","arcOpts","fillStyle","strokeStyle","lineWidth","onClick","legendItem","cutoutPercentage","circumference","tooltipItem","dataLabel","doughnut","pie","Arc","linkScales","noop","getRingIndex","ringIndex","availableWidth","availableHeight","minSize","startAngle","endAngle","contains0","contains90","contains180","contains270","cutout","getMaxBorderWidth","outerRadius","innerRadius","radiusLength","getVisibleDatasetCount","offsetX","offsetY","total","calculateTotal","animationOpts","centerX","centerY","calculateCircumference","elementOpts","arcs","hoverWidth","_chart","18","showLines","spanGaps","lineEnabled","showLine","line","datasetElementType","lineElementOptions","lineTension","_scale","_children","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","steppedLine","stepped","cubicInterpolationMode","updateBezierControlPoints","getPointBackgroundColor","pointBackgroundColor","getPointBorderColor","pointBorderColor","getPointBorderWidth","pointBorderWidth","getPointRotation","pointRotation","pointOptions","pointRadius","pointHitRadius","calculatePointY","dsMeta","sumPos","sumNeg","stackedRightValue","rightValue","controlPoints","area","capControlPoint","pt","splineCurveMonotone","splineCurve","previousItem","nextItem","controlPointPreviousX","previous","controlPointPreviousY","controlPointNextX","controlPointNextY","capBezierPoints","halfBorderWidth","pointHoverBackgroundColor","pointHoverBorderColor","pointHoverBorderWidth","pointHoverRadius","19","angleLines","circular","pointLabels","beginAtZero","polarArea","angle","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","xCenter","yCenter","datasetStartAngle","distance","getDistanceFromCenterForValue","resetRadius","20","radar","_loop","pointElementOptions","pointPosition","getPointPositionForValue","21","scatter","22","currentStep","numSteps","onAnimationProgress","onAnimationComplete","23","onProgress","onComplete","frameDuration","animations","dropFrames","request","addAnimation","lazy","animating","cancelAnimation","requestAnimFrame","startDigest","framesToDrop","advance","24","updateConfig","removeBox","configMerge","ensureScalesHaveIDs","buildOrUpdateScales","tooltip","positionIsHorizontal","types","construct","initConfig","acquireContext","aspectRatio","_bufferedRender","retinaScale","devicePixelRatio","responsive","initToolTip","silent","maintainAspectRatio","newWidth","getMaximumWidth","newHeight","getMaximumHeight","newSize","onResize","responsiveAnimationDuration","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","items","updated","dtype","dposition","isDefault","scaleType","scaleClass","getScaleConstructor","mergeTicksOptions","hasUpdated","addScalesToLayout","buildOrUpdateControllers","newControllers","destroyDatasetMeta","updateIndex","ControllerClass","resetElements","_invalidate","_data","buildOrUpdateElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","updateDataset","animationOptions","animationObject","easingFunction","stepDecimal","easingValue","boxes","drawDatasets","_drawTooltip","drawDataset","getElementAtEvent","modes","single","getElementsAtEvent","intersect","getElementsAtXAxis","getElementsAtEventForMode","getDatasetAtEvent","_meta","generateLegend","unbindEvents","releaseContext","toBase64Image","toDataURL","_chartInstance","listeners","_listeners","eventHandler","events","updateHoverStyle","enabled","changed","handleEvent","_start","bufferedRequest","animationDuration","hoverOptions","onHover","arrayEquals","Controller","25","arrayEvents","unlistenArrayEvents","stub","_chartjs","addElements","scaleID","createMetaDataset","createMetaData","metaData","addElementAndReset","resyncElements","removeHoverStyle","merge","numMeta","numData","insertElements","onDataPush","onDataPop","pop","onDataShift","onDataSplice","onDataUnshift","inherits","26","27","configuration","_view","ease","actual","origin","c0","c1","interpolate","tooltipPosition","28","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","_getParentNode","constrainedNode","constrainedContainer","hasCNode","hasCContainer","infinity","POSITIVE_INFINITY","merger","tval","sval","scaleMerge","getScaleDefaults","_merger","slen","where","collection","filterCallback","filtered","findNextWhere","arrayToSearch","startIndex","currentItem","findPreviousWhere","almostEquals","epsilon","almostWhole","rounded","NEGATIVE_INFINITY","log10","LOG10E","powerOf10","toRadians","toDegrees","radians","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","distanceBetweenPoints","pt1","pt2","aliasPixel","pixelWidth","firstPoint","middlePoint","afterPoint","current","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","niceNum","fraction","oRequestAnimationFrame","msRequestAnimationFrame","getRelativePosition","mouseX","mouseY","boundingRect","getStyle","currentDevicePixelRatio","getConstraintWidth","getConstraintHeight","_calculatePadding","parentDimension","host","cw","forceRatio","pixelRatio","fontString","pixelSize","fontStyle","longestText","font","arrayOfThings","cache","gc","garbageCollect","longest","measureText","nestedThing","gcLen","textWidth","numberOfLabelLines","numberOfLines","CanvasGradient","defaultColor","colorValue","CanvasPattern","29","parseVisibleItems","jlen","getIntersectItems","inRange","getNearestItems","distanceMetric","minDistance","nearestItems","getCenterPoint","getDistanceMetricForAxis","useX","useY","indexMode","nearest","getArea","intersectsItem","inXRange","inYRange","30","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","layout","31","filterByPosition","sortByWeight","_tmpIndex_","v0","v1","addBox","fullWidth","layoutItem","configure","props","layoutOptions","toPadding","leftPadding","rightPadding","topPadding","bottomPadding","leftBoxes","rightBoxes","topBoxes","bottomBoxes","chartAreaBoxes","chartWidth","chartHeight","chartAreaHeight","verticalBoxWidth","horizontalBoxHeight","maxChartAreaWidth","maxChartAreaHeight","minBoxSizes","maxHorizontalLeftPadding","maxHorizontalRightPadding","maxVerticalTopPadding","maxVerticalBottomPadding","horizontalBox","getPadding","boxPadding","verticalBox","totalLeftBoxesWidth","totalRightBoxesWidth","totalTopBoxesHeight","totalBottomBoxesHeight","fitBox","minBoxSize","scaleMargin","leftPaddingAddition","topPaddingAddition","newMaxChartAreaHeight","newMaxChartAreaWidth","placeBox","minBox","32","_plugins","_cacheId","plugin","unregister","idx","getAll","params","descriptors","$plugins","33","labelsFromTicks","getLineValue","lineValue","computeTextSize","tick","parseFontOptions","globalDefaults","family","parseLineHeight","toLineHeight","drawBorder","drawOnChartArea","drawTicks","tickMarkLength","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","formatters","_ticks","beforeUpdate","maxWidth","margins","longestTextCache","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","beforeTickToLabelConversion","convertTicksToLabels","afterTickToLabelConversion","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","afterUpdate","tickOpts","userCallback","tickFont","labelRotation","cosRotation","originalLabelWidth","labelWidth","tickWidth","angleRadians","scaleLabelOpts","gridLineOpts","isFullWidth","deltaHeight","largestTextWidth","tallestLabelHeightInLines","lineSpace","tickPadding","longestLabelWidth","labelHeight","firstLabelWidth","lastLabelWidth","handleMargins","rawValue","getLabelForIndex","getValueForPixel","pixel","finalVal","decimal","valueOffset","getBaseValue","_autoSkip","skipRatio","maxTicks","optionTicks","tickCount","labelRotationRadians","longestRotatedLabel","maxTicksLimit","optionMajorTicks","isRotated","tickFontColor","fontColor","majorTickFontColor","majorTickFont","tl","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","itemsToDraw","axisWidth","xTickStart","xTickEnd","yTickStart","yTickEnd","lineColor","tx1","ty1","tx2","ty2","x1","y1","labelX","labelY","zeroLineIndex","textAlign","textBaseline","labelYOffset","xLineValue","labelXOffset","yLineValue","glWidth","glColor","glBorderDash","glBorderDashOffset","itemToDraw","save","setLineDash","lineDashOffset","beginPath","moveTo","lineTo","stroke","restore","lineCount","fillText","scaleLabelX","scaleLabelY","halfLineHeight","34","constructors","registerScaleType","scaleConstructor","scaleDefaults","updateScaleDefaults","additions","35","tickValue","logDelta","tickString","logTick","toExponential","numDecimal","logarithmic","remain","36","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","cornerRadius","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","eventPosition","nearestElement","tp","mergeOpacity","colorString","pushOrConcat","toPush","splitNewlines","getBaseModel","tooltipOpts","xAlign","yAlign","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","getBeforeAfterBodyLines","_lastActive","getTitle","lines","getBeforeBody","getBody","bodyItems","bodyItem","getAfterBody","getFooter","existingModel","_active","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","dataPoints","combinedBodyLength","titleLineCount","footerLineCount","widthPadding","maxLineWidth","getTooltipSize","vm","paddingAndSize","radiusAndPadding","getBackgroundPoint","lf","olf","orf","yf","midX","midY","determineAlignment","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","drawBody","xLinePadding","fillLineOfText","drawColorBoxes","textColor","fillRect","strokeRect","drawFooter","drawBackground","quadraticCurveTo","closePath","hasTooltipContent","37","inLabelRange","chartX","chartY","pointRelativePosition","betweenAngles","withinRadius","halfAngle","halfRadius","centreAngle","rangeFromCentre","sA","eA","lineJoin","38","currentVM","globalOptionLineElements","lastDrawnIndex","lineCap","39","xRange","drawPoint","40","isVertical","getBarBounds","halfWidth","halfHeight","signX","signY","barSize","halfStroke","borderLeft","borderRight","borderBottom","corners","startCorner","cornerAt","corner","bounds","41","42","clearRect","roundedRect","arcTo","edgeLength","xOffset","yOffset","SQRT2","leftX","topY","sideSize","drawImage","flip","bezierCurveTo","drawRoundedRectangle","43","thisArg","loopable","a0","a1","klen","_mergerIf","mergeIf","sources","setFn","extensions","ChartElement","Surrogate","__super__","callCallback","getValueOrDefault","getValueAtIndexOrDefault","44","easingEffects","45","inputs","46","47","getContext","48","EXPANDO_KEY","CSS_PREFIX","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","eventListenerOptions","supports","passive","nativeEvent","addResizeListener","ticking","resizer","cssText","expand","shrink","_reset","createResizer","renderProxy","reflow","watchForRender","firstChild","removeResizeListener","unwatchForRender","_enabled","keyframes","_style","createTextNode","getElementById","renderHeight","renderWidth","initial","displayWidth","displayHeight","initCanvas","removeAttribute","proxies","fromNativeEvent","addEvent","removeEvent","49","basic","dom","implementation","50","filler","51","propagate","mappers","boundary","decodeFill","computeBoundary","scaleBottom","scaleTop","scaleZero","getBasePosition","resolveTarget","visited","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","afterDatasetsUpdate","$filler","mapper","beforeDatasetDraw","p0","p1","d0","d1","span","doFill","52","getBoxWidth","labelOpts","usePointStyle","boxWidth","ci","lineDash","legendHitBoxes","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","globalDefault","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","totalWidth","currentColWidth","currentColHeight","itemHeight","itemWidth","lineDefault","legendWidth","isLineWidthZero","offSet","drawLegendBox","halfFontSize","xLeft","yMiddle","lh","hitBox","createNewLegendAndAttach","legendOpts","beforeInit","afterEvent","53","textSize","titleX","titleY","titleFont","createNewTitleBlockAndAttach","titleOpts","titleBlock","54","DatasetScale","getLabels","xLabels","yLabels","minIndex","maxIndex","valueCategory","offsetAmt","valueWidth","widthOffset","valueHeight","heightOffset","horz","valueDimension","55","defaultConfig","LinearScale","LinearScaleBase","IDMatches","hasStacks","valuesPerStack","positiveValues","negativeValues","relativePoints","valuesForType","minVal","maxVal","handleTickRangeOptions","getTickLimit","tickFontSize","handleDirectionalChanges","innerDimension","ticksAsNumbers","56","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","numericGeneratorOptions","precision","stepSize","fixedStepSize","generationOptions","dataRange","factor","spacing","niceRange","niceMin","niceMax","numSpaces","generateTicks","57","LogarithmicScale","minNotZero","significand","tickVal","endExp","endSignificand","lastTick","tickValues","_getFirstTickValue","firstTickValue","58","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getValueCount","getPointLabelFontOptions","pointLabelOptions","determineLimits","getTextAlignForAngle","adjustPointPositionForLabelHeight","numberOrZero","param","LinearRadialScale","drawingArea","largestPossibleRadius","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","getIndexAngle","hLimits","vLimits","setReductions","fitWithPointLabels","setCenterPoint","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","scalingFactor","distanceFromCenter","thisAngle","tickFontStyle","tickFontFamily","tickLabelFont","yCenterOffset","drawRadiusLine","angleLineOpts","pointLabelOpts","outerDistance","outerPosition","pointLabelPosition","pointLabelFontColor","drawPointLabels","59","moment","MIN_INTEGER","MAX_INTEGER","INTERVALS","millisecond","common","steps","minute","hour","day","week","month","quarter","year","UNITS","sorter","arrayUnique","hash","out","table","skey","tkey","mid","i0","i1","lo","lookup","momentify","parser","parse","time","startOf","determineMajorUnit","unit","generate","capacity","timeOpts","minUnit","interval","determineUnitForAutoTicks","unitStepSize","weekday","isoWeekday","majorTicksEnabled","milliseconds","determineStepSize","TimeScale","warn","timestamp","timestamps","endOf","_horizontal","_table","_timestamps","getLabelCapacity","_unit","as","determineUnitForFormatting","_majorUnit","distribution","buildLookupTable","_offsets","upper","lower","computeOffsets","_labelFormat","momentDate","hasTime","determineLabelFormat","majorUnit","ticksFromTimestamps","tooltipFormat","tickFormatFunction","formatOverride","displayFormats","minorFormat","majorFormat","majorTime","majorTickOpts","formatter","getPixelForOffset","getLabelWidth","ticksOpts","tickLabelWidth","sinRotation","exampleTime","exampleLabel","displayFormat","screen","deviceXDPI","logicalXDPI","utils","toTextLines","toFontString","parseFont","bound","arrayDiff","updates","rasterize","orient","x0","y0","dy","ln","R_INSIDE","R_LEFT","R_RIGHT","R_BOTTOM","R_TOP","region","compute","anchor","segment","clamp","r0","r1","clipped","vx","vy","align","aligned","ry","sx","sy","helpers$1","getScaleOrigin","drawTextLine","cfg","shadow","shadowBlur","stroked","strokeText","filled","Label","_config","_rects","_ctx","_el","_modelize","positioner","textShadowBlur","textShadowColor","textStrokeColor","textStrokeWidth","th","tw","tx","ty","boundingRects","geometry","globalAlpha","bgColor","drawFrame","strokeColor","strokeWidth","textGeometry","shadowColor","drawText","helpers$2","rotated","cx","cy","projected","dp","toAxis","HitBox","_rotation","_rect","coordinates","vs","intersects","other","pr0","pr1","_points","axes","prepare","$layout","_box","_hidable","_visible","_idx","sa","sb","dirty","collider","s0","s1","collide","h0","h1","compute$1","helpers$3","helpers$4","DEFAULT_KEY","$context","$groups","_key","_dirty","handleMoveEvents","leave","_labels","_hovered","dispatchMoveEvents","datalabels","_actives","_listened","_datasets","afterDatasetUpdate","configs","afterDatasetsDraw","beforeEvent","handleClickEvents","actives","invalidate","ChartDataLabels","createHTML","forcedStringHTMLMethod","quot","PhotoSwipe","features","createEl","getScrollY","getChildByClass","nextSibling","arraySearch","sine","inOut","cubic","detectFeatures","oldIE","all","raf","caf","cancelAnimationFrame","pointerEvent","pointerEnabled","msPointerEnabled","appVersion","isOldIOSPhone","isOldAndroid","androidVersion","isMobileOpera","svg","createSVGRect","allowPanToNext","bgOpacity","mouseUsed","pinchToClose","closeOnScroll","closeOnVerticalDrag","verticalDragRange","hideAnimationDuration","showAnimationDuration","showHideOpacity","escKey","arrowKeys","mainScrollEndFriction","panEndFriction","isClickableElement","getDoubleTapZoom","initialZoomLevel","maxSpreadZoom","modal","scaleMode","J","K","U","X","Z","ba","ca","da","ea","ga","ha","ia","ja","ka","ma","na","oa","pa","qa","ra","ta","ua","va","wa","xa","ya","publicMethods","za","_b","Aa","Ba","Ca","Da","Ea","bg","Fa","currItem","fitRatio","Ga","lc","Ha","initialPosition","Ia","Ja","Ka","tb","La","Ma","Na","Oa","Ra","hc","Sa","Ta","Ua","Wa","returnValue","Xa","Ya","setScrollOffset","Za","$a","_a","ab","bb","cb","db","shout","listen","viewportSize","isMainScrollAnimating","getZoomLevel","getCurrentIndex","isDragging","isZooming","applyZoomPan","framework","template","scrollWrap","itemHolders","perspective","Va","updateSize","ui","$b","mainClass","setContent","updateCurrItem","bc","Wb","yb","panTo","goTo","updateCurrZoomItem","invalidateCurrItems","needsUpdate","cleanSlide","zoomTo","gb","hb","ib","jb","kb","lb","mb","nb","ob","pb","qb","rb","ub","xb","Cb","Db","prevent","Bb","Eb","identifier","Fb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Zb","pointerId","zb","Pb","Ob","vb","Ub","Gb","Qb","Rb","calculateSwipeSpeed","Tb","Vb","Sb","lastFlickOffset","lastFlickDist","lastFlickSpeed","slowDownRatio","slowDownRatioReverse","speedDecelerationRatio","speedDecelerationRatioAbs","distanceOffset","backAnimDestination","backAnimStarted","calculateOverBoundsAnimOffset","calculateAnimOffset","timeDiff","panAnimLoop","zoomPan","lastNow","initGestures","likelyTouchDevice","mousemove","Xb","Yb","initialLayout","getThumbBoundsFn","loadError","miniImg","webkitBackfaceVisibility","cc","dc","ec","errorMsg","forceProgressiveLoading","preload","getNumItemsFn","vGap","ic","imageAppended","loaded","jc","loading","loadComplete","onload","onerror","kc","lastChild","mc","baseDiv","clearPlaceholder","lazyLoadItem","initController","getItemAt","preloader","allowProgressiveImg","msrc","nc","qc","oc","pc","origEvent","releasePoint","initTap","onTapStart","onTapRelease","wb","initDesktopZoom","setupDesktopZoom","handleMouseWheel","mouseZoomedIn","detail","toggleDesktopZoom","rc","sc","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","galleryUID","Ec","Fc","Gc","galleryPIDs","pid","Hc","location","initHistory","updateURL","onHashChange","back","pushState","pathname","search","PhotoSwipeUI_Default","barsSize","closeElClasses","timeToIdle","timeToIdleOutside","loadingIndicatorDelay","addCaptionHTMLFn","closeEl","captionEl","fullscreenEl","zoomEl","shareEl","counterEl","arrowEl","preloaderEl","tapToClose","tapToToggleControls","clickToCloseNonZoomable","shareButtons","url","download","getImageURLForShare","getPageURLForShare","getTextForShare","indexIndicatorSep","fitControlsWidth","onTap","encodeURIComponent","parseShareButtonOut","setIdle","onInit","isFullscreen","exit","hideControls","showControls","onGlobalTap","onMouseOver","eventK","updateFullscreen","getFullscreenAPI","naturalWidth","updateIndexIndicator","supportsFullscreen","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","requestFullscreen","enterK","exitK","elementK","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","ALLOW_KEYBOARD_INPUT","gallerySelector","onThumbnailsClick","clickedListItem","clickedGallery","numChildNodes","nodeIndex","openPhotoSwipe","galleryElement","disableAnimation","fromURL","pswpElement","figureEl","linkEl","thumbElements","numNodes","parseThumbnailElements","thumbnail","pageYScroll","galleryElements","hashData","vars","gid","photoswipeParseHash","initPhotoSwipeFromDOM","DatePicker","collectionDisabled","calendar","elementValue","elementDataValue","valueString","formatString","isRTL","disable","enable","timeChange","highlightedObject","targetDate","date","selectMonth","selectYear","includeToday","buttonToday","calendarItem","isInfiniteValue","getFullYear","getMonth","getDay","createRange","createDate","withinRange","dateUnit","overlapRanges","two","rel","setDate","navigate","targetDateObject","targetYear","targetMonth","isTargetArray","isTargetObject","viewsetObject","setHours","measure","viewset","dateObject","hasEnabledBeforeTarget","hasEnabledAfterTarget","reachedMin","reachedMax","originalDateObject","isFlippedBase","minLimitObject","maxLimitObject","hasEnabledWeekdays","dateTime","dateToVerify","isDisabledMatch","dateToDisable","firstDay","inverted","parsingObject","toArray","formattingLabel","formatLength","yyyy","yy","mm","dd","getWordLengthFromCollection","word","getFirstWordLength","ddd","weekdaysShort","dddd","weekdaysFull","mmm","monthsShort","mmmm","monthsFull","itemObject","isDateExact","isDateOverlap","flipEnable","deactivate","datesToDisable","disabledItems","unitToDisable","matchFound","activate","datesToEnable","disabledItemsCount","unitToEnable","disabledUnit","isExactRange","isOpen","fullCollection","nowObject","selectedObject","disabledCollection","tableHead","showWeekdaysFull","DAYS_IN_WEEK","weekdays","createMonthNav","controls","labelMonthNext","labelMonthPrev","createMonthLabel","monthsCollection","showMonthsShort","selectMonths","loopedMonth","labelMonthSelect","createYearLabel","focusedYear","numberYears","selectYears","minYear","maxYear","lowestYear","highestYear","availableYears","neededYears","loopedYear","labelYearSelect","header","WEEKS_IN_CALENDAR","rowCounter","shiftDateBy","isHighlighted","formattedDate","infocus","outfocus","activedescendant","today","buttonClear","buttonClose","navPrev","navNext","pickadate","$pickerInstance","labeldayFirstThreeLetters","monthFirstUC","elementOpenData","apiParams","scaleColors","normalizeFunction","selectedRegions","selectedMarkers","mapObject","regionName","vectorMap","jvm","Map","maps","orgEvent","absDelta","fix","HORIZONTAL_AXIS","pageHeight","lowestDelta","shouldAdjustOldDeltas","deltaFactor","nullLowestDeltaTimeout","nullLowestDelta","dispatch","handle","special","adjustOldDeltas","toFix","toBind","fixHooks","mouseHooks","mousewheel","setup","getLineHeight","getPageHeight","teardown","unmousewheel","temp","parentClass","mixin","MAX_VALUE","MIN_VALUE","whenImageLoaded","deferred","Deferred","reject","isImageUrl","AbstractElement","applyAttr","AbstractCanvasElement","setSize","rootElement","classPrefix","addPath","addCircle","addImage","addText","addGroup","parentGroup","AbstractShapeElement","isHovered","updateStyle","setStyle","attrs","mergeStyles","selectedHover","newStyles","svgns","getElementCtr","ctr","SVGGroupElement","SVGCanvasElement","defsElement","applyTransformParams","transX","transY","SVGShapeElement","patternEl","imageEl","images","then","setAttributeNS","imageCounter","SVGPathElement","SVGCircleElement","SVGImageElement","SVGTextElement","VMLElement","VMLInitialized","initializeVML","namespaces","rvml","createStyleSheet","addRule","VMLGroupElement","coordorigin","VMLCanvasElement","paths","coordsize","VMLShapeElement","fillElement","strokeElement","fillcolor","strokecolor","strokeweight","VMLPathElement","pathSvgToVml","matrix","ctrlx","ctrly","coords","VMLCircleElement","VectorCanvas","SVGAngle","impl","SimpleScale","getValue","OrdinalScale","NumericScale","setScale","setNormalizeFunction","clearMinValue","clearMaxValue","lengthes","fullLength","vectorLength","vectorSubtract","vectorToNum","vectorAdd","vectorMult","vector","vector1","vector2","extent","LN10","ColorScale","rgbToArray","numToRgb","arrayToRgb","ar","series","cssClass","vertical","legendCntVertical","legendCntHorizontal","sample","inner","markerStyle","background","labelRender","DataSeries","setAttributes","shape","Proj","degRad","radDeg","sgn","mill","lat","lng","mill_inv","atan","merc","merc_inv","aea","lambda0","fi1","fi2","fi","lambda","theta","ro","ro0","aea_inv","xCoord","yCoord","lcc","fi0","lcc_inv","MapObject","getLabelText","getLabelOffsets","offsets","setHovered","setSelected","Region","bbox","labelStyle","labelsGroup","updateLabelPosition","Marker","isImage","createShape","defaultParams","mapData","markers","regions","regionsColors","regionsData","defaultWidth","defaultHeight","setBackgroundColor","apiEvents","bindContainerTouchEvents","MSGesture","bindContainerPointerEvents","bindContainerEvents","bindElementEvents","createTip","zoomButtons","bindZoomButtons","createRegions","createMarkers","focusOn","setFocus","setSelectedRegions","setSelectedMarkers","createSeries","baseTransX","baseTransY","baseScale","curBaseScale","applyTransform","maxTransX","maxTransY","minTransX","minTransY","repositionMarkers","repositionLabels","oldPageX","oldPageY","mouseDown","panOnDrag","onContainerMouseUp","zoomOnScroll","zoomStep","zoomOnScrollSpeed","tip","touchStartScale","touchStartDistance","touchY","centerTouchX","centerTouchY","lastTouchesLength","handleTouchEvent","transXOld","transYOld","gesture","translationX","translationY","addPointer","mouseMoved","delegate","baseVal","tipText","tipShowEvent","overEvent","tipWidth","tipHeight","clickEvent","regionsSelectable","markersSelectable","clearSelected","zoomAnimate","anchorX","anchorY","isCentered","scaleStart","scaleDiff","transXStart","transXDiff","transYStart","transYDiff","viewportChangeEvent","zoomMax","zoomMin","itemBbox","codes","latLngToPoint","getSelected","getSelectedRegions","getSelectedMarkers","clearSelectedRegions","clearSelectedMarkers","getMapObject","getRegionName","regionLabelsGroup","regionStyle","regionLabelStyle","marker","markerConfig","markersArray","markersGroup","markerLabelsGroup","latLng","getMarkerPosition","markerLabelStyle","removeMarkers","projection","addMarker","seriesData","addMarkers","removeAllMarkers","inset","proj","centralMeridian","getInsetForPoint","pointToLatLng","nx","ny","insets","onRegionTipShow","onRegionOver","onRegionOut","onRegionClick","onRegionSelected","onMarkerTipShow","onMarkerOver","onMarkerOut","onMarkerClick","onMarkerSelected","onViewportChange","MultiMap","maxLevel","multiMapLevel","addMap","defaultProjection","mapsLoaded","backButton","goBack","spinner","cnt","multimap","mapName","mapNameByCode","drillDownPromise","drillDown","downloadMap","mapUrlByCode","currentMap","focusPromise","downloadPromise","always","when","prevMap","multiMap","readyState","_typeof","eval","_liteReady2","_interopRequireDefault","_global","_jarallax2","default","oldPlugin","jarallax","noConflict","jQueryPlugin","oldJqPlugin","_slicedToArray","arr","_arr","_n","_d","_e","_s","sliceIterator","_createClass","protoProps","staticProps","_rafl2","isIE","supportTransform","prefixes","wndW","wndH","wndY","forceResizeParallax","forceScrollParallax","updateWndVars","jarallaxList","oldPageData","updateParallax","isResized","isScrolled","resizeObserver","ResizeObserver","entry","instanceID","Jarallax","userOptions","instance","_classCallCheck","imgSrc","imgElement","imgSize","imgPosition","imgRepeat","keepImg","elementInViewport","disableParallax","disableVideo","automaticResize","videoSrc","videoStartTime","videoEndTime","videoVolume","videoPlayOnlyVisible","onDestroy","onCoverImage","deprecatedDataAttribute","oldDataOptions","dataOptions","pureDataOptions","loweCaseOption","pureOptions","noAndroid","noIos","disableParallaxRegexp","disableVideoRegexp","elementInVP","useImgTag","initImg","canInitParallax","_arguments","$imgElement","cloneNode","$itemParent","containerStyles","pointerEvents","imageStyles","curStyle","curImgStyle","parentWithTransform","$itemParents","parentTransform","addToParallaxList","removeFromParallaxList","originalStylesTag","originalStylesImgTag","$clipStyles","styleSheet","contH","isScroll","scrollDist","resultH","resultMT","parallaxScrollDistance","isElementInViewport","contT","viewportRect","beforeTop","beforeTopEnd","afterTop","beforeBottom","beforeBottomEnd","afterBottom","fromViewportCenter","visiblePercent","positionY","section","coverImage","clipContainer","HTMLElement","ms","req","cancel","webkitCancelAnimationFrame","mozCancelAnimationFrame","_videoWorker2","_global2","_jarallaxVideo2","VideoWorker","_done","_fail","execute","fail","ID","YoutubeAPIadded","VimeoAPIadded","loadingYoutubePlayer","loadingVimeoPlayer","loadingYoutubeDefer","loadingVimeoDefer","options_default","autoplay","mute","volume","showContols","videoID","parseURL","loadAPI","videoFormats","Youtube","Vimeo","vmUrl","getVimeoID","Local","userEventsList","_this","_this2","player","playVideo","seekTo","YT","PlayerState","PLAYING","getPlayerState","setCurrentTime","getPaused","paused","play","pauseVideo","pause","setVolume","$video","unMute","getVolume","isMuted","videoImage","availableSizes","tempImg","Image","XMLHttpRequest","onreadystatechange","status","responseText","thumbnail_large","send","getVideo","onAPIready","hiddenDiv","playerOptions","videoId","playerVars","autohide","playsinline","iv_load_policy","modestbranding","showinfo","disablekb","ytStarted","ytProgressInterval","onReady","fire","onStateChange","ENDED","PAUSED","getCurrentTime","firstInit","playerID","Player","videoWidth","videoHeight","getVideoWidth","getVideoHeight","vmStarted","seconds","locStarted","onYouTubeIframeAPIReady","vimeoInterval","defInit","video","defCoverImage","imageData","ml","mt","defInitImg","defaultResult","defaultInitImgResult","defCanInitParallax","oldOnScroll","isVisible","$default_item","imgWidth","imgHeight","getImageURL","defDestroy","OFI","propRegex","testImg","supportsObjectFit","supportsObjectPosition","supportsOFI","supportsCurrentSrc","currentSrc","nativeGetAttribute","nativeSetAttribute","autoModeEnabled","onImageReady","fixOne","parsed","ofi","skipTest","srcset","naturalHeight","ss","keepSrcUsable","picturefill","pf","evaled","fillImg","reselect","curSrc","supported","polyfillCurrentSrc","backgroundImage","backgroundRepeat","backgroundOrigin","backgroundSize","imgs","startAutoMode","watchMQ","getOfiImageMaybe","HTMLImageElement","hijackAttributes","$win","$doc","svgNS","svgSupported","namespaceURI","transitionSupported","touchSupported","mousedownEvent","mousemoveEvent","mouseupEvent","vibrate","webkitVibrate","createSvgElement","debounce","leadingZero","idCounter","dialRadius","tickRadius","diameter","tpl","ClockPicker","popover","plate","hoursView","minutesView","amPmBlock","isInput","isAppended","isShown","currentView","spanHours","spanMinutes","spanAmPm","amOrPm","isTwelvehour","twelvehour","minTime","maxTime","minMinutes","maxMinutes","minHours","maxHours","isInvalidTimeScope","parseTimeOptions","period","amPmButtonsTemplate","togglePeriod","previsiousPeriod","disableOutOfRangeElements","ampmclickable","darktheme","donetext","cleartext","clearInput","toggleView","radian","tickTpl","hourstep","incrementValue","minutestep","isTouch","moved","movingTimer","setHand","hours","minutes","autoclose","currentHours","bearing","hand","fg","raiseCallback","callbackFunction","DEFAULTS","fromnow","ampmSubmit","toggle","locate","parseInputValue","getHours","getMinutes","beforeShow","afterShow","beforeHide","afterHide","$hoursTick","$minutesTick","$amBtn","$pmBtn","$doneBtn","raiseAfterHourSelect","beforeHourSelect","isHours","nextView","hideView","resetClock","toggleViewTimer","afterHourSelect","roundBy5","dragging","vibrateTimer","afterDone","selectedTime","setMinutes","setSeconds","beforeDone","outHours","isHTML5","pickatime","handleClockPickerRequest","openElementData","dateTimePicker","delimiter","$timePicker","$datePicker","timeValue","dateValue"],"mappings":"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","file":"js/mdb.min.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 = 225);\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nvar Symbol = global.Symbol;\nvar store = shared('wks');\n\nmodule.exports = function (name) {\n return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]\n || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.3.2',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar nativeFunctionToString = require('../internals/function-to-string');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(nativeFunctionToString).split('toString');\n\nshared('inspectSource', function (it) {\n return nativeFunctionToString.call(it);\n});\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);\n});\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","module.exports = {};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var bind = require('../internals/bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","module.exports = false;\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var shared = require('../internals/shared');\n\nmodule.exports = shared('native-function-to-string', Function.toString);\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar PROTOTYPE = 'prototype';\nvar Empty = function () { /* empty */ };\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var length = enumBugKeys.length;\n var lt = '<';\n var script = 'script';\n var gt = '>';\n var js = 'java' + script + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = String(js);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];\n return createDict();\n};\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\nhiddenKeys[IE_PROTO] = true;\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","exports.f = Object.getOwnPropertySymbols;\n","module.exports = require('../internals/global');\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n return !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n createNonEnumerableProperty(ArrayPrototype, UNSCOPABLES, create(null));\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !method || !fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var global = require('../internals/global');\nvar nativeFunctionToString = require('../internals/function-to-string');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar DataView = global.DataView;\nvar DataViewPrototype = DataView && DataView.prototype;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar NATIVE_ARRAY_BUFFER = !!(global.ArrayBuffer && DataView);\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar isView = function isView(it) {\n var klass = classof(it);\n return klass === 'DataView' || has(TypedArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n return isObject(it) && has(TypedArrayConstructorsList, classof(it));\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf) {\n if (isPrototypeOf.call(TypedArray, C)) return C;\n } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n return C;\n }\n } throw TypeError('Target is not a typed array constructor');\n};\n\nvar exportProto = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n delete TypedArrayConstructor.prototype[KEY];\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportStatic = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n delete TypedArrayConstructor[KEY];\n }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\n// WebKit bug - the same parent prototype for typed arrays and data view\nif (NATIVE_ARRAY_BUFFER && setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf(DataViewPrototype, ObjectPrototype);\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER: NATIVE_ARRAY_BUFFER,\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportProto: exportProto,\n exportStatic: exportStatic,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","module.exports = {};\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\nvar ObjectPrototype = Object.prototype;\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (toString !== ObjectPrototype.toString) {\n redefine(ObjectPrototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar SLOPPY_METHOD = sloppyArrayMethod('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || SLOPPY_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/wrapped-well-known-symbol');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar JSON = global.JSON;\nvar nativeJSONStringify = JSON && JSON.stringify;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = NATIVE_SYMBOL && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nJSON && $({ target: 'JSON', stat: true, forced: !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return nativeJSONStringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || nativeJSONStringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || nativeJSONStringify(Object(symbol)) != '{}';\n}) }, {\n stringify: function stringify(it) {\n var args = [it];\n var index = 1;\n var replacer, $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return nativeJSONStringify.apply(JSON, args);\n }\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar SLOPPY_METHOD = sloppyArrayMethod('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || SLOPPY_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\nvar IS_CONCAT_SPREADABLE_SUPPORT = !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","exports.f = require('../internals/well-known-symbol');\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/wrapped-well-known-symbol');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var redefine = require('../internals/redefine');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar nativeDateToString = DatePrototype[TO_STRING];\nvar getTime = DatePrototype.getTime;\n\n// `Date.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-date.prototype.tostring\nif (new Date(NaN) + '' != INVALID_DATE) {\n redefine(DatePrototype, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? nativeDateToString.call(this) : INVALID_DATE;\n });\n}\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n }\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('filter') }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('map') }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('slice') }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar classof = require('../internals/classof');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = String(test) !== '[object z]' ? function toString() {\n return '[object ' + classof(this) + ']';\n} : test.toString;\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = sloppyArrayMethod('forEach') ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('splice') }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/forced-string-trim-method');\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var $ = require('../internals/export');\nvar parseFloatImplementation = require('../internals/parse-float');\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != parseFloatImplementation }, {\n parseFloat: parseFloatImplementation\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","export default class MaterialSelectViewRenderer {\r\n\r\n constructor(view) {\r\n\r\n this.view = view;\r\n }\r\n\r\n get shouldValidate() {\r\n return this.view.options.validate;\r\n }\r\n\r\n get shouldInheritTabindex() {\r\n return this.view.$nativeSelect.data('inherit-tabindex') !== false;\r\n }\r\n\r\n get isMultiple() {\r\n return this.view.isMultiple;\r\n }\r\n\r\n get isSearchable() {\r\n return this.view.isSearchable;\r\n }\r\n\r\n get isRequired() {\r\n return this.view.isRequired;\r\n }\r\n\r\n get isEditable() {\r\n return this.view.isEditable;\r\n }\r\n\r\n get isDisabled() {\r\n return this.view.isDisabled;\r\n }\r\n\r\n get isDefaultMaterialInput() {\r\n return this.view.options.defaultMaterialInput;\r\n }\r\n\r\n get isCustomSelect() {\r\n return this.view.$materialSelect.hasClass('custom-select') && this.view.$materialSelect.hasClass('select-dropdown');\r\n }\r\n\r\n destroy() {\r\n\r\n const currentUuid = this.view.$nativeSelect.data('select-id');\r\n\r\n this.view.$nativeSelect.data('select-id', null).removeClass('initialized');\r\n this.view.$nativeSelect.parent().find('span.caret').remove();\r\n this.view.$nativeSelect.parent().find('input').remove();\r\n \r\n if( this.view.$nativeSelect.hasClass('select-wrapper')) {\r\n this.view.$nativeSelect.find('select').unwrap();\r\n }\r\n \r\n $(`ul#select-options-${currentUuid}`).remove();\r\n }\r\n\r\n render() {\r\n\r\n this.setWrapperClasses();\r\n this.setMaterialSelectInitialValue();\r\n\r\n this.view.$nativeSelect.data('select-id', this.view.properties.id);\r\n this.view.$nativeSelect.before(this.view.$selectWrapper);\r\n\r\n if (this.view.options.showResetButton) {\r\n\r\n this.appendResetButton();\r\n }\r\n\r\n this.appendDropdownIcon();\r\n this.appendMaterialSelect();\r\n this.appendMaterialOptionsList();\r\n this.appendNativeSelect();\r\n this.appendSelectLabel();\r\n this.appendCustomTemplateParts();\r\n\r\n if (this.shouldValidate) {\r\n\r\n this.appendValidationFeedbackElements();\r\n }\r\n\r\n if (this.isRequired) {\r\n\r\n this.enableValidation();\r\n }\r\n\r\n if (!this.isDisabled) {\r\n\r\n this.setMaterialOptionsListMaxHeight();\r\n this.view.dropdown = this.view.$materialSelect.dropdown({\r\n hover: false,\r\n closeOnClick: false,\r\n resetScroll: false\r\n });\r\n }\r\n\r\n if (this.shouldInheritTabindex) {\r\n\r\n this.view.$materialSelect.attr('tabindex', this.view.$nativeSelect.attr('tabindex'));\r\n }\r\n\r\n if (this.isDefaultMaterialInput) {\r\n\r\n this.view.$mainLabel.css('top', '-7px');\r\n }\r\n\r\n if (this.isCustomSelect) {\r\n\r\n this.view.$materialSelect.css({\r\n display: 'inline-block',\r\n width: '100%',\r\n height: 'calc(1.5em + .75rem + 2px)',\r\n padding: '.375rem 1.75rem .375rem .75rem',\r\n fontSize: '1rem',\r\n lineHeight: '1.5',\r\n backgroundColor: '#fff',\r\n border: '1px solid #ced4da'\r\n });\r\n }\r\n\r\n this.addAccessibilityAttributes();\r\n this.markInitialized();\r\n }\r\n\r\n setWrapperClasses() {\r\n\r\n if (this.isDefaultMaterialInput) {\r\n\r\n this.view.$selectWrapper\r\n .addClass(\r\n this.view.$nativeSelect.attr('class').split(' ').filter((el) => el !== 'md-form').join(' ')\r\n )\r\n .css({\r\n marginTop: '1.5rem',\r\n marginBottom: '1.5rem'\r\n });\r\n\r\n } else {\r\n this.view.$selectWrapper.addClass(this.view.$nativeSelect.attr('class'));\r\n }\r\n }\r\n\r\n setMaterialSelectInitialValue() {\r\n\r\n if (!this.view.options.placeholder) {\r\n\r\n const sanitizedLabelHtml = this.view.$materialSelectInitialOption.replace(/\"/g, '"').replace(/ +/g, ' ').trim();\r\n this.view.$materialSelect.val(sanitizedLabelHtml);\r\n } else {\r\n\r\n this.view.$materialSelect.attr('placeholder', this.view.options.placeholder);\r\n if (!this.view.$nativeSelect.find('option[value=\"\"][selected][disabled][data-mdb-placeholder]').length) {\r\n\r\n this.view.$nativeSelect.prepend('');\r\n }\r\n }\r\n }\r\n\r\n appendDropdownIcon() {\r\n\r\n if (this.isDisabled) {\r\n\r\n this.view.$dropdownIcon.addClass('disabled');\r\n }\r\n\r\n this.view.$selectWrapper.append(this.view.$dropdownIcon);\r\n }\r\n\r\n appendResetButton() {\r\n\r\n if (this.isDisabled) {\r\n\r\n this.view.$btnReset.addClass('disabled');\r\n }\r\n\r\n if (this.view.$nativeSelect.get(0).selectedIndex === -1) {\r\n\r\n this.view.$btnReset.hide();\r\n }\r\n\r\n this.view.$selectWrapper.append(this.view.$btnReset);\r\n }\r\n\r\n appendMaterialSelect() {\r\n\r\n this.view.$selectWrapper.append(this.view.$materialSelect);\r\n }\r\n\r\n appendMaterialOptionsList() {\r\n\r\n if (this.isSearchable) {\r\n\r\n this.appendSearchInputOption();\r\n }\r\n\r\n if (this.isEditable && this.isSearchable) {\r\n\r\n this.appendAddOptionBtn();\r\n }\r\n\r\n this.buildMaterialOptions();\r\n\r\n if (this.isMultiple) {\r\n\r\n this.appendToggleAllCheckbox();\r\n }\r\n\r\n this.view.$selectWrapper.append(this.view.$materialOptionsList);\r\n }\r\n\r\n appendNativeSelect() {\r\n\r\n this.view.$nativeSelect.appendTo(this.view.$selectWrapper);\r\n }\r\n\r\n appendSelectLabel() {\r\n\r\n if (this.view.$materialSelect.val() || this.view.options.placeholder) {\r\n\r\n this.view.$mainLabel.addClass('active');\r\n }\r\n\r\n this.view.$mainLabel[this.isDisabled ? 'addClass' : 'removeClass']('disabled');\r\n\r\n this.view.$mainLabel.appendTo(this.view.$selectWrapper);\r\n }\r\n\r\n appendCustomTemplateParts() {\r\n\r\n this.view.$customTemplateParts.each((_, element) => {\r\n\r\n const $templatePart = $(element);\r\n $templatePart.appendTo(this.view.$materialOptionsList).wrap('
  • ');\r\n });\r\n\r\n this.view.$btnSave.appendTo(this.view.$selectWrapper).clone().appendTo(this.view.$materialOptionsList);\r\n }\r\n\r\n appendValidationFeedbackElements() {\r\n\r\n this.view.$validFeedback.insertAfter(this.view.$selectWrapper);\r\n this.view.$invalidFeedback.insertAfter(this.view.$selectWrapper);\r\n }\r\n\r\n enableValidation() {\r\n\r\n this.view.$nativeSelect.css({\r\n position: 'absolute',\r\n top: '1rem',\r\n left: '0',\r\n height: '0',\r\n width: '0',\r\n opacity: '0',\r\n padding: '0',\r\n 'pointer-events': 'none'\r\n });\r\n\r\n if (this.view.$nativeSelect.attr('style').indexOf('inline!important') === -1) {\r\n\r\n this.view.$nativeSelect.attr('style', `${this.view.$nativeSelect.attr('style')} display: inline!important;`);\r\n }\r\n\r\n this.view.$nativeSelect.attr('tabindex', -1);\r\n this.view.$nativeSelect.data('inherit-tabindex', false);\r\n }\r\n\r\n setMaterialOptionsListMaxHeight() {\r\n const $tempWrapper = $('
    ').appendTo($('body'));\r\n $tempWrapper.css({\r\n position: 'absolute !important',\r\n visibility: 'hidden !important',\r\n display: 'block !important'\r\n });\r\n\r\n this.view.$materialOptionsList.show();\r\n const $optionsListClone = this.view.$materialOptionsList.clone().appendTo($tempWrapper);\r\n\r\n const multiplier = this.view.options.visibleOptions;\r\n let additionalHeight = 0;\r\n const $materialOptions = $optionsListClone.find('li').not('.disabled');\r\n const optionHeight = $materialOptions.first().text().trim() === '' ? $materialOptions.eq(1).height() : $materialOptions.first().height();\r\n\r\n const optionsCount = $materialOptions.length;\r\n\r\n if (this.isSearchable) {\r\n additionalHeight += this.view.$searchInput.height();\r\n }\r\n\r\n if (this.isMultiple) {\r\n additionalHeight += this.view.$toggleAll.height();\r\n }\r\n\r\n this.view.$materialOptionsList.hide();\r\n $tempWrapper.remove();\r\n\r\n if (multiplier >= 0 && multiplier < optionsCount) {\r\n\r\n const maxHeight = optionHeight * multiplier + additionalHeight;\r\n this.view.$materialOptionsList.css('max-height', maxHeight);\r\n this.view.$materialSelect.data('maxheight', maxHeight);\r\n }\r\n }\r\n\r\n addAccessibilityAttributes() {\r\n\r\n this.view.$materialSelect.attr({\r\n role: this.isSearchable ? 'combobox' : 'listbox',\r\n 'aria-multiselectable': this.isMultiple,\r\n 'aria-disabled': this.isDisabled,\r\n 'aria-required': this.isRequired,\r\n 'aria-labelledby': this.view.$mainLabel.attr('id'),\r\n 'aria-haspopup': true,\r\n 'aria-expanded': false\r\n });\r\n\r\n if (this.view.$searchInput) {\r\n\r\n this.view.$searchInput.attr('role', 'searchbox');\r\n }\r\n\r\n this.view.$materialOptionsList.find('li').each(function () {\r\n\r\n const $this = $(this);\r\n $this.attr({\r\n role: 'option',\r\n 'aria-selected': $this.hasClass('active'),\r\n 'aria-disabled': $this.hasClass('disabled')\r\n });\r\n });\r\n }\r\n\r\n markInitialized() {\r\n\r\n this.view.$nativeSelect.addClass('initialized');\r\n }\r\n\r\n appendSearchInputOption() {\r\n\r\n const placeholder = this.view.$nativeSelect.attr('searchable');\r\n const divClass = this.isDefaultMaterialInput ? '' : 'md-form';\r\n const inputClass = this.isDefaultMaterialInput ? 'select-default mb-2' : '';\r\n\r\n this.view.$searchInput = $(`
    `);\r\n this.view.$materialOptionsList.append(this.view.$searchInput);\r\n this.view.$searchInput.on('click', (e) => e.stopPropagation());\r\n }\r\n\r\n appendAddOptionBtn() {\r\n\r\n this.view.$searchInput.append(this.view.$addOptionBtn);\r\n }\r\n\r\n buildMaterialOptions() {\r\n\r\n this.view.$nativeSelectChildren.each((index, option) => {\r\n\r\n const $this = $(option);\r\n\r\n if ($this.is('option')) {\r\n\r\n this.buildSingleOption($this, this.isMultiple ? 'multiple' : '');\r\n } else if ($this.is('optgroup')) {\r\n\r\n const $materialOptgroup = $(`
  • ${$this.attr('label')}
  • `);\r\n this.view.$materialOptionsList.append($materialOptgroup);\r\n\r\n const $optgroupOptions = $this.children('option');\r\n $optgroupOptions.each((index, optgroupOption) => {\r\n\r\n this.buildSingleOption($(optgroupOption), 'optgroup-option');\r\n });\r\n }\r\n });\r\n }\r\n\r\n appendToggleAllCheckbox() {\r\n\r\n const firstOption = this.view.$materialOptionsList.find('li').first();\r\n if (firstOption.hasClass('disabled') && firstOption.find('input').prop('disabled')) {\r\n firstOption.after(this.view.$toggleAll);\r\n } else {\r\n this.view.$materialOptionsList.find('li').first().before(this.view.$toggleAll);\r\n }\r\n\r\n }\r\n\r\n addNewOption() {\r\n\r\n const val = this.view.$searchInput.find('input').val();\r\n const $newOption = $(``).prop('selected', true);\r\n if (!this.isMultiple) {\r\n this.view.$nativeSelectChildren.each((index, option) => {\r\n $(option).attr('selected', false);\r\n });\r\n }\r\n this.view.$nativeSelect.append($newOption);\r\n }\r\n\r\n buildSingleOption($nativeSelectChild, type) {\r\n\r\n const disabled = $nativeSelectChild.is(':disabled') ? 'disabled' : '';\r\n const active = $nativeSelectChild.is(':selected') ? 'active' : '';\r\n const optgroupClass = type === 'optgroup-option' ? 'optgroup-option' : '';\r\n const iconUrl = $nativeSelectChild.data('icon');\r\n const fas = $nativeSelectChild.data('fas') ? ` ` : '';\r\n const far = $nativeSelectChild.data('far') ? ` ` : '';\r\n const fab = $nativeSelectChild.data('fab') ? ` ` : '';\r\n\r\n const classes = $nativeSelectChild.attr('class');\r\n\r\n const iconHtml = iconUrl ? `\"\"` : '';\r\n const checkboxHtml = this.isMultiple ? `` : '';\r\n const secondaryText = $nativeSelectChild.data('secondary-text') ? `

    ${$nativeSelectChild.data('secondary-text')}

    ` : '';\r\n\r\n this.view.$materialOptionsList.append($(`
  • ${iconHtml}${checkboxHtml} ${$nativeSelectChild.html()} ${fas} ${far} ${fab} ${secondaryText}
  • `));\r\n }\r\n}\r\n","module.exports = jQuery;","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","var $ = require('../internals/export');\nvar parseIntImplementation = require('../internals/parse-int');\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n parseInt: parseIntImplementation\n});\n","import MaterialSelectViewRenderer from './material-select-view-renderer';\r\n\r\nexport default class MaterialSelectView {\r\n\r\n // eslint-disable-next-line object-curly-newline\r\n constructor($nativeSelect, { options, properties: { id } }) {\r\n\r\n this.properties = {\r\n id,\r\n isMultiple: Boolean($nativeSelect.attr('multiple')),\r\n isSearchable: Boolean($nativeSelect.attr('searchable')),\r\n isRequired: Boolean($nativeSelect.attr('required')),\r\n isEditable: Boolean($nativeSelect.attr('editable'))\r\n };\r\n\r\n this.options = this._copyOptions(options);\r\n\r\n this.$nativeSelect = $nativeSelect;\r\n this.$selectWrapper = $('
    ');\r\n this.$materialOptionsList = $(``);\r\n this.$materialSelectInitialOption = $nativeSelect.find('option:selected').text() || $nativeSelect.find('option:first').text() || '';\r\n this.$nativeSelectChildren = this.$nativeSelect.children('option, optgroup');\r\n this.$materialSelect = $(``);\r\n this.$dropdownIcon = this.options.defaultMaterialInput ? '' : $('');\r\n this.$searchInput = null;\r\n this.$noSearchResultsInfo = $(`
  • ${this.options.labels.noSearchResults}
  • `);\r\n this.$toggleAll = $(`
  • `);\r\n this.$addOptionBtn = $('');\r\n this.$mainLabel = this._jQueryFallback(this.$nativeSelect.next('label.mdb-main-label'), $(`label[for='${this.properties.id}']`));\r\n this.$customTemplateParts = this._jQueryFallback(this.$nativeSelect.nextUntil('select', '.mdb-select-template-part'), $(`[data-mdb-select-template-part-for='${this.properties.id}']`));\r\n this.$btnSave = this.$nativeSelect.nextUntil('select', '.btn-save'); // @Depreciated\r\n this.$btnReset = $('×');\r\n\r\n this.$validFeedback = $(`
    ${this.options.labels.validFeedback}
    `);\r\n this.$invalidFeedback = $(`
    ${this.options.labels.invalidFeedback}
    `);\r\n\r\n this.keyCodes = {\r\n tab: 9,\r\n enter: 13,\r\n shift: 16,\r\n alt: 18,\r\n esc: 27,\r\n space: 32,\r\n end: 35,\r\n home: 36,\r\n arrowUp: 38,\r\n arrowDown: 40\r\n };\r\n \r\n // eslint-disable-next-line no-undef\r\n this.renderer = new MaterialSelectViewRenderer(this);\r\n this.dropdown = null;\r\n }\r\n\r\n static get isMobileDevice() {\r\n\r\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n }\r\n\r\n get isMultiple() {\r\n return this.properties.isMultiple;\r\n }\r\n\r\n get isSearchable() {\r\n return this.properties.isSearchable;\r\n }\r\n\r\n get isRequired() {\r\n return this.properties.isRequired;\r\n }\r\n\r\n get isEditable() {\r\n return this.properties.isEditable;\r\n }\r\n\r\n get isDisabled() {\r\n return this.$nativeSelect.is(':disabled');\r\n }\r\n\r\n destroy() {\r\n\r\n this.renderer.destroy();\r\n }\r\n\r\n render() {\r\n\r\n this.renderer.render();\r\n }\r\n\r\n selectPreselectedOptions(handler) {\r\n\r\n if (this.isMultiple) {\r\n\r\n this.$nativeSelect.find('option:selected:not(:disabled)').each((i, element) => {\r\n\r\n let index = element.index;\r\n handler(index);\r\n\r\n if (this._isPlaceholderPresent())\r\n index -= 1;\r\n \r\n this.$materialOptionsList.find('li:not(.optgroup):not(.select-toggle-all)').eq(index).addClass('selected active').find(':checkbox').prop('checked', true);\r\n \r\n });\r\n } else {\r\n\r\n const $preselectedOption = this.$nativeSelect.find('option:selected').first();\r\n const indexOfPreselectedOption = this.$nativeSelect.find('option').index($preselectedOption.get(0));\r\n if ($preselectedOption.get(0) && $preselectedOption.attr('disabled') !== 'disabled') {\r\n handler(indexOfPreselectedOption);\r\n }\r\n }\r\n }\r\n\r\n bindResetButtonClick(handler) {\r\n\r\n this.$btnReset.on('click', (e) => {\r\n\r\n e.preventDefault();\r\n\r\n if (!this.$nativeSelect.find('option[value=\"\"][selected][disabled][data-mdb-novalue]').length) {\r\n\r\n this._toggleResetButton(true);\r\n\r\n this.$materialSelect.val(this.isMultiple ? [] : '');\r\n this.$materialSelect.trigger('close');\r\n this.$mainLabel.removeClass('active');\r\n this.$materialOptionsList.find('li.active, li.selected').removeClass('active').removeClass('selected');\r\n this.$materialOptionsList.find('li[aria-selected=\"true\"]').attr('aria-selected', 'false');\r\n this.$materialOptionsList.find('input[type=\"checkbox\"]').prop('checked', false);\r\n\r\n handler();\r\n }\r\n });\r\n }\r\n\r\n bindAddNewOptionClick() {\r\n\r\n this.$addOptionBtn.on('click', this.renderer.addNewOption.bind(this.renderer));\r\n }\r\n\r\n bindMaterialSelectFocus() {\r\n\r\n this.$materialSelect.on('focus', (e) => {\r\n \r\n const $this = $(e.target);\r\n \r\n $this.parent().addClass('active');\r\n\r\n if ($('ul.select-dropdown').not(this.$materialOptionsList.get(0)).is(':visible')) {\r\n\r\n $('input.select-dropdown').trigger('close');\r\n }\r\n\r\n this.$mainLabel.addClass('active');\r\n\r\n if (!this.$materialOptionsList.is(':visible')) {\r\n\r\n const label = $this.val();\r\n const $selectedOption = this.$materialOptionsList.find('li').filter(function () {\r\n\r\n return $(this).text().toLowerCase() === label.toLowerCase();\r\n }).get(0);\r\n\r\n this._selectSingleOption($selectedOption);\r\n }\r\n\r\n if (!this.isMultiple) {\r\n\r\n this.$mainLabel.addClass('active');\r\n }\r\n });\r\n }\r\n\r\n bindMaterialSelectClick() {\r\n\r\n this.$materialSelect.on('mousedown', (e) => {\r\n\r\n if (e.which === 3) {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n this.$materialSelect.on('click', (e) => {\r\n\r\n e.stopPropagation();\r\n\r\n this.$mainLabel.addClass('active');\r\n\r\n this._updateDropdownScrollTop();\r\n });\r\n }\r\n\r\n bindMaterialSelectBlur() {\r\n\r\n this.$materialSelect.on('blur', (e) => {\r\n\r\n const $this = $(e.target);\r\n\r\n $this.parent().removeClass('active');\r\n\r\n if (!this.isMultiple && !this.isSearchable) {\r\n\r\n $this.trigger('close');\r\n }\r\n\r\n this.$materialOptionsList.find('li.selected').removeClass('selected');\r\n });\r\n }\r\n\r\n bindMaterialOptionsListTouchstart() {\r\n\r\n this.$materialOptionsList.on('touchstart', (e) => e.stopPropagation());\r\n }\r\n\r\n bindMaterialSelectKeydown() {\r\n\r\n // eslint-disable-next-line complexity\r\n this.$materialSelect.on('keydown', (e) => {\r\n\r\n const $this = $(e.target);\r\n\r\n const isTab = e.which === this.keyCodes.tab;\r\n\r\n const isArrowUp = e.which === this.keyCodes.arrowUp;\r\n const isArrowDown = e.which === this.keyCodes.arrowDown;\r\n const isEnter = e.which === this.keyCodes.enter;\r\n const isEsc = e.which === this.keyCodes.esc;\r\n const isAltWithArrowDown = isArrowDown && e.altKey;\r\n const isAltWithArrowUp = isArrowUp && e.altKey;\r\n const isHome = e.which === this.keyCodes.home;\r\n const isEnd = e.which === this.keyCodes.end;\r\n const isSpace = e.which === this.keyCodes.space;\r\n\r\n const isDropdownExpanded = this.$materialOptionsList.is(':visible');\r\n\r\n switch (true) {\r\n case isTab:\r\n return this._handleTabKey($this);\r\n\r\n case !isDropdownExpanded && (isEnter || isAltWithArrowDown):\r\n case this.isMultiple && !isDropdownExpanded && (isArrowDown || isArrowUp):\r\n $this.trigger('open');\r\n return this._updateDropdownScrollTop();\r\n\r\n case isDropdownExpanded && (isEsc || isAltWithArrowUp):\r\n return $this.trigger('close');\r\n\r\n case !isDropdownExpanded && (isArrowDown || isArrowUp):\r\n return this._handleClosedArrowUpDownKey(e.which);\r\n\r\n case isDropdownExpanded && (isArrowDown || isArrowUp):\r\n return this._handleArrowUpDownKey(e.which);\r\n\r\n case isDropdownExpanded && isHome:\r\n return this._handleHomeKey();\r\n\r\n case isDropdownExpanded && isEnd:\r\n return this._handleEndKey();\r\n\r\n case isDropdownExpanded && (isEnter || isSpace):\r\n return this._handleEnterKey($this);\r\n\r\n default:\r\n return this._handleLetterKey(e);\r\n }\r\n });\r\n }\r\n\r\n bindMaterialSelectDropdownToggle() {\r\n\r\n this.$materialSelect.on('open', () => this.$materialSelect.attr('aria-expanded', 'true'));\r\n this.$materialSelect.on('close', () => this.$materialSelect.attr('aria-expanded', 'false'));\r\n }\r\n\r\n bindToggleAllClick(handler) {\r\n\r\n this.$toggleAll.on('click', (e) => {\r\n\r\n const checkbox = $(this.$toggleAll).find('input[type=\"checkbox\"]').first();\r\n const currentState = Boolean($(checkbox).prop('checked'));\r\n const isToggleChecked = !currentState;\r\n\r\n $(checkbox).prop('checked', !currentState);\r\n\r\n this.$materialOptionsList.find('li:not(.optgroup):not(.select-toggle-all)').each((materialOptionIndex, materialOption) => {\r\n\r\n const $materialOption = $(materialOption);\r\n const $optionCheckbox = $materialOption.find('input[type=\"checkbox\"]');\r\n\r\n $materialOption.attr('aria-selected', isToggleChecked);\r\n\r\n if (isToggleChecked && $optionCheckbox.is(':checked') || !isToggleChecked && !$optionCheckbox.is(':checked') || $(materialOption).is(':hidden') || $(materialOption).is('.disabled')) {\r\n\r\n return;\r\n }\r\n\r\n $optionCheckbox.prop('checked', isToggleChecked);\r\n this.$nativeSelect.find('option').eq(materialOptionIndex).prop('selected', isToggleChecked);\r\n\r\n $materialOption.toggleClass('active');\r\n this._selectOption(materialOption);\r\n handler(materialOptionIndex);\r\n });\r\n\r\n this.$nativeSelect.data('stop-refresh', true);\r\n this._triggerChangeOnNativeSelect();\r\n this.$nativeSelect.removeData('stop-refresh');\r\n e.stopPropagation();\r\n });\r\n }\r\n\r\n bindMaterialOptionMousedown() {\r\n\r\n this.$materialOptionsList.on('mousedown', (e) => {\r\n\r\n const option = e.target;\r\n\r\n const inModal = $('.modal-content').find(this.$materialOptionsList).length;\r\n if (inModal && option.scrollHeight > option.offsetHeight) {\r\n\r\n e.preventDefault();\r\n }\r\n });\r\n }\r\n\r\n bindMaterialOptionClick(handler) {\r\n\r\n this.$materialOptionsList.find('li:not(.optgroup)').not(this.$toggleAll).each((materialOptionIndex, materialOption) => {\r\n $(materialOption).on('click', (e) => {\r\n\r\n e.stopPropagation();\r\n\r\n this._toggleResetButton(false);\r\n\r\n const $this = $(materialOption);\r\n\r\n if ($this.hasClass('disabled') || $this.hasClass('optgroup')) {\r\n\r\n return;\r\n }\r\n\r\n let selected = true;\r\n\r\n if (this.isMultiple) {\r\n\r\n $this.find('input[type=\"checkbox\"]').prop('checked', (index, oldPropertyValue) => !oldPropertyValue);\r\n\r\n const hasOptgroup = Boolean(this.$nativeSelect.find('optgroup').length);\r\n const thisIndex = this._isToggleAllPresent() && !this._isPlaceholderPresent() ? $this.index() - 1 : $this.index();\r\n\r\n /* eslint-disable max-statements-per-line */\r\n switch (true) {\r\n case this.isSearchable && hasOptgroup: selected = handler(thisIndex - $this.prevAll('.optgroup').length - 1); break;\r\n case this.isSearchable: selected = handler(thisIndex - 1); break;\r\n case hasOptgroup: selected = handler(thisIndex - $this.prevAll('.optgroup').length); break;\r\n default: selected = handler(thisIndex); break;\r\n }\r\n /* eslint-enable max-statements-per-line */\r\n\r\n if (this._isToggleAllPresent()) {\r\n\r\n this._updateToggleAllOption();\r\n }\r\n\r\n this.$materialSelect.trigger('focus');\r\n } else {\r\n \r\n this.$materialOptionsList.find('li').removeClass('active').attr('aria-selected', 'false');\r\n const $selectedOption = $this.children().last()[0].childNodes[0];\r\n this.$materialSelect.val($($selectedOption).text().replace(/ +/g, ' ').trim());\r\n this.$materialSelect.trigger('close');\r\n }\r\n \r\n $this.toggleClass('active');\r\n const ariaSelected = $this.attr('aria-selected');\r\n $this.attr('aria-selected', ariaSelected === 'true' ? 'false' : 'true');\r\n this._selectSingleOption($this);\r\n this.$nativeSelect.data('stop-refresh', true);\r\n const selectedOptionIndex = this._isPlaceholderPresent() ? materialOptionIndex + 1 : materialOptionIndex;\r\n this.$nativeSelect.find('option').eq(selectedOptionIndex).prop('selected', selected);\r\n this.$nativeSelect.removeData('stop-refresh');\r\n this._triggerChangeOnNativeSelect();\r\n \r\n if (this.$materialSelect.val()) {\r\n\r\n this.$mainLabel.addClass('active');\r\n }\r\n\r\n if ($this.hasClass('li-added')) {\r\n\r\n this.renderer.buildSingleOption($this, '');\r\n }\r\n });\r\n });\r\n }\r\n\r\n bindSingleMaterialOptionClick() {\r\n\r\n this.$materialOptionsList.find('li').on('click', () => {\r\n\r\n this.$materialSelect.trigger('close');\r\n });\r\n }\r\n\r\n bindSearchInputKeyup() {\r\n\r\n this.$searchInput.find('.search').on('keyup', (e) => {\r\n\r\n const $this = $(e.target);\r\n\r\n const isTab = e.which === this.keyCodes.tab;\r\n const isEsc = e.which === this.keyCodes.esc;\r\n const isEnter = e.which === this.keyCodes.enter;\r\n const isEnterWithShift = isEnter && e.shiftKey;\r\n const isArrowUp = e.which === this.keyCodes.arrowUp;\r\n const isArrowDown = e.which === this.keyCodes.arrowDown;\r\n\r\n if (isArrowDown || isTab || isEsc || isArrowUp) {\r\n\r\n this.$materialSelect.focus();\r\n this._handleArrowUpDownKey(e.which);\r\n return;\r\n }\r\n\r\n const $ul = $this.closest('ul');\r\n const searchValue = $this.val();\r\n const $options = $ul.find('li span.filtrable');\r\n\r\n let isOptionInList = false;\r\n\r\n $options.each(function () {\r\n\r\n const $option = $(this);\r\n if (typeof this.outerHTML === 'string') {\r\n\r\n const liValue = this.textContent.toLowerCase();\r\n\r\n if (liValue.includes(searchValue.toLowerCase())) {\r\n\r\n $option.show().parent().show();\r\n } else {\r\n $option.hide().parent().hide();\r\n }\r\n\r\n if (liValue.trim() === searchValue.toLowerCase()) {\r\n isOptionInList = true;\r\n }\r\n }\r\n });\r\n\r\n if (isEnter) {\r\n if (this.isEditable && !isOptionInList) {\r\n this.renderer.addNewOption();\r\n return;\r\n }\r\n if (isEnterWithShift) {\r\n this._handleEnterWithShiftKey($this);\r\n }\r\n this.$materialSelect.trigger('open');\r\n return;\r\n }\r\n\r\n this.$addOptionBtn[searchValue && this.isEditable && !isOptionInList ? 'show' : 'hide']();\r\n\r\n const anyOptionMatch = $options.filter((_, e) => $(e).is(':visible') && !$(e).parent().hasClass('disabled')).length !== 0;\r\n if (!anyOptionMatch) {\r\n\r\n this.$toggleAll.hide();\r\n this.$materialOptionsList.append(this.$noSearchResultsInfo);\r\n } else {\r\n\r\n this.$toggleAll.show();\r\n this.$materialOptionsList.find(this.$noSearchResultsInfo).remove();\r\n this._updateToggleAllOption();\r\n }\r\n\r\n this.dropdown.updatePosition(this.$materialSelect, this.$materialOptionsList);\r\n });\r\n }\r\n\r\n bindHtmlClick() {\r\n\r\n $('html').on('click', (e) => {\r\n\r\n if (!$(e.target).closest(`#select-options-${this.properties.id}`).length && !$(e.target).hasClass('mdb-select') && $(`#select-options-${this.properties.id}`).hasClass('active')) {\r\n\r\n this.$materialSelect.trigger('close');\r\n\r\n if (!this.$materialSelect.val() && !this.options.placeholder) {\r\n\r\n this.$mainLabel.removeClass('active');\r\n }\r\n }\r\n\r\n if (this.isSearchable && this.$searchInput !== null && this.$materialOptionsList.hasClass('active')) {\r\n\r\n this.$materialOptionsList.find('.search-wrap input.search').focus();\r\n }\r\n });\r\n }\r\n\r\n bindMobileDevicesMousedown() {\r\n\r\n $('select').siblings('input.select-dropdown', 'input.multi-bs-select').on('mousedown', (e) => {\r\n if (MaterialSelectView.isMobileDevice && (e.clientX >= e.target.clientWidth || e.clientY >= e.target.clientHeight)) {\r\n e.preventDefault();\r\n }\r\n });\r\n }\r\n\r\n bindSaveBtnClick() { // @Depreciated\r\n\r\n this.$btnSave.on('click', () => {\r\n\r\n this.$materialSelect.trigger('close');\r\n });\r\n }\r\n\r\n _toggleResetButton(hide) {\r\n\r\n const previousValue = this.$nativeSelect.data('stop-refresh');\r\n this.$nativeSelect.attr('data-stop-refresh', 'true');\r\n\r\n if (hide) {\r\n\r\n this.$nativeSelect.prepend('');\r\n } else {\r\n\r\n this.$nativeSelect.find('option[data-mdb-novalue]').remove();\r\n }\r\n\r\n this.$nativeSelect.attr('data-stop-refresh', previousValue);\r\n this.$btnReset[hide ? 'hide' : 'show']();\r\n }\r\n\r\n _isToggleAllPresent() {\r\n\r\n return this.$materialOptionsList.find(this.$toggleAll).length;\r\n }\r\n\r\n _isPlaceholderPresent() {\r\n if (this.$nativeSelect.attr('data-placeholder') || this.options.placeholder) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n \r\n }\r\n\r\n _updateToggleAllOption() {\r\n\r\n const $allOptionsButToggleAll = this.$materialOptionsList.find('li').not('.select-toggle-all, .disabled, :hidden').find('[type=checkbox]');\r\n const $checkedOptionsButToggleAll = $allOptionsButToggleAll.filter(':checked');\r\n const isToggleAllChecked = this.$toggleAll.find('[type=checkbox]').is(':checked');\r\n\r\n if ($checkedOptionsButToggleAll.length === $allOptionsButToggleAll.length && !isToggleAllChecked) {\r\n\r\n this.$toggleAll.find('[type=checkbox]').prop('checked', true);\r\n } else if ($checkedOptionsButToggleAll.length < $allOptionsButToggleAll.length && isToggleAllChecked) {\r\n\r\n this.$toggleAll.find('[type=checkbox]').prop('checked', false);\r\n }\r\n }\r\n\r\n _handleTabKey($materialSelect) {\r\n\r\n this._handleEscKey($materialSelect);\r\n }\r\n\r\n _handleEnterWithShiftKey($materialSelect) {\r\n\r\n if (!this.isMultiple) {\r\n\r\n this._handleEnterKey($materialSelect);\r\n } else {\r\n\r\n this.$toggleAll.trigger('click');\r\n }\r\n }\r\n\r\n _handleEnterKey($materialSelect) {\r\n\r\n const $activeOption = this.$materialOptionsList.find('li.selected:not(.disabled)');\r\n\r\n $activeOption.trigger('click').addClass('active');\r\n\r\n this._removeKeyboardActiveClass();\r\n\r\n if (!this.isMultiple) {\r\n\r\n $materialSelect.trigger('close');\r\n }\r\n }\r\n\r\n _handleArrowUpDownKey(keyCode) {\r\n\r\n // eslint-disable-next-line object-curly-newline\r\n const { $matchedMaterialOption, $activeOption } = this._getArrowMatchedActiveOptions(keyCode, false);\r\n\r\n this._selectSingleOption($matchedMaterialOption);\r\n this._removeKeyboardActiveClass();\r\n\r\n if (!$matchedMaterialOption.find('input').is(':checked')) {\r\n\r\n $matchedMaterialOption.removeClass(this.options.keyboardActiveClass);\r\n }\r\n\r\n if (!$activeOption.hasClass('selected') && !$activeOption.find('input').is(':checked') && this.isMultiple) {\r\n\r\n $activeOption.removeClass('active', this.options.keyboardActiveClass);\r\n }\r\n\r\n $matchedMaterialOption.addClass(this.options.keyboardActiveClass);\r\n\r\n if ($matchedMaterialOption.position()) {\r\n this.$materialOptionsList.scrollTop(this.$materialOptionsList.scrollTop() + $matchedMaterialOption.position().top);\r\n }\r\n }\r\n\r\n _handleClosedArrowUpDownKey(keyCode) {\r\n\r\n // eslint-disable-next-line object-curly-newline\r\n const { $matchedMaterialOption } = this._getArrowMatchedActiveOptions(keyCode, true);\r\n\r\n $matchedMaterialOption.trigger('click').addClass('active');\r\n\r\n this._updateDropdownScrollTop();\r\n this._selectSingleOption($matchedMaterialOption);\r\n }\r\n\r\n _getArrowMatchedActiveOptions(keyCode, closedDropdown) {\r\n\r\n const visible = closedDropdown ? '' : ':visible';\r\n const $availableOptions = this.$materialOptionsList.find(`li${visible}`).not('.disabled, .select-toggle-all');\r\n\r\n const $firstOption = $availableOptions.first();\r\n const $lastOption = $availableOptions.last();\r\n const anySelected = this.$materialOptionsList.find('li.selected').length > 0;\r\n\r\n let $matchedMaterialOption = null;\r\n let $activeOption = null;\r\n\r\n const isArrowUp = keyCode === this.keyCodes.arrowUp;\r\n if (isArrowUp) {\r\n\r\n const $currentOption = anySelected ? this.$materialOptionsList.find('li.selected').first() : $lastOption;\r\n let $prevOption = $currentOption.prev(`li${visible}:not(.disabled, .select-toggle-all)`);\r\n $activeOption = $prevOption;\r\n\r\n $availableOptions.each((key, el) => {\r\n if ($(el).hasClass(this.options.keyboardActiveClass)) {\r\n $prevOption = $availableOptions.eq(key - 1);\r\n $activeOption = $availableOptions.eq(key);\r\n }\r\n });\r\n\r\n $matchedMaterialOption = $currentOption.is($firstOption) || !anySelected ? $currentOption : $prevOption;\r\n } else {\r\n\r\n const $currentOption = anySelected ? this.$materialOptionsList.find('li.selected').first() : $firstOption;\r\n let $nextOption = $currentOption.next(`li${visible}:not(.disabled, .select-toggle-all)`);\r\n $activeOption = $nextOption;\r\n\r\n $availableOptions.each((key, el) => {\r\n if ($(el).hasClass(this.options.keyboardActiveClass)) {\r\n $nextOption = $availableOptions.eq(key + 1);\r\n $activeOption = $availableOptions.eq(key);\r\n }\r\n });\r\n\r\n $matchedMaterialOption = $currentOption.is($lastOption) || !anySelected ? $currentOption : $nextOption;\r\n }\r\n\r\n return {\r\n $matchedMaterialOption,\r\n $activeOption\r\n };\r\n }\r\n\r\n _handleHomeKey() {\r\n\r\n this._selectBoundaryOption('first');\r\n }\r\n\r\n _handleEndKey() {\r\n\r\n this._selectBoundaryOption('last');\r\n }\r\n\r\n _selectBoundaryOption(firstOrLast = '') {\r\n\r\n const $boundaryOption = this.$materialOptionsList.find('li:visible').not('.disabled, .select-toggle-all')[firstOrLast]();\r\n\r\n this._selectSingleOption($boundaryOption);\r\n\r\n this._removeKeyboardActiveClass();\r\n\r\n if (!$boundaryOption.find('input').is(':checked')) {\r\n\r\n $boundaryOption.removeClass(this.options.keyboardActiveClass);\r\n }\r\n\r\n $boundaryOption.addClass(this.options.keyboardActiveClass);\r\n\r\n if ($boundaryOption.position()) {\r\n this.$materialOptionsList.scrollTop(this.$materialOptionsList.scrollTop() + $boundaryOption.position().top);\r\n }\r\n }\r\n\r\n _handleEscKey($materialSelect) {\r\n\r\n this._removeKeyboardActiveClass();\r\n $materialSelect.trigger('close');\r\n }\r\n\r\n _handleLetterKey(e) {\r\n\r\n this._removeKeyboardActiveClass();\r\n\r\n if (this.isSearchable) {\r\n\r\n const isLetter = e.which > 46 && e.which < 91;\r\n const isNumber = e.which > 93 && e.which < 106;\r\n const isBackspace = e.which === 8;\r\n\r\n if (isLetter || isNumber) {\r\n this.$searchInput.find('input').focus();\r\n }\r\n if (isBackspace) {\r\n this.$searchInput.find('input').val('').focus();\r\n }\r\n\r\n } else {\r\n\r\n let filterQueryString = '';\r\n const letter = String.fromCharCode(e.which).toLowerCase();\r\n const nonLetters = Object.keys(this.keyCodes).map((key) => this.keyCodes[key]);\r\n const isLetterSearchable = letter && nonLetters.indexOf(e.which) === -1;\r\n\r\n if (isLetterSearchable) {\r\n\r\n filterQueryString += letter;\r\n\r\n const $matchedMaterialOption = this.$materialOptionsList.find('li').filter((index, element) => $(element).text().toLowerCase().includes(filterQueryString)).first();\r\n\r\n if (!this.isMultiple) {\r\n\r\n this.$materialOptionsList.find('li').removeClass('active');\r\n }\r\n\r\n $matchedMaterialOption.addClass('active');\r\n this._selectSingleOption($matchedMaterialOption);\r\n this._updateDropdownScrollTop();\r\n }\r\n }\r\n }\r\n\r\n _removeKeyboardActiveClass() {\r\n\r\n this.$materialOptionsList.find('li').removeClass(this.options.keyboardActiveClass);\r\n }\r\n\r\n _triggerChangeOnNativeSelect() {\r\n\r\n const keyboardEvt = new KeyboardEvent('change', {\r\n bubbles: true,\r\n cancelable: true\r\n });\r\n this.$nativeSelect.get(0).dispatchEvent(keyboardEvt);\r\n }\r\n\r\n _selectSingleOption(newOption) {\r\n\r\n this.$materialOptionsList.find('li.selected').removeClass('selected');\r\n\r\n this._selectOption(newOption);\r\n }\r\n\r\n _updateDropdownScrollTop() {\r\n\r\n const $preselected = this.$materialOptionsList.find('li.active').not('.disabled').first();\r\n if ($preselected.length) {\r\n this.$materialOptionsList.scrollTo($preselected);\r\n } else {\r\n this.$materialOptionsList.scrollTop(0);\r\n }\r\n }\r\n\r\n _selectOption(newOption) {\r\n\r\n const option = $(newOption);\r\n option.addClass('selected');\r\n }\r\n\r\n _copyOptions(options) {\r\n\r\n return $.extend({}, options);\r\n }\r\n\r\n _jQueryFallback(...$elements) {\r\n\r\n let $lastElem = null;\r\n for (let i = 0; i < $elements.length; i++) {\r\n\r\n $lastElem = $elements[i];\r\n if ($lastElem.length) {\r\n return $lastElem;\r\n }\r\n }\r\n\r\n return $lastElem;\r\n }\r\n}\r\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar nativeParseFloat = global.parseFloat;\nvar FORCED = 1 / nativeParseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(String(string));\n var result = nativeParseFloat(trimmedString);\n return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : nativeParseFloat;\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (e) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (f) { /* empty */ }\n } return false;\n};\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.github.io/ecma262/#sec-regexp-constructor\nif (FORCED) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = this instanceof RegExpWrapper;\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n return !thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined ? pattern\n : inheritIfRequired(CORRECT_NEW\n ? new NativeRegExp(patternIsRegExp && !flagsAreUndefined ? pattern.source : pattern, flags)\n : NativeRegExp((patternIsRegExp = pattern instanceof RegExpWrapper)\n ? pattern.source\n : pattern, patternIsRegExp && flagsAreUndefined ? getFlags.call(pattern) : flags)\n , thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n };\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n var keys = getOwnPropertyNames(NativeRegExp);\n var index = 0;\n while (keys.length > index) proxy(keys[index++]);\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeSort = [].sort;\nvar test = [1, 2, 3];\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar SLOPPY_METHOD = sloppyArrayMethod('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? nativeSort.call(toObject(this))\n : nativeSort.call(toObject(this), aFunction(comparefn));\n }\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar min = Math.min;\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar SLOPPY_METHOD = sloppyArrayMethod('lastIndexOf');\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = (NEGATIVE_ZERO || SLOPPY_METHOD) ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : nativeLastIndexOf;\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.github.io/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.github.io/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.github.io/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = [].reverse;\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n if (isArray(this)) this.length = this.length;\n return nativeReverse.call(this);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n // eslint-disable-next-line max-statements\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n var multiply = function (n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n };\n\n var divide = function (n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n };\n\n var dataToString = function () {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n };\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n result = dataToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n result = dataToString() + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar nativeParseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = nativeParseInt(whitespaces + '08') !== 8 || nativeParseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(String(string));\n return nativeParseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : nativeParseInt;\n","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = 1 / 0;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar packIEEE754 = function (number, mantissaLength, bytes) {\n var buffer = new Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpackIEEE754 = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = bytes.slice(start, start + count);\n return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: arrayFill.call(new Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new NativeArrayBuffer(); // eslint-disable-line no-new\n new NativeArrayBuffer(1.5); // eslint-disable-line no-new\n new NativeArrayBuffer(NaN); // eslint-disable-line no-new\n return NativeArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new NativeArrayBuffer(toIndex(length));\n };\n var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var nativeSetInt8 = $DataView[PROTOTYPE].setInt8;\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\n\n// `ToIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","jQuery(($) => {\r\n\r\n class Forms {\r\n\r\n constructor() {\r\n this.inputSelector = `${['text', 'password', 'email', 'url', 'tel', 'number', 'search', 'search-md']\r\n .map((selector) => `input[type=${selector}]`)\r\n .join(', ')}, textarea`;\r\n this.textAreaSelector = '.materialize-textarea';\r\n this.$text = $('.md-textarea-auto');\r\n this.$body = $('body');\r\n this.$document = $(document);\r\n }\r\n\r\n init() {\r\n\r\n if (this.$text.length) {\r\n let observe;\r\n \r\n if (window.attachEvent) {\r\n observe = function (element, event, handler) {\r\n element.attachEvent(`on${event}`, handler);\r\n };\r\n } else {\r\n observe = function (element, event, handler) {\r\n element.addEventListener(event, handler, false);\r\n };\r\n }\r\n \r\n this.$text.each(function () {\r\n const self = this;\r\n \r\n function resize() {\r\n self.style.height = 'auto';\r\n self.style.height = `${self.scrollHeight}px`;\r\n }\r\n \r\n function delayedResize() {\r\n window.setTimeout(resize, 0);\r\n }\r\n \r\n observe(self, 'change', resize);\r\n observe(self, 'cut', delayedResize);\r\n observe(self, 'paste', delayedResize);\r\n observe(self, 'drop', delayedResize);\r\n observe(self, 'keydown', delayedResize);\r\n \r\n resize();\r\n });\r\n }\r\n\r\n $(this.inputSelector).each((index, input) => {\r\n const $this = $(input);\r\n const isNotValid = input.validity.badInput;\r\n this.updateTextFields($this);\r\n\r\n if (isNotValid) {\r\n this.toggleActiveClass($this, 'add');\r\n }\r\n });\r\n \r\n this.addOnFocusEvent();\r\n this.addOnBlurEvent();\r\n this.addOnChangeEvent();\r\n this.addOnResetEvent();\r\n this.appendHiddenDiv();\r\n this.ChangeDateInputType();\r\n this.makeActiveAutofocus();\r\n\r\n $(this.textAreaSelector).each(this.textAreaAutoResize);\r\n this.$body.on('keyup keydown', this.textAreaSelector, this.textAreaAutoResize);\r\n }\r\n\r\n makeActiveAutofocus() {\r\n\r\n this.toggleActiveClass($('input[autofocus]'), 'add');\r\n }\r\n\r\n toggleActiveClass($this, action) {\r\n action = `${action}Class`;\r\n $this.siblings('label, i, .input-prefix')[action]('active');\r\n }\r\n\r\n addOnFocusEvent() {\r\n this.$document.on('focus', this.inputSelector, (e) => {\r\n this.toggleActiveClass($(e.target), 'add');\r\n });\r\n }\r\n\r\n addOnBlurEvent() {\r\n this.$document.on('blur', this.inputSelector, (e) => {\r\n const $this = $(e.target);\r\n const noValue = !$this.val();\r\n const isValid = !e.target.validity.badInput;\r\n const noPlaceholder = $this.attr('placeholder') === undefined;\r\n \r\n if (noValue && isValid && noPlaceholder) {\r\n this.toggleActiveClass($this, 'remove');\r\n } \r\n\r\n if (!noValue && isValid && noPlaceholder) {\r\n $this.siblings('i, .input-prefix').removeClass('active');\r\n }\r\n\r\n this.validateField($this);\r\n });\r\n }\r\n\r\n addOnChangeEvent() {\r\n this.$document.on('change', this.inputSelector, (e) => {\r\n const $this = $(e.target);\r\n \r\n this.updateTextFields($this);\r\n this.validateField($this);\r\n });\r\n }\r\n\r\n addOnResetEvent() {\r\n this.$document.on('reset', (e) => {\r\n const $formReset = $(e.target);\r\n \r\n if ($formReset.is('form')) {\r\n const $formInputs = $formReset.find(this.inputSelector);\r\n \r\n $formInputs\r\n .removeClass('valid invalid')\r\n .each((index, input) => {\r\n const $this = $(input);\r\n const noDefaultValue = !$this.val();\r\n const noPlaceholder = !$this.attr('placeholder');\r\n \r\n if (noDefaultValue && noPlaceholder) {\r\n this.toggleActiveClass($this, 'remove');\r\n }\r\n });\r\n \r\n $formReset.find('select.initialized').each((index, select) => {\r\n const $select = $(select);\r\n const $visibleInput = $select.siblings('input.select-dropdown');\r\n const defaultValue = $select.children('[selected]').val();\r\n \r\n $select.val(defaultValue);\r\n $visibleInput.val(defaultValue);\r\n });\r\n }\r\n });\r\n }\r\n\r\n appendHiddenDiv() {\r\n if (!$('.hiddendiv').first().length) {\r\n const $hiddenDiv = $('
    ');\r\n this.$body.append($hiddenDiv);\r\n }\r\n }\r\n\r\n updateTextFields($input) {\r\n\r\n const hasValue = Boolean($input.val().length);\r\n const hasPlaceholder = Boolean($input.attr('placeholder'));\r\n const addOrRemove = hasValue || hasPlaceholder ? 'add' : 'remove';\r\n \r\n this.toggleActiveClass($input, addOrRemove);\r\n }\r\n\r\n validateField($input) {\r\n if ($input.hasClass('validate')) {\r\n const value = $input.val();\r\n const noValue = !value.length;\r\n const isValid = !$input[0].validity.badInput;\r\n \r\n if (noValue && isValid) {\r\n $input.removeClass('valid').removeClass('invalid');\r\n } else {\r\n const valid = $input[0].validity.valid;\r\n const length = Number($input.attr('length')) || 0;\r\n \r\n if (valid && (!length || length > value.length)) {\r\n $input.removeClass('invalid').addClass('valid');\r\n } else {\r\n $input.removeClass('valid').addClass('invalid');\r\n }\r\n }\r\n }\r\n }\r\n\r\n ChangeDateInputType() {\r\n const $dateInputs = $('input[type=\"date\"]');\r\n \r\n $dateInputs.each((index, $item) => {\r\n $item.type = 'text';\r\n });\r\n \r\n $dateInputs.on('focus', $item => {\r\n $item.target.type = 'date';\r\n });\r\n \r\n $dateInputs.on('blur', $item => {\r\n $item.target.type = 'text';\r\n if($item.target.value.length === 0) {\r\n $(`label[for=${$item.target.id}]`).removeClass('active');\r\n }\r\n }); \r\n }\r\n \r\n textAreaAutoResize() {\r\n const $textarea = $(this);\r\n \r\n if ($textarea.val().length) {\r\n const $hiddenDiv = $('.hiddendiv');\r\n const fontFamily = $textarea.css('font-family');\r\n const fontSize = $textarea.css('font-size');\r\n \r\n if (fontSize) {\r\n $hiddenDiv.css('font-size', fontSize);\r\n }\r\n \r\n if (fontFamily) {\r\n $hiddenDiv.css('font-family', fontFamily);\r\n }\r\n \r\n if ($textarea.attr('wrap') === 'off') {\r\n $hiddenDiv.css('overflow-wrap', 'normal').css('white-space', 'pre');\r\n }\r\n \r\n $hiddenDiv.text(`${$textarea.val()}\\n`);\r\n const content = $hiddenDiv.html().replace(/\\n/g, '
    ');\r\n $hiddenDiv.html(content);\r\n \r\n // When textarea is hidden, width goes crazy.\r\n // Approximate with half of window size\r\n $hiddenDiv.css('width', $textarea.is(':visible') ? $textarea.width() : $(window).width() / 2);\r\n $textarea.css('height', $hiddenDiv.height());\r\n }\r\n } \r\n }\r\n\r\n //auto init Forms\r\n const forms = new Forms();\r\n forms.init();\r\n\r\n});\r\n","jQuery(function ($) {\r\n\r\n const SCROLLING_NAVBAR_OFFSET_TOP = 50;\r\n\r\n $(window).on('scroll', () => {\r\n\r\n const $navbar = $('.navbar');\r\n \r\n if (!$navbar.length) return;\r\n\r\n $('.scrolling-navbar')[$navbar.offset().top > SCROLLING_NAVBAR_OFFSET_TOP ? 'addClass' : 'removeClass']('top-nav-collapse');\r\n });\r\n});\r\n","jQuery(($) => {\r\n $.fn.mdbTreeview = function () {\r\n\r\n const $this = $(this);\r\n\r\n if ($this.hasClass('treeview')) {\r\n treeviewToggle($this);\r\n }\r\n\r\n if ($this.hasClass('treeview-animated')) {\r\n treeviewAnimated($this);\r\n }\r\n\r\n if ($this.hasClass('treeview-colorful')) {\r\n treeviewColorful($this);\r\n }\r\n };\r\n\r\n function treeviewToggle($this) {\r\n const $toggler = $this.find('.rotate');\r\n\r\n $toggler.each(function () {\r\n const $this = $(this);\r\n\r\n $this.off('click');\r\n $this.on('click', function () {\r\n const $this = $(this);\r\n\r\n $this.siblings('.nested').toggleClass('active');\r\n $this.toggleClass('down');\r\n });\r\n });\r\n }\r\n\r\n function treeviewAnimated($this) {\r\n const $elements = $this.find('.treeview-animated-element');\r\n const $closed = $this.find('.closed');\r\n\r\n $this.find('.nested').hide();\r\n\r\n $closed.off('click');\r\n $closed.on('click', function () {\r\n const $this = $(this);\r\n const $target = $this.siblings('.nested');\r\n const $pointer = $this.children('.fa-angle-right');\r\n\r\n $this.toggleClass('open');\r\n $pointer.toggleClass('down');\r\n\r\n if (!$target.hasClass('active')) {\r\n $target.addClass('active').slideDown();\r\n } else {\r\n $target.removeClass('active').slideUp();\r\n }\r\n });\r\n\r\n $elements.off('click');\r\n $elements.on('click', function () {\r\n const $this = $(this);\r\n\r\n if ($this.hasClass('opened')) {\r\n $this.removeClass('opened');\r\n } else {\r\n $elements.removeClass('opened');\r\n $this.addClass('opened');\r\n }\r\n });\r\n }\r\n\r\n function treeviewColorful($this) {\r\n const $elements = $this.find('.treeview-colorful-element');\r\n const $header = $this.find('.treeview-colorful-items-header');\r\n\r\n $this.find('.nested').hide();\r\n\r\n $header.off('click');\r\n $header.on('click', function () {\r\n const $this = $(this);\r\n const $target = $this.siblings('.nested');\r\n const $pointerPlus = $this.children('.fa-plus-circle');\r\n const $pointerMinus = $this.children('.fa-minus-circle');\r\n\r\n $this.toggleClass('open');\r\n $pointerPlus.removeClass('fa-plus-circle');\r\n $pointerPlus.addClass('fa-minus-circle');\r\n $pointerMinus.removeClass('fa-minus-circle');\r\n $pointerMinus.addClass('fa-plus-circle');\r\n\r\n if (!$target.hasClass('active')) {\r\n $target.addClass('active').slideDown();\r\n } else {\r\n $target.removeClass('active').slideUp();\r\n }\r\n });\r\n\r\n $elements.off('click');\r\n $elements.on('click', function () {\r\n const $this = $(this);\r\n\r\n if ($this.hasClass('opened')) {\r\n $elements.removeClass('opened');\r\n } else {\r\n $elements.removeClass('opened');\r\n $this.addClass('opened');\r\n }\r\n });\r\n }\r\n});\r\n","jQuery($ => {\r\n\r\n class WOW {\r\n init() {\r\n $('.wow').wow();\r\n }\r\n }\r\n\r\n class MDBWow {\r\n constructor($wowElement, customization) {\r\n this.$wowElement = $wowElement;\r\n this.customization = customization;\r\n this.animated = true;\r\n this.options = this.assignElementCustomization();\r\n }\r\n\r\n init() {\r\n $(window).scroll(() => {\r\n if (this.animated) {\r\n this.hide();\r\n } else {\r\n this.mdbWow();\r\n }\r\n });\r\n\r\n this.appear();\r\n }\r\n\r\n assignElementCustomization() {\r\n return {\r\n animationName: this.$wowElement.css('animation-name'),\r\n offset: 100,\r\n iteration: this.fallback()\r\n .or(this.$wowElement.data('wow-iteration'))\r\n .or(1)\r\n .value(),\r\n duration: this.fallback()\r\n .or(this.$wowElement.data('wow-duration'))\r\n .or(1000)\r\n .value(),\r\n delay: this.fallback()\r\n .or(this.$wowElement.data('wow-delay'))\r\n .or(0)\r\n .value()\r\n };\r\n }\r\n\r\n mdbWow() {\r\n if (this.$wowElement.css('visibility') === 'visible') {\r\n return;\r\n }\r\n\r\n if (this.shouldElementBeVisible(true)) {\r\n setTimeout(() => this.$wowElement.removeClass('animated'), this.countRemoveTime());\r\n this.appear();\r\n }\r\n }\r\n\r\n appear() {\r\n this.$wowElement.addClass('animated');\r\n this.$wowElement.css({\r\n visibility: 'visible',\r\n 'animation-name': this.options.animationName,\r\n 'animation-iteration-count': this.options.iteration,\r\n 'animation-duration': this.options.duration,\r\n 'animation-delay': this.options.delay\r\n });\r\n }\r\n\r\n hide() {\r\n if (this.shouldElementBeVisible(false)) {\r\n this.$wowElement.removeClass('animated');\r\n this.$wowElement.css({\r\n 'animation-name': 'none',\r\n visibility: 'hidden'\r\n });\r\n } else {\r\n setTimeout(() => {\r\n this.$wowElement.removeClass('animated');\r\n }, this.countRemoveTime());\r\n }\r\n this.mdbWow();\r\n this.animated = !this.animated;\r\n }\r\n\r\n shouldElementBeVisible(state) {\r\n const thisElementOffset = this.getOffset(this.$wowElement[0]);\r\n const thisElementHeight = this.$wowElement.height();\r\n const documentHeight = $(document).height();\r\n const windowHeight = window.innerHeight;\r\n const scroll = window.scrollY;\r\n\r\n const isElementTopVisible = windowHeight + scroll - this.options.offset > thisElementOffset;\r\n const isElementBottomVisible = windowHeight + scroll - this.options.offset > thisElementOffset + thisElementHeight;\r\n const isScrolledToTop = scroll < thisElementOffset;\r\n const isScrolledToBottom = scroll < thisElementOffset + thisElementHeight;\r\n const isDocumentHeightEqual = windowHeight + scroll === documentHeight;\r\n const isOffsetHigherThanDocument = thisElementOffset + this.options.offset > documentHeight;\r\n const isElementBottomHidden = windowHeight + scroll - this.options.offset < thisElementOffset;\r\n const isScrolledOverTop = scroll > thisElementOffset + this.options.offset;\r\n const isNotScrolledToTop = scroll < thisElementOffset + this.options.offset;\r\n const isScrolledOverElement = thisElementOffset + thisElementHeight > documentHeight - this.options.offset;\r\n\r\n let returnLogic = false;\r\n\r\n if (state) {\r\n returnLogic = isElementTopVisible && isScrolledToTop ||\r\n isElementBottomVisible && isScrolledToBottom ||\r\n isDocumentHeightEqual && isOffsetHigherThanDocument;\r\n } else {\r\n returnLogic = isElementTopVisible && isScrolledOverTop ||\r\n isElementBottomHidden && isNotScrolledToTop ||\r\n isScrolledOverElement;\r\n }\r\n return returnLogic;\r\n }\r\n\r\n countRemoveTime() {\r\n const defaultAnimationTime = this.$wowElement.css('animation-duration').slice(0, -1) * 1000;\r\n let removeTime = 0;\r\n\r\n if (this.options.duration) {\r\n removeTime = defaultAnimationTime + this.checkOptionsStringFormat(this.options.duration);\r\n }\r\n if (this.options.delay) {\r\n removeTime += this.checkOptionsStringFormat(this.options.delay);\r\n }\r\n return removeTime;\r\n }\r\n\r\n checkOptionsStringFormat(element) {\r\n let valueToReturn;\r\n\r\n if (element.toString().slice(-1) === 's') {\r\n valueToReturn = element.toString().slice(0, -1);\r\n } else if (!isNaN(element.toString().slice(-1))) {\r\n valueToReturn = element;\r\n } else {\r\n return console.log('Not supported animation customization format.');\r\n }\r\n\r\n return valueToReturn;\r\n }\r\n\r\n getOffset(element) {\r\n const box = element.getBoundingClientRect();\r\n const body = document.body;\r\n const docEl = document.documentElement;\r\n const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\r\n const clientTop = docEl.clientTop || body.clientTop || 0;\r\n const top = box.top + scrollTop - clientTop;\r\n\r\n return Math.round(top);\r\n }\r\n\r\n fallback() {\r\n return {\r\n _value: undefined,\r\n or(value) {\r\n if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\r\n this._value = value;\r\n }\r\n return this;\r\n },\r\n value() {\r\n return this._value;\r\n }\r\n };\r\n }\r\n }\r\n\r\n $.fn.wow = function (options) {\r\n this.each(function () {\r\n const mdbWow = new MDBWow($(this), options);\r\n mdbWow.init();\r\n });\r\n };\r\n\r\n window.WOW = WOW;\r\n\r\n});\r\n","jQuery(($) => {\r\n const isTouchDevice = 'ontouchstart' in document.documentElement;\r\n\r\n const toggleOpen = (btn, open) => {\r\n if (open && !btn.hasClass('active') || !open && btn.hasClass('active')) {\r\n btn[open ? 'addClass' : 'removeClass']('active');\r\n const btnList = document.querySelectorAll('ul .btn-floating');\r\n btnList.forEach((el) => el.classList[open ? 'add' : 'remove']('shown'));\r\n }\r\n };\r\n\r\n const handleClick = btn => {\r\n if (btn.hasClass('active')) {\r\n toggleOpen(btn, false);\r\n } else {\r\n toggleOpen(btn, true);\r\n }\r\n };\r\n\r\n const $btn = $('.fixed-action-btn:not(.smooth-scroll) > .btn-floating');\r\n $btn.on('mouseenter', e => {\r\n if (!isTouchDevice) {\r\n toggleOpen($(e.currentTarget).parent(), true);\r\n }\r\n });\r\n $btn.parent().on('mouseleave', e => toggleOpen($(e.currentTarget), false));\r\n $btn.on('click', e => {\r\n e.preventDefault();\r\n handleClick($(e.currentTarget).parent());\r\n });\r\n\r\n $.fn.extend({\r\n openFAB() {\r\n toggleOpen($(this), true);\r\n },\r\n closeFAB() {\r\n toggleOpen($(this), false);\r\n }\r\n });\r\n});\r\n\r\n","jQuery(function ($) {\r\n\r\n $(document).on('click.card', '.card', function (e) {\r\n\r\n const $this = $(this);\r\n const $reveal = $this.find('.card-reveal');\r\n\r\n if ($reveal.length) {\r\n\r\n const $clickedElem = $(e.target);\r\n const isTitleClicked = $clickedElem.is('.card-reveal .card-title');\r\n const isTitleIconClicked = $clickedElem.is('.card-reveal .card-title i');\r\n const isActivatorClicked = $clickedElem.is('.card .activator');\r\n const isActivatorIconClicked = $clickedElem.is('.card .activator i');\r\n\r\n if (isTitleClicked || isTitleIconClicked) {\r\n takeRevealDown($reveal);\r\n } else if (isActivatorClicked || isActivatorIconClicked) {\r\n takeRevealUp($reveal);\r\n }\r\n }\r\n });\r\n\r\n const takeRevealUp = (revealElem) => {\r\n\r\n revealElem.css({\r\n display: 'block'\r\n }).velocity({\r\n translateY: '-100%'\r\n }, {\r\n duration: 300,\r\n queue: false,\r\n easing: 'easeInOutQuad'\r\n });\r\n };\r\n\r\n const takeRevealDown = (revealElem) => {\r\n\r\n revealElem.velocity({\r\n translateY: 0\r\n }, {\r\n duration: 225,\r\n queue: false,\r\n easing: 'easeInOutQuad',\r\n complete: function complete() {\r\n revealElem.css({\r\n display: 'none'\r\n });\r\n }\r\n });\r\n };\r\n\r\n $('.rotate-btn').on('click', function () {\r\n\r\n $(this).closest('.card').toggleClass('flipped');\r\n\r\n });\r\n\r\n $(window).on('load', function () {\r\n\r\n const $rotatingCards = $('.card-rotating');\r\n $rotatingCards.each(function () {\r\n const $this = $(this);\r\n\r\n const $cardWrapper = $this.parent();\r\n const $front = $this.find('.front');\r\n const $back = $this.find('.back');\r\n const $frontHeight = $this.find('.front').outerHeight();\r\n const $backHeight = $this.find('.back').outerHeight();\r\n\r\n if ($frontHeight > $backHeight) $($cardWrapper, $back).height($frontHeight);\r\n else if ($frontHeight < $backHeight) $($cardWrapper, $front).height($backHeight);\r\n else $($cardWrapper).height($backHeight);\r\n });\r\n\r\n });\r\n\r\n $('.card-share > a').on('click', function (e) {\r\n\r\n e.preventDefault();\r\n\r\n $(this)\r\n .toggleClass('share-expanded')\r\n .parent()\r\n .find('div')\r\n .toggleClass('social-reveal-active');\r\n });\r\n\r\n $('.map-card').on('click', function () {\r\n $(this).find('.card-body').toggleClass('closed');\r\n });\r\n\r\n});\r\n","jQuery(($) => {\r\n\r\n $.fn.characterCounter = function () {\r\n\r\n return this.each(function () {\r\n\r\n const $this = $(this);\r\n const hasLengthAttribute = $this.attr('length') !== undefined;\r\n\r\n if (hasLengthAttribute) {\r\n\r\n $this.on('input focus', updateCounter);\r\n $this.on('blur', removeCounterElement);\r\n\r\n addCounterElement($this);\r\n }\r\n });\r\n };\r\n\r\n function updateCounter() {\r\n\r\n const $this = $(this);\r\n const maxLength = Number($this.attr('length'));\r\n const actualLength = Number($this.val().length);\r\n const isValidLength = actualLength <= maxLength;\r\n\r\n $this.parent().find('span[class=\"character-counter\"]')\r\n .html(`${actualLength}/${maxLength}`);\r\n\r\n addInputStyle(isValidLength, $this);\r\n }\r\n\r\n function addCounterElement($input) {\r\n\r\n const $counterElement = $('')\r\n .addClass('character-counter')\r\n .css('float', 'right')\r\n .css('font-size', '12px')\r\n .css('height', 1);\r\n\r\n $input.parent().append($counterElement);\r\n }\r\n\r\n function removeCounterElement() {\r\n\r\n $(this).parent().find('span[class=\"character-counter\"]').html('');\r\n }\r\n\r\n function addInputStyle(isValidLength, $input) {\r\n\r\n const inputHasInvalidClass = $input.hasClass('invalid');\r\n if (isValidLength && inputHasInvalidClass) {\r\n\r\n $input.removeClass('invalid');\r\n } else if (!isValidLength && !inputHasInvalidClass) {\r\n\r\n $input.removeClass('valid');\r\n $input.addClass('invalid');\r\n }\r\n }\r\n\r\n $(document).ready(() => {\r\n\r\n $('input, textarea').characterCounter();\r\n });\r\n});\r\n","jQuery(($) => {\r\n\r\n $.fn.collapsible = function (options) {\r\n\r\n const defaults = {\r\n accordion: undefined\r\n };\r\n\r\n options = $.extend(defaults, options);\r\n\r\n return this.each(function () {\r\n\r\n const $this = $(this);\r\n\r\n const $panelHeaders = $this.find('> li > .collapsible-header');\r\n\r\n const collapsibleType = $this.data('collapsible');\r\n\r\n $this.off('click.collapse', '.collapsible-header');\r\n $panelHeaders.off('click.collapse');\r\n\r\n\r\n if (options.accordion || collapsibleType === 'accordion' || collapsibleType === undefined) {\r\n\r\n $panelHeaders.on('click.collapse', (e) => {\r\n\r\n let element = $(e.target);\r\n\r\n if (isChildOfPanelHeader(element)) {\r\n\r\n element = getPanelHeader(element);\r\n }\r\n\r\n element.toggleClass('active');\r\n accordionOpen($this, element);\r\n });\r\n\r\n accordionOpen($this, $panelHeaders.filter('.active').first());\r\n } else {\r\n\r\n $panelHeaders.each(function () {\r\n\r\n $(this).on('click.collapse', (e) => {\r\n\r\n let element = $(e.target);\r\n if (isChildOfPanelHeader(element)) {\r\n\r\n element = getPanelHeader(element);\r\n }\r\n element.toggleClass('active');\r\n expandableOpen(element);\r\n });\r\n\r\n if ($(this).hasClass('active')) {\r\n\r\n expandableOpen($(this));\r\n }\r\n\r\n });\r\n }\r\n });\r\n };\r\n\r\n function accordionOpen($collapsible, object) {\r\n\r\n const $panelHeaders = $collapsible.find('> li > .collapsible-header');\r\n\r\n expandableOpen(object);\r\n\r\n $panelHeaders.not(object)\r\n .removeClass('active')\r\n .parent()\r\n .removeClass('active')\r\n .children('.collapsible-body')\r\n .stop(true, false)\r\n .slideUp({\r\n duration: 350,\r\n easing: 'easeOutQuart',\r\n queue: false,\r\n complete() {\r\n $(this).css('height', '');\r\n }\r\n });\r\n\r\n }\r\n\r\n function expandableOpen(object) {\r\n\r\n if (object.hasClass('active')) {\r\n object.parent().addClass('active');\r\n } else {\r\n object.parent().removeClass('active');\r\n }\r\n\r\n if (object.parent().hasClass('active')) {\r\n object.siblings('.collapsible-body').stop(true, false).slideDown({\r\n duration: 350,\r\n easing: 'easeOutQuart',\r\n queue: false,\r\n complete() {\r\n $(this).css('height', '');\r\n }\r\n });\r\n } else {\r\n object.siblings('.collapsible-body').stop(true, false).slideUp({\r\n duration: 350,\r\n easing: 'easeOutQuart',\r\n queue: false,\r\n complete() {\r\n $(this).css('height', '');\r\n }\r\n });\r\n }\r\n }\r\n\r\n function isChildOfPanelHeader(object) {\r\n\r\n const $panelHeader = getPanelHeader(object);\r\n return $panelHeader.length > 0;\r\n }\r\n\r\n function getPanelHeader(object) {\r\n\r\n return object.closest('li > .collapsible-header');\r\n }\r\n\r\n $('.collapsible').collapsible();\r\n\r\n});\r\n","jQuery(($) => {\r\n\r\n $(document).on('change', '.file-field input[type=\"file\"]', function () {\r\n\r\n const $this = $(this);\r\n console.log($this);\r\n const $fileField = $this.closest('.file-field');\r\n const $pathInput = $fileField.find('input.file-path');\r\n const files = $this.get(0).files;\r\n let fileNames = [];\r\n\r\n if (Array.isArray(files)) {\r\n fileNames = files.map(file => file.name);\r\n } else {\r\n fileNames = Object.values(files).map(file => file.name);\r\n }\r\n $pathInput.val(fileNames.join(', '));\r\n $pathInput.trigger('change');\r\n });\r\n});\r\n","(($) => {\r\n\r\n class MdbAutocomplete {\r\n\r\n constructor(input, options) {\r\n\r\n this.defaults = {\r\n data: {},\r\n dataColor: '',\r\n closeColor: '#4285f4',\r\n closeBlurColor: '#ced4da',\r\n inputFocus: '1px solid #4285f4',\r\n inputBlur: '1px solid #ced4da',\r\n inputFocusShadow: '0 1px 0 0 #4285f4',\r\n inputBlurShadow: '',\r\n visibleOptions: 5\r\n };\r\n\r\n this.enterCharCode = 13;\r\n this.homeCharCode = 36;\r\n this.endCharCode = 35;\r\n this.arrowUpCharCode = 38;\r\n this.arrowDownCharCode = 40;\r\n this.count = -1;\r\n this.nextScrollHeight = -45;\r\n this.$input = input;\r\n this.options = this.assignOptions(options);\r\n this.$clearButton = this.$input.next('.mdb-autocomplete-clear');\r\n this.$autocompleteWrap = $('
      ');\r\n }\r\n\r\n init() {\r\n \r\n this.handleEvents();\r\n }\r\n\r\n handleEvents() {\r\n\r\n this.setData();\r\n this.inputFocus();\r\n this.inputBlur();\r\n this.inputKeyupData();\r\n this.inputLiClick();\r\n this.clearAutocomplete();\r\n this.setAutocompleteWrapHeight();\r\n }\r\n\r\n assignOptions(options) {\r\n\r\n return $.extend({}, this.defaults, options);\r\n }\r\n\r\n setAutocompleteWrapHeight() {\r\n this.$autocompleteWrap.css('max-height', `${this.options.visibleOptions * 45}px`);\r\n }\r\n\r\n setData() {\r\n\r\n if (Object.keys(this.options.data).length) {\r\n this.$autocompleteWrap.insertAfter(this.$input);\r\n }\r\n }\r\n\r\n inputFocus() {\r\n\r\n this.$input.on('focus', () => {\r\n\r\n this.changeSVGcolors();\r\n this.$input.css('border-bottom', this.options.inputFocus);\r\n this.$input.css('box-shadow', this.options.inputFocusShadow);\r\n });\r\n }\r\n\r\n inputBlur() {\r\n\r\n this.$input.on('blur', () => {\r\n\r\n this.$input.css('border-bottom', this.options.inputBlur);\r\n this.$input.css('box-shadow', this.options.inputBlurShadow);\r\n });\r\n }\r\n\r\n inputKeyupData() {\r\n\r\n this.$input.on('keyup', e => {\r\n\r\n if (e.which === this.enterCharCode) {\r\n if (!this.options.data.includes(this.$input.val())) {\r\n this.options.data.push(this.$input.val());\r\n }\r\n this.$autocompleteWrap.find('.selected').trigger('click');\r\n this.$autocompleteWrap.empty();\r\n this.inputBlur();\r\n this.count = -1;\r\n this.nextScrollHeight = -45;\r\n return this.count;\r\n }\r\n\r\n const $inputValue = this.$input.val();\r\n\r\n this.$autocompleteWrap.empty();\r\n\r\n if ($inputValue.length) {\r\n\r\n this.appendOptions(this.options.data, $inputValue);\r\n\r\n const $ulList = this.$autocompleteWrap;\r\n const $ulItems = this.$autocompleteWrap.find('li');\r\n const nextItemHeight = $ulItems.eq(this.count).outerHeight();\r\n const previousItemHeight = $ulItems.eq(this.count - 1).outerHeight();\r\n\r\n if (e.which === this.homeCharCode) {\r\n\r\n this.homeHandler($ulList, $ulItems);\r\n }\r\n\r\n if (e.which === this.endCharCode) {\r\n\r\n this.endHandler($ulList, $ulItems);\r\n }\r\n\r\n if (e.which === this.arrowDownCharCode) {\r\n\r\n this.arrowDownHandler($ulList, $ulItems, nextItemHeight);\r\n } else if (e.which === this.arrowUpCharCode) {\r\n\r\n this.arrowUpHandler($ulList, $ulItems, nextItemHeight, previousItemHeight);\r\n }\r\n\r\n\r\n if ($inputValue.length === 0) {\r\n\r\n this.$clearButton.css('visibility', 'hidden');\r\n } else {\r\n\r\n this.$clearButton.css('visibility', 'visible');\r\n }\r\n\r\n this.$autocompleteWrap.children().css('color', this.options.dataColor);\r\n } else {\r\n this.$clearButton.css('visibility', 'hidden');\r\n }\r\n });\r\n }\r\n\r\n endHandler($ulList, $ulItems) {\r\n\r\n this.count = $ulItems.length - 1;\r\n this.nextScrollHeight = ($ulItems.length * 45 - 45);\r\n $ulList.scrollTop(($ulItems.length) * 45);\r\n $ulItems.eq(-1).addClass('selected');\r\n }\r\n\r\n homeHandler($ulList, $ulItems) {\r\n this.count = 0;\r\n this.nextScrollHeight = -45;\r\n $ulList.scrollTop(0);\r\n $ulItems.eq(0).addClass('selected');\r\n }\r\n\r\n arrowDownHandler($ulList, $ulItems, nextItemHeight) {\r\n\r\n if (this.count > $ulItems.length - 2) {\r\n\r\n this.count = -1;\r\n $ulItems.scrollTop(0);\r\n this.nextScrollHeight = -45;\r\n return;\r\n } else {\r\n\r\n this.count++;\r\n }\r\n\r\n this.nextScrollHeight += nextItemHeight;\r\n $ulList.scrollTop(this.nextScrollHeight);\r\n $ulItems.eq(this.count).addClass('selected');\r\n }\r\n\r\n arrowUpHandler($ulList, $ulItems, nextItemHeight, previousItemHeight) {\r\n\r\n if (this.count < 1) {\r\n this.count = $ulItems.length;\r\n $ulList.scrollTop($ulList.prop('scrollHeight'));\r\n this.nextScrollHeight = $ulList.prop('scrollHeight') - nextItemHeight;\r\n } else {\r\n\r\n this.count--;\r\n }\r\n this.nextScrollHeight -= previousItemHeight;\r\n $ulList.scrollTop(this.nextScrollHeight);\r\n $ulItems.eq(this.count).addClass('selected');\r\n }\r\n\r\n appendOptions(data, $inputValue) {\r\n\r\n for (const item in data) {\r\n\r\n if (data[item].toLowerCase().indexOf($inputValue.toLowerCase()) !== -1) {\r\n\r\n const option = $(`
    • ${data[item]}
    • `);\r\n\r\n this.$autocompleteWrap.append(option);\r\n }\r\n }\r\n }\r\n\r\n inputLiClick() {\r\n\r\n this.$autocompleteWrap.on('click', 'li', e => {\r\n e.preventDefault();\r\n\r\n this.$input.val($(e.target).text());\r\n this.$autocompleteWrap.empty();\r\n });\r\n }\r\n\r\n clearAutocomplete() {\r\n\r\n this.$clearButton.on('click', e => {\r\n e.preventDefault();\r\n\r\n this.count = -1;\r\n this.nextScrollHeight = -45;\r\n const $this = $(e.currentTarget);\r\n\r\n $this.parent().find('.mdb-autocomplete').val('');\r\n $this.css('visibility', 'hidden');\r\n this.$autocompleteWrap.empty();\r\n $this.parent().find('label').removeClass('active');\r\n });\r\n }\r\n\r\n changeSVGcolors() {\r\n\r\n if (this.$input.hasClass('mdb-autocomplete')) {\r\n\r\n this.$input.on('keyup', e => {\r\n\r\n this.fillSVG(e, this.options.closeColor);\r\n });\r\n\r\n this.$input.on('blur', e => {\r\n\r\n this.fillSVG(e, this.options.closeBlurColor);\r\n });\r\n }\r\n }\r\n\r\n fillSVG(e, color) {\r\n e.preventDefault();\r\n\r\n $(e.target).parent().find('.mdb-autocomplete-clear').find('svg').css('fill', color);\r\n }\r\n }\r\n\r\n $.fn.mdbAutocomplete = function (options) {\r\n return this.each(function () {\r\n const mdbAutocomplete = new MdbAutocomplete($(this), options);\r\n mdbAutocomplete.init();\r\n });\r\n };\r\n\r\n})(jQuery);\r\n","let loader_path = './dev/dist/mdb-addons/preloader.html';\r\nlet windowLoaded = false;\r\n\r\n$(window).on('load', function () {\r\n\r\n windowLoaded = true;\r\n});\r\n\r\njQuery(function ($) { \r\n $('body').attr('aria-busy', true);\r\n\r\n $('#preloader-markup').load(loader_path, function () {\r\n\r\n if (windowLoaded) {\r\n \r\n preloaderFading();\r\n } else {\r\n \r\n $(window).on('load', function () { \r\n\r\n preloaderFading(); \r\n });\r\n }\r\n });\r\n});\r\n\r\nfunction preloaderFading() {\r\n $('#mdb-preloader').fadeOut('slow');\r\n $('body').removeAttr('aria-busy');\r\n};\r\n","jQuery(($) => {\r\n\r\n const rangeWrapper = '.range-field';\r\n const rangeType = 'input[type=range]:not(.custom-range):not(.multi-range)';\r\n const thumbHtml = '';\r\n let rangeMousedown = false;\r\n\r\n function addThumb() {\r\n const $thumb = $(thumbHtml);\r\n $(rangeType).after($thumb);\r\n }\r\n\r\n $(document).on('change', rangeType, function () {\r\n const $thumb = $(this);\r\n const $thumbValue = $thumb.siblings('.thumb').find('.value');\r\n $thumbValue.html($thumb.val());\r\n });\r\n\r\n\r\n $(document).on('mousedown touchstart contextmenu', rangeType, function (e) {\r\n const $this = $(this);\r\n const noThumb = !$this.siblings('.thumb').length;\r\n const isRightClick = e.type === 'contextmenu';\r\n\r\n if (noThumb) {\r\n addThumb();\r\n }\r\n\r\n // this must be here. if you define $thumb before it's create $thumb be empty element.\r\n const $thumb = $this.siblings('.thumb');\r\n\r\n // prevent show thumb when mousemove after right click;\r\n if (isRightClick) {\r\n rangeMousedown = false;\r\n } else {\r\n rangeMousedown = true;\r\n }\r\n\r\n $this.addClass('active');\r\n\r\n if (!$thumb.hasClass('active')) {\r\n showThumb($thumb);\r\n }\r\n\r\n updateThumbPosition($(this), $thumb);\r\n\r\n // Set indicator value\r\n $thumb.find('.value').html($this.val());\r\n\r\n });\r\n\r\n $(document).on('mouseup touchend', rangeWrapper, function () {\r\n const $thumb = $(this).children('.thumb');\r\n\r\n rangeMousedown = false;\r\n\r\n if ($thumb.hasClass('active')) {\r\n hideThumb($thumb);\r\n }\r\n\r\n $thumb.removeClass('active');\r\n\r\n });\r\n\r\n $(document).on('input mousemove touchmove', rangeWrapper, function () {\r\n const $thumb = $(this).children('.thumb');\r\n\r\n if (rangeMousedown) {\r\n if (!$thumb.hasClass('active')) {\r\n showThumb($thumb);\r\n }\r\n\r\n updateThumbPosition($(this).children(rangeType), $thumb);\r\n\r\n $thumb.find('.value').html($thumb.siblings(rangeType).val());\r\n }\r\n });\r\n\r\n $(document).on('mouseout touchleave', rangeWrapper, function () {\r\n if (!rangeMousedown) {\r\n const $thumb = $(this).children('.thumb');\r\n\r\n if ($thumb.hasClass('active')) {\r\n hideThumb($thumb);\r\n }\r\n\r\n $thumb.removeClass('active');\r\n }\r\n });\r\n\r\n function updateThumbPosition($this, $thumb) {\r\n const minValue = $this.attr('min');\r\n const maxValue = $this.attr('max');\r\n const widthThumb = $this.width() - 13.5;\r\n const oneStep = widthThumb / (maxValue - minValue);\r\n let leftPosition = oneStep * $this.val() - oneStep * minValue;\r\n\r\n if (leftPosition < 0) {\r\n leftPosition = 0;\r\n } else if (leftPosition > widthThumb) {\r\n leftPosition = widthThumb;\r\n }\r\n\r\n $thumb.addClass('active').css('left', leftPosition);\r\n }\r\n\r\n function thumbAnimation($thumb, tHeight, tWidth, tTop, tMarginLeft, tDuration, tEasing) {\r\n $thumb.velocity({\r\n height: tHeight,\r\n width: tWidth,\r\n top: tTop,\r\n marginLeft: tMarginLeft\r\n },\r\n {\r\n duration: tDuration,\r\n easing: tEasing ? tEasing : 'swing'\r\n });\r\n }\r\n\r\n function showThumb($thumb) {\r\n thumbAnimation($thumb, '30px', '30px', '-27px', '-7px', 200, 'easeOutExpo');\r\n }\r\n\r\n function hideThumb($thumb) {\r\n thumbAnimation($thumb, '0', '0', '10px', '7px', 200);\r\n }\r\n});\r\n","jQuery(($) => {\r\n\r\n class SideNav {\r\n\r\n constructor(element, options) {\r\n\r\n this.settings = {\r\n menuLeftMinBorder: 0.3,\r\n menuLeftMaxBorder: -0.5,\r\n menuRightMinBorder: -0.3,\r\n menuRightMaxBorder: 0.5,\r\n menuVelocityOffset: 10\r\n };\r\n\r\n this.defaults = {\r\n menuWidth: 240,\r\n edge: 'left',\r\n closeOnClick: false,\r\n breakpoint: 1440,\r\n timeDurationOpen: 500,\r\n timeDurationClose: 500,\r\n timeDurationOverlayOpen: 50,\r\n timeDurationOverlayClose: 200,\r\n easingOpen: 'easeInOutQuad',\r\n easingClose: 'easeInOutQuad',\r\n showOverlay: true,\r\n showCloseButton: false,\r\n slim: false\r\n };\r\n\r\n this.$element = element;\r\n\r\n this.$elementCloned = element.clone().css({\r\n display: 'inline-block',\r\n lineHeight: '24px'\r\n });\r\n\r\n this.options = this.assignOptions(options);\r\n\r\n this.menuOut = false;\r\n this.lastTouchVelocity = {\r\n x: {\r\n startPosition: 0,\r\n startTime: 0,\r\n endPosition: 0,\r\n endTime: 0\r\n }\r\n };\r\n\r\n this.$body = $('body');\r\n this.$menu = $(`#${this.$element.attr('data-activates')}`);\r\n this.$sidenavOverlay = $('#sidenav-overlay');\r\n this.$dragTarget = $('
      ');\r\n this.$body.append(this.$dragTarget);\r\n\r\n }\r\n\r\n assignOptions(newOptions) {\r\n\r\n return $.extend({}, this.defaults, newOptions);\r\n }\r\n\r\n init() {\r\n this.setMenuWidth();\r\n this.setMenuTranslation();\r\n this.closeOnClick();\r\n this.openOnClick();\r\n this.bindTouchEvents();\r\n this.showCloseButton();\r\n this.inputOnClick();\r\n if (this.options.slim === true) {\r\n this.handleSlim();\r\n }\r\n }\r\n\r\n setMenuWidth() {\r\n\r\n const $sidenavBg = $(`#${this.$menu.attr('id')}`).find('> .sidenav-bg');\r\n\r\n this.$menu.css('width', this.options.menuWidth);\r\n $sidenavBg.css('width', this.options.menuWidth);\r\n\r\n }\r\n\r\n setMenuTranslation() {\r\n\r\n if (this.options.edge === 'left') {\r\n\r\n this.$menu.css('transform', 'translateX(-100%)');\r\n this.$dragTarget.css({\r\n left: 0\r\n });\r\n\r\n } else {\r\n\r\n this.$menu.addClass('right-aligned').css('transform', 'translateX(100%)');\r\n this.$dragTarget.css({\r\n right: 0\r\n });\r\n }\r\n\r\n if (!this.$menu.hasClass('fixed')) {\r\n return;\r\n }\r\n\r\n if (window.innerWidth > this.options.breakpoint) {\r\n\r\n this.menuOut = true; \r\n this.$menu.css('transform', 'translateX(0)');\r\n } else {\r\n\r\n this.menuOut = false; \r\n }\r\n\r\n this.$menu.find('input[type=text]').on('touchstart', () => {\r\n\r\n this.$menu.addClass('transform-fix-input');\r\n });\r\n\r\n $(window).on('resize', () => {\r\n\r\n if (window.innerWidth > this.options.breakpoint) {\r\n\r\n if (this.$sidenavOverlay.length) {\r\n\r\n this.removeMenu(true);\r\n } else {\r\n\r\n this.$menu.css('transform', 'translateX(0%)');\r\n this.menuOut = true; \r\n }\r\n } else if (this.menuOut === false) {\r\n\r\n const xValue = this.options.edge === 'left' ? '-100' : '100';\r\n this.$menu.css('transform', `translateX(${xValue}%)`);\r\n } else {\r\n this.menuOut = false; \r\n }\r\n });\r\n\r\n }\r\n\r\n closeOnClick() {\r\n\r\n if (this.options.closeOnClick === true) {\r\n\r\n this.$menu.on('click', 'a:not(.collapsible-header)', () => this.removeMenu());\r\n\r\n if (this.$menu.css('transform') === 'translateX(0)') {\r\n this.$menu.on('click', () => this.removeMenu());\r\n }\r\n }\r\n }\r\n\r\n openOnClick() {\r\n\r\n // eslint-disable-next-line consistent-return\r\n this.$element.on('click', e => {\r\n\r\n e.preventDefault();\r\n\r\n if (this.menuOut === true) {\r\n return this.removeMenu();\r\n }\r\n\r\n if (this.options.showOverlay === true) {\r\n if (!$('#sidenav-overlay').length) {\r\n this.$sidenavOverlay = $('
      ');\r\n this.$body.append(this.$sidenavOverlay);\r\n }\r\n } else {\r\n this.showCloseButton();\r\n }\r\n\r\n let translateX = [];\r\n\r\n if (this.options.edge === 'left') {\r\n\r\n translateX = [0, -1 * this.options.menuWidth];\r\n } else {\r\n\r\n translateX = [0, this.options.menuWidth];\r\n }\r\n if (this.$menu.css('transform') !== 'matrix(1, 0, 0, 1, 0, 0)') {\r\n this.$menu.velocity({\r\n translateX\r\n }, {\r\n duration: this.options.timeDurationOpen,\r\n queue: false,\r\n easing: this.options.easingOpen\r\n });\r\n }\r\n this.$sidenavOverlay.on('click', () => this.removeMenu());\r\n\r\n this.$sidenavOverlay.on('touchmove', this.touchmoveEventHandler.bind(this));\r\n this.$menu.on('touchmove', e => {\r\n\r\n e.preventDefault();\r\n\r\n this.$menu.find('.custom-scrollbar').css('padding-bottom', '30px');\r\n\r\n });\r\n\r\n if(this.options.showOverlay === false) {\r\n \r\n this.menuOut = true;\r\n }\r\n });\r\n }\r\n\r\n bindTouchEvents() {\r\n\r\n this.$dragTarget.on('click', () => {\r\n \r\n if (this.menuOut) {\r\n this.removeMenu();\r\n } \r\n } );\r\n\r\n this.$dragTarget.on('touchstart', e => {\r\n\r\n this.lastTouchVelocity.x.startPosition = e.touches[0].clientX;\r\n this.lastTouchVelocity.x.startTime = Date.now();\r\n });\r\n this.$dragTarget.on('touchmove', this.touchmoveEventHandler.bind(this));\r\n this.$dragTarget.on('touchend', this.touchendEventHandler.bind(this));\r\n }\r\n\r\n showCloseButton() {\r\n\r\n if (this.options.showCloseButton === true) {\r\n\r\n this.$menu.prepend(this.$elementCloned);\r\n this.$menu.find('.logo-wrapper').css({\r\n borderTop: '1px solid rgba(153,153,153,.3)'\r\n });\r\n }\r\n }\r\n\r\n inputOnClick() {\r\n\r\n this.$menu.find('input[type=text]').on('touchstart', () => this.$menu.css('transform', 'translateX(0)'));\r\n }\r\n\r\n removeMenu(restoreMenu) {\r\n\r\n this.$body.css({\r\n overflow: '',\r\n width: ''\r\n });\r\n\r\n this.$menu.velocity({\r\n translateX: this.options.edge === 'left' ? '-100%' : '100%'\r\n }, {\r\n duration: this.options.timeDurationClose,\r\n queue: false,\r\n easing: this.options.easingClose,\r\n complete: () => {\r\n if (restoreMenu === true) {\r\n this.$menu.removeAttr('style');\r\n this.$menu.css('width', this.options.menuWidth);\r\n }\r\n }\r\n });\r\n\r\n this.$menu.removeClass('transform-fix-input');\r\n this.hideSidenavOverlay();\r\n this.menuOut = false;\r\n }\r\n\r\n handleSlim() {\r\n\r\n const $toggle = $('#toggle');\r\n $toggle.on('click', () => {\r\n if (this.$menu.hasClass('slim')) {\r\n this.$menu.removeClass('slim');\r\n $('.sv-slim-icon').removeClass('fa-angle-double-right').addClass('fa-angle-double-left');\r\n $('.fixed-sn .double-nav').css({\r\n transition: 'all .3s ease-in-out',\r\n 'padding-left': '15.9rem'\r\n });\r\n\r\n $('.fixed-sn main, .fixed-sn footer').css({\r\n transition: 'all .3s ease-in-out',\r\n 'padding-left': '15rem'\r\n });\r\n\r\n } else {\r\n\r\n this.$menu.addClass('slim');\r\n $('.sv-slim-icon').removeClass('fa-angle-double-left').addClass('fa-angle-double-right');\r\n $('.fixed-sn .double-nav').css('padding-left', '4.6rem');\r\n $('.fixed-sn main, .fixed-sn footer').css({\r\n 'padding-left': '3.7rem'\r\n });\r\n }\r\n });\r\n }\r\n\r\n touchmoveEventHandler(e) {\r\n\r\n if (e.type !== 'touchmove') {\r\n\r\n return;\r\n }\r\n\r\n const [touch] = e.touches;\r\n let touchX = touch.clientX;\r\n\r\n // calculate velocity every 20ms\r\n if (Date.now() - this.lastTouchVelocity.x.startTime > 20) {\r\n\r\n this.lastTouchVelocity.x.startPosition = touch.clientX;\r\n this.lastTouchVelocity.x.startTime = Date.now();\r\n }\r\n\r\n this.disableScrolling();\r\n\r\n const overlayExists = this.$sidenavOverlay.length !== 0;\r\n if (!overlayExists) {\r\n\r\n this.buildSidenavOverlay();\r\n }\r\n\r\n // Keep within boundaries\r\n if (this.options.edge === 'left') {\r\n\r\n if (touchX > this.options.menuWidth) {\r\n\r\n touchX = this.options.menuWidth;\r\n } else if (touchX < 0) {\r\n\r\n touchX = 0;\r\n }\r\n }\r\n\r\n this.translateSidenavX(touchX);\r\n this.updateOverlayOpacity(touchX);\r\n }\r\n\r\n calculateTouchVelocityX() {\r\n\r\n const distance = Math.abs(this.lastTouchVelocity.x.endPosition - this.lastTouchVelocity.x.startPosition);\r\n const time = Math.abs(this.lastTouchVelocity.x.endTime - this.lastTouchVelocity.x.startTime);\r\n\r\n return distance / time;\r\n }\r\n\r\n touchendEventHandler(e) {\r\n\r\n if (e.type !== 'touchend') {\r\n\r\n return;\r\n }\r\n\r\n const touch = e.changedTouches[0];\r\n\r\n this.lastTouchVelocity.x.endTime = Date.now();\r\n this.lastTouchVelocity.x.endPosition = touch.clientX;\r\n const velocityX = this.calculateTouchVelocityX();\r\n\r\n const touchX = touch.clientX;\r\n let leftPos = touchX - this.options.menuWidth;\r\n let rightPos = touchX - this.options.menuWidth / 2;\r\n if (leftPos > 0) {\r\n leftPos = 0;\r\n }\r\n if (rightPos < 0) {\r\n rightPos = 0;\r\n }\r\n\r\n if (this.options.edge === 'left') {\r\n\r\n // If velocityX <= 0.3 then the user is flinging the menu closed so ignore this.menuOut\r\n if (this.menuOut || velocityX <= this.settings.menuLeftMinBorder || velocityX < this.options.menuLeftMaxBorder) {\r\n\r\n if (leftPos !== 0) {\r\n\r\n this.translateMenuX([0, leftPos], '300');\r\n }\r\n\r\n this.showSidenavOverlay();\r\n\r\n } else if (!this.menuOut || velocityX > this.settings.menuLeftMinBorder) {\r\n\r\n this.enableScrolling();\r\n this.translateMenuX([-1 * this.options.menuWidth - this.options.menuVelocityOffset, leftPos], '200');\r\n this.hideSidenavOverlay();\r\n }\r\n\r\n this.$dragTarget.css({\r\n width: '10px',\r\n right: '',\r\n left: 0\r\n });\r\n } else if (this.menuOut && velocityX >= this.settings.menuRightMinBorder || velocityX > this.settings.menuRightMaxBorder) {\r\n\r\n this.translateMenuX([0, rightPos], '300');\r\n this.showSidenavOverlay();\r\n\r\n this.$dragTarget.css({\r\n width: '50%',\r\n right: '',\r\n left: 0\r\n });\r\n } else if (!this.menuOut || velocityX < this.settings.menuRightMinBorder) {\r\n\r\n this.enableScrolling();\r\n this.translateMenuX([this.options.menuWidth + this.options.menuVelocityOffset, rightPos], '200');\r\n this.hideSidenavOverlay();\r\n\r\n this.$dragTarget.css({\r\n width: '10px',\r\n right: 0,\r\n left: ''\r\n });\r\n }\r\n }\r\n\r\n buildSidenavOverlay() {\r\n\r\n if (this.options.showOverlay === true) {\r\n\r\n this.$sidenavOverlay = $('
      ');\r\n this.$sidenavOverlay.css('opacity', 0).on('click', () => this.removeMenu());\r\n\r\n this.$body.append(this.$sidenavOverlay);\r\n }\r\n }\r\n\r\n disableScrolling() {\r\n\r\n const oldWidth = this.$body.innerWidth();\r\n this.$body.css('overflow', 'hidden');\r\n this.$body.width(oldWidth);\r\n }\r\n\r\n enableScrolling() {\r\n\r\n this.$body.css({\r\n overflow: '',\r\n width: ''\r\n });\r\n }\r\n\r\n translateMenuX(fromTo, duration) {\r\n\r\n this.$menu.velocity({\r\n translateX: fromTo\r\n }, {\r\n duration: typeof duration === 'string' ? Number(duration) : duration,\r\n queue: false,\r\n easing: this.options.easingOpen\r\n });\r\n }\r\n\r\n translateSidenavX(touchX) {\r\n\r\n if (this.options.edge === 'left') {\r\n\r\n const isRightDirection = touchX >= this.options.menuWidth / 2;\r\n this.menuOut = isRightDirection;\r\n\r\n this.$menu.css('transform', `translateX(${touchX - this.options.menuWidth}px)`);\r\n } else {\r\n\r\n const isLeftDirection = touchX < window.innerWidth - this.options.menuWidth / 2;\r\n this.menuOut = isLeftDirection;\r\n\r\n let rightPos = touchX - this.options.menuWidth / 2;\r\n if (rightPos < 0) {\r\n rightPos = 0;\r\n }\r\n\r\n this.$menu.css('transform', `translateX(${rightPos}px)`);\r\n }\r\n }\r\n\r\n updateOverlayOpacity(touchX) {\r\n\r\n let overlayPercentage;\r\n if (this.options.edge === 'left') {\r\n\r\n overlayPercentage = touchX / this.options.menuWidth;\r\n } else {\r\n\r\n overlayPercentage = Math.abs((touchX - window.innerWidth) / this.options.menuWidth);\r\n }\r\n\r\n this.$sidenavOverlay.velocity({\r\n opacity: overlayPercentage\r\n }, {\r\n duration: 10,\r\n queue: false,\r\n easing: this.options.easingOpen\r\n });\r\n }\r\n\r\n showSidenavOverlay() {\r\n\r\n if (this.options.showOverlay === true && !$('#sidenav-overlay').length) {\r\n this.buildSidenavOverlay();\r\n }\r\n\r\n this.$sidenavOverlay.velocity({\r\n opacity: 1\r\n }, {\r\n duration: this.options.timeDurationOverlayOpen,\r\n queue: false,\r\n easing: this.options.easingOpen\r\n });\r\n }\r\n\r\n hideSidenavOverlay() {\r\n\r\n this.$sidenavOverlay.velocity({\r\n opacity: 0\r\n }, {\r\n duration: this.options.timeDurationOverlayClose,\r\n queue: false,\r\n easing: this.options.easingOpen,\r\n complete() {\r\n $(this).remove();\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n $.fn.sideNav = function (options) {\r\n $(this).each(function () {\r\n const sidenav = new SideNav($(this), options);\r\n sidenav.init();\r\n });\r\n };\r\n\r\n $('.side-nav').on('touchmove', function (e) {\r\n e.stopPropagation();\r\n }, false);\r\n\r\n});\r\n","jQuery(() => {\r\n const SMOOTH_SCROLL_DURATION = 700;\r\n\r\n $('.smooth-scroll').on('click', 'a', function (e) {\r\n e.preventDefault();\r\n\r\n const $this = $(this);\r\n const elAttr = $this.attr('href');\r\n\r\n if (typeof elAttr !== undefined && elAttr.indexOf('#') === 0) {\r\n\r\n const offset = $(this).attr('data-offset') || 0;\r\n\r\n $('body,html').animate({\r\n scrollTop: $(elAttr).offset().top - offset\r\n }, SMOOTH_SCROLL_DURATION);\r\n\r\n const setHash = $this.parentsUntil('.smooth-scroll').last().parent().attr('data-allow-hashes');\r\n\r\n if (typeof setHash !== undefined && setHash !== false) {\r\n\r\n history.replaceState(null, null, elAttr);\r\n }\r\n }\r\n });\r\n});\r\n","jQuery(($) => {\r\n\r\n class Dropdown {\r\n\r\n constructor($activator, options = {}) {\r\n\r\n this.$activator = $activator;\r\n this.$activates = $(`#${$activator.attr('data-activates')}`);\r\n /* eslint-disable newline-per-chained-call */\r\n this.options = {\r\n inDuration: this.fallback().or($activator.data('induration')).or($activator.attr('data-in-duration')).or(options.inDuration).or(300).value(),\r\n outDuration: this.fallback().or($activator.data('outduration')).or($activator.attr('data-out-duration')).or(options.outDuration).or(225).value(),\r\n easingEffectIn: this.fallback().or($activator.data('easingeffectin')).or($activator.attr('data-easing-effect-in')).or(options.easingEffectIn).or('easeOutCubic').value(),\r\n easingEffectOut: this.fallback().or($activator.data('easingeffectout')).or($activator.attr('data-easing-effect-out')).or(options.easingEffectOut).or('swing').value(),\r\n constrainWidth: this.fallback().or($activator.data('constrainwidth')).or($activator.attr('data-constrain-width')).or(options.constrainWidth).or(true).value(),\r\n hover: this.fallback().or($activator.data('hover')).or($activator.attr('data-hover')).or(options.hover).or(false).value(),\r\n gutter: this.fallback().or($activator.data('gutter')).or($activator.attr('data-gutter')).or(options.gutter).or(0).value(),\r\n belowOrigin: this.fallback().or($activator.data('beloworigin')).or($activator.attr('data-below-origin')).or(options.belowOrigin).or(false).value(),\r\n alignment: this.fallback().or($activator.data('alignment')).or($activator.attr('data-alignment')).or(options.alignment).or('left').value(),\r\n maxHeight: this.fallback().or($activator.data('maxheight')).or($activator.attr('data-max-height')).or(options.maxHeight).or('').value(),\r\n resetScroll: this.fallback().or($activator.data('resetscroll')).or($activator.attr('data-reset-scroll')).or(options.resetScroll).or(true).value()\r\n };\r\n /* eslint-enable newline-per-chained-call */\r\n this.isFocused = false;\r\n }\r\n\r\n static mdbDropdownAutoInit() {\r\n\r\n $('.dropdown-button').dropdown();\r\n\r\n this.bindMultiLevelDropdownEvents();\r\n this.bindBootstrapEvents();\r\n }\r\n\r\n static bindMultiLevelDropdownEvents() {\r\n\r\n $('.multi-level-dropdown .dropdown-submenu > a').on(\"mouseenter\", function(e) {\r\n var submenu = $(this);\r\n $('.multi-level-dropdown .dropdown-submenu .dropdown-menu').removeClass('show');\r\n submenu.next('.dropdown-menu').addClass('show');\r\n e.stopPropagation();\r\n });\r\n \r\n $('.multi-level-dropdown .dropdown').on(\"hidden.bs.dropdown\", function() {\r\n // hide any open menus when parent closes\r\n $('.multi-level-dropdown .dropdown-menu.show').removeClass('show');\r\n });\r\n }\r\n\r\n static bindBootstrapEvents() {\r\n\r\n const $dropdowns = $('.dropdown, .dropup');\r\n $dropdowns.on({\r\n 'show.bs.dropdown': (e) => {\r\n\r\n const $dropdown = $(e.target);\r\n const effects = this._getDropdownEffects($dropdown);\r\n this._dropdownEffectStart($dropdown, effects.effectIn);\r\n },\r\n 'shown.bs.dropdown': (e) => {\r\n\r\n const $dropdown = $(e.target);\r\n const effects = this._getDropdownEffects($dropdown);\r\n if (effects.effectIn && effects.effectOut) {\r\n\r\n this._dropdownEffectEnd($dropdown, effects);\r\n }\r\n },\r\n 'hide.bs.dropdown': (e) => {\r\n\r\n const $dropdown = $(e.target);\r\n const effects = this._getDropdownEffects($dropdown);\r\n if (effects.effectOut) {\r\n\r\n e.preventDefault();\r\n\r\n this._dropdownEffectStart($dropdown, effects.effectOut);\r\n this._dropdownEffectEnd($dropdown, effects, () => {\r\n\r\n $dropdown.removeClass('show');\r\n $dropdown.find('.dropdown-menu').removeClass('show');\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n static _getDropdownEffects($dropdown) {\r\n\r\n let defaultInEffect = 'fadeIn';\r\n let defaultOutEffect = 'fadeOut';\r\n const $dropdownMenu = $dropdown.find('.dropdown-menu');\r\n const $parentUl = $dropdown.parents('ul.nav');\r\n\r\n if ($parentUl.height > 0) {\r\n\r\n defaultInEffect = $parentUl.data('dropdown-in') || null;\r\n defaultOutEffect = $parentUl.data('dropdown-out') || null;\r\n }\r\n\r\n return {\r\n effectIn: $dropdownMenu.data('dropdown-in') || defaultInEffect,\r\n effectOut: $dropdownMenu.data('dropdown-out') || defaultOutEffect\r\n };\r\n }\r\n\r\n static _dropdownEffectStart($dropdown, effectToStart) {\r\n\r\n if (effectToStart) {\r\n\r\n $dropdown.addClass('dropdown-animating');\r\n $dropdown.find('.dropdown-menu').addClass(['animated', effectToStart].join(' '));\r\n }\r\n }\r\n\r\n static _dropdownEffectEnd($dropdown, effects, callback) {\r\n\r\n $dropdown.one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', () => {\r\n\r\n $dropdown.removeClass('dropdown-animating');\r\n $dropdown.find('.dropdown-menu').removeClass(['animated', effects.effectIn, effects.effectOut].join(' '));\r\n\r\n if (typeof callback === 'function') {\r\n\r\n callback();\r\n }\r\n });\r\n }\r\n\r\n returnPublicInterface() {\r\n\r\n return {\r\n $activator: this.$activator,\r\n $activates: this.$activates,\r\n updatePosition: this.updatePosition.bind(this)\r\n };\r\n }\r\n\r\n init() {\r\n\r\n this.appendDropdownToActivator();\r\n\r\n if (this.options.hover) {\r\n\r\n this.handleHoverableDropdown();\r\n\r\n } else {\r\n\r\n this.handleClickableDropdown();\r\n }\r\n\r\n this.bindEvents();\r\n }\r\n\r\n appendDropdownToActivator() {\r\n\r\n this.$activator.after(this.$activates);\r\n }\r\n\r\n handleHoverableDropdown() {\r\n\r\n let opened = false;\r\n\r\n this.$activator.unbind(`click.${this.$activator.attr('id')}`);\r\n\r\n this.$activator.on('mouseenter', () => {\r\n\r\n if (opened === false) {\r\n\r\n this.placeDropdown();\r\n opened = true;\r\n }\r\n });\r\n\r\n this.$activator.on('mouseleave', (e) => {\r\n\r\n const toEl = e.toElement || e.relatedTarget;\r\n const mouseHoversDropdown = $(toEl).closest('.dropdown-content').is(this.$activates);\r\n if (!mouseHoversDropdown) {\r\n\r\n this.$activates.stop(true, true);\r\n this.hideDropdown();\r\n opened = false;\r\n }\r\n });\r\n\r\n this.$activates.on('mouseleave', (e) => {\r\n\r\n const toEl = e.toElement || e.relatedTarget;\r\n const mouseHoversActivator = $(toEl).closest('.dropdown-button').is(this.$activator);\r\n if (!mouseHoversActivator) {\r\n\r\n this.$activates.stop(true, true);\r\n this.hideDropdown();\r\n opened = false;\r\n }\r\n });\r\n }\r\n\r\n handleClickableDropdown() {\r\n\r\n this.$activator.unbind(`click.${this.$activator.attr('id')}`);\r\n this.$activator.bind(`click.${this.$activator.attr('id')}`, (e) => {\r\n\r\n if (this.isFocused) {\r\n\r\n return;\r\n }\r\n\r\n const activatorClicked = this.$activator.get(0) === e.currentTarget;\r\n const activatorActive = this.$activator.hasClass('active');\r\n const dropdownContentClicked = $(e.target).closest('.dropdown-content').length !== 0;\r\n if (activatorClicked && !activatorActive && !dropdownContentClicked) {\r\n\r\n e.preventDefault();\r\n this.placeDropdown('click');\r\n } else if (activatorActive) {\r\n\r\n this.hideDropdown();\r\n $(document).unbind(`click.${this.$activates.attr('id')} touchstart.${this.$activates.attr('id')}`);\r\n }\r\n\r\n if (this.$activates.hasClass('active')) {\r\n\r\n $(document).bind(`click.${this.$activates.attr('id')} touchstart.${this.$activates.attr('id')}`, (e) => {\r\n\r\n const clickedOutsideDropdown = !this.$activates.is(e.target) && !this.$activator.is(e.target) && !this.$activator.find(e.target).length;\r\n if (clickedOutsideDropdown) {\r\n\r\n this.hideDropdown();\r\n $(document).unbind(`click.${this.$activates.attr('id')} touchstart.${this.$activates.attr('id')}`);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n bindEvents() {\r\n\r\n this.$activator.on('open', (e, eventType) => {\r\n\r\n this.placeDropdown(eventType);\r\n });\r\n\r\n this.$activator.on('close', this.hideDropdown.bind(this));\r\n }\r\n\r\n placeDropdown(eventType) {\r\n\r\n if (eventType === 'focus') {\r\n\r\n this.isFocused = true;\r\n }\r\n\r\n this.$activates.addClass('active');\r\n this.$activator.addClass('active');\r\n\r\n if (this.options.constrainWidth === true) {\r\n\r\n this.$activates.css('width', this.$activator.outerWidth());\r\n } else {\r\n\r\n this.$activates.css('white-space', 'nowrap');\r\n }\r\n\r\n this.updatePosition();\r\n\r\n this.showDropdown();\r\n }\r\n\r\n showDropdown() {\r\n\r\n this.$activates.stop(true, true).css('opacity', 0)\r\n .slideDown({\r\n queue: false,\r\n duration: this.options.inDuration,\r\n easing: this.options.easingEffectIn,\r\n complete() {\r\n $(this).css('height', '');\r\n }\r\n })\r\n .animate({\r\n opacity: 1,\r\n // eslint-disable-next-line object-curly-newline\r\n ...this.options.resetScroll && { scrollTop: 0 }\r\n }, {\r\n queue: false,\r\n duration: this.options.inDuration,\r\n easing: 'easeOutSine'\r\n });\r\n }\r\n\r\n hideDropdown() {\r\n\r\n this.isFocused = false;\r\n this.$activates.fadeOut({\r\n durations: this.options.outDuration,\r\n easing: this.options.easingEffectOut\r\n });\r\n this.$activates.removeClass('active');\r\n this.$activator.removeClass('active');\r\n\r\n setTimeout(() => {\r\n this.$activates.css('max-height', this.options.maxHeight);\r\n }, this.options.outDuration);\r\n }\r\n\r\n updatePosition() {\r\n\r\n const windowHeight = window.innerHeight;\r\n const originHeight = this.$activator.innerHeight();\r\n const offsetTop = this.$activator.offset().top - $(window).scrollTop();\r\n\r\n const currAlignment = this._getHorizontalAlignment();\r\n let gutterSpacing = 0;\r\n let leftPosition = 0;\r\n\r\n const $wrapper = this.$activator.parent();\r\n let verticalOffset = this.options.belowOrigin ? originHeight : 0;\r\n const scrollOffset = !$wrapper.is('body') && $wrapper.get(0).scrollHeight > $wrapper.get(0).clientHeight ? $wrapper.get(0).scrollTop : 0;\r\n\r\n const doesNotFitFromBottom = offsetTop + this.$activates.innerHeight() > windowHeight;\r\n const doesNotFitFromTop = offsetTop + originHeight - this.$activates.innerHeight() < 0;\r\n if (doesNotFitFromBottom && doesNotFitFromTop) {\r\n\r\n const adjustedHeight = windowHeight - offsetTop - verticalOffset;\r\n this.$activates.css('max-height', adjustedHeight);\r\n } else if (doesNotFitFromBottom) {\r\n\r\n if (!verticalOffset) {\r\n verticalOffset += originHeight;\r\n }\r\n\r\n verticalOffset -= this.$activates.innerHeight();\r\n }\r\n\r\n if (currAlignment === 'left') {\r\n\r\n gutterSpacing = this.options.gutter;\r\n leftPosition = this.$activator.position().left + gutterSpacing;\r\n } else if (currAlignment === 'right') {\r\n\r\n const offsetRight = this.$activator.position().left + this.$activator.outerWidth() - this.$activates.outerWidth();\r\n gutterSpacing = -this.options.gutter;\r\n leftPosition = offsetRight + gutterSpacing;\r\n }\r\n\r\n this.$activates.css({\r\n position: 'absolute',\r\n top: this.$activator.position().top + verticalOffset + scrollOffset,\r\n left: leftPosition\r\n });\r\n }\r\n\r\n _getHorizontalAlignment() {\r\n\r\n const offsetLeft = this.$activator.offset().left;\r\n\r\n if (offsetLeft + this.$activates.innerWidth() > $(window).width()) {\r\n\r\n return 'right';\r\n } else if (offsetLeft - this.$activates.innerWidth() + this.$activator.innerWidth() < 0) {\r\n\r\n return 'left';\r\n }\r\n\r\n return this.options.alignment;\r\n }\r\n\r\n fallback() {\r\n\r\n return {\r\n _value: undefined,\r\n or(value) {\r\n if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\r\n this._value = value;\r\n }\r\n return this;\r\n },\r\n value() {\r\n return this._value;\r\n }\r\n };\r\n }\r\n }\r\n\r\n $.fn.scrollTo = function (elem) {\r\n\r\n this.scrollTop(this.scrollTop() - this.offset().top + $(elem).offset().top);\r\n return this;\r\n };\r\n\r\n $.fn.dropdown = function (options) {\r\n\r\n if (this.length > 1) {\r\n\r\n const instances = [];\r\n\r\n this.each(function () {\r\n\r\n const dropdown = new Dropdown(this, options);\r\n dropdown.init();\r\n\r\n instances.push(dropdown.returnPublicInterface());\r\n });\r\n\r\n return instances;\r\n }\r\n\r\n const dropdown = new Dropdown(this, options);\r\n dropdown.init();\r\n\r\n return dropdown.returnPublicInterface();\r\n };\r\n\r\n Dropdown.mdbDropdownAutoInit();\r\n});\r\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","jQuery(($) => {\r\n\r\n class DropdownSearchable {\r\n\r\n constructor($searchWrappers, options = {}) {\r\n\r\n this.$searchWrappers = $searchWrappers;\r\n this.options = {\r\n color: this.fallback().or(options.color).or('#000').value(),\r\n backgroundColor: this.fallback().or(options.backgroundColor).or('').value(),\r\n fontSize: this.fallback().or(options.fontSize).or('.9rem').value(),\r\n fontWeight: this.fallback().or(options.fontWeight).or('400').value(),\r\n borderRadius: this.fallback().or(options.borderRadius).or('').value(),\r\n borderColor: this.fallback().or(options.borderColor).or('').value(),\r\n margin: this.fallback().or(options.margin).or('').value()\r\n };\r\n }\r\n\r\n init() {\r\n\r\n this.bindSearchEvents();\r\n\r\n return this.$searchWrappers.css({\r\n color: this.options.color,\r\n backgroundColor: this.options.backgroundColor,\r\n fontSize: this.options.fontSize,\r\n fontWeight: this.options.fontWeight,\r\n borderRadius: this.options.borderRadius,\r\n borderColor: this.options.borderColor,\r\n margin: this.options.margin\r\n });\r\n }\r\n\r\n bindSearchEvents() {\r\n\r\n this.$searchWrappers.each(function () {\r\n\r\n const $searchInput = $(this).find('input').first();\r\n $searchInput.on('keyup', () => {\r\n\r\n const $linksInDropMenu = $searchInput.closest('div[id]').find('a, li');\r\n $linksInDropMenu.each(function () {\r\n\r\n const $this = $(this);\r\n if ($this.html().toLowerCase().indexOf($searchInput.val().toLowerCase()) > -1) {\r\n\r\n $this.css({\r\n display: ''\r\n });\r\n } else {\r\n\r\n $this.css({\r\n display: 'none'\r\n });\r\n }\r\n });\r\n });\r\n });\r\n }\r\n\r\n fallback() {\r\n\r\n return {\r\n _value: undefined,\r\n or(value) {\r\n if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\r\n this._value = value;\r\n }\r\n return this;\r\n },\r\n value() {\r\n return this._value;\r\n }\r\n };\r\n }\r\n }\r\n\r\n $.fn.mdbDropSearch = function (options) {\r\n\r\n const dropdownSearchable = new DropdownSearchable(this, options);\r\n return dropdownSearchable.init();\r\n };\r\n});\r\n","import MaterialSelectView from './material-select-view';\r\n\r\njQuery(($) => {\r\n\r\n class MaterialSelect {\r\n\r\n constructor($nativeSelect, options = {}) {\r\n\r\n this.options = {\r\n destroy: this.fallback().or(options.destroy).or(false).value(),\r\n validate: this.fallback().or($nativeSelect.attr('data-validate')).or(options.validate).or(false).value(),\r\n selectId: this.fallback().or($nativeSelect.attr('data-select-id')).or(options.selectId).or(null).value(),\r\n defaultMaterialInput: this.fallback().or($nativeSelect.attr('data-default-material-input')).or(options.defaultMaterialInput).or(false).value(),\r\n fasClasses: this.fallback().or($nativeSelect.attr('data-fas-classes')).or(options.fasClasses).or('').value(),\r\n farClasses: this.fallback().or($nativeSelect.attr('data-far-classes')).or(options.farClasses).or('').value(),\r\n fabClasses: this.fallback().or($nativeSelect.attr('data-fab-classes')).or(options.fabClasses).or('').value(),\r\n copyClassesOption: this.fallback().or($nativeSelect.attr('data-copy-classes-option')).or(options.copyClassesOption).or(false).value(),\r\n labels: {\r\n selectAll: this.fallback().or($nativeSelect.attr('data-label-select-all')).or((options.labels || {}).selectAll).or('Select all').value(),\r\n optionsSelected: this.fallback().or($nativeSelect.attr('data-label-options-selected')).or((options.labels || {}).optionsSelected).or('options selected').value(),\r\n validFeedback: this.fallback().or($nativeSelect.attr('data-label-valid-feedback')).or((options.labels || {}).validFeedback).or('Ok').value(),\r\n invalidFeedback: this.fallback().or($nativeSelect.attr('data-label-invalid-feedback')).or((options.labels || {}).invalidFeedback).or('Incorrect value').value(),\r\n noSearchResults: this.fallback().or($nativeSelect.attr('data-label-no-search-results')).or((options.labels || {}).noSearchResults).or('No results').value()\r\n },\r\n keyboardActiveClass: this.fallback().or($nativeSelect.attr('data-keyboard-active-class')).or(options.keyboardActiveClass).or('heavy-rain-gradient').value(),\r\n placeholder: this.fallback().or($nativeSelect.attr('data-placeholder')).or(options.placeholder).or(null).value(),\r\n visibleOptions: this.fallback().or($nativeSelect.attr('data-visible-options')).or(options.visibleOptions).or(5).value(),\r\n maxSelectedOptions: this.fallback().or($nativeSelect.attr('data-max-selected-options')).or(options.maxSelectedOptions).or(5).value(),\r\n showResetButton: this.fallback().or($nativeSelect.attr('data-show-reset-button')).or(options.showResetButton).or(false).value()\r\n };\r\n\r\n this.uuid = $nativeSelect.attr('id') || this.options.selectId || this._randomUUID();\r\n\r\n // eslint-disable-next-line no-undef\r\n this.view = new MaterialSelectView(\r\n $nativeSelect,\r\n {\r\n options: this.options,\r\n properties: {\r\n id: this.uuid\r\n }\r\n }\r\n );\r\n\r\n this.selectedOptionsIndexes = []; // jQuery indexes; `.eq()` is operating on these\r\n\r\n MaterialSelect.mutationObservers = [];\r\n }\r\n\r\n get isInitialized() {\r\n\r\n return Boolean(this.view.$nativeSelect.data('select-id')) && this.view.$nativeSelect.hasClass('initialized');\r\n }\r\n\r\n static clearMutationObservers() {\r\n\r\n MaterialSelect.mutationObservers.forEach((observer) => {\r\n\r\n observer.disconnect();\r\n observer.customStatus = 'stopped';\r\n });\r\n }\r\n\r\n static mdbSelectAutoInit() {\r\n\r\n $('.mdb-select.mdb-select-autoinit').materialSelect();\r\n }\r\n\r\n init() {\r\n\r\n if (this.options.destroy) {\r\n\r\n this.view.destroy();\r\n return;\r\n }\r\n\r\n if (this.isInitialized) {\r\n\r\n this.view.destroy();\r\n }\r\n\r\n this.view.render();\r\n this.view.selectPreselectedOptions((optionIndex) => this._toggleSelectedValue(optionIndex));\r\n\r\n this.bindEvents();\r\n }\r\n\r\n bindEvents() {\r\n\r\n this.bindMutationObserverChange();\r\n\r\n if (this.view.isEditable && this.view.isSearchable) {\r\n\r\n this.view.bindResetButtonClick(() => this._resetSelection());\r\n }\r\n\r\n this.view.bindAddNewOptionClick();\r\n this.view.bindMaterialSelectFocus();\r\n this.view.bindMaterialSelectClick();\r\n this.view.bindMaterialSelectBlur();\r\n this.view.bindMaterialOptionsListTouchstart();\r\n this.view.bindMaterialSelectKeydown();\r\n this.view.bindMaterialSelectDropdownToggle();\r\n this.view.bindToggleAllClick((materialOptionIndex) => this._toggleSelectedValue(materialOptionIndex));\r\n this.view.bindMaterialOptionMousedown();\r\n this.view.bindMaterialOptionClick((optionIndex) => this._toggleSelectedValue(optionIndex));\r\n\r\n if (!this.view.isMultiple && this.view.isSearchable) {\r\n\r\n this.view.bindSingleMaterialOptionClick();\r\n }\r\n\r\n if (this.view.isSearchable) {\r\n\r\n this.view.bindSearchInputKeyup();\r\n }\r\n\r\n this.view.bindHtmlClick();\r\n this.view.bindMobileDevicesMousedown();\r\n this.view.bindSaveBtnClick(); // @Depreciated\r\n }\r\n\r\n bindMutationObserverChange() {\r\n\r\n const config = {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n };\r\n const observer = new MutationObserver(this._onMutationObserverChange.bind(this));\r\n observer.observe(this.view.$nativeSelect.get(0), config);\r\n observer.customId = this.uuid;\r\n observer.customStatus = 'observing';\r\n\r\n MaterialSelect.clearMutationObservers();\r\n MaterialSelect.mutationObservers.push(observer);\r\n }\r\n\r\n _onMutationObserverChange(mutationsList) {\r\n\r\n mutationsList.forEach((mutation) => {\r\n\r\n const $select = $(mutation.target).closest('select');\r\n if ($select.data('stop-refresh') !== true && (mutation.type === 'childList' || mutation.type === 'attributes' && $(mutation.target).is('option'))) {\r\n\r\n // eslint-disable-next-line object-curly-newline\r\n $select.materialSelect({ destroy: true });\r\n $select.materialSelect();\r\n }\r\n });\r\n }\r\n\r\n _resetSelection() {\r\n\r\n this.selectedOptionsIndexes = [];\r\n this.view.$nativeSelect.find('option').prop('selected', false);\r\n }\r\n\r\n _toggleSelectedValue(optionIndex) {\r\n\r\n const selectedValueIndex = this.selectedOptionsIndexes.indexOf(optionIndex);\r\n const isSelected = selectedValueIndex !== -1;\r\n\r\n if (!isSelected) {\r\n\r\n this.selectedOptionsIndexes.push(optionIndex);\r\n } else {\r\n\r\n this.selectedOptionsIndexes.splice(selectedValueIndex, 1);\r\n }\r\n\r\n this.view.$nativeSelect.find('option').eq(optionIndex).prop('selected', !isSelected);\r\n\r\n this._setValueToMaterialSelect();\r\n\r\n return !isSelected;\r\n }\r\n\r\n _setValueToMaterialSelect() {\r\n\r\n let value = '';\r\n const selectedValuesCount = this.selectedOptionsIndexes.length;\r\n\r\n this.selectedOptionsIndexes.forEach((index) => value += `, ${this.view.$nativeSelect.find('option').eq(index).text().replace(/ +/g, ' ').trim()}`);\r\n\r\n if (this.options.maxSelectedOptions >= 0 && selectedValuesCount > this.options.maxSelectedOptions) {\r\n value = `${selectedValuesCount} ${this.options.labels.optionsSelected}`;\r\n } else {\r\n value = value.substring(2);\r\n }\r\n\r\n if (value.length === 0) {\r\n value = this.view.$nativeSelect.find('option:disabled').eq(0).text();\r\n }\r\n\r\n this.view.$nativeSelect.siblings(`${this.options.defaultMaterialInput ? 'input.multi-bs-select' : 'input.select-dropdown'}`).val(value);\r\n }\r\n\r\n _randomUUID() {\r\n\r\n let d = new Date().getTime();\r\n\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\r\n\r\n // eslint-disable-next-line no-bitwise\r\n const r = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n // eslint-disable-next-line no-bitwise\r\n return (c === 'x' ? r : r & 0x3 | 0x8).toString(16);\r\n });\r\n }\r\n\r\n fallback() {\r\n\r\n return {\r\n _value: undefined,\r\n or(value) {\r\n if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\r\n this._value = value;\r\n }\r\n return this;\r\n },\r\n value() {\r\n return this._value;\r\n }\r\n };\r\n }\r\n }\r\n\r\n $.fn.materialSelect = function (options) {\r\n\r\n $(this).not('.browser-default').not('.custom-select').each(function () {\r\n\r\n const materialSelect = new MaterialSelect($(this), options);\r\n materialSelect.init();\r\n });\r\n };\r\n\r\n (function (originalVal) {\r\n\r\n $.fn.val = function (value) {\r\n\r\n if (!arguments.length) {\r\n\r\n return originalVal.call(this);\r\n }\r\n\r\n if (this.data('stop-refresh') !== true && this.hasClass('mdb-select') && this.hasClass('initialized')) {\r\n\r\n MaterialSelect.clearMutationObservers();\r\n\r\n this.materialSelect({\r\n destroy: true\r\n });\r\n\r\n const ret = originalVal.call(this, value);\r\n this.materialSelect();\r\n\r\n return ret;\r\n }\r\n\r\n return originalVal.call(this, value);\r\n };\r\n }($.fn.val));\r\n\r\n MaterialSelect.mdbSelectAutoInit();\r\n});\r\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: sloppyArrayMethod('reduce') }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","/*\r\n Enhanced Bootstrap Modals\r\n https://mdbootstrap.com\r\n office@mdbootstrap.com\r\n*/\r\n\r\n(function($){\r\n $('body').on('shown.bs.modal', '.modal', function() {\r\n if(!$('.modal-backdrop').length) {\r\n\r\n $modal_dialog = $(this).children('.modal-dialog')\r\n\r\n if($modal_dialog.hasClass('modal-side')) {\r\n $(this).addClass('modal-scrolling');\r\n $('body').addClass('scrollable');\r\n }\r\n\r\n if($modal_dialog.hasClass('modal-frame')) {\r\n $(this).addClass('modal-content-clickable');\r\n $('body').addClass('scrollable');\r\n }\r\n }\r\n });\r\n $('body').on('hidden.bs.modal', '.modal', function() {\r\n $('body').removeClass('scrollable');\r\n });\r\n})(jQuery);\r\n","/*\r\n * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/\r\n *\r\n * Uses the built in easing capabilities added In jQuery 1.1\r\n * to offer multiple easing options\r\n *\r\n * TERMS OF USE - jQuery Easing\r\n *\r\n * Open source under the BSD License.\r\n *\r\n * Copyright © 2008 George McGinley Smith\r\n * All rights reserved.\r\n *\r\n * Redistribution and use in source and binary forms, with or without modification,\r\n * are permitted provided that the following conditions are met:\r\n *\r\n * Redistributions of source code must retain the above copyright notice, this list of\r\n * conditions and the following disclaimer.\r\n * Redistributions in binary form must reproduce the above copyright notice, this list\r\n * of conditions and the following disclaimer in the documentation and/or other materials\r\n * provided with the distribution.\r\n *\r\n * Neither the name of the author nor the names of contributors may be used to endorse\r\n * or promote products derived from this software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\r\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r\n * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\r\n * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\r\n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\r\n * OF THE POSSIBILITY OF SUCH DAMAGE.\r\n *\r\n*/\r\n\r\n// t: current time, b: begInnIng value, c: change In value, d: duration\r\njQuery.easing['jswing'] = jQuery.easing['swing'];\r\n\r\njQuery.extend( jQuery.easing,\r\n{\r\n def: 'easeOutQuad',\r\n swing: function (x, t, b, c, d) {\r\n //alert(jQuery.easing.default);\r\n return jQuery.easing[jQuery.easing.def](x, t, b, c, d);\r\n },\r\n easeInQuad: function (x, t, b, c, d) {\r\n return c*(t/=d)*t + b;\r\n },\r\n easeOutQuad: function (x, t, b, c, d) {\r\n return -c *(t/=d)*(t-2) + b;\r\n },\r\n easeInOutQuad: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t + b;\r\n return -c/2 * ((--t)*(t-2) - 1) + b;\r\n },\r\n easeInCubic: function (x, t, b, c, d) {\r\n return c*(t/=d)*t*t + b;\r\n },\r\n easeOutCubic: function (x, t, b, c, d) {\r\n return c*((t=t/d-1)*t*t + 1) + b;\r\n },\r\n easeInOutCubic: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t*t + b;\r\n return c/2*((t-=2)*t*t + 2) + b;\r\n },\r\n easeInQuart: function (x, t, b, c, d) {\r\n return c*(t/=d)*t*t*t + b;\r\n },\r\n easeOutQuart: function (x, t, b, c, d) {\r\n return -c * ((t=t/d-1)*t*t*t - 1) + b;\r\n },\r\n easeInOutQuart: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t*t*t + b;\r\n return -c/2 * ((t-=2)*t*t*t - 2) + b;\r\n },\r\n easeInQuint: function (x, t, b, c, d) {\r\n return c*(t/=d)*t*t*t*t + b;\r\n },\r\n easeOutQuint: function (x, t, b, c, d) {\r\n return c*((t=t/d-1)*t*t*t*t + 1) + b;\r\n },\r\n easeInOutQuint: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;\r\n return c/2*((t-=2)*t*t*t*t + 2) + b;\r\n },\r\n easeInSine: function (x, t, b, c, d) {\r\n return -c * Math.cos(t/d * (Math.PI/2)) + c + b;\r\n },\r\n easeOutSine: function (x, t, b, c, d) {\r\n return c * Math.sin(t/d * (Math.PI/2)) + b;\r\n },\r\n easeInOutSine: function (x, t, b, c, d) {\r\n return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;\r\n },\r\n easeInExpo: function (x, t, b, c, d) {\r\n return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;\r\n },\r\n easeOutExpo: function (x, t, b, c, d) {\r\n return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;\r\n },\r\n easeInOutExpo: function (x, t, b, c, d) {\r\n if (t==0) return b;\r\n if (t==d) return b+c;\r\n if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;\r\n return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;\r\n },\r\n easeInCirc: function (x, t, b, c, d) {\r\n return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;\r\n },\r\n easeOutCirc: function (x, t, b, c, d) {\r\n return c * Math.sqrt(1 - (t=t/d-1)*t) + b;\r\n },\r\n easeInOutCirc: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;\r\n return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;\r\n },\r\n easeInElastic: function (x, t, b, c, d) {\r\n var s=1.70158;var p=0;var a=c;\r\n if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;\r\n if (a < Math.abs(c)) { a=c; var s=p/4; }\r\n else var s = p/(2*Math.PI) * Math.asin (c/a);\r\n return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\r\n },\r\n easeOutElastic: function (x, t, b, c, d) {\r\n var s=1.70158;var p=0;var a=c;\r\n if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;\r\n if (a < Math.abs(c)) { a=c; var s=p/4; }\r\n else var s = p/(2*Math.PI) * Math.asin (c/a);\r\n return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;\r\n },\r\n easeInOutElastic: function (x, t, b, c, d) {\r\n var s=1.70158;var p=0;var a=c;\r\n if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);\r\n if (a < Math.abs(c)) { a=c; var s=p/4; }\r\n else var s = p/(2*Math.PI) * Math.asin (c/a);\r\n if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\r\n return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;\r\n },\r\n easeInBack: function (x, t, b, c, d, s) {\r\n if (s == undefined) s = 1.70158;\r\n return c*(t/=d)*t*((s+1)*t - s) + b;\r\n },\r\n easeOutBack: function (x, t, b, c, d, s) {\r\n if (s == undefined) s = 1.70158;\r\n return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;\r\n },\r\n easeInOutBack: function (x, t, b, c, d, s) {\r\n if (s == undefined) s = 1.70158;\r\n if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;\r\n return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;\r\n },\r\n easeInBounce: function (x, t, b, c, d) {\r\n return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;\r\n },\r\n easeOutBounce: function (x, t, b, c, d) {\r\n if ((t/=d) < (1/2.75)) {\r\n return c*(7.5625*t*t) + b;\r\n } else if (t < (2/2.75)) {\r\n return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;\r\n } else if (t < (2.5/2.75)) {\r\n return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;\r\n } else {\r\n return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;\r\n }\r\n },\r\n easeInOutBounce: function (x, t, b, c, d) {\r\n if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;\r\n return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;\r\n }\r\n});\r\n\r\n/*\r\n *\r\n * TERMS OF USE - EASING EQUATIONS\r\n *\r\n * Open source under the BSD License.\r\n *\r\n * Copyright © 2001 Robert Penner\r\n * All rights reserved.\r\n *\r\n * Redistribution and use in source and binary forms, with or without modification,\r\n * are permitted provided that the following conditions are met:\r\n *\r\n * Redistributions of source code must retain the above copyright notice, this list of\r\n * conditions and the following disclaimer.\r\n * Redistributions in binary form must reproduce the above copyright notice, this list\r\n * of conditions and the following disclaimer in the documentation and/or other materials\r\n * provided with the distribution.\r\n *\r\n * Neither the name of the author nor the names of contributors may be used to endorse\r\n * or promote products derived from this software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\r\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r\n * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\r\n * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\r\n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\r\n * OF THE POSSIBILITY OF SUCH DAMAGE.\r\n *\r\n */","/*! VelocityJS.org (1.2.3). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */\r\n/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */\r\n/*! Note that this has been modified by Materialize to confirm that Velocity is not already being imported. */\r\njQuery.Velocity?console.log(\"Velocity is already loaded. You may be needlessly importing Velocity again; note that Materialize includes Velocity.\"):(!function(e){function t(e){var t=e.length,a=r.type(e);return\"function\"===a||r.isWindow(e)?!1:1===e.nodeType&&t?!0:\"array\"===a||0===t||\"number\"==typeof t&&t>0&&t-1 in e}if(!e.jQuery){var r=function(e,t){return new r.fn.init(e,t)};r.isWindow=function(e){return null!=e&&e==e.window},r.type=function(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?n[i.call(e)]||\"object\":typeof e},r.isArray=Array.isArray||function(e){return\"array\"===r.type(e)},r.isPlainObject=function(e){var t;if(!e||\"object\"!==r.type(e)||e.nodeType||r.isWindow(e))return!1;try{if(e.constructor&&!o.call(e,\"constructor\")&&!o.call(e.constructor.prototype,\"isPrototypeOf\"))return!1}catch(a){return!1}for(t in e);return void 0===t||o.call(e,t)},r.each=function(e,r,a){var n,o=0,i=e.length,s=t(e);if(a){if(s)for(;i>o&&(n=r.apply(e[o],a),n!==!1);o++);else for(o in e)if(n=r.apply(e[o],a),n===!1)break}else if(s)for(;i>o&&(n=r.call(e[o],o,e[o]),n!==!1);o++);else for(o in e)if(n=r.call(e[o],o,e[o]),n===!1)break;return e},r.data=function(e,t,n){if(void 0===n){var o=e[r.expando],i=o&&a[o];if(void 0===t)return i;if(i&&t in i)return i[t]}else if(void 0!==t){var o=e[r.expando]||(e[r.expando]=++r.uuid);return a[o]=a[o]||{},a[o][t]=n,n}},r.removeData=function(e,t){var n=e[r.expando],o=n&&a[n];o&&r.each(t,function(e,t){delete o[t]})},r.extend=function(){var e,t,a,n,o,i,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for(\"boolean\"==typeof s&&(c=s,s=arguments[l]||{},l++),\"object\"!=typeof s&&\"function\"!==r.type(s)&&(s={}),l===u&&(s=this,l--);u>l;l++)if(null!=(o=arguments[l]))for(n in o)e=s[n],a=o[n],s!==a&&(c&&a&&(r.isPlainObject(a)||(t=r.isArray(a)))?(t?(t=!1,i=e&&r.isArray(e)?e:[]):i=e&&r.isPlainObject(e)?e:{},s[n]=r.extend(c,i,a)):void 0!==a&&(s[n]=a));return s},r.queue=function(e,a,n){function o(e,r){var a=r||[];return null!=e&&(t(Object(e))?!function(e,t){for(var r=+t.length,a=0,n=e.length;r>a;)e[n++]=t[a++];if(r!==r)for(;void 0!==t[a];)e[n++]=t[a++];return e.length=n,e}(a,\"string\"==typeof e?[e]:e):[].push.call(a,e)),a}if(e){a=(a||\"fx\")+\"queue\";var i=r.data(e,a);return n?(!i||r.isArray(n)?i=r.data(e,a,o(n)):i.push(n),i):i||[]}},r.dequeue=function(e,t){r.each(e.nodeType?[e]:e,function(e,a){t=t||\"fx\";var n=r.queue(a,t),o=n.shift();\"inprogress\"===o&&(o=n.shift()),o&&(\"fx\"===t&&n.unshift(\"inprogress\"),o.call(a,function(){r.dequeue(a,t)}))})},r.fn=r.prototype={init:function(e){if(e.nodeType)return this[0]=e,this;throw new Error(\"Not a DOM node.\")},offset:function(){var t=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:t.top+(e.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:t.left+(e.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function e(){for(var e=this.offsetParent||document;e&&\"html\"===!e.nodeType.toLowerCase&&\"static\"===e.style.position;)e=e.offsetParent;return e||document}var t=this[0],e=e.apply(t),a=this.offset(),n=/^(?:body|html)$/i.test(e.nodeName)?{top:0,left:0}:r(e).offset();return a.top-=parseFloat(t.style.marginTop)||0,a.left-=parseFloat(t.style.marginLeft)||0,e.style&&(n.top+=parseFloat(e.style.borderTopWidth)||0,n.left+=parseFloat(e.style.borderLeftWidth)||0),{top:a.top-n.top,left:a.left-n.left}}};var a={};r.expando=\"velocity\"+(new Date).getTime(),r.uuid=0;for(var n={},o=n.hasOwnProperty,i=n.toString,s=\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"),l=0;ln;++n){var o=u(r,e,a);if(0===o)return r;var i=l(r,e,a)-t;r-=i/o}return r}function p(){for(var t=0;b>t;++t)w[t]=l(t*x,e,a)}function f(t,r,n){var o,i,s=0;do i=r+(n-r)/2,o=l(i,e,a)-t,o>0?n=i:r=i;while(Math.abs(o)>h&&++s=y?c(t,s):0==l?s:f(t,r,r+x)}function g(){V=!0,(e!=r||a!=n)&&p()}var m=4,y=.001,h=1e-7,v=10,b=11,x=1/(b-1),S=\"Float32Array\"in t;if(4!==arguments.length)return!1;for(var P=0;4>P;++P)if(\"number\"!=typeof arguments[P]||isNaN(arguments[P])||!isFinite(arguments[P]))return!1;e=Math.min(e,1),a=Math.min(a,1),e=Math.max(e,0),a=Math.max(a,0);var w=S?new Float32Array(b):new Array(b),V=!1,C=function(t){return V||g(),e===r&&a===n?t:0===t?0:1===t?1:l(d(t),r,n)};C.getControlPoints=function(){return[{x:e,y:r},{x:a,y:n}]};var T=\"generateBezier(\"+[e,r,a,n]+\")\";return C.toString=function(){return T},C}function u(e,t){var r=e;return m.isString(e)?b.Easings[e]||(r=!1):r=m.isArray(e)&&1===e.length?s.apply(null,e):m.isArray(e)&&2===e.length?x.apply(null,e.concat([t])):m.isArray(e)&&4===e.length?l.apply(null,e):!1,r===!1&&(r=b.Easings[b.defaults.easing]?b.defaults.easing:v),r}function c(e){if(e){var t=(new Date).getTime(),r=b.State.calls.length;r>1e4&&(b.State.calls=n(b.State.calls));for(var o=0;r>o;o++)if(b.State.calls[o]){var s=b.State.calls[o],l=s[0],u=s[2],d=s[3],g=!!d,y=null;d||(d=b.State.calls[o][3]=t-16);for(var h=Math.min((t-d)/u.duration,1),v=0,x=l.length;x>v;v++){var P=l[v],V=P.element;if(i(V)){var C=!1;if(u.display!==a&&null!==u.display&&\"none\"!==u.display){if(\"flex\"===u.display){var T=[\"-webkit-box\",\"-moz-box\",\"-ms-flexbox\",\"-webkit-flex\"];f.each(T,function(e,t){S.setPropertyValue(V,\"display\",t)})}S.setPropertyValue(V,\"display\",u.display)}u.visibility!==a&&\"hidden\"!==u.visibility&&S.setPropertyValue(V,\"visibility\",u.visibility);for(var k in P)if(\"element\"!==k){var A,F=P[k],j=m.isString(F.easing)?b.Easings[F.easing]:F.easing;if(1===h)A=F.endValue;else{var E=F.endValue-F.startValue;if(A=F.startValue+E*j(h,u,E),!g&&A===F.currentValue)continue}if(F.currentValue=A,\"tween\"===k)y=A;else{if(S.Hooks.registered[k]){var H=S.Hooks.getRoot(k),N=i(V).rootPropertyValueCache[H];N&&(F.rootPropertyValue=N)}var L=S.setPropertyValue(V,k,F.currentValue+(0===parseFloat(A)?\"\":F.unitType),F.rootPropertyValue,F.scrollData);S.Hooks.registered[k]&&(i(V).rootPropertyValueCache[H]=S.Normalizations.registered[H]?S.Normalizations.registered[H](\"extract\",null,L[1]):L[1]),\"transform\"===L[0]&&(C=!0)}}u.mobileHA&&i(V).transformCache.translate3d===a&&(i(V).transformCache.translate3d=\"(0px, 0px, 0px)\",C=!0),C&&S.flushTransformCache(V)}}u.display!==a&&\"none\"!==u.display&&(b.State.calls[o][2].display=!1),u.visibility!==a&&\"hidden\"!==u.visibility&&(b.State.calls[o][2].visibility=!1),u.progress&&u.progress.call(s[1],s[1],h,Math.max(0,d+u.duration-t),d,y),1===h&&p(o)}}b.State.isTicking&&w(c)}function p(e,t){if(!b.State.calls[e])return!1;for(var r=b.State.calls[e][0],n=b.State.calls[e][1],o=b.State.calls[e][2],s=b.State.calls[e][4],l=!1,u=0,c=r.length;c>u;u++){var p=r[u].element;if(t||o.loop||(\"none\"===o.display&&S.setPropertyValue(p,\"display\",o.display),\"hidden\"===o.visibility&&S.setPropertyValue(p,\"visibility\",o.visibility)),o.loop!==!0&&(f.queue(p)[1]===a||!/\\.velocityQueueEntryFlag/i.test(f.queue(p)[1]))&&i(p)){i(p).isAnimating=!1,i(p).rootPropertyValueCache={};var d=!1;f.each(S.Lists.transforms3D,function(e,t){var r=/^scale/.test(t)?1:0,n=i(p).transformCache[t];i(p).transformCache[t]!==a&&new RegExp(\"^\\\\(\"+r+\"[^.]\").test(n)&&(d=!0,delete i(p).transformCache[t])}),o.mobileHA&&(d=!0,delete i(p).transformCache.translate3d),d&&S.flushTransformCache(p),S.Values.removeClass(p,\"velocity-animating\")}if(!t&&o.complete&&!o.loop&&u===c-1)try{o.complete.call(n,n)}catch(g){setTimeout(function(){throw g},1)}s&&o.loop!==!0&&s(n),i(p)&&o.loop===!0&&!t&&(f.each(i(p).tweensContainer,function(e,t){/^rotate/.test(e)&&360===parseFloat(t.endValue)&&(t.endValue=0,t.startValue=360),/^backgroundPosition/.test(e)&&100===parseFloat(t.endValue)&&\"%\"===t.unitType&&(t.endValue=0,t.startValue=100)}),b(p,\"reverse\",{loop:!0,delay:o.delay})),o.queue!==!1&&f.dequeue(p,o.queue)}b.State.calls[e]=!1;for(var m=0,y=b.State.calls.length;y>m;m++)if(b.State.calls[m]!==!1){l=!0;break}l===!1&&(b.State.isTicking=!1,delete b.State.calls,b.State.calls=[])}var f,d=function(){if(r.documentMode)return r.documentMode;for(var e=7;e>4;e--){var t=r.createElement(\"div\");if(t.innerHTML=\"\",t.getElementsByTagName(\"span\").length)return t=null,e}return a}(),g=function(){var e=0;return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||function(t){var r,a=(new Date).getTime();return r=Math.max(0,16-(a-e)),e=a+r,setTimeout(function(){t(a+r)},r)}}(),m={isString:function(e){return\"string\"==typeof e},isArray:Array.isArray||function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},isFunction:function(e){return\"[object Function]\"===Object.prototype.toString.call(e)},isNode:function(e){return e&&e.nodeType},isNodeList:function(e){return\"object\"==typeof e&&/^\\[object (HTMLCollection|NodeList|Object)\\]$/.test(Object.prototype.toString.call(e))&&e.length!==a&&(0===e.length||\"object\"==typeof e[0]&&e[0].nodeType>0)},isWrapped:function(e){return e&&(e.jquery||t.Zepto&&t.Zepto.zepto.isZ(e))},isSVG:function(e){return t.SVGElement&&e instanceof t.SVGElement},isEmptyObject:function(e){for(var t in e)return!1;return!0}},y=!1;if(e.fn&&e.fn.jquery?(f=e,y=!0):f=t.Velocity.Utilities,8>=d&&!y)throw new Error(\"Velocity: IE8 and below require jQuery to be loaded before Velocity.\");if(7>=d)return void(jQuery.fn.velocity=jQuery.fn.animate);var h=400,v=\"swing\",b={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\\.3\\.[3-7]/i.test(navigator.userAgent),isChrome:t.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:r.createElement(\"div\"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:f,Redirects:{},Easings:{},Promise:t.Promise,defaults:{queue:\"\",duration:h,easing:v,begin:a,complete:a,progress:a,display:a,visibility:a,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(e){f.data(e,\"velocity\",{isSVG:m.isSVG(e),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};t.pageYOffset!==a?(b.State.scrollAnchor=t,b.State.scrollPropertyLeft=\"pageXOffset\",b.State.scrollPropertyTop=\"pageYOffset\"):(b.State.scrollAnchor=r.documentElement||r.body.parentNode||r.body,b.State.scrollPropertyLeft=\"scrollLeft\",b.State.scrollPropertyTop=\"scrollTop\");var x=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,r,a){var n={x:t.x+a.dx*r,v:t.v+a.dv*r,tension:t.tension,friction:t.friction};return{dx:n.v,dv:e(n)}}function r(r,a){var n={dx:r.v,dv:e(r)},o=t(r,.5*a,n),i=t(r,.5*a,o),s=t(r,a,i),l=1/6*(n.dx+2*(o.dx+i.dx)+s.dx),u=1/6*(n.dv+2*(o.dv+i.dv)+s.dv);return r.x=r.x+l*a,r.v=r.v+u*a,r}return function a(e,t,n){var o,i,s,l={x:-1,v:0,tension:null,friction:null},u=[0],c=0,p=1e-4,f=.016;for(e=parseFloat(e)||500,t=parseFloat(t)||20,n=n||null,l.tension=e,l.friction=t,o=null!==n,o?(c=a(e,t),i=c/n*f):i=f;s=r(s||l,i),u.push(1+s.x),c+=16,Math.abs(s.x)>p&&Math.abs(s.v)>p;);return o?function(e){return u[e*(u.length-1)|0]}:c}}();b.Easings={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},spring:function(e){return 1-Math.cos(4.5*e*Math.PI)*Math.exp(6*-e)}},f.each([[\"ease\",[.25,.1,.25,1]],[\"ease-in\",[.42,0,1,1]],[\"ease-out\",[0,0,.58,1]],[\"ease-in-out\",[.42,0,.58,1]],[\"easeInSine\",[.47,0,.745,.715]],[\"easeOutSine\",[.39,.575,.565,1]],[\"easeInOutSine\",[.445,.05,.55,.95]],[\"easeInQuad\",[.55,.085,.68,.53]],[\"easeOutQuad\",[.25,.46,.45,.94]],[\"easeInOutQuad\",[.455,.03,.515,.955]],[\"easeInCubic\",[.55,.055,.675,.19]],[\"easeOutCubic\",[.215,.61,.355,1]],[\"easeInOutCubic\",[.645,.045,.355,1]],[\"easeInQuart\",[.895,.03,.685,.22]],[\"easeOutQuart\",[.165,.84,.44,1]],[\"easeInOutQuart\",[.77,0,.175,1]],[\"easeInQuint\",[.755,.05,.855,.06]],[\"easeOutQuint\",[.23,1,.32,1]],[\"easeInOutQuint\",[.86,0,.07,1]],[\"easeInExpo\",[.95,.05,.795,.035]],[\"easeOutExpo\",[.19,1,.22,1]],[\"easeInOutExpo\",[1,0,0,1]],[\"easeInCirc\",[.6,.04,.98,.335]],[\"easeOutCirc\",[.075,.82,.165,1]],[\"easeInOutCirc\",[.785,.135,.15,.86]]],function(e,t){b.Easings[t[0]]=l.apply(null,t[1])});var S=b.CSS={RegEx:{isHex:/^#([A-f\\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\\((.*)\\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\\(.+\\))|(([A-z0-9#-.]+?)(?=\\s|$))/gi},Lists:{colors:[\"fill\",\"stroke\",\"stopColor\",\"color\",\"backgroundColor\",\"borderColor\",\"borderTopColor\",\"borderRightColor\",\"borderBottomColor\",\"borderLeftColor\",\"outlineColor\"],transformsBase:[\"translateX\",\"translateY\",\"scale\",\"scaleX\",\"scaleY\",\"skewX\",\"skewY\",\"rotateZ\"],transforms3D:[\"transformPerspective\",\"translateZ\",\"scaleZ\",\"rotateX\",\"rotateY\"]},Hooks:{templates:{textShadow:[\"Color X Y Blur\",\"black 0px 0px 0px\"],boxShadow:[\"Color X Y Blur Spread\",\"black 0px 0px 0px 0px\"],clip:[\"Top Right Bottom Left\",\"0px 0px 0px 0px\"],backgroundPosition:[\"X Y\",\"0% 0%\"],transformOrigin:[\"X Y Z\",\"50% 50% 0px\"],perspectiveOrigin:[\"X Y\",\"50% 50%\"]},registered:{},register:function(){for(var e=0;e=d)switch(e){case\"name\":return\"filter\";case\"extract\":var a=r.toString().match(/alpha\\(opacity=(.*)\\)/i);return r=a?a[1]/100:1;case\"inject\":return t.style.zoom=1,parseFloat(r)>=1?\"\":\"alpha(opacity=\"+parseInt(100*parseFloat(r),10)+\")\"}else switch(e){case\"name\":return\"opacity\";case\"extract\":return r;case\"inject\":return r}}},register:function(){9>=d||b.State.isGingerbread||(S.Lists.transformsBase=S.Lists.transformsBase.concat(S.Lists.transforms3D));for(var e=0;en&&(n=1),o=!/(\\d)$/i.test(n);break;case\"skew\":o=!/(deg|\\d)$/i.test(n);break;case\"rotate\":o=!/(deg|\\d)$/i.test(n)}return o||(i(r).transformCache[t]=\"(\"+n+\")\"),i(r).transformCache[t]}}}();for(var e=0;e=d||3!==o.split(\" \").length||(o+=\" 1\"),o;case\"inject\":return 8>=d?4===n.split(\" \").length&&(n=n.split(/\\s+/).slice(0,3).join(\" \")):3===n.split(\" \").length&&(n+=\" 1\"),(8>=d?\"rgb\":\"rgba\")+\"(\"+n.replace(/\\s+/g,\",\").replace(/\\.(\\d)+(?=,)/g,\"\")+\")\"}}}()}},Names:{camelCase:function(e){return e.replace(/-(\\w)/g,function(e,t){return t.toUpperCase()})},SVGAttribute:function(e){var t=\"width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2\";return(d||b.State.isAndroid&&!b.State.isChrome)&&(t+=\"|transform\"),new RegExp(\"^(\"+t+\")$\",\"i\").test(e)},prefixCheck:function(e){if(b.State.prefixMatches[e])return[b.State.prefixMatches[e],!0];for(var t=[\"\",\"Webkit\",\"Moz\",\"ms\",\"O\"],r=0,a=t.length;a>r;r++){var n;if(n=0===r?e:t[r]+e.replace(/^\\w/,function(e){return e.toUpperCase()}),m.isString(b.State.prefixElement.style[n]))return b.State.prefixMatches[e]=n,[n,!0]}return[e,!1]}},Values:{hexToRgb:function(e){var t,r=/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,a=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i;return e=e.replace(r,function(e,t,r,a){return t+t+r+r+a+a}),t=a.exec(e),t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:[0,0,0]},isCSSNullValue:function(e){return 0==e||/^(none|auto|transparent|(rgba\\(0, ?0, ?0, ?0\\)))$/i.test(e)},getUnitType:function(e){return/^(rotate|skew)/i.test(e)?\"deg\":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(e)?\"\":\"px\"},getDisplayType:function(e){var t=e&&e.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t)?\"inline\":/^(li)$/i.test(t)?\"list-item\":/^(tr)$/i.test(t)?\"table-row\":/^(table)$/i.test(t)?\"table\":/^(tbody)$/i.test(t)?\"table-row-group\":\"block\"},addClass:function(e,t){e.classList?e.classList.add(t):e.className+=(e.className.length?\" \":\"\")+t},removeClass:function(e,t){e.classList?e.classList.remove(t):e.className=e.className.toString().replace(new RegExp(\"(^|\\\\s)\"+t.split(\" \").join(\"|\")+\"(\\\\s|$)\",\"gi\"),\" \")}},getPropertyValue:function(e,r,n,o){function s(e,r){function n(){u&&S.setPropertyValue(e,\"display\",\"none\")}var l=0;if(8>=d)l=f.css(e,r);else{var u=!1;if(/^(width|height)$/.test(r)&&0===S.getPropertyValue(e,\"display\")&&(u=!0,S.setPropertyValue(e,\"display\",S.Values.getDisplayType(e))),!o){if(\"height\"===r&&\"border-box\"!==S.getPropertyValue(e,\"boxSizing\").toString().toLowerCase()){var c=e.offsetHeight-(parseFloat(S.getPropertyValue(e,\"borderTopWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"borderBottomWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingTop\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingBottom\"))||0);return n(),c}if(\"width\"===r&&\"border-box\"!==S.getPropertyValue(e,\"boxSizing\").toString().toLowerCase()){var p=e.offsetWidth-(parseFloat(S.getPropertyValue(e,\"borderLeftWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"borderRightWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingLeft\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingRight\"))||0);return n(),p}}var g;g=i(e)===a?t.getComputedStyle(e,null):i(e).computedStyle?i(e).computedStyle:i(e).computedStyle=t.getComputedStyle(e,null),\"borderColor\"===r&&(r=\"borderTopColor\"),l=9===d&&\"filter\"===r?g.getPropertyValue(r):g[r],(\"\"===l||null===l)&&(l=e.style[r]),n()}if(\"auto\"===l&&/^(top|right|bottom|left)$/i.test(r)){var m=s(e,\"position\");(\"fixed\"===m||\"absolute\"===m&&/top|left/i.test(r))&&(l=f(e).position()[r]+\"px\")}return l}var l;if(S.Hooks.registered[r]){var u=r,c=S.Hooks.getRoot(u);n===a&&(n=S.getPropertyValue(e,S.Names.prefixCheck(c)[0])),S.Normalizations.registered[c]&&(n=S.Normalizations.registered[c](\"extract\",e,n)),l=S.Hooks.extractValue(u,n)}else if(S.Normalizations.registered[r]){var p,g;p=S.Normalizations.registered[r](\"name\",e),\"transform\"!==p&&(g=s(e,S.Names.prefixCheck(p)[0]),S.Values.isCSSNullValue(g)&&S.Hooks.templates[r]&&(g=S.Hooks.templates[r][1])),l=S.Normalizations.registered[r](\"extract\",e,g)}if(!/^[\\d-]/.test(l))if(i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r))if(/^(height|width)$/i.test(r))try{l=e.getBBox()[r]}catch(m){l=0}else l=e.getAttribute(r);else l=s(e,S.Names.prefixCheck(r)[0]);return S.Values.isCSSNullValue(l)&&(l=0),b.debug>=2&&console.log(\"Get \"+r+\": \"+l),l},setPropertyValue:function(e,r,a,n,o){var s=r;if(\"scroll\"===r)o.container?o.container[\"scroll\"+o.direction]=a:\"Left\"===o.direction?t.scrollTo(a,o.alternateValue):t.scrollTo(o.alternateValue,a);else if(S.Normalizations.registered[r]&&\"transform\"===S.Normalizations.registered[r](\"name\",e))S.Normalizations.registered[r](\"inject\",e,a),s=\"transform\",a=i(e).transformCache[r];else{if(S.Hooks.registered[r]){var l=r,u=S.Hooks.getRoot(r);n=n||S.getPropertyValue(e,u),a=S.Hooks.injectValue(l,a,n),r=u}if(S.Normalizations.registered[r]&&(a=S.Normalizations.registered[r](\"inject\",e,a),r=S.Normalizations.registered[r](\"name\",e)),s=S.Names.prefixCheck(r)[0],8>=d)try{e.style[s]=a}catch(c){b.debug&&console.log(\"Browser does not support [\"+a+\"] for [\"+s+\"]\")}else i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r)?e.setAttribute(r,a):e.style[s]=a;b.debug>=2&&console.log(\"Set \"+r+\" (\"+s+\"): \"+a)}return[s,a]},flushTransformCache:function(e){function t(t){return parseFloat(S.getPropertyValue(e,t))}var r=\"\";if((d||b.State.isAndroid&&!b.State.isChrome)&&i(e).isSVG){var a={translate:[t(\"translateX\"),t(\"translateY\")],skewX:[t(\"skewX\")],skewY:[t(\"skewY\")],scale:1!==t(\"scale\")?[t(\"scale\"),t(\"scale\")]:[t(\"scaleX\"),t(\"scaleY\")],rotate:[t(\"rotateZ\"),0,0]};f.each(i(e).transformCache,function(e){/^translate/i.test(e)?e=\"translate\":/^scale/i.test(e)?e=\"scale\":/^rotate/i.test(e)&&(e=\"rotate\"),a[e]&&(r+=e+\"(\"+a[e].join(\" \")+\") \",delete a[e])})}else{var n,o;f.each(i(e).transformCache,function(t){return n=i(e).transformCache[t],\"transformPerspective\"===t?(o=n,!0):(9===d&&\"rotateZ\"===t&&(t=\"rotate\"),void(r+=t+n+\" \"))}),o&&(r=\"perspective\"+o+\" \"+r)}S.setPropertyValue(e,\"transform\",r)}};S.Hooks.register(),S.Normalizations.register(),b.hook=function(e,t,r){var n=a;return e=o(e),f.each(e,function(e,o){if(i(o)===a&&b.init(o),r===a)n===a&&(n=b.CSS.getPropertyValue(o,t));else{var s=b.CSS.setPropertyValue(o,t,r);\"transform\"===s[0]&&b.CSS.flushTransformCache(o),n=s}}),n};var P=function(){function e(){return s?k.promise||null:l}function n(){function e(e){function p(e,t){var r=a,n=a,i=a;return m.isArray(e)?(r=e[0],!m.isArray(e[1])&&/^[\\d-]/.test(e[1])||m.isFunction(e[1])||S.RegEx.isHex.test(e[1])?i=e[1]:(m.isString(e[1])&&!S.RegEx.isHex.test(e[1])||m.isArray(e[1]))&&(n=t?e[1]:u(e[1],s.duration),e[2]!==a&&(i=e[2]))):r=e,t||(n=n||s.easing),m.isFunction(r)&&(r=r.call(o,V,w)),m.isFunction(i)&&(i=i.call(o,V,w)),[r||0,n,i]}function d(e,t){var r,a;return a=(t||\"0\").toString().toLowerCase().replace(/[%A-z]+$/,function(e){return r=e,\"\"}),r||(r=S.Values.getUnitType(e)),[a,r]}function h(){var e={myParent:o.parentNode||r.body,position:S.getPropertyValue(o,\"position\"),fontSize:S.getPropertyValue(o,\"fontSize\")},a=e.position===L.lastPosition&&e.myParent===L.lastParent,n=e.fontSize===L.lastFontSize;L.lastParent=e.myParent,L.lastPosition=e.position,L.lastFontSize=e.fontSize;var s=100,l={};if(n&&a)l.emToPx=L.lastEmToPx,l.percentToPxWidth=L.lastPercentToPxWidth,l.percentToPxHeight=L.lastPercentToPxHeight;else{var u=i(o).isSVG?r.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\"):r.createElement(\"div\");b.init(u),e.myParent.appendChild(u),f.each([\"overflow\",\"overflowX\",\"overflowY\"],function(e,t){b.CSS.setPropertyValue(u,t,\"hidden\")}),b.CSS.setPropertyValue(u,\"position\",e.position),b.CSS.setPropertyValue(u,\"fontSize\",e.fontSize),b.CSS.setPropertyValue(u,\"boxSizing\",\"content-box\"),f.each([\"minWidth\",\"maxWidth\",\"width\",\"minHeight\",\"maxHeight\",\"height\"],function(e,t){b.CSS.setPropertyValue(u,t,s+\"%\")}),b.CSS.setPropertyValue(u,\"paddingLeft\",s+\"em\"),l.percentToPxWidth=L.lastPercentToPxWidth=(parseFloat(S.getPropertyValue(u,\"width\",null,!0))||1)/s,l.percentToPxHeight=L.lastPercentToPxHeight=(parseFloat(S.getPropertyValue(u,\"height\",null,!0))||1)/s,l.emToPx=L.lastEmToPx=(parseFloat(S.getPropertyValue(u,\"paddingLeft\"))||1)/s,e.myParent.removeChild(u)}return null===L.remToPx&&(L.remToPx=parseFloat(S.getPropertyValue(r.body,\"fontSize\"))||16),null===L.vwToPx&&(L.vwToPx=parseFloat(t.innerWidth)/100,L.vhToPx=parseFloat(t.innerHeight)/100),l.remToPx=L.remToPx,l.vwToPx=L.vwToPx,l.vhToPx=L.vhToPx,b.debug>=1&&console.log(\"Unit ratios: \"+JSON.stringify(l),o),l}if(s.begin&&0===V)try{s.begin.call(g,g)}catch(x){setTimeout(function(){throw x},1)}if(\"scroll\"===A){var P,C,T,F=/^x$/i.test(s.axis)?\"Left\":\"Top\",j=parseFloat(s.offset)||0;s.container?m.isWrapped(s.container)||m.isNode(s.container)?(s.container=s.container[0]||s.container,P=s.container[\"scroll\"+F],T=P+f(o).position()[F.toLowerCase()]+j):s.container=null:(P=b.State.scrollAnchor[b.State[\"scrollProperty\"+F]],C=b.State.scrollAnchor[b.State[\"scrollProperty\"+(\"Left\"===F?\"Top\":\"Left\")]],T=f(o).offset()[F.toLowerCase()]+j),l={scroll:{rootPropertyValue:!1,startValue:P,currentValue:P,endValue:T,unitType:\"\",easing:s.easing,scrollData:{container:s.container,direction:F,alternateValue:C}},element:o},b.debug&&console.log(\"tweensContainer (scroll): \",l.scroll,o)}else if(\"reverse\"===A){if(!i(o).tweensContainer)return void f.dequeue(o,s.queue);\"none\"===i(o).opts.display&&(i(o).opts.display=\"auto\"),\"hidden\"===i(o).opts.visibility&&(i(o).opts.visibility=\"visible\"),i(o).opts.loop=!1,i(o).opts.begin=null,i(o).opts.complete=null,v.easing||delete s.easing,v.duration||delete s.duration,s=f.extend({},i(o).opts,s);var E=f.extend(!0,{},i(o).tweensContainer);for(var H in E)if(\"element\"!==H){var N=E[H].startValue;E[H].startValue=E[H].currentValue=E[H].endValue,E[H].endValue=N,m.isEmptyObject(v)||(E[H].easing=s.easing),b.debug&&console.log(\"reverse tweensContainer (\"+H+\"): \"+JSON.stringify(E[H]),o)}l=E}else if(\"start\"===A){var E;i(o).tweensContainer&&i(o).isAnimating===!0&&(E=i(o).tweensContainer),f.each(y,function(e,t){if(RegExp(\"^\"+S.Lists.colors.join(\"$|^\")+\"$\").test(e)){var r=p(t,!0),n=r[0],o=r[1],i=r[2];if(S.RegEx.isHex.test(n)){for(var s=[\"Red\",\"Green\",\"Blue\"],l=S.Values.hexToRgb(n),u=i?S.Values.hexToRgb(i):a,c=0;cO;O++){var q={delay:j.delay,progress:j.progress};O===z-1&&(q.display=j.display,q.visibility=j.visibility,q.complete=j.complete),P(g,\"reverse\",q)}return e()}};b=f.extend(P,b),b.animate=P;var w=t.requestAnimationFrame||g;return b.State.isMobile||r.hidden===a||r.addEventListener(\"visibilitychange\",function(){r.hidden?(w=function(e){return setTimeout(function(){e(!0)},16)},c()):w=t.requestAnimationFrame||g}),e.Velocity=b,e!==t&&(e.fn.velocity=P,e.fn.velocity.defaults=b.defaults),f.each([\"Down\",\"Up\"],function(e,t){b.Redirects[\"slide\"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u=l.begin,c=l.complete,p={height:\"\",marginTop:\"\",marginBottom:\"\",paddingTop:\"\",paddingBottom:\"\"},d={};l.display===a&&(l.display=\"Down\"===t?\"inline\"===b.CSS.Values.getDisplayType(e)?\"inline-block\":\"block\":\"none\"),l.begin=function(){u&&u.call(i,i);for(var r in p){d[r]=e.style[r];var a=b.CSS.getPropertyValue(e,r);p[r]=\"Down\"===t?[a,0]:[0,a]}d.overflow=e.style.overflow,e.style.overflow=\"hidden\"},l.complete=function(){for(var t in d)e.style[t]=d[t];c&&c.call(i,i),s&&s.resolver(i)},b(e,p,l)}}),f.each([\"In\",\"Out\"],function(e,t){b.Redirects[\"fade\"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u={opacity:\"In\"===t?1:0},c=l.complete;l.complete=n!==o-1?l.begin=null:function(){c&&c.call(i,i),s&&s.resolver(i)},l.display===a&&(l.display=\"In\"===t?\"auto\":\"none\"),b(this,u,l)}}),b}(window.jQuery||window.Zepto||window,window,document)}));\r\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anObject = require('../internals/an-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar nativeArrayBufferSlice = ArrayBuffer.prototype.slice;\n\nvar INCORRECT_SLICE = fails(function () {\n return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n slice: function slice(start, end) {\n if (nativeArrayBufferSlice !== undefined && end === undefined) {\n return nativeArrayBufferSlice.call(anObject(this), start); // FF fix\n }\n var length = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n var viewSource = new DataView(this);\n var viewTarget = new DataView(result);\n var index = 0;\n while (first < fin) {\n viewTarget.setUint8(index++, viewSource.getUint8(first++));\n } return result;\n }\n});\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var typedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float32Array` constructor\n// https://tc39.github.io/ecma262/#sec-typedarray-objects\ntypedArrayConstructor('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-arrays-constructors-requires-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n return isTypedArrayIndex(target, key = toPrimitive(key, true))\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n && isObject(descriptor)\n && has(descriptor, 'value')\n && !has(descriptor, 'get')\n && !has(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!has(descriptor, 'writable') || descriptor.writable)\n && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, BYTES, wrapper, CLAMPED) {\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return typedArrayFrom.call(TypedArrayConstructor, data);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","/* eslint-disable no-new */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari 11 bug\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","var toInteger = require('../internals/to-integer');\n\nmodule.exports = function (it) {\n var result = toInteger(it);\n if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","var toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar bind = require('../internals/bind-context');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator, next;\n if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n O = [];\n while (!(step = next.call(iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2], 2);\n }\n length = toLength(O.length);\n result = new (aTypedArrayConstructor(this))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $copyWithin = require('../internals/array-copy-within');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.copywithin\nArrayBufferViewCore.exportProto('copyWithin', function copyWithin(target, start /* , end */) {\n return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.every\nArrayBufferViewCore.exportProto('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.fill\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('fill', function fill(value /* , start, end */) {\n return $fill.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.filter\nArrayBufferViewCore.exportProto('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.find\nArrayBufferViewCore.exportProto('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.findindex\nArrayBufferViewCore.exportProto('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.foreach\nArrayBufferViewCore.exportProto('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.includes\nArrayBufferViewCore.exportProto('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.indexof\nArrayBufferViewCore.exportProto('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = ArrayIterators.values;\nvar arrayKeys = ArrayIterators.keys;\nvar arrayEntries = ArrayIterators.entries;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportProto = ArrayBufferViewCore.exportProto;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\nvar typedArrayValues = function values() {\n return arrayValues.call(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.entries\nexportProto('entries', function entries() {\n return arrayEntries.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.keys\nexportProto('keys', function keys() {\n return arrayKeys.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.values\nexportProto('values', typedArrayValues, !CORRECT_ITER_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportProto(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $join = [].join;\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.join\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('join', function join(separator) {\n return $join.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.lastindexof\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n return $lastIndexOf.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.map\nArrayBufferViewCore.exportProto('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length);\n });\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduce\nArrayBufferViewCore.exportProto('reduce', function reduce(callbackfn /* , initialValue */) {\n return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduceright\nArrayBufferViewCore.exportProto('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reverse\nArrayBufferViewCore.exportProto('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toOffset = require('../internals/to-offset');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.set\nArrayBufferViewCore.exportProto('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice\nArrayBufferViewCore.exportProto('slice', function slice(start, end) {\n var list = $slice.call(aTypedArray(this), start, end);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.some\nArrayBufferViewCore.exportProto('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $sort = [].sort;\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.sort\nArrayBufferViewCore.exportProto('sort', function sort(comparefn) {\n return $sort.call(aTypedArray(this), comparefn);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.subarray\nArrayBufferViewCore.exportProto('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O.constructor))(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $toLocaleString = [].toLocaleString;\nvar $slice = [].slice;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tolocalestring\nArrayBufferViewCore.exportProto('toLocaleString', function toLocaleString() {\n return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n}, FORCED);\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype;\nvar arrayToString = [].toString;\nvar arrayJoin = [].join;\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return arrayJoin.call(this);\n };\n}\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tostring\nArrayBufferViewCore.exportProto('toString', arrayToString, (Uint8ArrayPrototype || {}).toString != arrayToString);\n","/*!\r\n * Waves v0.7.6\r\n * http://fian.my.id/Waves\r\n *\r\n * Copyright 2014-2018 Alfiana E. Sibuea and other contributors\r\n * Released under the MIT license\r\n * https://github.com/fians/Waves/blob/master/LICENSE\r\n */\r\n\r\n\r\n(function (window, factory) {\r\n 'use strict';\r\n\r\n // AMD. Register as an anonymous module. Wrap in function so we have access\r\n // to root via `this`.\r\n if (typeof define === 'function' && define.amd) {\r\n define([], function () {\r\n window.Waves = factory.call(window);\r\n return window.Waves;\r\n });\r\n }\r\n\r\n // Node. Does not work with strict CommonJS, but only CommonJS-like\r\n // environments that support module.exports, like Node.\r\n else if (typeof exports === 'object') {\r\n module.exports = factory.call(window);\r\n }\r\n\r\n // Browser globals.\r\n else {\r\n window.Waves = factory.call(window);\r\n }\r\n})(typeof window === 'object' ? window : this, function () {\r\n 'use strict';\r\n\r\n var Waves = Waves || {};\r\n var $$ = document.querySelectorAll.bind(document);\r\n var toString = Object.prototype.toString;\r\n var isTouchAvailable = 'ontouchstart' in window;\r\n\r\n\r\n // Find exact position of element\r\n function isWindow(obj) {\r\n return obj !== null && obj === obj.window;\r\n }\r\n\r\n function getWindow(elem) {\r\n return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;\r\n }\r\n\r\n function isObject(value) {\r\n var type = typeof value;\r\n return type === 'function' || type === 'object' && !!value;\r\n }\r\n\r\n function isDOMNode(obj) {\r\n return isObject(obj) && obj.nodeType > 0;\r\n }\r\n\r\n function getWavesElements(nodes) {\r\n var stringRepr = toString.call(nodes);\r\n\r\n if (stringRepr === '[object String]') {\r\n return $$(nodes);\r\n } else if (isObject(nodes) && /^\\[object (Array|HTMLCollection|NodeList|Object)\\]$/.test(stringRepr) && nodes.hasOwnProperty('length')) {\r\n return nodes;\r\n } else if (isDOMNode(nodes)) {\r\n return [nodes];\r\n }\r\n\r\n return [];\r\n }\r\n\r\n function offset(elem) {\r\n var docElem, win,\r\n box = {\r\n top: 0,\r\n left: 0\r\n },\r\n doc = elem && elem.ownerDocument;\r\n\r\n docElem = doc.documentElement;\r\n\r\n if (typeof elem.getBoundingClientRect !== typeof undefined) {\r\n box = elem.getBoundingClientRect();\r\n }\r\n win = getWindow(doc);\r\n return {\r\n top: box.top + win.pageYOffset - docElem.clientTop,\r\n left: box.left + win.pageXOffset - docElem.clientLeft\r\n };\r\n }\r\n\r\n function convertStyle(styleObj) {\r\n var style = '';\r\n\r\n for (var prop in styleObj) {\r\n if (styleObj.hasOwnProperty(prop)) {\r\n style += (prop + ':' + styleObj[prop] + ';');\r\n }\r\n }\r\n\r\n return style;\r\n }\r\n\r\n var Effect = {\r\n\r\n // Effect duration\r\n duration: 750,\r\n\r\n // Effect delay (check for scroll before showing effect)\r\n delay: 200,\r\n\r\n show: function (e, element, velocity) {\r\n\r\n // Disable right click\r\n if (e.button === 2) {\r\n return false;\r\n }\r\n\r\n element = element || this;\r\n\r\n // Create ripple\r\n var ripple = document.createElement('div');\r\n ripple.className = 'waves-ripple waves-rippling';\r\n element.appendChild(ripple);\r\n\r\n // Get click coordinate and element width\r\n var pos = offset(element);\r\n var relativeY = 0;\r\n var relativeX = 0;\r\n // Support for touch devices\r\n if ('touches' in e && e.touches.length) {\r\n relativeY = (e.touches[0].pageY - pos.top);\r\n relativeX = (e.touches[0].pageX - pos.left);\r\n }\r\n //Normal case\r\n else {\r\n relativeY = (e.pageY - pos.top);\r\n relativeX = (e.pageX - pos.left);\r\n }\r\n // Support for synthetic events\r\n relativeX = relativeX >= 0 ? relativeX : 0;\r\n relativeY = relativeY >= 0 ? relativeY : 0;\r\n\r\n var scale = 'scale(' + ((element.clientWidth / 100) * 3) + ')';\r\n var translate = 'translate(0,0)';\r\n\r\n if (velocity) {\r\n translate = 'translate(' + (velocity.x) + 'px, ' + (velocity.y) + 'px)';\r\n }\r\n\r\n // Attach data to element\r\n ripple.setAttribute('data-hold', Date.now());\r\n ripple.setAttribute('data-x', relativeX);\r\n ripple.setAttribute('data-y', relativeY);\r\n ripple.setAttribute('data-scale', scale);\r\n ripple.setAttribute('data-translate', translate);\r\n\r\n // Set ripple position\r\n var rippleStyle = {\r\n top: relativeY + 'px',\r\n left: relativeX + 'px'\r\n };\r\n\r\n ripple.classList.add('waves-notransition');\r\n ripple.setAttribute('style', convertStyle(rippleStyle));\r\n ripple.classList.remove('waves-notransition');\r\n\r\n // Scale the ripple\r\n rippleStyle['-webkit-transform'] = scale + ' ' + translate;\r\n rippleStyle['-moz-transform'] = scale + ' ' + translate;\r\n rippleStyle['-ms-transform'] = scale + ' ' + translate;\r\n rippleStyle['-o-transform'] = scale + ' ' + translate;\r\n rippleStyle.transform = scale + ' ' + translate;\r\n rippleStyle.opacity = '1';\r\n\r\n var duration = e.type === 'mousemove' ? 2500 : Effect.duration;\r\n rippleStyle['-webkit-transition-duration'] = duration + 'ms';\r\n rippleStyle['-moz-transition-duration'] = duration + 'ms';\r\n rippleStyle['-o-transition-duration'] = duration + 'ms';\r\n rippleStyle['transition-duration'] = duration + 'ms';\r\n\r\n ripple.setAttribute('style', convertStyle(rippleStyle));\r\n },\r\n\r\n hide: function (e, element) {\r\n element = element || this;\r\n\r\n var ripples = element.getElementsByClassName('waves-rippling');\r\n\r\n for (var i = 0, len = ripples.length; i < len; i++) {\r\n removeRipple(e, element, ripples[i]);\r\n }\r\n\r\n if (isTouchAvailable) {\r\n element.removeEventListener('touchend', Effect.hide);\r\n element.removeEventListener('touchcancel', Effect.hide);\r\n }\r\n\r\n element.removeEventListener('mouseup', Effect.hide);\r\n element.removeEventListener('mouseleave', Effect.hide);\r\n }\r\n };\r\n\r\n /**\r\n * Collection of wrapper for HTML element that only have single tag\r\n * like and \r\n */\r\n var TagWrapper = {\r\n\r\n // Wrap tag so it can perform the effect\r\n input: function (element) {\r\n\r\n var parent = element.parentNode;\r\n\r\n // If input already have parent just pass through\r\n if (parent.tagName.toLowerCase() === 'span' && parent.classList.contains('waves-effect')) {\r\n return;\r\n }\r\n\r\n // Put element class and style to the specified parent\r\n var wrapper = document.createElement('span');\r\n wrapper.className = 'waves-input-wrapper';\r\n // element.className = 'waves-button-input';\r\n\r\n // Put element as child\r\n parent.replaceChild(wrapper, element);\r\n wrapper.appendChild(element);\r\n\r\n },\r\n\r\n // Wrap tag so it can perform the effect\r\n img: function (element) {\r\n\r\n var parent = element.parentNode;\r\n\r\n // If input already have parent just pass through\r\n if (parent.tagName.toLowerCase() === 'i' && parent.classList.contains('waves-effect')) {\r\n return;\r\n }\r\n\r\n // Put element as child\r\n var wrapper = document.createElement('i');\r\n parent.replaceChild(wrapper, element);\r\n wrapper.appendChild(element);\r\n\r\n }\r\n };\r\n\r\n /**\r\n * Hide the effect and remove the ripple. Must be\r\n * a separate function to pass the JSLint...\r\n */\r\n function removeRipple(e, el, ripple) {\r\n\r\n // Check if the ripple still exist\r\n if (!ripple) {\r\n return;\r\n }\r\n\r\n ripple.classList.remove('waves-rippling');\r\n\r\n var relativeX = ripple.getAttribute('data-x');\r\n var relativeY = ripple.getAttribute('data-y');\r\n var scale = ripple.getAttribute('data-scale');\r\n var translate = ripple.getAttribute('data-translate');\r\n\r\n // Get delay beetween mousedown and mouse leave\r\n var diff = Date.now() - Number(ripple.getAttribute('data-hold'));\r\n var delay = 350 - diff;\r\n\r\n if (delay < 0) {\r\n delay = 0;\r\n }\r\n\r\n if (e.type === 'mousemove') {\r\n delay = 150;\r\n }\r\n\r\n // Fade out ripple after delay\r\n var duration = e.type === 'mousemove' ? 2500 : Effect.duration;\r\n\r\n setTimeout(function () {\r\n\r\n var style = {\r\n top: relativeY + 'px',\r\n left: relativeX + 'px',\r\n opacity: '0',\r\n\r\n // Duration\r\n '-webkit-transition-duration': duration + 'ms',\r\n '-moz-transition-duration': duration + 'ms',\r\n '-o-transition-duration': duration + 'ms',\r\n 'transition-duration': duration + 'ms',\r\n '-webkit-transform': scale + ' ' + translate,\r\n '-moz-transform': scale + ' ' + translate,\r\n '-ms-transform': scale + ' ' + translate,\r\n '-o-transform': scale + ' ' + translate,\r\n 'transform': scale + ' ' + translate\r\n };\r\n\r\n ripple.setAttribute('style', convertStyle(style));\r\n\r\n setTimeout(function () {\r\n try {\r\n el.removeChild(ripple);\r\n } catch (e) {\r\n return false;\r\n }\r\n }, duration);\r\n\r\n }, delay);\r\n }\r\n\r\n\r\n /**\r\n * Disable mousedown event for 500ms during and after touch\r\n */\r\n var TouchHandler = {\r\n\r\n /* uses an integer rather than bool so there's no issues with\r\n * needing to clear timeouts if another touch event occurred\r\n * within the 500ms. Cannot mouseup between touchstart and\r\n * touchend, nor in the 500ms after touchend. */\r\n touches: 0,\r\n\r\n allowEvent: function (e) {\r\n\r\n var allow = true;\r\n\r\n if (/^(mousedown|mousemove)$/.test(e.type) && TouchHandler.touches) {\r\n allow = false;\r\n }\r\n\r\n return allow;\r\n },\r\n registerEvent: function (e) {\r\n var eType = e.type;\r\n\r\n if (eType === 'touchstart') {\r\n\r\n TouchHandler.touches += 1; // push\r\n\r\n } else if (/^(touchend|touchcancel)$/.test(eType)) {\r\n\r\n setTimeout(function () {\r\n if (TouchHandler.touches) {\r\n TouchHandler.touches -= 1; // pop after 500ms\r\n }\r\n }, 500);\r\n\r\n }\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Delegated click handler for .waves-effect element.\r\n * returns null when .waves-effect element not in \"click tree\"\r\n */\r\n function getWavesEffectElement(e) {\r\n\r\n if (TouchHandler.allowEvent(e) === false) {\r\n return null;\r\n }\r\n\r\n var element = null;\r\n var target = e.target || e.srcElement;\r\n\r\n while (target.parentElement) {\r\n if ((!(target instanceof SVGElement)) && target.classList.contains('waves-effect')) {\r\n element = target;\r\n break;\r\n }\r\n target = target.parentElement;\r\n }\r\n\r\n return element;\r\n }\r\n\r\n /**\r\n * Bubble the click and show effect if .waves-effect elem was found\r\n */\r\n function showEffect(e) {\r\n\r\n // Disable effect if element has \"disabled\" property on it\r\n // In some cases, the event is not triggered by the current element\r\n // if (e.target.getAttribute('disabled') !== null) {\r\n // return;\r\n // }\r\n\r\n var element = getWavesEffectElement(e);\r\n\r\n if (element !== null) {\r\n\r\n // Make it sure the element has either disabled property, disabled attribute or 'disabled' class\r\n if (element.disabled || element.getAttribute('disabled') || element.classList.contains('disabled')) {\r\n return;\r\n }\r\n\r\n TouchHandler.registerEvent(e);\r\n\r\n if (e.type === 'touchstart' && Effect.delay) {\r\n\r\n var hidden = false;\r\n\r\n var timer = setTimeout(function () {\r\n timer = null;\r\n Effect.show(e, element);\r\n }, Effect.delay);\r\n\r\n var hideEffect = function (hideEvent) {\r\n\r\n // if touch hasn't moved, and effect not yet started: start effect now\r\n if (timer) {\r\n clearTimeout(timer);\r\n timer = null;\r\n Effect.show(e, element);\r\n }\r\n if (!hidden) {\r\n hidden = true;\r\n Effect.hide(hideEvent, element);\r\n }\r\n\r\n removeListeners();\r\n };\r\n\r\n var touchMove = function (moveEvent) {\r\n if (timer) {\r\n clearTimeout(timer);\r\n timer = null;\r\n }\r\n hideEffect(moveEvent);\r\n\r\n removeListeners();\r\n };\r\n\r\n element.addEventListener('touchmove', touchMove, false);\r\n element.addEventListener('touchend', hideEffect, false);\r\n element.addEventListener('touchcancel', hideEffect, false);\r\n\r\n var removeListeners = function () {\r\n element.removeEventListener('touchmove', touchMove);\r\n element.removeEventListener('touchend', hideEffect);\r\n element.removeEventListener('touchcancel', hideEffect);\r\n };\r\n } else {\r\n\r\n Effect.show(e, element);\r\n\r\n if (isTouchAvailable) {\r\n element.addEventListener('touchend', Effect.hide, false);\r\n element.addEventListener('touchcancel', Effect.hide, false);\r\n }\r\n\r\n element.addEventListener('mouseup', Effect.hide, false);\r\n element.addEventListener('mouseleave', Effect.hide, false);\r\n }\r\n }\r\n }\r\n\r\n Waves.init = function (options) {\r\n var body = document.body;\r\n\r\n options = options || {};\r\n\r\n if ('duration' in options) {\r\n Effect.duration = options.duration;\r\n }\r\n\r\n if ('delay' in options) {\r\n Effect.delay = options.delay;\r\n }\r\n\r\n if (isTouchAvailable) {\r\n body.addEventListener('touchstart', showEffect, false);\r\n body.addEventListener('touchcancel', TouchHandler.registerEvent, false);\r\n body.addEventListener('touchend', TouchHandler.registerEvent, false);\r\n }\r\n\r\n body.addEventListener('mousedown', showEffect, false);\r\n };\r\n\r\n\r\n /**\r\n * Attach Waves to dynamically loaded inputs, or add .waves-effect and other\r\n * waves classes to a set of elements. Set drag to true if the ripple mouseover\r\n * or skimming effect should be applied to the elements.\r\n */\r\n Waves.attach = function (elements, classes) {\r\n\r\n elements = getWavesElements(elements);\r\n\r\n if (toString.call(classes) === '[object Array]') {\r\n classes = classes.join(' ');\r\n }\r\n\r\n classes = classes ? ' ' + classes : '';\r\n\r\n var element, tagName;\r\n\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n\r\n element = elements[i];\r\n tagName = element.tagName.toLowerCase();\r\n\r\n if (['input', 'img'].indexOf(tagName) !== -1) {\r\n TagWrapper[tagName](element);\r\n element = element.parentElement;\r\n }\r\n\r\n if (element.className.indexOf('waves-effect') === -1) {\r\n element.className += ' waves-effect' + classes;\r\n }\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Cause a ripple to appear in an element via code.\r\n */\r\n Waves.ripple = function (elements, options) {\r\n elements = getWavesElements(elements);\r\n var elementsLen = elements.length;\r\n\r\n options = options || {};\r\n options.wait = options.wait || 0;\r\n options.position = options.position || null; // default = centre of element\r\n\r\n\r\n if (elementsLen) {\r\n var element, pos, off, centre = {},\r\n i = 0;\r\n var mousedown = {\r\n type: 'mousedown',\r\n button: 1\r\n };\r\n var hideRipple = function (mouseup, element) {\r\n return function () {\r\n Effect.hide(mouseup, element);\r\n };\r\n };\r\n\r\n for (; i < elementsLen; i++) {\r\n element = elements[i];\r\n pos = options.position || {\r\n x: element.clientWidth / 2,\r\n y: element.clientHeight / 2\r\n };\r\n\r\n off = offset(element);\r\n centre.x = off.left + pos.x;\r\n centre.y = off.top + pos.y;\r\n\r\n mousedown.pageX = centre.x;\r\n mousedown.pageY = centre.y;\r\n\r\n Effect.show(mousedown, element);\r\n\r\n if (options.wait >= 0 && options.wait !== null) {\r\n var mouseup = {\r\n type: 'mouseup',\r\n button: 1\r\n };\r\n\r\n setTimeout(hideRipple(mouseup, element), options.wait);\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Remove all ripples from an element.\r\n */\r\n Waves.calm = function (elements) {\r\n elements = getWavesElements(elements);\r\n var mouseup = {\r\n type: 'mouseup',\r\n button: 1\r\n };\r\n\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n Effect.hide(mouseup, elements[i]);\r\n }\r\n };\r\n\r\n /**\r\n * Deprecated API fallback\r\n */\r\n Waves.displayEffect = function (options) {\r\n console.error('Waves.displayEffect() has been deprecated and will be removed in future version. Please use Waves.init() to initialize Waves effect');\r\n Waves.init(options);\r\n };\r\n\r\n return Waves;\r\n});\r\n$(document).ready(function () {\r\n //Initialization\r\n Waves.attach('.btn:not(.btn-flat), .btn-floating', ['waves-light']);\r\n Waves.attach('.btn-flat', ['waves-effect']);\r\n Waves.attach('.chip', ['waves-effect']);\r\n Waves.attach('.view a .mask', ['waves-light']);\r\n Waves.attach('.waves-light', ['waves-light']);\r\n Waves.attach('.navbar-nav a:not(.navbar-brand), .nav-icons li a, .nav-tabs .nav-item:not(.dropdown)', ['waves-light']);\r\n Waves.attach('.pager li a', ['waves-light']);\r\n Waves.attach('.pagination .page-item .page-link', ['waves-effect']);\r\n Waves.init();\r\n});\r\n","/* jSticky Plugin\r\n * =============\r\n * Author: Andrew Henderson (@AndrewHenderson)\r\n * Contributor: Mike Street (@mikestreety)\r\n * Date: 9/7/2012\r\n * Update: 09/20/2016\r\n * Website: http://github.com/andrewhenderson/jsticky/\r\n * Description: A jQuery plugin that keeps select DOM\r\n * element(s) in view while scrolling the page.\r\n */\r\n\r\n;(function($) {\r\n\r\n $.fn.sticky = function(options) {\r\n var defaults = {\r\n topSpacing: 0, // No spacing by default\r\n zIndex: '', // No default z-index\r\n stopper: '.sticky-stopper', // Default stopper class, also accepts number value\r\n stickyClass: false // Class applied to element when it's stuck\r\n };\r\n var settings = $.extend({}, defaults, options); // Accepts custom stopper id or class\r\n\r\n // Checks if custom z-index was defined\r\n function checkIndex() {\r\n if (typeof settings.zIndex == 'number') {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n var hasIndex = checkIndex(); // True or false\r\n\r\n // Checks if a stopper exists in the DOM or number defined\r\n function checkStopper() {\r\n if (0 < $(settings.stopper).length || typeof settings.stopper === 'number') {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n var hasStopper = checkStopper(); // True or false\r\n\r\n return this.each(function() {\r\n\r\n var $this = $(this);\r\n var thisHeight = $this.outerHeight();\r\n var thisWidth = $this.outerWidth();\r\n var topSpacing = settings.topSpacing;\r\n var zIndex = settings.zIndex;\r\n var pushPoint = $this.offset().top - topSpacing; // Point at which the sticky element starts pushing\r\n var placeholder = $('
      ').width(thisWidth).height(thisHeight).addClass('sticky-placeholder'); // Cache a clone sticky element\r\n var stopper = settings.stopper;\r\n var $window = $(window);\r\n\r\n function stickyScroll() {\r\n\r\n var windowTop = $window.scrollTop(); // Check window's scroll position\r\n var stopPoint = stopper;\r\n var parentWidth = $this.parent().width();\r\n\r\n placeholder.width(parentWidth)\r\n\r\n if ( hasStopper && typeof stopper === 'string' ) {\r\n var stopperTop = $(stopper).offset().top;\r\n stopPoint = (stopperTop - thisHeight) - topSpacing;\r\n }\r\n\r\n if (pushPoint < windowTop) {\r\n // Create a placeholder for sticky element to occupy vertical real estate\r\n if(settings.stickyClass)\r\n $this.addClass(settings.stickyClass);\r\n\r\n $this.after(placeholder).css({\r\n position: 'fixed',\r\n top: topSpacing,\r\n width: parentWidth\r\n });\r\n\r\n if (hasIndex) {\r\n $this.css({\r\n zIndex: zIndex\r\n });\r\n }\r\n\r\n if (hasStopper) {\r\n if (stopPoint < windowTop) {\r\n var diff = (stopPoint - windowTop) + topSpacing;\r\n $this.css({\r\n top: diff\r\n });\r\n }\r\n }\r\n } else {\r\n if(settings.stickyClass)\r\n $this.removeClass(settings.stickyClass);\r\n\r\n $this.css({\r\n position: 'static',\r\n top: null,\r\n left: null,\r\n width: 'auto'\r\n });\r\n\r\n placeholder.remove();\r\n }\r\n }\r\n\r\n if($window.innerHeight() > thisHeight) {\r\n\r\n $window.bind('scroll', stickyScroll);\r\n $window.bind('load', stickyScroll);\r\n $window.bind('resize', stickyScroll);\r\n }\r\n });\r\n };\r\n})(jQuery);","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative(nativeSearch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","// `SameValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-samevalue\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","/*!\r\n * perfect-scrollbar v1.5.0\r\n * Copyright 2020 Hyunje Jun, MDBootstrap and Contributors\r\n * Licensed under MIT\r\n */\r\n\r\n(function (global, factory) {\r\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\n typeof define === 'function' && define.amd ? define(factory) :\r\n (global = global || self, global.PerfectScrollbar = factory());\r\n}(this, (function () { 'use strict';\r\n\r\n function get(element) {\r\n return getComputedStyle(element);\r\n }\r\n\r\n function set(element, obj) {\r\n for (var key in obj) {\r\n var val = obj[key];\r\n if (typeof val === 'number') {\r\n val = val + \"px\";\r\n }\r\n element.style[key] = val;\r\n }\r\n return element;\r\n }\r\n\r\n function div(className) {\r\n var div = document.createElement('div');\r\n div.className = className;\r\n return div;\r\n }\r\n\r\n var elMatches =\r\n typeof Element !== 'undefined' &&\r\n (Element.prototype.matches ||\r\n Element.prototype.webkitMatchesSelector ||\r\n Element.prototype.mozMatchesSelector ||\r\n Element.prototype.msMatchesSelector);\r\n\r\n function matches(element, query) {\r\n if (!elMatches) {\r\n throw new Error('No element matching method supported');\r\n }\r\n\r\n return elMatches.call(element, query);\r\n }\r\n\r\n function remove(element) {\r\n if (element.remove) {\r\n element.remove();\r\n } else {\r\n if (element.parentNode) {\r\n element.parentNode.removeChild(element);\r\n }\r\n }\r\n }\r\n\r\n function queryChildren(element, selector) {\r\n return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\r\n );\r\n }\r\n\r\n var cls = {\r\n main: 'ps',\r\n rtl: 'ps__rtl',\r\n element: {\r\n thumb: function (x) { return (\"ps__thumb-\" + x); },\r\n rail: function (x) { return (\"ps__rail-\" + x); },\r\n consuming: 'ps__child--consume',\r\n },\r\n state: {\r\n focus: 'ps--focus',\r\n clicking: 'ps--clicking',\r\n active: function (x) { return (\"ps--active-\" + x); },\r\n scrolling: function (x) { return (\"ps--scrolling-\" + x); },\r\n },\r\n };\r\n\r\n /*\r\n * Helper methods\r\n */\r\n var scrollingClassTimeout = { x: null, y: null };\r\n\r\n function addScrollingClass(i, x) {\r\n var classList = i.element.classList;\r\n var className = cls.state.scrolling(x);\r\n\r\n if (classList.contains(className)) {\r\n clearTimeout(scrollingClassTimeout[x]);\r\n } else {\r\n classList.add(className);\r\n }\r\n }\r\n\r\n function removeScrollingClass(i, x) {\r\n scrollingClassTimeout[x] = setTimeout(\r\n function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\r\n i.settings.scrollingThreshold\r\n );\r\n }\r\n\r\n function setScrollingClassInstantly(i, x) {\r\n addScrollingClass(i, x);\r\n removeScrollingClass(i, x);\r\n }\r\n\r\n var EventElement = function EventElement(element) {\r\n this.element = element;\r\n this.handlers = {};\r\n };\r\n\r\n var prototypeAccessors = { isEmpty: { configurable: true } };\r\n\r\n EventElement.prototype.bind = function bind (eventName, handler) {\r\n if (typeof this.handlers[eventName] === 'undefined') {\r\n this.handlers[eventName] = [];\r\n }\r\n this.handlers[eventName].push(handler);\r\n this.element.addEventListener(eventName, handler, false);\r\n };\r\n\r\n EventElement.prototype.unbind = function unbind (eventName, target) {\r\n var this$1 = this;\r\n\r\n this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\r\n if (target && handler !== target) {\r\n return true;\r\n }\r\n this$1.element.removeEventListener(eventName, handler, false);\r\n return false;\r\n });\r\n };\r\n\r\n EventElement.prototype.unbindAll = function unbindAll () {\r\n for (var name in this.handlers) {\r\n this.unbind(name);\r\n }\r\n };\r\n\r\n prototypeAccessors.isEmpty.get = function () {\r\n var this$1 = this;\r\n\r\n return Object.keys(this.handlers).every(\r\n function (key) { return this$1.handlers[key].length === 0; }\r\n );\r\n };\r\n\r\n Object.defineProperties( EventElement.prototype, prototypeAccessors );\r\n\r\n var EventManager = function EventManager() {\r\n this.eventElements = [];\r\n };\r\n\r\n EventManager.prototype.eventElement = function eventElement (element) {\r\n var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\r\n if (!ee) {\r\n ee = new EventElement(element);\r\n this.eventElements.push(ee);\r\n }\r\n return ee;\r\n };\r\n\r\n EventManager.prototype.bind = function bind (element, eventName, handler) {\r\n this.eventElement(element).bind(eventName, handler);\r\n };\r\n\r\n EventManager.prototype.unbind = function unbind (element, eventName, handler) {\r\n var ee = this.eventElement(element);\r\n ee.unbind(eventName, handler);\r\n\r\n if (ee.isEmpty) {\r\n // remove\r\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\r\n }\r\n };\r\n\r\n EventManager.prototype.unbindAll = function unbindAll () {\r\n this.eventElements.forEach(function (e) { return e.unbindAll(); });\r\n this.eventElements = [];\r\n };\r\n\r\n EventManager.prototype.once = function once (element, eventName, handler) {\r\n var ee = this.eventElement(element);\r\n var onceHandler = function (evt) {\r\n ee.unbind(eventName, onceHandler);\r\n handler(evt);\r\n };\r\n ee.bind(eventName, onceHandler);\r\n };\r\n\r\n function createEvent(name) {\r\n if (typeof window.CustomEvent === 'function') {\r\n return new CustomEvent(name);\r\n } else {\r\n var evt = document.createEvent('CustomEvent');\r\n evt.initCustomEvent(name, false, false, undefined);\r\n return evt;\r\n }\r\n }\r\n\r\n function processScrollDiff(\r\n i,\r\n axis,\r\n diff,\r\n useScrollingClass,\r\n forceFireReachEvent\r\n ) {\r\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\r\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\r\n\r\n var fields;\r\n if (axis === 'top') {\r\n fields = [\r\n 'contentHeight',\r\n 'containerHeight',\r\n 'scrollTop',\r\n 'y',\r\n 'up',\r\n 'down' ];\r\n } else if (axis === 'left') {\r\n fields = [\r\n 'contentWidth',\r\n 'containerWidth',\r\n 'scrollLeft',\r\n 'x',\r\n 'left',\r\n 'right' ];\r\n } else {\r\n throw new Error('A proper axis should be provided');\r\n }\r\n\r\n processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\r\n }\r\n\r\n function processScrollDiff$1(\r\n i,\r\n diff,\r\n ref,\r\n useScrollingClass,\r\n forceFireReachEvent\r\n ) {\r\n var contentHeight = ref[0];\r\n var containerHeight = ref[1];\r\n var scrollTop = ref[2];\r\n var y = ref[3];\r\n var up = ref[4];\r\n var down = ref[5];\r\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\r\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\r\n\r\n var element = i.element;\r\n\r\n // reset reach\r\n i.reach[y] = null;\r\n\r\n // 1 for subpixel rounding\r\n if (element[scrollTop] < 1) {\r\n i.reach[y] = 'start';\r\n }\r\n\r\n // 1 for subpixel rounding\r\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\r\n i.reach[y] = 'end';\r\n }\r\n\r\n if (diff) {\r\n element.dispatchEvent(createEvent((\"ps-scroll-\" + y)));\r\n\r\n if (diff < 0) {\r\n element.dispatchEvent(createEvent((\"ps-scroll-\" + up)));\r\n } else if (diff > 0) {\r\n element.dispatchEvent(createEvent((\"ps-scroll-\" + down)));\r\n }\r\n\r\n if (useScrollingClass) {\r\n setScrollingClassInstantly(i, y);\r\n }\r\n }\r\n\r\n if (i.reach[y] && (diff || forceFireReachEvent)) {\r\n element.dispatchEvent(createEvent((\"ps-\" + y + \"-reach-\" + (i.reach[y]))));\r\n }\r\n }\r\n\r\n function toInt(x) {\r\n return parseInt(x, 10) || 0;\r\n }\r\n\r\n function isEditable(el) {\r\n return (\r\n matches(el, 'input,[contenteditable]') ||\r\n matches(el, 'select,[contenteditable]') ||\r\n matches(el, 'textarea,[contenteditable]') ||\r\n matches(el, 'button,[contenteditable]')\r\n );\r\n }\r\n\r\n function outerWidth(element) {\r\n var styles = get(element);\r\n return (\r\n toInt(styles.width) +\r\n toInt(styles.paddingLeft) +\r\n toInt(styles.paddingRight) +\r\n toInt(styles.borderLeftWidth) +\r\n toInt(styles.borderRightWidth)\r\n );\r\n }\r\n\r\n var env = {\r\n isWebKit:\r\n typeof document !== 'undefined' &&\r\n 'WebkitAppearance' in document.documentElement.style,\r\n supportsTouch:\r\n typeof window !== 'undefined' &&\r\n ('ontouchstart' in window ||\r\n ('maxTouchPoints' in window.navigator &&\r\n window.navigator.maxTouchPoints > 0) ||\r\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\r\n supportsIePointer:\r\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\r\n isChrome:\r\n typeof navigator !== 'undefined' &&\r\n /Chrome/i.test(navigator && navigator.userAgent),\r\n };\r\n\r\n function updateGeometry(i) {\r\n var element = i.element;\r\n var roundedScrollTop = Math.floor(element.scrollTop);\r\n var rect = element.getBoundingClientRect();\r\n\r\n i.containerWidth = Math.ceil(rect.width);\r\n i.containerHeight = Math.ceil(rect.height);\r\n i.contentWidth = element.scrollWidth;\r\n i.contentHeight = element.scrollHeight;\r\n\r\n if (!element.contains(i.scrollbarXRail)) {\r\n // clean up and append\r\n queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\r\n );\r\n element.appendChild(i.scrollbarXRail);\r\n }\r\n if (!element.contains(i.scrollbarYRail)) {\r\n // clean up and append\r\n queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\r\n );\r\n element.appendChild(i.scrollbarYRail);\r\n }\r\n\r\n if (\r\n !i.settings.suppressScrollX &&\r\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\r\n ) {\r\n i.scrollbarXActive = true;\r\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\r\n i.railXRatio = i.containerWidth / i.railXWidth;\r\n i.scrollbarXWidth = getThumbSize(\r\n i,\r\n toInt((i.railXWidth * i.containerWidth) / i.contentWidth)\r\n );\r\n i.scrollbarXLeft = toInt(\r\n ((i.negativeScrollAdjustment + element.scrollLeft) *\r\n (i.railXWidth - i.scrollbarXWidth)) /\r\n (i.contentWidth - i.containerWidth)\r\n );\r\n } else {\r\n i.scrollbarXActive = false;\r\n }\r\n\r\n if (\r\n !i.settings.suppressScrollY &&\r\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\r\n ) {\r\n i.scrollbarYActive = true;\r\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\r\n i.railYRatio = i.containerHeight / i.railYHeight;\r\n i.scrollbarYHeight = getThumbSize(\r\n i,\r\n toInt((i.railYHeight * i.containerHeight) / i.contentHeight)\r\n );\r\n i.scrollbarYTop = toInt(\r\n (roundedScrollTop * (i.railYHeight - i.scrollbarYHeight)) /\r\n (i.contentHeight - i.containerHeight)\r\n );\r\n } else {\r\n i.scrollbarYActive = false;\r\n }\r\n\r\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\r\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\r\n }\r\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\r\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\r\n }\r\n\r\n updateCss(element, i);\r\n\r\n if (i.scrollbarXActive) {\r\n element.classList.add(cls.state.active('x'));\r\n } else {\r\n element.classList.remove(cls.state.active('x'));\r\n i.scrollbarXWidth = 0;\r\n i.scrollbarXLeft = 0;\r\n element.scrollLeft = i.isRtl === true ? i.contentWidth : 0;\r\n }\r\n if (i.scrollbarYActive) {\r\n element.classList.add(cls.state.active('y'));\r\n } else {\r\n element.classList.remove(cls.state.active('y'));\r\n i.scrollbarYHeight = 0;\r\n i.scrollbarYTop = 0;\r\n element.scrollTop = 0;\r\n }\r\n }\r\n\r\n function getThumbSize(i, thumbSize) {\r\n if (i.settings.minScrollbarLength) {\r\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\r\n }\r\n if (i.settings.maxScrollbarLength) {\r\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\r\n }\r\n return thumbSize;\r\n }\r\n\r\n function updateCss(element, i) {\r\n var xRailOffset = { width: i.railXWidth };\r\n var roundedScrollTop = Math.floor(element.scrollTop);\r\n\r\n if (i.isRtl) {\r\n xRailOffset.left =\r\n i.negativeScrollAdjustment +\r\n element.scrollLeft +\r\n i.containerWidth -\r\n i.contentWidth;\r\n } else {\r\n xRailOffset.left = element.scrollLeft;\r\n }\r\n if (i.isScrollbarXUsingBottom) {\r\n xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\r\n } else {\r\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\r\n }\r\n set(i.scrollbarXRail, xRailOffset);\r\n\r\n var yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\r\n if (i.isScrollbarYUsingRight) {\r\n if (i.isRtl) {\r\n yRailOffset.right =\r\n i.contentWidth -\r\n (i.negativeScrollAdjustment + element.scrollLeft) -\r\n i.scrollbarYRight -\r\n i.scrollbarYOuterWidth -\r\n 9;\r\n } else {\r\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\r\n }\r\n } else {\r\n if (i.isRtl) {\r\n yRailOffset.left =\r\n i.negativeScrollAdjustment +\r\n element.scrollLeft +\r\n i.containerWidth * 2 -\r\n i.contentWidth -\r\n i.scrollbarYLeft -\r\n i.scrollbarYOuterWidth;\r\n } else {\r\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\r\n }\r\n }\r\n set(i.scrollbarYRail, yRailOffset);\r\n\r\n set(i.scrollbarX, {\r\n left: i.scrollbarXLeft,\r\n width: i.scrollbarXWidth - i.railBorderXWidth,\r\n });\r\n set(i.scrollbarY, {\r\n top: i.scrollbarYTop,\r\n height: i.scrollbarYHeight - i.railBorderYWidth,\r\n });\r\n }\r\n\r\n function clickRail(i) {\r\n var element = i.element;\r\n\r\n i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\r\n i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\r\n var positionTop =\r\n e.pageY -\r\n window.pageYOffset -\r\n i.scrollbarYRail.getBoundingClientRect().top;\r\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\r\n\r\n i.element.scrollTop += direction * i.containerHeight;\r\n updateGeometry(i);\r\n\r\n e.stopPropagation();\r\n });\r\n\r\n i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });\r\n i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\r\n var positionLeft =\r\n e.pageX -\r\n window.pageXOffset -\r\n i.scrollbarXRail.getBoundingClientRect().left;\r\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\r\n\r\n i.element.scrollLeft += direction * i.containerWidth;\r\n updateGeometry(i);\r\n\r\n e.stopPropagation();\r\n });\r\n }\r\n\r\n function dragThumb(i) {\r\n bindMouseScrollHandler(i, [\r\n 'containerWidth',\r\n 'contentWidth',\r\n 'pageX',\r\n 'railXWidth',\r\n 'scrollbarX',\r\n 'scrollbarXWidth',\r\n 'scrollLeft',\r\n 'x',\r\n 'scrollbarXRail' ]);\r\n bindMouseScrollHandler(i, [\r\n 'containerHeight',\r\n 'contentHeight',\r\n 'pageY',\r\n 'railYHeight',\r\n 'scrollbarY',\r\n 'scrollbarYHeight',\r\n 'scrollTop',\r\n 'y',\r\n 'scrollbarYRail' ]);\r\n }\r\n\r\n function bindMouseScrollHandler(\r\n i,\r\n ref\r\n ) {\r\n var containerHeight = ref[0];\r\n var contentHeight = ref[1];\r\n var pageY = ref[2];\r\n var railYHeight = ref[3];\r\n var scrollbarY = ref[4];\r\n var scrollbarYHeight = ref[5];\r\n var scrollTop = ref[6];\r\n var y = ref[7];\r\n var scrollbarYRail = ref[8];\r\n\r\n var element = i.element;\r\n\r\n var startingScrollTop = null;\r\n var startingMousePageY = null;\r\n var scrollBy = null;\r\n\r\n function mouseMoveHandler(e) {\r\n if (e.touches && e.touches[0]) {\r\n e[pageY] = e.touches[0].pageY;\r\n }\r\n element[scrollTop] =\r\n startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\r\n addScrollingClass(i, y);\r\n updateGeometry(i);\r\n\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n\r\n function mouseUpHandler() {\r\n removeScrollingClass(i, y);\r\n i[scrollbarYRail].classList.remove(cls.state.clicking);\r\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\r\n }\r\n\r\n function bindMoves(e, touchMode) {\r\n startingScrollTop = element[scrollTop];\r\n if (touchMode && e.touches) {\r\n e[pageY] = e.touches[0].pageY;\r\n }\r\n startingMousePageY = e[pageY];\r\n scrollBy =\r\n (i[contentHeight] - i[containerHeight]) /\r\n (i[railYHeight] - i[scrollbarYHeight]);\r\n if (!touchMode) {\r\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\r\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\r\n e.preventDefault();\r\n } else {\r\n i.event.bind(i.ownerDocument, 'touchmove', mouseMoveHandler);\r\n }\r\n\r\n i[scrollbarYRail].classList.add(cls.state.clicking);\r\n\r\n e.stopPropagation();\r\n }\r\n\r\n i.event.bind(i[scrollbarY], 'mousedown', function (e) {\r\n bindMoves(e);\r\n });\r\n i.event.bind(i[scrollbarY], 'touchstart', function (e) {\r\n bindMoves(e, true);\r\n });\r\n }\r\n\r\n function keyboard(i) {\r\n var element = i.element;\r\n\r\n var elementHovered = function () { return matches(element, ':hover'); };\r\n var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\r\n\r\n function shouldPreventDefault(deltaX, deltaY) {\r\n var scrollTop = Math.floor(element.scrollTop);\r\n if (deltaX === 0) {\r\n if (!i.scrollbarYActive) {\r\n return false;\r\n }\r\n if (\r\n (scrollTop === 0 && deltaY > 0) ||\r\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\r\n ) {\r\n return !i.settings.wheelPropagation;\r\n }\r\n }\r\n\r\n var scrollLeft = element.scrollLeft;\r\n if (deltaY === 0) {\r\n if (!i.scrollbarXActive) {\r\n return false;\r\n }\r\n if (\r\n (scrollLeft === 0 && deltaX < 0) ||\r\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\r\n ) {\r\n return !i.settings.wheelPropagation;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\r\n if (\r\n (e.isDefaultPrevented && e.isDefaultPrevented()) ||\r\n e.defaultPrevented\r\n ) {\r\n return;\r\n }\r\n\r\n if (!elementHovered() && !scrollbarFocused()) {\r\n return;\r\n }\r\n\r\n var activeElement = document.activeElement\r\n ? document.activeElement\r\n : i.ownerDocument.activeElement;\r\n if (activeElement) {\r\n if (activeElement.tagName === 'IFRAME') {\r\n activeElement = activeElement.contentDocument.activeElement;\r\n } else {\r\n // go deeper if element is a webcomponent\r\n while (activeElement.shadowRoot) {\r\n activeElement = activeElement.shadowRoot.activeElement;\r\n }\r\n }\r\n if (isEditable(activeElement)) {\r\n return;\r\n }\r\n }\r\n\r\n var deltaX = 0;\r\n var deltaY = 0;\r\n\r\n switch (e.which) {\r\n case 37: // left\r\n if (e.metaKey) {\r\n deltaX = -i.contentWidth;\r\n } else if (e.altKey) {\r\n deltaX = -i.containerWidth;\r\n } else {\r\n deltaX = -30;\r\n }\r\n break;\r\n case 38: // up\r\n if (e.metaKey) {\r\n deltaY = i.contentHeight;\r\n } else if (e.altKey) {\r\n deltaY = i.containerHeight;\r\n } else {\r\n deltaY = 30;\r\n }\r\n break;\r\n case 39: // right\r\n if (e.metaKey) {\r\n deltaX = i.contentWidth;\r\n } else if (e.altKey) {\r\n deltaX = i.containerWidth;\r\n } else {\r\n deltaX = 30;\r\n }\r\n break;\r\n case 40: // down\r\n if (e.metaKey) {\r\n deltaY = -i.contentHeight;\r\n } else if (e.altKey) {\r\n deltaY = -i.containerHeight;\r\n } else {\r\n deltaY = -30;\r\n }\r\n break;\r\n case 32: // space bar\r\n if (e.shiftKey) {\r\n deltaY = i.containerHeight;\r\n } else {\r\n deltaY = -i.containerHeight;\r\n }\r\n break;\r\n case 33: // page up\r\n deltaY = i.containerHeight;\r\n break;\r\n case 34: // page down\r\n deltaY = -i.containerHeight;\r\n break;\r\n case 36: // home\r\n deltaY = i.contentHeight;\r\n break;\r\n case 35: // end\r\n deltaY = -i.contentHeight;\r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n if (i.settings.suppressScrollX && deltaX !== 0) {\r\n return;\r\n }\r\n if (i.settings.suppressScrollY && deltaY !== 0) {\r\n return;\r\n }\r\n\r\n element.scrollTop -= deltaY;\r\n element.scrollLeft += deltaX;\r\n updateGeometry(i);\r\n\r\n if (shouldPreventDefault(deltaX, deltaY)) {\r\n e.preventDefault();\r\n }\r\n });\r\n }\r\n\r\n function wheel(i) {\r\n var element = i.element;\r\n\r\n function shouldPreventDefault(deltaX, deltaY) {\r\n var roundedScrollTop = Math.floor(element.scrollTop);\r\n var isTop = element.scrollTop === 0;\r\n var isBottom =\r\n roundedScrollTop + element.offsetHeight === element.scrollHeight;\r\n var isLeft = element.scrollLeft === 0;\r\n var isRight =\r\n element.scrollLeft + element.offsetWidth === element.scrollWidth;\r\n\r\n var hitsBound;\r\n\r\n // pick axis with primary direction\r\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\r\n hitsBound = isTop || isBottom;\r\n } else {\r\n hitsBound = isLeft || isRight;\r\n }\r\n\r\n return hitsBound ? !i.settings.wheelPropagation : true;\r\n }\r\n\r\n function getDeltaFromEvent(e) {\r\n var deltaX = e.deltaX;\r\n var deltaY = -1 * e.deltaY;\r\n\r\n if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\r\n // OS X Safari\r\n deltaX = (-1 * e.wheelDeltaX) / 6;\r\n deltaY = e.wheelDeltaY / 6;\r\n }\r\n\r\n if (e.deltaMode && e.deltaMode === 1) {\r\n // Firefox in deltaMode 1: Line scrolling\r\n deltaX *= 10;\r\n deltaY *= 10;\r\n }\r\n\r\n if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\r\n // IE in some mouse drivers\r\n deltaX = 0;\r\n deltaY = e.wheelDelta;\r\n }\r\n\r\n if (e.shiftKey) {\r\n // reverse axis with shift key\r\n return [-deltaY, -deltaX];\r\n }\r\n return [deltaX, deltaY];\r\n }\r\n\r\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\r\n // FIXME: this is a workaround for
      ';\r\n } else {\r\n\r\n html += '';\r\n }\r\n\r\n this.$chipsWrapper.html(html);\r\n\r\n this.setPlaceholder();\r\n }\r\n\r\n getSingleChipTemplate(chip) {\r\n\r\n if (!chip.tag) {\r\n return '';\r\n }\r\n\r\n let html = `
      ${chip.tag}`;\r\n\r\n if (chip.image) {\r\n html += ` `;\r\n }\r\n\r\n html += '';\r\n html += '
      ';\r\n\r\n return html;\r\n }\r\n\r\n setPlaceholder() {\r\n\r\n this.$chipsWrapper.find('input').prop('placeholder', this.options.data.length ? this.options.placeholder : this.options.secondaryPlaceholder);\r\n }\r\n\r\n addChip(chip) {\r\n\r\n if (!this.isValid(chip)) {\r\n return;\r\n }\r\n\r\n const $newChip = $(this.getSingleChipTemplate(chip));\r\n\r\n this.$chipsWrapper.data('chips').push(chip);\r\n this.options.data.push(chip);\r\n\r\n if (this.$chipsWrapper.hasClass('chips-autocomplete') && this.$chipsWrapper.find('.chip').length > 0) {\r\n\r\n $newChip.insertAfter(this.$chipsWrapper.find('.chip').last());\r\n } else {\r\n\r\n $newChip.insertBefore(this.$chipsWrapper.find('input'));\r\n }\r\n\r\n this.$chipsWrapper.trigger('chip.add', chip);\r\n\r\n this.setPlaceholder();\r\n }\r\n\r\n isValid(chip) {\r\n\r\n return chip.tag !== '' && !this.options.data.some((c) => c.tag === chip.tag);\r\n }\r\n\r\n deleteChip(chipIndex) {\r\n\r\n const chip = this.$chipsWrapper.data('chips')[chipIndex];\r\n\r\n this.$chipsWrapper.find('.chip').eq(chipIndex).remove();\r\n\r\n this.$chipsWrapper.data('chips').splice(chipIndex, 1);\r\n this.options.data.splice(chipIndex, 1);\r\n\r\n this.$chipsWrapper.trigger('chip.delete', chip);\r\n\r\n this.setPlaceholder();\r\n }\r\n\r\n selectChip(chipIndex) {\r\n \r\n const $chip = this.$chipsWrapper.find('.chip').eq(chipIndex);\r\n if ($chip && !$chip.hasClass('selected')) {\r\n\r\n $chip.addClass('selected');\r\n this.$chipsWrapper.trigger('chip.select', this.$chipsWrapper.data('chips')[chipIndex]);\r\n }\r\n }\r\n\r\n fallback() {\r\n\r\n return {\r\n _value: undefined,\r\n or(value) {\r\n if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\r\n this._value = value;\r\n }\r\n return this;\r\n },\r\n value() {\r\n return this._value;\r\n }\r\n };\r\n }\r\n }\r\n\r\n $.fn.materialChip = function (options) {\r\n\r\n if (this.length > 1) {\r\n\r\n const instances = [];\r\n\r\n this.each(function () {\r\n\r\n const materialChips = new MaterialChips($(this), options);\r\n materialChips.init();\r\n\r\n instances.push(materialChips.returnPublicInterface());\r\n });\r\n\r\n return instances;\r\n }\r\n\r\n const materialChips = new MaterialChips($(this), options);\r\n materialChips.init();\r\n\r\n return materialChips.returnPublicInterface();\r\n };\r\n});\r\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: sloppyArrayMethod('some') }, {\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !nativeAssign || fails(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n","jQuery(($) => {\r\n\r\n class Sticky {\r\n\r\n constructor(element, options) {\r\n\r\n this.defaults = {\r\n topSpacing: 0,\r\n zIndex: false,\r\n stopper: '#footer',\r\n stickyClass: false,\r\n startScrolling: 'top',\r\n minWidth: false\r\n };\r\n\r\n this.$element = element;\r\n this.options = this.assignOptions(options);\r\n\r\n this.$window = $(window);\r\n\r\n this.stopper = this.options.stopper;\r\n this.elementWidth = this.$element.outerWidth();\r\n this.elementHeight = this.$element.outerHeight(true);\r\n\r\n this.initialScrollTop = this.$element.offset().top;\r\n\r\n this.$placeholder = $('
      ');\r\n this.scrollTop = 0;\r\n\r\n this.setPushPoint();\r\n this.setStopperPosition();\r\n this.bindEvents();\r\n\r\n }\r\n\r\n hasZIndex() {\r\n\r\n return typeof this.options.zIndex === 'number';\r\n }\r\n\r\n hasStopper() {\r\n\r\n return $(this.options.stopper).length || typeof this.options.stopper === 'number';\r\n }\r\n\r\n isScreenHeightEnough() {\r\n\r\n return this.$element.outerHeight() + this.options.topSpacing < this.$window.height();\r\n }\r\n\r\n assignOptions(options) {\r\n\r\n return $.extend({}, this.defaults, options);\r\n }\r\n\r\n setPushPoint() {\r\n\r\n if (this.options.startScrolling === 'bottom' && !this.isScreenHeightEnough()) {\r\n\r\n this.$pushPoint = this.initialScrollTop + this.$element.outerHeight(true) - this.$window.height();\r\n } else {\r\n\r\n this.$pushPoint = this.initialScrollTop - this.options.topSpacing;\r\n }\r\n\r\n }\r\n\r\n setStopperPosition() {\r\n\r\n if (typeof this.options.stopper === 'string') {\r\n\r\n this.stopPoint = $(this.stopper).offset().top - this.options.topSpacing;\r\n\r\n } else if (typeof this.options.stopper === 'number') {\r\n\r\n this.stopPoint = this.options.stopper;\r\n }\r\n }\r\n\r\n bindEvents() {\r\n\r\n this.$window.on('resize', this.handleResize.bind(this));\r\n this.$window.on('scroll', this.init.bind(this));\r\n\r\n }\r\n\r\n handleResize() {\r\n\r\n const $parent = this.$element.parent();\r\n\r\n this.elementWidth = $parent.width();\r\n this.elementHeight = this.$element.outerHeight(true);\r\n\r\n this.setPushPoint();\r\n this.setStopperPosition();\r\n\r\n this.init();\r\n }\r\n\r\n // eslint-disable-next-line consistent-return\r\n init() {\r\n\r\n if (this.options.minWidth && this.options.minWidth > this.$window.innerWidth()) {\r\n\r\n return false;\r\n }\r\n\r\n if (this.options.startScrolling === 'bottom' && !this.isScreenHeightEnough()) {\r\n this.scrollTop = this.$window.scrollTop() + this.$window.height();\r\n } else {\r\n this.scrollTop = this.$window.scrollTop();\r\n }\r\n\r\n if (this.$pushPoint < this.scrollTop) {\r\n\r\n this.appendPlaceholder();\r\n this.stickyStart();\r\n\r\n } else {\r\n this.stickyEnd();\r\n }\r\n\r\n if (this.$window.scrollTop() > this.$pushPoint) {\r\n this.stop();\r\n } else {\r\n this.stickyEnd();\r\n }\r\n\r\n }\r\n\r\n appendPlaceholder() {\r\n\r\n this.$element.after(this.$placeholder);\r\n this.$placeholder.css({\r\n width: this.elementWidth,\r\n height: this.elementHeight\r\n });\r\n }\r\n\r\n stickyStart() {\r\n\r\n if (this.options.stickyClass) {\r\n\r\n this.$element.addClass(this.options.stickyClass);\r\n }\r\n\r\n // @see: https://stackoverflow.com/a/4370047\r\n this.$element.get(0).style.overflow = 'scroll';\r\n const scrollHeight = this.$element.get(0).scrollHeight;\r\n this.$element.get(0).style.overflow = '';\r\n\r\n this.$element.css({\r\n position: 'fixed',\r\n width: this.elementWidth,\r\n height: scrollHeight\r\n });\r\n\r\n if (this.options.startScrolling === 'bottom' && !this.isScreenHeightEnough()) {\r\n this.$element.css({\r\n bottom: 0,\r\n top: ''\r\n });\r\n\r\n } else {\r\n\r\n this.$element.css({\r\n top: this.options.topSpacing\r\n });\r\n }\r\n\r\n if (this.hasZIndex()) {\r\n this.$element.css({\r\n zIndex: this.options.zIndex\r\n });\r\n }\r\n }\r\n\r\n stickyEnd() {\r\n\r\n if (this.options.stickyClass) {\r\n this.$element.removeClass(this.options.stickyClass);\r\n }\r\n\r\n this.$placeholder.remove();\r\n\r\n this.$element.css({\r\n position: 'static',\r\n top: this.options.topSpacing,\r\n width: '',\r\n height: ''\r\n });\r\n }\r\n\r\n stop() {\r\n\r\n if (this.stopPoint < $(this.$element).offset().top - this.options.topSpacing + this.$element.outerHeight(true)) {\r\n this.$element.css({\r\n position: 'absolute',\r\n bottom: 0,\r\n top: ''\r\n });\r\n }\r\n }\r\n\r\n }\r\n\r\n $.fn.sticky = function (options) {\r\n $(this).each(function () {\r\n const sticky = new Sticky($(this), options);\r\n sticky.init();\r\n });\r\n };\r\n});\r\n","var $ = require('../internals/export');\n\n// `Number.MAX_SAFE_INTEGER` constant\n// https://tc39.github.io/ecma262/#sec-number.max_safe_integer\n$({ target: 'Number', stat: true }, {\n MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF\n});\n","var $ = require('../internals/export');\n\n// `Number.MIN_SAFE_INTEGER` constant\n// https://tc39.github.io/ecma262/#sec-number.min_safe_integer\n$({ target: 'Number', stat: true }, {\n MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF\n});\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n","var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.github.io/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","var setToStringTag = require('../internals/set-to-string-tag');\n\n// Math[@@toStringTag] property\n// https://tc39.github.io/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n","/*!\r\n * pickadate.js v3.6.3, 2019/04/03\r\n * By Amsul, http://amsul.ca\r\n * Hosted on http://amsul.github.io/pickadate.js\r\n * Licensed under MIT\r\n */\r\n\r\n(function ( factory ) {\r\n\r\n // AMD.\r\n if ( typeof define == 'function' && define.amd )\r\n define( 'picker', ['jquery'], factory )\r\n \r\n // Node.js/browserify.\r\n else if ( typeof exports == 'object' )\r\n module.exports = factory( require('jquery') )\r\n \r\n // Browser globals.\r\n else window.Picker = factory( jQuery )\r\n \r\n }(function( $ ) {\r\n \r\n var $window = $( window )\r\n var $document = $( document )\r\n var $html = $( document.documentElement )\r\n var supportsTransitions = document.documentElement.style.transition != null\r\n \r\n \r\n /**\r\n * The picker constructor that creates a blank picker.\r\n */\r\n function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {\r\n \r\n // If there’s no element, return the picker constructor.\r\n if ( !ELEMENT ) return PickerConstructor\r\n \r\n var IS_DEFAULT_THEME = false,\r\n \r\n // The state of the picker.\r\n STATE = {\r\n id: ELEMENT.id || 'P' + Math.abs( ~~(Math.random() * new Date()) ),\r\n handlingOpen: false,\r\n },\r\n \r\n // Merge the defaults and options passed.\r\n SETTINGS = COMPONENT ? $.extend( true, {}, COMPONENT.defaults, OPTIONS ) : OPTIONS || {},\r\n \r\n // Merge the default classes with the settings classes.\r\n CLASSES = $.extend( {}, PickerConstructor.klasses(), SETTINGS.klass ),\r\n \r\n // The element node wrapper into a jQuery object.\r\n $ELEMENT = $( ELEMENT ),\r\n \r\n // On editable:true checks if should open\r\n OPENCOUNTER = 2,\r\n \r\n // Pseudo picker constructor.\r\n PickerInstance = function() {\r\n return this.start()\r\n },\r\n \r\n // The picker prototype.\r\n P = PickerInstance.prototype = {\r\n \r\n constructor: PickerInstance,\r\n \r\n $node: $ELEMENT,\r\n \r\n /**\r\n * Initialize everything\r\n */\r\n start: function() {\r\n \r\n // If it’s already started, do nothing.\r\n if ( STATE && STATE.start ) return P\r\n \r\n // Update the picker states.\r\n STATE.methods = {}\r\n STATE.start = true\r\n STATE.open = false\r\n STATE.type = ELEMENT.type\r\n \r\n \r\n // Confirm focus state, convert into text input to remove UA stylings,\r\n // and set as readonly to prevent keyboard popup.\r\n ELEMENT.autofocus = ELEMENT == getActiveElement()\r\n ELEMENT.readOnly = !SETTINGS.editable\r\n ELEMENT.id = ELEMENT.id || STATE.id\r\n if ( ELEMENT.type != 'text' ) {\r\n ELEMENT.type = 'text'\r\n }\r\n \r\n \r\n // Create a new picker component with the settings.\r\n P.component = new COMPONENT(P, SETTINGS)\r\n \r\n \r\n // Create the picker root and then prepare it.\r\n P.$root = $( '
      ' )\r\n prepareElementRoot()\r\n \r\n \r\n // Create the picker holder and then prepare it.\r\n P.$holder = $( createWrappedComponent() ).appendTo( P.$root )\r\n prepareElementHolder()\r\n \r\n \r\n // If there’s a format for the hidden input element, create the element.\r\n if ( SETTINGS.formatSubmit ) {\r\n prepareElementHidden()\r\n }\r\n \r\n \r\n // Prepare the input element.\r\n prepareElement()\r\n \r\n \r\n // Insert the hidden input as specified in the settings.\r\n if ( SETTINGS.containerHidden ) $( SETTINGS.containerHidden ).append( P._hidden )\r\n else $ELEMENT.after( P._hidden )\r\n \r\n \r\n // Insert the root as specified in the settings.\r\n if ( SETTINGS.container ) $( SETTINGS.container ).append( P.$root )\r\n else $ELEMENT.after( P.$root )\r\n \r\n \r\n // Bind the default component and settings events.\r\n P.on({\r\n start: P.component.onStart,\r\n render: P.component.onRender,\r\n stop: P.component.onStop,\r\n open: P.component.onOpen,\r\n close: P.component.onClose,\r\n set: P.component.onSet\r\n }).on({\r\n start: SETTINGS.onStart,\r\n render: SETTINGS.onRender,\r\n stop: SETTINGS.onStop,\r\n open: SETTINGS.onOpen,\r\n close: SETTINGS.onClose,\r\n set: SETTINGS.onSet\r\n })\r\n \r\n \r\n // Once we’re all set, check the theme in use.\r\n IS_DEFAULT_THEME = isUsingDefaultTheme( P.$holder[0] )\r\n \r\n \r\n // If the element has autofocus, open the picker.\r\n if ( ELEMENT.autofocus ) {\r\n P.open()\r\n }\r\n \r\n \r\n // Trigger queued the “start” and “render” events.\r\n return P.trigger( 'start' ).trigger( 'render' )\r\n }, //start\r\n \r\n \r\n /**\r\n * Render a new picker\r\n */\r\n render: function( entireComponent ) {\r\n \r\n // Insert a new component holder in the root or box.\r\n if ( entireComponent ) {\r\n P.$holder = $( createWrappedComponent() )\r\n prepareElementHolder()\r\n P.$root.html( P.$holder )\r\n }\r\n else P.$root.find( '.' + CLASSES.box ).html( P.component.nodes( STATE.open ) )\r\n \r\n // Trigger the queued “render” events.\r\n return P.trigger( 'render' )\r\n }, //render\r\n \r\n \r\n /**\r\n * Destroy everything\r\n */\r\n stop: function() {\r\n \r\n // If it’s already stopped, do nothing.\r\n if ( !STATE.start ) return P\r\n \r\n // Then close the picker.\r\n P.close()\r\n \r\n // Remove the hidden field.\r\n if ( P._hidden ) {\r\n P._hidden.parentNode.removeChild( P._hidden )\r\n }\r\n \r\n // Remove the root.\r\n P.$root.remove()\r\n \r\n // Remove the input class, remove the stored data, and unbind\r\n // the events (after a tick for IE - see `P.close`).\r\n $ELEMENT.removeClass( CLASSES.input ).removeData( NAME )\r\n setTimeout( function() {\r\n $ELEMENT.off( '.' + STATE.id )\r\n }, 0)\r\n \r\n // Restore the element state\r\n ELEMENT.type = STATE.type\r\n ELEMENT.readOnly = false\r\n \r\n // Trigger the queued “stop” events.\r\n P.trigger( 'stop' )\r\n \r\n // Reset the picker states.\r\n STATE.methods = {}\r\n STATE.start = false\r\n \r\n return P\r\n }, //stop\r\n \r\n \r\n /**\r\n * Open up the picker\r\n */\r\n open: function( dontGiveFocus ) {\r\n OPENCOUNTER++\r\n // If it’s already open, do nothing.\r\n if ( STATE.open ) return P\r\n \r\n // If it’s editable and already opened, do nothing.\r\n if (OPENCOUNTER<4 && SETTINGS.editable) return P\r\n \r\n // * A Firefox bug, when `html` has `overflow:hidden`, results in\r\n // killing transitions :(. So add the “opened” state on the next tick.\r\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289\r\n setTimeout( function() {\r\n \r\n // Add the “opened” class to the picker root.\r\n P.$root.addClass( CLASSES.opened )\r\n aria( P.$root[0], 'hidden', false )\r\n \r\n }, 0 )\r\n \r\n // If we have to give focus, bind the element and doc events.\r\n if ( dontGiveFocus !== false ) {\r\n \r\n // Set it as open.\r\n STATE.open = true\r\n \r\n // Prevent the page from scrolling.\r\n if ( IS_DEFAULT_THEME ) {\r\n $('body').\r\n css( 'overflow', 'hidden' ).\r\n css( 'padding-right', '+=' + getScrollbarWidth() )\r\n }\r\n \r\n // Pass focus to the root element’s jQuery object.\r\n focusPickerOnceOpened()\r\n \r\n // Bind the document events.\r\n $document.on( 'click.' + STATE.id + ' focusin.' + STATE.id, function( event ) {\r\n // If the picker is currently midway through processing\r\n // the opening sequence of events then don't handle clicks\r\n // on any part of the DOM. This is caused by a bug in Chrome 73\r\n // where a click event is being generated with the incorrect\r\n // path in it.\r\n // In short, if someone does a click that finishes after the\r\n // new element is created then the path contains only the\r\n // parent element and not the input element itself.\r\n if (STATE.handlingOpen) {\r\n return;\r\n }\r\n \r\n var target = getRealEventTarget( event, ELEMENT )\r\n \r\n // If the target of the event is not the element, close the picker picker.\r\n // * Don’t worry about clicks or focusins on the root because those don’t bubble up.\r\n // Also, for Firefox, a click on an `option` element bubbles up directly\r\n // to the doc. So make sure the target wasn't the doc.\r\n // * In Firefox stopPropagation() doesn’t prevent right-click events from bubbling,\r\n // which causes the picker to unexpectedly close when right-clicking it. So make\r\n // sure the event wasn’t a right-click.\r\n // * In Chrome 62 and up, password autofill causes a simulated focusin event which\r\n // closes the picker.\r\n if ( ! event.isSimulated && target != ELEMENT && target != document && event.which != 3 ) {\r\n \r\n // If the target was the holder that covers the screen,\r\n // keep the element focused to maintain tabindex.\r\n P.close( target === P.$holder[0] )\r\n }\r\n \r\n }).on( 'keydown.' + STATE.id, function( event ) {\r\n \r\n var\r\n // Get the keycode.\r\n keycode = event.keyCode,\r\n \r\n // Translate that to a selection change.\r\n keycodeToMove = P.component.key[ keycode ],\r\n \r\n // Grab the target.\r\n target = getRealEventTarget( event, ELEMENT )\r\n \r\n \r\n // On escape, close the picker and give focus.\r\n if ( keycode == 27 ) {\r\n P.close( true )\r\n }\r\n \r\n \r\n // Check if there is a key movement or “enter” keypress on the element.\r\n else if ( target == P.$holder[0] && ( keycodeToMove || keycode == 13 ) ) {\r\n \r\n // Prevent the default action to stop page movement.\r\n event.preventDefault()\r\n \r\n // Trigger the key movement action.\r\n if ( keycodeToMove ) {\r\n PickerConstructor._.trigger( P.component.key.go, P, [ PickerConstructor._.trigger( keycodeToMove ) ] )\r\n }\r\n \r\n // On “enter”, if the highlighted item isn’t disabled, set the value and close.\r\n else if ( !P.$root.find( '.' + CLASSES.highlighted ).hasClass( CLASSES.disabled ) ) {\r\n P.set( 'select', P.component.item.highlight )\r\n if ( SETTINGS.closeOnSelect ) {\r\n P.close( true )\r\n }\r\n }\r\n }\r\n \r\n \r\n // If the target is within the root and “enter” is pressed,\r\n // prevent the default action and trigger a click on the target instead.\r\n else if ( $.contains( P.$root[0], target ) && keycode == 13 ) {\r\n event.preventDefault()\r\n target.click()\r\n }\r\n })\r\n }\r\n \r\n // Trigger the queued “open” events.\r\n return P.trigger( 'open' )\r\n }, //open\r\n \r\n \r\n /**\r\n * Close the picker\r\n */\r\n close: function( giveFocus ) {\r\n OPENCOUNTER = 0;\r\n \r\n // If it’s already closed, do nothing more.\r\n if ( !STATE.open ) return P\r\n\r\n // If we need to give focus, do it before changing states.\r\n if ( giveFocus ) {\r\n if ( SETTINGS.editable ) {\r\n ELEMENT.click();\r\n }\r\n else {\r\n // ....ah yes! It would’ve been incomplete without a crazy workaround for IE :|\r\n // The focus is triggered *after* the close has completed - causing it\r\n // to open again. So unbind and rebind the event at the next tick.\r\n P.$holder.off( 'focus.toOpen' ).focus()\r\n setTimeout( function() {\r\n P.$holder.on( 'focus.toOpen', handleFocusToOpenEvent )\r\n }, 0 )\r\n }\r\n }\r\n \r\n // Remove the “active” class.\r\n $ELEMENT.removeClass( CLASSES.active )\r\n aria( ELEMENT, 'expanded', false )\r\n \r\n // * A Firefox bug, when `html` has `overflow:hidden`, results in\r\n // killing transitions :(. So remove the “opened” state on the next tick.\r\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289\r\n setTimeout( function() {\r\n \r\n // Remove the “opened” and “focused” class from the picker root.\r\n P.$root.removeClass( CLASSES.opened + ' ' + CLASSES.focused )\r\n aria( P.$root[0], 'hidden', true )\r\n \r\n }, 0 )\r\n \r\n // Allow the page to scroll.\r\n if ( IS_DEFAULT_THEME ) {\r\n $('body').\r\n css( 'overflow', '' ).\r\n css( 'padding-right', '-=' + getScrollbarWidth() )\r\n }\r\n \r\n document.activeElement.blur();\r\n // Unbind the document events.\r\n $document.off( '.' + STATE.id )\r\n // Set it as closed.\r\n STATE.open = false\r\n // Trigger the queued “close” events.\r\n return P.trigger( 'close' )\r\n }, //close\r\n \r\n \r\n /**\r\n * Clear the values\r\n */\r\n clear: function( options ) {\r\n document.activeElement.blur();\r\n return P.set( 'clear', null, options )\r\n }, //clear\r\n \r\n \r\n /**\r\n * Set something\r\n */\r\n set: function( thing, value, options ) {\r\n \r\n var thingItem, thingValue,\r\n thingIsObject = $.isPlainObject( thing ),\r\n thingObject = thingIsObject ? thing : {}\r\n \r\n // Make sure we have usable options.\r\n options = thingIsObject && $.isPlainObject( value ) ? value : options || {}\r\n \r\n if ( thing ) {\r\n \r\n // If the thing isn’t an object, make it one.\r\n if ( !thingIsObject ) {\r\n thingObject[ thing ] = value\r\n }\r\n \r\n // Go through the things of items to set.\r\n for ( thingItem in thingObject ) {\r\n \r\n // Grab the value of the thing.\r\n thingValue = thingObject[ thingItem ]\r\n \r\n // First, if the item exists and there’s a value, set it.\r\n if ( thingItem in P.component.item ) {\r\n if ( thingValue === undefined ) thingValue = null\r\n P.component.set( thingItem, thingValue, options )\r\n }\r\n \r\n // Then, check to update the element value and broadcast a change.\r\n if ( ( thingItem == 'select' || thingItem == 'clear' ) && SETTINGS.updateInput ) {\r\n $ELEMENT.\r\n val( thingItem == 'clear' ? '' : P.get( thingItem, SETTINGS.format ) ).\r\n trigger( 'change' )\r\n }\r\n }\r\n \r\n // Render a new picker.\r\n P.render()\r\n }\r\n \r\n // When the method isn’t muted, trigger queued “set” events and pass the `thingObject`.\r\n return options.muted ? P : P.trigger( 'set', thingObject )\r\n }, //set\r\n \r\n \r\n /**\r\n * Get something\r\n */\r\n get: function( thing, format ) {\r\n \r\n // Make sure there’s something to get.\r\n thing = thing || 'value'\r\n \r\n // If a picker state exists, return that.\r\n if ( STATE[ thing ] != null ) {\r\n return STATE[ thing ]\r\n }\r\n \r\n // Return the submission value, if that.\r\n if ( thing == 'valueSubmit' ) {\r\n if ( P._hidden ) {\r\n return P._hidden.value\r\n }\r\n thing = 'value'\r\n }\r\n \r\n // Return the value, if that.\r\n if ( thing == 'value' ) {\r\n return ELEMENT.value\r\n }\r\n \r\n // Check if a component item exists, return that.\r\n if ( thing in P.component.item ) {\r\n if ( typeof format == 'string' ) {\r\n var thingValue = P.component.get( thing )\r\n return thingValue ?\r\n PickerConstructor._.trigger(\r\n P.component.formats.toString,\r\n P.component,\r\n [ format, thingValue ]\r\n ) : ''\r\n }\r\n return P.component.get( thing )\r\n }\r\n }, //get\r\n \r\n \r\n \r\n /**\r\n * Bind events on the things.\r\n */\r\n on: function( thing, method, internal ) {\r\n \r\n var thingName, thingMethod,\r\n thingIsObject = $.isPlainObject( thing ),\r\n thingObject = thingIsObject ? thing : {}\r\n \r\n if ( thing ) {\r\n \r\n // If the thing isn’t an object, make it one.\r\n if ( !thingIsObject ) {\r\n thingObject[ thing ] = method\r\n }\r\n \r\n // Go through the things to bind to.\r\n for ( thingName in thingObject ) {\r\n \r\n // Grab the method of the thing.\r\n thingMethod = thingObject[ thingName ]\r\n \r\n // If it was an internal binding, prefix it.\r\n if ( internal ) {\r\n thingName = '_' + thingName\r\n }\r\n \r\n // Make sure the thing methods collection exists.\r\n STATE.methods[ thingName ] = STATE.methods[ thingName ] || []\r\n \r\n // Add the method to the relative method collection.\r\n STATE.methods[ thingName ].push( thingMethod )\r\n }\r\n }\r\n \r\n return P\r\n }, //on\r\n \r\n \r\n \r\n /**\r\n * Unbind events on the things.\r\n */\r\n off: function() {\r\n var i, thingName,\r\n names = arguments;\r\n for ( i = 0, namesCount = names.length; i < namesCount; i += 1 ) {\r\n thingName = names[i]\r\n if ( thingName in STATE.methods ) {\r\n delete STATE.methods[thingName]\r\n }\r\n }\r\n return P\r\n },\r\n \r\n \r\n /**\r\n * Fire off method events.\r\n */\r\n trigger: function( name, data ) {\r\n var _trigger = function( name ) {\r\n var methodList = STATE.methods[ name ]\r\n if ( methodList ) {\r\n methodList.map( function( method ) {\r\n PickerConstructor._.trigger( method, P, [ data ] )\r\n })\r\n }\r\n }\r\n _trigger( '_' + name )\r\n _trigger( name )\r\n return P\r\n } //trigger\r\n } //PickerInstance.prototype\r\n \r\n \r\n /**\r\n * Wrap the picker holder components together.\r\n */\r\n function createWrappedComponent() {\r\n \r\n // Create a picker wrapper holder\r\n return PickerConstructor._.node( 'div',\r\n \r\n // Create a picker wrapper node\r\n PickerConstructor._.node( 'div',\r\n \r\n // Create a picker frame\r\n PickerConstructor._.node( 'div',\r\n \r\n // Create a picker box node\r\n PickerConstructor._.node( 'div',\r\n \r\n // Create the components nodes.\r\n P.component.nodes( STATE.open ),\r\n \r\n // The picker box class\r\n CLASSES.box\r\n ),\r\n \r\n // Picker wrap class\r\n CLASSES.wrap\r\n ),\r\n \r\n // Picker frame class\r\n CLASSES.frame\r\n ),\r\n \r\n // Picker holder class\r\n CLASSES.holder,\r\n \r\n 'tabindex=\"-1\"'\r\n ) //endreturn\r\n } //createWrappedComponent\r\n \r\n /**\r\n * Prepare the input element with all bindings.\r\n */\r\n function prepareElement() {\r\n \r\n $ELEMENT.\r\n \r\n // Store the picker data by component name.\r\n data(NAME, P).\r\n \r\n // Add the “input” class name.\r\n addClass(CLASSES.input).\r\n \r\n // If there’s a `data-value`, update the value of the element.\r\n val( $ELEMENT.data('value') ?\r\n P.get('select', SETTINGS.format) :\r\n ELEMENT.value\r\n ).\r\n \r\n // On focus/click, open the picker.\r\n on( 'focus.' + STATE.id + ' click.' + STATE.id,\r\n debounce(function(event) {\r\n event.preventDefault()\r\n P.open()\r\n }, 100))\r\n \r\n // Mousedown handler to capture when the user starts interacting\r\n // with the picker. This is used in working around a bug in Chrome 73.\r\n .on('mousedown', function() {\r\n STATE.handlingOpen = true;\r\n var handler = function() {\r\n // By default mouseup events are fired before a click event.\r\n // By using a timeout we can force the mouseup to be handled\r\n // after the corresponding click event is handled.\r\n setTimeout(function() {\r\n $(document).off('mouseup', handler);\r\n STATE.handlingOpen = false;\r\n }, 0);\r\n };\r\n $(document).on('mouseup', handler);\r\n });\r\n \r\n \r\n // Only bind keydown events if the element isn’t editable.\r\n if ( !SETTINGS.editable ) {\r\n \r\n $ELEMENT.\r\n \r\n // Handle keyboard event based on the picker being opened or not.\r\n on( 'keydown.' + STATE.id, handleKeydownEvent )\r\n }\r\n \r\n \r\n // Update the aria attributes.\r\n aria(ELEMENT, {\r\n haspopup: true,\r\n expanded: false,\r\n readonly: false,\r\n owns: ELEMENT.id + '_root'\r\n })\r\n }\r\n \r\n \r\n /**\r\n * Prepare the root picker element with all bindings.\r\n */\r\n function prepareElementRoot() {\r\n aria( P.$root[0], 'hidden', true )\r\n }\r\n \r\n \r\n /**\r\n * Prepare the holder picker element with all bindings.\r\n */\r\n function prepareElementHolder() {\r\n \r\n P.$holder.\r\n \r\n on({\r\n \r\n // For iOS8.\r\n keydown: handleKeydownEvent,\r\n \r\n 'focus.toOpen': handleFocusToOpenEvent,\r\n \r\n blur: function() {\r\n // Remove the “target” class.\r\n $ELEMENT.removeClass( CLASSES.target )\r\n },\r\n \r\n // When something within the holder is focused, stop from bubbling\r\n // to the doc and remove the “focused” state from the root.\r\n focusin: function( event ) {\r\n P.$root.removeClass( CLASSES.focused )\r\n event.stopPropagation()\r\n },\r\n \r\n // When something within the holder is clicked, stop it\r\n // from bubbling to the doc.\r\n 'mousedown click': function( event ) {\r\n \r\n var target = getRealEventTarget( event, ELEMENT )\r\n \r\n // Make sure the target isn’t the root holder so it can bubble up.\r\n if ( target != P.$holder[0] ) {\r\n \r\n event.stopPropagation()\r\n \r\n // * For mousedown events, cancel the default action in order to\r\n // prevent cases where focus is shifted onto external elements\r\n // when using things like jQuery mobile or MagnificPopup (ref: #249 & #120).\r\n // Also, for Firefox, don’t prevent action on the `option` element.\r\n if ( event.type == 'mousedown' && !$( target ).is( 'input, select, textarea, button, option' )) {\r\n \r\n event.preventDefault()\r\n \r\n // Re-focus onto the holder so that users can click away\r\n // from elements focused within the picker.\r\n P.$holder.eq(0).focus()\r\n }\r\n }\r\n }\r\n \r\n }).\r\n \r\n // If there’s a click on an actionable element, carry out the actions.\r\n on( 'click', '[data-pick], [data-nav], [data-clear], [data-close]', function() {\r\n \r\n var $target = $( this ),\r\n targetData = $target.data(),\r\n targetDisabled = $target.hasClass( CLASSES.navDisabled ) || $target.hasClass( CLASSES.disabled ),\r\n \r\n // * For IE, non-focusable elements can be active elements as well\r\n // (http://stackoverflow.com/a/2684561).\r\n activeElement = getActiveElement()\r\n activeElement = activeElement && ( (activeElement.type || activeElement.href ) ? activeElement : null);\r\n \r\n // If it’s disabled or nothing inside is actively focused, re-focus the element.\r\n if ( targetDisabled || activeElement && !$.contains( P.$root[0], activeElement ) ) {\r\n P.$holder.eq(0).focus()\r\n }\r\n \r\n // If something is superficially changed, update the `highlight` based on the `nav`.\r\n if ( !targetDisabled && targetData.nav ) {\r\n P.set( 'highlight', P.component.item.highlight, { nav: targetData.nav } )\r\n }\r\n \r\n // If something is picked, set `select` then close with focus.\r\n else if ( !targetDisabled && 'pick' in targetData ) {\r\n P.set( 'select', targetData.pick )\r\n if ( SETTINGS.closeOnSelect ) {\r\n P.close( true )\r\n }\r\n }\r\n \r\n // If a “clear” button is pressed, empty the values and close with focus.\r\n else if ( targetData.clear ) {\r\n P.clear()\r\n if ( SETTINGS.closeOnClear ) {\r\n P.close( true )\r\n }\r\n }\r\n \r\n else if ( targetData.close ) {\r\n P.close( true )\r\n }\r\n \r\n }) //P.$holder\r\n \r\n }\r\n \r\n \r\n /**\r\n * Prepare the hidden input element along with all bindings.\r\n */\r\n function prepareElementHidden() {\r\n \r\n var name\r\n \r\n if ( SETTINGS.hiddenName === true ) {\r\n name = ELEMENT.name\r\n ELEMENT.name = ''\r\n }\r\n else {\r\n name = [\r\n typeof SETTINGS.hiddenPrefix == 'string' ? SETTINGS.hiddenPrefix : '',\r\n typeof SETTINGS.hiddenSuffix == 'string' ? SETTINGS.hiddenSuffix : '_submit'\r\n ]\r\n name = name[0] + ELEMENT.name + name[1]\r\n }\r\n \r\n P._hidden = $(\r\n ''\r\n )[0]\r\n \r\n $ELEMENT.\r\n \r\n // If the value changes, update the hidden input with the correct format.\r\n on('change.' + STATE.id, function() {\r\n P._hidden.value = ELEMENT.value ?\r\n P.get('select', SETTINGS.formatSubmit) :\r\n ''\r\n })\r\n }\r\n \r\n \r\n // Wait for transitions to end before focusing the holder. Otherwise, while\r\n // using the `container` option, the view jumps to the container.\r\n function focusPickerOnceOpened() {\r\n \r\n if (IS_DEFAULT_THEME && supportsTransitions) {\r\n P.$holder.find('.' + CLASSES.frame).one('transitionend', function() {\r\n P.$holder.eq(0).focus()\r\n })\r\n }\r\n else {\r\n setTimeout(function() {\r\n P.$holder.eq(0).focus()\r\n }, 0)\r\n }\r\n }\r\n \r\n \r\n function handleFocusToOpenEvent(event) {\r\n \r\n // Stop the event from propagating to the doc.\r\n event.stopPropagation()\r\n \r\n // Add the “target” class.\r\n $ELEMENT.addClass( CLASSES.target )\r\n \r\n // Add the “focused” class to the root.\r\n P.$root.addClass( CLASSES.focused )\r\n \r\n // And then finally open the picker.\r\n P.open()\r\n }\r\n \r\n \r\n // For iOS8.\r\n function handleKeydownEvent( event ) {\r\n \r\n var keycode = event.keyCode,\r\n \r\n // Check if one of the delete keys was pressed.\r\n isKeycodeDelete = /^(8|46)$/.test(keycode)\r\n \r\n // For some reason IE clears the input value on “escape”.\r\n if ( keycode == 27 ) {\r\n P.close( true )\r\n return false\r\n }\r\n \r\n // Check if `space` or `delete` was pressed or the picker is closed with a key movement.\r\n if ( keycode == 32 || isKeycodeDelete || !STATE.open && P.component.key[keycode] ) {\r\n \r\n // Prevent it from moving the page and bubbling to doc.\r\n event.preventDefault()\r\n event.stopPropagation()\r\n \r\n // If `delete` was pressed, clear the values and close the picker.\r\n // Otherwise open the picker.\r\n if ( isKeycodeDelete ) { P.clear().close() }\r\n else { P.open() }\r\n }\r\n }\r\n \r\n \r\n // Return a new picker instance.\r\n return new PickerInstance()\r\n } //PickerConstructor\r\n \r\n \r\n \r\n /**\r\n * The default classes and prefix to use for the HTML classes.\r\n */\r\n PickerConstructor.klasses = function( prefix ) {\r\n prefix = prefix || 'picker'\r\n return {\r\n \r\n picker: prefix,\r\n opened: prefix + '--opened',\r\n focused: prefix + '--focused',\r\n \r\n input: prefix + '__input',\r\n active: prefix + '__input--active',\r\n target: prefix + '__input--target',\r\n \r\n holder: prefix + '__holder',\r\n \r\n frame: prefix + '__frame',\r\n wrap: prefix + '__wrap',\r\n \r\n box: prefix + '__box'\r\n }\r\n } //PickerConstructor.klasses\r\n \r\n \r\n \r\n /**\r\n * Check if the default theme is being used.\r\n */\r\n function isUsingDefaultTheme( element ) {\r\n \r\n var theme,\r\n prop = 'position'\r\n \r\n // For IE.\r\n if ( element.currentStyle ) {\r\n theme = element.currentStyle[prop]\r\n }\r\n \r\n // For normal browsers.\r\n else if ( window.getComputedStyle ) {\r\n theme = getComputedStyle( element )[prop]\r\n }\r\n \r\n return theme == 'fixed'\r\n }\r\n \r\n /**\r\n * Get the width of the browser’s scrollbar.\r\n * Taken from: https://github.com/VodkaBears/Remodal/blob/master/src/jquery.remodal.js\r\n */\r\n function getScrollbarWidth() {\r\n \r\n if ( $html.height() <= $window.height() ) {\r\n return 0\r\n }\r\n \r\n var $outer = $( '
      ' ).\r\n appendTo( 'body' )\r\n \r\n // Get the width without scrollbars.\r\n var widthWithoutScroll = $outer[0].offsetWidth\r\n \r\n // Force adding scrollbars.\r\n $outer.css( 'overflow', 'scroll' )\r\n \r\n // Add the inner div.\r\n var $inner = $( '
      ' ).appendTo( $outer )\r\n \r\n // Get the width with scrollbars.\r\n var widthWithScroll = $inner[0].offsetWidth\r\n \r\n // Remove the divs.\r\n $outer.remove()\r\n \r\n // Return the difference between the widths.\r\n return widthWithoutScroll - widthWithScroll\r\n }\r\n \r\n \r\n \r\n /**\r\n * Get the target element from the event.\r\n * If ELEMENT is supplied and present in the event path (ELEMENT is ancestor of the target),\r\n * returns ELEMENT instead\r\n */\r\n function getRealEventTarget( event, ELEMENT ) {\r\n \r\n var path = []\r\n \r\n if ( event.path ) {\r\n path = event.path\r\n }\r\n \r\n if ( event.originalEvent && event.originalEvent.path ) {\r\n path = event.originalEvent.path\r\n }\r\n \r\n if ( path && path.length > 0 ) {\r\n if ( ELEMENT && path.indexOf( ELEMENT ) >= 0 ) {\r\n return ELEMENT\r\n } else {\r\n return path[0]\r\n }\r\n }\r\n \r\n return event.target\r\n }\r\n \r\n // taken from https://davidwalsh.name/javascript-debounce-function\r\n function debounce(func, wait, immediate) {\r\n var timeout;\r\n return function() {\r\n var context = this, args = arguments;\r\n var later = function() {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n var callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n }\r\n \r\n /**\r\n * PickerConstructor helper methods.\r\n */\r\n PickerConstructor._ = {\r\n \r\n /**\r\n * Create a group of nodes. Expects:\r\n * `\r\n {\r\n min: {Integer},\r\n max: {Integer},\r\n i: {Integer},\r\n node: {String},\r\n item: {Function}\r\n }\r\n * `\r\n */\r\n group: function( groupObject ) {\r\n \r\n var\r\n // Scope for the looped object\r\n loopObjectScope,\r\n \r\n // Create the nodes list\r\n nodesList = '',\r\n \r\n // The counter starts from the `min`\r\n counter = PickerConstructor._.trigger( groupObject.min, groupObject )\r\n \r\n \r\n // Loop from the `min` to `max`, incrementing by `i`\r\n for ( ; counter <= PickerConstructor._.trigger( groupObject.max, groupObject, [ counter ] ); counter += groupObject.i ) {\r\n \r\n // Trigger the `item` function within scope of the object\r\n loopObjectScope = PickerConstructor._.trigger( groupObject.item, groupObject, [ counter ] )\r\n \r\n // Splice the subgroup and create nodes out of the sub nodes\r\n nodesList += PickerConstructor._.node(\r\n groupObject.node,\r\n loopObjectScope[ 0 ], // the node\r\n loopObjectScope[ 1 ], // the classes\r\n loopObjectScope[ 2 ] // the attributes\r\n )\r\n }\r\n \r\n // Return the list of nodes\r\n return nodesList\r\n }, //group\r\n \r\n \r\n /**\r\n * Create a dom node string\r\n */\r\n node: function( wrapper, item, klass, attribute ) {\r\n \r\n // If the item is false-y, just return an empty string\r\n if ( !item ) return ''\r\n \r\n // If the item is an array, do a join\r\n item = $.isArray( item ) ? item.join( '' ) : item\r\n \r\n // Check for the class\r\n klass = klass ? ' class=\"' + klass + '\"' : ''\r\n \r\n // Check for any attributes\r\n attribute = attribute ? ' ' + attribute : ''\r\n \r\n // Return the wrapped item\r\n return '<' + wrapper + klass + attribute + '>' + item + ''\r\n }, //node\r\n \r\n \r\n /**\r\n * Lead numbers below 10 with a zero.\r\n */\r\n lead: function( number ) {\r\n return ( number < 10 ? '0': '' ) + number\r\n },\r\n \r\n \r\n /**\r\n * Trigger a function otherwise return the value.\r\n */\r\n trigger: function( callback, scope, args ) {\r\n return typeof callback == 'function' ? callback.apply( scope, args || [] ) : callback\r\n },\r\n \r\n \r\n /**\r\n * If the second character is a digit, length is 2 otherwise 1.\r\n */\r\n digits: function( string ) {\r\n return ( /\\d/ ).test( string[ 1 ] ) ? 2 : 1\r\n },\r\n \r\n \r\n /**\r\n * Tell if something is a date object.\r\n */\r\n isDate: function( value ) {\r\n return {}.toString.call( value ).indexOf( 'Date' ) > -1 && this.isInteger( value.getDate() )\r\n },\r\n \r\n \r\n /**\r\n * Tell if something is an integer.\r\n */\r\n isInteger: function( value ) {\r\n return {}.toString.call( value ).indexOf( 'Number' ) > -1 && value % 1 === 0\r\n },\r\n \r\n \r\n /**\r\n * Create ARIA attribute strings.\r\n */\r\n ariaAttr: ariaAttr\r\n } //PickerConstructor._\r\n \r\n \r\n \r\n /**\r\n * Extend the picker with a component and defaults.\r\n */\r\n PickerConstructor.extend = function( name, Component ) {\r\n \r\n // Extend jQuery.\r\n $.fn[ name ] = function( options, action ) {\r\n \r\n // Grab the component data.\r\n var componentData = this.data( name )\r\n \r\n // If the picker is requested, return the data object.\r\n if ( options == 'picker' ) {\r\n return componentData\r\n }\r\n \r\n // If the component data exists and `options` is a string, carry out the action.\r\n if ( componentData && typeof options == 'string' ) {\r\n return PickerConstructor._.trigger( componentData[ options ], componentData, [ action ] )\r\n }\r\n \r\n // Otherwise go through each matched element and if the component\r\n // doesn’t exist, create a new picker using `this` element\r\n // and merging the defaults and options with a deep copy.\r\n return this.each( function() {\r\n var $this = $( this )\r\n if ( !$this.data( name ) ) {\r\n new PickerConstructor( this, name, Component, options )\r\n }\r\n })\r\n }\r\n \r\n // Set the defaults.\r\n $.fn[ name ].defaults = Component.defaults\r\n } //PickerConstructor.extend\r\n \r\n \r\n \r\n function aria(element, attribute, value) {\r\n if ( $.isPlainObject(attribute) ) {\r\n for ( var key in attribute ) {\r\n ariaSet(element, key, attribute[key])\r\n }\r\n }\r\n else {\r\n ariaSet(element, attribute, value)\r\n }\r\n }\r\n function ariaSet(element, attribute, value) {\r\n element.setAttribute(\r\n (attribute == 'role' ? '' : 'aria-') + attribute,\r\n value\r\n )\r\n }\r\n function ariaAttr(attribute, data) {\r\n if ( !$.isPlainObject(attribute) ) {\r\n attribute = { attribute: data }\r\n }\r\n data = ''\r\n for ( var key in attribute ) {\r\n var attr = (key == 'role' ? '' : 'aria-') + key,\r\n attrVal = attribute[key]\r\n data += attrVal == null ? '' : attr + '=\"' + attribute[key] + '\"'\r\n }\r\n return data\r\n }\r\n \r\n // IE8 bug throws an error for activeElements within iframes.\r\n function getActiveElement() {\r\n try {\r\n return document.activeElement\r\n } catch ( err ) { }\r\n }\r\n \r\n \r\n \r\n // Expose the picker constructor.\r\n return PickerConstructor\r\n \r\n \r\n }));\r\n \r\n","/*!\r\n * bsCustomFileInput v1.3.2 (https://github.com/Johann-S/bs-custom-file-input)\r\n * Copyright 2018 - 2019 Johann-S \r\n * Licensed under MIT (https://github.com/Johann-S/bs-custom-file-input/blob/master/LICENSE)\r\n */\r\n(function (global, factory) {\r\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\n typeof define === 'function' && define.amd ? define(factory) :\r\n (global = global || self, global.bsCustomFileInput = factory());\r\n}(this, function () {\r\n 'use strict';\r\n\r\n var Selector = {\r\n CUSTOMFILE: '.custom-file input[type=\"file\"]',\r\n CUSTOMFILELABEL: '.custom-file-label',\r\n FORM: 'form',\r\n INPUT: 'input'\r\n };\r\n\r\n var textNodeType = 3;\r\n\r\n var getDefaultText = function getDefaultText(input) {\r\n var defaultText = '';\r\n var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);\r\n\r\n if (label) {\r\n defaultText = label.innerHTML;\r\n }\r\n\r\n return defaultText;\r\n };\r\n\r\n var findFirstChildNode = function findFirstChildNode(element) {\r\n if (element.childNodes.length > 0) {\r\n var childNodes = [].slice.call(element.childNodes);\r\n\r\n for (var i = 0; i < childNodes.length; i++) {\r\n var node = childNodes[i];\r\n\r\n if (node.nodeType !== textNodeType) {\r\n return node;\r\n }\r\n }\r\n }\r\n\r\n return element;\r\n };\r\n\r\n var restoreDefaultText = function restoreDefaultText(input) {\r\n var defaultText = input.bsCustomFileInput.defaultText;\r\n var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);\r\n\r\n if (label) {\r\n var element = findFirstChildNode(label);\r\n element.innerHTML = defaultText;\r\n }\r\n };\r\n\r\n var fileApi = !!window.File;\r\n var FAKE_PATH = 'fakepath';\r\n var FAKE_PATH_SEPARATOR = '\\\\';\r\n\r\n var getSelectedFiles = function getSelectedFiles(input) {\r\n if (input.hasAttribute('multiple') && fileApi) {\r\n return [].slice.call(input.files).map(function (file) {\r\n return file.name;\r\n }).join(', ');\r\n }\r\n\r\n if (input.value.indexOf(FAKE_PATH) !== -1) {\r\n var splittedValue = input.value.split(FAKE_PATH_SEPARATOR);\r\n return splittedValue[splittedValue.length - 1];\r\n }\r\n\r\n return input.value;\r\n };\r\n\r\n function handleInputChange() {\r\n var label = this.parentNode.querySelector(Selector.CUSTOMFILELABEL);\r\n\r\n if (label) {\r\n var element = findFirstChildNode(label);\r\n var inputValue = getSelectedFiles(this);\r\n\r\n if (inputValue.length) {\r\n element.innerHTML = inputValue;\r\n } else {\r\n restoreDefaultText(this);\r\n }\r\n }\r\n }\r\n\r\n function handleFormReset() {\r\n var customFileList = [].slice.call(this.querySelectorAll(Selector.INPUT)).filter(function (input) {\r\n return !!input.bsCustomFileInput;\r\n });\r\n\r\n for (var i = 0, len = customFileList.length; i < len; i++) {\r\n restoreDefaultText(customFileList[i]);\r\n }\r\n }\r\n\r\n var customProperty = 'bsCustomFileInput';\r\n var Event = {\r\n FORMRESET: 'reset',\r\n INPUTCHANGE: 'change'\r\n };\r\n var bsCustomFileInput = {\r\n init: function init(inputSelector, formSelector) {\r\n if (inputSelector === void 0) {\r\n inputSelector = Selector.CUSTOMFILE;\r\n }\r\n\r\n if (formSelector === void 0) {\r\n formSelector = Selector.FORM;\r\n }\r\n\r\n var customFileInputList = [].slice.call(document.querySelectorAll(inputSelector));\r\n var formList = [].slice.call(document.querySelectorAll(formSelector));\r\n\r\n for (var i = 0, len = customFileInputList.length; i < len; i++) {\r\n var input = customFileInputList[i];\r\n Object.defineProperty(input, customProperty, {\r\n value: {\r\n defaultText: getDefaultText(input)\r\n },\r\n writable: true\r\n });\r\n handleInputChange.call(input);\r\n input.addEventListener(Event.INPUTCHANGE, handleInputChange);\r\n }\r\n\r\n for (var _i = 0, _len = formList.length; _i < _len; _i++) {\r\n formList[_i].addEventListener(Event.FORMRESET, handleFormReset);\r\n\r\n Object.defineProperty(formList[_i], customProperty, {\r\n value: true,\r\n writable: true\r\n });\r\n }\r\n },\r\n destroy: function destroy() {\r\n var formList = [].slice.call(document.querySelectorAll(Selector.FORM)).filter(function (form) {\r\n return !!form.bsCustomFileInput;\r\n });\r\n var customFileInputList = [].slice.call(document.querySelectorAll(Selector.INPUT)).filter(function (input) {\r\n return !!input.bsCustomFileInput;\r\n });\r\n\r\n for (var i = 0, len = customFileInputList.length; i < len; i++) {\r\n var input = customFileInputList[i];\r\n restoreDefaultText(input);\r\n input[customProperty] = undefined;\r\n input.removeEventListener(Event.INPUTCHANGE, handleInputChange);\r\n }\r\n\r\n for (var _i2 = 0, _len2 = formList.length; _i2 < _len2; _i2++) {\r\n formList[_i2].removeEventListener(Event.FORMRESET, handleFormReset);\r\n\r\n formList[_i2][customProperty] = undefined;\r\n }\r\n }\r\n };\r\n\r\n return bsCustomFileInput;\r\n\r\n}));\r\n//# sourceMappingURL=bs-custom-file-input.js.map\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n\r\n bsCustomFileInput.init()\r\n});\r\n","/*!\r\n * Chart.js\r\n * http://chartjs.org/\r\n * Version: 2.7.3\r\n *\r\n * Copyright 2018 Chart.js Contributors\r\n * Released under the MIT license\r\n * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md\r\n */\r\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Chart = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i lum2) {\r\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\r\n\t\t}\r\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\r\n\t},\r\n\r\n\tlevel: function (color2) {\r\n\t\tvar contrastRatio = this.contrast(color2);\r\n\t\tif (contrastRatio >= 7.1) {\r\n\t\t\treturn 'AAA';\r\n\t\t}\r\n\r\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\r\n\t},\r\n\r\n\tdark: function () {\r\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\r\n\t\tvar rgb = this.values.rgb;\r\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\r\n\t\treturn yiq < 128;\r\n\t},\r\n\r\n\tlight: function () {\r\n\t\treturn !this.dark();\r\n\t},\r\n\r\n\tnegate: function () {\r\n\t\tvar rgb = [];\r\n\t\tfor (var i = 0; i < 3; i++) {\r\n\t\t\trgb[i] = 255 - this.values.rgb[i];\r\n\t\t}\r\n\t\tthis.setValues('rgb', rgb);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tlighten: function (ratio) {\r\n\t\tvar hsl = this.values.hsl;\r\n\t\thsl[2] += hsl[2] * ratio;\r\n\t\tthis.setValues('hsl', hsl);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tdarken: function (ratio) {\r\n\t\tvar hsl = this.values.hsl;\r\n\t\thsl[2] -= hsl[2] * ratio;\r\n\t\tthis.setValues('hsl', hsl);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tsaturate: function (ratio) {\r\n\t\tvar hsl = this.values.hsl;\r\n\t\thsl[1] += hsl[1] * ratio;\r\n\t\tthis.setValues('hsl', hsl);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tdesaturate: function (ratio) {\r\n\t\tvar hsl = this.values.hsl;\r\n\t\thsl[1] -= hsl[1] * ratio;\r\n\t\tthis.setValues('hsl', hsl);\r\n\t\treturn this;\r\n\t},\r\n\r\n\twhiten: function (ratio) {\r\n\t\tvar hwb = this.values.hwb;\r\n\t\thwb[1] += hwb[1] * ratio;\r\n\t\tthis.setValues('hwb', hwb);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tblacken: function (ratio) {\r\n\t\tvar hwb = this.values.hwb;\r\n\t\thwb[2] += hwb[2] * ratio;\r\n\t\tthis.setValues('hwb', hwb);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tgreyscale: function () {\r\n\t\tvar rgb = this.values.rgb;\r\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\r\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\r\n\t\tthis.setValues('rgb', [val, val, val]);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tclearer: function (ratio) {\r\n\t\tvar alpha = this.values.alpha;\r\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\r\n\t\treturn this;\r\n\t},\r\n\r\n\topaquer: function (ratio) {\r\n\t\tvar alpha = this.values.alpha;\r\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\r\n\t\treturn this;\r\n\t},\r\n\r\n\trotate: function (degrees) {\r\n\t\tvar hsl = this.values.hsl;\r\n\t\tvar hue = (hsl[0] + degrees) % 360;\r\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\r\n\t\tthis.setValues('hsl', hsl);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t/**\r\n\t * Ported from sass implementation in C\r\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\r\n\t */\r\n\tmix: function (mixinColor, weight) {\r\n\t\tvar color1 = this;\r\n\t\tvar color2 = mixinColor;\r\n\t\tvar p = weight === undefined ? 0.5 : weight;\r\n\r\n\t\tvar w = 2 * p - 1;\r\n\t\tvar a = color1.alpha() - color2.alpha();\r\n\r\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\r\n\t\tvar w2 = 1 - w1;\r\n\r\n\t\treturn this\r\n\t\t\t.rgb(\r\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\r\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\r\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\r\n\t\t\t)\r\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\r\n\t},\r\n\r\n\ttoJSON: function () {\r\n\t\treturn this.rgb();\r\n\t},\r\n\r\n\tclone: function () {\r\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\r\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\r\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\r\n\t\t// except 'alpha' which is a number.\r\n\t\tvar result = new Color();\r\n\t\tvar source = this.values;\r\n\t\tvar target = result.values;\r\n\t\tvar value, type;\r\n\r\n\t\tfor (var prop in source) {\r\n\t\t\tif (source.hasOwnProperty(prop)) {\r\n\t\t\t\tvalue = source[prop];\r\n\t\t\t\ttype = ({}).toString.call(value);\r\n\t\t\t\tif (type === '[object Array]') {\r\n\t\t\t\t\ttarget[prop] = value.slice(0);\r\n\t\t\t\t} else if (type === '[object Number]') {\r\n\t\t\t\t\ttarget[prop] = value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.error('unexpected color value:', value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n};\r\n\r\nColor.prototype.spaces = {\r\n\trgb: ['red', 'green', 'blue'],\r\n\thsl: ['hue', 'saturation', 'lightness'],\r\n\thsv: ['hue', 'saturation', 'value'],\r\n\thwb: ['hue', 'whiteness', 'blackness'],\r\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\r\n};\r\n\r\nColor.prototype.maxes = {\r\n\trgb: [255, 255, 255],\r\n\thsl: [360, 100, 100],\r\n\thsv: [360, 100, 100],\r\n\thwb: [360, 100, 100],\r\n\tcmyk: [100, 100, 100, 100]\r\n};\r\n\r\nColor.prototype.getValues = function (space) {\r\n\tvar values = this.values;\r\n\tvar vals = {};\r\n\r\n\tfor (var i = 0; i < space.length; i++) {\r\n\t\tvals[space.charAt(i)] = values[space][i];\r\n\t}\r\n\r\n\tif (values.alpha !== 1) {\r\n\t\tvals.a = values.alpha;\r\n\t}\r\n\r\n\t// {r: 255, g: 255, b: 255, a: 0.4}\r\n\treturn vals;\r\n};\r\n\r\nColor.prototype.setValues = function (space, vals) {\r\n\tvar values = this.values;\r\n\tvar spaces = this.spaces;\r\n\tvar maxes = this.maxes;\r\n\tvar alpha = 1;\r\n\tvar i;\r\n\r\n\tthis.valid = true;\r\n\r\n\tif (space === 'alpha') {\r\n\t\talpha = vals;\r\n\t} else if (vals.length) {\r\n\t\t// [10, 10, 10]\r\n\t\tvalues[space] = vals.slice(0, space.length);\r\n\t\talpha = vals[space.length];\r\n\t} else if (vals[space.charAt(0)] !== undefined) {\r\n\t\t// {r: 10, g: 10, b: 10}\r\n\t\tfor (i = 0; i < space.length; i++) {\r\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\r\n\t\t}\r\n\r\n\t\talpha = vals.a;\r\n\t} else if (vals[spaces[space][0]] !== undefined) {\r\n\t\t// {red: 10, green: 10, blue: 10}\r\n\t\tvar chans = spaces[space];\r\n\r\n\t\tfor (i = 0; i < space.length; i++) {\r\n\t\t\tvalues[space][i] = vals[chans[i]];\r\n\t\t}\r\n\r\n\t\talpha = vals.alpha;\r\n\t}\r\n\r\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\r\n\r\n\tif (space === 'alpha') {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tvar capped;\r\n\r\n\t// cap values of the space prior converting all values\r\n\tfor (i = 0; i < space.length; i++) {\r\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\r\n\t\tvalues[space][i] = Math.round(capped);\r\n\t}\r\n\r\n\t// convert to all the other color spaces\r\n\tfor (var sname in spaces) {\r\n\t\tif (sname !== space) {\r\n\t\t\tvalues[sname] = convert[space][sname](values[space]);\r\n\t\t}\r\n\t}\r\n\r\n\treturn true;\r\n};\r\n\r\nColor.prototype.setSpace = function (space, args) {\r\n\tvar vals = args[0];\r\n\r\n\tif (vals === undefined) {\r\n\t\t// color.rgb()\r\n\t\treturn this.getValues(space);\r\n\t}\r\n\r\n\t// color.rgb(10, 10, 10)\r\n\tif (typeof vals === 'number') {\r\n\t\tvals = Array.prototype.slice.call(args);\r\n\t}\r\n\r\n\tthis.setValues(space, vals);\r\n\treturn this;\r\n};\r\n\r\nColor.prototype.setChannel = function (space, index, val) {\r\n\tvar svalues = this.values[space];\r\n\tif (val === undefined) {\r\n\t\t// color.red()\r\n\t\treturn svalues[index];\r\n\t} else if (val === svalues[index]) {\r\n\t\t// color.red(color.red())\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// color.red(100)\r\n\tsvalues[index] = val;\r\n\tthis.setValues(space, svalues);\r\n\r\n\treturn this;\r\n};\r\n\r\nif (typeof window !== 'undefined') {\r\n\twindow.Color = Color;\r\n}\r\n\r\nmodule.exports = Color;\r\n\r\n},{\"2\":2,\"5\":5}],4:[function(require,module,exports){\r\n/* MIT license */\r\n\r\nmodule.exports = {\r\n rgb2hsl: rgb2hsl,\r\n rgb2hsv: rgb2hsv,\r\n rgb2hwb: rgb2hwb,\r\n rgb2cmyk: rgb2cmyk,\r\n rgb2keyword: rgb2keyword,\r\n rgb2xyz: rgb2xyz,\r\n rgb2lab: rgb2lab,\r\n rgb2lch: rgb2lch,\r\n\r\n hsl2rgb: hsl2rgb,\r\n hsl2hsv: hsl2hsv,\r\n hsl2hwb: hsl2hwb,\r\n hsl2cmyk: hsl2cmyk,\r\n hsl2keyword: hsl2keyword,\r\n\r\n hsv2rgb: hsv2rgb,\r\n hsv2hsl: hsv2hsl,\r\n hsv2hwb: hsv2hwb,\r\n hsv2cmyk: hsv2cmyk,\r\n hsv2keyword: hsv2keyword,\r\n\r\n hwb2rgb: hwb2rgb,\r\n hwb2hsl: hwb2hsl,\r\n hwb2hsv: hwb2hsv,\r\n hwb2cmyk: hwb2cmyk,\r\n hwb2keyword: hwb2keyword,\r\n\r\n cmyk2rgb: cmyk2rgb,\r\n cmyk2hsl: cmyk2hsl,\r\n cmyk2hsv: cmyk2hsv,\r\n cmyk2hwb: cmyk2hwb,\r\n cmyk2keyword: cmyk2keyword,\r\n\r\n keyword2rgb: keyword2rgb,\r\n keyword2hsl: keyword2hsl,\r\n keyword2hsv: keyword2hsv,\r\n keyword2hwb: keyword2hwb,\r\n keyword2cmyk: keyword2cmyk,\r\n keyword2lab: keyword2lab,\r\n keyword2xyz: keyword2xyz,\r\n\r\n xyz2rgb: xyz2rgb,\r\n xyz2lab: xyz2lab,\r\n xyz2lch: xyz2lch,\r\n\r\n lab2xyz: lab2xyz,\r\n lab2rgb: lab2rgb,\r\n lab2lch: lab2lch,\r\n\r\n lch2lab: lch2lab,\r\n lch2xyz: lch2xyz,\r\n lch2rgb: lch2rgb\r\n}\r\n\r\n\r\nfunction rgb2hsl(rgb) {\r\n var r = rgb[0]/255,\r\n g = rgb[1]/255,\r\n b = rgb[2]/255,\r\n min = Math.min(r, g, b),\r\n max = Math.max(r, g, b),\r\n delta = max - min,\r\n h, s, l;\r\n\r\n if (max == min)\r\n h = 0;\r\n else if (r == max)\r\n h = (g - b) / delta;\r\n else if (g == max)\r\n h = 2 + (b - r) / delta;\r\n else if (b == max)\r\n h = 4 + (r - g)/ delta;\r\n\r\n h = Math.min(h * 60, 360);\r\n\r\n if (h < 0)\r\n h += 360;\r\n\r\n l = (min + max) / 2;\r\n\r\n if (max == min)\r\n s = 0;\r\n else if (l <= 0.5)\r\n s = delta / (max + min);\r\n else\r\n s = delta / (2 - max - min);\r\n\r\n return [h, s * 100, l * 100];\r\n}\r\n\r\nfunction rgb2hsv(rgb) {\r\n var r = rgb[0],\r\n g = rgb[1],\r\n b = rgb[2],\r\n min = Math.min(r, g, b),\r\n max = Math.max(r, g, b),\r\n delta = max - min,\r\n h, s, v;\r\n\r\n if (max == 0)\r\n s = 0;\r\n else\r\n s = (delta/max * 1000)/10;\r\n\r\n if (max == min)\r\n h = 0;\r\n else if (r == max)\r\n h = (g - b) / delta;\r\n else if (g == max)\r\n h = 2 + (b - r) / delta;\r\n else if (b == max)\r\n h = 4 + (r - g) / delta;\r\n\r\n h = Math.min(h * 60, 360);\r\n\r\n if (h < 0)\r\n h += 360;\r\n\r\n v = ((max / 255) * 1000) / 10;\r\n\r\n return [h, s, v];\r\n}\r\n\r\nfunction rgb2hwb(rgb) {\r\n var r = rgb[0],\r\n g = rgb[1],\r\n b = rgb[2],\r\n h = rgb2hsl(rgb)[0],\r\n w = 1/255 * Math.min(r, Math.min(g, b)),\r\n b = 1 - 1/255 * Math.max(r, Math.max(g, b));\r\n\r\n return [h, w * 100, b * 100];\r\n}\r\n\r\nfunction rgb2cmyk(rgb) {\r\n var r = rgb[0] / 255,\r\n g = rgb[1] / 255,\r\n b = rgb[2] / 255,\r\n c, m, y, k;\r\n\r\n k = Math.min(1 - r, 1 - g, 1 - b);\r\n c = (1 - r - k) / (1 - k) || 0;\r\n m = (1 - g - k) / (1 - k) || 0;\r\n y = (1 - b - k) / (1 - k) || 0;\r\n return [c * 100, m * 100, y * 100, k * 100];\r\n}\r\n\r\nfunction rgb2keyword(rgb) {\r\n return reverseKeywords[JSON.stringify(rgb)];\r\n}\r\n\r\nfunction rgb2xyz(rgb) {\r\n var r = rgb[0] / 255,\r\n g = rgb[1] / 255,\r\n b = rgb[2] / 255;\r\n\r\n // assume sRGB\r\n r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\r\n g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\r\n b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\r\n\r\n var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\r\n var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\r\n var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\r\n\r\n return [x * 100, y *100, z * 100];\r\n}\r\n\r\nfunction rgb2lab(rgb) {\r\n var xyz = rgb2xyz(rgb),\r\n x = xyz[0],\r\n y = xyz[1],\r\n z = xyz[2],\r\n l, a, b;\r\n\r\n x /= 95.047;\r\n y /= 100;\r\n z /= 108.883;\r\n\r\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\r\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\r\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\r\n\r\n l = (116 * y) - 16;\r\n a = 500 * (x - y);\r\n b = 200 * (y - z);\r\n\r\n return [l, a, b];\r\n}\r\n\r\nfunction rgb2lch(args) {\r\n return lab2lch(rgb2lab(args));\r\n}\r\n\r\nfunction hsl2rgb(hsl) {\r\n var h = hsl[0] / 360,\r\n s = hsl[1] / 100,\r\n l = hsl[2] / 100,\r\n t1, t2, t3, rgb, val;\r\n\r\n if (s == 0) {\r\n val = l * 255;\r\n return [val, val, val];\r\n }\r\n\r\n if (l < 0.5)\r\n t2 = l * (1 + s);\r\n else\r\n t2 = l + s - l * s;\r\n t1 = 2 * l - t2;\r\n\r\n rgb = [0, 0, 0];\r\n for (var i = 0; i < 3; i++) {\r\n t3 = h + 1 / 3 * - (i - 1);\r\n t3 < 0 && t3++;\r\n t3 > 1 && t3--;\r\n\r\n if (6 * t3 < 1)\r\n val = t1 + (t2 - t1) * 6 * t3;\r\n else if (2 * t3 < 1)\r\n val = t2;\r\n else if (3 * t3 < 2)\r\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\r\n else\r\n val = t1;\r\n\r\n rgb[i] = val * 255;\r\n }\r\n\r\n return rgb;\r\n}\r\n\r\nfunction hsl2hsv(hsl) {\r\n var h = hsl[0],\r\n s = hsl[1] / 100,\r\n l = hsl[2] / 100,\r\n sv, v;\r\n\r\n if(l === 0) {\r\n // no need to do calc on black\r\n // also avoids divide by 0 error\r\n return [0, 0, 0];\r\n }\r\n\r\n l *= 2;\r\n s *= (l <= 1) ? l : 2 - l;\r\n v = (l + s) / 2;\r\n sv = (2 * s) / (l + s);\r\n return [h, sv * 100, v * 100];\r\n}\r\n\r\nfunction hsl2hwb(args) {\r\n return rgb2hwb(hsl2rgb(args));\r\n}\r\n\r\nfunction hsl2cmyk(args) {\r\n return rgb2cmyk(hsl2rgb(args));\r\n}\r\n\r\nfunction hsl2keyword(args) {\r\n return rgb2keyword(hsl2rgb(args));\r\n}\r\n\r\n\r\nfunction hsv2rgb(hsv) {\r\n var h = hsv[0] / 60,\r\n s = hsv[1] / 100,\r\n v = hsv[2] / 100,\r\n hi = Math.floor(h) % 6;\r\n\r\n var f = h - Math.floor(h),\r\n p = 255 * v * (1 - s),\r\n q = 255 * v * (1 - (s * f)),\r\n t = 255 * v * (1 - (s * (1 - f))),\r\n v = 255 * v;\r\n\r\n switch(hi) {\r\n case 0:\r\n return [v, t, p];\r\n case 1:\r\n return [q, v, p];\r\n case 2:\r\n return [p, v, t];\r\n case 3:\r\n return [p, q, v];\r\n case 4:\r\n return [t, p, v];\r\n case 5:\r\n return [v, p, q];\r\n }\r\n}\r\n\r\nfunction hsv2hsl(hsv) {\r\n var h = hsv[0],\r\n s = hsv[1] / 100,\r\n v = hsv[2] / 100,\r\n sl, l;\r\n\r\n l = (2 - s) * v;\r\n sl = s * v;\r\n sl /= (l <= 1) ? l : 2 - l;\r\n sl = sl || 0;\r\n l /= 2;\r\n return [h, sl * 100, l * 100];\r\n}\r\n\r\nfunction hsv2hwb(args) {\r\n return rgb2hwb(hsv2rgb(args))\r\n}\r\n\r\nfunction hsv2cmyk(args) {\r\n return rgb2cmyk(hsv2rgb(args));\r\n}\r\n\r\nfunction hsv2keyword(args) {\r\n return rgb2keyword(hsv2rgb(args));\r\n}\r\n\r\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\r\nfunction hwb2rgb(hwb) {\r\n var h = hwb[0] / 360,\r\n wh = hwb[1] / 100,\r\n bl = hwb[2] / 100,\r\n ratio = wh + bl,\r\n i, v, f, n;\r\n\r\n // wh + bl cant be > 1\r\n if (ratio > 1) {\r\n wh /= ratio;\r\n bl /= ratio;\r\n }\r\n\r\n i = Math.floor(6 * h);\r\n v = 1 - bl;\r\n f = 6 * h - i;\r\n if ((i & 0x01) != 0) {\r\n f = 1 - f;\r\n }\r\n n = wh + f * (v - wh); // linear interpolation\r\n\r\n switch (i) {\r\n default:\r\n case 6:\r\n case 0: r = v; g = n; b = wh; break;\r\n case 1: r = n; g = v; b = wh; break;\r\n case 2: r = wh; g = v; b = n; break;\r\n case 3: r = wh; g = n; b = v; break;\r\n case 4: r = n; g = wh; b = v; break;\r\n case 5: r = v; g = wh; b = n; break;\r\n }\r\n\r\n return [r * 255, g * 255, b * 255];\r\n}\r\n\r\nfunction hwb2hsl(args) {\r\n return rgb2hsl(hwb2rgb(args));\r\n}\r\n\r\nfunction hwb2hsv(args) {\r\n return rgb2hsv(hwb2rgb(args));\r\n}\r\n\r\nfunction hwb2cmyk(args) {\r\n return rgb2cmyk(hwb2rgb(args));\r\n}\r\n\r\nfunction hwb2keyword(args) {\r\n return rgb2keyword(hwb2rgb(args));\r\n}\r\n\r\nfunction cmyk2rgb(cmyk) {\r\n var c = cmyk[0] / 100,\r\n m = cmyk[1] / 100,\r\n y = cmyk[2] / 100,\r\n k = cmyk[3] / 100,\r\n r, g, b;\r\n\r\n r = 1 - Math.min(1, c * (1 - k) + k);\r\n g = 1 - Math.min(1, m * (1 - k) + k);\r\n b = 1 - Math.min(1, y * (1 - k) + k);\r\n return [r * 255, g * 255, b * 255];\r\n}\r\n\r\nfunction cmyk2hsl(args) {\r\n return rgb2hsl(cmyk2rgb(args));\r\n}\r\n\r\nfunction cmyk2hsv(args) {\r\n return rgb2hsv(cmyk2rgb(args));\r\n}\r\n\r\nfunction cmyk2hwb(args) {\r\n return rgb2hwb(cmyk2rgb(args));\r\n}\r\n\r\nfunction cmyk2keyword(args) {\r\n return rgb2keyword(cmyk2rgb(args));\r\n}\r\n\r\n\r\nfunction xyz2rgb(xyz) {\r\n var x = xyz[0] / 100,\r\n y = xyz[1] / 100,\r\n z = xyz[2] / 100,\r\n r, g, b;\r\n\r\n r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\r\n g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\r\n b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\r\n\r\n // assume sRGB\r\n r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\r\n : r = (r * 12.92);\r\n\r\n g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\r\n : g = (g * 12.92);\r\n\r\n b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\r\n : b = (b * 12.92);\r\n\r\n r = Math.min(Math.max(0, r), 1);\r\n g = Math.min(Math.max(0, g), 1);\r\n b = Math.min(Math.max(0, b), 1);\r\n\r\n return [r * 255, g * 255, b * 255];\r\n}\r\n\r\nfunction xyz2lab(xyz) {\r\n var x = xyz[0],\r\n y = xyz[1],\r\n z = xyz[2],\r\n l, a, b;\r\n\r\n x /= 95.047;\r\n y /= 100;\r\n z /= 108.883;\r\n\r\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\r\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\r\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\r\n\r\n l = (116 * y) - 16;\r\n a = 500 * (x - y);\r\n b = 200 * (y - z);\r\n\r\n return [l, a, b];\r\n}\r\n\r\nfunction xyz2lch(args) {\r\n return lab2lch(xyz2lab(args));\r\n}\r\n\r\nfunction lab2xyz(lab) {\r\n var l = lab[0],\r\n a = lab[1],\r\n b = lab[2],\r\n x, y, z, y2;\r\n\r\n if (l <= 8) {\r\n y = (l * 100) / 903.3;\r\n y2 = (7.787 * (y / 100)) + (16 / 116);\r\n } else {\r\n y = 100 * Math.pow((l + 16) / 116, 3);\r\n y2 = Math.pow(y / 100, 1/3);\r\n }\r\n\r\n x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3);\r\n\r\n z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3);\r\n\r\n return [x, y, z];\r\n}\r\n\r\nfunction lab2lch(lab) {\r\n var l = lab[0],\r\n a = lab[1],\r\n b = lab[2],\r\n hr, h, c;\r\n\r\n hr = Math.atan2(b, a);\r\n h = hr * 360 / 2 / Math.PI;\r\n if (h < 0) {\r\n h += 360;\r\n }\r\n c = Math.sqrt(a * a + b * b);\r\n return [l, c, h];\r\n}\r\n\r\nfunction lab2rgb(args) {\r\n return xyz2rgb(lab2xyz(args));\r\n}\r\n\r\nfunction lch2lab(lch) {\r\n var l = lch[0],\r\n c = lch[1],\r\n h = lch[2],\r\n a, b, hr;\r\n\r\n hr = h / 360 * 2 * Math.PI;\r\n a = c * Math.cos(hr);\r\n b = c * Math.sin(hr);\r\n return [l, a, b];\r\n}\r\n\r\nfunction lch2xyz(args) {\r\n return lab2xyz(lch2lab(args));\r\n}\r\n\r\nfunction lch2rgb(args) {\r\n return lab2rgb(lch2lab(args));\r\n}\r\n\r\nfunction keyword2rgb(keyword) {\r\n return cssKeywords[keyword];\r\n}\r\n\r\nfunction keyword2hsl(args) {\r\n return rgb2hsl(keyword2rgb(args));\r\n}\r\n\r\nfunction keyword2hsv(args) {\r\n return rgb2hsv(keyword2rgb(args));\r\n}\r\n\r\nfunction keyword2hwb(args) {\r\n return rgb2hwb(keyword2rgb(args));\r\n}\r\n\r\nfunction keyword2cmyk(args) {\r\n return rgb2cmyk(keyword2rgb(args));\r\n}\r\n\r\nfunction keyword2lab(args) {\r\n return rgb2lab(keyword2rgb(args));\r\n}\r\n\r\nfunction keyword2xyz(args) {\r\n return rgb2xyz(keyword2rgb(args));\r\n}\r\n\r\nvar cssKeywords = {\r\n aliceblue: [240,248,255],\r\n antiquewhite: [250,235,215],\r\n aqua: [0,255,255],\r\n aquamarine: [127,255,212],\r\n azure: [240,255,255],\r\n beige: [245,245,220],\r\n bisque: [255,228,196],\r\n black: [0,0,0],\r\n blanchedalmond: [255,235,205],\r\n blue: [0,0,255],\r\n blueviolet: [138,43,226],\r\n brown: [165,42,42],\r\n burlywood: [222,184,135],\r\n cadetblue: [95,158,160],\r\n chartreuse: [127,255,0],\r\n chocolate: [210,105,30],\r\n coral: [255,127,80],\r\n cornflowerblue: [100,149,237],\r\n cornsilk: [255,248,220],\r\n crimson: [220,20,60],\r\n cyan: [0,255,255],\r\n darkblue: [0,0,139],\r\n darkcyan: [0,139,139],\r\n darkgoldenrod: [184,134,11],\r\n darkgray: [169,169,169],\r\n darkgreen: [0,100,0],\r\n darkgrey: [169,169,169],\r\n darkkhaki: [189,183,107],\r\n darkmagenta: [139,0,139],\r\n darkolivegreen: [85,107,47],\r\n darkorange: [255,140,0],\r\n darkorchid: [153,50,204],\r\n darkred: [139,0,0],\r\n darksalmon: [233,150,122],\r\n darkseagreen: [143,188,143],\r\n darkslateblue: [72,61,139],\r\n darkslategray: [47,79,79],\r\n darkslategrey: [47,79,79],\r\n darkturquoise: [0,206,209],\r\n darkviolet: [148,0,211],\r\n deeppink: [255,20,147],\r\n deepskyblue: [0,191,255],\r\n dimgray: [105,105,105],\r\n dimgrey: [105,105,105],\r\n dodgerblue: [30,144,255],\r\n firebrick: [178,34,34],\r\n floralwhite: [255,250,240],\r\n forestgreen: [34,139,34],\r\n fuchsia: [255,0,255],\r\n gainsboro: [220,220,220],\r\n ghostwhite: [248,248,255],\r\n gold: [255,215,0],\r\n goldenrod: [218,165,32],\r\n gray: [128,128,128],\r\n green: [0,128,0],\r\n greenyellow: [173,255,47],\r\n grey: [128,128,128],\r\n honeydew: [240,255,240],\r\n hotpink: [255,105,180],\r\n indianred: [205,92,92],\r\n indigo: [75,0,130],\r\n ivory: [255,255,240],\r\n khaki: [240,230,140],\r\n lavender: [230,230,250],\r\n lavenderblush: [255,240,245],\r\n lawngreen: [124,252,0],\r\n lemonchiffon: [255,250,205],\r\n lightblue: [173,216,230],\r\n lightcoral: [240,128,128],\r\n lightcyan: [224,255,255],\r\n lightgoldenrodyellow: [250,250,210],\r\n lightgray: [211,211,211],\r\n lightgreen: [144,238,144],\r\n lightgrey: [211,211,211],\r\n lightpink: [255,182,193],\r\n lightsalmon: [255,160,122],\r\n lightseagreen: [32,178,170],\r\n lightskyblue: [135,206,250],\r\n lightslategray: [119,136,153],\r\n lightslategrey: [119,136,153],\r\n lightsteelblue: [176,196,222],\r\n lightyellow: [255,255,224],\r\n lime: [0,255,0],\r\n limegreen: [50,205,50],\r\n linen: [250,240,230],\r\n magenta: [255,0,255],\r\n maroon: [128,0,0],\r\n mediumaquamarine: [102,205,170],\r\n mediumblue: [0,0,205],\r\n mediumorchid: [186,85,211],\r\n mediumpurple: [147,112,219],\r\n mediumseagreen: [60,179,113],\r\n mediumslateblue: [123,104,238],\r\n mediumspringgreen: [0,250,154],\r\n mediumturquoise: [72,209,204],\r\n mediumvioletred: [199,21,133],\r\n midnightblue: [25,25,112],\r\n mintcream: [245,255,250],\r\n mistyrose: [255,228,225],\r\n moccasin: [255,228,181],\r\n navajowhite: [255,222,173],\r\n navy: [0,0,128],\r\n oldlace: [253,245,230],\r\n olive: [128,128,0],\r\n olivedrab: [107,142,35],\r\n orange: [255,165,0],\r\n orangered: [255,69,0],\r\n orchid: [218,112,214],\r\n palegoldenrod: [238,232,170],\r\n palegreen: [152,251,152],\r\n paleturquoise: [175,238,238],\r\n palevioletred: [219,112,147],\r\n papayawhip: [255,239,213],\r\n peachpuff: [255,218,185],\r\n peru: [205,133,63],\r\n pink: [255,192,203],\r\n plum: [221,160,221],\r\n powderblue: [176,224,230],\r\n purple: [128,0,128],\r\n rebeccapurple: [102, 51, 153],\r\n red: [255,0,0],\r\n rosybrown: [188,143,143],\r\n royalblue: [65,105,225],\r\n saddlebrown: [139,69,19],\r\n salmon: [250,128,114],\r\n sandybrown: [244,164,96],\r\n seagreen: [46,139,87],\r\n seashell: [255,245,238],\r\n sienna: [160,82,45],\r\n silver: [192,192,192],\r\n skyblue: [135,206,235],\r\n slateblue: [106,90,205],\r\n slategray: [112,128,144],\r\n slategrey: [112,128,144],\r\n snow: [255,250,250],\r\n springgreen: [0,255,127],\r\n steelblue: [70,130,180],\r\n tan: [210,180,140],\r\n teal: [0,128,128],\r\n thistle: [216,191,216],\r\n tomato: [255,99,71],\r\n turquoise: [64,224,208],\r\n violet: [238,130,238],\r\n wheat: [245,222,179],\r\n white: [255,255,255],\r\n whitesmoke: [245,245,245],\r\n yellow: [255,255,0],\r\n yellowgreen: [154,205,50]\r\n};\r\n\r\nvar reverseKeywords = {};\r\nfor (var key in cssKeywords) {\r\n reverseKeywords[JSON.stringify(cssKeywords[key])] = key;\r\n}\r\n\r\n},{}],5:[function(require,module,exports){\r\nvar conversions = require(4);\r\n\r\nvar convert = function() {\r\n return new Converter();\r\n}\r\n\r\nfor (var func in conversions) {\r\n // export Raw versions\r\n convert[func + \"Raw\"] = (function(func) {\r\n // accept array or plain args\r\n return function(arg) {\r\n if (typeof arg == \"number\")\r\n arg = Array.prototype.slice.call(arguments);\r\n return conversions[func](arg);\r\n }\r\n })(func);\r\n\r\n var pair = /(\\w+)2(\\w+)/.exec(func),\r\n from = pair[1],\r\n to = pair[2];\r\n\r\n // export rgb2hsl and [\"rgb\"][\"hsl\"]\r\n convert[from] = convert[from] || {};\r\n\r\n convert[from][to] = convert[func] = (function(func) {\r\n return function(arg) {\r\n if (typeof arg == \"number\")\r\n arg = Array.prototype.slice.call(arguments);\r\n\r\n var val = conversions[func](arg);\r\n if (typeof val == \"string\" || val === undefined)\r\n return val; // keyword\r\n\r\n for (var i = 0; i < val.length; i++)\r\n val[i] = Math.round(val[i]);\r\n return val;\r\n }\r\n })(func);\r\n}\r\n\r\n\r\n/* Converter does lazy conversion and caching */\r\nvar Converter = function() {\r\n this.convs = {};\r\n};\r\n\r\n/* Either get the values for a space or\r\n set the values for a space, depending on args */\r\nConverter.prototype.routeSpace = function(space, args) {\r\n var values = args[0];\r\n if (values === undefined) {\r\n // color.rgb()\r\n return this.getValues(space);\r\n }\r\n // color.rgb(10, 10, 10)\r\n if (typeof values == \"number\") {\r\n values = Array.prototype.slice.call(args);\r\n }\r\n\r\n return this.setValues(space, values);\r\n};\r\n\r\n/* Set the values for a space, invalidating cache */\r\nConverter.prototype.setValues = function(space, values) {\r\n this.space = space;\r\n this.convs = {};\r\n this.convs[space] = values;\r\n return this;\r\n};\r\n\r\n/* Get the values for a space. If there's already\r\n a conversion for the space, fetch it, otherwise\r\n compute it */\r\nConverter.prototype.getValues = function(space) {\r\n var vals = this.convs[space];\r\n if (!vals) {\r\n var fspace = this.space,\r\n from = this.convs[fspace];\r\n vals = convert[fspace][space](from);\r\n\r\n this.convs[space] = vals;\r\n }\r\n return vals;\r\n};\r\n\r\n[\"rgb\", \"hsl\", \"hsv\", \"cmyk\", \"keyword\"].forEach(function(space) {\r\n Converter.prototype[space] = function(vals) {\r\n return this.routeSpace(space, arguments);\r\n }\r\n});\r\n\r\nmodule.exports = convert;\r\n},{\"4\":4}],6:[function(require,module,exports){\r\n'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n\r\n},{}],7:[function(require,module,exports){\r\n/**\r\n * @namespace Chart\r\n */\r\nvar Chart = require(30)();\r\n\r\nChart.helpers = require(46);\r\n\r\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\r\nrequire(28)(Chart);\r\n\r\nChart.Animation = require(22);\r\nChart.animationService = require(23);\r\nChart.defaults = require(26);\r\nChart.Element = require(27);\r\nChart.elements = require(41);\r\nChart.Interaction = require(29);\r\nChart.layouts = require(31);\r\nChart.platform = require(49);\r\nChart.plugins = require(32);\r\nChart.Scale = require(33);\r\nChart.scaleService = require(34);\r\nChart.Ticks = require(35);\r\nChart.Tooltip = require(36);\r\n\r\nrequire(24)(Chart);\r\nrequire(25)(Chart);\r\n\r\nrequire(56)(Chart);\r\nrequire(54)(Chart);\r\nrequire(55)(Chart);\r\nrequire(57)(Chart);\r\nrequire(58)(Chart);\r\nrequire(59)(Chart);\r\n\r\n// Controllers must be loaded after elements\r\n// See Chart.core.datasetController.dataElementType\r\nrequire(15)(Chart);\r\nrequire(16)(Chart);\r\nrequire(17)(Chart);\r\nrequire(18)(Chart);\r\nrequire(19)(Chart);\r\nrequire(20)(Chart);\r\nrequire(21)(Chart);\r\n\r\nrequire(8)(Chart);\r\nrequire(9)(Chart);\r\nrequire(10)(Chart);\r\nrequire(11)(Chart);\r\nrequire(12)(Chart);\r\nrequire(13)(Chart);\r\nrequire(14)(Chart);\r\n\r\n// Loading built-in plugins\r\nvar plugins = require(50);\r\nfor (var k in plugins) {\r\n\tif (plugins.hasOwnProperty(k)) {\r\n\t\tChart.plugins.register(plugins[k]);\r\n\t}\r\n}\r\n\r\nChart.platform.initialize();\r\n\r\nmodule.exports = Chart;\r\nif (typeof window !== 'undefined') {\r\n\twindow.Chart = Chart;\r\n}\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Legend\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.Legend = plugins.legend._element;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Title\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.Title = plugins.title._element;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.plugins instead\r\n * @namespace Chart.pluginService\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.pluginService = Chart.plugins;\r\n\r\n/**\r\n * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\r\n * effect, instead simply create/register plugins via plain JavaScript objects.\r\n * @interface Chart.PluginBase\r\n * @deprecated since version 2.5.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.PluginBase = Chart.Element.extend({});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas instead.\r\n * @namespace Chart.canvasHelpers\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.canvasHelpers = Chart.helpers.canvas;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.layouts instead.\r\n * @namespace Chart.layoutService\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.layoutService = Chart.layouts;\r\n\r\n},{\"10\":10,\"11\":11,\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"17\":17,\"18\":18,\"19\":19,\"20\":20,\"21\":21,\"22\":22,\"23\":23,\"24\":24,\"25\":25,\"26\":26,\"27\":27,\"28\":28,\"29\":29,\"30\":30,\"31\":31,\"32\":32,\"33\":33,\"34\":34,\"35\":35,\"36\":36,\"41\":41,\"46\":46,\"49\":49,\"50\":50,\"54\":54,\"55\":55,\"56\":56,\"57\":57,\"58\":58,\"59\":59,\"8\":8,\"9\":9}],8:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.Bar = function(context, config) {\r\n\t\tconfig.type = 'bar';\r\n\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],9:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.Bubble = function(context, config) {\r\n\t\tconfig.type = 'bubble';\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],10:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.Doughnut = function(context, config) {\r\n\t\tconfig.type = 'doughnut';\r\n\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],11:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.Line = function(context, config) {\r\n\t\tconfig.type = 'line';\r\n\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],12:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.PolarArea = function(context, config) {\r\n\t\tconfig.type = 'polarArea';\r\n\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],13:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.Radar = function(context, config) {\r\n\t\tconfig.type = 'radar';\r\n\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],14:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\tChart.Scatter = function(context, config) {\r\n\t\tconfig.type = 'scatter';\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n};\r\n\r\n},{}],15:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('bar', {\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\r\n\t\t\t// Specific to Bar Controller\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9,\r\n\r\n\t\t\t// offset settings\r\n\t\t\toffset: true,\r\n\r\n\t\t\t// grid line settings\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\ndefaults._set('horizontalBar', {\r\n\thover: {\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\tposition: 'left',\r\n\t\t\ttype: 'category',\r\n\r\n\t\t\t// Specific to Horizontal Bar Controller\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9,\r\n\r\n\t\t\t// offset settings\r\n\t\t\toffset: true,\r\n\r\n\t\t\t// grid line settings\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}]\r\n\t},\r\n\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tborderSkipped: 'left'\r\n\t\t}\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function(item, data) {\r\n\t\t\t\t// Pick first xLabel for now\r\n\t\t\t\tvar title = '';\r\n\r\n\t\t\t\tif (item.length > 0) {\r\n\t\t\t\t\tif (item[0].yLabel) {\r\n\t\t\t\t\t\ttitle = item[0].yLabel;\r\n\t\t\t\t\t} else if (data.labels.length > 0 && item[0].index < data.labels.length) {\r\n\t\t\t\t\t\ttitle = data.labels[item[0].index];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn title;\r\n\t\t\t},\r\n\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\r\n\t\t\t\treturn datasetLabel + ': ' + item.xLabel;\r\n\t\t\t}\r\n\t\t},\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t}\r\n});\r\n\r\n/**\r\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\r\n * @private\r\n */\r\nfunction computeMinSampleSize(scale, pixels) {\r\n\tvar min = scale.isHorizontal() ? scale.width : scale.height;\r\n\tvar ticks = scale.getTicks();\r\n\tvar prev, curr, i, ilen;\r\n\r\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\r\n\t\tmin = Math.min(min, pixels[i] - pixels[i - 1]);\r\n\t}\r\n\r\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\tcurr = scale.getPixelForTick(i);\r\n\t\tmin = i > 0 ? Math.min(min, curr - prev) : min;\r\n\t\tprev = curr;\r\n\t}\r\n\r\n\treturn min;\r\n}\r\n\r\n/**\r\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\r\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\r\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\r\n * @private\r\n */\r\nfunction computeFitCategoryTraits(index, ruler, options) {\r\n\tvar thickness = options.barThickness;\r\n\tvar count = ruler.stackCount;\r\n\tvar curr = ruler.pixels[index];\r\n\tvar size, ratio;\r\n\r\n\tif (helpers.isNullOrUndef(thickness)) {\r\n\t\tsize = ruler.min * options.categoryPercentage;\r\n\t\tratio = options.barPercentage;\r\n\t} else {\r\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\r\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\r\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\r\n\t\tsize = thickness * count;\r\n\t\tratio = 1;\r\n\t}\r\n\r\n\treturn {\r\n\t\tchunk: size / count,\r\n\t\tratio: ratio,\r\n\t\tstart: curr - (size / 2)\r\n\t};\r\n}\r\n\r\n/**\r\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\r\n * percentage options are 1), based on the previous and following categories. This mode\r\n * generates bars with different widths when data are not evenly spaced.\r\n * @private\r\n */\r\nfunction computeFlexCategoryTraits(index, ruler, options) {\r\n\tvar pixels = ruler.pixels;\r\n\tvar curr = pixels[index];\r\n\tvar prev = index > 0 ? pixels[index - 1] : null;\r\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\r\n\tvar percent = options.categoryPercentage;\r\n\tvar start, size;\r\n\r\n\tif (prev === null) {\r\n\t\t// first data: its size is double based on the next point or,\r\n\t\t// if it's also the last data, we use the scale end extremity.\r\n\t\tprev = curr - (next === null ? ruler.end - curr : next - curr);\r\n\t}\r\n\r\n\tif (next === null) {\r\n\t\t// last data: its size is also double based on the previous point.\r\n\t\tnext = curr + curr - prev;\r\n\t}\r\n\r\n\tstart = curr - ((curr - prev) / 2) * percent;\r\n\tsize = ((next - prev) / 2) * percent;\r\n\r\n\treturn {\r\n\t\tchunk: size / ruler.stackCount,\r\n\t\tratio: options.barPercentage,\r\n\t\tstart: start\r\n\t};\r\n}\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.controllers.bar = Chart.DatasetController.extend({\r\n\r\n\t\tdataElementType: elements.Rectangle,\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta;\r\n\r\n\t\t\tChart.DatasetController.prototype.initialize.apply(me, arguments);\r\n\r\n\t\t\tmeta = me.getMeta();\r\n\t\t\tmeta.stack = me.getDataset().stack;\r\n\t\t\tmeta.bar = true;\r\n\t\t},\r\n\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar rects = me.getMeta().data;\r\n\t\t\tvar i, ilen;\r\n\r\n\t\t\tme._ruler = me.getRuler();\r\n\r\n\t\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\r\n\t\t\t\tme.updateElement(rects[i], i, reset);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tupdateElement: function(rectangle, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar custom = rectangle.custom || {};\r\n\t\t\tvar rectangleOptions = chart.options.elements.rectangle;\r\n\r\n\t\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\r\n\t\t\trectangle._datasetIndex = me.index;\r\n\t\t\trectangle._index = index;\r\n\r\n\t\t\trectangle._model = {\r\n\t\t\t\tdatasetLabel: dataset.label,\r\n\t\t\t\tlabel: chart.data.labels[index],\r\n\t\t\t\tborderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped,\r\n\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor),\r\n\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor),\r\n\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth)\r\n\t\t\t};\r\n\r\n\t\t\tme.updateElementGeometry(rectangle, index, reset);\r\n\r\n\t\t\trectangle.pivot();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tupdateElementGeometry: function(rectangle, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar model = rectangle._model;\r\n\t\t\tvar vscale = me.getValueScale();\r\n\t\t\tvar base = vscale.getBasePixel();\r\n\t\t\tvar horizontal = vscale.isHorizontal();\r\n\t\t\tvar ruler = me._ruler || me.getRuler();\r\n\t\t\tvar vpixels = me.calculateBarValuePixels(me.index, index);\r\n\t\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler);\r\n\r\n\t\t\tmodel.horizontal = horizontal;\r\n\t\t\tmodel.base = reset ? base : vpixels.base;\r\n\t\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\r\n\t\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\r\n\t\t\tmodel.height = horizontal ? ipixels.size : undefined;\r\n\t\t\tmodel.width = horizontal ? undefined : ipixels.size;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetValueScaleId: function() {\r\n\t\t\treturn this.getMeta().yAxisID;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetIndexScaleId: function() {\r\n\t\t\treturn this.getMeta().xAxisID;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetValueScale: function() {\r\n\t\t\treturn this.getScaleForId(this.getValueScaleId());\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetIndexScale: function() {\r\n\t\t\treturn this.getScaleForId(this.getIndexScaleId());\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Returns the stacks based on groups and bar visibility.\r\n\t\t * @param {Number} [last] - The dataset index\r\n\t\t * @returns {Array} The stack list\r\n\t\t * @private\r\n\t\t */\r\n\t\t_getStacks: function(last) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar scale = me.getIndexScale();\r\n\t\t\tvar stacked = scale.options.stacked;\r\n\t\t\tvar ilen = last === undefined ? chart.data.datasets.length : last + 1;\r\n\t\t\tvar stacks = [];\r\n\t\t\tvar i, meta;\r\n\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tif (meta.bar && chart.isDatasetVisible(i) &&\r\n\t\t\t\t\t(stacked === false ||\r\n\t\t\t\t\t(stacked === true && stacks.indexOf(meta.stack) === -1) ||\r\n\t\t\t\t\t(stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) {\r\n\t\t\t\t\tstacks.push(meta.stack);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn stacks;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Returns the effective number of stacks based on groups and bar visibility.\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetStackCount: function() {\r\n\t\t\treturn this._getStacks().length;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Returns the stack index for the given dataset based on groups and bar visibility.\r\n\t\t * @param {Number} [datasetIndex] - The dataset index\r\n\t\t * @param {String} [name] - The stack name to find\r\n\t\t * @returns {Number} The stack index\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetStackIndex: function(datasetIndex, name) {\r\n\t\t\tvar stacks = this._getStacks(datasetIndex);\r\n\t\t\tvar index = (name !== undefined)\r\n\t\t\t\t? stacks.indexOf(name)\r\n\t\t\t\t: -1; // indexOf returns -1 if element is not present\r\n\r\n\t\t\treturn (index === -1)\r\n\t\t\t\t? stacks.length - 1\r\n\t\t\t\t: index;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetRuler: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar scale = me.getIndexScale();\r\n\t\t\tvar stackCount = me.getStackCount();\r\n\t\t\tvar datasetIndex = me.index;\r\n\t\t\tvar isHorizontal = scale.isHorizontal();\r\n\t\t\tvar start = isHorizontal ? scale.left : scale.top;\r\n\t\t\tvar end = start + (isHorizontal ? scale.width : scale.height);\r\n\t\t\tvar pixels = [];\r\n\t\t\tvar i, ilen, min;\r\n\r\n\t\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\r\n\t\t\t\tpixels.push(scale.getPixelForValue(null, i, datasetIndex));\r\n\t\t\t}\r\n\r\n\t\t\tmin = helpers.isNullOrUndef(scale.options.barThickness)\r\n\t\t\t\t? computeMinSampleSize(scale, pixels)\r\n\t\t\t\t: -1;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tmin: min,\r\n\t\t\t\tpixels: pixels,\r\n\t\t\t\tstart: start,\r\n\t\t\t\tend: end,\r\n\t\t\t\tstackCount: stackCount,\r\n\t\t\t\tscale: scale\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Note: pixel values are not clamped to the scale area.\r\n\t\t * @private\r\n\t\t */\r\n\t\tcalculateBarValuePixels: function(datasetIndex, index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar scale = me.getValueScale();\r\n\t\t\tvar datasets = chart.data.datasets;\r\n\t\t\tvar value = scale.getRightValue(datasets[datasetIndex].data[index]);\r\n\t\t\tvar stacked = scale.options.stacked;\r\n\t\t\tvar stack = meta.stack;\r\n\t\t\tvar start = 0;\r\n\t\t\tvar i, imeta, ivalue, base, head, size;\r\n\r\n\t\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\r\n\t\t\t\tfor (i = 0; i < datasetIndex; ++i) {\r\n\t\t\t\t\timeta = chart.getDatasetMeta(i);\r\n\r\n\t\t\t\t\tif (imeta.bar &&\r\n\t\t\t\t\t\timeta.stack === stack &&\r\n\t\t\t\t\t\timeta.controller.getValueScaleId() === scale.id &&\r\n\t\t\t\t\t\tchart.isDatasetVisible(i)) {\r\n\r\n\t\t\t\t\t\tivalue = scale.getRightValue(datasets[i].data[index]);\r\n\t\t\t\t\t\tif ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) {\r\n\t\t\t\t\t\t\tstart += ivalue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tbase = scale.getPixelForValue(start);\r\n\t\t\thead = scale.getPixelForValue(start + value);\r\n\t\t\tsize = (head - base) / 2;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tsize: size,\r\n\t\t\t\tbase: base,\r\n\t\t\t\thead: head,\r\n\t\t\t\tcenter: head + size / 2\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tcalculateBarIndexPixels: function(datasetIndex, index, ruler) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = ruler.scale.options;\r\n\t\t\tvar range = options.barThickness === 'flex'\r\n\t\t\t\t? computeFlexCategoryTraits(index, ruler, options)\r\n\t\t\t\t: computeFitCategoryTraits(index, ruler, options);\r\n\r\n\t\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\r\n\t\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\r\n\t\t\tvar size = Math.min(\r\n\t\t\t\thelpers.valueOrDefault(options.maxBarThickness, Infinity),\r\n\t\t\t\trange.chunk * range.ratio);\r\n\r\n\t\t\treturn {\r\n\t\t\t\tbase: center - size / 2,\r\n\t\t\t\thead: center + size / 2,\r\n\t\t\t\tcenter: center,\r\n\t\t\t\tsize: size\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tdraw: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar scale = me.getValueScale();\r\n\t\t\tvar rects = me.getMeta().data;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar ilen = rects.length;\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\thelpers.canvas.clipArea(chart.ctx, chart.chartArea);\r\n\r\n\t\t\tfor (; i < ilen; ++i) {\r\n\t\t\t\tif (!isNaN(scale.getRightValue(dataset.data[i]))) {\r\n\t\t\t\t\trects[i].draw();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\thelpers.canvas.unclipArea(chart.ctx);\r\n\t\t},\r\n\t});\r\n\r\n\tChart.controllers.horizontalBar = Chart.controllers.bar.extend({\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetValueScaleId: function() {\r\n\t\t\treturn this.getMeta().xAxisID;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetIndexScaleId: function() {\r\n\t\t\treturn this.getMeta().yAxisID;\r\n\t\t}\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],16:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('bubble', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\r\n\t\t\tposition: 'bottom',\r\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\r\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\r\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.controllers.bubble = Chart.DatasetController.extend({\r\n\t\t/**\r\n\t\t * @protected\r\n\t\t */\r\n\t\tdataElementType: elements.Point,\r\n\r\n\t\t/**\r\n\t\t * @protected\r\n\t\t */\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar points = meta.data;\r\n\r\n\t\t\t// Update Points\r\n\t\t\thelpers.each(points, function(point, index) {\r\n\t\t\t\tme.updateElement(point, index, reset);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @protected\r\n\t\t */\r\n\t\tupdateElement: function(point, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar custom = point.custom || {};\r\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\r\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\t\tvar options = me._resolveElementOptions(point, index);\r\n\t\t\tvar data = me.getDataset().data[index];\r\n\t\t\tvar dsIndex = me.index;\r\n\r\n\t\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\r\n\t\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\r\n\r\n\t\t\tpoint._xScale = xScale;\r\n\t\t\tpoint._yScale = yScale;\r\n\t\t\tpoint._options = options;\r\n\t\t\tpoint._datasetIndex = dsIndex;\r\n\t\t\tpoint._index = index;\r\n\t\t\tpoint._model = {\r\n\t\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\t\tborderColor: options.borderColor,\r\n\t\t\t\tborderWidth: options.borderWidth,\r\n\t\t\t\thitRadius: options.hitRadius,\r\n\t\t\t\tpointStyle: options.pointStyle,\r\n\t\t\t\trotation: options.rotation,\r\n\t\t\t\tradius: reset ? 0 : options.radius,\r\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t\tx: x,\r\n\t\t\t\ty: y,\r\n\t\t\t};\r\n\r\n\t\t\tpoint.pivot();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @protected\r\n\t\t */\r\n\t\tsetHoverStyle: function(point) {\r\n\t\t\tvar model = point._model;\r\n\t\t\tvar options = point._options;\r\n\t\t\tpoint.$previousStyle = {\r\n\t\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\t\tborderColor: model.borderColor,\r\n\t\t\t\tborderWidth: model.borderWidth,\r\n\t\t\t\tradius: model.radius\r\n\t\t\t};\r\n\t\t\tmodel.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor));\r\n\t\t\tmodel.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor));\r\n\t\t\tmodel.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth);\r\n\t\t\tmodel.radius = options.radius + options.hoverRadius;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\t_resolveElementOptions: function(point, index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar datasets = chart.data.datasets;\r\n\t\t\tvar dataset = datasets[me.index];\r\n\t\t\tvar custom = point.custom || {};\r\n\t\t\tvar options = chart.options.elements.point;\r\n\t\t\tvar resolve = helpers.options.resolve;\r\n\t\t\tvar data = dataset.data[index];\r\n\t\t\tvar values = {};\r\n\t\t\tvar i, ilen, key;\r\n\r\n\t\t\t// Scriptable options\r\n\t\t\tvar context = {\r\n\t\t\t\tchart: chart,\r\n\t\t\t\tdataIndex: index,\r\n\t\t\t\tdataset: dataset,\r\n\t\t\t\tdatasetIndex: me.index\r\n\t\t\t};\r\n\r\n\t\t\tvar keys = [\r\n\t\t\t\t'backgroundColor',\r\n\t\t\t\t'borderColor',\r\n\t\t\t\t'borderWidth',\r\n\t\t\t\t'hoverBackgroundColor',\r\n\t\t\t\t'hoverBorderColor',\r\n\t\t\t\t'hoverBorderWidth',\r\n\t\t\t\t'hoverRadius',\r\n\t\t\t\t'hitRadius',\r\n\t\t\t\t'pointStyle',\r\n\t\t\t\t'rotation'\r\n\t\t\t];\r\n\r\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\t\tkey = keys[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdataset[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index);\r\n\t\t\t}\r\n\r\n\t\t\t// Custom radius resolution\r\n\t\t\tvalues.radius = resolve([\r\n\t\t\t\tcustom.radius,\r\n\t\t\t\tdata ? data.r : undefined,\r\n\t\t\t\tdataset.radius,\r\n\t\t\t\toptions.radius\r\n\t\t\t], context, index);\r\n\t\t\treturn values;\r\n\t\t}\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],17:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('doughnut', {\r\n\tanimation: {\r\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\r\n\t\tanimateRotate: true,\r\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\r\n\t\tanimateScale: false\r\n\t},\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\tlegendCallback: function(chart) {\r\n\t\tvar text = [];\r\n\t\ttext.push('
        ');\r\n\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\r\n\t\t\t\ttext.push('
      • ');\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\ttext.push(labels[i]);\r\n\t\t\t\t}\r\n\t\t\t\ttext.push('
      • ');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttext.push('
      ');\r\n\t\treturn text.join('');\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar ds = data.datasets[0];\r\n\t\t\t\t\t\tvar arc = meta.data[i];\r\n\t\t\t\t\t\tvar custom = arc && arc.custom || {};\r\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\r\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\r\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\r\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\r\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: fill,\r\n\t\t\t\t\t\t\tstrokeStyle: stroke,\r\n\t\t\t\t\t\t\tlineWidth: bw,\r\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t// toggle visibility of index if exists\r\n\t\t\t\tif (meta.data[index]) {\r\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// The percentage of the chart that we cut out of the middle.\r\n\tcutoutPercentage: 50,\r\n\r\n\t// The rotation of the chart, where the first data arc begins.\r\n\trotation: Math.PI * -0.5,\r\n\r\n\t// The total circumference of the chart.\r\n\tcircumference: Math.PI * 2.0,\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(tooltipItem, data) {\r\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\r\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\r\n\r\n\t\t\t\tif (helpers.isArray(dataLabel)) {\r\n\t\t\t\t\t// show value on first line of multiline label\r\n\t\t\t\t\t// need to clone because we are changing the value\r\n\t\t\t\t\tdataLabel = dataLabel.slice();\r\n\t\t\t\t\tdataLabel[0] += value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdataLabel += value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn dataLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\ndefaults._set('pie', helpers.clone(defaults.doughnut));\r\ndefaults._set('pie', {\r\n\tcutoutPercentage: 0\r\n});\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({\r\n\r\n\t\tdataElementType: elements.Arc,\r\n\r\n\t\tlinkScales: helpers.noop,\r\n\r\n\t\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\r\n\t\tgetRingIndex: function(datasetIndex) {\r\n\t\t\tvar ringIndex = 0;\r\n\r\n\t\t\tfor (var j = 0; j < datasetIndex; ++j) {\r\n\t\t\t\tif (this.chart.isDatasetVisible(j)) {\r\n\t\t\t\t\t++ringIndex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn ringIndex;\r\n\t\t},\r\n\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar chartArea = chart.chartArea;\r\n\t\t\tvar opts = chart.options;\r\n\t\t\tvar arcOpts = opts.elements.arc;\r\n\t\t\tvar availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth;\r\n\t\t\tvar availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth;\r\n\t\t\tvar minSize = Math.min(availableWidth, availableHeight);\r\n\t\t\tvar offset = {x: 0, y: 0};\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar cutoutPercentage = opts.cutoutPercentage;\r\n\t\t\tvar circumference = opts.circumference;\r\n\r\n\t\t\t// If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc\r\n\t\t\tif (circumference < Math.PI * 2.0) {\r\n\t\t\t\tvar startAngle = opts.rotation % (Math.PI * 2.0);\r\n\t\t\t\tstartAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0);\r\n\t\t\t\tvar endAngle = startAngle + circumference;\r\n\t\t\t\tvar start = {x: Math.cos(startAngle), y: Math.sin(startAngle)};\r\n\t\t\t\tvar end = {x: Math.cos(endAngle), y: Math.sin(endAngle)};\r\n\t\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle);\r\n\t\t\t\tvar contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle);\r\n\t\t\t\tvar contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle);\r\n\t\t\t\tvar contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle);\r\n\t\t\t\tvar cutout = cutoutPercentage / 100.0;\r\n\t\t\t\tvar min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))};\r\n\t\t\t\tvar max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))};\r\n\t\t\t\tvar size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5};\r\n\t\t\t\tminSize = Math.min(availableWidth / size.width, availableHeight / size.height);\r\n\t\t\t\toffset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5};\r\n\t\t\t}\r\n\r\n\t\t\tchart.borderWidth = me.getMaxBorderWidth(meta.data);\r\n\t\t\tchart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0);\r\n\t\t\tchart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0);\r\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\r\n\t\t\tchart.offsetX = offset.x * chart.outerRadius;\r\n\t\t\tchart.offsetY = offset.y * chart.outerRadius;\r\n\r\n\t\t\tmeta.total = me.calculateTotal();\r\n\r\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index));\r\n\t\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0);\r\n\r\n\t\t\thelpers.each(meta.data, function(arc, index) {\r\n\t\t\t\tme.updateElement(arc, index, reset);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tupdateElement: function(arc, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar chartArea = chart.chartArea;\r\n\t\t\tvar opts = chart.options;\r\n\t\t\tvar animationOpts = opts.animation;\r\n\t\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\r\n\t\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\r\n\t\t\tvar startAngle = opts.rotation; // non reset case handled later\r\n\t\t\tvar endAngle = opts.rotation; // non reset case handled later\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI));\r\n\t\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\r\n\t\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\r\n\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\r\n\r\n\t\t\thelpers.extend(arc, {\r\n\t\t\t\t// Utility\r\n\t\t\t\t_datasetIndex: me.index,\r\n\t\t\t\t_index: index,\r\n\r\n\t\t\t\t// Desired view properties\r\n\t\t\t\t_model: {\r\n\t\t\t\t\tx: centerX + chart.offsetX,\r\n\t\t\t\t\ty: centerY + chart.offsetY,\r\n\t\t\t\t\tstartAngle: startAngle,\r\n\t\t\t\t\tendAngle: endAngle,\r\n\t\t\t\t\tcircumference: circumference,\r\n\t\t\t\t\touterRadius: outerRadius,\r\n\t\t\t\t\tinnerRadius: innerRadius,\r\n\t\t\t\t\tlabel: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar model = arc._model;\r\n\r\n\t\t\t// Resets the visual styles\r\n\t\t\tvar custom = arc.custom || {};\r\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\r\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\r\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\r\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\r\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\r\n\r\n\t\t\t// Set correct angles if not resetting\r\n\t\t\tif (!reset || !animationOpts.animateRotate) {\r\n\t\t\t\tif (index === 0) {\r\n\t\t\t\t\tmodel.startAngle = opts.rotation;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmodel.endAngle = model.startAngle + model.circumference;\r\n\t\t\t}\r\n\r\n\t\t\tarc.pivot();\r\n\t\t},\r\n\r\n\t\tcalculateTotal: function() {\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar meta = this.getMeta();\r\n\t\t\tvar total = 0;\r\n\t\t\tvar value;\r\n\r\n\t\t\thelpers.each(meta.data, function(element, index) {\r\n\t\t\t\tvalue = dataset.data[index];\r\n\t\t\t\tif (!isNaN(value) && !element.hidden) {\r\n\t\t\t\t\ttotal += Math.abs(value);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t/* if (total === 0) {\r\n\t\t\t\ttotal = NaN;\r\n\t\t\t}*/\r\n\r\n\t\t\treturn total;\r\n\t\t},\r\n\r\n\t\tcalculateCircumference: function(value) {\r\n\t\t\tvar total = this.getMeta().total;\r\n\t\t\tif (total > 0 && !isNaN(value)) {\r\n\t\t\t\treturn (Math.PI * 2.0) * (Math.abs(value) / total);\r\n\t\t\t}\r\n\t\t\treturn 0;\r\n\t\t},\r\n\r\n\t\t// gets the max border or hover width to properly scale pie charts\r\n\t\tgetMaxBorderWidth: function(arcs) {\r\n\t\t\tvar max = 0;\r\n\t\t\tvar index = this.index;\r\n\t\t\tvar length = arcs.length;\r\n\t\t\tvar borderWidth;\r\n\t\t\tvar hoverWidth;\r\n\r\n\t\t\tfor (var i = 0; i < length; i++) {\r\n\t\t\t\tborderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0;\r\n\t\t\t\thoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0;\r\n\r\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\r\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\r\n\t\t\t}\r\n\t\t\treturn max;\r\n\t\t}\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],18:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('line', {\r\n\tshowLines: true,\r\n\tspanGaps: false,\r\n\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\tid: 'x-axis-0'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tfunction lineEnabled(dataset, options) {\r\n\t\treturn helpers.valueOrDefault(dataset.showLine, options.showLines);\r\n\t}\r\n\r\n\tChart.controllers.line = Chart.DatasetController.extend({\r\n\r\n\t\tdatasetElementType: elements.Line,\r\n\r\n\t\tdataElementType: elements.Point,\r\n\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar line = meta.dataset;\r\n\t\t\tvar points = meta.data || [];\r\n\t\t\tvar options = me.chart.options;\r\n\t\t\tvar lineElementOptions = options.elements.line;\r\n\t\t\tvar scale = me.getScaleForId(meta.yAxisID);\r\n\t\t\tvar i, ilen, custom;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar showLine = lineEnabled(dataset, options);\r\n\r\n\t\t\t// Update Line\r\n\t\t\tif (showLine) {\r\n\t\t\t\tcustom = line.custom || {};\r\n\r\n\t\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\r\n\t\t\t\t\tdataset.lineTension = dataset.tension;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Utility\r\n\t\t\t\tline._scale = scale;\r\n\t\t\t\tline._datasetIndex = me.index;\r\n\t\t\t\t// Data\r\n\t\t\t\tline._children = points;\r\n\t\t\t\t// Model\r\n\t\t\t\tline._model = {\r\n\t\t\t\t\t// Appearance\r\n\t\t\t\t\t// The default behavior of lines is to break at null values, according\r\n\t\t\t\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\r\n\t\t\t\t\t// This option gives lines the ability to span gaps\r\n\t\t\t\t\tspanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps,\r\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\r\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\r\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\r\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\r\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\r\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\r\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\r\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\r\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\r\n\t\t\t\t\tsteppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped),\r\n\t\t\t\t\tcubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode),\r\n\t\t\t\t};\r\n\r\n\t\t\t\tline.pivot();\r\n\t\t\t}\r\n\r\n\t\t\t// Update Points\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t\t}\r\n\r\n\t\t\tif (showLine && line._model.tension !== 0) {\r\n\t\t\t\tme.updateBezierControlPoints();\r\n\t\t\t}\r\n\r\n\t\t\t// Now pivot the point for animation\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tpoints[i].pivot();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetPointBackgroundColor: function(point, index) {\r\n\t\t\tvar backgroundColor = this.chart.options.elements.point.backgroundColor;\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar custom = point.custom || {};\r\n\r\n\t\t\tif (custom.backgroundColor) {\r\n\t\t\t\tbackgroundColor = custom.backgroundColor;\r\n\t\t\t} else if (dataset.pointBackgroundColor) {\r\n\t\t\t\tbackgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor);\r\n\t\t\t} else if (dataset.backgroundColor) {\r\n\t\t\t\tbackgroundColor = dataset.backgroundColor;\r\n\t\t\t}\r\n\r\n\t\t\treturn backgroundColor;\r\n\t\t},\r\n\r\n\t\tgetPointBorderColor: function(point, index) {\r\n\t\t\tvar borderColor = this.chart.options.elements.point.borderColor;\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar custom = point.custom || {};\r\n\r\n\t\t\tif (custom.borderColor) {\r\n\t\t\t\tborderColor = custom.borderColor;\r\n\t\t\t} else if (dataset.pointBorderColor) {\r\n\t\t\t\tborderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor);\r\n\t\t\t} else if (dataset.borderColor) {\r\n\t\t\t\tborderColor = dataset.borderColor;\r\n\t\t\t}\r\n\r\n\t\t\treturn borderColor;\r\n\t\t},\r\n\r\n\t\tgetPointBorderWidth: function(point, index) {\r\n\t\t\tvar borderWidth = this.chart.options.elements.point.borderWidth;\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar custom = point.custom || {};\r\n\r\n\t\t\tif (!isNaN(custom.borderWidth)) {\r\n\t\t\t\tborderWidth = custom.borderWidth;\r\n\t\t\t} else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) {\r\n\t\t\t\tborderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth);\r\n\t\t\t} else if (!isNaN(dataset.borderWidth)) {\r\n\t\t\t\tborderWidth = dataset.borderWidth;\r\n\t\t\t}\r\n\r\n\t\t\treturn borderWidth;\r\n\t\t},\r\n\r\n\t\tgetPointRotation: function(point, index) {\r\n\t\t\tvar pointRotation = this.chart.options.elements.point.rotation;\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar custom = point.custom || {};\r\n\r\n\t\t\tif (!isNaN(custom.rotation)) {\r\n\t\t\t\tpointRotation = custom.rotation;\r\n\t\t\t} else if (!isNaN(dataset.pointRotation) || helpers.isArray(dataset.pointRotation)) {\r\n\t\t\t\tpointRotation = helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointRotation);\r\n\t\t\t}\r\n\t\t\treturn pointRotation;\r\n\t\t},\r\n\r\n\t\tupdateElement: function(point, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar custom = point.custom || {};\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar datasetIndex = me.index;\r\n\t\t\tvar value = dataset.data[index];\r\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\r\n\t\t\tvar pointOptions = me.chart.options.elements.point;\r\n\t\t\tvar x, y;\r\n\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\r\n\t\t\t\tdataset.pointRadius = dataset.radius;\r\n\t\t\t}\r\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\r\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\r\n\t\t\t}\r\n\r\n\t\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\r\n\t\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\r\n\r\n\t\t\t// Utility\r\n\t\t\tpoint._xScale = xScale;\r\n\t\t\tpoint._yScale = yScale;\r\n\t\t\tpoint._datasetIndex = datasetIndex;\r\n\t\t\tpoint._index = index;\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\tpoint._model = {\r\n\t\t\t\tx: x,\r\n\t\t\t\ty: y,\r\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t\t// Appearance\r\n\t\t\t\tradius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius),\r\n\t\t\t\tpointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle),\r\n\t\t\t\trotation: me.getPointRotation(point, index),\r\n\t\t\t\tbackgroundColor: me.getPointBackgroundColor(point, index),\r\n\t\t\t\tborderColor: me.getPointBorderColor(point, index),\r\n\t\t\t\tborderWidth: me.getPointBorderWidth(point, index),\r\n\t\t\t\ttension: meta.dataset._model ? meta.dataset._model.tension : 0,\r\n\t\t\t\tsteppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false,\r\n\t\t\t\t// Tooltip\r\n\t\t\t\thitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius)\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tcalculatePointY: function(value, index, datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\t\tvar sumPos = 0;\r\n\t\t\tvar sumNeg = 0;\r\n\t\t\tvar i, ds, dsMeta;\r\n\r\n\t\t\tif (yScale.options.stacked) {\r\n\t\t\t\tfor (i = 0; i < datasetIndex; i++) {\r\n\t\t\t\t\tds = chart.data.datasets[i];\r\n\t\t\t\t\tdsMeta = chart.getDatasetMeta(i);\r\n\t\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) {\r\n\t\t\t\t\t\tvar stackedRightValue = Number(yScale.getRightValue(ds.data[index]));\r\n\t\t\t\t\t\tif (stackedRightValue < 0) {\r\n\t\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tsumPos += stackedRightValue || 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar rightValue = Number(yScale.getRightValue(value));\r\n\t\t\t\tif (rightValue < 0) {\r\n\t\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\r\n\t\t\t\t}\r\n\t\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\r\n\t\t\t}\r\n\r\n\t\t\treturn yScale.getPixelForValue(value);\r\n\t\t},\r\n\r\n\t\tupdateBezierControlPoints: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar area = me.chart.chartArea;\r\n\t\t\tvar points = (meta.data || []);\r\n\t\t\tvar i, ilen, point, model, controlPoints;\r\n\r\n\t\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\t\tif (meta.dataset._model.spanGaps) {\r\n\t\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\t\treturn !pt._model.skip;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t\t}\r\n\r\n\t\t\tif (meta.dataset._model.cubicInterpolationMode === 'monotone') {\r\n\t\t\t\thelpers.splineCurveMonotone(points);\r\n\t\t\t} else {\r\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\t\tpoint = points[i];\r\n\t\t\t\t\tmodel = point._model;\r\n\t\t\t\t\tcontrolPoints = helpers.splineCurve(\r\n\t\t\t\t\t\thelpers.previousItem(points, i)._model,\r\n\t\t\t\t\t\tmodel,\r\n\t\t\t\t\t\thelpers.nextItem(points, i)._model,\r\n\t\t\t\t\t\tmeta.dataset._model.tension\r\n\t\t\t\t\t);\r\n\t\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\r\n\t\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\r\n\t\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\r\n\t\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (me.chart.options.elements.line.capBezierPoints) {\r\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\r\n\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\r\n\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\r\n\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tdraw: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar points = meta.data || [];\r\n\t\t\tvar area = chart.chartArea;\r\n\t\t\tvar ilen = points.length;\r\n\t\t\tvar halfBorderWidth;\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\tif (lineEnabled(me.getDataset(), chart.options)) {\r\n\t\t\t\thalfBorderWidth = (meta.dataset._model.borderWidth || 0) / 2;\r\n\r\n\t\t\t\thelpers.canvas.clipArea(chart.ctx, {\r\n\t\t\t\t\tleft: area.left,\r\n\t\t\t\t\tright: area.right,\r\n\t\t\t\t\ttop: area.top - halfBorderWidth,\r\n\t\t\t\t\tbottom: area.bottom + halfBorderWidth\r\n\t\t\t\t});\r\n\r\n\t\t\t\tmeta.dataset.draw();\r\n\r\n\t\t\t\thelpers.canvas.unclipArea(chart.ctx);\r\n\t\t\t}\r\n\r\n\t\t\t// Draw the points\r\n\t\t\tfor (; i < ilen; ++i) {\r\n\t\t\t\tpoints[i].draw(area);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tsetHoverStyle: function(element) {\r\n\t\t\t// Point\r\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\r\n\t\t\tvar index = element._index;\r\n\t\t\tvar custom = element.custom || {};\r\n\t\t\tvar model = element._model;\r\n\r\n\t\t\telement.$previousStyle = {\r\n\t\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\t\tborderColor: model.borderColor,\r\n\t\t\t\tborderWidth: model.borderWidth,\r\n\t\t\t\tradius: model.radius\r\n\t\t\t};\r\n\r\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\r\n\t\t\tmodel.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\r\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\r\n\t\t\tmodel.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\r\n\t\t},\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],19:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('polarArea', {\r\n\tscale: {\r\n\t\ttype: 'radialLinear',\r\n\t\tangleLines: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tgridLines: {\r\n\t\t\tcircular: true\r\n\t\t},\r\n\t\tpointLabels: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tticks: {\r\n\t\t\tbeginAtZero: true\r\n\t\t}\r\n\t},\r\n\r\n\t// Boolean - Whether to animate the rotation of the chart\r\n\tanimation: {\r\n\t\tanimateRotate: true,\r\n\t\tanimateScale: true\r\n\t},\r\n\r\n\tstartAngle: -0.5 * Math.PI,\r\n\tlegendCallback: function(chart) {\r\n\t\tvar text = [];\r\n\t\ttext.push('
        ');\r\n\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\r\n\t\t\t\ttext.push('
      • ');\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\ttext.push(labels[i]);\r\n\t\t\t\t}\r\n\t\t\t\ttext.push('
      • ');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttext.push('
      ');\r\n\t\treturn text.join('');\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar ds = data.datasets[0];\r\n\t\t\t\t\t\tvar arc = meta.data[i];\r\n\t\t\t\t\t\tvar custom = arc.custom || {};\r\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\r\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\r\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\r\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\r\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: fill,\r\n\t\t\t\t\t\t\tstrokeStyle: stroke,\r\n\t\t\t\t\t\t\tlineWidth: bw,\r\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.controllers.polarArea = Chart.DatasetController.extend({\r\n\r\n\t\tdataElementType: elements.Arc,\r\n\r\n\t\tlinkScales: helpers.noop,\r\n\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar start = me.chart.options.startAngle || 0;\r\n\t\t\tvar starts = me._starts = [];\r\n\t\t\tvar angles = me._angles = [];\r\n\t\t\tvar i, ilen, angle;\r\n\r\n\t\t\tme._updateRadius();\r\n\r\n\t\t\tmeta.count = me.countVisibleElements();\r\n\r\n\t\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\r\n\t\t\t\tstarts[i] = start;\r\n\t\t\t\tangle = me._computeAngle(i);\r\n\t\t\t\tangles[i] = angle;\r\n\t\t\t\tstart += angle;\r\n\t\t\t}\r\n\r\n\t\t\thelpers.each(meta.data, function(arc, index) {\r\n\t\t\t\tme.updateElement(arc, index, reset);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\t_updateRadius: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar chartArea = chart.chartArea;\r\n\t\t\tvar opts = chart.options;\r\n\t\t\tvar arcOpts = opts.elements.arc;\r\n\t\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\r\n\r\n\t\t\tchart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0);\r\n\t\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\r\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\r\n\r\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\r\n\t\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\r\n\t\t},\r\n\r\n\t\tupdateElement: function(arc, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar opts = chart.options;\r\n\t\t\tvar animationOpts = opts.animation;\r\n\t\t\tvar scale = chart.scale;\r\n\t\t\tvar labels = chart.data.labels;\r\n\r\n\t\t\tvar centerX = scale.xCenter;\r\n\t\t\tvar centerY = scale.yCenter;\r\n\r\n\t\t\t// var negHalfPI = -0.5 * Math.PI;\r\n\t\t\tvar datasetStartAngle = opts.startAngle;\r\n\t\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\t\tvar startAngle = me._starts[index];\r\n\t\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\r\n\r\n\t\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\r\n\t\t\thelpers.extend(arc, {\r\n\t\t\t\t// Utility\r\n\t\t\t\t_datasetIndex: me.index,\r\n\t\t\t\t_index: index,\r\n\t\t\t\t_scale: scale,\r\n\r\n\t\t\t\t// Desired view properties\r\n\t\t\t\t_model: {\r\n\t\t\t\t\tx: centerX,\r\n\t\t\t\t\ty: centerY,\r\n\t\t\t\t\tinnerRadius: 0,\r\n\t\t\t\t\touterRadius: reset ? resetRadius : distance,\r\n\t\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\r\n\t\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\r\n\t\t\t\t\tlabel: helpers.valueAtIndexOrDefault(labels, index, labels[index])\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Apply border and fill style\r\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\r\n\t\t\tvar custom = arc.custom || {};\r\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\r\n\t\t\tvar model = arc._model;\r\n\r\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\r\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\r\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\r\n\r\n\t\t\tarc.pivot();\r\n\t\t},\r\n\r\n\t\tcountVisibleElements: function() {\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar meta = this.getMeta();\r\n\t\t\tvar count = 0;\r\n\r\n\t\t\thelpers.each(meta.data, function(element, index) {\r\n\t\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\r\n\t\t\t\t\tcount++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn count;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\t_computeAngle: function(index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar count = this.getMeta().count;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar meta = me.getMeta();\r\n\r\n\t\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\t// Scriptable options\r\n\t\t\tvar context = {\r\n\t\t\t\tchart: me.chart,\r\n\t\t\t\tdataIndex: index,\r\n\t\t\t\tdataset: dataset,\r\n\t\t\t\tdatasetIndex: me.index\r\n\t\t\t};\r\n\r\n\t\t\treturn helpers.options.resolve([\r\n\t\t\t\tme.chart.options.elements.arc.angle,\r\n\t\t\t\t(2 * Math.PI) / count\r\n\t\t\t], context, index);\r\n\t\t}\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],20:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('radar', {\r\n\tscale: {\r\n\t\ttype: 'radialLinear'\r\n\t},\r\n\telements: {\r\n\t\tline: {\r\n\t\t\ttension: 0 // no bezier in radar\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.controllers.radar = Chart.DatasetController.extend({\r\n\r\n\t\tdatasetElementType: elements.Line,\r\n\r\n\t\tdataElementType: elements.Point,\r\n\r\n\t\tlinkScales: helpers.noop,\r\n\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar line = meta.dataset;\r\n\t\t\tvar points = meta.data;\r\n\t\t\tvar custom = line.custom || {};\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar lineElementOptions = me.chart.options.elements.line;\r\n\t\t\tvar scale = me.chart.scale;\r\n\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\r\n\t\t\t\tdataset.lineTension = dataset.tension;\r\n\t\t\t}\r\n\r\n\t\t\thelpers.extend(meta.dataset, {\r\n\t\t\t\t// Utility\r\n\t\t\t\t_datasetIndex: me.index,\r\n\t\t\t\t_scale: scale,\r\n\t\t\t\t// Data\r\n\t\t\t\t_children: points,\r\n\t\t\t\t_loop: true,\r\n\t\t\t\t// Model\r\n\t\t\t\t_model: {\r\n\t\t\t\t\t// Appearance\r\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\r\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\r\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\r\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\r\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\r\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\r\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\r\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\r\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tmeta.dataset.pivot();\r\n\r\n\t\t\t// Update Points\r\n\t\t\thelpers.each(points, function(point, index) {\r\n\t\t\t\tme.updateElement(point, index, reset);\r\n\t\t\t}, me);\r\n\r\n\t\t\t// Update bezier control points\r\n\t\t\tme.updateBezierControlPoints();\r\n\t\t},\r\n\t\tupdateElement: function(point, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar custom = point.custom || {};\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar scale = me.chart.scale;\r\n\t\t\tvar pointElementOptions = me.chart.options.elements.point;\r\n\t\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\r\n\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\r\n\t\t\t\tdataset.pointRadius = dataset.radius;\r\n\t\t\t}\r\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\r\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\r\n\t\t\t}\r\n\r\n\t\t\thelpers.extend(point, {\r\n\t\t\t\t// Utility\r\n\t\t\t\t_datasetIndex: me.index,\r\n\t\t\t\t_index: index,\r\n\t\t\t\t_scale: scale,\r\n\r\n\t\t\t\t// Desired view properties\r\n\t\t\t\t_model: {\r\n\t\t\t\t\tx: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales\r\n\t\t\t\t\ty: reset ? scale.yCenter : pointPosition.y,\r\n\r\n\t\t\t\t\t// Appearance\r\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension),\r\n\t\t\t\t\tradius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius),\r\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor),\r\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor),\r\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth),\r\n\t\t\t\t\tpointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle),\r\n\t\t\t\t\trotation: custom.rotation ? custom.rotation : helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointElementOptions.rotation),\r\n\r\n\t\t\t\t\t// Tooltip\r\n\t\t\t\t\thitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius)\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tpoint._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y));\r\n\t\t},\r\n\t\tupdateBezierControlPoints: function() {\r\n\t\t\tvar chartArea = this.chart.chartArea;\r\n\t\t\tvar meta = this.getMeta();\r\n\r\n\t\t\thelpers.each(meta.data, function(point, index) {\r\n\t\t\t\tvar model = point._model;\r\n\t\t\t\tvar controlPoints = helpers.splineCurve(\r\n\t\t\t\t\thelpers.previousItem(meta.data, index, true)._model,\r\n\t\t\t\t\tmodel,\r\n\t\t\t\t\thelpers.nextItem(meta.data, index, true)._model,\r\n\t\t\t\t\tmodel.tension\r\n\t\t\t\t);\r\n\r\n\t\t\t\t// Prevent the bezier going outside of the bounds of the graph\r\n\t\t\t\tmodel.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left);\r\n\t\t\t\tmodel.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top);\r\n\r\n\t\t\t\tmodel.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left);\r\n\t\t\t\tmodel.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top);\r\n\r\n\t\t\t\t// Now pivot the point for animation\r\n\t\t\t\tpoint.pivot();\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tsetHoverStyle: function(point) {\r\n\t\t\t// Point\r\n\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\r\n\t\t\tvar custom = point.custom || {};\r\n\t\t\tvar index = point._index;\r\n\t\t\tvar model = point._model;\r\n\r\n\t\t\tpoint.$previousStyle = {\r\n\t\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\t\tborderColor: model.borderColor,\r\n\t\t\t\tborderWidth: model.borderWidth,\r\n\t\t\t\tradius: model.radius\r\n\t\t\t};\r\n\r\n\t\t\tmodel.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\r\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\r\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\r\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\r\n\t\t},\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],21:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\n\r\ndefaults._set('scatter', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\tid: 'x-axis-1', // need an ID so datasets can reference the scale\r\n\t\t\ttype: 'linear', // scatter should not use a category axis\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\tid: 'y-axis-1',\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left'\r\n\t\t}]\r\n\t},\r\n\r\n\tshowLines: false,\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn ''; // doesn't make sense for scatter since data are formatted as a point\r\n\t\t\t},\r\n\t\t\tlabel: function(item) {\r\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\t// Scatter charts use line controllers\r\n\tChart.controllers.scatter = Chart.controllers.line;\r\n\r\n};\r\n\r\n},{\"26\":26}],22:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar Element = require(27);\r\n\r\nvar exports = module.exports = Element.extend({\r\n\tchart: null, // the animation associated chart instance\r\n\tcurrentStep: 0, // the current animation step\r\n\tnumSteps: 60, // default number of steps\r\n\teasing: '', // the easing to use for this animation\r\n\trender: null, // render function used by the animation service\r\n\r\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\r\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\r\n});\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation instead\r\n * @prop Chart.Animation#animationObject\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports.prototype, 'animationObject', {\r\n\tget: function() {\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation#chart instead\r\n * @prop Chart.Animation#chartInstance\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports.prototype, 'chartInstance', {\r\n\tget: function() {\r\n\t\treturn this.chart;\r\n\t},\r\n\tset: function(value) {\r\n\t\tthis.chart = value;\r\n\t}\r\n});\r\n\r\n},{\"27\":27}],23:[function(require,module,exports){\r\n/* global window: false */\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('global', {\r\n\tanimation: {\r\n\t\tduration: 1000,\r\n\t\teasing: 'easeOutQuart',\r\n\t\tonProgress: helpers.noop,\r\n\t\tonComplete: helpers.noop\r\n\t}\r\n});\r\n\r\nmodule.exports = {\r\n\tframeDuration: 17,\r\n\tanimations: [],\r\n\tdropFrames: 0,\r\n\trequest: null,\r\n\r\n\t/**\r\n\t * @param {Chart} chart - The chart to animate.\r\n\t * @param {Chart.Animation} animation - The animation that we will animate.\r\n\t * @param {Number} duration - The animation duration in ms.\r\n\t * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\r\n\t */\r\n\taddAnimation: function(chart, animation, duration, lazy) {\r\n\t\tvar animations = this.animations;\r\n\t\tvar i, ilen;\r\n\r\n\t\tanimation.chart = chart;\r\n\r\n\t\tif (!lazy) {\r\n\t\t\tchart.animating = true;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\r\n\t\t\tif (animations[i].chart === chart) {\r\n\t\t\t\tanimations[i] = animation;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tanimations.push(animation);\r\n\r\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\r\n\t\tif (animations.length === 1) {\r\n\t\t\tthis.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\tcancelAnimation: function(chart) {\r\n\t\tvar index = helpers.findIndex(this.animations, function(animation) {\r\n\t\t\treturn animation.chart === chart;\r\n\t\t});\r\n\r\n\t\tif (index !== -1) {\r\n\t\t\tthis.animations.splice(index, 1);\r\n\t\t\tchart.animating = false;\r\n\t\t}\r\n\t},\r\n\r\n\trequestAnimationFrame: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.request === null) {\r\n\t\t\t// Skip animation frame requests until the active one is executed.\r\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\r\n\t\t\t// and 'mouseout' events will trigger multiple renders.\r\n\t\t\tme.request = helpers.requestAnimFrame.call(window, function() {\r\n\t\t\t\tme.request = null;\r\n\t\t\t\tme.startDigest();\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tstartDigest: function() {\r\n\t\tvar me = this;\r\n\t\tvar startTime = Date.now();\r\n\t\tvar framesToDrop = 0;\r\n\r\n\t\tif (me.dropFrames > 1) {\r\n\t\t\tframesToDrop = Math.floor(me.dropFrames);\r\n\t\t\tme.dropFrames = me.dropFrames % 1;\r\n\t\t}\r\n\r\n\t\tme.advance(1 + framesToDrop);\r\n\r\n\t\tvar endTime = Date.now();\r\n\r\n\t\tme.dropFrames += (endTime - startTime) / me.frameDuration;\r\n\r\n\t\t// Do we have more stuff to animate?\r\n\t\tif (me.animations.length > 0) {\r\n\t\t\tme.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tadvance: function(count) {\r\n\t\tvar animations = this.animations;\r\n\t\tvar animation, chart;\r\n\t\tvar i = 0;\r\n\r\n\t\twhile (i < animations.length) {\r\n\t\t\tanimation = animations[i];\r\n\t\t\tchart = animation.chart;\r\n\r\n\t\t\tanimation.currentStep = (animation.currentStep || 0) + count;\r\n\t\t\tanimation.currentStep = Math.min(animation.currentStep, animation.numSteps);\r\n\r\n\t\t\thelpers.callback(animation.render, [chart, animation], chart);\r\n\t\t\thelpers.callback(animation.onAnimationProgress, [animation], chart);\r\n\r\n\t\t\tif (animation.currentStep >= animation.numSteps) {\r\n\t\t\t\thelpers.callback(animation.onAnimationComplete, [animation], chart);\r\n\t\t\t\tchart.animating = false;\r\n\t\t\t\tanimations.splice(i, 1);\r\n\t\t\t} else {\r\n\t\t\t\t++i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"26\":26,\"46\":46}],24:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar Animation = require(22);\r\nvar animations = require(23);\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar Interaction = require(29);\r\nvar layouts = require(31);\r\nvar platform = require(49);\r\nvar plugins = require(32);\r\nvar scaleService = require(34);\r\nvar Tooltip = require(36);\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\t// Create a dictionary of chart types, to allow for extension of existing types\r\n\tChart.types = {};\r\n\r\n\t// Store a reference to each instance - allowing us to globally resize chart instances on window resize.\r\n\t// Destroy method on the chart will remove the instance of the chart from this reference.\r\n\tChart.instances = {};\r\n\r\n\t// Controllers available for dataset visualization eg. bar, line, slice, etc.\r\n\tChart.controllers = {};\r\n\r\n\t/**\r\n\t * Initializes the given config with global and chart default values.\r\n\t */\r\n\tfunction initConfig(config) {\r\n\t\tconfig = config || {};\r\n\r\n\t\t// Do NOT use configMerge() for the data object because this method merges arrays\r\n\t\t// and so would change references to labels and datasets, preventing data updates.\r\n\t\tvar data = config.data = config.data || {};\r\n\t\tdata.datasets = data.datasets || [];\r\n\t\tdata.labels = data.labels || [];\r\n\r\n\t\tconfig.options = helpers.configMerge(\r\n\t\t\tdefaults.global,\r\n\t\t\tdefaults[config.type],\r\n\t\t\tconfig.options || {});\r\n\r\n\t\treturn config;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the config of the chart\r\n\t * @param chart {Chart} chart to update the options for\r\n\t */\r\n\tfunction updateConfig(chart) {\r\n\t\tvar newOptions = chart.options;\r\n\r\n\t\thelpers.each(chart.scales, function(scale) {\r\n\t\t\tlayouts.removeBox(chart, scale);\r\n\t\t});\r\n\r\n\t\tnewOptions = helpers.configMerge(\r\n\t\t\tChart.defaults.global,\r\n\t\t\tChart.defaults[chart.config.type],\r\n\t\t\tnewOptions);\r\n\r\n\t\tchart.options = chart.config.options = newOptions;\r\n\t\tchart.ensureScalesHaveIDs();\r\n\t\tchart.buildOrUpdateScales();\r\n\t\t// Tooltip\r\n\t\tchart.tooltip._options = newOptions.tooltips;\r\n\t\tchart.tooltip.initialize();\r\n\t}\r\n\r\n\tfunction positionIsHorizontal(position) {\r\n\t\treturn position === 'top' || position === 'bottom';\r\n\t}\r\n\r\n\thelpers.extend(Chart.prototype, /** @lends Chart */ {\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tconstruct: function(item, config) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tconfig = initConfig(config);\r\n\r\n\t\t\tvar context = platform.acquireContext(item, config);\r\n\t\t\tvar canvas = context && context.canvas;\r\n\t\t\tvar height = canvas && canvas.height;\r\n\t\t\tvar width = canvas && canvas.width;\r\n\r\n\t\t\tme.id = helpers.uid();\r\n\t\t\tme.ctx = context;\r\n\t\t\tme.canvas = canvas;\r\n\t\t\tme.config = config;\r\n\t\t\tme.width = width;\r\n\t\t\tme.height = height;\r\n\t\t\tme.aspectRatio = height ? width / height : null;\r\n\t\t\tme.options = config.options;\r\n\t\t\tme._bufferedRender = false;\r\n\r\n\t\t\t/**\r\n\t\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\r\n\t\t\t * the \"instance\" still need to be defined since it might be called from plugins.\r\n\t\t\t * @prop Chart#chart\r\n\t\t\t * @deprecated since version 2.6.0\r\n\t\t\t * @todo remove at version 3\r\n\t\t\t * @private\r\n\t\t\t */\r\n\t\t\tme.chart = me;\r\n\t\t\tme.controller = me; // chart.chart.controller #inception\r\n\r\n\t\t\t// Add the chart instance to the global namespace\r\n\t\t\tChart.instances[me.id] = me;\r\n\r\n\t\t\t// Define alias to the config data: `chart.data === chart.config.data`\r\n\t\t\tObject.defineProperty(me, 'data', {\r\n\t\t\t\tget: function() {\r\n\t\t\t\t\treturn me.config.data;\r\n\t\t\t\t},\r\n\t\t\t\tset: function(value) {\r\n\t\t\t\t\tme.config.data = value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (!context || !canvas) {\r\n\t\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\r\n\t\t\t\t// the chart initialization but after setting basic chart / controller properties that\r\n\t\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\r\n\t\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\r\n\t\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tme.initialize();\r\n\t\t\tme.update();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tinitialize: function() {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\t// Before init plugin notification\r\n\t\t\tplugins.notify(me, 'beforeInit');\r\n\r\n\t\t\thelpers.retinaScale(me, me.options.devicePixelRatio);\r\n\r\n\t\t\tme.bindEvents();\r\n\r\n\t\t\tif (me.options.responsive) {\r\n\t\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\r\n\t\t\t\tme.resize(true);\r\n\t\t\t}\r\n\r\n\t\t\t// Make sure scales have IDs and are built before we build any controllers.\r\n\t\t\tme.ensureScalesHaveIDs();\r\n\t\t\tme.buildOrUpdateScales();\r\n\t\t\tme.initToolTip();\r\n\r\n\t\t\t// After init plugin notification\r\n\t\t\tplugins.notify(me, 'afterInit');\r\n\r\n\t\t\treturn me;\r\n\t\t},\r\n\r\n\t\tclear: function() {\r\n\t\t\thelpers.canvas.clear(this);\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\tstop: function() {\r\n\t\t\t// Stops any current animation loop occurring\r\n\t\t\tanimations.cancelAnimation(this);\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\tresize: function(silent) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = me.options;\r\n\t\t\tvar canvas = me.canvas;\r\n\t\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\r\n\r\n\t\t\t// the canvas render width and height will be casted to integers so make sure that\r\n\t\t\t// the canvas display style uses the same integer values to avoid blurring effect.\r\n\r\n\t\t\t// Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\r\n\t\t\tvar newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas)));\r\n\t\t\tvar newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas)));\r\n\r\n\t\t\tif (me.width === newWidth && me.height === newHeight) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tcanvas.width = me.width = newWidth;\r\n\t\t\tcanvas.height = me.height = newHeight;\r\n\t\t\tcanvas.style.width = newWidth + 'px';\r\n\t\t\tcanvas.style.height = newHeight + 'px';\r\n\r\n\t\t\thelpers.retinaScale(me, options.devicePixelRatio);\r\n\r\n\t\t\tif (!silent) {\r\n\t\t\t\t// Notify any plugins about the resize\r\n\t\t\t\tvar newSize = {width: newWidth, height: newHeight};\r\n\t\t\t\tplugins.notify(me, 'resize', [newSize]);\r\n\r\n\t\t\t\t// Notify of resize\r\n\t\t\t\tif (me.options.onResize) {\r\n\t\t\t\t\tme.options.onResize(me, newSize);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tme.stop();\r\n\t\t\t\tme.update({\r\n\t\t\t\t\tduration: me.options.responsiveAnimationDuration\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tensureScalesHaveIDs: function() {\r\n\t\t\tvar options = this.options;\r\n\t\t\tvar scalesOptions = options.scales || {};\r\n\t\t\tvar scaleOptions = options.scale;\r\n\r\n\t\t\thelpers.each(scalesOptions.xAxes, function(xAxisOptions, index) {\r\n\t\t\t\txAxisOptions.id = xAxisOptions.id || ('x-axis-' + index);\r\n\t\t\t});\r\n\r\n\t\t\thelpers.each(scalesOptions.yAxes, function(yAxisOptions, index) {\r\n\t\t\t\tyAxisOptions.id = yAxisOptions.id || ('y-axis-' + index);\r\n\t\t\t});\r\n\r\n\t\t\tif (scaleOptions) {\r\n\t\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Builds a map of scale ID to scale object for future lookup.\r\n\t\t */\r\n\t\tbuildOrUpdateScales: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = me.options;\r\n\t\t\tvar scales = me.scales || {};\r\n\t\t\tvar items = [];\r\n\t\t\tvar updated = Object.keys(scales).reduce(function(obj, id) {\r\n\t\t\t\tobj[id] = false;\r\n\t\t\t\treturn obj;\r\n\t\t\t}, {});\r\n\r\n\t\t\tif (options.scales) {\r\n\t\t\t\titems = items.concat(\r\n\t\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\r\n\t\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\r\n\t\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif (options.scale) {\r\n\t\t\t\titems.push({\r\n\t\t\t\t\toptions: options.scale,\r\n\t\t\t\t\tdtype: 'radialLinear',\r\n\t\t\t\t\tisDefault: true,\r\n\t\t\t\t\tdposition: 'chartArea'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\thelpers.each(items, function(item) {\r\n\t\t\t\tvar scaleOptions = item.options;\r\n\t\t\t\tvar id = scaleOptions.id;\r\n\t\t\t\tvar scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype);\r\n\r\n\t\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\r\n\t\t\t\t\tscaleOptions.position = item.dposition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tupdated[id] = true;\r\n\t\t\t\tvar scale = null;\r\n\t\t\t\tif (id in scales && scales[id].type === scaleType) {\r\n\t\t\t\t\tscale = scales[id];\r\n\t\t\t\t\tscale.options = scaleOptions;\r\n\t\t\t\t\tscale.ctx = me.ctx;\r\n\t\t\t\t\tscale.chart = me;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar scaleClass = scaleService.getScaleConstructor(scaleType);\r\n\t\t\t\t\tif (!scaleClass) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscale = new scaleClass({\r\n\t\t\t\t\t\tid: id,\r\n\t\t\t\t\t\ttype: scaleType,\r\n\t\t\t\t\t\toptions: scaleOptions,\r\n\t\t\t\t\t\tctx: me.ctx,\r\n\t\t\t\t\t\tchart: me\r\n\t\t\t\t\t});\r\n\t\t\t\t\tscales[scale.id] = scale;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscale.mergeTicksOptions();\r\n\r\n\t\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\r\n\t\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\r\n\t\t\t\t// make the logic easier and remove some useless? custom code.\r\n\t\t\t\tif (item.isDefault) {\r\n\t\t\t\t\tme.scale = scale;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t// clear up discarded scales\r\n\t\t\thelpers.each(updated, function(hasUpdated, id) {\r\n\t\t\t\tif (!hasUpdated) {\r\n\t\t\t\t\tdelete scales[id];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tme.scales = scales;\r\n\r\n\t\t\tscaleService.addScalesToLayout(this);\r\n\t\t},\r\n\r\n\t\tbuildOrUpdateControllers: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar types = [];\r\n\t\t\tvar newControllers = [];\r\n\r\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\r\n\t\t\t\tvar type = dataset.type || me.config.type;\r\n\r\n\t\t\t\tif (meta.type && meta.type !== type) {\r\n\t\t\t\t\tme.destroyDatasetMeta(datasetIndex);\r\n\t\t\t\t\tmeta = me.getDatasetMeta(datasetIndex);\r\n\t\t\t\t}\r\n\t\t\t\tmeta.type = type;\r\n\r\n\t\t\t\ttypes.push(meta.type);\r\n\r\n\t\t\t\tif (meta.controller) {\r\n\t\t\t\t\tmeta.controller.updateIndex(datasetIndex);\r\n\t\t\t\t\tmeta.controller.linkScales();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar ControllerClass = Chart.controllers[meta.type];\r\n\t\t\t\t\tif (ControllerClass === undefined) {\r\n\t\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tmeta.controller = new ControllerClass(me, datasetIndex);\r\n\t\t\t\t\tnewControllers.push(meta.controller);\r\n\t\t\t\t}\r\n\t\t\t}, me);\r\n\r\n\t\t\treturn newControllers;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Reset the elements of all datasets\r\n\t\t * @private\r\n\t\t */\r\n\t\tresetElements: function() {\r\n\t\t\tvar me = this;\r\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\r\n\t\t\t}, me);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t* Resets the chart back to it's state before the initial animation\r\n\t\t*/\r\n\t\treset: function() {\r\n\t\t\tthis.resetElements();\r\n\t\t\tthis.tooltip.initialize();\r\n\t\t},\r\n\r\n\t\tupdate: function(config) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (!config || typeof config !== 'object') {\r\n\t\t\t\t// backwards compatibility\r\n\t\t\t\tconfig = {\r\n\t\t\t\t\tduration: config,\r\n\t\t\t\t\tlazy: arguments[1]\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tupdateConfig(me);\r\n\r\n\t\t\t// plugins options references might have change, let's invalidate the cache\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\r\n\t\t\tplugins._invalidate(me);\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeUpdate') === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// In case the entire data object changed\r\n\t\t\tme.tooltip._data = me.data;\r\n\r\n\t\t\t// Make sure dataset controllers are updated and new controllers are reset\r\n\t\t\tvar newControllers = me.buildOrUpdateControllers();\r\n\r\n\t\t\t// Make sure all dataset controllers have correct meta data counts\r\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();\r\n\t\t\t}, me);\r\n\r\n\t\t\tme.updateLayout();\r\n\r\n\t\t\t// Can only reset the new controllers after the scales have been updated\r\n\t\t\tif (me.options.animation && me.options.animation.duration) {\r\n\t\t\t\thelpers.each(newControllers, function(controller) {\r\n\t\t\t\t\tcontroller.reset();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tme.updateDatasets();\r\n\r\n\t\t\t// Need to reset tooltip in case it is displayed with elements that are removed\r\n\t\t\t// after update.\r\n\t\t\tme.tooltip.initialize();\r\n\r\n\t\t\t// Last active contains items that were previously in the tooltip.\r\n\t\t\t// When we reset the tooltip, we need to clear it\r\n\t\t\tme.lastActive = [];\r\n\r\n\t\t\t// Do this before render so that any plugins that need final scale updates can use it\r\n\t\t\tplugins.notify(me, 'afterUpdate');\r\n\r\n\t\t\tif (me._bufferedRender) {\r\n\t\t\t\tme._bufferedRequest = {\r\n\t\t\t\t\tduration: config.duration,\r\n\t\t\t\t\teasing: config.easing,\r\n\t\t\t\t\tlazy: config.lazy\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\tme.render(config);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\r\n\t\t * hook, in which case, plugins will not be called on `afterLayout`.\r\n\t\t * @private\r\n\t\t */\r\n\t\tupdateLayout: function() {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeLayout') === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlayouts.update(this, this.width, this.height);\r\n\r\n\t\t\t/**\r\n\t\t\t * Provided for backward compatibility, use `afterLayout` instead.\r\n\t\t\t * @method IPlugin#afterScaleUpdate\r\n\t\t\t * @deprecated since version 2.5.0\r\n\t\t\t * @todo remove at version 3\r\n\t\t\t * @private\r\n\t\t\t */\r\n\t\t\tplugins.notify(me, 'afterScaleUpdate');\r\n\t\t\tplugins.notify(me, 'afterLayout');\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\r\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\r\n\t\t * @private\r\n\t\t */\r\n\t\tupdateDatasets: function() {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeDatasetsUpdate') === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\r\n\t\t\t\tme.updateDataset(i);\r\n\t\t\t}\r\n\r\n\t\t\tplugins.notify(me, 'afterDatasetsUpdate');\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\r\n\t\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\r\n\t\t * @private\r\n\t\t */\r\n\t\tupdateDataset: function(index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getDatasetMeta(index);\r\n\t\t\tvar args = {\r\n\t\t\t\tmeta: meta,\r\n\t\t\t\tindex: index\r\n\t\t\t};\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tmeta.controller.update();\r\n\r\n\t\t\tplugins.notify(me, 'afterDatasetUpdate', [args]);\r\n\t\t},\r\n\r\n\t\trender: function(config) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (!config || typeof config !== 'object') {\r\n\t\t\t\t// backwards compatibility\r\n\t\t\t\tconfig = {\r\n\t\t\t\t\tduration: config,\r\n\t\t\t\t\tlazy: arguments[1]\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tvar duration = config.duration;\r\n\t\t\tvar lazy = config.lazy;\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeRender') === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar animationOptions = me.options.animation;\r\n\t\t\tvar onComplete = function(animation) {\r\n\t\t\t\tplugins.notify(me, 'afterRender');\r\n\t\t\t\thelpers.callback(animationOptions && animationOptions.onComplete, [animation], me);\r\n\t\t\t};\r\n\r\n\t\t\tif (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) {\r\n\t\t\t\tvar animation = new Animation({\r\n\t\t\t\t\tnumSteps: (duration || animationOptions.duration) / 16.66, // 60 fps\r\n\t\t\t\t\teasing: config.easing || animationOptions.easing,\r\n\r\n\t\t\t\t\trender: function(chart, animationObject) {\r\n\t\t\t\t\t\tvar easingFunction = helpers.easing.effects[animationObject.easing];\r\n\t\t\t\t\t\tvar currentStep = animationObject.currentStep;\r\n\t\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\r\n\r\n\t\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\tonAnimationProgress: animationOptions.onProgress,\r\n\t\t\t\t\tonAnimationComplete: onComplete\r\n\t\t\t\t});\r\n\r\n\t\t\t\tanimations.addAnimation(me, animation, duration, lazy);\r\n\t\t\t} else {\r\n\t\t\t\tme.draw();\r\n\r\n\t\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\r\n\t\t\t\tonComplete(new Animation({numSteps: 0, chart: me}));\r\n\t\t\t}\r\n\r\n\t\t\treturn me;\r\n\t\t},\r\n\r\n\t\tdraw: function(easingValue) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tme.clear();\r\n\r\n\t\t\tif (helpers.isNullOrUndef(easingValue)) {\r\n\t\t\t\teasingValue = 1;\r\n\t\t\t}\r\n\r\n\t\t\tme.transition(easingValue);\r\n\r\n\t\t\tif (me.width <= 0 || me.height <= 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Draw all the scales\r\n\t\t\thelpers.each(me.boxes, function(box) {\r\n\t\t\t\tbox.draw(me.chartArea);\r\n\t\t\t}, me);\r\n\r\n\t\t\tif (me.scale) {\r\n\t\t\t\tme.scale.draw();\r\n\t\t\t}\r\n\r\n\t\t\tme.drawDatasets(easingValue);\r\n\t\t\tme._drawTooltip(easingValue);\r\n\r\n\t\t\tplugins.notify(me, 'afterDraw', [easingValue]);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\ttransition: function(easingValue) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tfor (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tif (me.isDatasetVisible(i)) {\r\n\t\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tme.tooltip.transition(easingValue);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\r\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\r\n\t\t * @private\r\n\t\t */\r\n\t\tdrawDatasets: function(easingValue) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Draw datasets reversed to support proper line stacking\r\n\t\t\tfor (var i = (me.data.datasets || []).length - 1; i >= 0; --i) {\r\n\t\t\t\tif (me.isDatasetVisible(i)) {\r\n\t\t\t\t\tme.drawDataset(i, easingValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tplugins.notify(me, 'afterDatasetsDraw', [easingValue]);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\r\n\t\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\r\n\t\t * @private\r\n\t\t */\r\n\t\tdrawDataset: function(index, easingValue) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getDatasetMeta(index);\r\n\t\t\tvar args = {\r\n\t\t\t\tmeta: meta,\r\n\t\t\t\tindex: index,\r\n\t\t\t\teasingValue: easingValue\r\n\t\t\t};\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tmeta.controller.draw(easingValue);\r\n\r\n\t\t\tplugins.notify(me, 'afterDatasetDraw', [args]);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\r\n\t\t * hook, in which case, plugins will not be called on `afterTooltipDraw`.\r\n\t\t * @private\r\n\t\t */\r\n\t\t_drawTooltip: function(easingValue) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar tooltip = me.tooltip;\r\n\t\t\tvar args = {\r\n\t\t\t\ttooltip: tooltip,\r\n\t\t\t\teasingValue: easingValue\r\n\t\t\t};\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\ttooltip.draw();\r\n\r\n\t\t\tplugins.notify(me, 'afterTooltipDraw', [args]);\r\n\t\t},\r\n\r\n\t\t// Get the single element that was clicked on\r\n\t\t// @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\r\n\t\tgetElementAtEvent: function(e) {\r\n\t\t\treturn Interaction.modes.single(this, e);\r\n\t\t},\r\n\r\n\t\tgetElementsAtEvent: function(e) {\r\n\t\t\treturn Interaction.modes.label(this, e, {intersect: true});\r\n\t\t},\r\n\r\n\t\tgetElementsAtXAxis: function(e) {\r\n\t\t\treturn Interaction.modes['x-axis'](this, e, {intersect: true});\r\n\t\t},\r\n\r\n\t\tgetElementsAtEventForMode: function(e, mode, options) {\r\n\t\t\tvar method = Interaction.modes[mode];\r\n\t\t\tif (typeof method === 'function') {\r\n\t\t\t\treturn method(this, e, options);\r\n\t\t\t}\r\n\r\n\t\t\treturn [];\r\n\t\t},\r\n\r\n\t\tgetDatasetAtEvent: function(e) {\r\n\t\t\treturn Interaction.modes.dataset(this, e, {intersect: true});\r\n\t\t},\r\n\r\n\t\tgetDatasetMeta: function(datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar dataset = me.data.datasets[datasetIndex];\r\n\t\t\tif (!dataset._meta) {\r\n\t\t\t\tdataset._meta = {};\r\n\t\t\t}\r\n\r\n\t\t\tvar meta = dataset._meta[me.id];\r\n\t\t\tif (!meta) {\r\n\t\t\t\tmeta = dataset._meta[me.id] = {\r\n\t\t\t\t\ttype: null,\r\n\t\t\t\t\tdata: [],\r\n\t\t\t\t\tdataset: null,\r\n\t\t\t\t\tcontroller: null,\r\n\t\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\r\n\t\t\t\t\txAxisID: null,\r\n\t\t\t\t\tyAxisID: null\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn meta;\r\n\t\t},\r\n\r\n\t\tgetVisibleDatasetCount: function() {\r\n\t\t\tvar count = 0;\r\n\t\t\tfor (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\r\n\t\t\t\tif (this.isDatasetVisible(i)) {\r\n\t\t\t\t\tcount++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn count;\r\n\t\t},\r\n\r\n\t\tisDatasetVisible: function(datasetIndex) {\r\n\t\t\tvar meta = this.getDatasetMeta(datasetIndex);\r\n\r\n\t\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\r\n\t\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\r\n\t\t\treturn typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\r\n\t\t},\r\n\r\n\t\tgenerateLegend: function() {\r\n\t\t\treturn this.options.legendCallback(this);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tdestroyDatasetMeta: function(datasetIndex) {\r\n\t\t\tvar id = this.id;\r\n\t\t\tvar dataset = this.data.datasets[datasetIndex];\r\n\t\t\tvar meta = dataset._meta && dataset._meta[id];\r\n\r\n\t\t\tif (meta) {\r\n\t\t\t\tmeta.controller.destroy();\r\n\t\t\t\tdelete dataset._meta[id];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tdestroy: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar canvas = me.canvas;\r\n\t\t\tvar i, ilen;\r\n\r\n\t\t\tme.stop();\r\n\r\n\t\t\t// dataset controllers need to cleanup associated data\r\n\t\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\r\n\t\t\t\tme.destroyDatasetMeta(i);\r\n\t\t\t}\r\n\r\n\t\t\tif (canvas) {\r\n\t\t\t\tme.unbindEvents();\r\n\t\t\t\thelpers.canvas.clear(me);\r\n\t\t\t\tplatform.releaseContext(me.ctx);\r\n\t\t\t\tme.canvas = null;\r\n\t\t\t\tme.ctx = null;\r\n\t\t\t}\r\n\r\n\t\t\tplugins.notify(me, 'destroy');\r\n\r\n\t\t\tdelete Chart.instances[me.id];\r\n\t\t},\r\n\r\n\t\ttoBase64Image: function() {\r\n\t\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\r\n\t\t},\r\n\r\n\t\tinitToolTip: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tme.tooltip = new Tooltip({\r\n\t\t\t\t_chart: me,\r\n\t\t\t\t_chartInstance: me, // deprecated, backward compatibility\r\n\t\t\t\t_data: me.data,\r\n\t\t\t\t_options: me.options.tooltips\r\n\t\t\t}, me);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tbindEvents: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar listeners = me._listeners = {};\r\n\t\t\tvar listener = function() {\r\n\t\t\t\tme.eventHandler.apply(me, arguments);\r\n\t\t\t};\r\n\r\n\t\t\thelpers.each(me.options.events, function(type) {\r\n\t\t\t\tplatform.addEventListener(me, type, listener);\r\n\t\t\t\tlisteners[type] = listener;\r\n\t\t\t});\r\n\r\n\t\t\t// Elements used to detect size change should not be injected for non responsive charts.\r\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/2210\r\n\t\t\tif (me.options.responsive) {\r\n\t\t\t\tlistener = function() {\r\n\t\t\t\t\tme.resize();\r\n\t\t\t\t};\r\n\r\n\t\t\t\tplatform.addEventListener(me, 'resize', listener);\r\n\t\t\t\tlisteners.resize = listener;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tunbindEvents: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar listeners = me._listeners;\r\n\t\t\tif (!listeners) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tdelete me._listeners;\r\n\t\t\thelpers.each(listeners, function(listener, type) {\r\n\t\t\t\tplatform.removeEventListener(me, type, listener);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tupdateHoverStyle: function(elements, mode, enabled) {\r\n\t\t\tvar method = enabled ? 'setHoverStyle' : 'removeHoverStyle';\r\n\t\t\tvar element, i, ilen;\r\n\r\n\t\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\r\n\t\t\t\telement = elements[i];\r\n\t\t\t\tif (element) {\r\n\t\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[method](element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\teventHandler: function(e) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar tooltip = me.tooltip;\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeEvent', [e]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Buffer any update calls so that renders do not occur\r\n\t\t\tme._bufferedRender = true;\r\n\t\t\tme._bufferedRequest = null;\r\n\r\n\t\t\tvar changed = me.handleEvent(e);\r\n\t\t\t// for smooth tooltip animations issue #4989\r\n\t\t\t// the tooltip should be the source of change\r\n\t\t\t// Animation check workaround:\r\n\t\t\t// tooltip._start will be null when tooltip isn't animating\r\n\t\t\tif (tooltip) {\r\n\t\t\t\tchanged = tooltip._start\r\n\t\t\t\t\t? tooltip.handleEvent(e)\r\n\t\t\t\t\t: changed | tooltip.handleEvent(e);\r\n\t\t\t}\r\n\r\n\t\t\tplugins.notify(me, 'afterEvent', [e]);\r\n\r\n\t\t\tvar bufferedRequest = me._bufferedRequest;\r\n\t\t\tif (bufferedRequest) {\r\n\t\t\t\t// If we have an update that was triggered, we need to do a normal render\r\n\t\t\t\tme.render(bufferedRequest);\r\n\t\t\t} else if (changed && !me.animating) {\r\n\t\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\r\n\t\t\t\tme.stop();\r\n\r\n\t\t\t\t// We only need to render at this point. Updating will cause scales to be\r\n\t\t\t\t// recomputed generating flicker & using more memory than necessary.\r\n\t\t\t\tme.render({\r\n\t\t\t\t\tduration: me.options.hover.animationDuration,\r\n\t\t\t\t\tlazy: true\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tme._bufferedRender = false;\r\n\t\t\tme._bufferedRequest = null;\r\n\r\n\t\t\treturn me;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Handle an event\r\n\t\t * @private\r\n\t\t * @param {IEvent} event the event to handle\r\n\t\t * @return {Boolean} true if the chart needs to re-render\r\n\t\t */\r\n\t\thandleEvent: function(e) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = me.options || {};\r\n\t\t\tvar hoverOptions = options.hover;\r\n\t\t\tvar changed = false;\r\n\r\n\t\t\tme.lastActive = me.lastActive || [];\r\n\r\n\t\t\t// Find Active Elements for hover and tooltips\r\n\t\t\tif (e.type === 'mouseout') {\r\n\t\t\t\tme.active = [];\r\n\t\t\t} else {\r\n\t\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\r\n\t\t\t}\r\n\r\n\t\t\t// Invoke onHover hook\r\n\t\t\t// Need to call with native event here to not break backwards compatibility\r\n\t\t\thelpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\r\n\r\n\t\t\tif (e.type === 'mouseup' || e.type === 'click') {\r\n\t\t\t\tif (options.onClick) {\r\n\t\t\t\t\t// Use e.native here for backwards compatibility\r\n\t\t\t\t\toptions.onClick.call(me, e.native, me.active);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Remove styling for last active (even if it may still be active)\r\n\t\t\tif (me.lastActive.length) {\r\n\t\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\r\n\t\t\t}\r\n\r\n\t\t\t// Built in hover styling\r\n\t\t\tif (me.active.length && hoverOptions.mode) {\r\n\t\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\r\n\t\t\t}\r\n\r\n\t\t\tchanged = !helpers.arrayEquals(me.active, me.lastActive);\r\n\r\n\t\t\t// Remember Last Actives\r\n\t\t\tme.lastActive = me.active;\r\n\r\n\t\t\treturn changed;\r\n\t\t}\r\n\t});\r\n\r\n\t/**\r\n\t * Provided for backward compatibility, use Chart instead.\r\n\t * @class Chart.Controller\r\n\t * @deprecated since version 2.6.0\r\n\t * @todo remove at version 3\r\n\t * @private\r\n\t */\r\n\tChart.Controller = Chart;\r\n};\r\n\r\n},{\"22\":22,\"23\":23,\"26\":26,\"29\":29,\"31\":31,\"32\":32,\"34\":34,\"36\":36,\"46\":46,\"49\":49}],25:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\r\n\r\n\t/**\r\n\t * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\r\n\t * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\r\n\t * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\r\n\t */\r\n\tfunction listenArrayEvents(array, listener) {\r\n\t\tif (array._chartjs) {\r\n\t\t\tarray._chartjs.listeners.push(listener);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tObject.defineProperty(array, '_chartjs', {\r\n\t\t\tconfigurable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: {\r\n\t\t\t\tlisteners: [listener]\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tarrayEvents.forEach(function(key) {\r\n\t\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\r\n\t\t\tvar base = array[key];\r\n\r\n\t\t\tObject.defineProperty(array, key, {\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tvalue: function() {\r\n\t\t\t\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\t\t\t\tvar res = base.apply(this, args);\r\n\r\n\t\t\t\t\thelpers.each(array._chartjs.listeners, function(object) {\r\n\t\t\t\t\t\tif (typeof object[method] === 'function') {\r\n\t\t\t\t\t\t\tobject[method].apply(object, args);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn res;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Removes the given array event listener and cleanup extra attached properties (such as\r\n\t * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\r\n\t */\r\n\tfunction unlistenArrayEvents(array, listener) {\r\n\t\tvar stub = array._chartjs;\r\n\t\tif (!stub) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar listeners = stub.listeners;\r\n\t\tvar index = listeners.indexOf(listener);\r\n\t\tif (index !== -1) {\r\n\t\t\tlisteners.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif (listeners.length > 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tarrayEvents.forEach(function(key) {\r\n\t\t\tdelete array[key];\r\n\t\t});\r\n\r\n\t\tdelete array._chartjs;\r\n\t}\r\n\r\n\t// Base class for all dataset controllers (line, bar, etc)\r\n\tChart.DatasetController = function(chart, datasetIndex) {\r\n\t\tthis.initialize(chart, datasetIndex);\r\n\t};\r\n\r\n\thelpers.extend(Chart.DatasetController.prototype, {\r\n\r\n\t\t/**\r\n\t\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\r\n\t\t * @type {Chart.core.element}\r\n\t\t */\r\n\t\tdatasetElementType: null,\r\n\r\n\t\t/**\r\n\t\t * Element type used to generate a meta data (e.g. Chart.element.Point).\r\n\t\t * @type {Chart.core.element}\r\n\t\t */\r\n\t\tdataElementType: null,\r\n\r\n\t\tinitialize: function(chart, datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tme.chart = chart;\r\n\t\t\tme.index = datasetIndex;\r\n\t\t\tme.linkScales();\r\n\t\t\tme.addElements();\r\n\t\t},\r\n\r\n\t\tupdateIndex: function(datasetIndex) {\r\n\t\t\tthis.index = datasetIndex;\r\n\t\t},\r\n\r\n\t\tlinkScales: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar dataset = me.getDataset();\r\n\r\n\t\t\tif (meta.xAxisID === null || !(meta.xAxisID in me.chart.scales)) {\r\n\t\t\t\tmeta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id;\r\n\t\t\t}\r\n\t\t\tif (meta.yAxisID === null || !(meta.yAxisID in me.chart.scales)) {\r\n\t\t\t\tmeta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetDataset: function() {\r\n\t\t\treturn this.chart.data.datasets[this.index];\r\n\t\t},\r\n\r\n\t\tgetMeta: function() {\r\n\t\t\treturn this.chart.getDatasetMeta(this.index);\r\n\t\t},\r\n\r\n\t\tgetScaleForId: function(scaleID) {\r\n\t\t\treturn this.chart.scales[scaleID];\r\n\t\t},\r\n\r\n\t\treset: function() {\r\n\t\t\tthis.update(true);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tdestroy: function() {\r\n\t\t\tif (this._data) {\r\n\t\t\t\tunlistenArrayEvents(this._data, this);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tcreateMetaDataset: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar type = me.datasetElementType;\r\n\t\t\treturn type && new type({\r\n\t\t\t\t_chart: me.chart,\r\n\t\t\t\t_datasetIndex: me.index\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tcreateMetaData: function(index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar type = me.dataElementType;\r\n\t\t\treturn type && new type({\r\n\t\t\t\t_chart: me.chart,\r\n\t\t\t\t_datasetIndex: me.index,\r\n\t\t\t\t_index: index\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\taddElements: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar data = me.getDataset().data || [];\r\n\t\t\tvar metaData = meta.data;\r\n\t\t\tvar i, ilen;\r\n\r\n\t\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\r\n\t\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\r\n\t\t\t}\r\n\r\n\t\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\r\n\t\t},\r\n\r\n\t\taddElementAndReset: function(index) {\r\n\t\t\tvar element = this.createMetaData(index);\r\n\t\t\tthis.getMeta().data.splice(index, 0, element);\r\n\t\t\tthis.updateElement(element, index, true);\r\n\t\t},\r\n\r\n\t\tbuildOrUpdateElements: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar data = dataset.data || (dataset.data = []);\r\n\r\n\t\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\r\n\t\t\t// real-time charts), we need to monitor these data modifications and synchronize\r\n\t\t\t// the internal meta data accordingly.\r\n\t\t\tif (me._data !== data) {\r\n\t\t\t\tif (me._data) {\r\n\t\t\t\t\t// This case happens when the user replaced the data array instance.\r\n\t\t\t\t\tunlistenArrayEvents(me._data, me);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlistenArrayEvents(data, me);\r\n\t\t\t\tme._data = data;\r\n\t\t\t}\r\n\r\n\t\t\t// Re-sync meta data in case the user replaced the data array or if we missed\r\n\t\t\t// any updates and so make sure that we handle number of datapoints changing.\r\n\t\t\tme.resyncElements();\r\n\t\t},\r\n\r\n\t\tupdate: helpers.noop,\r\n\r\n\t\ttransition: function(easingValue) {\r\n\t\t\tvar meta = this.getMeta();\r\n\t\t\tvar elements = meta.data || [];\r\n\t\t\tvar ilen = elements.length;\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\tfor (; i < ilen; ++i) {\r\n\t\t\t\telements[i].transition(easingValue);\r\n\t\t\t}\r\n\r\n\t\t\tif (meta.dataset) {\r\n\t\t\t\tmeta.dataset.transition(easingValue);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tdraw: function() {\r\n\t\t\tvar meta = this.getMeta();\r\n\t\t\tvar elements = meta.data || [];\r\n\t\t\tvar ilen = elements.length;\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\tif (meta.dataset) {\r\n\t\t\t\tmeta.dataset.draw();\r\n\t\t\t}\r\n\r\n\t\t\tfor (; i < ilen; ++i) {\r\n\t\t\t\telements[i].draw();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tremoveHoverStyle: function(element) {\r\n\t\t\thelpers.merge(element._model, element.$previousStyle || {});\r\n\t\t\tdelete element.$previousStyle;\r\n\t\t},\r\n\r\n\t\tsetHoverStyle: function(element) {\r\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\r\n\t\t\tvar index = element._index;\r\n\t\t\tvar custom = element.custom || {};\r\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\r\n\t\t\tvar getHoverColor = helpers.getHoverColor;\r\n\t\t\tvar model = element._model;\r\n\r\n\t\t\telement.$previousStyle = {\r\n\t\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\t\tborderColor: model.borderColor,\r\n\t\t\t\tborderWidth: model.borderWidth\r\n\t\t\t};\r\n\r\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor));\r\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor));\r\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tresyncElements: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar data = me.getDataset().data;\r\n\t\t\tvar numMeta = meta.data.length;\r\n\t\t\tvar numData = data.length;\r\n\r\n\t\t\tif (numData < numMeta) {\r\n\t\t\t\tmeta.data.splice(numData, numMeta - numData);\r\n\t\t\t} else if (numData > numMeta) {\r\n\t\t\t\tme.insertElements(numMeta, numData - numMeta);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tinsertElements: function(start, count) {\r\n\t\t\tfor (var i = 0; i < count; ++i) {\r\n\t\t\t\tthis.addElementAndReset(start + i);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tonDataPush: function() {\r\n\t\t\tthis.insertElements(this.getDataset().data.length - 1, arguments.length);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tonDataPop: function() {\r\n\t\t\tthis.getMeta().data.pop();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tonDataShift: function() {\r\n\t\t\tthis.getMeta().data.shift();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tonDataSplice: function(start, count) {\r\n\t\t\tthis.getMeta().data.splice(start, count);\r\n\t\t\tthis.insertElements(start, arguments.length - 2);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tonDataUnshift: function() {\r\n\t\t\tthis.insertElements(0, arguments.length);\r\n\t\t}\r\n\t});\r\n\r\n\tChart.DatasetController.extend = helpers.inherits;\r\n};\r\n\r\n},{\"46\":46}],26:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\nmodule.exports = {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_set: function(scope, values) {\r\n\t\treturn helpers.merge(this[scope] || (this[scope] = {}), values);\r\n\t}\r\n};\r\n\r\n},{\"46\":46}],27:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar color = require(3);\r\nvar helpers = require(46);\r\n\r\nfunction interpolate(start, view, model, ease) {\r\n\tvar keys = Object.keys(model);\r\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\r\n\r\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\tkey = keys[i];\r\n\r\n\t\ttarget = model[key];\r\n\r\n\t\t// if a value is added to the model after pivot() has been called, the view\r\n\t\t// doesn't contain it, so let's initialize the view to the target value.\r\n\t\tif (!view.hasOwnProperty(key)) {\r\n\t\t\tview[key] = target;\r\n\t\t}\r\n\r\n\t\tactual = view[key];\r\n\r\n\t\tif (actual === target || key[0] === '_') {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!start.hasOwnProperty(key)) {\r\n\t\t\tstart[key] = actual;\r\n\t\t}\r\n\r\n\t\torigin = start[key];\r\n\r\n\t\ttype = typeof target;\r\n\r\n\t\tif (type === typeof origin) {\r\n\t\t\tif (type === 'string') {\r\n\t\t\t\tc0 = color(origin);\r\n\t\t\t\tif (c0.valid) {\r\n\t\t\t\t\tc1 = color(target);\r\n\t\t\t\t\tif (c1.valid) {\r\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (type === 'number' && isFinite(origin) && isFinite(target)) {\r\n\t\t\t\tview[key] = origin + (target - origin) * ease;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tview[key] = target;\r\n\t}\r\n}\r\n\r\nvar Element = function(configuration) {\r\n\thelpers.extend(this, configuration);\r\n\tthis.initialize.apply(this, arguments);\r\n};\r\n\r\nhelpers.extend(Element.prototype, {\r\n\r\n\tinitialize: function() {\r\n\t\tthis.hidden = false;\r\n\t},\r\n\r\n\tpivot: function() {\r\n\t\tvar me = this;\r\n\t\tif (!me._view) {\r\n\t\t\tme._view = helpers.clone(me._model);\r\n\t\t}\r\n\t\tme._start = {};\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttransition: function(ease) {\r\n\t\tvar me = this;\r\n\t\tvar model = me._model;\r\n\t\tvar start = me._start;\r\n\t\tvar view = me._view;\r\n\r\n\t\t// No animation -> No Transition\r\n\t\tif (!model || ease === 1) {\r\n\t\t\tme._view = model;\r\n\t\t\tme._start = null;\r\n\t\t\treturn me;\r\n\t\t}\r\n\r\n\t\tif (!view) {\r\n\t\t\tview = me._view = {};\r\n\t\t}\r\n\r\n\t\tif (!start) {\r\n\t\t\tstart = me._start = {};\r\n\t\t}\r\n\r\n\t\tinterpolate(start, view, model, ease);\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\treturn {\r\n\t\t\tx: this._model.x,\r\n\t\t\ty: this._model.y\r\n\t\t};\r\n\t},\r\n\r\n\thasValue: function() {\r\n\t\treturn helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y);\r\n\t}\r\n});\r\n\r\nElement.extend = helpers.inherits;\r\n\r\nmodule.exports = Element;\r\n\r\n},{\"3\":3,\"46\":46}],28:[function(require,module,exports){\r\n/* global window: false */\r\n/* global document: false */\r\n'use strict';\r\n\r\nvar color = require(3);\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar scaleService = require(34);\r\n\r\nmodule.exports = function() {\r\n\r\n\t// -- Basic js utility methods\r\n\r\n\thelpers.configMerge = function(/* objects ... */) {\r\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\r\n\t\t\tmerger: function(key, target, source, options) {\r\n\t\t\t\tvar tval = target[key] || {};\r\n\t\t\t\tvar sval = source[key];\r\n\r\n\t\t\t\tif (key === 'scales') {\r\n\t\t\t\t\t// scale config merging is complex. Add our own function here for that\r\n\t\t\t\t\ttarget[key] = helpers.scaleMerge(tval, sval);\r\n\t\t\t\t} else if (key === 'scale') {\r\n\t\t\t\t\t// used in polar area & radar charts since there is only one scale\r\n\t\t\t\t\ttarget[key] = helpers.merge(tval, [scaleService.getScaleDefaults(sval.type), sval]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\thelpers._merger(key, target, source, options);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\thelpers.scaleMerge = function(/* objects ... */) {\r\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\r\n\t\t\tmerger: function(key, target, source, options) {\r\n\t\t\t\tif (key === 'xAxes' || key === 'yAxes') {\r\n\t\t\t\t\tvar slen = source[key].length;\r\n\t\t\t\t\tvar i, type, scale;\r\n\r\n\t\t\t\t\tif (!target[key]) {\r\n\t\t\t\t\t\ttarget[key] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (i = 0; i < slen; ++i) {\r\n\t\t\t\t\t\tscale = source[key][i];\r\n\t\t\t\t\t\ttype = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear');\r\n\r\n\t\t\t\t\t\tif (i >= target[key].length) {\r\n\t\t\t\t\t\t\ttarget[key].push({});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {\r\n\t\t\t\t\t\t\t// new/untyped scale or type changed: let's apply the new defaults\r\n\t\t\t\t\t\t\t// then merge source scale to correctly overwrite the defaults.\r\n\t\t\t\t\t\t\thelpers.merge(target[key][i], [scaleService.getScaleDefaults(type), scale]);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// scales type are the same\r\n\t\t\t\t\t\t\thelpers.merge(target[key][i], scale);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\thelpers._merger(key, target, source, options);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\thelpers.where = function(collection, filterCallback) {\r\n\t\tif (helpers.isArray(collection) && Array.prototype.filter) {\r\n\t\t\treturn collection.filter(filterCallback);\r\n\t\t}\r\n\t\tvar filtered = [];\r\n\r\n\t\thelpers.each(collection, function(item) {\r\n\t\t\tif (filterCallback(item)) {\r\n\t\t\t\tfiltered.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filtered;\r\n\t};\r\n\thelpers.findIndex = Array.prototype.findIndex ?\r\n\t\tfunction(array, callback, scope) {\r\n\t\t\treturn array.findIndex(callback, scope);\r\n\t\t} :\r\n\t\tfunction(array, callback, scope) {\r\n\t\t\tscope = scope === undefined ? array : scope;\r\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\r\n\t\t\t\tif (callback.call(scope, array[i], i, array)) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn -1;\r\n\t\t};\r\n\thelpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\r\n\t\t// Default to start of the array\r\n\t\tif (helpers.isNullOrUndef(startIndex)) {\r\n\t\t\tstartIndex = -1;\r\n\t\t}\r\n\t\tfor (var i = startIndex + 1; i < arrayToSearch.length; i++) {\r\n\t\t\tvar currentItem = arrayToSearch[i];\r\n\t\t\tif (filterCallback(currentItem)) {\r\n\t\t\t\treturn currentItem;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\thelpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\r\n\t\t// Default to end of the array\r\n\t\tif (helpers.isNullOrUndef(startIndex)) {\r\n\t\t\tstartIndex = arrayToSearch.length;\r\n\t\t}\r\n\t\tfor (var i = startIndex - 1; i >= 0; i--) {\r\n\t\t\tvar currentItem = arrayToSearch[i];\r\n\t\t\tif (filterCallback(currentItem)) {\r\n\t\t\t\treturn currentItem;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// -- Math methods\r\n\thelpers.isNumber = function(n) {\r\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\r\n\t};\r\n\thelpers.almostEquals = function(x, y, epsilon) {\r\n\t\treturn Math.abs(x - y) < epsilon;\r\n\t};\r\n\thelpers.almostWhole = function(x, epsilon) {\r\n\t\tvar rounded = Math.round(x);\r\n\t\treturn (((rounded - epsilon) < x) && ((rounded + epsilon) > x));\r\n\t};\r\n\thelpers.max = function(array) {\r\n\t\treturn array.reduce(function(max, value) {\r\n\t\t\tif (!isNaN(value)) {\r\n\t\t\t\treturn Math.max(max, value);\r\n\t\t\t}\r\n\t\t\treturn max;\r\n\t\t}, Number.NEGATIVE_INFINITY);\r\n\t};\r\n\thelpers.min = function(array) {\r\n\t\treturn array.reduce(function(min, value) {\r\n\t\t\tif (!isNaN(value)) {\r\n\t\t\t\treturn Math.min(min, value);\r\n\t\t\t}\r\n\t\t\treturn min;\r\n\t\t}, Number.POSITIVE_INFINITY);\r\n\t};\r\n\thelpers.sign = Math.sign ?\r\n\t\tfunction(x) {\r\n\t\t\treturn Math.sign(x);\r\n\t\t} :\r\n\t\tfunction(x) {\r\n\t\t\tx = +x; // convert to a number\r\n\t\t\tif (x === 0 || isNaN(x)) {\r\n\t\t\t\treturn x;\r\n\t\t\t}\r\n\t\t\treturn x > 0 ? 1 : -1;\r\n\t\t};\r\n\thelpers.log10 = Math.log10 ?\r\n\t\tfunction(x) {\r\n\t\t\treturn Math.log10(x);\r\n\t\t} :\r\n\t\tfunction(x) {\r\n\t\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\r\n\t\t\t// Check for whole powers of 10,\r\n\t\t\t// which due to floating point rounding error should be corrected.\r\n\t\t\tvar powerOf10 = Math.round(exponent);\r\n\t\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\r\n\r\n\t\t\treturn isPowerOf10 ? powerOf10 : exponent;\r\n\t\t};\r\n\thelpers.toRadians = function(degrees) {\r\n\t\treturn degrees * (Math.PI / 180);\r\n\t};\r\n\thelpers.toDegrees = function(radians) {\r\n\t\treturn radians * (180 / Math.PI);\r\n\t};\r\n\t// Gets the angle from vertical upright to the point about a centre.\r\n\thelpers.getAngleFromPoint = function(centrePoint, anglePoint) {\r\n\t\tvar distanceFromXCenter = anglePoint.x - centrePoint.x;\r\n\t\tvar distanceFromYCenter = anglePoint.y - centrePoint.y;\r\n\t\tvar radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\r\n\r\n\t\tvar angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\r\n\r\n\t\tif (angle < (-0.5 * Math.PI)) {\r\n\t\t\tangle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tangle: angle,\r\n\t\t\tdistance: radialDistanceFromCenter\r\n\t\t};\r\n\t};\r\n\thelpers.distanceBetweenPoints = function(pt1, pt2) {\r\n\t\treturn Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\r\n\t};\r\n\thelpers.aliasPixel = function(pixelWidth) {\r\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\r\n\t};\r\n\thelpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\r\n\t\t// Props to Rob Spencer at scaled innovation for his post on splining between points\r\n\t\t// http://scaledinnovation.com/analytics/splines/aboutSplines.html\r\n\r\n\t\t// This function must also respect \"skipped\" points\r\n\r\n\t\tvar previous = firstPoint.skip ? middlePoint : firstPoint;\r\n\t\tvar current = middlePoint;\r\n\t\tvar next = afterPoint.skip ? middlePoint : afterPoint;\r\n\r\n\t\tvar d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\r\n\t\tvar d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\r\n\r\n\t\tvar s01 = d01 / (d01 + d12);\r\n\t\tvar s12 = d12 / (d01 + d12);\r\n\r\n\t\t// If all points are the same, s01 & s02 will be inf\r\n\t\ts01 = isNaN(s01) ? 0 : s01;\r\n\t\ts12 = isNaN(s12) ? 0 : s12;\r\n\r\n\t\tvar fa = t * s01; // scaling factor for triangle Ta\r\n\t\tvar fb = t * s12;\r\n\r\n\t\treturn {\r\n\t\t\tprevious: {\r\n\t\t\t\tx: current.x - fa * (next.x - previous.x),\r\n\t\t\t\ty: current.y - fa * (next.y - previous.y)\r\n\t\t\t},\r\n\t\t\tnext: {\r\n\t\t\t\tx: current.x + fb * (next.x - previous.x),\r\n\t\t\t\ty: current.y + fb * (next.y - previous.y)\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\thelpers.EPSILON = Number.EPSILON || 1e-14;\r\n\thelpers.splineCurveMonotone = function(points) {\r\n\t\t// This function calculates Bézier control points in a similar way than |splineCurve|,\r\n\t\t// but preserves monotonicity of the provided data and ensures no local extremums are added\r\n\t\t// between the dataset discrete points due to the interpolation.\r\n\t\t// See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\r\n\r\n\t\tvar pointsWithTangents = (points || []).map(function(point) {\r\n\t\t\treturn {\r\n\t\t\t\tmodel: point._model,\r\n\t\t\t\tdeltaK: 0,\r\n\t\t\t\tmK: 0\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t// Calculate slopes (deltaK) and initialize tangents (mK)\r\n\t\tvar pointsLen = pointsWithTangents.length;\r\n\t\tvar i, pointBefore, pointCurrent, pointAfter;\r\n\t\tfor (i = 0; i < pointsLen; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tif (pointCurrent.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\r\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\r\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\r\n\t\t\t\tvar slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);\r\n\r\n\t\t\t\t// In the case of two points that appear at the same x pixel, slopeDeltaX is 0\r\n\t\t\t\tpointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\r\n\t\t\t}\r\n\r\n\t\t\tif (!pointBefore || pointBefore.model.skip) {\r\n\t\t\t\tpointCurrent.mK = pointCurrent.deltaK;\r\n\t\t\t} else if (!pointAfter || pointAfter.model.skip) {\r\n\t\t\t\tpointCurrent.mK = pointBefore.deltaK;\r\n\t\t\t} else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\r\n\t\t\t\tpointCurrent.mK = 0;\r\n\t\t\t} else {\r\n\t\t\t\tpointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Adjust tangents to ensure monotonic properties\r\n\t\tvar alphaK, betaK, tauK, squaredMagnitude;\r\n\t\tfor (i = 0; i < pointsLen - 1; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tpointAfter = pointsWithTangents[i + 1];\r\n\t\t\tif (pointCurrent.model.skip || pointAfter.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\r\n\t\t\t\tpointCurrent.mK = pointAfter.mK = 0;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\talphaK = pointCurrent.mK / pointCurrent.deltaK;\r\n\t\t\tbetaK = pointAfter.mK / pointCurrent.deltaK;\r\n\t\t\tsquaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\r\n\t\t\tif (squaredMagnitude <= 9) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\ttauK = 3 / Math.sqrt(squaredMagnitude);\r\n\t\t\tpointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\r\n\t\t\tpointAfter.mK = betaK * tauK * pointCurrent.deltaK;\r\n\t\t}\r\n\r\n\t\t// Compute control points\r\n\t\tvar deltaX;\r\n\t\tfor (i = 0; i < pointsLen; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tif (pointCurrent.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\r\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\r\n\t\t\tif (pointBefore && !pointBefore.model.skip) {\r\n\t\t\t\tdeltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\r\n\t\t\t\tpointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\r\n\t\t\t\tpointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\r\n\t\t\t}\r\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\r\n\t\t\t\tdeltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\r\n\t\t\t\tpointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\r\n\t\t\t\tpointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\thelpers.nextItem = function(collection, index, loop) {\r\n\t\tif (loop) {\r\n\t\t\treturn index >= collection.length - 1 ? collection[0] : collection[index + 1];\r\n\t\t}\r\n\t\treturn index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\r\n\t};\r\n\thelpers.previousItem = function(collection, index, loop) {\r\n\t\tif (loop) {\r\n\t\t\treturn index <= 0 ? collection[collection.length - 1] : collection[index - 1];\r\n\t\t}\r\n\t\treturn index <= 0 ? collection[0] : collection[index - 1];\r\n\t};\r\n\t// Implementation of the nice number algorithm used in determining where axis labels will go\r\n\thelpers.niceNum = function(range, round) {\r\n\t\tvar exponent = Math.floor(helpers.log10(range));\r\n\t\tvar fraction = range / Math.pow(10, exponent);\r\n\t\tvar niceFraction;\r\n\r\n\t\tif (round) {\r\n\t\t\tif (fraction < 1.5) {\r\n\t\t\t\tniceFraction = 1;\r\n\t\t\t} else if (fraction < 3) {\r\n\t\t\t\tniceFraction = 2;\r\n\t\t\t} else if (fraction < 7) {\r\n\t\t\t\tniceFraction = 5;\r\n\t\t\t} else {\r\n\t\t\t\tniceFraction = 10;\r\n\t\t\t}\r\n\t\t} else if (fraction <= 1.0) {\r\n\t\t\tniceFraction = 1;\r\n\t\t} else if (fraction <= 2) {\r\n\t\t\tniceFraction = 2;\r\n\t\t} else if (fraction <= 5) {\r\n\t\t\tniceFraction = 5;\r\n\t\t} else {\r\n\t\t\tniceFraction = 10;\r\n\t\t}\r\n\r\n\t\treturn niceFraction * Math.pow(10, exponent);\r\n\t};\r\n\t// Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\thelpers.requestAnimFrame = (function() {\r\n\t\tif (typeof window === 'undefined') {\r\n\t\t\treturn function(callback) {\r\n\t\t\t\tcallback();\r\n\t\t\t};\r\n\t\t}\r\n\t\treturn window.requestAnimationFrame ||\r\n\t\t\twindow.webkitRequestAnimationFrame ||\r\n\t\t\twindow.mozRequestAnimationFrame ||\r\n\t\t\twindow.oRequestAnimationFrame ||\r\n\t\t\twindow.msRequestAnimationFrame ||\r\n\t\t\tfunction(callback) {\r\n\t\t\t\treturn window.setTimeout(callback, 1000 / 60);\r\n\t\t\t};\r\n\t}());\r\n\t// -- DOM methods\r\n\thelpers.getRelativePosition = function(evt, chart) {\r\n\t\tvar mouseX, mouseY;\r\n\t\tvar e = evt.originalEvent || evt;\r\n\t\tvar canvas = evt.target || evt.srcElement;\r\n\t\tvar boundingRect = canvas.getBoundingClientRect();\r\n\r\n\t\tvar touches = e.touches;\r\n\t\tif (touches && touches.length > 0) {\r\n\t\t\tmouseX = touches[0].clientX;\r\n\t\t\tmouseY = touches[0].clientY;\r\n\r\n\t\t} else {\r\n\t\t\tmouseX = e.clientX;\r\n\t\t\tmouseY = e.clientY;\r\n\t\t}\r\n\r\n\t\t// Scale mouse coordinates into canvas coordinates\r\n\t\t// by following the pattern laid out by 'jerryj' in the comments of\r\n\t\t// http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\r\n\t\tvar paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left'));\r\n\t\tvar paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top'));\r\n\t\tvar paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right'));\r\n\t\tvar paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom'));\r\n\t\tvar width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\r\n\t\tvar height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\r\n\r\n\t\t// We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\r\n\t\t// the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\r\n\t\tmouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\r\n\t\tmouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\r\n\r\n\t\treturn {\r\n\t\t\tx: mouseX,\r\n\t\t\ty: mouseY\r\n\t\t};\r\n\r\n\t};\r\n\r\n\t// Private helper function to convert max-width/max-height values that may be percentages into a number\r\n\tfunction parseMaxStyle(styleValue, node, parentProperty) {\r\n\t\tvar valueInPixels;\r\n\t\tif (typeof styleValue === 'string') {\r\n\t\t\tvalueInPixels = parseInt(styleValue, 10);\r\n\r\n\t\t\tif (styleValue.indexOf('%') !== -1) {\r\n\t\t\t\t// percentage * size in dimension\r\n\t\t\t\tvalueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvalueInPixels = styleValue;\r\n\t\t}\r\n\r\n\t\treturn valueInPixels;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns if the given value contains an effective constraint.\r\n\t * @private\r\n\t */\r\n\tfunction isConstrainedValue(value) {\r\n\t\treturn value !== undefined && value !== null && value !== 'none';\r\n\t}\r\n\r\n\t// Private helper to get a constraint dimension\r\n\t// @param domNode : the node to check the constraint on\r\n\t// @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight)\r\n\t// @param percentageProperty : property of parent to use when calculating width as a percentage\r\n\t// @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser\r\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\r\n\t\tvar view = document.defaultView;\r\n\t\tvar parentNode = helpers._getParentNode(domNode);\r\n\t\tvar constrainedNode = view.getComputedStyle(domNode)[maxStyle];\r\n\t\tvar constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\r\n\t\tvar hasCNode = isConstrainedValue(constrainedNode);\r\n\t\tvar hasCContainer = isConstrainedValue(constrainedContainer);\r\n\t\tvar infinity = Number.POSITIVE_INFINITY;\r\n\r\n\t\tif (hasCNode || hasCContainer) {\r\n\t\t\treturn Math.min(\r\n\t\t\t\thasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\r\n\t\t\t\thasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\r\n\t\t}\r\n\r\n\t\treturn 'none';\r\n\t}\r\n\t// returns Number or undefined if no constraint\r\n\thelpers.getConstraintWidth = function(domNode) {\r\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\r\n\t};\r\n\t// returns Number or undefined if no constraint\r\n\thelpers.getConstraintHeight = function(domNode) {\r\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\r\n\t};\r\n\t/**\r\n\t * @private\r\n \t */\r\n\thelpers._calculatePadding = function(container, padding, parentDimension) {\r\n\t\tpadding = helpers.getStyle(container, padding);\r\n\r\n\t\treturn padding.indexOf('%') > -1 ? parentDimension / parseInt(padding, 10) : parseInt(padding, 10);\r\n\t};\r\n\t/**\r\n\t * @private\r\n\t */\r\n\thelpers._getParentNode = function(domNode) {\r\n\t\tvar parent = domNode.parentNode;\r\n\t\tif (parent && parent.host) {\r\n\t\t\tparent = parent.host;\r\n\t\t}\r\n\t\treturn parent;\r\n\t};\r\n\thelpers.getMaximumWidth = function(domNode) {\r\n\t\tvar container = helpers._getParentNode(domNode);\r\n\t\tif (!container) {\r\n\t\t\treturn domNode.clientWidth;\r\n\t\t}\r\n\r\n\t\tvar clientWidth = container.clientWidth;\r\n\t\tvar paddingLeft = helpers._calculatePadding(container, 'padding-left', clientWidth);\r\n\t\tvar paddingRight = helpers._calculatePadding(container, 'padding-right', clientWidth);\r\n\r\n\t\tvar w = clientWidth - paddingLeft - paddingRight;\r\n\t\tvar cw = helpers.getConstraintWidth(domNode);\r\n\t\treturn isNaN(cw) ? w : Math.min(w, cw);\r\n\t};\r\n\thelpers.getMaximumHeight = function(domNode) {\r\n\t\tvar container = helpers._getParentNode(domNode);\r\n\t\tif (!container) {\r\n\t\t\treturn domNode.clientHeight;\r\n\t\t}\r\n\r\n\t\tvar clientHeight = container.clientHeight;\r\n\t\tvar paddingTop = helpers._calculatePadding(container, 'padding-top', clientHeight);\r\n\t\tvar paddingBottom = helpers._calculatePadding(container, 'padding-bottom', clientHeight);\r\n\r\n\t\tvar h = clientHeight - paddingTop - paddingBottom;\r\n\t\tvar ch = helpers.getConstraintHeight(domNode);\r\n\t\treturn isNaN(ch) ? h : Math.min(h, ch);\r\n\t};\r\n\thelpers.getStyle = function(el, property) {\r\n\t\treturn el.currentStyle ?\r\n\t\t\tel.currentStyle[property] :\r\n\t\t\tdocument.defaultView.getComputedStyle(el, null).getPropertyValue(property);\r\n\t};\r\n\thelpers.retinaScale = function(chart, forceRatio) {\r\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\r\n\t\tif (pixelRatio === 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar canvas = chart.canvas;\r\n\t\tvar height = chart.height;\r\n\t\tvar width = chart.width;\r\n\r\n\t\tcanvas.height = height * pixelRatio;\r\n\t\tcanvas.width = width * pixelRatio;\r\n\t\tchart.ctx.scale(pixelRatio, pixelRatio);\r\n\r\n\t\t// If no style has been set on the canvas, the render size is used as display size,\r\n\t\t// making the chart visually bigger, so let's enforce it to the \"correct\" values.\r\n\t\t// See https://github.com/chartjs/Chart.js/issues/3575\r\n\t\tif (!canvas.style.height && !canvas.style.width) {\r\n\t\t\tcanvas.style.height = height + 'px';\r\n\t\t\tcanvas.style.width = width + 'px';\r\n\t\t}\r\n\t};\r\n\t// -- Canvas methods\r\n\thelpers.fontString = function(pixelSize, fontStyle, fontFamily) {\r\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\r\n\t};\r\n\thelpers.longestText = function(ctx, font, arrayOfThings, cache) {\r\n\t\tcache = cache || {};\r\n\t\tvar data = cache.data = cache.data || {};\r\n\t\tvar gc = cache.garbageCollect = cache.garbageCollect || [];\r\n\r\n\t\tif (cache.font !== font) {\r\n\t\t\tdata = cache.data = {};\r\n\t\t\tgc = cache.garbageCollect = [];\r\n\t\t\tcache.font = font;\r\n\t\t}\r\n\r\n\t\tctx.font = font;\r\n\t\tvar longest = 0;\r\n\t\thelpers.each(arrayOfThings, function(thing) {\r\n\t\t\t// Undefined strings and arrays should not be measured\r\n\t\t\tif (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) {\r\n\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, thing);\r\n\t\t\t} else if (helpers.isArray(thing)) {\r\n\t\t\t\t// if it is an array lets measure each element\r\n\t\t\t\t// to do maybe simplify this function a bit so we can do this more recursively?\r\n\t\t\t\thelpers.each(thing, function(nestedThing) {\r\n\t\t\t\t\t// Undefined strings and arrays should not be measured\r\n\t\t\t\t\tif (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) {\r\n\t\t\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, nestedThing);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar gcLen = gc.length / 2;\r\n\t\tif (gcLen > arrayOfThings.length) {\r\n\t\t\tfor (var i = 0; i < gcLen; i++) {\r\n\t\t\t\tdelete data[gc[i]];\r\n\t\t\t}\r\n\t\t\tgc.splice(0, gcLen);\r\n\t\t}\r\n\t\treturn longest;\r\n\t};\r\n\thelpers.measureText = function(ctx, data, gc, longest, string) {\r\n\t\tvar textWidth = data[string];\r\n\t\tif (!textWidth) {\r\n\t\t\ttextWidth = data[string] = ctx.measureText(string).width;\r\n\t\t\tgc.push(string);\r\n\t\t}\r\n\t\tif (textWidth > longest) {\r\n\t\t\tlongest = textWidth;\r\n\t\t}\r\n\t\treturn longest;\r\n\t};\r\n\thelpers.numberOfLabelLines = function(arrayOfThings) {\r\n\t\tvar numberOfLines = 1;\r\n\t\thelpers.each(arrayOfThings, function(thing) {\r\n\t\t\tif (helpers.isArray(thing)) {\r\n\t\t\t\tif (thing.length > numberOfLines) {\r\n\t\t\t\t\tnumberOfLines = thing.length;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn numberOfLines;\r\n\t};\r\n\r\n\thelpers.color = !color ?\r\n\t\tfunction(value) {\r\n\t\t\tconsole.error('Color.js not found!');\r\n\t\t\treturn value;\r\n\t\t} :\r\n\t\tfunction(value) {\r\n\t\t\t/* global CanvasGradient */\r\n\t\t\tif (value instanceof CanvasGradient) {\r\n\t\t\t\tvalue = defaults.global.defaultColor;\r\n\t\t\t}\r\n\r\n\t\t\treturn color(value);\r\n\t\t};\r\n\r\n\thelpers.getHoverColor = function(colorValue) {\r\n\t\t/* global CanvasPattern */\r\n\t\treturn (colorValue instanceof CanvasPattern) ?\r\n\t\t\tcolorValue :\r\n\t\t\thelpers.color(colorValue).saturate(0.5).darken(0.1).rgbString();\r\n\t};\r\n};\r\n\r\n},{\"26\":26,\"3\":3,\"34\":34,\"46\":46}],29:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\n/**\r\n * Helper function to get relative position for an event\r\n * @param {Event|IEvent} event - The event to get the position for\r\n * @param {Chart} chart - The chart\r\n * @returns {Point} the event position\r\n */\r\nfunction getRelativePosition(e, chart) {\r\n\tif (e.native) {\r\n\t\treturn {\r\n\t\t\tx: e.x,\r\n\t\t\ty: e.y\r\n\t\t};\r\n\t}\r\n\r\n\treturn helpers.getRelativePosition(e, chart);\r\n}\r\n\r\n/**\r\n * Helper function to traverse all of the visible elements in the chart\r\n * @param chart {chart} the chart\r\n * @param handler {Function} the callback to execute for each visible item\r\n */\r\nfunction parseVisibleItems(chart, handler) {\r\n\tvar datasets = chart.data.datasets;\r\n\tvar meta, i, j, ilen, jlen;\r\n\r\n\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\r\n\t\tif (!chart.isDatasetVisible(i)) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tmeta = chart.getDatasetMeta(i);\r\n\t\tfor (j = 0, jlen = meta.data.length; j < jlen; ++j) {\r\n\t\t\tvar element = meta.data[j];\r\n\t\t\tif (!element._view.skip) {\r\n\t\t\t\thandler(element);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Helper function to get the items that intersect the event position\r\n * @param items {ChartElement[]} elements to filter\r\n * @param position {Point} the point to be nearest to\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getIntersectItems(chart, position) {\r\n\tvar elements = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\telements.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\r\n * @param chart {Chart} the chart to look at elements from\r\n * @param position {Point} the point to be nearest to\r\n * @param intersect {Boolean} if true, only consider items that intersect the position\r\n * @param distanceMetric {Function} function to provide the distance between points\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\r\n\tvar minDistance = Number.POSITIVE_INFINITY;\r\n\tvar nearestItems = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar center = element.getCenterPoint();\r\n\t\tvar distance = distanceMetric(position, center);\r\n\r\n\t\tif (distance < minDistance) {\r\n\t\t\tnearestItems = [element];\r\n\t\t\tminDistance = distance;\r\n\t\t} else if (distance === minDistance) {\r\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\r\n\t\t\tnearestItems.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn nearestItems;\r\n}\r\n\r\n/**\r\n * Get a distance metric function for two points based on the\r\n * axis mode setting\r\n * @param {String} axis the axis mode. x|y|xy\r\n */\r\nfunction getDistanceMetricForAxis(axis) {\r\n\tvar useX = axis.indexOf('x') !== -1;\r\n\tvar useY = axis.indexOf('y') !== -1;\r\n\r\n\treturn function(pt1, pt2) {\r\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\r\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\r\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\r\n\t};\r\n}\r\n\r\nfunction indexMode(chart, e, options) {\r\n\tvar position = getRelativePosition(e, chart);\r\n\t// Default axis for index mode is 'x' to match old behaviour\r\n\toptions.axis = options.axis || 'x';\r\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\tvar elements = [];\r\n\r\n\tif (!items.length) {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tchart.data.datasets.forEach(function(dataset, datasetIndex) {\r\n\t\tif (chart.isDatasetVisible(datasetIndex)) {\r\n\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\tvar element = meta.data[items[0]._index];\r\n\r\n\t\t\t// don't count items that are skipped (null data)\r\n\t\t\tif (element && !element._view.skip) {\r\n\t\t\t\telements.push(element);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * @interface IInteractionOptions\r\n */\r\n/**\r\n * If true, only consider items that intersect the point\r\n * @name IInterfaceOptions#boolean\r\n * @type Boolean\r\n */\r\n\r\n/**\r\n * Contains interaction related functions\r\n * @namespace Chart.Interaction\r\n */\r\nmodule.exports = {\r\n\t// Helper function for different modes\r\n\tmodes: {\r\n\t\tsingle: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar elements = [];\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\telements.push(element);\r\n\t\t\t\t\treturn elements;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn elements.slice(0, 1);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.label\r\n\t\t * @deprecated since version 2.4.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tlabel: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\r\n\t\t * @function Chart.Interaction.modes.index\r\n\t\t * @since v2.4.0\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @param options {IInteractionOptions} options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tindex: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\r\n\t\t * @function Chart.Interaction.modes.dataset\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @param options {IInteractionOptions} options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tdataset: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\r\n\t\t\tif (items.length > 0) {\r\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\r\n\t\t\t}\r\n\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.x-axis\r\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\t'x-axis': function(chart, e) {\r\n\t\t\treturn indexMode(chart, e, {intersect: false});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Point mode returns all elements that hit test based on the event position\r\n\t\t * of the event\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tpoint: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\treturn getIntersectItems(chart, position);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * nearest mode returns the element closest to the point\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @param options {IInteractionOptions} options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tnearest: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\tvar nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric);\r\n\r\n\t\t\t// We have multiple items at the same distance from the event. Now sort by smallest\r\n\t\t\tif (nearestItems.length > 1) {\r\n\t\t\t\tnearestItems.sort(function(a, b) {\r\n\t\t\t\t\tvar sizeA = a.getArea();\r\n\t\t\t\t\tvar sizeB = b.getArea();\r\n\t\t\t\t\tvar ret = sizeA - sizeB;\r\n\r\n\t\t\t\t\tif (ret === 0) {\r\n\t\t\t\t\t\t// if equal sort by dataset index\r\n\t\t\t\t\t\tret = a._datasetIndex - b._datasetIndex;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn ret;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Return only 1 item\r\n\t\t\treturn nearestItems.slice(0, 1);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * x mode returns the elements that hit-test at the current x coordinate\r\n\t\t * @function Chart.Interaction.modes.x\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @param options {IInteractionOptions} options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tx: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inXRange(position.x)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * y mode returns the elements that hit-test at the current y coordinate\r\n\t\t * @function Chart.Interaction.modes.y\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @param options {IInteractionOptions} options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\ty: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inYRange(position.y)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"46\":46}],30:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\n\r\ndefaults._set('global', {\r\n\tresponsive: true,\r\n\tresponsiveAnimationDuration: 0,\r\n\tmaintainAspectRatio: true,\r\n\tevents: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'],\r\n\thover: {\r\n\t\tonHover: null,\r\n\t\tmode: 'nearest',\r\n\t\tintersect: true,\r\n\t\tanimationDuration: 400\r\n\t},\r\n\tonClick: null,\r\n\tdefaultColor: 'rgba(0,0,0,0.1)',\r\n\tdefaultFontColor: '#666',\r\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\r\n\tdefaultFontSize: 12,\r\n\tdefaultFontStyle: 'normal',\r\n\tshowLines: true,\r\n\r\n\t// Element defaults defined in element extensions\r\n\telements: {},\r\n\r\n\t// Layout options such as padding\r\n\tlayout: {\r\n\t\tpadding: {\r\n\t\t\ttop: 0,\r\n\t\t\tright: 0,\r\n\t\t\tbottom: 0,\r\n\t\t\tleft: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = function() {\r\n\r\n\t// Occupy the global variable of Chart, and create a simple base class\r\n\tvar Chart = function(item, config) {\r\n\t\tthis.construct(item, config);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tChart.Chart = Chart;\r\n\r\n\treturn Chart;\r\n};\r\n\r\n},{\"26\":26}],31:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\nfunction filterByPosition(array, position) {\r\n\treturn helpers.where(array, function(v) {\r\n\t\treturn v.position === position;\r\n\t});\r\n}\r\n\r\nfunction sortByWeight(array, reverse) {\r\n\tarray.forEach(function(v, i) {\r\n\t\tv._tmpIndex_ = i;\r\n\t\treturn v;\r\n\t});\r\n\tarray.sort(function(a, b) {\r\n\t\tvar v0 = reverse ? b : a;\r\n\t\tvar v1 = reverse ? a : b;\r\n\t\treturn v0.weight === v1.weight ?\r\n\t\t\tv0._tmpIndex_ - v1._tmpIndex_ :\r\n\t\t\tv0.weight - v1.weight;\r\n\t});\r\n\tarray.forEach(function(v) {\r\n\t\tdelete v._tmpIndex_;\r\n\t});\r\n}\r\n\r\n/**\r\n * @interface ILayoutItem\r\n * @prop {String} position - The position of the item in the chart layout. Possible values are\r\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\r\n * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area\r\n * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\r\n * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\r\n * @prop {Function} update - Takes two parameters: width and height. Returns size of item\r\n * @prop {Function} getPadding - Returns an object with padding on the edges\r\n * @prop {Number} width - Width of item. Must be valid after update()\r\n * @prop {Number} height - Height of item. Must be valid after update()\r\n * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update\r\n * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update\r\n * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update\r\n * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\r\n */\r\n\r\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\r\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\r\n// It is this service's responsibility of carrying out that layout.\r\nmodule.exports = {\r\n\tdefaults: {},\r\n\r\n\t/**\r\n\t * Register a box to a chart.\r\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\r\n\t * @param {Chart} chart - the chart to use\r\n\t * @param {ILayoutItem} item - the item to add to be layed out\r\n\t */\r\n\taddBox: function(chart, item) {\r\n\t\tif (!chart.boxes) {\r\n\t\t\tchart.boxes = [];\r\n\t\t}\r\n\r\n\t\t// initialize item with default values\r\n\t\titem.fullWidth = item.fullWidth || false;\r\n\t\titem.position = item.position || 'top';\r\n\t\titem.weight = item.weight || 0;\r\n\r\n\t\tchart.boxes.push(item);\r\n\t},\r\n\r\n\t/**\r\n\t * Remove a layoutItem from a chart\r\n\t * @param {Chart} chart - the chart to remove the box from\r\n\t * @param {Object} layoutItem - the item to remove from the layout\r\n\t */\r\n\tremoveBox: function(chart, layoutItem) {\r\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\r\n\t\tif (index !== -1) {\r\n\t\t\tchart.boxes.splice(index, 1);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Sets (or updates) options on the given `item`.\r\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\r\n\t * @param {Object} item - the item to configure with the given options\r\n\t * @param {Object} options - the new item options.\r\n\t */\r\n\tconfigure: function(chart, item, options) {\r\n\t\tvar props = ['fullWidth', 'position', 'weight'];\r\n\t\tvar ilen = props.length;\r\n\t\tvar i = 0;\r\n\t\tvar prop;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tprop = props[i];\r\n\t\t\tif (options.hasOwnProperty(prop)) {\r\n\t\t\t\titem[prop] = options[prop];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Fits boxes of the given chart into the given size by having each box measure itself\r\n\t * then running a fitting algorithm\r\n\t * @param {Chart} chart - the chart\r\n\t * @param {Number} width - the width to fit into\r\n\t * @param {Number} height - the height to fit into\r\n\t */\r\n\tupdate: function(chart, width, height) {\r\n\t\tif (!chart) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar layoutOptions = chart.options.layout || {};\r\n\t\tvar padding = helpers.options.toPadding(layoutOptions.padding);\r\n\t\tvar leftPadding = padding.left;\r\n\t\tvar rightPadding = padding.right;\r\n\t\tvar topPadding = padding.top;\r\n\t\tvar bottomPadding = padding.bottom;\r\n\r\n\t\tvar leftBoxes = filterByPosition(chart.boxes, 'left');\r\n\t\tvar rightBoxes = filterByPosition(chart.boxes, 'right');\r\n\t\tvar topBoxes = filterByPosition(chart.boxes, 'top');\r\n\t\tvar bottomBoxes = filterByPosition(chart.boxes, 'bottom');\r\n\t\tvar chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea');\r\n\r\n\t\t// Sort boxes by weight. A higher weight is further away from the chart area\r\n\t\tsortByWeight(leftBoxes, true);\r\n\t\tsortByWeight(rightBoxes, false);\r\n\t\tsortByWeight(topBoxes, true);\r\n\t\tsortByWeight(bottomBoxes, false);\r\n\r\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\r\n\t\t// Our canvas looks like the following.\r\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\r\n\t\t// B1 is the bottom axis\r\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\r\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\r\n\t\t// an error will be thrown.\r\n\t\t//\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | T1 (Full Width) |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | | | T2 | |\r\n\t\t// | |----|-------------------------------------|----|\r\n\t\t// | | | C1 | | C2 | |\r\n\t\t// | | |----| |----| |\r\n\t\t// | | | | |\r\n\t\t// | L1 | L2 | ChartArea (C0) | R1 |\r\n\t\t// | | | | |\r\n\t\t// | | |----| |----| |\r\n\t\t// | | | C3 | | C4 | |\r\n\t\t// | |----|-------------------------------------|----|\r\n\t\t// | | | B1 | |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | B2 (Full Width) |\r\n\t\t// |----------------------------------------------------|\r\n\t\t//\r\n\t\t// What we do to find the best sizing, we do the following\r\n\t\t// 1. Determine the minimum size of the chart area.\r\n\t\t// 2. Split the remaining width equally between each vertical axis\r\n\t\t// 3. Split the remaining height equally between each horizontal axis\r\n\t\t// 4. Give each layout the maximum size it can be. The layout will return it's minimum size\r\n\t\t// 5. Adjust the sizes of each axis based on it's minimum reported size.\r\n\t\t// 6. Refit each axis\r\n\t\t// 7. Position each axis in the final location\r\n\t\t// 8. Tell the chart the final location of the chart area\r\n\t\t// 9. Tell any axes that overlay the chart area the positions of the chart area\r\n\r\n\t\t// Step 1\r\n\t\tvar chartWidth = width - leftPadding - rightPadding;\r\n\t\tvar chartHeight = height - topPadding - bottomPadding;\r\n\t\tvar chartAreaWidth = chartWidth / 2; // min 50%\r\n\t\tvar chartAreaHeight = chartHeight / 2; // min 50%\r\n\r\n\t\t// Step 2\r\n\t\tvar verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length);\r\n\r\n\t\t// Step 3\r\n\t\tvar horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length);\r\n\r\n\t\t// Step 4\r\n\t\tvar maxChartAreaWidth = chartWidth;\r\n\t\tvar maxChartAreaHeight = chartHeight;\r\n\t\tvar minBoxSizes = [];\r\n\r\n\t\tfunction getMinimumBoxSize(box) {\r\n\t\t\tvar minSize;\r\n\t\t\tvar isHorizontal = box.isHorizontal();\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tminSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight);\r\n\t\t\t\tmaxChartAreaHeight -= minSize.height;\r\n\t\t\t} else {\r\n\t\t\t\tminSize = box.update(verticalBoxWidth, maxChartAreaHeight);\r\n\t\t\t\tmaxChartAreaWidth -= minSize.width;\r\n\t\t\t}\r\n\r\n\t\t\tminBoxSizes.push({\r\n\t\t\t\thorizontal: isHorizontal,\r\n\t\t\t\tminSize: minSize,\r\n\t\t\t\tbox: box,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\thelpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize);\r\n\r\n\t\t// If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478)\r\n\t\tvar maxHorizontalLeftPadding = 0;\r\n\t\tvar maxHorizontalRightPadding = 0;\r\n\t\tvar maxVerticalTopPadding = 0;\r\n\t\tvar maxVerticalBottomPadding = 0;\r\n\r\n\t\thelpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) {\r\n\t\t\tif (horizontalBox.getPadding) {\r\n\t\t\t\tvar boxPadding = horizontalBox.getPadding();\r\n\t\t\t\tmaxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left);\r\n\t\t\t\tmaxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) {\r\n\t\t\tif (verticalBox.getPadding) {\r\n\t\t\t\tvar boxPadding = verticalBox.getPadding();\r\n\t\t\t\tmaxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top);\r\n\t\t\t\tmaxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could\r\n\t\t// be if the axes are drawn at their minimum sizes.\r\n\t\t// Steps 5 & 6\r\n\t\tvar totalLeftBoxesWidth = leftPadding;\r\n\t\tvar totalRightBoxesWidth = rightPadding;\r\n\t\tvar totalTopBoxesHeight = topPadding;\r\n\t\tvar totalBottomBoxesHeight = bottomPadding;\r\n\r\n\t\t// Function to fit a box\r\n\t\tfunction fitBox(box) {\r\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) {\r\n\t\t\t\treturn minBox.box === box;\r\n\t\t\t});\r\n\r\n\t\t\tif (minBoxSize) {\r\n\t\t\t\tif (box.isHorizontal()) {\r\n\t\t\t\t\tvar scaleMargin = {\r\n\t\t\t\t\t\tleft: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding),\r\n\t\t\t\t\t\tright: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding),\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tbottom: 0\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends\r\n\t\t\t\t\t// on the margin. Sometimes they need to increase in size slightly\r\n\t\t\t\t\tbox.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Update, and calculate the left and right margins for the horizontal boxes\r\n\t\thelpers.each(leftBoxes.concat(rightBoxes), fitBox);\r\n\r\n\t\thelpers.each(leftBoxes, function(box) {\r\n\t\t\ttotalLeftBoxesWidth += box.width;\r\n\t\t});\r\n\r\n\t\thelpers.each(rightBoxes, function(box) {\r\n\t\t\ttotalRightBoxesWidth += box.width;\r\n\t\t});\r\n\r\n\t\t// Set the Left and Right margins for the horizontal boxes\r\n\t\thelpers.each(topBoxes.concat(bottomBoxes), fitBox);\r\n\r\n\t\t// Figure out how much margin is on the top and bottom of the vertical boxes\r\n\t\thelpers.each(topBoxes, function(box) {\r\n\t\t\ttotalTopBoxesHeight += box.height;\r\n\t\t});\r\n\r\n\t\thelpers.each(bottomBoxes, function(box) {\r\n\t\t\ttotalBottomBoxesHeight += box.height;\r\n\t\t});\r\n\r\n\t\tfunction finalFitVerticalBox(box) {\r\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) {\r\n\t\t\t\treturn minSize.box === box;\r\n\t\t\t});\r\n\r\n\t\t\tvar scaleMargin = {\r\n\t\t\t\tleft: 0,\r\n\t\t\t\tright: 0,\r\n\t\t\t\ttop: totalTopBoxesHeight,\r\n\t\t\t\tbottom: totalBottomBoxesHeight\r\n\t\t\t};\r\n\r\n\t\t\tif (minBoxSize) {\r\n\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Let the left layout know the final margin\r\n\t\thelpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox);\r\n\r\n\t\t// Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance)\r\n\t\ttotalLeftBoxesWidth = leftPadding;\r\n\t\ttotalRightBoxesWidth = rightPadding;\r\n\t\ttotalTopBoxesHeight = topPadding;\r\n\t\ttotalBottomBoxesHeight = bottomPadding;\r\n\r\n\t\thelpers.each(leftBoxes, function(box) {\r\n\t\t\ttotalLeftBoxesWidth += box.width;\r\n\t\t});\r\n\r\n\t\thelpers.each(rightBoxes, function(box) {\r\n\t\t\ttotalRightBoxesWidth += box.width;\r\n\t\t});\r\n\r\n\t\thelpers.each(topBoxes, function(box) {\r\n\t\t\ttotalTopBoxesHeight += box.height;\r\n\t\t});\r\n\t\thelpers.each(bottomBoxes, function(box) {\r\n\t\t\ttotalBottomBoxesHeight += box.height;\r\n\t\t});\r\n\r\n\t\t// We may be adding some padding to account for rotated x axis labels\r\n\t\tvar leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0);\r\n\t\ttotalLeftBoxesWidth += leftPaddingAddition;\r\n\t\ttotalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0);\r\n\r\n\t\tvar topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0);\r\n\t\ttotalTopBoxesHeight += topPaddingAddition;\r\n\t\ttotalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0);\r\n\r\n\t\t// Figure out if our chart area changed. This would occur if the dataset layout label rotation\r\n\t\t// changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do\r\n\t\t// without calling `fit` again\r\n\t\tvar newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight;\r\n\t\tvar newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth;\r\n\r\n\t\tif (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) {\r\n\t\t\thelpers.each(leftBoxes, function(box) {\r\n\t\t\t\tbox.height = newMaxChartAreaHeight;\r\n\t\t\t});\r\n\r\n\t\t\thelpers.each(rightBoxes, function(box) {\r\n\t\t\t\tbox.height = newMaxChartAreaHeight;\r\n\t\t\t});\r\n\r\n\t\t\thelpers.each(topBoxes, function(box) {\r\n\t\t\t\tif (!box.fullWidth) {\r\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\thelpers.each(bottomBoxes, function(box) {\r\n\t\t\t\tif (!box.fullWidth) {\r\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tmaxChartAreaHeight = newMaxChartAreaHeight;\r\n\t\t\tmaxChartAreaWidth = newMaxChartAreaWidth;\r\n\t\t}\r\n\r\n\t\t// Step 7 - Position the boxes\r\n\t\tvar left = leftPadding + leftPaddingAddition;\r\n\t\tvar top = topPadding + topPaddingAddition;\r\n\r\n\t\tfunction placeBox(box) {\r\n\t\t\tif (box.isHorizontal()) {\r\n\t\t\t\tbox.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth;\r\n\t\t\t\tbox.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth;\r\n\t\t\t\tbox.top = top;\r\n\t\t\t\tbox.bottom = top + box.height;\r\n\r\n\t\t\t\t// Move to next point\r\n\t\t\t\ttop = box.bottom;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tbox.left = left;\r\n\t\t\t\tbox.right = left + box.width;\r\n\t\t\t\tbox.top = totalTopBoxesHeight;\r\n\t\t\t\tbox.bottom = totalTopBoxesHeight + maxChartAreaHeight;\r\n\r\n\t\t\t\t// Move to next point\r\n\t\t\t\tleft = box.right;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thelpers.each(leftBoxes.concat(topBoxes), placeBox);\r\n\r\n\t\t// Account for chart width and height\r\n\t\tleft += maxChartAreaWidth;\r\n\t\ttop += maxChartAreaHeight;\r\n\r\n\t\thelpers.each(rightBoxes, placeBox);\r\n\t\thelpers.each(bottomBoxes, placeBox);\r\n\r\n\t\t// Step 8\r\n\t\tchart.chartArea = {\r\n\t\t\tleft: totalLeftBoxesWidth,\r\n\t\t\ttop: totalTopBoxesHeight,\r\n\t\t\tright: totalLeftBoxesWidth + maxChartAreaWidth,\r\n\t\t\tbottom: totalTopBoxesHeight + maxChartAreaHeight\r\n\t\t};\r\n\r\n\t\t// Step 9\r\n\t\thelpers.each(chartAreaBoxes, function(box) {\r\n\t\t\tbox.left = chart.chartArea.left;\r\n\t\t\tbox.top = chart.chartArea.top;\r\n\t\t\tbox.right = chart.chartArea.right;\r\n\t\t\tbox.bottom = chart.chartArea.bottom;\r\n\r\n\t\t\tbox.update(maxChartAreaWidth, maxChartAreaHeight);\r\n\t\t});\r\n\t}\r\n};\r\n\r\n},{\"46\":46}],32:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('global', {\r\n\tplugins: {}\r\n});\r\n\r\n/**\r\n * The plugin service singleton\r\n * @namespace Chart.plugins\r\n * @since 2.1.0\r\n */\r\nmodule.exports = {\r\n\t/**\r\n\t * Globally registered plugins.\r\n\t * @private\r\n\t */\r\n\t_plugins: [],\r\n\r\n\t/**\r\n\t * This identifier is used to invalidate the descriptors cache attached to each chart\r\n\t * when a global plugin is registered or unregistered. In this case, the cache ID is\r\n\t * incremented and descriptors are regenerated during following API calls.\r\n\t * @private\r\n\t */\r\n\t_cacheId: 0,\r\n\r\n\t/**\r\n\t * Registers the given plugin(s) if not already registered.\r\n\t * @param {Array|Object} plugins plugin instance(s).\r\n\t */\r\n\tregister: function(plugins) {\r\n\t\tvar p = this._plugins;\r\n\t\t([]).concat(plugins).forEach(function(plugin) {\r\n\t\t\tif (p.indexOf(plugin) === -1) {\r\n\t\t\t\tp.push(plugin);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Unregisters the given plugin(s) only if registered.\r\n\t * @param {Array|Object} plugins plugin instance(s).\r\n\t */\r\n\tunregister: function(plugins) {\r\n\t\tvar p = this._plugins;\r\n\t\t([]).concat(plugins).forEach(function(plugin) {\r\n\t\t\tvar idx = p.indexOf(plugin);\r\n\t\t\tif (idx !== -1) {\r\n\t\t\t\tp.splice(idx, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Remove all registered plugins.\r\n\t * @since 2.1.5\r\n\t */\r\n\tclear: function() {\r\n\t\tthis._plugins = [];\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the number of registered plugins?\r\n\t * @returns {Number}\r\n\t * @since 2.1.5\r\n\t */\r\n\tcount: function() {\r\n\t\treturn this._plugins.length;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns all registered plugin instances.\r\n\t * @returns {Array} array of plugin objects.\r\n\t * @since 2.1.5\r\n\t */\r\n\tgetAll: function() {\r\n\t\treturn this._plugins;\r\n\t},\r\n\r\n\t/**\r\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\r\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\r\n\t * returned value can be used, for instance, to interrupt the current action.\r\n\t * @param {Object} chart - The chart instance for which plugins should be called.\r\n\t * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\r\n\t * @param {Array} [args] - Extra arguments to apply to the hook call.\r\n\t * @returns {Boolean} false if any of the plugins return false, else returns true.\r\n\t */\r\n\tnotify: function(chart, hook, args) {\r\n\t\tvar descriptors = this.descriptors(chart);\r\n\t\tvar ilen = descriptors.length;\r\n\t\tvar i, descriptor, plugin, params, method;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tdescriptor = descriptors[i];\r\n\t\t\tplugin = descriptor.plugin;\r\n\t\t\tmethod = plugin[hook];\r\n\t\t\tif (typeof method === 'function') {\r\n\t\t\t\tparams = [chart].concat(args || []);\r\n\t\t\t\tparams.push(descriptor.options);\r\n\t\t\t\tif (method.apply(plugin, params) === false) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns descriptors of enabled plugins for the given chart.\r\n\t * @returns {Array} [{ plugin, options }]\r\n\t * @private\r\n\t */\r\n\tdescriptors: function(chart) {\r\n\t\tvar cache = chart.$plugins || (chart.$plugins = {});\r\n\t\tif (cache.id === this._cacheId) {\r\n\t\t\treturn cache.descriptors;\r\n\t\t}\r\n\r\n\t\tvar plugins = [];\r\n\t\tvar descriptors = [];\r\n\t\tvar config = (chart && chart.config) || {};\r\n\t\tvar options = (config.options && config.options.plugins) || {};\r\n\r\n\t\tthis._plugins.concat(config.plugins || []).forEach(function(plugin) {\r\n\t\t\tvar idx = plugins.indexOf(plugin);\r\n\t\t\tif (idx !== -1) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar id = plugin.id;\r\n\t\t\tvar opts = options[id];\r\n\t\t\tif (opts === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (opts === true) {\r\n\t\t\t\topts = helpers.clone(defaults.global.plugins[id]);\r\n\t\t\t}\r\n\r\n\t\t\tplugins.push(plugin);\r\n\t\t\tdescriptors.push({\r\n\t\t\t\tplugin: plugin,\r\n\t\t\t\toptions: opts || {}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tcache.descriptors = descriptors;\r\n\t\tcache.id = this._cacheId;\r\n\t\treturn descriptors;\r\n\t},\r\n\r\n\t/**\r\n\t * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\r\n\t * but in some cases, this reference can be changed by the user when updating options.\r\n\t * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\r\n\t * @private\r\n\t */\r\n\t_invalidate: function(chart) {\r\n\t\tdelete chart.$plugins;\r\n\t}\r\n};\r\n\r\n/**\r\n * Plugin extension hooks.\r\n * @interface IPlugin\r\n * @since 2.1.0\r\n */\r\n/**\r\n * @method IPlugin#beforeInit\r\n * @desc Called before initializing `chart`.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#afterInit\r\n * @desc Called after `chart` has been initialized and before the first update.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeUpdate\r\n * @desc Called before updating `chart`. If any plugin returns `false`, the update\r\n * is cancelled (and thus subsequent render(s)) until another `update` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart update.\r\n */\r\n/**\r\n * @method IPlugin#afterUpdate\r\n * @desc Called after `chart` has been updated and before rendering. Note that this\r\n * hook will not be called if the chart update has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeDatasetsUpdate\r\n * @desc Called before updating the `chart` datasets. If any plugin returns `false`,\r\n * the datasets update is cancelled until another `update` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} false to cancel the datasets update.\r\n * @since version 2.1.5\r\n*/\r\n/**\r\n * @method IPlugin#afterDatasetsUpdate\r\n * @desc Called after the `chart` datasets have been updated. Note that this hook\r\n * will not be called if the datasets update has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n * @since version 2.1.5\r\n */\r\n/**\r\n * @method IPlugin#beforeDatasetUpdate\r\n * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin\r\n * returns `false`, the datasets update is cancelled until another `update` is triggered.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Number} args.index - The dataset index.\r\n * @param {Object} args.meta - The dataset metadata.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\r\n */\r\n/**\r\n * @method IPlugin#afterDatasetUpdate\r\n * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note\r\n * that this hook will not be called if the datasets update has been previously cancelled.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Number} args.index - The dataset index.\r\n * @param {Object} args.meta - The dataset metadata.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeLayout\r\n * @desc Called before laying out `chart`. If any plugin returns `false`,\r\n * the layout update is cancelled until another `update` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart layout.\r\n */\r\n/**\r\n * @method IPlugin#afterLayout\r\n * @desc Called after the `chart` has been layed out. Note that this hook will not\r\n * be called if the layout update has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeRender\r\n * @desc Called before rendering `chart`. If any plugin returns `false`,\r\n * the rendering is cancelled until another `render` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart rendering.\r\n */\r\n/**\r\n * @method IPlugin#afterRender\r\n * @desc Called after the `chart` has been fully rendered (and animation completed). Note\r\n * that this hook will not be called if the rendering has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeDraw\r\n * @desc Called before drawing `chart` at every animation frame specified by the given\r\n * easing value. If any plugin returns `false`, the frame drawing is cancelled until\r\n * another `render` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart drawing.\r\n */\r\n/**\r\n * @method IPlugin#afterDraw\r\n * @desc Called after the `chart` has been drawn for the specific easing value. Note\r\n * that this hook will not be called if the drawing has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeDatasetsDraw\r\n * @desc Called before drawing the `chart` datasets. If any plugin returns `false`,\r\n * the datasets drawing is cancelled until another `render` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\r\n */\r\n/**\r\n * @method IPlugin#afterDatasetsDraw\r\n * @desc Called after the `chart` datasets have been drawn. Note that this hook\r\n * will not be called if the datasets drawing has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeDatasetDraw\r\n * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets\r\n * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing\r\n * is cancelled until another `render` is triggered.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Number} args.index - The dataset index.\r\n * @param {Object} args.meta - The dataset metadata.\r\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\r\n */\r\n/**\r\n * @method IPlugin#afterDatasetDraw\r\n * @desc Called after the `chart` datasets at the given `args.index` have been drawn\r\n * (datasets are drawn in the reverse order). Note that this hook will not be called\r\n * if the datasets drawing has been previously cancelled.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Number} args.index - The dataset index.\r\n * @param {Object} args.meta - The dataset metadata.\r\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeTooltipDraw\r\n * @desc Called before drawing the `tooltip`. If any plugin returns `false`,\r\n * the tooltip drawing is cancelled until another `render` is triggered.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Object} args.tooltip - The tooltip.\r\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart tooltip drawing.\r\n */\r\n/**\r\n * @method IPlugin#afterTooltipDraw\r\n * @desc Called after drawing the `tooltip`. Note that this hook will not\r\n * be called if the tooltip drawing has been previously cancelled.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Object} args.tooltip - The tooltip.\r\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeEvent\r\n * @desc Called before processing the specified `event`. If any plugin returns `false`,\r\n * the event will be discarded.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {IEvent} event - The event object.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#afterEvent\r\n * @desc Called after the `event` has been consumed. Note that this hook\r\n * will not be called if the `event` has been previously discarded.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {IEvent} event - The event object.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#resize\r\n * @desc Called after the chart as been resized.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Number} size - The new canvas display size (eq. canvas.style width & height).\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#destroy\r\n * @desc Called after the chart as been destroyed.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n\r\n},{\"26\":26,\"46\":46}],33:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\nvar Ticks = require(35);\r\n\r\ndefaults._set('scale', {\r\n\tdisplay: true,\r\n\tposition: 'left',\r\n\toffset: false,\r\n\r\n\t// grid line settings\r\n\tgridLines: {\r\n\t\tdisplay: true,\r\n\t\tcolor: 'rgba(0, 0, 0, 0.1)',\r\n\t\tlineWidth: 1,\r\n\t\tdrawBorder: true,\r\n\t\tdrawOnChartArea: true,\r\n\t\tdrawTicks: true,\r\n\t\ttickMarkLength: 10,\r\n\t\tzeroLineWidth: 1,\r\n\t\tzeroLineColor: 'rgba(0,0,0,0.25)',\r\n\t\tzeroLineBorderDash: [],\r\n\t\tzeroLineBorderDashOffset: 0.0,\r\n\t\toffsetGridLines: false,\r\n\t\tborderDash: [],\r\n\t\tborderDashOffset: 0.0\r\n\t},\r\n\r\n\t// scale label\r\n\tscaleLabel: {\r\n\t\t// display property\r\n\t\tdisplay: false,\r\n\r\n\t\t// actual label\r\n\t\tlabelString: '',\r\n\r\n\t\t// line height\r\n\t\tlineHeight: 1.2,\r\n\r\n\t\t// top/bottom padding\r\n\t\tpadding: {\r\n\t\t\ttop: 4,\r\n\t\t\tbottom: 4\r\n\t\t}\r\n\t},\r\n\r\n\t// label settings\r\n\tticks: {\r\n\t\tbeginAtZero: false,\r\n\t\tminRotation: 0,\r\n\t\tmaxRotation: 50,\r\n\t\tmirror: false,\r\n\t\tpadding: 0,\r\n\t\treverse: false,\r\n\t\tdisplay: true,\r\n\t\tautoSkip: true,\r\n\t\tautoSkipPadding: 0,\r\n\t\tlabelOffset: 0,\r\n\t\t// We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\r\n\t\tcallback: Ticks.formatters.values,\r\n\t\tminor: {},\r\n\t\tmajor: {}\r\n\t}\r\n});\r\n\r\nfunction labelsFromTicks(ticks) {\r\n\tvar labels = [];\r\n\tvar i, ilen;\r\n\r\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\tlabels.push(ticks[i].label);\r\n\t}\r\n\r\n\treturn labels;\r\n}\r\n\r\nfunction getLineValue(scale, index, offsetGridLines) {\r\n\tvar lineValue = scale.getPixelForTick(index);\r\n\r\n\tif (offsetGridLines) {\r\n\t\tif (index === 0) {\r\n\t\t\tlineValue -= (scale.getPixelForTick(1) - lineValue) / 2;\r\n\t\t} else {\r\n\t\t\tlineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2;\r\n\t\t}\r\n\t}\r\n\treturn lineValue;\r\n}\r\n\r\nfunction computeTextSize(context, tick, font) {\r\n\treturn helpers.isArray(tick) ?\r\n\t\thelpers.longestText(context, font, tick) :\r\n\t\tcontext.measureText(tick).width;\r\n}\r\n\r\nfunction parseFontOptions(options) {\r\n\tvar valueOrDefault = helpers.valueOrDefault;\r\n\tvar globalDefaults = defaults.global;\r\n\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\r\n\tvar style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle);\r\n\tvar family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily);\r\n\r\n\treturn {\r\n\t\tsize: size,\r\n\t\tstyle: style,\r\n\t\tfamily: family,\r\n\t\tfont: helpers.fontString(size, style, family)\r\n\t};\r\n}\r\n\r\nfunction parseLineHeight(options) {\r\n\treturn helpers.options.toLineHeight(\r\n\t\thelpers.valueOrDefault(options.lineHeight, 1.2),\r\n\t\thelpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize));\r\n}\r\n\r\nmodule.exports = Element.extend({\r\n\t/**\r\n\t * Get the padding needed for the scale\r\n\t * @method getPadding\r\n\t * @private\r\n\t * @returns {Padding} the necessary padding\r\n\t */\r\n\tgetPadding: function() {\r\n\t\tvar me = this;\r\n\t\treturn {\r\n\t\t\tleft: me.paddingLeft || 0,\r\n\t\t\ttop: me.paddingTop || 0,\r\n\t\t\tright: me.paddingRight || 0,\r\n\t\t\tbottom: me.paddingBottom || 0\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the scale tick objects ({label, major})\r\n\t * @since 2.7\r\n\t */\r\n\tgetTicks: function() {\r\n\t\treturn this._ticks;\r\n\t},\r\n\r\n\t// These methods are ordered by lifecyle. Utilities then follow.\r\n\t// Any function defined here is inherited by all scale types.\r\n\t// Any function can be extended by the scale type\r\n\r\n\tmergeTicksOptions: function() {\r\n\t\tvar ticks = this.options.ticks;\r\n\t\tif (ticks.minor === false) {\r\n\t\t\tticks.minor = {\r\n\t\t\t\tdisplay: false\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (ticks.major === false) {\r\n\t\t\tticks.major = {\r\n\t\t\t\tdisplay: false\r\n\t\t\t};\r\n\t\t}\r\n\t\tfor (var key in ticks) {\r\n\t\t\tif (key !== 'major' && key !== 'minor') {\r\n\t\t\t\tif (typeof ticks.minor[key] === 'undefined') {\r\n\t\t\t\t\tticks.minor[key] = ticks[key];\r\n\t\t\t\t}\r\n\t\t\t\tif (typeof ticks.major[key] === 'undefined') {\r\n\t\t\t\t\tticks.major[key] = ticks[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tbeforeUpdate: function() {\r\n\t\thelpers.callback(this.options.beforeUpdate, [this]);\r\n\t},\r\n\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\t\tvar i, ilen, labels, label, ticks, tick;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = helpers.extend({\r\n\t\t\tleft: 0,\r\n\t\t\tright: 0,\r\n\t\t\ttop: 0,\r\n\t\t\tbottom: 0\r\n\t\t}, margins);\r\n\t\tme.longestTextCache = me.longestTextCache || {};\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\r\n\t\t// Data min/max\r\n\t\tme.beforeDataLimits();\r\n\t\tme.determineDataLimits();\r\n\t\tme.afterDataLimits();\r\n\r\n\t\t// Ticks - `this.ticks` is now DEPRECATED!\r\n\t\t// Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\r\n\t\t// and must not be accessed directly from outside this class. `this.ticks` being\r\n\t\t// around for long time and not marked as private, we can't change its structure\r\n\t\t// without unexpected breaking changes. If you need to access the scale ticks,\r\n\t\t// use scale.getTicks() instead.\r\n\r\n\t\tme.beforeBuildTicks();\r\n\r\n\t\t// New implementations should return an array of objects but for BACKWARD COMPAT,\r\n\t\t// we still support no return (`this.ticks` internally set by calling this method).\r\n\t\tticks = me.buildTicks() || [];\r\n\r\n\t\tme.afterBuildTicks();\r\n\r\n\t\tme.beforeTickToLabelConversion();\r\n\r\n\t\t// New implementations should return the formatted tick labels but for BACKWARD\r\n\t\t// COMPAT, we still support no return (`this.ticks` internally changed by calling\r\n\t\t// this method and supposed to contain only string values).\r\n\t\tlabels = me.convertTicksToLabels(ticks) || me.ticks;\r\n\r\n\t\tme.afterTickToLabelConversion();\r\n\r\n\t\tme.ticks = labels; // BACKWARD COMPATIBILITY\r\n\r\n\t\t// IMPORTANT: from this point, we consider that `this.ticks` will NEVER change!\r\n\r\n\t\t// BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\r\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\r\n\t\t\tlabel = labels[i];\r\n\t\t\ttick = ticks[i];\r\n\t\t\tif (!tick) {\r\n\t\t\t\tticks.push(tick = {\r\n\t\t\t\t\tlabel: label,\r\n\t\t\t\t\tmajor: false\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\ttick.label = label;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme._ticks = ticks;\r\n\r\n\t\t// Tick Rotation\r\n\t\tme.beforeCalculateTickRotation();\r\n\t\tme.calculateTickRotation();\r\n\t\tme.afterCalculateTickRotation();\r\n\t\t// Fit\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\t\t//\r\n\t\tme.afterUpdate();\r\n\r\n\t\treturn me.minSize;\r\n\r\n\t},\r\n\tafterUpdate: function() {\r\n\t\thelpers.callback(this.options.afterUpdate, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: function() {\r\n\t\thelpers.callback(this.options.beforeSetDimensions, [this]);\r\n\t},\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\t},\r\n\tafterSetDimensions: function() {\r\n\t\thelpers.callback(this.options.afterSetDimensions, [this]);\r\n\t},\r\n\r\n\t// Data limits\r\n\tbeforeDataLimits: function() {\r\n\t\thelpers.callback(this.options.beforeDataLimits, [this]);\r\n\t},\r\n\tdetermineDataLimits: helpers.noop,\r\n\tafterDataLimits: function() {\r\n\t\thelpers.callback(this.options.afterDataLimits, [this]);\r\n\t},\r\n\r\n\t//\r\n\tbeforeBuildTicks: function() {\r\n\t\thelpers.callback(this.options.beforeBuildTicks, [this]);\r\n\t},\r\n\tbuildTicks: helpers.noop,\r\n\tafterBuildTicks: function() {\r\n\t\thelpers.callback(this.options.afterBuildTicks, [this]);\r\n\t},\r\n\r\n\tbeforeTickToLabelConversion: function() {\r\n\t\thelpers.callback(this.options.beforeTickToLabelConversion, [this]);\r\n\t},\r\n\tconvertTicksToLabels: function() {\r\n\t\tvar me = this;\r\n\t\t// Convert ticks to strings\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tme.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\r\n\t},\r\n\tafterTickToLabelConversion: function() {\r\n\t\thelpers.callback(this.options.afterTickToLabelConversion, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeCalculateTickRotation: function() {\r\n\t\thelpers.callback(this.options.beforeCalculateTickRotation, [this]);\r\n\t},\r\n\tcalculateTickRotation: function() {\r\n\t\tvar me = this;\r\n\t\tvar context = me.ctx;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar labels = labelsFromTicks(me._ticks);\r\n\r\n\t\t// Get the width of each grid by calculating the difference\r\n\t\t// between x offsets between 0 and 1.\r\n\t\tvar tickFont = parseFontOptions(tickOpts);\r\n\t\tcontext.font = tickFont.font;\r\n\r\n\t\tvar labelRotation = tickOpts.minRotation || 0;\r\n\r\n\t\tif (labels.length && me.options.display && me.isHorizontal()) {\r\n\t\t\tvar originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache);\r\n\t\t\tvar labelWidth = originalLabelWidth;\r\n\t\t\tvar cosRotation, sinRotation;\r\n\r\n\t\t\t// Allow 3 pixels x2 padding either side for label readability\r\n\t\t\tvar tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6;\r\n\r\n\t\t\t// Max label rotation can be set or default to 90 - also act as a loop counter\r\n\t\t\twhile (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) {\r\n\t\t\t\tvar angleRadians = helpers.toRadians(labelRotation);\r\n\t\t\t\tcosRotation = Math.cos(angleRadians);\r\n\t\t\t\tsinRotation = Math.sin(angleRadians);\r\n\r\n\t\t\t\tif (sinRotation * originalLabelWidth > me.maxHeight) {\r\n\t\t\t\t\t// go back one step\r\n\t\t\t\t\tlabelRotation--;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlabelRotation++;\r\n\t\t\t\tlabelWidth = cosRotation * originalLabelWidth;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.labelRotation = labelRotation;\r\n\t},\r\n\tafterCalculateTickRotation: function() {\r\n\t\thelpers.callback(this.options.afterCalculateTickRotation, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeFit: function() {\r\n\t\thelpers.callback(this.options.beforeFit, [this]);\r\n\t},\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\t// Reset\r\n\t\tvar minSize = me.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\r\n\t\tvar labels = labelsFromTicks(me._ticks);\r\n\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\t\tvar scaleLabelOpts = opts.scaleLabel;\r\n\t\tvar gridLineOpts = opts.gridLines;\r\n\t\tvar display = opts.display;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\tvar tickFont = parseFontOptions(tickOpts);\r\n\t\tvar tickMarkLength = opts.gridLines.tickMarkLength;\r\n\r\n\t\t// Width\r\n\t\tif (isHorizontal) {\r\n\t\t\t// subtract the margins to line up with the chartArea if we are a full width scale\r\n\t\t\tminSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth;\r\n\t\t} else {\r\n\t\t\tminSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\r\n\t\t}\r\n\r\n\t\t// height\r\n\t\tif (isHorizontal) {\r\n\t\t\tminSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\r\n\t\t} else {\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t}\r\n\r\n\t\t// Are we showing a title for the scale?\r\n\t\tif (scaleLabelOpts.display && display) {\r\n\t\t\tvar scaleLabelLineHeight = parseLineHeight(scaleLabelOpts);\r\n\t\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding);\r\n\t\t\tvar deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tminSize.height += deltaHeight;\r\n\t\t\t} else {\r\n\t\t\t\tminSize.width += deltaHeight;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Don't bother fitting the ticks if we are not showing them\r\n\t\tif (tickOpts.display && display) {\r\n\t\t\tvar largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache);\r\n\t\t\tvar tallestLabelHeightInLines = helpers.numberOfLabelLines(labels);\r\n\t\t\tvar lineSpace = tickFont.size * 0.5;\r\n\t\t\tvar tickPadding = me.options.ticks.padding;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\t// A horizontal axis is more constrained by the height.\r\n\t\t\t\tme.longestLabelWidth = largestTextWidth;\r\n\r\n\t\t\t\tvar angleRadians = helpers.toRadians(me.labelRotation);\r\n\t\t\t\tvar cosRotation = Math.cos(angleRadians);\r\n\t\t\t\tvar sinRotation = Math.sin(angleRadians);\r\n\r\n\t\t\t\t// TODO - improve this calculation\r\n\t\t\t\tvar labelHeight = (sinRotation * largestTextWidth)\r\n\t\t\t\t\t+ (tickFont.size * tallestLabelHeightInLines)\r\n\t\t\t\t\t+ (lineSpace * (tallestLabelHeightInLines - 1))\r\n\t\t\t\t\t+ lineSpace; // padding\r\n\r\n\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\r\n\r\n\t\t\t\tme.ctx.font = tickFont.font;\r\n\t\t\t\tvar firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font);\r\n\t\t\t\tvar lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font);\r\n\r\n\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\r\n\t\t\t\t// which means that the right padding is dominated by the font height\r\n\t\t\t\tif (me.labelRotation !== 0) {\r\n\t\t\t\t\tme.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges\r\n\t\t\t\t\tme.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges\r\n\t\t\t\t\tme.paddingRight = lastLabelWidth / 2 + 3;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// A vertical axis is more constrained by the width. Labels are the\r\n\t\t\t\t// dominant factor here, so get that length first and account for padding\r\n\t\t\t\tif (tickOpts.mirror) {\r\n\t\t\t\t\tlargestTextWidth = 0;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// use lineSpace for consistency with horizontal axis\r\n\t\t\t\t\t// tickPadding is not implemented for horizontal\r\n\t\t\t\t\tlargestTextWidth += tickPadding + lineSpace;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth);\r\n\r\n\t\t\t\tme.paddingTop = tickFont.size / 2;\r\n\t\t\t\tme.paddingBottom = tickFont.size / 2;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.handleMargins();\r\n\r\n\t\tme.width = minSize.width;\r\n\t\tme.height = minSize.height;\r\n\t},\r\n\r\n\t/**\r\n\t * Handle margins and padding interactions\r\n\t * @private\r\n\t */\r\n\thandleMargins: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.margins) {\r\n\t\t\tme.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0);\r\n\t\t\tme.paddingTop = Math.max(me.paddingTop - me.margins.top, 0);\r\n\t\t\tme.paddingRight = Math.max(me.paddingRight - me.margins.right, 0);\r\n\t\t\tme.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0);\r\n\t\t}\r\n\t},\r\n\r\n\tafterFit: function() {\r\n\t\thelpers.callback(this.options.afterFit, [this]);\r\n\t},\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\r\n\t},\r\n\tisFullWidth: function() {\r\n\t\treturn (this.options.fullWidth);\r\n\t},\r\n\r\n\t// Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not\r\n\tgetRightValue: function(rawValue) {\r\n\t\t// Null and undefined values first\r\n\t\tif (helpers.isNullOrUndef(rawValue)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\t// isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\r\n\t\tif (typeof rawValue === 'number' && !isFinite(rawValue)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\t// If it is in fact an object, dive in one more level\r\n\t\tif (rawValue) {\r\n\t\t\tif (this.isHorizontal()) {\r\n\t\t\t\tif (rawValue.x !== undefined) {\r\n\t\t\t\t\treturn this.getRightValue(rawValue.x);\r\n\t\t\t\t}\r\n\t\t\t} else if (rawValue.y !== undefined) {\r\n\t\t\t\treturn this.getRightValue(rawValue.y);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Value is good, return it\r\n\t\treturn rawValue;\r\n\t},\r\n\r\n\t/**\r\n\t * Used to get the value to display in the tooltip for the data at the given index\r\n\t * @param index\r\n\t * @param datasetIndex\r\n\t */\r\n\tgetLabelForIndex: helpers.noop,\r\n\r\n\t/**\r\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t * @param value\r\n\t * @param index\r\n\t * @param datasetIndex\r\n\t */\r\n\tgetPixelForValue: helpers.noop,\r\n\r\n\t/**\r\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t * @param pixel\r\n\t */\r\n\tgetValueForPixel: helpers.noop,\r\n\r\n\t/**\r\n\t * Returns the location of the tick at the given index\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar offset = me.options.offset;\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\r\n\t\t\tvar tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\r\n\t\t\tvar pixel = (tickWidth * index) + me.paddingLeft;\r\n\r\n\t\t\tif (offset) {\r\n\t\t\t\tpixel += tickWidth / 2;\r\n\t\t\t}\r\n\r\n\t\t\tvar finalVal = me.left + Math.round(pixel);\r\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\r\n\t\t\treturn finalVal;\r\n\t\t}\r\n\t\tvar innerHeight = me.height - (me.paddingTop + me.paddingBottom);\r\n\t\treturn me.top + (index * (innerHeight / (me._ticks.length - 1)));\r\n\t},\r\n\r\n\t/**\r\n\t * Utility for getting the pixel location of a percentage of scale\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetPixelForDecimal: function(decimal) {\r\n\t\tvar me = this;\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\r\n\t\t\tvar valueOffset = (innerWidth * decimal) + me.paddingLeft;\r\n\r\n\t\t\tvar finalVal = me.left + Math.round(valueOffset);\r\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\r\n\t\t\treturn finalVal;\r\n\t\t}\r\n\t\treturn me.top + (decimal * me.height);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the pixel for the minimum chart value\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetBasePixel: function() {\r\n\t\treturn this.getPixelForValue(this.getBaseValue());\r\n\t},\r\n\r\n\tgetBaseValue: function() {\r\n\t\tvar me = this;\r\n\t\tvar min = me.min;\r\n\t\tvar max = me.max;\r\n\r\n\t\treturn me.beginAtZero ? 0 :\r\n\t\t\tmin < 0 && max < 0 ? max :\r\n\t\t\tmin > 0 && max > 0 ? min :\r\n\t\t\t0;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a subset of ticks to be plotted to avoid overlapping labels.\r\n\t * @private\r\n\t */\r\n\t_autoSkip: function(ticks) {\r\n\t\tvar skipRatio;\r\n\t\tvar me = this;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tvar optionTicks = me.options.ticks.minor;\r\n\t\tvar tickCount = ticks.length;\r\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\r\n\t\tvar cosRotation = Math.cos(labelRotationRadians);\r\n\t\tvar longestRotatedLabel = me.longestLabelWidth * cosRotation;\r\n\t\tvar result = [];\r\n\t\tvar i, tick, shouldSkip;\r\n\r\n\t\t// figure out the maximum number of gridlines to show\r\n\t\tvar maxTicks;\r\n\t\tif (optionTicks.maxTicksLimit) {\r\n\t\t\tmaxTicks = optionTicks.maxTicksLimit;\r\n\t\t}\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\tskipRatio = false;\r\n\r\n\t\t\tif ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) {\r\n\t\t\t\tskipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight)));\r\n\t\t\t}\r\n\r\n\t\t\t// if they defined a max number of optionTicks,\r\n\t\t\t// increase skipRatio until that number is met\r\n\t\t\tif (maxTicks && tickCount > maxTicks) {\r\n\t\t\t\tskipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < tickCount; i++) {\r\n\t\t\ttick = ticks[i];\r\n\r\n\t\t\t// Since we always show the last tick,we need may need to hide the last shown one before\r\n\t\t\tshouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount);\r\n\t\t\tif (shouldSkip && i !== tickCount - 1) {\r\n\t\t\t\t// leave tick in place but make sure it's not displayed (#4635)\r\n\t\t\t\tdelete tick.label;\r\n\t\t\t}\r\n\t\t\tresult.push(tick);\r\n\t\t}\r\n\t\treturn result;\r\n\t},\r\n\r\n\t// Actually draw the scale on the canvas\r\n\t// @param {rectangle} chartArea : the area of the chart to draw full grid lines on\r\n\tdraw: function(chartArea) {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tif (!options.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar context = me.ctx;\r\n\t\tvar globalDefaults = defaults.global;\r\n\t\tvar optionTicks = options.ticks.minor;\r\n\t\tvar optionMajorTicks = options.ticks.major || optionTicks;\r\n\t\tvar gridLines = options.gridLines;\r\n\t\tvar scaleLabel = options.scaleLabel;\r\n\r\n\t\tvar isRotated = me.labelRotation !== 0;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\tvar ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks();\r\n\t\tvar tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor);\r\n\t\tvar tickFont = parseFontOptions(optionTicks);\r\n\t\tvar majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor);\r\n\t\tvar majorTickFont = parseFontOptions(optionMajorTicks);\r\n\r\n\t\tvar tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0;\r\n\r\n\t\tvar scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor);\r\n\t\tvar scaleLabelFont = parseFontOptions(scaleLabel);\r\n\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding);\r\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\r\n\r\n\t\tvar itemsToDraw = [];\r\n\r\n\t\tvar axisWidth = me.options.gridLines.lineWidth;\r\n\t\tvar xTickStart = options.position === 'right' ? me.left : me.right - axisWidth - tl;\r\n\t\tvar xTickEnd = options.position === 'right' ? me.left + tl : me.right;\r\n\t\tvar yTickStart = options.position === 'bottom' ? me.top + axisWidth : me.bottom - tl - axisWidth;\r\n\t\tvar yTickEnd = options.position === 'bottom' ? me.top + axisWidth + tl : me.bottom + axisWidth;\r\n\r\n\t\thelpers.each(ticks, function(tick, index) {\r\n\t\t\t// autoskipper skipped this tick (#4635)\r\n\t\t\tif (helpers.isNullOrUndef(tick.label)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar label = tick.label;\r\n\t\t\tvar lineWidth, lineColor, borderDash, borderDashOffset;\r\n\t\t\tif (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) {\r\n\t\t\t\t// Draw the first index specially\r\n\t\t\t\tlineWidth = gridLines.zeroLineWidth;\r\n\t\t\t\tlineColor = gridLines.zeroLineColor;\r\n\t\t\t\tborderDash = gridLines.zeroLineBorderDash;\r\n\t\t\t\tborderDashOffset = gridLines.zeroLineBorderDashOffset;\r\n\t\t\t} else {\r\n\t\t\t\tlineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index);\r\n\t\t\t\tlineColor = helpers.valueAtIndexOrDefault(gridLines.color, index);\r\n\t\t\t\tborderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash);\r\n\t\t\t\tborderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset);\r\n\t\t\t}\r\n\r\n\t\t\t// Common properties\r\n\t\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY;\r\n\t\t\tvar textAlign = 'middle';\r\n\t\t\tvar textBaseline = 'middle';\r\n\t\t\tvar tickPadding = optionTicks.padding;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tvar labelYOffset = tl + tickPadding;\r\n\r\n\t\t\t\tif (options.position === 'bottom') {\r\n\t\t\t\t\t// bottom\r\n\t\t\t\t\ttextBaseline = !isRotated ? 'top' : 'middle';\r\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'right';\r\n\t\t\t\t\tlabelY = me.top + labelYOffset;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// top\r\n\t\t\t\t\ttextBaseline = !isRotated ? 'bottom' : 'middle';\r\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'left';\r\n\t\t\t\t\tlabelY = me.bottom - labelYOffset;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\r\n\t\t\t\tif (xLineValue < me.left) {\r\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\r\n\t\t\t\t}\r\n\t\t\t\txLineValue += helpers.aliasPixel(lineWidth);\r\n\r\n\t\t\t\tlabelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option)\r\n\r\n\t\t\t\ttx1 = tx2 = x1 = x2 = xLineValue;\r\n\t\t\t\tty1 = yTickStart;\r\n\t\t\t\tty2 = yTickEnd;\r\n\t\t\t\ty1 = chartArea.top;\r\n\t\t\t\ty2 = chartArea.bottom + axisWidth;\r\n\t\t\t} else {\r\n\t\t\t\tvar isLeft = options.position === 'left';\r\n\t\t\t\tvar labelXOffset;\r\n\r\n\t\t\t\tif (optionTicks.mirror) {\r\n\t\t\t\t\ttextAlign = isLeft ? 'left' : 'right';\r\n\t\t\t\t\tlabelXOffset = tickPadding;\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttextAlign = isLeft ? 'right' : 'left';\r\n\t\t\t\t\tlabelXOffset = tl + tickPadding;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlabelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset;\r\n\r\n\t\t\t\tvar yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\r\n\t\t\t\tif (yLineValue < me.top) {\r\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\r\n\t\t\t\t}\r\n\t\t\t\tyLineValue += helpers.aliasPixel(lineWidth);\r\n\r\n\t\t\t\tlabelY = me.getPixelForTick(index) + optionTicks.labelOffset;\r\n\r\n\t\t\t\ttx1 = xTickStart;\r\n\t\t\t\ttx2 = xTickEnd;\r\n\t\t\t\tx1 = chartArea.left;\r\n\t\t\t\tx2 = chartArea.right + axisWidth;\r\n\t\t\t\tty1 = ty2 = y1 = y2 = yLineValue;\r\n\t\t\t}\r\n\r\n\t\t\titemsToDraw.push({\r\n\t\t\t\ttx1: tx1,\r\n\t\t\t\tty1: ty1,\r\n\t\t\t\ttx2: tx2,\r\n\t\t\t\tty2: ty2,\r\n\t\t\t\tx1: x1,\r\n\t\t\t\ty1: y1,\r\n\t\t\t\tx2: x2,\r\n\t\t\t\ty2: y2,\r\n\t\t\t\tlabelX: labelX,\r\n\t\t\t\tlabelY: labelY,\r\n\t\t\t\tglWidth: lineWidth,\r\n\t\t\t\tglColor: lineColor,\r\n\t\t\t\tglBorderDash: borderDash,\r\n\t\t\t\tglBorderDashOffset: borderDashOffset,\r\n\t\t\t\trotation: -1 * labelRotationRadians,\r\n\t\t\t\tlabel: label,\r\n\t\t\t\tmajor: tick.major,\r\n\t\t\t\ttextBaseline: textBaseline,\r\n\t\t\t\ttextAlign: textAlign\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t// Draw all of the tick labels, tick marks, and grid lines at the correct places\r\n\t\thelpers.each(itemsToDraw, function(itemToDraw) {\r\n\t\t\tif (gridLines.display) {\r\n\t\t\t\tcontext.save();\r\n\t\t\t\tcontext.lineWidth = itemToDraw.glWidth;\r\n\t\t\t\tcontext.strokeStyle = itemToDraw.glColor;\r\n\t\t\t\tif (context.setLineDash) {\r\n\t\t\t\t\tcontext.setLineDash(itemToDraw.glBorderDash);\r\n\t\t\t\t\tcontext.lineDashOffset = itemToDraw.glBorderDashOffset;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontext.beginPath();\r\n\r\n\t\t\t\tif (gridLines.drawTicks) {\r\n\t\t\t\t\tcontext.moveTo(itemToDraw.tx1, itemToDraw.ty1);\r\n\t\t\t\t\tcontext.lineTo(itemToDraw.tx2, itemToDraw.ty2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (gridLines.drawOnChartArea) {\r\n\t\t\t\t\tcontext.moveTo(itemToDraw.x1, itemToDraw.y1);\r\n\t\t\t\t\tcontext.lineTo(itemToDraw.x2, itemToDraw.y2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontext.stroke();\r\n\t\t\t\tcontext.restore();\r\n\t\t\t}\r\n\r\n\t\t\tif (optionTicks.display) {\r\n\t\t\t\t// Make sure we draw text in the correct color and font\r\n\t\t\t\tcontext.save();\r\n\t\t\t\tcontext.translate(itemToDraw.labelX, itemToDraw.labelY);\r\n\t\t\t\tcontext.rotate(itemToDraw.rotation);\r\n\t\t\t\tcontext.font = itemToDraw.major ? majorTickFont.font : tickFont.font;\r\n\t\t\t\tcontext.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor;\r\n\t\t\t\tcontext.textBaseline = itemToDraw.textBaseline;\r\n\t\t\t\tcontext.textAlign = itemToDraw.textAlign;\r\n\r\n\t\t\t\tvar label = itemToDraw.label;\r\n\t\t\t\tif (helpers.isArray(label)) {\r\n\t\t\t\t\tvar lineCount = label.length;\r\n\t\t\t\t\tvar lineHeight = tickFont.size * 1.5;\r\n\t\t\t\t\tvar y = me.isHorizontal() ? 0 : -lineHeight * (lineCount - 1) / 2;\r\n\r\n\t\t\t\t\tfor (var i = 0; i < lineCount; ++i) {\r\n\t\t\t\t\t\t// We just make sure the multiline element is a string here..\r\n\t\t\t\t\t\tcontext.fillText('' + label[i], 0, y);\r\n\t\t\t\t\t\t// apply same lineSpacing as calculated @ L#320\r\n\t\t\t\t\t\ty += lineHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontext.fillText(label, 0, 0);\r\n\t\t\t\t}\r\n\t\t\t\tcontext.restore();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (scaleLabel.display) {\r\n\t\t\t// Draw the scale label\r\n\t\t\tvar scaleLabelX;\r\n\t\t\tvar scaleLabelY;\r\n\t\t\tvar rotation = 0;\r\n\t\t\tvar halfLineHeight = parseLineHeight(scaleLabel) / 2;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tscaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width\r\n\t\t\t\tscaleLabelY = options.position === 'bottom'\r\n\t\t\t\t\t? me.bottom - halfLineHeight - scaleLabelPadding.bottom\r\n\t\t\t\t\t: me.top + halfLineHeight + scaleLabelPadding.top;\r\n\t\t\t} else {\r\n\t\t\t\tvar isLeft = options.position === 'left';\r\n\t\t\t\tscaleLabelX = isLeft\r\n\t\t\t\t\t? me.left + halfLineHeight + scaleLabelPadding.top\r\n\t\t\t\t\t: me.right - halfLineHeight - scaleLabelPadding.top;\r\n\t\t\t\tscaleLabelY = me.top + ((me.bottom - me.top) / 2);\r\n\t\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\r\n\t\t\t}\r\n\r\n\t\t\tcontext.save();\r\n\t\t\tcontext.translate(scaleLabelX, scaleLabelY);\r\n\t\t\tcontext.rotate(rotation);\r\n\t\t\tcontext.textAlign = 'center';\r\n\t\t\tcontext.textBaseline = 'middle';\r\n\t\t\tcontext.fillStyle = scaleLabelFontColor; // render in correct colour\r\n\t\t\tcontext.font = scaleLabelFont.font;\r\n\t\t\tcontext.fillText(scaleLabel.labelString, 0, 0);\r\n\t\t\tcontext.restore();\r\n\t\t}\r\n\r\n\t\tif (gridLines.drawBorder) {\r\n\t\t\t// Draw the line at the edge of the axis\r\n\t\t\tcontext.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0);\r\n\t\t\tcontext.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0);\r\n\t\t\tvar x1 = me.left;\r\n\t\t\tvar x2 = me.right + axisWidth;\r\n\t\t\tvar y1 = me.top;\r\n\t\t\tvar y2 = me.bottom + axisWidth;\r\n\r\n\t\t\tvar aliasPixel = helpers.aliasPixel(context.lineWidth);\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\ty1 = y2 = options.position === 'top' ? me.bottom : me.top;\r\n\t\t\t\ty1 += aliasPixel;\r\n\t\t\t\ty2 += aliasPixel;\r\n\t\t\t} else {\r\n\t\t\t\tx1 = x2 = options.position === 'left' ? me.right : me.left;\r\n\t\t\t\tx1 += aliasPixel;\r\n\t\t\t\tx2 += aliasPixel;\r\n\t\t\t}\r\n\r\n\t\t\tcontext.beginPath();\r\n\t\t\tcontext.moveTo(x1, y1);\r\n\t\t\tcontext.lineTo(x2, y2);\r\n\t\t\tcontext.stroke();\r\n\t\t}\r\n\t}\r\n});\r\n\r\n},{\"26\":26,\"27\":27,\"35\":35,\"46\":46}],34:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar layouts = require(31);\r\n\r\nmodule.exports = {\r\n\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\r\n\t// use the new chart options to grab the correct scale\r\n\tconstructors: {},\r\n\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\r\n\t// old browsers\r\n\r\n\t// Scale config defaults\r\n\tdefaults: {},\r\n\tregisterScaleType: function(type, scaleConstructor, scaleDefaults) {\r\n\t\tthis.constructors[type] = scaleConstructor;\r\n\t\tthis.defaults[type] = helpers.clone(scaleDefaults);\r\n\t},\r\n\tgetScaleConstructor: function(type) {\r\n\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\r\n\t},\r\n\tgetScaleDefaults: function(type) {\r\n\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\r\n\t\treturn this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {};\r\n\t},\r\n\tupdateScaleDefaults: function(type, additions) {\r\n\t\tvar me = this;\r\n\t\tif (me.defaults.hasOwnProperty(type)) {\r\n\t\t\tme.defaults[type] = helpers.extend(me.defaults[type], additions);\r\n\t\t}\r\n\t},\r\n\taddScalesToLayout: function(chart) {\r\n\t\t// Adds each scale to the chart.boxes array to be sized accordingly\r\n\t\thelpers.each(chart.scales, function(scale) {\r\n\t\t\t// Set ILayoutItem parameters for backwards compatibility\r\n\t\t\tscale.fullWidth = scale.options.fullWidth;\r\n\t\t\tscale.position = scale.options.position;\r\n\t\t\tscale.weight = scale.options.weight;\r\n\t\t\tlayouts.addBox(chart, scale);\r\n\t\t});\r\n\t}\r\n};\r\n\r\n},{\"26\":26,\"31\":31,\"46\":46}],35:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\n/**\r\n * Namespace to hold static tick generation functions\r\n * @namespace Chart.Ticks\r\n */\r\nmodule.exports = {\r\n\t/**\r\n\t * Namespace to hold formatters for different types of ticks\r\n\t * @namespace Chart.Ticks.formatters\r\n\t */\r\n\tformatters: {\r\n\t\t/**\r\n\t\t * Formatter for value labels\r\n\t\t * @method Chart.Ticks.formatters.values\r\n\t\t * @param value the value to display\r\n\t\t * @return {String|Array} the label to display\r\n\t\t */\r\n\t\tvalues: function(value) {\r\n\t\t\treturn helpers.isArray(value) ? value : '' + value;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Formatter for linear numeric ticks\r\n\t\t * @method Chart.Ticks.formatters.linear\r\n\t\t * @param tickValue {Number} the value to be formatted\r\n\t\t * @param index {Number} the position of the tickValue parameter in the ticks array\r\n\t\t * @param ticks {Array} the list of ticks being converted\r\n\t\t * @return {String} string representation of the tickValue parameter\r\n\t\t */\r\n\t\tlinear: function(tickValue, index, ticks) {\r\n\t\t\t// If we have lots of ticks, don't use the ones\r\n\t\t\tvar delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\r\n\r\n\t\t\t// If we have a number like 2.5 as the delta, figure out how many decimal places we need\r\n\t\t\tif (Math.abs(delta) > 1) {\r\n\t\t\t\tif (tickValue !== Math.floor(tickValue)) {\r\n\t\t\t\t\t// not an integer\r\n\t\t\t\t\tdelta = tickValue - Math.floor(tickValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar logDelta = helpers.log10(Math.abs(delta));\r\n\t\t\tvar tickString = '';\r\n\r\n\t\t\tif (tickValue !== 0) {\r\n\t\t\t\tvar maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\r\n\t\t\t\tif (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation\r\n\t\t\t\t\tvar logTick = helpers.log10(Math.abs(tickValue));\r\n\t\t\t\t\ttickString = tickValue.toExponential(Math.floor(logTick) - Math.floor(logDelta));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\r\n\t\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\r\n\t\t\t\t\ttickString = tickValue.toFixed(numDecimal);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\ttickString = '0'; // never show decimal places for 0\r\n\t\t\t}\r\n\r\n\t\t\treturn tickString;\r\n\t\t},\r\n\r\n\t\tlogarithmic: function(tickValue, index, ticks) {\r\n\t\t\tvar remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue))));\r\n\r\n\t\t\tif (tickValue === 0) {\r\n\t\t\t\treturn '0';\r\n\t\t\t} else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\r\n\t\t\t\treturn tickValue.toExponential();\r\n\t\t\t}\r\n\t\t\treturn '';\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"46\":46}],36:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('global', {\r\n\ttooltips: {\r\n\t\tenabled: true,\r\n\t\tcustom: null,\r\n\t\tmode: 'nearest',\r\n\t\tposition: 'average',\r\n\t\tintersect: true,\r\n\t\tbackgroundColor: 'rgba(0,0,0,0.8)',\r\n\t\ttitleFontStyle: 'bold',\r\n\t\ttitleSpacing: 2,\r\n\t\ttitleMarginBottom: 6,\r\n\t\ttitleFontColor: '#fff',\r\n\t\ttitleAlign: 'left',\r\n\t\tbodySpacing: 2,\r\n\t\tbodyFontColor: '#fff',\r\n\t\tbodyAlign: 'left',\r\n\t\tfooterFontStyle: 'bold',\r\n\t\tfooterSpacing: 2,\r\n\t\tfooterMarginTop: 6,\r\n\t\tfooterFontColor: '#fff',\r\n\t\tfooterAlign: 'left',\r\n\t\tyPadding: 6,\r\n\t\txPadding: 6,\r\n\t\tcaretPadding: 2,\r\n\t\tcaretSize: 5,\r\n\t\tcornerRadius: 6,\r\n\t\tmultiKeyBackground: '#fff',\r\n\t\tdisplayColors: true,\r\n\t\tborderColor: 'rgba(0,0,0,0)',\r\n\t\tborderWidth: 0,\r\n\t\tcallbacks: {\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeTitle: helpers.noop,\r\n\t\t\ttitle: function(tooltipItems, data) {\r\n\t\t\t\t// Pick first xLabel for now\r\n\t\t\t\tvar title = '';\r\n\t\t\t\tvar labels = data.labels;\r\n\t\t\t\tvar labelCount = labels ? labels.length : 0;\r\n\r\n\t\t\t\tif (tooltipItems.length > 0) {\r\n\t\t\t\t\tvar item = tooltipItems[0];\r\n\r\n\t\t\t\t\tif (item.xLabel) {\r\n\t\t\t\t\t\ttitle = item.xLabel;\r\n\t\t\t\t\t} else if (labelCount > 0 && item.index < labelCount) {\r\n\t\t\t\t\t\ttitle = labels[item.index];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn title;\r\n\t\t\t},\r\n\t\t\tafterTitle: helpers.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeBody: helpers.noop,\r\n\r\n\t\t\t// Args are: (tooltipItem, data)\r\n\t\t\tbeforeLabel: helpers.noop,\r\n\t\t\tlabel: function(tooltipItem, data) {\r\n\t\t\t\tvar label = data.datasets[tooltipItem.datasetIndex].label || '';\r\n\r\n\t\t\t\tif (label) {\r\n\t\t\t\t\tlabel += ': ';\r\n\t\t\t\t}\r\n\t\t\t\tlabel += tooltipItem.yLabel;\r\n\t\t\t\treturn label;\r\n\t\t\t},\r\n\t\t\tlabelColor: function(tooltipItem, chart) {\r\n\t\t\t\tvar meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\r\n\t\t\t\tvar activeElement = meta.data[tooltipItem.index];\r\n\t\t\t\tvar view = activeElement._view;\r\n\t\t\t\treturn {\r\n\t\t\t\t\tborderColor: view.borderColor,\r\n\t\t\t\t\tbackgroundColor: view.backgroundColor\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tlabelTextColor: function() {\r\n\t\t\t\treturn this._options.bodyFontColor;\r\n\t\t\t},\r\n\t\t\tafterLabel: helpers.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tafterBody: helpers.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeFooter: helpers.noop,\r\n\t\t\tfooter: helpers.noop,\r\n\t\t\tafterFooter: helpers.noop\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar positioners = {\r\n\t/**\r\n\t * Average mode places the tooltip at the average position of the elements shown\r\n\t * @function Chart.Tooltip.positioners.average\r\n\t * @param elements {ChartElement[]} the elements being displayed in the tooltip\r\n\t * @returns {Point} tooltip position\r\n\t */\r\n\taverage: function(elements) {\r\n\t\tif (!elements.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar i, len;\r\n\t\tvar x = 0;\r\n\t\tvar y = 0;\r\n\t\tvar count = 0;\r\n\r\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\r\n\t\t\tvar el = elements[i];\r\n\t\t\tif (el && el.hasValue()) {\r\n\t\t\t\tvar pos = el.tooltipPosition();\r\n\t\t\t\tx += pos.x;\r\n\t\t\t\ty += pos.y;\r\n\t\t\t\t++count;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tx: Math.round(x / count),\r\n\t\t\ty: Math.round(y / count)\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Gets the tooltip position nearest of the item nearest to the event position\r\n\t * @function Chart.Tooltip.positioners.nearest\r\n\t * @param elements {Chart.Element[]} the tooltip elements\r\n\t * @param eventPosition {Point} the position of the event in canvas coordinates\r\n\t * @returns {Point} the tooltip position\r\n\t */\r\n\tnearest: function(elements, eventPosition) {\r\n\t\tvar x = eventPosition.x;\r\n\t\tvar y = eventPosition.y;\r\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\r\n\t\tvar i, len, nearestElement;\r\n\r\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\r\n\t\t\tvar el = elements[i];\r\n\t\t\tif (el && el.hasValue()) {\r\n\t\t\t\tvar center = el.getCenterPoint();\r\n\t\t\t\tvar d = helpers.distanceBetweenPoints(eventPosition, center);\r\n\r\n\t\t\t\tif (d < minDistance) {\r\n\t\t\t\t\tminDistance = d;\r\n\t\t\t\t\tnearestElement = el;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (nearestElement) {\r\n\t\t\tvar tp = nearestElement.tooltipPosition();\r\n\t\t\tx = tp.x;\r\n\t\t\ty = tp.y;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tx: x,\r\n\t\t\ty: y\r\n\t\t};\r\n\t}\r\n};\r\n\r\n/**\r\n * Helper method to merge the opacity into a color\r\n */\r\nfunction mergeOpacity(colorString, opacity) {\r\n\tvar color = helpers.color(colorString);\r\n\treturn color.alpha(opacity * color.alpha()).rgbaString();\r\n}\r\n\r\n// Helper to push or concat based on if the 2nd parameter is an array or not\r\nfunction pushOrConcat(base, toPush) {\r\n\tif (toPush) {\r\n\t\tif (helpers.isArray(toPush)) {\r\n\t\t\t// base = base.concat(toPush);\r\n\t\t\tArray.prototype.push.apply(base, toPush);\r\n\t\t} else {\r\n\t\t\tbase.push(toPush);\r\n\t\t}\r\n\t}\r\n\r\n\treturn base;\r\n}\r\n\r\n/**\r\n * Returns array of strings split by newline\r\n * @param {String} value - The value to split by newline.\r\n * @returns {Array} value if newline present - Returned from String split() method\r\n * @function\r\n */\r\nfunction splitNewlines(str) {\r\n\tif ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\r\n\t\treturn str.split('\\n');\r\n\t}\r\n\treturn str;\r\n}\r\n\r\n\r\n// Private helper to create a tooltip item model\r\n// @param element : the chart element (point, arc, bar) to create the tooltip item for\r\n// @return : new tooltip item\r\nfunction createTooltipItem(element) {\r\n\tvar xScale = element._xScale;\r\n\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\r\n\tvar index = element._index;\r\n\tvar datasetIndex = element._datasetIndex;\r\n\r\n\treturn {\r\n\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tindex: index,\r\n\t\tdatasetIndex: datasetIndex,\r\n\t\tx: element._model.x,\r\n\t\ty: element._model.y\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the reset model for the tooltip\r\n * @param tooltipOpts {Object} the tooltip options\r\n */\r\nfunction getBaseModel(tooltipOpts) {\r\n\tvar globalDefaults = defaults.global;\r\n\tvar valueOrDefault = helpers.valueOrDefault;\r\n\r\n\treturn {\r\n\t\t// Positioning\r\n\t\txPadding: tooltipOpts.xPadding,\r\n\t\tyPadding: tooltipOpts.yPadding,\r\n\t\txAlign: tooltipOpts.xAlign,\r\n\t\tyAlign: tooltipOpts.yAlign,\r\n\r\n\t\t// Body\r\n\t\tbodyFontColor: tooltipOpts.bodyFontColor,\r\n\t\t_bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\r\n\t\t_bodyAlign: tooltipOpts.bodyAlign,\r\n\t\tbodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\r\n\t\tbodySpacing: tooltipOpts.bodySpacing,\r\n\r\n\t\t// Title\r\n\t\ttitleFontColor: tooltipOpts.titleFontColor,\r\n\t\t_titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\r\n\t\ttitleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\r\n\t\t_titleAlign: tooltipOpts.titleAlign,\r\n\t\ttitleSpacing: tooltipOpts.titleSpacing,\r\n\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\r\n\r\n\t\t// Footer\r\n\t\tfooterFontColor: tooltipOpts.footerFontColor,\r\n\t\t_footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\r\n\t\tfooterFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\r\n\t\t_footerAlign: tooltipOpts.footerAlign,\r\n\t\tfooterSpacing: tooltipOpts.footerSpacing,\r\n\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\r\n\r\n\t\t// Appearance\r\n\t\tcaretSize: tooltipOpts.caretSize,\r\n\t\tcornerRadius: tooltipOpts.cornerRadius,\r\n\t\tbackgroundColor: tooltipOpts.backgroundColor,\r\n\t\topacity: 0,\r\n\t\tlegendColorBackground: tooltipOpts.multiKeyBackground,\r\n\t\tdisplayColors: tooltipOpts.displayColors,\r\n\t\tborderColor: tooltipOpts.borderColor,\r\n\t\tborderWidth: tooltipOpts.borderWidth\r\n\t};\r\n}\r\n\r\n/**\r\n * Get the size of the tooltip\r\n */\r\nfunction getTooltipSize(tooltip, model) {\r\n\tvar ctx = tooltip._chart.ctx;\r\n\r\n\tvar height = model.yPadding * 2; // Tooltip Padding\r\n\tvar width = 0;\r\n\r\n\t// Count of all lines in the body\r\n\tvar body = model.body;\r\n\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\r\n\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\r\n\t}, 0);\r\n\tcombinedBodyLength += model.beforeBody.length + model.afterBody.length;\r\n\r\n\tvar titleLineCount = model.title.length;\r\n\tvar footerLineCount = model.footer.length;\r\n\tvar titleFontSize = model.titleFontSize;\r\n\tvar bodyFontSize = model.bodyFontSize;\r\n\tvar footerFontSize = model.footerFontSize;\r\n\r\n\theight += titleLineCount * titleFontSize; // Title Lines\r\n\theight += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\r\n\theight += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\r\n\theight += combinedBodyLength * bodyFontSize; // Body Lines\r\n\theight += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\r\n\theight += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\r\n\theight += footerLineCount * (footerFontSize); // Footer Lines\r\n\theight += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\r\n\r\n\t// Title width\r\n\tvar widthPadding = 0;\r\n\tvar maxLineWidth = function(line) {\r\n\t\twidth = Math.max(width, ctx.measureText(line).width + widthPadding);\r\n\t};\r\n\r\n\tctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\r\n\thelpers.each(model.title, maxLineWidth);\r\n\r\n\t// Body width\r\n\tctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\r\n\thelpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\r\n\r\n\t// Body lines may include some extra width due to the color box\r\n\twidthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\r\n\thelpers.each(body, function(bodyItem) {\r\n\t\thelpers.each(bodyItem.before, maxLineWidth);\r\n\t\thelpers.each(bodyItem.lines, maxLineWidth);\r\n\t\thelpers.each(bodyItem.after, maxLineWidth);\r\n\t});\r\n\r\n\t// Reset back to 0\r\n\twidthPadding = 0;\r\n\r\n\t// Footer width\r\n\tctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\r\n\thelpers.each(model.footer, maxLineWidth);\r\n\r\n\t// Add padding\r\n\twidth += 2 * model.xPadding;\r\n\r\n\treturn {\r\n\t\twidth: width,\r\n\t\theight: height\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the alignment of a tooltip given the size\r\n */\r\nfunction determineAlignment(tooltip, size) {\r\n\tvar model = tooltip._model;\r\n\tvar chart = tooltip._chart;\r\n\tvar chartArea = tooltip._chart.chartArea;\r\n\tvar xAlign = 'center';\r\n\tvar yAlign = 'center';\r\n\r\n\tif (model.y < size.height) {\r\n\t\tyAlign = 'top';\r\n\t} else if (model.y > (chart.height - size.height)) {\r\n\t\tyAlign = 'bottom';\r\n\t}\r\n\r\n\tvar lf, rf; // functions to determine left, right alignment\r\n\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\r\n\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\r\n\tvar midX = (chartArea.left + chartArea.right) / 2;\r\n\tvar midY = (chartArea.top + chartArea.bottom) / 2;\r\n\r\n\tif (yAlign === 'center') {\r\n\t\tlf = function(x) {\r\n\t\t\treturn x <= midX;\r\n\t\t};\r\n\t\trf = function(x) {\r\n\t\t\treturn x > midX;\r\n\t\t};\r\n\t} else {\r\n\t\tlf = function(x) {\r\n\t\t\treturn x <= (size.width / 2);\r\n\t\t};\r\n\t\trf = function(x) {\r\n\t\t\treturn x >= (chart.width - (size.width / 2));\r\n\t\t};\r\n\t}\r\n\r\n\tolf = function(x) {\r\n\t\treturn x + size.width + model.caretSize + model.caretPadding > chart.width;\r\n\t};\r\n\torf = function(x) {\r\n\t\treturn x - size.width - model.caretSize - model.caretPadding < 0;\r\n\t};\r\n\tyf = function(y) {\r\n\t\treturn y <= midY ? 'top' : 'bottom';\r\n\t};\r\n\r\n\tif (lf(model.x)) {\r\n\t\txAlign = 'left';\r\n\r\n\t\t// Is tooltip too wide and goes over the right side of the chart.?\r\n\t\tif (olf(model.x)) {\r\n\t\t\txAlign = 'center';\r\n\t\t\tyAlign = yf(model.y);\r\n\t\t}\r\n\t} else if (rf(model.x)) {\r\n\t\txAlign = 'right';\r\n\r\n\t\t// Is tooltip too wide and goes outside left edge of canvas?\r\n\t\tif (orf(model.x)) {\r\n\t\t\txAlign = 'center';\r\n\t\t\tyAlign = yf(model.y);\r\n\t\t}\r\n\t}\r\n\r\n\tvar opts = tooltip._options;\r\n\treturn {\r\n\t\txAlign: opts.xAlign ? opts.xAlign : xAlign,\r\n\t\tyAlign: opts.yAlign ? opts.yAlign : yAlign\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\r\n */\r\nfunction getBackgroundPoint(vm, size, alignment, chart) {\r\n\t// Background Position\r\n\tvar x = vm.x;\r\n\tvar y = vm.y;\r\n\r\n\tvar caretSize = vm.caretSize;\r\n\tvar caretPadding = vm.caretPadding;\r\n\tvar cornerRadius = vm.cornerRadius;\r\n\tvar xAlign = alignment.xAlign;\r\n\tvar yAlign = alignment.yAlign;\r\n\tvar paddingAndSize = caretSize + caretPadding;\r\n\tvar radiusAndPadding = cornerRadius + caretPadding;\r\n\r\n\tif (xAlign === 'right') {\r\n\t\tx -= size.width;\r\n\t} else if (xAlign === 'center') {\r\n\t\tx -= (size.width / 2);\r\n\t\tif (x + size.width > chart.width) {\r\n\t\t\tx = chart.width - size.width;\r\n\t\t}\r\n\t\tif (x < 0) {\r\n\t\t\tx = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tif (yAlign === 'top') {\r\n\t\ty += paddingAndSize;\r\n\t} else if (yAlign === 'bottom') {\r\n\t\ty -= size.height + paddingAndSize;\r\n\t} else {\r\n\t\ty -= (size.height / 2);\r\n\t}\r\n\r\n\tif (yAlign === 'center') {\r\n\t\tif (xAlign === 'left') {\r\n\t\t\tx += paddingAndSize;\r\n\t\t} else if (xAlign === 'right') {\r\n\t\t\tx -= paddingAndSize;\r\n\t\t}\r\n\t} else if (xAlign === 'left') {\r\n\t\tx -= radiusAndPadding;\r\n\t} else if (xAlign === 'right') {\r\n\t\tx += radiusAndPadding;\r\n\t}\r\n\r\n\treturn {\r\n\t\tx: x,\r\n\t\ty: y\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to build before and after body lines\r\n */\r\nfunction getBeforeAfterBodyLines(callback) {\r\n\treturn pushOrConcat([], splitNewlines(callback));\r\n}\r\n\r\nvar exports = module.exports = Element.extend({\r\n\tinitialize: function() {\r\n\t\tthis._model = getBaseModel(this._options);\r\n\t\tthis._lastActive = [];\r\n\t},\r\n\r\n\t// Get the title\r\n\t// Args are: (tooltipItem, data)\r\n\tgetTitle: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me._options;\r\n\t\tvar callbacks = opts.callbacks;\r\n\r\n\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments);\r\n\t\tvar title = callbacks.title.apply(me, arguments);\r\n\t\tvar afterTitle = callbacks.afterTitle.apply(me, arguments);\r\n\r\n\t\tvar lines = [];\r\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeTitle));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(title));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(afterTitle));\r\n\r\n\t\treturn lines;\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetBeforeBody: function() {\r\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetBody: function(tooltipItems, data) {\r\n\t\tvar me = this;\r\n\t\tvar callbacks = me._options.callbacks;\r\n\t\tvar bodyItems = [];\r\n\r\n\t\thelpers.each(tooltipItems, function(tooltipItem) {\r\n\t\t\tvar bodyItem = {\r\n\t\t\t\tbefore: [],\r\n\t\t\t\tlines: [],\r\n\t\t\t\tafter: []\r\n\t\t\t};\r\n\t\t\tpushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\r\n\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\r\n\t\t\tpushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\r\n\r\n\t\t\tbodyItems.push(bodyItem);\r\n\t\t});\r\n\r\n\t\treturn bodyItems;\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetAfterBody: function() {\r\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\r\n\t},\r\n\r\n\t// Get the footer and beforeFooter and afterFooter lines\r\n\t// Args are: (tooltipItem, data)\r\n\tgetFooter: function() {\r\n\t\tvar me = this;\r\n\t\tvar callbacks = me._options.callbacks;\r\n\r\n\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\r\n\t\tvar footer = callbacks.footer.apply(me, arguments);\r\n\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\r\n\r\n\t\tvar lines = [];\r\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeFooter));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(footer));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(afterFooter));\r\n\r\n\t\treturn lines;\r\n\t},\r\n\r\n\tupdate: function(changed) {\r\n\t\tvar me = this;\r\n\t\tvar opts = me._options;\r\n\r\n\t\t// Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition\r\n\t\t// that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time\r\n\t\t// which breaks any animations.\r\n\t\tvar existingModel = me._model;\r\n\t\tvar model = me._model = getBaseModel(opts);\r\n\t\tvar active = me._active;\r\n\r\n\t\tvar data = me._data;\r\n\r\n\t\t// In the case where active.length === 0 we need to keep these at existing values for good animations\r\n\t\tvar alignment = {\r\n\t\t\txAlign: existingModel.xAlign,\r\n\t\t\tyAlign: existingModel.yAlign\r\n\t\t};\r\n\t\tvar backgroundPoint = {\r\n\t\t\tx: existingModel.x,\r\n\t\t\ty: existingModel.y\r\n\t\t};\r\n\t\tvar tooltipSize = {\r\n\t\t\twidth: existingModel.width,\r\n\t\t\theight: existingModel.height\r\n\t\t};\r\n\t\tvar tooltipPosition = {\r\n\t\t\tx: existingModel.caretX,\r\n\t\t\ty: existingModel.caretY\r\n\t\t};\r\n\r\n\t\tvar i, len;\r\n\r\n\t\tif (active.length) {\r\n\t\t\tmodel.opacity = 1;\r\n\r\n\t\t\tvar labelColors = [];\r\n\t\t\tvar labelTextColors = [];\r\n\t\t\ttooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\r\n\r\n\t\t\tvar tooltipItems = [];\r\n\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\r\n\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\r\n\t\t\t}\r\n\r\n\t\t\t// If the user provided a filter function, use it to modify the tooltip items\r\n\t\t\tif (opts.filter) {\r\n\t\t\t\ttooltipItems = tooltipItems.filter(function(a) {\r\n\t\t\t\t\treturn opts.filter(a, data);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\r\n\t\t\tif (opts.itemSort) {\r\n\t\t\t\ttooltipItems = tooltipItems.sort(function(a, b) {\r\n\t\t\t\t\treturn opts.itemSort(a, b, data);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Determine colors for boxes\r\n\t\t\thelpers.each(tooltipItems, function(tooltipItem) {\r\n\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\r\n\t\t\t\tlabelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\r\n\t\t\t});\r\n\r\n\r\n\t\t\t// Build the Text Lines\r\n\t\t\tmodel.title = me.getTitle(tooltipItems, data);\r\n\t\t\tmodel.beforeBody = me.getBeforeBody(tooltipItems, data);\r\n\t\t\tmodel.body = me.getBody(tooltipItems, data);\r\n\t\t\tmodel.afterBody = me.getAfterBody(tooltipItems, data);\r\n\t\t\tmodel.footer = me.getFooter(tooltipItems, data);\r\n\r\n\t\t\t// Initial positioning and colors\r\n\t\t\tmodel.x = Math.round(tooltipPosition.x);\r\n\t\t\tmodel.y = Math.round(tooltipPosition.y);\r\n\t\t\tmodel.caretPadding = opts.caretPadding;\r\n\t\t\tmodel.labelColors = labelColors;\r\n\t\t\tmodel.labelTextColors = labelTextColors;\r\n\r\n\t\t\t// data points\r\n\t\t\tmodel.dataPoints = tooltipItems;\r\n\r\n\t\t\t// We need to determine alignment of the tooltip\r\n\t\t\ttooltipSize = getTooltipSize(this, model);\r\n\t\t\talignment = determineAlignment(this, tooltipSize);\r\n\t\t\t// Final Size and Position\r\n\t\t\tbackgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\r\n\t\t} else {\r\n\t\t\tmodel.opacity = 0;\r\n\t\t}\r\n\r\n\t\tmodel.xAlign = alignment.xAlign;\r\n\t\tmodel.yAlign = alignment.yAlign;\r\n\t\tmodel.x = backgroundPoint.x;\r\n\t\tmodel.y = backgroundPoint.y;\r\n\t\tmodel.width = tooltipSize.width;\r\n\t\tmodel.height = tooltipSize.height;\r\n\r\n\t\t// Point where the caret on the tooltip points to\r\n\t\tmodel.caretX = tooltipPosition.x;\r\n\t\tmodel.caretY = tooltipPosition.y;\r\n\r\n\t\tme._model = model;\r\n\r\n\t\tif (changed && opts.custom) {\r\n\t\t\topts.custom.call(me, model);\r\n\t\t}\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\tdrawCaret: function(tooltipPoint, size) {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\r\n\r\n\t\tctx.lineTo(caretPosition.x1, caretPosition.y1);\r\n\t\tctx.lineTo(caretPosition.x2, caretPosition.y2);\r\n\t\tctx.lineTo(caretPosition.x3, caretPosition.y3);\r\n\t},\r\n\tgetCaretPosition: function(tooltipPoint, size, vm) {\r\n\t\tvar x1, x2, x3, y1, y2, y3;\r\n\t\tvar caretSize = vm.caretSize;\r\n\t\tvar cornerRadius = vm.cornerRadius;\r\n\t\tvar xAlign = vm.xAlign;\r\n\t\tvar yAlign = vm.yAlign;\r\n\t\tvar ptX = tooltipPoint.x;\r\n\t\tvar ptY = tooltipPoint.y;\r\n\t\tvar width = size.width;\r\n\t\tvar height = size.height;\r\n\r\n\t\tif (yAlign === 'center') {\r\n\t\t\ty2 = ptY + (height / 2);\r\n\r\n\t\t\tif (xAlign === 'left') {\r\n\t\t\t\tx1 = ptX;\r\n\t\t\t\tx2 = x1 - caretSize;\r\n\t\t\t\tx3 = x1;\r\n\r\n\t\t\t\ty1 = y2 + caretSize;\r\n\t\t\t\ty3 = y2 - caretSize;\r\n\t\t\t} else {\r\n\t\t\t\tx1 = ptX + width;\r\n\t\t\t\tx2 = x1 + caretSize;\r\n\t\t\t\tx3 = x1;\r\n\r\n\t\t\t\ty1 = y2 - caretSize;\r\n\t\t\t\ty3 = y2 + caretSize;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (xAlign === 'left') {\r\n\t\t\t\tx2 = ptX + cornerRadius + (caretSize);\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t} else if (xAlign === 'right') {\r\n\t\t\t\tx2 = ptX + width - cornerRadius - caretSize;\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t} else {\r\n\t\t\t\tx2 = vm.caretX;\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t}\r\n\t\t\tif (yAlign === 'top') {\r\n\t\t\t\ty1 = ptY;\r\n\t\t\t\ty2 = y1 - caretSize;\r\n\t\t\t\ty3 = y1;\r\n\t\t\t} else {\r\n\t\t\t\ty1 = ptY + height;\r\n\t\t\t\ty2 = y1 + caretSize;\r\n\t\t\t\ty3 = y1;\r\n\t\t\t\t// invert drawing order\r\n\t\t\t\tvar tmp = x3;\r\n\t\t\t\tx3 = x1;\r\n\t\t\t\tx1 = tmp;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\r\n\t},\r\n\r\n\tdrawTitle: function(pt, vm, ctx, opacity) {\r\n\t\tvar title = vm.title;\r\n\r\n\t\tif (title.length) {\r\n\t\t\tctx.textAlign = vm._titleAlign;\r\n\t\t\tctx.textBaseline = 'top';\r\n\r\n\t\t\tvar titleFontSize = vm.titleFontSize;\r\n\t\t\tvar titleSpacing = vm.titleSpacing;\r\n\r\n\t\t\tctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity);\r\n\t\t\tctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\r\n\r\n\t\t\tvar i, len;\r\n\t\t\tfor (i = 0, len = title.length; i < len; ++i) {\r\n\t\t\t\tctx.fillText(title[i], pt.x, pt.y);\r\n\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\r\n\r\n\t\t\t\tif (i + 1 === title.length) {\r\n\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdrawBody: function(pt, vm, ctx, opacity) {\r\n\t\tvar bodyFontSize = vm.bodyFontSize;\r\n\t\tvar bodySpacing = vm.bodySpacing;\r\n\t\tvar body = vm.body;\r\n\r\n\t\tctx.textAlign = vm._bodyAlign;\r\n\t\tctx.textBaseline = 'top';\r\n\t\tctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\r\n\r\n\t\t// Before Body\r\n\t\tvar xLinePadding = 0;\r\n\t\tvar fillLineOfText = function(line) {\r\n\t\t\tctx.fillText(line, pt.x + xLinePadding, pt.y);\r\n\t\t\tpt.y += bodyFontSize + bodySpacing;\r\n\t\t};\r\n\r\n\t\t// Before body lines\r\n\t\tctx.fillStyle = mergeOpacity(vm.bodyFontColor, opacity);\r\n\t\thelpers.each(vm.beforeBody, fillLineOfText);\r\n\r\n\t\tvar drawColorBoxes = vm.displayColors;\r\n\t\txLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0;\r\n\r\n\t\t// Draw body lines now\r\n\t\thelpers.each(body, function(bodyItem, i) {\r\n\t\t\tvar textColor = mergeOpacity(vm.labelTextColors[i], opacity);\r\n\t\t\tctx.fillStyle = textColor;\r\n\t\t\thelpers.each(bodyItem.before, fillLineOfText);\r\n\r\n\t\t\thelpers.each(bodyItem.lines, function(line) {\r\n\t\t\t\t// Draw Legend-like boxes if needed\r\n\t\t\t\tif (drawColorBoxes) {\r\n\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\r\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity);\r\n\t\t\t\t\tctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\r\n\r\n\t\t\t\t\t// Border\r\n\t\t\t\t\tctx.lineWidth = 1;\r\n\t\t\t\t\tctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity);\r\n\t\t\t\t\tctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\r\n\r\n\t\t\t\t\t// Inner square\r\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity);\r\n\t\t\t\t\tctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\r\n\t\t\t\t\tctx.fillStyle = textColor;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfillLineOfText(line);\r\n\t\t\t});\r\n\r\n\t\t\thelpers.each(bodyItem.after, fillLineOfText);\r\n\t\t});\r\n\r\n\t\t// Reset back to 0 for after body\r\n\t\txLinePadding = 0;\r\n\r\n\t\t// After body lines\r\n\t\thelpers.each(vm.afterBody, fillLineOfText);\r\n\t\tpt.y -= bodySpacing; // Remove last body spacing\r\n\t},\r\n\r\n\tdrawFooter: function(pt, vm, ctx, opacity) {\r\n\t\tvar footer = vm.footer;\r\n\r\n\t\tif (footer.length) {\r\n\t\t\tpt.y += vm.footerMarginTop;\r\n\r\n\t\t\tctx.textAlign = vm._footerAlign;\r\n\t\t\tctx.textBaseline = 'top';\r\n\r\n\t\t\tctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity);\r\n\t\t\tctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\r\n\r\n\t\t\thelpers.each(footer, function(line) {\r\n\t\t\t\tctx.fillText(line, pt.x, pt.y);\r\n\t\t\t\tpt.y += vm.footerFontSize + vm.footerSpacing;\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\tdrawBackground: function(pt, vm, ctx, tooltipSize, opacity) {\r\n\t\tctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity);\r\n\t\tctx.strokeStyle = mergeOpacity(vm.borderColor, opacity);\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\t\tvar xAlign = vm.xAlign;\r\n\t\tvar yAlign = vm.yAlign;\r\n\t\tvar x = pt.x;\r\n\t\tvar y = pt.y;\r\n\t\tvar width = tooltipSize.width;\r\n\t\tvar height = tooltipSize.height;\r\n\t\tvar radius = vm.cornerRadius;\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.moveTo(x + radius, y);\r\n\t\tif (yAlign === 'top') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + width - radius, y);\r\n\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\r\n\t\tif (yAlign === 'center' && xAlign === 'right') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + width, y + height - radius);\r\n\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\r\n\t\tif (yAlign === 'bottom') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + radius, y + height);\r\n\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\r\n\t\tif (yAlign === 'center' && xAlign === 'left') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x, y + radius);\r\n\t\tctx.quadraticCurveTo(x, y, x + radius, y);\r\n\t\tctx.closePath();\r\n\r\n\t\tctx.fill();\r\n\r\n\t\tif (vm.borderWidth > 0) {\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm.opacity === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tooltipSize = {\r\n\t\t\twidth: vm.width,\r\n\t\t\theight: vm.height\r\n\t\t};\r\n\t\tvar pt = {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\r\n\t\t// IE11/Edge does not like very small opacities, so snap to 0\r\n\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\r\n\r\n\t\t// Truthy/falsey value for empty tooltip\r\n\t\tvar hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\r\n\r\n\t\tif (this._options.enabled && hasTooltipContent) {\r\n\t\t\t// Draw Background\r\n\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize, opacity);\r\n\r\n\t\t\t// Draw Title, Body, and Footer\r\n\t\t\tpt.x += vm.xPadding;\r\n\t\t\tpt.y += vm.yPadding;\r\n\r\n\t\t\t// Titles\r\n\t\t\tthis.drawTitle(pt, vm, ctx, opacity);\r\n\r\n\t\t\t// Body\r\n\t\t\tthis.drawBody(pt, vm, ctx, opacity);\r\n\r\n\t\t\t// Footer\r\n\t\t\tthis.drawFooter(pt, vm, ctx, opacity);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Handle an event\r\n\t * @private\r\n\t * @param {IEvent} event - The event to handle\r\n\t * @returns {Boolean} true if the tooltip changed\r\n\t */\r\n\thandleEvent: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar options = me._options;\r\n\t\tvar changed = false;\r\n\r\n\t\tme._lastActive = me._lastActive || [];\r\n\r\n\t\t// Find Active Elements for tooltips\r\n\t\tif (e.type === 'mouseout') {\r\n\t\t\tme._active = [];\r\n\t\t} else {\r\n\t\t\tme._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\r\n\t\t}\r\n\r\n\t\t// Remember Last Actives\r\n\t\tchanged = !helpers.arrayEquals(me._active, me._lastActive);\r\n\r\n\t\t// Only handle target event on tooltip change\r\n\t\tif (changed) {\r\n\t\t\tme._lastActive = me._active;\r\n\r\n\t\t\tif (options.enabled || options.custom) {\r\n\t\t\t\tme._eventPosition = {\r\n\t\t\t\t\tx: e.x,\r\n\t\t\t\t\ty: e.y\r\n\t\t\t\t};\r\n\r\n\t\t\t\tme.update(true);\r\n\t\t\t\tme.pivot();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n});\r\n\r\n/**\r\n * @namespace Chart.Tooltip.positioners\r\n */\r\nexports.positioners = positioners;\r\n\r\n\r\n},{\"26\":26,\"27\":27,\"46\":46}],37:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('global', {\r\n\telements: {\r\n\t\tarc: {\r\n\t\t\tbackgroundColor: defaults.global.defaultColor,\r\n\t\t\tborderColor: '#fff',\r\n\t\t\tborderWidth: 2\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = Element.extend({\r\n\tinLabelRange: function(mouseX) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tinRange: function(chartX, chartY) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\tvar pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY});\r\n\t\t\tvar\tangle = pointRelativePosition.angle;\r\n\t\t\tvar distance = pointRelativePosition.distance;\r\n\r\n\t\t\t// Sanitise angle range\r\n\t\t\tvar startAngle = vm.startAngle;\r\n\t\t\tvar endAngle = vm.endAngle;\r\n\t\t\twhile (endAngle < startAngle) {\r\n\t\t\t\tendAngle += 2.0 * Math.PI;\r\n\t\t\t}\r\n\t\t\twhile (angle > endAngle) {\r\n\t\t\t\tangle -= 2.0 * Math.PI;\r\n\t\t\t}\r\n\t\t\twhile (angle < startAngle) {\r\n\t\t\t\tangle += 2.0 * Math.PI;\r\n\t\t\t}\r\n\r\n\t\t\t// Check if within the range of the open/close angle\r\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\r\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\r\n\r\n\t\t\treturn (betweenAngles && withinRadius);\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\r\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\r\n\t\treturn {\r\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\r\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\r\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\r\n\r\n\t\treturn {\r\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\r\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar sA = vm.startAngle;\r\n\t\tvar eA = vm.endAngle;\r\n\r\n\t\tctx.beginPath();\r\n\r\n\t\tctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);\r\n\t\tctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);\r\n\r\n\t\tctx.closePath();\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\r\n\t\tctx.fill();\r\n\t\tctx.lineJoin = 'bevel';\r\n\r\n\t\tif (vm.borderWidth) {\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t}\r\n});\r\n\r\n},{\"26\":26,\"27\":27,\"46\":46}],38:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\n\r\nvar globalDefaults = defaults.global;\r\n\r\ndefaults._set('global', {\r\n\telements: {\r\n\t\tline: {\r\n\t\t\ttension: 0.4,\r\n\t\t\tbackgroundColor: globalDefaults.defaultColor,\r\n\t\t\tborderWidth: 3,\r\n\t\t\tborderColor: globalDefaults.defaultColor,\r\n\t\t\tborderCapStyle: 'butt',\r\n\t\t\tborderDash: [],\r\n\t\t\tborderDashOffset: 0.0,\r\n\t\t\tborderJoinStyle: 'miter',\r\n\t\t\tcapBezierPoints: true,\r\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = Element.extend({\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar vm = me._view;\r\n\t\tvar ctx = me._chart.ctx;\r\n\t\tvar spanGaps = vm.spanGaps;\r\n\t\tvar points = me._children.slice(); // clone array\r\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\r\n\t\tvar lastDrawnIndex = -1;\r\n\t\tvar index, current, previous, currentVM;\r\n\r\n\t\t// If we are looping, adding the first point again\r\n\t\tif (me._loop && points.length) {\r\n\t\t\tpoints.push(points[0]);\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\r\n\t\t// Stroke Line Options\r\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\r\n\r\n\t\t// IE 9 and 10 do not support line dash\r\n\t\tif (ctx.setLineDash) {\r\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\r\n\t\t}\r\n\r\n\t\tctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset;\r\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\r\n\t\tctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth;\r\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\r\n\r\n\t\t// Stroke Line\r\n\t\tctx.beginPath();\r\n\t\tlastDrawnIndex = -1;\r\n\r\n\t\tfor (index = 0; index < points.length; ++index) {\r\n\t\t\tcurrent = points[index];\r\n\t\t\tprevious = helpers.previousItem(points, index);\r\n\t\t\tcurrentVM = current._view;\r\n\r\n\t\t\t// First point moves to it's starting position no matter what\r\n\t\t\tif (index === 0) {\r\n\t\t\t\tif (!currentVM.skip) {\r\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\t\t\tlastDrawnIndex = index;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tprevious = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex];\r\n\r\n\t\t\t\tif (!currentVM.skip) {\r\n\t\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\r\n\t\t\t\t\t\t// There was a gap and this is the first point after the gap\r\n\t\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// Line to next point\r\n\t\t\t\t\t\thelpers.canvas.lineTo(ctx, previous._view, current._view);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlastDrawnIndex = index;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tctx.stroke();\r\n\t\tctx.restore();\r\n\t}\r\n});\r\n\r\n},{\"26\":26,\"27\":27,\"46\":46}],39:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\n\r\nvar defaultColor = defaults.global.defaultColor;\r\n\r\ndefaults._set('global', {\r\n\telements: {\r\n\t\tpoint: {\r\n\t\t\tradius: 3,\r\n\t\t\tpointStyle: 'circle',\r\n\t\t\tbackgroundColor: defaultColor,\r\n\t\t\tborderColor: defaultColor,\r\n\t\t\tborderWidth: 1,\r\n\t\t\t// Hover\r\n\t\t\thitRadius: 1,\r\n\t\t\thoverRadius: 4,\r\n\t\t\thoverBorderWidth: 1\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction xRange(mouseX) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nfunction yRange(mouseY) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nmodule.exports = Element.extend({\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\r\n\t},\r\n\r\n\tinLabelRange: xRange,\r\n\tinXRange: xRange,\r\n\tinYRange: yRange,\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tpadding: vm.radius + vm.borderWidth\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function(chartArea) {\r\n\t\tvar vm = this._view;\r\n\t\tvar model = this._model;\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar pointStyle = vm.pointStyle;\r\n\t\tvar rotation = vm.rotation;\r\n\t\tvar radius = vm.radius;\r\n\t\tvar x = vm.x;\r\n\t\tvar y = vm.y;\r\n\t\tvar errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.)\r\n\r\n\t\tif (vm.skip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Clipping for Points.\r\n\t\tif (chartArea === undefined || (model.x >= chartArea.left && chartArea.right * errMargin >= model.x && model.y >= chartArea.top && chartArea.bottom * errMargin >= model.y)) {\r\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\r\n\t\t\tctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth);\r\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\r\n\t\t\thelpers.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\r\n\t\t}\r\n\t}\r\n});\r\n\r\n},{\"26\":26,\"27\":27,\"46\":46}],40:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\n\r\ndefaults._set('global', {\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tbackgroundColor: defaults.global.defaultColor,\r\n\t\t\tborderColor: defaults.global.defaultColor,\r\n\t\t\tborderSkipped: 'bottom',\r\n\t\t\tborderWidth: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction isVertical(bar) {\r\n\treturn bar._view.width !== undefined;\r\n}\r\n\r\n/**\r\n * Helper function to get the bounds of the bar regardless of the orientation\r\n * @param bar {Chart.Element.Rectangle} the bar\r\n * @return {Bounds} bounds of the bar\r\n * @private\r\n */\r\nfunction getBarBounds(bar) {\r\n\tvar vm = bar._view;\r\n\tvar x1, x2, y1, y2;\r\n\r\n\tif (isVertical(bar)) {\r\n\t\t// vertical\r\n\t\tvar halfWidth = vm.width / 2;\r\n\t\tx1 = vm.x - halfWidth;\r\n\t\tx2 = vm.x + halfWidth;\r\n\t\ty1 = Math.min(vm.y, vm.base);\r\n\t\ty2 = Math.max(vm.y, vm.base);\r\n\t} else {\r\n\t\t// horizontal bar\r\n\t\tvar halfHeight = vm.height / 2;\r\n\t\tx1 = Math.min(vm.x, vm.base);\r\n\t\tx2 = Math.max(vm.x, vm.base);\r\n\t\ty1 = vm.y - halfHeight;\r\n\t\ty2 = vm.y + halfHeight;\r\n\t}\r\n\r\n\treturn {\r\n\t\tleft: x1,\r\n\t\ttop: y1,\r\n\t\tright: x2,\r\n\t\tbottom: y2\r\n\t};\r\n}\r\n\r\nmodule.exports = Element.extend({\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar left, right, top, bottom, signX, signY, borderSkipped;\r\n\t\tvar borderWidth = vm.borderWidth;\r\n\r\n\t\tif (!vm.horizontal) {\r\n\t\t\t// bar\r\n\t\t\tleft = vm.x - vm.width / 2;\r\n\t\t\tright = vm.x + vm.width / 2;\r\n\t\t\ttop = vm.y;\r\n\t\t\tbottom = vm.base;\r\n\t\t\tsignX = 1;\r\n\t\t\tsignY = bottom > top ? 1 : -1;\r\n\t\t\tborderSkipped = vm.borderSkipped || 'bottom';\r\n\t\t} else {\r\n\t\t\t// horizontal bar\r\n\t\t\tleft = vm.base;\r\n\t\t\tright = vm.x;\r\n\t\t\ttop = vm.y - vm.height / 2;\r\n\t\t\tbottom = vm.y + vm.height / 2;\r\n\t\t\tsignX = right > left ? 1 : -1;\r\n\t\t\tsignY = 1;\r\n\t\t\tborderSkipped = vm.borderSkipped || 'left';\r\n\t\t}\r\n\r\n\t\t// Canvas doesn't allow us to stroke inside the width so we can\r\n\t\t// adjust the sizes to fit if we're setting a stroke on the line\r\n\t\tif (borderWidth) {\r\n\t\t\t// borderWidth shold be less than bar width and bar height.\r\n\t\t\tvar barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\r\n\t\t\tborderWidth = borderWidth > barSize ? barSize : borderWidth;\r\n\t\t\tvar halfStroke = borderWidth / 2;\r\n\t\t\t// Adjust borderWidth when bar top position is near vm.base(zero).\r\n\t\t\tvar borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\r\n\t\t\tvar borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\r\n\t\t\tvar borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\r\n\t\t\tvar borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\r\n\t\t\t// not become a vertical line?\r\n\t\t\tif (borderLeft !== borderRight) {\r\n\t\t\t\ttop = borderTop;\r\n\t\t\t\tbottom = borderBottom;\r\n\t\t\t}\r\n\t\t\t// not become a horizontal line?\r\n\t\t\tif (borderTop !== borderBottom) {\r\n\t\t\t\tleft = borderLeft;\r\n\t\t\t\tright = borderRight;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\t\tctx.lineWidth = borderWidth;\r\n\r\n\t\t// Corner points, from bottom-left to bottom-right clockwise\r\n\t\t// | 1 2 |\r\n\t\t// | 0 3 |\r\n\t\tvar corners = [\r\n\t\t\t[left, bottom],\r\n\t\t\t[left, top],\r\n\t\t\t[right, top],\r\n\t\t\t[right, bottom]\r\n\t\t];\r\n\r\n\t\t// Find first (starting) corner with fallback to 'bottom'\r\n\t\tvar borders = ['bottom', 'left', 'top', 'right'];\r\n\t\tvar startCorner = borders.indexOf(borderSkipped, 0);\r\n\t\tif (startCorner === -1) {\r\n\t\t\tstartCorner = 0;\r\n\t\t}\r\n\r\n\t\tfunction cornerAt(index) {\r\n\t\t\treturn corners[(startCorner + index) % 4];\r\n\t\t}\r\n\r\n\t\t// Draw rectangle from 'startCorner'\r\n\t\tvar corner = cornerAt(0);\r\n\t\tctx.moveTo(corner[0], corner[1]);\r\n\r\n\t\tfor (var i = 1; i < 4; i++) {\r\n\t\t\tcorner = cornerAt(i);\r\n\t\t\tctx.lineTo(corner[0], corner[1]);\r\n\t\t}\r\n\r\n\t\tctx.fill();\r\n\t\tif (borderWidth) {\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t},\r\n\r\n\theight: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm.base - vm.y;\r\n\t},\r\n\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\tvar inRange = false;\r\n\r\n\t\tif (this._view) {\r\n\t\t\tvar bounds = getBarBounds(this);\r\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom;\r\n\t\t}\r\n\r\n\t\treturn inRange;\r\n\t},\r\n\r\n\tinLabelRange: function(mouseX, mouseY) {\r\n\t\tvar me = this;\r\n\t\tif (!me._view) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar inRange = false;\r\n\t\tvar bounds = getBarBounds(me);\r\n\r\n\t\tif (isVertical(me)) {\r\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right;\r\n\t\t} else {\r\n\t\t\tinRange = mouseY >= bounds.top && mouseY <= bounds.bottom;\r\n\t\t}\r\n\r\n\t\treturn inRange;\r\n\t},\r\n\r\n\tinXRange: function(mouseX) {\r\n\t\tvar bounds = getBarBounds(this);\r\n\t\treturn mouseX >= bounds.left && mouseX <= bounds.right;\r\n\t},\r\n\r\n\tinYRange: function(mouseY) {\r\n\t\tvar bounds = getBarBounds(this);\r\n\t\treturn mouseY >= bounds.top && mouseY <= bounds.bottom;\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar x, y;\r\n\t\tif (isVertical(this)) {\r\n\t\t\tx = vm.x;\r\n\t\t\ty = (vm.y + vm.base) / 2;\r\n\t\t} else {\r\n\t\t\tx = (vm.x + vm.base) / 2;\r\n\t\t\ty = vm.y;\r\n\t\t}\r\n\r\n\t\treturn {x: x, y: y};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm.width * Math.abs(vm.y - vm.base);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t}\r\n});\r\n\r\n},{\"26\":26,\"27\":27}],41:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = {};\r\nmodule.exports.Arc = require(37);\r\nmodule.exports.Line = require(38);\r\nmodule.exports.Point = require(39);\r\nmodule.exports.Rectangle = require(40);\r\n\r\n},{\"37\":37,\"38\":38,\"39\":39,\"40\":40}],42:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(43);\r\n\r\n/**\r\n * @namespace Chart.helpers.canvas\r\n */\r\nvar exports = module.exports = {\r\n\t/**\r\n\t * Clears the entire canvas associated to the given `chart`.\r\n\t * @param {Chart} chart - The chart for which to clear the canvas.\r\n\t */\r\n\tclear: function(chart) {\r\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\r\n\t},\r\n\r\n\t/**\r\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\r\n\t * given size (width, height) and the same `radius` for all corners.\r\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\r\n\t * @param {Number} x - The x axis of the coordinate for the rectangle starting point.\r\n\t * @param {Number} y - The y axis of the coordinate for the rectangle starting point.\r\n\t * @param {Number} width - The rectangle's width.\r\n\t * @param {Number} height - The rectangle's height.\r\n\t * @param {Number} radius - The rounded amount (in pixels) for the four corners.\r\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\r\n\t */\r\n\troundedRect: function(ctx, x, y, width, height, radius) {\r\n\t\tif (radius) {\r\n\t\t\t// NOTE(SB) `epsilon` helps to prevent minor artifacts appearing\r\n\t\t\t// on Chrome when `r` is exactly half the height or the width.\r\n\t\t\tvar epsilon = 0.0000001;\r\n\t\t\tvar r = Math.min(radius, (height / 2) - epsilon, (width / 2) - epsilon);\r\n\r\n\t\t\tctx.moveTo(x + r, y);\r\n\t\t\tctx.lineTo(x + width - r, y);\r\n\t\t\tctx.arcTo(x + width, y, x + width, y + r, r);\r\n\t\t\tctx.lineTo(x + width, y + height - r);\r\n\t\t\tctx.arcTo(x + width, y + height, x + width - r, y + height, r);\r\n\t\t\tctx.lineTo(x + r, y + height);\r\n\t\t\tctx.arcTo(x, y + height, x, y + height - r, r);\r\n\t\t\tctx.lineTo(x, y + r);\r\n\t\t\tctx.arcTo(x, y, x + r, y, r);\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t} else {\r\n\t\t\tctx.rect(x, y, width, height);\r\n\t\t}\r\n\t},\r\n\r\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\r\n\t\tvar type, edgeLength, xOffset, yOffset, height, size;\r\n\t\trotation = rotation || 0;\r\n\r\n\t\tif (style && typeof style === 'object') {\r\n\t\t\ttype = style.toString();\r\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\r\n\t\t\t\tctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isNaN(radius) || radius <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.translate(x, y);\r\n\t\tctx.rotate(rotation * Math.PI / 180);\r\n\t\tctx.beginPath();\r\n\r\n\t\tswitch (style) {\r\n\t\t// Default includes circle\r\n\t\tdefault:\r\n\t\t\tctx.arc(0, 0, radius, 0, Math.PI * 2);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'triangle':\r\n\t\t\tedgeLength = 3 * radius / Math.sqrt(3);\r\n\t\t\theight = edgeLength * Math.sqrt(3) / 2;\r\n\t\t\tctx.moveTo(-edgeLength / 2, height / 3);\r\n\t\t\tctx.lineTo(edgeLength / 2, height / 3);\r\n\t\t\tctx.lineTo(0, -2 * height / 3);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rect':\r\n\t\t\tsize = 1 / Math.SQRT2 * radius;\r\n\t\t\tctx.rect(-size, -size, 2 * size, 2 * size);\r\n\t\t\tbreak;\r\n\t\tcase 'rectRounded':\r\n\t\t\tvar offset = radius / Math.SQRT2;\r\n\t\t\tvar leftX = -offset;\r\n\t\t\tvar topY = -offset;\r\n\t\t\tvar sideSize = Math.SQRT2 * radius;\r\n\r\n\t\t\t// NOTE(SB) the rounded rect implementation changed to use `arcTo`\r\n\t\t\t// instead of `quadraticCurveTo` since it generates better results\r\n\t\t\t// when rect is almost a circle. 0.425 (instead of 0.5) produces\r\n\t\t\t// results visually closer to the previous impl.\r\n\t\t\tthis.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius * 0.425);\r\n\t\t\tbreak;\r\n\t\tcase 'rectRot':\r\n\t\t\tsize = 1 / Math.SQRT2 * radius;\r\n\t\t\tctx.moveTo(-size, 0);\r\n\t\t\tctx.lineTo(0, size);\r\n\t\t\tctx.lineTo(size, 0);\r\n\t\t\tctx.lineTo(0, -size);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'cross':\r\n\t\t\tctx.moveTo(0, radius);\r\n\t\t\tctx.lineTo(0, -radius);\r\n\t\t\tctx.moveTo(-radius, 0);\r\n\t\t\tctx.lineTo(radius, 0);\r\n\t\t\tbreak;\r\n\t\tcase 'crossRot':\r\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\r\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\r\n\t\t\tctx.moveTo(-xOffset, -yOffset);\r\n\t\t\tctx.lineTo(xOffset, yOffset);\r\n\t\t\tctx.moveTo(-xOffset, yOffset);\r\n\t\t\tctx.lineTo(xOffset, -yOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'star':\r\n\t\t\tctx.moveTo(0, radius);\r\n\t\t\tctx.lineTo(0, -radius);\r\n\t\t\tctx.moveTo(-radius, 0);\r\n\t\t\tctx.lineTo(radius, 0);\r\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\r\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\r\n\t\t\tctx.moveTo(-xOffset, -yOffset);\r\n\t\t\tctx.lineTo(xOffset, yOffset);\r\n\t\t\tctx.moveTo(-xOffset, yOffset);\r\n\t\t\tctx.lineTo(xOffset, -yOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'line':\r\n\t\t\tctx.moveTo(-radius, 0);\r\n\t\t\tctx.lineTo(radius, 0);\r\n\t\t\tbreak;\r\n\t\tcase 'dash':\r\n\t\t\tctx.moveTo(0, 0);\r\n\t\t\tctx.lineTo(radius, 0);\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tctx.fill();\r\n\t\tctx.stroke();\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tclipArea: function(ctx, area) {\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\r\n\t\tctx.clip();\r\n\t},\r\n\r\n\tunclipArea: function(ctx) {\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tlineTo: function(ctx, previous, target, flip) {\r\n\t\tif (target.steppedLine) {\r\n\t\t\tif ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) {\r\n\t\t\t\tctx.lineTo(previous.x, target.y);\r\n\t\t\t} else {\r\n\t\t\t\tctx.lineTo(target.x, previous.y);\r\n\t\t\t}\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!target.tension) {\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.bezierCurveTo(\r\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\r\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\r\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\r\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\r\n\t\t\ttarget.x,\r\n\t\t\ttarget.y);\r\n\t}\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\r\n * @namespace Chart.helpers.clear\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.clear = exports.clear;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\r\n * @namespace Chart.helpers.drawRoundedRectangle\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.drawRoundedRectangle = function(ctx) {\r\n\tctx.beginPath();\r\n\texports.roundedRect.apply(exports, arguments);\r\n};\r\n\r\n},{\"43\":43}],43:[function(require,module,exports){\r\n'use strict';\r\n\r\n/**\r\n * @namespace Chart.helpers\r\n */\r\nvar helpers = {\r\n\t/**\r\n\t * An empty function that can be used, for example, for optional callback.\r\n\t */\r\n\tnoop: function() {},\r\n\r\n\t/**\r\n\t * Returns a unique id, sequentially generated from a global variable.\r\n\t * @returns {Number}\r\n\t * @function\r\n\t */\r\n\tuid: (function() {\r\n\t\tvar id = 0;\r\n\t\treturn function() {\r\n\t\t\treturn id++;\r\n\t\t};\r\n\t}()),\r\n\r\n\t/**\r\n\t * Returns true if `value` is neither null nor undefined, else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {Boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisNullOrUndef: function(value) {\r\n\t\treturn value === null || typeof value === 'undefined';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an array, else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {Boolean}\r\n\t * @function\r\n\t */\r\n\tisArray: Array.isArray ? Array.isArray : function(value) {\r\n\t\treturn Object.prototype.toString.call(value) === '[object Array]';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an object (excluding null), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {Boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisObject: function(value) {\r\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns `value` if defined, else returns `defaultValue`.\r\n\t * @param {*} value - The value to return if defined.\r\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueOrDefault: function(value, defaultValue) {\r\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\r\n\t * @param {Array} value - The array to lookup for value at `index`.\r\n\t * @param {Number} index - The index in `value` to lookup for value.\r\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\r\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\r\n\t},\r\n\r\n\t/**\r\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\r\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\r\n\t * @param {Function} fn - The function to call.\r\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\r\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @returns {*}\r\n\t */\r\n\tcallback: function(fn, args, thisArg) {\r\n\t\tif (fn && typeof fn.call === 'function') {\r\n\t\t\treturn fn.apply(thisArg, args);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Note(SB) for performance sake, this method should only be used when loopable type\r\n\t * is unknown or in none intensive code (not called often and small loopable). Else\r\n\t * it's preferable to use a regular for() loop and save extra function calls.\r\n\t * @param {Object|Array} loopable - The object or array to be iterated.\r\n\t * @param {Function} fn - The function to call for each item.\r\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @param {Boolean} [reverse] - If true, iterates backward on the loopable.\r\n\t */\r\n\teach: function(loopable, fn, thisArg, reverse) {\r\n\t\tvar i, len, keys;\r\n\t\tif (helpers.isArray(loopable)) {\r\n\t\t\tlen = loopable.length;\r\n\t\t\tif (reverse) {\r\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (helpers.isObject(loopable)) {\r\n\t\t\tkeys = Object.keys(loopable);\r\n\t\t\tlen = keys.length;\r\n\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\r\n\t * @see http://stackoverflow.com/a/14853974\r\n\t * @param {Array} a0 - The array to compare\r\n\t * @param {Array} a1 - The array to compare\r\n\t * @returns {Boolean}\r\n\t */\r\n\tarrayEquals: function(a0, a1) {\r\n\t\tvar i, ilen, v0, v1;\r\n\r\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\r\n\t\t\tv0 = a0[i];\r\n\t\t\tv1 = a1[i];\r\n\r\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\r\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} else if (v0 !== v1) {\r\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\r\n\t * @param {*} source - The value to clone.\r\n\t * @returns {*}\r\n\t */\r\n\tclone: function(source) {\r\n\t\tif (helpers.isArray(source)) {\r\n\t\t\treturn source.map(helpers.clone);\r\n\t\t}\r\n\r\n\t\tif (helpers.isObject(source)) {\r\n\t\t\tvar target = {};\r\n\t\t\tvar keys = Object.keys(source);\r\n\t\t\tvar klen = keys.length;\r\n\t\t\tvar k = 0;\r\n\r\n\t\t\tfor (; k < klen; ++k) {\r\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\r\n\t\t\t}\r\n\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\treturn source;\r\n\t},\r\n\r\n\t/**\r\n\t * The default merger when Chart.helpers.merge is called without merger option.\r\n\t * Note(SB): this method is also used by configMerge and scaleMerge as fallback.\r\n\t * @private\r\n\t */\r\n\t_merger: function(key, target, source, options) {\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.merge(tval, sval, options);\r\n\t\t} else {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Merges source[key] in target[key] only if target[key] is undefined.\r\n\t * @private\r\n\t */\r\n\t_mergerIf: function(key, target, source) {\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.mergeIf(tval, sval);\r\n\t\t} else if (!target.hasOwnProperty(key)) {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {Object} target - The target object in which all sources are merged into.\r\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\r\n\t * @param {Object} [options] - Merging options:\r\n\t * @param {Function} [options.merger] - The merge method (key, target, source, options)\r\n\t * @returns {Object} The `target` object.\r\n\t */\r\n\tmerge: function(target, source, options) {\r\n\t\tvar sources = helpers.isArray(source) ? source : [source];\r\n\t\tvar ilen = sources.length;\r\n\t\tvar merge, i, keys, klen, k;\r\n\r\n\t\tif (!helpers.isObject(target)) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\toptions = options || {};\r\n\t\tmerge = options.merger || helpers._merger;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!helpers.isObject(source)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tkeys = Object.keys(source);\r\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\r\n\t\t\t\tmerge(keys[k], target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {Object} target - The target object in which all sources are merged into.\r\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\r\n\t * @returns {Object} The `target` object.\r\n\t */\r\n\tmergeIf: function(target, source) {\r\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\r\n\t},\r\n\r\n\t/**\r\n\t * Applies the contents of two or more objects together into the first object.\r\n\t * @param {Object} target - The target object in which all objects are merged into.\r\n\t * @param {Object} arg1 - Object containing additional properties to merge in target.\r\n\t * @param {Object} argN - Additional objects containing properties to merge in target.\r\n\t * @returns {Object} The `target` object.\r\n\t */\r\n\textend: function(target) {\r\n\t\tvar setFn = function(value, key) {\r\n\t\t\ttarget[key] = value;\r\n\t\t};\r\n\t\tfor (var i = 1, ilen = arguments.length; i < ilen; ++i) {\r\n\t\t\thelpers.each(arguments[i], setFn);\r\n\t\t}\r\n\t\treturn target;\r\n\t},\r\n\r\n\t/**\r\n\t * Basic javascript inheritance based on the model created in Backbone.js\r\n\t */\r\n\tinherits: function(extensions) {\r\n\t\tvar me = this;\r\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\r\n\t\t\treturn me.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tvar Surrogate = function() {\r\n\t\t\tthis.constructor = ChartElement;\r\n\t\t};\r\n\r\n\t\tSurrogate.prototype = me.prototype;\r\n\t\tChartElement.prototype = new Surrogate();\r\n\t\tChartElement.extend = helpers.inherits;\r\n\r\n\t\tif (extensions) {\r\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\r\n\t\t}\r\n\r\n\t\tChartElement.__super__ = me.prototype;\r\n\t\treturn ChartElement;\r\n\t}\r\n};\r\n\r\nmodule.exports = helpers;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.callback instead.\r\n * @function Chart.helpers.callCallback\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.callCallback = helpers.callback;\r\n\r\n/**\r\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\r\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\r\n * @function Chart.helpers.indexOf\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.indexOf = function(array, item, fromIndex) {\r\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\r\n};\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\r\n * @function Chart.helpers.getValueOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueOrDefault = helpers.valueOrDefault;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\r\n * @function Chart.helpers.getValueAtIndexOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\r\n\r\n},{}],44:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(43);\r\n\r\n/**\r\n * Easing functions adapted from Robert Penner's easing equations.\r\n * @namespace Chart.helpers.easingEffects\r\n * @see http://www.robertpenner.com/easing/\r\n */\r\nvar effects = {\r\n\tlinear: function(t) {\r\n\t\treturn t;\r\n\t},\r\n\r\n\teaseInQuad: function(t) {\r\n\t\treturn t * t;\r\n\t},\r\n\r\n\teaseOutQuad: function(t) {\r\n\t\treturn -t * (t - 2);\r\n\t},\r\n\r\n\teaseInOutQuad: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\r\n\t},\r\n\r\n\teaseInCubic: function(t) {\r\n\t\treturn t * t * t;\r\n\t},\r\n\r\n\teaseOutCubic: function(t) {\r\n\t\treturn (t = t - 1) * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutCubic: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\r\n\t},\r\n\r\n\teaseInQuart: function(t) {\r\n\t\treturn t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuart: function(t) {\r\n\t\treturn -((t = t - 1) * t * t * t - 1);\r\n\t},\r\n\r\n\teaseInOutQuart: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\r\n\t},\r\n\r\n\teaseInQuint: function(t) {\r\n\t\treturn t * t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuint: function(t) {\r\n\t\treturn (t = t - 1) * t * t * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutQuint: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\r\n\t},\r\n\r\n\teaseInSine: function(t) {\r\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\r\n\t},\r\n\r\n\teaseOutSine: function(t) {\r\n\t\treturn Math.sin(t * (Math.PI / 2));\r\n\t},\r\n\r\n\teaseInOutSine: function(t) {\r\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\r\n\t},\r\n\r\n\teaseInExpo: function(t) {\r\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\r\n\t},\r\n\r\n\teaseOutExpo: function(t) {\r\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\r\n\t},\r\n\r\n\teaseInOutExpo: function(t) {\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\r\n\t\t}\r\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\r\n\t},\r\n\r\n\teaseInCirc: function(t) {\r\n\t\tif (t >= 1) {\r\n\t\t\treturn t;\r\n\t\t}\r\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\r\n\t},\r\n\r\n\teaseOutCirc: function(t) {\r\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\r\n\t},\r\n\r\n\teaseInOutCirc: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\r\n\t\t}\r\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\r\n\t},\r\n\r\n\teaseInElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t},\r\n\r\n\teaseOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\r\n\t},\r\n\r\n\teaseInOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif ((t /= 0.5) === 2) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.45;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\tif (t < 1) {\r\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\r\n\t},\r\n\teaseInBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn t * t * ((s + 1) * t - s);\r\n\t},\r\n\r\n\teaseOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\r\n\t},\r\n\r\n\teaseInOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\r\n\t},\r\n\r\n\teaseInBounce: function(t) {\r\n\t\treturn 1 - effects.easeOutBounce(1 - t);\r\n\t},\r\n\r\n\teaseOutBounce: function(t) {\r\n\t\tif (t < (1 / 2.75)) {\r\n\t\t\treturn 7.5625 * t * t;\r\n\t\t}\r\n\t\tif (t < (2 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\r\n\t\t}\r\n\t\tif (t < (2.5 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\r\n\t\t}\r\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\r\n\t},\r\n\r\n\teaseInOutBounce: function(t) {\r\n\t\tif (t < 0.5) {\r\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\r\n\t\t}\r\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\r\n\t}\r\n};\r\n\r\nmodule.exports = {\r\n\teffects: effects\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\r\n * @function Chart.helpers.easingEffects\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.easingEffects = effects;\r\n\r\n},{\"43\":43}],45:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(43);\r\n\r\n/**\r\n * @alias Chart.helpers.options\r\n * @namespace\r\n */\r\nmodule.exports = {\r\n\t/**\r\n\t * Converts the given line height `value` in pixels for a specific font `size`.\r\n\t * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\r\n\t * @param {Number} size - The font size (in pixels) used to resolve relative `value`.\r\n\t * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid).\r\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoLineHeight: function(value, size) {\r\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\r\n\t\tif (!matches || matches[1] === 'normal') {\r\n\t\t\treturn size * 1.2;\r\n\t\t}\r\n\r\n\t\tvalue = +matches[2];\r\n\r\n\t\tswitch (matches[3]) {\r\n\t\tcase 'px':\r\n\t\t\treturn value;\r\n\t\tcase '%':\r\n\t\t\tvalue /= 100;\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn size * value;\r\n\t},\r\n\r\n\t/**\r\n\t * Converts the given value into a padding object with pre-computed width/height.\r\n\t * @param {Number|Object} value - If a number, set the value to all TRBL component,\r\n\t * else, if and object, use defined properties and sets undefined ones to 0.\r\n\t * @returns {Object} The padding values (top, right, bottom, left, width, height)\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoPadding: function(value) {\r\n\t\tvar t, r, b, l;\r\n\r\n\t\tif (helpers.isObject(value)) {\r\n\t\t\tt = +value.top || 0;\r\n\t\t\tr = +value.right || 0;\r\n\t\t\tb = +value.bottom || 0;\r\n\t\t\tl = +value.left || 0;\r\n\t\t} else {\r\n\t\t\tt = r = b = l = +value || 0;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop: t,\r\n\t\t\tright: r,\r\n\t\t\tbottom: b,\r\n\t\t\tleft: l,\r\n\t\t\theight: t + b,\r\n\t\t\twidth: l + r\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\r\n\t * @param {Array[]} inputs - An array of values, falling back to the last value.\r\n\t * @param {Object} [context] - If defined and the current value is a function, the value\r\n\t * is called with `context` as first argument and the result becomes the new input.\r\n\t * @param {Number} [index] - If defined and the current value is an array, the value\r\n\t * at `index` become the new input.\r\n\t * @since 2.7.0\r\n\t */\r\n\tresolve: function(inputs, context, index) {\r\n\t\tvar i, ilen, value;\r\n\r\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\r\n\t\t\tvalue = inputs[i];\r\n\t\t\tif (value === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (context !== undefined && typeof value === 'function') {\r\n\t\t\t\tvalue = value(context);\r\n\t\t\t}\r\n\t\t\tif (index !== undefined && helpers.isArray(value)) {\r\n\t\t\t\tvalue = value[index];\r\n\t\t\t}\r\n\t\t\tif (value !== undefined) {\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"43\":43}],46:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = require(43);\r\nmodule.exports.easing = require(44);\r\nmodule.exports.canvas = require(42);\r\nmodule.exports.options = require(45);\r\n\r\n},{\"42\":42,\"43\":43,\"44\":44,\"45\":45}],47:[function(require,module,exports){\r\n/**\r\n * Platform fallback implementation (minimal).\r\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\r\n */\r\n\r\nmodule.exports = {\r\n\tacquireContext: function(item) {\r\n\t\tif (item && item.canvas) {\r\n\t\t\t// Support for any object associated to a canvas (including a context2d)\r\n\t\t\titem = item.canvas;\r\n\t\t}\r\n\r\n\t\treturn item && item.getContext('2d') || null;\r\n\t}\r\n};\r\n\r\n},{}],48:[function(require,module,exports){\r\n/**\r\n * Chart.Platform implementation for targeting a web browser\r\n */\r\n\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\nvar EXPANDO_KEY = '$chartjs';\r\nvar CSS_PREFIX = 'chartjs-';\r\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\r\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\r\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\r\n\r\n/**\r\n * DOM event types -> Chart.js event types.\r\n * Note: only events with different types are mapped.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\r\n */\r\nvar EVENT_TYPES = {\r\n\ttouchstart: 'mousedown',\r\n\ttouchmove: 'mousemove',\r\n\ttouchend: 'mouseup',\r\n\tpointerenter: 'mouseenter',\r\n\tpointerdown: 'mousedown',\r\n\tpointermove: 'mousemove',\r\n\tpointerup: 'mouseup',\r\n\tpointerleave: 'mouseout',\r\n\tpointerout: 'mouseout'\r\n};\r\n\r\n/**\r\n * The \"used\" size is the final value of a dimension property after all calculations have\r\n * been performed. This method uses the computed style of `element` but returns undefined\r\n * if the computed style is not expressed in pixels. That can happen in some cases where\r\n * `element` has a size relative to its parent and this last one is not yet displayed,\r\n * for example because of `display: none` on a parent node.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\r\n * @returns {Number} Size in pixels or undefined if unknown.\r\n */\r\nfunction readUsedSize(element, property) {\r\n\tvar value = helpers.getStyle(element, property);\r\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\r\n\treturn matches ? Number(matches[1]) : undefined;\r\n}\r\n\r\n/**\r\n * Initializes the canvas style and render size without modifying the canvas display size,\r\n * since responsiveness is handled by the controller.resize() method. The config is used\r\n * to determine the aspect ratio to apply in case no explicit height has been specified.\r\n */\r\nfunction initCanvas(canvas, config) {\r\n\tvar style = canvas.style;\r\n\r\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\r\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\r\n\tvar renderHeight = canvas.getAttribute('height');\r\n\tvar renderWidth = canvas.getAttribute('width');\r\n\r\n\t// Chart.js modifies some canvas values that we want to restore on destroy\r\n\tcanvas[EXPANDO_KEY] = {\r\n\t\tinitial: {\r\n\t\t\theight: renderHeight,\r\n\t\t\twidth: renderWidth,\r\n\t\t\tstyle: {\r\n\t\t\t\tdisplay: style.display,\r\n\t\t\t\theight: style.height,\r\n\t\t\t\twidth: style.width\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Force canvas to display as block to avoid extra space caused by inline\r\n\t// elements, which would interfere with the responsive resize process.\r\n\t// https://github.com/chartjs/Chart.js/issues/2538\r\n\tstyle.display = style.display || 'block';\r\n\r\n\tif (renderWidth === null || renderWidth === '') {\r\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\r\n\t\tif (displayWidth !== undefined) {\r\n\t\t\tcanvas.width = displayWidth;\r\n\t\t}\r\n\t}\r\n\r\n\tif (renderHeight === null || renderHeight === '') {\r\n\t\tif (canvas.style.height === '') {\r\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\r\n\t\t\t// which one can be specified by the user but also by charts as default option\r\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\r\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\r\n\t\t} else {\r\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\r\n\t\t\tif (displayWidth !== undefined) {\r\n\t\t\t\tcanvas.height = displayHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn canvas;\r\n}\r\n\r\n/**\r\n * Detects support for options object argument in addEventListener.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\r\n * @private\r\n */\r\nvar supportsEventListenerOptions = (function() {\r\n\tvar supports = false;\r\n\ttry {\r\n\t\tvar options = Object.defineProperty({}, 'passive', {\r\n\t\t\tget: function() {\r\n\t\t\t\tsupports = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\twindow.addEventListener('e', null, options);\r\n\t} catch (e) {\r\n\t\t// continue regardless of error\r\n\t}\r\n\treturn supports;\r\n}());\r\n\r\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\r\n// https://github.com/chartjs/Chart.js/issues/4287\r\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\r\n\r\nfunction addEventListener(node, type, listener) {\r\n\tnode.addEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction removeEventListener(node, type, listener) {\r\n\tnode.removeEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction createEvent(type, chart, x, y, nativeEvent) {\r\n\treturn {\r\n\t\ttype: type,\r\n\t\tchart: chart,\r\n\t\tnative: nativeEvent || null,\r\n\t\tx: x !== undefined ? x : null,\r\n\t\ty: y !== undefined ? y : null,\r\n\t};\r\n}\r\n\r\nfunction fromNativeEvent(event, chart) {\r\n\tvar type = EVENT_TYPES[event.type] || event.type;\r\n\tvar pos = helpers.getRelativePosition(event, chart);\r\n\treturn createEvent(type, chart, pos.x, pos.y, event);\r\n}\r\n\r\nfunction throttled(fn, thisArg) {\r\n\tvar ticking = false;\r\n\tvar args = [];\r\n\r\n\treturn function() {\r\n\t\targs = Array.prototype.slice.call(arguments);\r\n\t\tthisArg = thisArg || this;\r\n\r\n\t\tif (!ticking) {\r\n\t\t\tticking = true;\r\n\t\t\thelpers.requestAnimFrame.call(window, function() {\r\n\t\t\t\tticking = false;\r\n\t\t\t\tfn.apply(thisArg, args);\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n}\r\n\r\n// Implementation based on https://github.com/marcj/css-element-queries\r\nfunction createResizer(handler) {\r\n\tvar resizer = document.createElement('div');\r\n\tvar cls = CSS_PREFIX + 'size-monitor';\r\n\tvar maxSize = 1000000;\r\n\tvar style =\r\n\t\t'position:absolute;' +\r\n\t\t'left:0;' +\r\n\t\t'top:0;' +\r\n\t\t'right:0;' +\r\n\t\t'bottom:0;' +\r\n\t\t'overflow:hidden;' +\r\n\t\t'pointer-events:none;' +\r\n\t\t'visibility:hidden;' +\r\n\t\t'z-index:-1;';\r\n\r\n\tresizer.style.cssText = style;\r\n\tresizer.className = cls;\r\n\tresizer.innerHTML =\r\n\t\t'
      ' +\r\n\t\t\t'
      ' +\r\n\t\t\t'
      ' +\r\n\t\t'
      ' +\r\n\t\t'
      ' +\r\n\t\t\t'
      ' +\r\n\t\t\t'
      ' +\r\n\t\t'
      ';\r\n\r\n\tvar expand = resizer.childNodes[0];\r\n\tvar shrink = resizer.childNodes[1];\r\n\r\n\tresizer._reset = function() {\r\n\t\texpand.scrollLeft = maxSize;\r\n\t\texpand.scrollTop = maxSize;\r\n\t\tshrink.scrollLeft = maxSize;\r\n\t\tshrink.scrollTop = maxSize;\r\n\t};\r\n\tvar onScroll = function() {\r\n\t\tresizer._reset();\r\n\t\thandler();\r\n\t};\r\n\r\n\taddEventListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\r\n\taddEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\r\n\r\n\treturn resizer;\r\n}\r\n\r\n// https://davidwalsh.name/detect-node-insertion\r\nfunction watchForRender(node, handler) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\tvar proxy = expando.renderProxy = function(e) {\r\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\r\n\t\t\thandler();\r\n\t\t}\r\n\t};\r\n\r\n\thelpers.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\taddEventListener(node, type, proxy);\r\n\t});\r\n\r\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\r\n\t// is removed then added back immediately (same animation frame?). Accessing the\r\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\r\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\r\n\t// https://github.com/chartjs/Chart.js/issues/4737\r\n\texpando.reflow = !!node.offsetParent;\r\n\r\n\tnode.classList.add(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction unwatchForRender(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar proxy = expando.renderProxy;\r\n\r\n\tif (proxy) {\r\n\t\thelpers.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\t\tremoveEventListener(node, type, proxy);\r\n\t\t});\r\n\r\n\t\tdelete expando.renderProxy;\r\n\t}\r\n\r\n\tnode.classList.remove(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction addResizeListener(node, listener, chart) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\r\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\r\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\treturn listener(createEvent('resize', chart));\r\n\t\t}\r\n\t}));\r\n\r\n\t// The resizer needs to be attached to the node parent, so we first need to be\r\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\r\n\twatchForRender(node, function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\tvar container = node.parentNode;\r\n\t\t\tif (container && container !== resizer.parentNode) {\r\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\r\n\t\t\t}\r\n\r\n\t\t\t// The container size might have changed, let's reset the resizer state.\r\n\t\t\tresizer._reset();\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction removeResizeListener(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar resizer = expando.resizer;\r\n\r\n\tdelete expando.resizer;\r\n\tunwatchForRender(node);\r\n\r\n\tif (resizer && resizer.parentNode) {\r\n\t\tresizer.parentNode.removeChild(resizer);\r\n\t}\r\n}\r\n\r\nfunction injectCSS(platform, css) {\r\n\t// http://stackoverflow.com/q/3922139\r\n\tvar style = platform._style || document.createElement('style');\r\n\tif (!platform._style) {\r\n\t\tplatform._style = style;\r\n\t\tcss = '/* Chart.js */\\n' + css;\r\n\t\tstyle.setAttribute('type', 'text/css');\r\n\t\tdocument.getElementsByTagName('head')[0].appendChild(style);\r\n\t}\r\n\r\n\tstyle.appendChild(document.createTextNode(css));\r\n}\r\n\r\nmodule.exports = {\r\n\t/**\r\n\t * This property holds whether this platform is enabled for the current environment.\r\n\t * Currently used by platform.js to select the proper implementation.\r\n\t * @private\r\n\t */\r\n\t_enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\r\n\r\n\tinitialize: function() {\r\n\t\tvar keyframes = 'from{opacity:0.99}to{opacity:1}';\r\n\r\n\t\tinjectCSS(this,\r\n\t\t\t// DOM rendering detection\r\n\t\t\t// https://davidwalsh.name/detect-node-insertion\r\n\t\t\t'@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\r\n\t\t\t'@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\r\n\t\t\t'.' + CSS_RENDER_MONITOR + '{' +\r\n\t\t\t\t'-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\r\n\t\t\t\t'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\r\n\t\t\t'}'\r\n\t\t);\r\n\t},\r\n\r\n\tacquireContext: function(item, config) {\r\n\t\tif (typeof item === 'string') {\r\n\t\t\titem = document.getElementById(item);\r\n\t\t} else if (item.length) {\r\n\t\t\t// Support for array based queries (such as jQuery)\r\n\t\t\titem = item[0];\r\n\t\t}\r\n\r\n\t\tif (item && item.canvas) {\r\n\t\t\t// Support for any object associated to a canvas (including a context2d)\r\n\t\t\titem = item.canvas;\r\n\t\t}\r\n\r\n\t\t// To prevent canvas fingerprinting, some add-ons undefine the getContext\r\n\t\t// method, for example: https://github.com/kkapsner/CanvasBlocker\r\n\t\t// https://github.com/chartjs/Chart.js/issues/2807\r\n\t\tvar context = item && item.getContext && item.getContext('2d');\r\n\r\n\t\t// `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\r\n\t\t// inside an iframe or when running in a protected environment. We could guess the\r\n\t\t// types from their toString() value but let's keep things flexible and assume it's\r\n\t\t// a sufficient condition if the item has a context2D which has item as `canvas`.\r\n\t\t// https://github.com/chartjs/Chart.js/issues/3887\r\n\t\t// https://github.com/chartjs/Chart.js/issues/4102\r\n\t\t// https://github.com/chartjs/Chart.js/issues/4152\r\n\t\tif (context && context.canvas === item) {\r\n\t\t\tinitCanvas(item, config);\r\n\t\t\treturn context;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\treleaseContext: function(context) {\r\n\t\tvar canvas = context.canvas;\r\n\t\tif (!canvas[EXPANDO_KEY]) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar initial = canvas[EXPANDO_KEY].initial;\r\n\t\t['height', 'width'].forEach(function(prop) {\r\n\t\t\tvar value = initial[prop];\r\n\t\t\tif (helpers.isNullOrUndef(value)) {\r\n\t\t\t\tcanvas.removeAttribute(prop);\r\n\t\t\t} else {\r\n\t\t\t\tcanvas.setAttribute(prop, value);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers.each(initial.style || {}, function(value, key) {\r\n\t\t\tcanvas.style[key] = value;\r\n\t\t});\r\n\r\n\t\t// The canvas render size might have been changed (and thus the state stack discarded),\r\n\t\t// we can't use save() and restore() to restore the initial state. So make sure that at\r\n\t\t// least the canvas context is reset to the default state by setting the canvas width.\r\n\t\t// https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\r\n\t\tcanvas.width = canvas.width;\r\n\r\n\t\tdelete canvas[EXPANDO_KEY];\r\n\t},\r\n\r\n\taddEventListener: function(chart, type, listener) {\r\n\t\tvar canvas = chart.canvas;\r\n\t\tif (type === 'resize') {\r\n\t\t\t// Note: the resize event is not supported on all browsers.\r\n\t\t\taddResizeListener(canvas, listener, chart);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\r\n\t\tvar proxies = expando.proxies || (expando.proxies = {});\r\n\t\tvar proxy = proxies[chart.id + '_' + type] = function(event) {\r\n\t\t\tlistener(fromNativeEvent(event, chart));\r\n\t\t};\r\n\r\n\t\taddEventListener(canvas, type, proxy);\r\n\t},\r\n\r\n\tremoveEventListener: function(chart, type, listener) {\r\n\t\tvar canvas = chart.canvas;\r\n\t\tif (type === 'resize') {\r\n\t\t\t// Note: the resize event is not supported on all browsers.\r\n\t\t\tremoveResizeListener(canvas, listener);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar expando = listener[EXPANDO_KEY] || {};\r\n\t\tvar proxies = expando.proxies || {};\r\n\t\tvar proxy = proxies[chart.id + '_' + type];\r\n\t\tif (!proxy) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tremoveEventListener(canvas, type, proxy);\r\n\t}\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use EventTarget.addEventListener instead.\r\n * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\r\n * @function Chart.helpers.addEvent\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.addEvent = addEventListener;\r\n\r\n/**\r\n * Provided for backward compatibility, use EventTarget.removeEventListener instead.\r\n * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\r\n * @function Chart.helpers.removeEvent\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.removeEvent = removeEventListener;\r\n\r\n},{\"46\":46}],49:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\nvar basic = require(47);\r\nvar dom = require(48);\r\n\r\n// @TODO Make possible to select another platform at build time.\r\nvar implementation = dom._enabled ? dom : basic;\r\n\r\n/**\r\n * @namespace Chart.platform\r\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\r\n * @since 2.4.0\r\n */\r\nmodule.exports = helpers.extend({\r\n\t/**\r\n\t * @since 2.7.0\r\n\t */\r\n\tinitialize: function() {},\r\n\r\n\t/**\r\n\t * Called at chart construction time, returns a context2d instance implementing\r\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\r\n\t * @param {*} item - The native item from which to acquire context (platform specific)\r\n\t * @param {Object} options - The chart options\r\n\t * @returns {CanvasRenderingContext2D} context2d instance\r\n\t */\r\n\tacquireContext: function() {},\r\n\r\n\t/**\r\n\t * Called at chart destruction time, releases any resources associated to the context\r\n\t * previously returned by the acquireContext() method.\r\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\r\n\t * @returns {Boolean} true if the method succeeded, else false\r\n\t */\r\n\treleaseContext: function() {},\r\n\r\n\t/**\r\n\t * Registers the specified listener on the given chart.\r\n\t * @param {Chart} chart - Chart from which to listen for event\r\n\t * @param {String} type - The ({@link IEvent}) type to listen for\r\n\t * @param {Function} listener - Receives a notification (an object that implements\r\n\t * the {@link IEvent} interface) when an event of the specified type occurs.\r\n\t */\r\n\taddEventListener: function() {},\r\n\r\n\t/**\r\n\t * Removes the specified listener previously registered with addEventListener.\r\n\t * @param {Chart} chart -Chart from which to remove the listener\r\n\t * @param {String} type - The ({@link IEvent}) type to remove\r\n\t * @param {Function} listener - The listener function to remove from the event target.\r\n\t */\r\n\tremoveEventListener: function() {}\r\n\r\n}, implementation);\r\n\r\n/**\r\n * @interface IPlatform\r\n * Allows abstracting platform dependencies away from the chart\r\n * @borrows Chart.platform.acquireContext as acquireContext\r\n * @borrows Chart.platform.releaseContext as releaseContext\r\n * @borrows Chart.platform.addEventListener as addEventListener\r\n * @borrows Chart.platform.removeEventListener as removeEventListener\r\n */\r\n\r\n/**\r\n * @interface IEvent\r\n * @prop {String} type - The event type name, possible values are:\r\n * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout',\r\n * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize'\r\n * @prop {*} native - The original native event (null for emulated events, e.g. 'resize')\r\n * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events)\r\n * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events)\r\n */\r\n\r\n},{\"46\":46,\"47\":47,\"48\":48}],50:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = {};\r\nmodule.exports.filler = require(51);\r\nmodule.exports.legend = require(52);\r\nmodule.exports.title = require(53);\r\n\r\n},{\"51\":51,\"52\":52,\"53\":53}],51:[function(require,module,exports){\r\n/**\r\n * Plugin based on discussion from the following Chart.js issues:\r\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\r\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\r\n */\r\n\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('global', {\r\n\tplugins: {\r\n\t\tfiller: {\r\n\t\t\tpropagate: true\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar mappers = {\r\n\tdataset: function(source) {\r\n\t\tvar index = source.fill;\r\n\t\tvar chart = source.chart;\r\n\t\tvar meta = chart.getDatasetMeta(index);\r\n\t\tvar visible = meta && chart.isDatasetVisible(index);\r\n\t\tvar points = (visible && meta.dataset._children) || [];\r\n\t\tvar length = points.length || 0;\r\n\r\n\t\treturn !length ? null : function(point, i) {\r\n\t\t\treturn (i < length && points[i]._view) || null;\r\n\t\t};\r\n\t},\r\n\r\n\tboundary: function(source) {\r\n\t\tvar boundary = source.boundary;\r\n\t\tvar x = boundary ? boundary.x : null;\r\n\t\tvar y = boundary ? boundary.y : null;\r\n\r\n\t\treturn function(point) {\r\n\t\t\treturn {\r\n\t\t\t\tx: x === null ? point.x : x,\r\n\t\t\t\ty: y === null ? point.y : y,\r\n\t\t\t};\r\n\t\t};\r\n\t}\r\n};\r\n\r\n// @todo if (fill[0] === '#')\r\nfunction decodeFill(el, index, count) {\r\n\tvar model = el._model || {};\r\n\tvar fill = model.fill;\r\n\tvar target;\r\n\r\n\tif (fill === undefined) {\r\n\t\tfill = !!model.backgroundColor;\r\n\t}\r\n\r\n\tif (fill === false || fill === null) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tif (fill === true) {\r\n\t\treturn 'origin';\r\n\t}\r\n\r\n\ttarget = parseFloat(fill, 10);\r\n\tif (isFinite(target) && Math.floor(target) === target) {\r\n\t\tif (fill[0] === '-' || fill[0] === '+') {\r\n\t\t\ttarget = index + target;\r\n\t\t}\r\n\r\n\t\tif (target === index || target < 0 || target >= count) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t}\r\n\r\n\tswitch (fill) {\r\n\t// compatibility\r\n\tcase 'bottom':\r\n\t\treturn 'start';\r\n\tcase 'top':\r\n\t\treturn 'end';\r\n\tcase 'zero':\r\n\t\treturn 'origin';\r\n\t// supported boundaries\r\n\tcase 'origin':\r\n\tcase 'start':\r\n\tcase 'end':\r\n\t\treturn fill;\r\n\t// invalid fill values\r\n\tdefault:\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction computeBoundary(source) {\r\n\tvar model = source.el._model || {};\r\n\tvar scale = source.el._scale || {};\r\n\tvar fill = source.fill;\r\n\tvar target = null;\r\n\tvar horizontal;\r\n\r\n\tif (isFinite(fill)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\t// Backward compatibility: until v3, we still need to support boundary values set on\r\n\t// the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\r\n\t// controllers might still use it (e.g. the Smith chart).\r\n\r\n\tif (fill === 'start') {\r\n\t\ttarget = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\r\n\t} else if (fill === 'end') {\r\n\t\ttarget = model.scaleTop === undefined ? scale.top : model.scaleTop;\r\n\t} else if (model.scaleZero !== undefined) {\r\n\t\ttarget = model.scaleZero;\r\n\t} else if (scale.getBasePosition) {\r\n\t\ttarget = scale.getBasePosition();\r\n\t} else if (scale.getBasePixel) {\r\n\t\ttarget = scale.getBasePixel();\r\n\t}\r\n\r\n\tif (target !== undefined && target !== null) {\r\n\t\tif (target.x !== undefined && target.y !== undefined) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\tif (typeof target === 'number' && isFinite(target)) {\r\n\t\t\thorizontal = scale.isHorizontal();\r\n\t\t\treturn {\r\n\t\t\t\tx: horizontal ? target : null,\r\n\t\t\t\ty: horizontal ? null : target\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n\r\nfunction resolveTarget(sources, index, propagate) {\r\n\tvar source = sources[index];\r\n\tvar fill = source.fill;\r\n\tvar visited = [index];\r\n\tvar target;\r\n\r\n\tif (!propagate) {\r\n\t\treturn fill;\r\n\t}\r\n\r\n\twhile (fill !== false && visited.indexOf(fill) === -1) {\r\n\t\tif (!isFinite(fill)) {\r\n\t\t\treturn fill;\r\n\t\t}\r\n\r\n\t\ttarget = sources[fill];\r\n\t\tif (!target) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (target.visible) {\r\n\t\t\treturn fill;\r\n\t\t}\r\n\r\n\t\tvisited.push(fill);\r\n\t\tfill = target.fill;\r\n\t}\r\n\r\n\treturn false;\r\n}\r\n\r\nfunction createMapper(source) {\r\n\tvar fill = source.fill;\r\n\tvar type = 'dataset';\r\n\r\n\tif (fill === false) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (!isFinite(fill)) {\r\n\t\ttype = 'boundary';\r\n\t}\r\n\r\n\treturn mappers[type](source);\r\n}\r\n\r\nfunction isDrawable(point) {\r\n\treturn point && !point.skip;\r\n}\r\n\r\nfunction drawArea(ctx, curve0, curve1, len0, len1) {\r\n\tvar i;\r\n\r\n\tif (!len0 || !len1) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// building first area curve (normal)\r\n\tctx.moveTo(curve0[0].x, curve0[0].y);\r\n\tfor (i = 1; i < len0; ++i) {\r\n\t\thelpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\r\n\t}\r\n\r\n\t// joining the two area curves\r\n\tctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\r\n\r\n\t// building opposite area curve (reverse)\r\n\tfor (i = len1 - 1; i > 0; --i) {\r\n\t\thelpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\r\n\t}\r\n}\r\n\r\nfunction doFill(ctx, points, mapper, view, color, loop) {\r\n\tvar count = points.length;\r\n\tvar span = view.spanGaps;\r\n\tvar curve0 = [];\r\n\tvar curve1 = [];\r\n\tvar len0 = 0;\r\n\tvar len1 = 0;\r\n\tvar i, ilen, index, p0, p1, d0, d1;\r\n\r\n\tctx.beginPath();\r\n\r\n\tfor (i = 0, ilen = (count + !!loop); i < ilen; ++i) {\r\n\t\tindex = i % count;\r\n\t\tp0 = points[index]._view;\r\n\t\tp1 = mapper(p0, index, view);\r\n\t\td0 = isDrawable(p0);\r\n\t\td1 = isDrawable(p1);\r\n\r\n\t\tif (d0 && d1) {\r\n\t\t\tlen0 = curve0.push(p0);\r\n\t\t\tlen1 = curve1.push(p1);\r\n\t\t} else if (len0 && len1) {\r\n\t\t\tif (!span) {\r\n\t\t\t\tdrawArea(ctx, curve0, curve1, len0, len1);\r\n\t\t\t\tlen0 = len1 = 0;\r\n\t\t\t\tcurve0 = [];\r\n\t\t\t\tcurve1 = [];\r\n\t\t\t} else {\r\n\t\t\t\tif (d0) {\r\n\t\t\t\t\tcurve0.push(p0);\r\n\t\t\t\t}\r\n\t\t\t\tif (d1) {\r\n\t\t\t\t\tcurve1.push(p1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdrawArea(ctx, curve0, curve1, len0, len1);\r\n\r\n\tctx.closePath();\r\n\tctx.fillStyle = color;\r\n\tctx.fill();\r\n}\r\n\r\nmodule.exports = {\r\n\tid: 'filler',\r\n\r\n\tafterDatasetsUpdate: function(chart, options) {\r\n\t\tvar count = (chart.data.datasets || []).length;\r\n\t\tvar propagate = options.propagate;\r\n\t\tvar sources = [];\r\n\t\tvar meta, i, el, source;\r\n\r\n\t\tfor (i = 0; i < count; ++i) {\r\n\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\tel = meta.dataset;\r\n\t\t\tsource = null;\r\n\r\n\t\t\tif (el && el._model && el instanceof elements.Line) {\r\n\t\t\t\tsource = {\r\n\t\t\t\t\tvisible: chart.isDatasetVisible(i),\r\n\t\t\t\t\tfill: decodeFill(el, i, count),\r\n\t\t\t\t\tchart: chart,\r\n\t\t\t\t\tel: el\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tmeta.$filler = source;\r\n\t\t\tsources.push(source);\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < count; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!source) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tsource.fill = resolveTarget(sources, i, propagate);\r\n\t\t\tsource.boundary = computeBoundary(source);\r\n\t\t\tsource.mapper = createMapper(source);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeDatasetDraw: function(chart, args) {\r\n\t\tvar meta = args.meta.$filler;\r\n\t\tif (!meta) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar ctx = chart.ctx;\r\n\t\tvar el = meta.el;\r\n\t\tvar view = el._view;\r\n\t\tvar points = el._children || [];\r\n\t\tvar mapper = meta.mapper;\r\n\t\tvar color = view.backgroundColor || defaults.global.defaultColor;\r\n\r\n\t\tif (mapper && color && points.length) {\r\n\t\t\thelpers.canvas.clipArea(ctx, chart.chartArea);\r\n\t\t\tdoFill(ctx, points, mapper, view, color, el._loop);\r\n\t\t\thelpers.canvas.unclipArea(ctx);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],52:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\nvar layouts = require(31);\r\n\r\nvar noop = helpers.noop;\r\n\r\ndefaults._set('global', {\r\n\tlegend: {\r\n\t\tdisplay: true,\r\n\t\tposition: 'top',\r\n\t\tfullWidth: true,\r\n\t\treverse: false,\r\n\t\tweight: 1000,\r\n\r\n\t\t// a callback that will handle\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.datasetIndex;\r\n\t\t\tvar ci = this.chart;\r\n\t\t\tvar meta = ci.getDatasetMeta(index);\r\n\r\n\t\t\t// See controller.isDatasetVisible comment\r\n\t\t\tmeta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\r\n\r\n\t\t\t// We hid a dataset ... rerender the chart\r\n\t\t\tci.update();\r\n\t\t},\r\n\r\n\t\tonHover: null,\r\n\r\n\t\tlabels: {\r\n\t\t\tboxWidth: 40,\r\n\t\t\tpadding: 10,\r\n\t\t\t// Generates labels shown in the legend\r\n\t\t\t// Valid properties to return:\r\n\t\t\t// text : text to display\r\n\t\t\t// fillStyle : fill of coloured box\r\n\t\t\t// strokeStyle: stroke of coloured box\r\n\t\t\t// hidden : if this legend item refers to a hidden item\r\n\t\t\t// lineCap : cap style for line\r\n\t\t\t// lineDash\r\n\t\t\t// lineDashOffset :\r\n\t\t\t// lineJoin :\r\n\t\t\t// lineWidth :\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\treturn helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttext: dataset.label,\r\n\t\t\t\t\t\tfillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]),\r\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(i),\r\n\t\t\t\t\t\tlineCap: dataset.borderCapStyle,\r\n\t\t\t\t\t\tlineDash: dataset.borderDash,\r\n\t\t\t\t\t\tlineDashOffset: dataset.borderDashOffset,\r\n\t\t\t\t\t\tlineJoin: dataset.borderJoinStyle,\r\n\t\t\t\t\t\tlineWidth: dataset.borderWidth,\r\n\t\t\t\t\t\tstrokeStyle: dataset.borderColor,\r\n\t\t\t\t\t\tpointStyle: dataset.pointStyle,\r\n\r\n\t\t\t\t\t\t// Below is extra data used for toggling the datasets\r\n\t\t\t\t\t\tdatasetIndex: i\r\n\t\t\t\t\t};\r\n\t\t\t\t}, this) : [];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tlegendCallback: function(chart) {\r\n\t\tvar text = [];\r\n\t\ttext.push('
        ');\r\n\t\tfor (var i = 0; i < chart.data.datasets.length; i++) {\r\n\t\t\ttext.push('
      • ');\r\n\t\t\tif (chart.data.datasets[i].label) {\r\n\t\t\t\ttext.push(chart.data.datasets[i].label);\r\n\t\t\t}\r\n\t\t\ttext.push('
      • ');\r\n\t\t}\r\n\t\ttext.push('
      ');\r\n\t\treturn text.join('');\r\n\t}\r\n});\r\n\r\n/**\r\n * Helper function to get the box width based on the usePointStyle option\r\n * @param labelopts {Object} the label options on the legend\r\n * @param fontSize {Number} the label font size\r\n * @return {Number} width of the color box area\r\n */\r\nfunction getBoxWidth(labelOpts, fontSize) {\r\n\treturn labelOpts.usePointStyle ?\r\n\t\tfontSize * Math.SQRT2 :\r\n\t\tlabelOpts.boxWidth;\r\n}\r\n\r\n/**\r\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\r\n */\r\nvar Legend = Element.extend({\r\n\r\n\tinitialize: function(config) {\r\n\t\thelpers.extend(this, config);\r\n\r\n\t\t// Contains hit boxes for each dataset (in dataset order)\r\n\t\tthis.legendHitBoxes = [];\r\n\r\n\t\t// Are we in doughnut mode which has a different data type\r\n\t\tthis.doughnutMode = false;\r\n\t},\r\n\r\n\t// These methods are ordered by lifecycle. Utilities then follow.\r\n\t// Any function defined here is inherited by all legend types.\r\n\t// Any function can be extended by the legend type\r\n\r\n\tbeforeUpdate: noop,\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = margins;\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\t\t// Labels\r\n\t\tme.beforeBuildLabels();\r\n\t\tme.buildLabels();\r\n\t\tme.afterBuildLabels();\r\n\r\n\t\t// Fit\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\t\t//\r\n\t\tme.afterUpdate();\r\n\r\n\t\treturn me.minSize;\r\n\t},\r\n\tafterUpdate: noop,\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: noop,\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\r\n\t\t// Reset minSize\r\n\t\tme.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\t},\r\n\tafterSetDimensions: noop,\r\n\r\n\t//\r\n\r\n\tbeforeBuildLabels: noop,\r\n\tbuildLabels: function() {\r\n\t\tvar me = this;\r\n\t\tvar labelOpts = me.options.labels || {};\r\n\t\tvar legendItems = helpers.callback(labelOpts.generateLabels, [me.chart], me) || [];\r\n\r\n\t\tif (labelOpts.filter) {\r\n\t\t\tlegendItems = legendItems.filter(function(item) {\r\n\t\t\t\treturn labelOpts.filter(item, me.chart.data);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (me.options.reverse) {\r\n\t\t\tlegendItems.reverse();\r\n\t\t}\r\n\r\n\t\tme.legendItems = legendItems;\r\n\t},\r\n\tafterBuildLabels: noop,\r\n\r\n\t//\r\n\r\n\tbeforeFit: noop,\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar labelOpts = opts.labels;\r\n\t\tvar display = opts.display;\r\n\r\n\t\tvar ctx = me.ctx;\r\n\r\n\t\tvar globalDefault = defaults.global;\r\n\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\r\n\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\r\n\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\r\n\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\r\n\r\n\t\t// Reset hit boxes\r\n\t\tvar hitboxes = me.legendHitBoxes = [];\r\n\r\n\t\tvar minSize = me.minSize;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\tminSize.width = me.maxWidth; // fill all the width\r\n\t\t\tminSize.height = display ? 10 : 0;\r\n\t\t} else {\r\n\t\t\tminSize.width = display ? 10 : 0;\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t}\r\n\r\n\t\t// Increase sizes here\r\n\t\tif (display) {\r\n\t\t\tctx.font = labelFont;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\t// Labels\r\n\r\n\t\t\t\t// Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\r\n\t\t\t\tvar lineWidths = me.lineWidths = [0];\r\n\t\t\t\tvar totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0;\r\n\r\n\t\t\t\tctx.textAlign = 'left';\r\n\t\t\t\tctx.textBaseline = 'top';\r\n\r\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\r\n\r\n\t\t\t\t\tif (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) {\r\n\t\t\t\t\t\ttotalHeight += fontSize + (labelOpts.padding);\r\n\t\t\t\t\t\tlineWidths[lineWidths.length] = me.left;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\r\n\t\t\t\t\thitboxes[i] = {\r\n\t\t\t\t\t\tleft: 0,\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\twidth: width,\r\n\t\t\t\t\t\theight: fontSize\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tminSize.height += totalHeight;\r\n\r\n\t\t\t} else {\r\n\t\t\t\tvar vPadding = labelOpts.padding;\r\n\t\t\t\tvar columnWidths = me.columnWidths = [];\r\n\t\t\t\tvar totalWidth = labelOpts.padding;\r\n\t\t\t\tvar currentColWidth = 0;\r\n\t\t\t\tvar currentColHeight = 0;\r\n\t\t\t\tvar itemHeight = fontSize + vPadding;\r\n\r\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\r\n\r\n\t\t\t\t\t// If too tall, go to new column\r\n\t\t\t\t\tif (currentColHeight + itemHeight > minSize.height) {\r\n\t\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\r\n\t\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\r\n\r\n\t\t\t\t\t\tcurrentColWidth = 0;\r\n\t\t\t\t\t\tcurrentColHeight = 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Get max width\r\n\t\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\r\n\t\t\t\t\tcurrentColHeight += itemHeight;\r\n\r\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\r\n\t\t\t\t\thitboxes[i] = {\r\n\t\t\t\t\t\tleft: 0,\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\twidth: itemWidth,\r\n\t\t\t\t\t\theight: fontSize\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\r\n\t\t\t\ttotalWidth += currentColWidth;\r\n\t\t\t\tcolumnWidths.push(currentColWidth);\r\n\t\t\t\tminSize.width += totalWidth;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.width = minSize.width;\r\n\t\tme.height = minSize.height;\r\n\t},\r\n\tafterFit: noop,\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\r\n\t},\r\n\r\n\t// Actually draw the legend on the canvas\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar labelOpts = opts.labels;\r\n\t\tvar globalDefault = defaults.global;\r\n\t\tvar lineDefault = globalDefault.elements.line;\r\n\t\tvar legendWidth = me.width;\r\n\t\tvar lineWidths = me.lineWidths;\r\n\r\n\t\tif (opts.display) {\r\n\t\t\tvar ctx = me.ctx;\r\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\t\t\tvar fontColor = valueOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor);\r\n\t\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\r\n\t\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\r\n\t\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\r\n\t\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\r\n\t\t\tvar cursor;\r\n\r\n\t\t\t// Canvas setup\r\n\t\t\tctx.textAlign = 'left';\r\n\t\t\tctx.textBaseline = 'middle';\r\n\t\t\tctx.lineWidth = 0.5;\r\n\t\t\tctx.strokeStyle = fontColor; // for strikethrough effect\r\n\t\t\tctx.fillStyle = fontColor; // render in correct colour\r\n\t\t\tctx.font = labelFont;\r\n\r\n\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\tvar hitboxes = me.legendHitBoxes;\r\n\r\n\t\t\t// current position\r\n\t\t\tvar drawLegendBox = function(x, y, legendItem) {\r\n\t\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Set the ctx for the box\r\n\t\t\t\tctx.save();\r\n\r\n\t\t\t\tctx.fillStyle = valueOrDefault(legendItem.fillStyle, globalDefault.defaultColor);\r\n\t\t\t\tctx.lineCap = valueOrDefault(legendItem.lineCap, lineDefault.borderCapStyle);\r\n\t\t\t\tctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset);\r\n\t\t\t\tctx.lineJoin = valueOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle);\r\n\t\t\t\tctx.lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth);\r\n\t\t\t\tctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, globalDefault.defaultColor);\r\n\t\t\t\tvar isLineWidthZero = (valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth) === 0);\r\n\r\n\t\t\t\tif (ctx.setLineDash) {\r\n\t\t\t\t\t// IE 9 and 10 do not support line dash\r\n\t\t\t\t\tctx.setLineDash(valueOrDefault(legendItem.lineDash, lineDefault.borderDash));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (opts.labels && opts.labels.usePointStyle) {\r\n\t\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\r\n\t\t\t\t\t// x and y to be center of figure (instead of top left)\r\n\t\t\t\t\tvar radius = fontSize * Math.SQRT2 / 2;\r\n\t\t\t\t\tvar offSet = radius / Math.SQRT2;\r\n\t\t\t\t\tvar centerX = x + offSet;\r\n\t\t\t\t\tvar centerY = y + offSet;\r\n\r\n\t\t\t\t\t// Draw pointStyle as legend symbol\r\n\t\t\t\t\thelpers.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Draw box as legend symbol\r\n\t\t\t\t\tif (!isLineWidthZero) {\r\n\t\t\t\t\t\tctx.strokeRect(x, y, boxWidth, fontSize);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tctx.fillRect(x, y, boxWidth, fontSize);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tctx.restore();\r\n\t\t\t};\r\n\t\t\tvar fillText = function(x, y, legendItem, textWidth) {\r\n\t\t\t\tvar halfFontSize = fontSize / 2;\r\n\t\t\t\tvar xLeft = boxWidth + halfFontSize + x;\r\n\t\t\t\tvar yMiddle = y + halfFontSize;\r\n\r\n\t\t\t\tctx.fillText(legendItem.text, xLeft, yMiddle);\r\n\r\n\t\t\t\tif (legendItem.hidden) {\r\n\t\t\t\t\t// Strikethrough the text if hidden\r\n\t\t\t\t\tctx.beginPath();\r\n\t\t\t\t\tctx.lineWidth = 2;\r\n\t\t\t\t\tctx.moveTo(xLeft, yMiddle);\r\n\t\t\t\t\tctx.lineTo(xLeft + textWidth, yMiddle);\r\n\t\t\t\t\tctx.stroke();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t// Horizontal\r\n\t\t\tvar isHorizontal = me.isHorizontal();\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tcursor = {\r\n\t\t\t\t\tx: me.left + ((legendWidth - lineWidths[0]) / 2),\r\n\t\t\t\t\ty: me.top + labelOpts.padding,\r\n\t\t\t\t\tline: 0\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\tcursor = {\r\n\t\t\t\t\tx: me.left + labelOpts.padding,\r\n\t\t\t\t\ty: me.top + labelOpts.padding,\r\n\t\t\t\t\tline: 0\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tvar itemHeight = fontSize + labelOpts.padding;\r\n\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\tvar textWidth = ctx.measureText(legendItem.text).width;\r\n\t\t\t\tvar width = boxWidth + (fontSize / 2) + textWidth;\r\n\t\t\t\tvar x = cursor.x;\r\n\t\t\t\tvar y = cursor.y;\r\n\r\n\t\t\t\tif (isHorizontal) {\r\n\t\t\t\t\tif (x + width >= legendWidth) {\r\n\t\t\t\t\t\ty = cursor.y += itemHeight;\r\n\t\t\t\t\t\tcursor.line++;\r\n\t\t\t\t\t\tx = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (y + itemHeight > me.bottom) {\r\n\t\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\r\n\t\t\t\t\ty = cursor.y = me.top + labelOpts.padding;\r\n\t\t\t\t\tcursor.line++;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdrawLegendBox(x, y, legendItem);\r\n\r\n\t\t\t\thitboxes[i].left = x;\r\n\t\t\t\thitboxes[i].top = y;\r\n\r\n\t\t\t\t// Fill the actual label\r\n\t\t\t\tfillText(x, y, legendItem, textWidth);\r\n\r\n\t\t\t\tif (isHorizontal) {\r\n\t\t\t\t\tcursor.x += width + (labelOpts.padding);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcursor.y += itemHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Handle an event\r\n\t * @private\r\n\t * @param {IEvent} event - The event to handle\r\n\t * @return {Boolean} true if a change occured\r\n\t */\r\n\thandleEvent: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar type = e.type === 'mouseup' ? 'click' : e.type;\r\n\t\tvar changed = false;\r\n\r\n\t\tif (type === 'mousemove') {\r\n\t\t\tif (!opts.onHover) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t} else if (type === 'click') {\r\n\t\t\tif (!opts.onClick) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Chart event already has relative position in it\r\n\t\tvar x = e.x;\r\n\t\tvar y = e.y;\r\n\r\n\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\r\n\t\t\t// See if we are touching one of the dataset boxes\r\n\t\t\tvar lh = me.legendHitBoxes;\r\n\t\t\tfor (var i = 0; i < lh.length; ++i) {\r\n\t\t\t\tvar hitBox = lh[i];\r\n\r\n\t\t\t\tif (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\r\n\t\t\t\t\t// Touching an element\r\n\t\t\t\t\tif (type === 'click') {\r\n\t\t\t\t\t\t// use e.native for backwards compatibility\r\n\t\t\t\t\t\topts.onClick.call(me, e.native, me.legendItems[i]);\r\n\t\t\t\t\t\tchanged = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t} else if (type === 'mousemove') {\r\n\t\t\t\t\t\t// use e.native for backwards compatibility\r\n\t\t\t\t\t\topts.onHover.call(me, e.native, me.legendItems[i]);\r\n\t\t\t\t\t\tchanged = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n});\r\n\r\nfunction createNewLegendAndAttach(chart, legendOpts) {\r\n\tvar legend = new Legend({\r\n\t\tctx: chart.ctx,\r\n\t\toptions: legendOpts,\r\n\t\tchart: chart\r\n\t});\r\n\r\n\tlayouts.configure(chart, legend, legendOpts);\r\n\tlayouts.addBox(chart, legend);\r\n\tchart.legend = legend;\r\n}\r\n\r\nmodule.exports = {\r\n\tid: 'legend',\r\n\r\n\t/**\r\n\t * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\r\n\t * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\r\n\t * the plugin, which one will be re-exposed in the chart.js file.\r\n\t * https://github.com/chartjs/Chart.js/pull/2640\r\n\t * @private\r\n\t */\r\n\t_element: Legend,\r\n\r\n\tbeforeInit: function(chart) {\r\n\t\tvar legendOpts = chart.options.legend;\r\n\r\n\t\tif (legendOpts) {\r\n\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeUpdate: function(chart) {\r\n\t\tvar legendOpts = chart.options.legend;\r\n\t\tvar legend = chart.legend;\r\n\r\n\t\tif (legendOpts) {\r\n\t\t\thelpers.mergeIf(legendOpts, defaults.global.legend);\r\n\r\n\t\t\tif (legend) {\r\n\t\t\t\tlayouts.configure(chart, legend, legendOpts);\r\n\t\t\t\tlegend.options = legendOpts;\r\n\t\t\t} else {\r\n\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\r\n\t\t\t}\r\n\t\t} else if (legend) {\r\n\t\t\tlayouts.removeBox(chart, legend);\r\n\t\t\tdelete chart.legend;\r\n\t\t}\r\n\t},\r\n\r\n\tafterEvent: function(chart, e) {\r\n\t\tvar legend = chart.legend;\r\n\t\tif (legend) {\r\n\t\t\tlegend.handleEvent(e);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"26\":26,\"27\":27,\"31\":31,\"46\":46}],53:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\nvar layouts = require(31);\r\n\r\nvar noop = helpers.noop;\r\n\r\ndefaults._set('global', {\r\n\ttitle: {\r\n\t\tdisplay: false,\r\n\t\tfontStyle: 'bold',\r\n\t\tfullWidth: true,\r\n\t\tlineHeight: 1.2,\r\n\t\tpadding: 10,\r\n\t\tposition: 'top',\r\n\t\ttext: '',\r\n\t\tweight: 2000 // by default greater than legend (1000) to be above\r\n\t}\r\n});\r\n\r\n/**\r\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\r\n */\r\nvar Title = Element.extend({\r\n\tinitialize: function(config) {\r\n\t\tvar me = this;\r\n\t\thelpers.extend(me, config);\r\n\r\n\t\t// Contains hit boxes for each dataset (in dataset order)\r\n\t\tme.legendHitBoxes = [];\r\n\t},\r\n\r\n\t// These methods are ordered by lifecycle. Utilities then follow.\r\n\r\n\tbeforeUpdate: noop,\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = margins;\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\t\t// Labels\r\n\t\tme.beforeBuildLabels();\r\n\t\tme.buildLabels();\r\n\t\tme.afterBuildLabels();\r\n\r\n\t\t// Fit\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\t\t//\r\n\t\tme.afterUpdate();\r\n\r\n\t\treturn me.minSize;\r\n\r\n\t},\r\n\tafterUpdate: noop,\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: noop,\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\r\n\t\t// Reset minSize\r\n\t\tme.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\t},\r\n\tafterSetDimensions: noop,\r\n\r\n\t//\r\n\r\n\tbeforeBuildLabels: noop,\r\n\tbuildLabels: noop,\r\n\tafterBuildLabels: noop,\r\n\r\n\t//\r\n\r\n\tbeforeFit: noop,\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\t\tvar opts = me.options;\r\n\t\tvar display = opts.display;\r\n\t\tvar fontSize = valueOrDefault(opts.fontSize, defaults.global.defaultFontSize);\r\n\t\tvar minSize = me.minSize;\r\n\t\tvar lineCount = helpers.isArray(opts.text) ? opts.text.length : 1;\r\n\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\r\n\t\tvar textSize = display ? (lineCount * lineHeight) + (opts.padding * 2) : 0;\r\n\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tminSize.width = me.maxWidth; // fill all the width\r\n\t\t\tminSize.height = textSize;\r\n\t\t} else {\r\n\t\t\tminSize.width = textSize;\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t}\r\n\r\n\t\tme.width = minSize.width;\r\n\t\tme.height = minSize.height;\r\n\r\n\t},\r\n\tafterFit: noop,\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\tvar pos = this.options.position;\r\n\t\treturn pos === 'top' || pos === 'bottom';\r\n\t},\r\n\r\n\t// Actually draw the title block on the canvas\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\t\tvar opts = me.options;\r\n\t\tvar globalDefaults = defaults.global;\r\n\r\n\t\tif (opts.display) {\r\n\t\t\tvar fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize);\r\n\t\t\tvar fontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle);\r\n\t\t\tvar fontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily);\r\n\t\t\tvar titleFont = helpers.fontString(fontSize, fontStyle, fontFamily);\r\n\t\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\r\n\t\t\tvar offset = lineHeight / 2 + opts.padding;\r\n\t\t\tvar rotation = 0;\r\n\t\t\tvar top = me.top;\r\n\t\t\tvar left = me.left;\r\n\t\t\tvar bottom = me.bottom;\r\n\t\t\tvar right = me.right;\r\n\t\t\tvar maxWidth, titleX, titleY;\r\n\r\n\t\t\tctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour\r\n\t\t\tctx.font = titleFont;\r\n\r\n\t\t\t// Horizontal\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\r\n\t\t\t\ttitleY = top + offset;\r\n\t\t\t\tmaxWidth = right - left;\r\n\t\t\t} else {\r\n\t\t\t\ttitleX = opts.position === 'left' ? left + offset : right - offset;\r\n\t\t\t\ttitleY = top + ((bottom - top) / 2);\r\n\t\t\t\tmaxWidth = bottom - top;\r\n\t\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\r\n\t\t\t}\r\n\r\n\t\t\tctx.save();\r\n\t\t\tctx.translate(titleX, titleY);\r\n\t\t\tctx.rotate(rotation);\r\n\t\t\tctx.textAlign = 'center';\r\n\t\t\tctx.textBaseline = 'middle';\r\n\r\n\t\t\tvar text = opts.text;\r\n\t\t\tif (helpers.isArray(text)) {\r\n\t\t\t\tvar y = 0;\r\n\t\t\t\tfor (var i = 0; i < text.length; ++i) {\r\n\t\t\t\t\tctx.fillText(text[i], 0, y, maxWidth);\r\n\t\t\t\t\ty += lineHeight;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tctx.fillText(text, 0, 0, maxWidth);\r\n\t\t\t}\r\n\r\n\t\t\tctx.restore();\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction createNewTitleBlockAndAttach(chart, titleOpts) {\r\n\tvar title = new Title({\r\n\t\tctx: chart.ctx,\r\n\t\toptions: titleOpts,\r\n\t\tchart: chart\r\n\t});\r\n\r\n\tlayouts.configure(chart, title, titleOpts);\r\n\tlayouts.addBox(chart, title);\r\n\tchart.titleBlock = title;\r\n}\r\n\r\nmodule.exports = {\r\n\tid: 'title',\r\n\r\n\t/**\r\n\t * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\r\n\t * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\r\n\t * the plugin, which one will be re-exposed in the chart.js file.\r\n\t * https://github.com/chartjs/Chart.js/pull/2640\r\n\t * @private\r\n\t */\r\n\t_element: Title,\r\n\r\n\tbeforeInit: function(chart) {\r\n\t\tvar titleOpts = chart.options.title;\r\n\r\n\t\tif (titleOpts) {\r\n\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeUpdate: function(chart) {\r\n\t\tvar titleOpts = chart.options.title;\r\n\t\tvar titleBlock = chart.titleBlock;\r\n\r\n\t\tif (titleOpts) {\r\n\t\t\thelpers.mergeIf(titleOpts, defaults.global.title);\r\n\r\n\t\t\tif (titleBlock) {\r\n\t\t\t\tlayouts.configure(chart, titleBlock, titleOpts);\r\n\t\t\t\ttitleBlock.options = titleOpts;\r\n\t\t\t} else {\r\n\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\r\n\t\t\t}\r\n\t\t} else if (titleBlock) {\r\n\t\t\tlayouts.removeBox(chart, titleBlock);\r\n\t\t\tdelete chart.titleBlock;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"26\":26,\"27\":27,\"31\":31,\"46\":46}],54:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar Scale = require(33);\r\nvar scaleService = require(34);\r\n\r\nmodule.exports = function() {\r\n\r\n\t// Default config for a category scale\r\n\tvar defaultConfig = {\r\n\t\tposition: 'bottom'\r\n\t};\r\n\r\n\tvar DatasetScale = Scale.extend({\r\n\t\t/**\r\n\t\t* Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those\r\n\t\t* else fall back to data.labels\r\n\t\t* @private\r\n\t\t*/\r\n\t\tgetLabels: function() {\r\n\t\t\tvar data = this.chart.data;\r\n\t\t\treturn this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels;\r\n\t\t},\r\n\r\n\t\tdetermineDataLimits: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar labels = me.getLabels();\r\n\t\t\tme.minIndex = 0;\r\n\t\t\tme.maxIndex = labels.length - 1;\r\n\t\t\tvar findIndex;\r\n\r\n\t\t\tif (me.options.ticks.min !== undefined) {\r\n\t\t\t\t// user specified min value\r\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.min);\r\n\t\t\t\tme.minIndex = findIndex !== -1 ? findIndex : me.minIndex;\r\n\t\t\t}\r\n\r\n\t\t\tif (me.options.ticks.max !== undefined) {\r\n\t\t\t\t// user specified max value\r\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.max);\r\n\t\t\t\tme.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex;\r\n\t\t\t}\r\n\r\n\t\t\tme.min = labels[me.minIndex];\r\n\t\t\tme.max = labels[me.maxIndex];\r\n\t\t},\r\n\r\n\t\tbuildTicks: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar labels = me.getLabels();\r\n\t\t\t// If we are viewing some subset of labels, slice the original array\r\n\t\t\tme.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1);\r\n\t\t},\r\n\r\n\t\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar data = me.chart.data;\r\n\t\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\t\tif (data.yLabels && !isHorizontal) {\r\n\t\t\t\treturn me.getRightValue(data.datasets[datasetIndex].data[index]);\r\n\t\t\t}\r\n\t\t\treturn me.ticks[index - me.minIndex];\r\n\t\t},\r\n\r\n\t\t// Used to get data value locations. Value can either be an index or a numerical value\r\n\t\tgetPixelForValue: function(value, index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar offset = me.options.offset;\r\n\t\t\t// 1 is added because we need the length but we have the indexes\r\n\t\t\tvar offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1);\r\n\r\n\t\t\t// If value is a data object, then index is the index in the data array,\r\n\t\t\t// not the index of the scale. We need to change that.\r\n\t\t\tvar valueCategory;\r\n\t\t\tif (value !== undefined && value !== null) {\r\n\t\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\r\n\t\t\t}\r\n\t\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\r\n\t\t\t\tvar labels = me.getLabels();\r\n\t\t\t\tvalue = valueCategory || value;\r\n\t\t\t\tvar idx = labels.indexOf(value);\r\n\t\t\t\tindex = idx !== -1 ? idx : index;\r\n\t\t\t}\r\n\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tvar valueWidth = me.width / offsetAmt;\r\n\t\t\t\tvar widthOffset = (valueWidth * (index - me.minIndex));\r\n\r\n\t\t\t\tif (offset) {\r\n\t\t\t\t\twidthOffset += (valueWidth / 2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn me.left + Math.round(widthOffset);\r\n\t\t\t}\r\n\t\t\tvar valueHeight = me.height / offsetAmt;\r\n\t\t\tvar heightOffset = (valueHeight * (index - me.minIndex));\r\n\r\n\t\t\tif (offset) {\r\n\t\t\t\theightOffset += (valueHeight / 2);\r\n\t\t\t}\r\n\r\n\t\t\treturn me.top + Math.round(heightOffset);\r\n\t\t},\r\n\t\tgetPixelForTick: function(index) {\r\n\t\t\treturn this.getPixelForValue(this.ticks[index], index + this.minIndex, null);\r\n\t\t},\r\n\t\tgetValueForPixel: function(pixel) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar offset = me.options.offset;\r\n\t\t\tvar value;\r\n\t\t\tvar offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\r\n\t\t\tvar horz = me.isHorizontal();\r\n\t\t\tvar valueDimension = (horz ? me.width : me.height) / offsetAmt;\r\n\r\n\t\t\tpixel -= horz ? me.left : me.top;\r\n\r\n\t\t\tif (offset) {\r\n\t\t\t\tpixel -= (valueDimension / 2);\r\n\t\t\t}\r\n\r\n\t\t\tif (pixel <= 0) {\r\n\t\t\t\tvalue = 0;\r\n\t\t\t} else {\r\n\t\t\t\tvalue = Math.round(pixel / valueDimension);\r\n\t\t\t}\r\n\r\n\t\t\treturn value + me.minIndex;\r\n\t\t},\r\n\t\tgetBasePixel: function() {\r\n\t\t\treturn this.bottom;\r\n\t\t}\r\n\t});\r\n\r\n\tscaleService.registerScaleType('category', DatasetScale, defaultConfig);\r\n};\r\n\r\n},{\"33\":33,\"34\":34}],55:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar scaleService = require(34);\r\nvar Ticks = require(35);\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tvar defaultConfig = {\r\n\t\tposition: 'left',\r\n\t\tticks: {\r\n\t\t\tcallback: Ticks.formatters.linear\r\n\t\t}\r\n\t};\r\n\r\n\tvar LinearScale = Chart.LinearScaleBase.extend({\r\n\r\n\t\tdetermineDataLimits: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar data = chart.data;\r\n\t\t\tvar datasets = data.datasets;\r\n\t\t\tvar isHorizontal = me.isHorizontal();\r\n\t\t\tvar DEFAULT_MIN = 0;\r\n\t\t\tvar DEFAULT_MAX = 1;\r\n\r\n\t\t\tfunction IDMatches(meta) {\r\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\r\n\t\t\t}\r\n\r\n\t\t\t// First Calculate the range\r\n\t\t\tme.min = null;\r\n\t\t\tme.max = null;\r\n\r\n\t\t\tvar hasStacks = opts.stacked;\r\n\t\t\tif (hasStacks === undefined) {\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tif (hasStacks) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\r\n\t\t\t\t\t\tmeta.stack !== undefined) {\r\n\t\t\t\t\t\thasStacks = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (opts.stacked || hasStacks) {\r\n\t\t\t\tvar valuesPerStack = {};\r\n\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tvar key = [\r\n\t\t\t\t\t\tmeta.type,\r\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\r\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\r\n\t\t\t\t\t\tmeta.stack\r\n\t\t\t\t\t].join('.');\r\n\r\n\t\t\t\t\tif (valuesPerStack[key] === undefined) {\r\n\t\t\t\t\t\tvaluesPerStack[key] = {\r\n\t\t\t\t\t\t\tpositiveValues: [],\r\n\t\t\t\t\t\t\tnegativeValues: []\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Store these per type\r\n\t\t\t\t\tvar positiveValues = valuesPerStack[key].positiveValues;\r\n\t\t\t\t\tvar negativeValues = valuesPerStack[key].negativeValues;\r\n\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tpositiveValues[index] = positiveValues[index] || 0;\r\n\t\t\t\t\t\t\tnegativeValues[index] = negativeValues[index] || 0;\r\n\r\n\t\t\t\t\t\t\tif (opts.relativePoints) {\r\n\t\t\t\t\t\t\t\tpositiveValues[index] = 100;\r\n\t\t\t\t\t\t\t} else if (value < 0) {\r\n\t\t\t\t\t\t\t\tnegativeValues[index] += value;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tpositiveValues[index] += value;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\r\n\t\t\t\t\tvar values = valuesForType.positiveValues.concat(valuesForType.negativeValues);\r\n\t\t\t\t\tvar minVal = helpers.min(values);\r\n\t\t\t\t\tvar maxVal = helpers.max(values);\r\n\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\r\n\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\r\n\t\t\t\t});\r\n\r\n\t\t\t} else {\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (me.min === null) {\r\n\t\t\t\t\t\t\t\tme.min = value;\r\n\t\t\t\t\t\t\t} else if (value < me.min) {\r\n\t\t\t\t\t\t\t\tme.min = value;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (me.max === null) {\r\n\t\t\t\t\t\t\t\tme.max = value;\r\n\t\t\t\t\t\t\t} else if (value > me.max) {\r\n\t\t\t\t\t\t\t\tme.max = value;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tme.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\r\n\t\t\tme.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\r\n\r\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\r\n\t\t\tthis.handleTickRangeOptions();\r\n\t\t},\r\n\t\tgetTickLimit: function() {\r\n\t\t\tvar maxTicks;\r\n\t\t\tvar me = this;\r\n\t\t\tvar tickOpts = me.options.ticks;\r\n\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50));\r\n\t\t\t} else {\r\n\t\t\t\t// The factor of 2 used to scale the font size has been experimentally determined.\r\n\t\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize);\r\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize)));\r\n\t\t\t}\r\n\r\n\t\t\treturn maxTicks;\r\n\t\t},\r\n\t\t// Called after the ticks are built. We need\r\n\t\thandleDirectionalChanges: function() {\r\n\t\t\tif (!this.isHorizontal()) {\r\n\t\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\r\n\t\t\t\tthis.ticks.reverse();\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t\t},\r\n\t\t// Utils\r\n\t\tgetPixelForValue: function(value) {\r\n\t\t\t// This must be called after fit has been run so that\r\n\t\t\t// this.left, this.top, this.right, and this.bottom have been defined\r\n\t\t\tvar me = this;\r\n\t\t\tvar start = me.start;\r\n\r\n\t\t\tvar rightValue = +me.getRightValue(value);\r\n\t\t\tvar pixel;\r\n\t\t\tvar range = me.end - start;\r\n\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tpixel = me.left + (me.width / range * (rightValue - start));\r\n\t\t\t} else {\r\n\t\t\t\tpixel = me.bottom - (me.height / range * (rightValue - start));\r\n\t\t\t}\r\n\t\t\treturn pixel;\r\n\t\t},\r\n\t\tgetValueForPixel: function(pixel) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar isHorizontal = me.isHorizontal();\r\n\t\t\tvar innerDimension = isHorizontal ? me.width : me.height;\r\n\t\t\tvar offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension;\r\n\t\t\treturn me.start + ((me.end - me.start) * offset);\r\n\t\t},\r\n\t\tgetPixelForTick: function(index) {\r\n\t\t\treturn this.getPixelForValue(this.ticksAsNumbers[index]);\r\n\t\t}\r\n\t});\r\n\r\n\tscaleService.registerScaleType('linear', LinearScale, defaultConfig);\r\n};\r\n\r\n},{\"26\":26,\"34\":34,\"35\":35,\"46\":46}],56:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\nvar Scale = require(33);\r\n\r\n/**\r\n * Generate a set of linear ticks\r\n * @param generationOptions the options used to generate the ticks\r\n * @param dataRange the range of the data\r\n * @returns {Array} array of tick values\r\n */\r\nfunction generateTicks(generationOptions, dataRange) {\r\n\tvar ticks = [];\r\n\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\r\n\t// \"nice number\" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\r\n\t// for details.\r\n\r\n\tvar factor;\r\n\tvar precision;\r\n\tvar spacing;\r\n\r\n\tif (generationOptions.stepSize && generationOptions.stepSize > 0) {\r\n\t\tspacing = generationOptions.stepSize;\r\n\t} else {\r\n\t\tvar niceRange = helpers.niceNum(dataRange.max - dataRange.min, false);\r\n\t\tspacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true);\r\n\r\n\t\tprecision = generationOptions.precision;\r\n\t\tif (precision !== undefined) {\r\n\t\t\t// If the user specified a precision, round to that number of decimal places\r\n\t\t\tfactor = Math.pow(10, precision);\r\n\t\t\tspacing = Math.ceil(spacing * factor) / factor;\r\n\t\t}\r\n\t}\r\n\tvar niceMin = Math.floor(dataRange.min / spacing) * spacing;\r\n\tvar niceMax = Math.ceil(dataRange.max / spacing) * spacing;\r\n\r\n\t// If min, max and stepSize is set and they make an evenly spaced scale use it.\r\n\tif (!helpers.isNullOrUndef(generationOptions.min) && !helpers.isNullOrUndef(generationOptions.max) && generationOptions.stepSize) {\r\n\t\t// If very close to our whole number, use it.\r\n\t\tif (helpers.almostWhole((generationOptions.max - generationOptions.min) / generationOptions.stepSize, spacing / 1000)) {\r\n\t\t\tniceMin = generationOptions.min;\r\n\t\t\tniceMax = generationOptions.max;\r\n\t\t}\r\n\t}\r\n\r\n\tvar numSpaces = (niceMax - niceMin) / spacing;\r\n\t// If very close to our rounded value, use it.\r\n\tif (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\r\n\t\tnumSpaces = Math.round(numSpaces);\r\n\t} else {\r\n\t\tnumSpaces = Math.ceil(numSpaces);\r\n\t}\r\n\r\n\tprecision = 1;\r\n\tif (spacing < 1) {\r\n\t\tprecision = Math.pow(10, 1 - Math.floor(helpers.log10(spacing)));\r\n\t\tniceMin = Math.round(niceMin * precision) / precision;\r\n\t\tniceMax = Math.round(niceMax * precision) / precision;\r\n\t}\r\n\tticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin);\r\n\tfor (var j = 1; j < numSpaces; ++j) {\r\n\t\tticks.push(Math.round((niceMin + j * spacing) * precision) / precision);\r\n\t}\r\n\tticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax);\r\n\r\n\treturn ticks;\r\n}\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tvar noop = helpers.noop;\r\n\r\n\tChart.LinearScaleBase = Scale.extend({\r\n\t\tgetRightValue: function(value) {\r\n\t\t\tif (typeof value === 'string') {\r\n\t\t\t\treturn +value;\r\n\t\t\t}\r\n\t\t\treturn Scale.prototype.getRightValue.call(this, value);\r\n\t\t},\r\n\r\n\t\thandleTickRangeOptions: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\r\n\t\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\r\n\t\t\t// axis, they can manually override it\r\n\t\t\tif (tickOpts.beginAtZero) {\r\n\t\t\t\tvar minSign = helpers.sign(me.min);\r\n\t\t\t\tvar maxSign = helpers.sign(me.max);\r\n\r\n\t\t\t\tif (minSign < 0 && maxSign < 0) {\r\n\t\t\t\t\t// move the top up to 0\r\n\t\t\t\t\tme.max = 0;\r\n\t\t\t\t} else if (minSign > 0 && maxSign > 0) {\r\n\t\t\t\t\t// move the bottom down to 0\r\n\t\t\t\t\tme.min = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\r\n\t\t\tvar setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\r\n\r\n\t\t\tif (tickOpts.min !== undefined) {\r\n\t\t\t\tme.min = tickOpts.min;\r\n\t\t\t} else if (tickOpts.suggestedMin !== undefined) {\r\n\t\t\t\tif (me.min === null) {\r\n\t\t\t\t\tme.min = tickOpts.suggestedMin;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (tickOpts.max !== undefined) {\r\n\t\t\t\tme.max = tickOpts.max;\r\n\t\t\t} else if (tickOpts.suggestedMax !== undefined) {\r\n\t\t\t\tif (me.max === null) {\r\n\t\t\t\t\tme.max = tickOpts.suggestedMax;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (setMin !== setMax) {\r\n\t\t\t\t// We set the min or the max but not both.\r\n\t\t\t\t// So ensure that our range is good\r\n\t\t\t\t// Inverted or 0 length range can happen when\r\n\t\t\t\t// ticks.min is set, and no datasets are visible\r\n\t\t\t\tif (me.min >= me.max) {\r\n\t\t\t\t\tif (setMin) {\r\n\t\t\t\t\t\tme.max = me.min + 1;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tme.min = me.max - 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (me.min === me.max) {\r\n\t\t\t\tme.max++;\r\n\r\n\t\t\t\tif (!tickOpts.beginAtZero) {\r\n\t\t\t\t\tme.min--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetTickLimit: noop,\r\n\t\thandleDirectionalChanges: noop,\r\n\r\n\t\tbuildTicks: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\t\t// Figure out what the max number of ticks we can support it is based on the size of\r\n\t\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\r\n\t\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\r\n\t\t\t// the graph. Make sure we always have at least 2 ticks\r\n\t\t\tvar maxTicks = me.getTickLimit();\r\n\t\t\tmaxTicks = Math.max(2, maxTicks);\r\n\r\n\t\t\tvar numericGeneratorOptions = {\r\n\t\t\t\tmaxTicks: maxTicks,\r\n\t\t\t\tmin: tickOpts.min,\r\n\t\t\t\tmax: tickOpts.max,\r\n\t\t\t\tprecision: tickOpts.precision,\r\n\t\t\t\tstepSize: helpers.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\r\n\t\t\t};\r\n\t\t\tvar ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\r\n\r\n\t\t\tme.handleDirectionalChanges();\r\n\r\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\r\n\t\t\t// range of the scale\r\n\t\t\tme.max = helpers.max(ticks);\r\n\t\t\tme.min = helpers.min(ticks);\r\n\r\n\t\t\tif (tickOpts.reverse) {\r\n\t\t\t\tticks.reverse();\r\n\r\n\t\t\t\tme.start = me.max;\r\n\t\t\t\tme.end = me.min;\r\n\t\t\t} else {\r\n\t\t\t\tme.start = me.min;\r\n\t\t\t\tme.end = me.max;\r\n\t\t\t}\r\n\t\t},\r\n\t\tconvertTicksToLabels: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tme.ticksAsNumbers = me.ticks.slice();\r\n\t\t\tme.zeroLineIndex = me.ticks.indexOf(0);\r\n\r\n\t\t\tScale.prototype.convertTicksToLabels.call(me);\r\n\t\t}\r\n\t});\r\n};\r\n\r\n},{\"33\":33,\"46\":46}],57:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\nvar Scale = require(33);\r\nvar scaleService = require(34);\r\nvar Ticks = require(35);\r\n\r\n/**\r\n * Generate a set of logarithmic ticks\r\n * @param generationOptions the options used to generate the ticks\r\n * @param dataRange the range of the data\r\n * @returns {Array} array of tick values\r\n */\r\nfunction generateTicks(generationOptions, dataRange) {\r\n\tvar ticks = [];\r\n\tvar valueOrDefault = helpers.valueOrDefault;\r\n\r\n\t// Figure out what the max number of ticks we can support it is based on the size of\r\n\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\r\n\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\r\n\t// the graph\r\n\tvar tickVal = valueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min))));\r\n\r\n\tvar endExp = Math.floor(helpers.log10(dataRange.max));\r\n\tvar endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\r\n\tvar exp, significand;\r\n\r\n\tif (tickVal === 0) {\r\n\t\texp = Math.floor(helpers.log10(dataRange.minNotZero));\r\n\t\tsignificand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\r\n\r\n\t\tticks.push(tickVal);\r\n\t\ttickVal = significand * Math.pow(10, exp);\r\n\t} else {\r\n\t\texp = Math.floor(helpers.log10(tickVal));\r\n\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp));\r\n\t}\r\n\tvar precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\r\n\r\n\tdo {\r\n\t\tticks.push(tickVal);\r\n\r\n\t\t++significand;\r\n\t\tif (significand === 10) {\r\n\t\t\tsignificand = 1;\r\n\t\t\t++exp;\r\n\t\t\tprecision = exp >= 0 ? 1 : precision;\r\n\t\t}\r\n\r\n\t\ttickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\r\n\t} while (exp < endExp || (exp === endExp && significand < endSignificand));\r\n\r\n\tvar lastTick = valueOrDefault(generationOptions.max, tickVal);\r\n\tticks.push(lastTick);\r\n\r\n\treturn ticks;\r\n}\r\n\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tvar defaultConfig = {\r\n\t\tposition: 'left',\r\n\r\n\t\t// label settings\r\n\t\tticks: {\r\n\t\t\tcallback: Ticks.formatters.logarithmic\r\n\t\t}\r\n\t};\r\n\r\n\tvar LogarithmicScale = Scale.extend({\r\n\t\tdetermineDataLimits: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar data = chart.data;\r\n\t\t\tvar datasets = data.datasets;\r\n\t\t\tvar isHorizontal = me.isHorizontal();\r\n\t\t\tfunction IDMatches(meta) {\r\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\r\n\t\t\t}\r\n\r\n\t\t\t// Calculate Range\r\n\t\t\tme.min = null;\r\n\t\t\tme.max = null;\r\n\t\t\tme.minNotZero = null;\r\n\r\n\t\t\tvar hasStacks = opts.stacked;\r\n\t\t\tif (hasStacks === undefined) {\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tif (hasStacks) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\r\n\t\t\t\t\t\tmeta.stack !== undefined) {\r\n\t\t\t\t\t\thasStacks = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (opts.stacked || hasStacks) {\r\n\t\t\t\tvar valuesPerStack = {};\r\n\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tvar key = [\r\n\t\t\t\t\t\tmeta.type,\r\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\r\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\r\n\t\t\t\t\t\tmeta.stack\r\n\t\t\t\t\t].join('.');\r\n\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\t\tif (valuesPerStack[key] === undefined) {\r\n\t\t\t\t\t\t\tvaluesPerStack[key] = [];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\t\t\tvar values = valuesPerStack[key];\r\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\r\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvalues[index] = values[index] || 0;\r\n\t\t\t\t\t\t\tvalues[index] += value;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\r\n\t\t\t\t\tif (valuesForType.length > 0) {\r\n\t\t\t\t\t\tvar minVal = helpers.min(valuesForType);\r\n\t\t\t\t\t\tvar maxVal = helpers.max(valuesForType);\r\n\t\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\r\n\t\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t} else {\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\r\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (me.min === null) {\r\n\t\t\t\t\t\t\t\tme.min = value;\r\n\t\t\t\t\t\t\t} else if (value < me.min) {\r\n\t\t\t\t\t\t\t\tme.min = value;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (me.max === null) {\r\n\t\t\t\t\t\t\t\tme.max = value;\r\n\t\t\t\t\t\t\t} else if (value > me.max) {\r\n\t\t\t\t\t\t\t\tme.max = value;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) {\r\n\t\t\t\t\t\t\t\tme.minNotZero = value;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Common base implementation to handle ticks.min, ticks.max\r\n\t\t\tthis.handleTickRangeOptions();\r\n\t\t},\r\n\t\thandleTickRangeOptions: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\t\t\tvar DEFAULT_MIN = 1;\r\n\t\t\tvar DEFAULT_MAX = 10;\r\n\r\n\t\t\tme.min = valueOrDefault(tickOpts.min, me.min);\r\n\t\t\tme.max = valueOrDefault(tickOpts.max, me.max);\r\n\r\n\t\t\tif (me.min === me.max) {\r\n\t\t\t\tif (me.min !== 0 && me.min !== null) {\r\n\t\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1);\r\n\t\t\t\t\tme.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.min = DEFAULT_MIN;\r\n\t\t\t\t\tme.max = DEFAULT_MAX;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (me.min === null) {\r\n\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.max)) - 1);\r\n\t\t\t}\r\n\t\t\tif (me.max === null) {\r\n\t\t\t\tme.max = me.min !== 0\r\n\t\t\t\t\t? Math.pow(10, Math.floor(helpers.log10(me.min)) + 1)\r\n\t\t\t\t\t: DEFAULT_MAX;\r\n\t\t\t}\r\n\t\t\tif (me.minNotZero === null) {\r\n\t\t\t\tif (me.min > 0) {\r\n\t\t\t\t\tme.minNotZero = me.min;\r\n\t\t\t\t} else if (me.max < 1) {\r\n\t\t\t\t\tme.minNotZero = Math.pow(10, Math.floor(helpers.log10(me.max)));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.minNotZero = DEFAULT_MIN;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tbuildTicks: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\t\t\tvar reverse = !me.isHorizontal();\r\n\r\n\t\t\tvar generationOptions = {\r\n\t\t\t\tmin: tickOpts.min,\r\n\t\t\t\tmax: tickOpts.max\r\n\t\t\t};\r\n\t\t\tvar ticks = me.ticks = generateTicks(generationOptions, me);\r\n\r\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\r\n\t\t\t// range of the scale\r\n\t\t\tme.max = helpers.max(ticks);\r\n\t\t\tme.min = helpers.min(ticks);\r\n\r\n\t\t\tif (tickOpts.reverse) {\r\n\t\t\t\treverse = !reverse;\r\n\t\t\t\tme.start = me.max;\r\n\t\t\t\tme.end = me.min;\r\n\t\t\t} else {\r\n\t\t\t\tme.start = me.min;\r\n\t\t\t\tme.end = me.max;\r\n\t\t\t}\r\n\t\t\tif (reverse) {\r\n\t\t\t\tticks.reverse();\r\n\t\t\t}\r\n\t\t},\r\n\t\tconvertTicksToLabels: function() {\r\n\t\t\tthis.tickValues = this.ticks.slice();\r\n\r\n\t\t\tScale.prototype.convertTicksToLabels.call(this);\r\n\t\t},\r\n\t\t// Get the correct tooltip label\r\n\t\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t\t},\r\n\t\tgetPixelForTick: function(index) {\r\n\t\t\treturn this.getPixelForValue(this.tickValues[index]);\r\n\t\t},\r\n\t\t/**\r\n\t\t * Returns the value of the first tick.\r\n\t\t * @param {Number} value - The minimum not zero value.\r\n\t\t * @return {Number} The first tick value.\r\n\t\t * @private\r\n\t\t */\r\n\t\t_getFirstTickValue: function(value) {\r\n\t\t\tvar exp = Math.floor(helpers.log10(value));\r\n\t\t\tvar significand = Math.floor(value / Math.pow(10, exp));\r\n\r\n\t\t\treturn significand * Math.pow(10, exp);\r\n\t\t},\r\n\t\tgetPixelForValue: function(value) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar reverse = me.options.ticks.reverse;\r\n\t\t\tvar log10 = helpers.log10;\r\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\r\n\t\t\tvar offset = 0;\r\n\t\t\tvar innerDimension, pixel, start, end, sign;\r\n\r\n\t\t\tvalue = +me.getRightValue(value);\r\n\t\t\tif (reverse) {\r\n\t\t\t\tstart = me.end;\r\n\t\t\t\tend = me.start;\r\n\t\t\t\tsign = -1;\r\n\t\t\t} else {\r\n\t\t\t\tstart = me.start;\r\n\t\t\t\tend = me.end;\r\n\t\t\t\tsign = 1;\r\n\t\t\t}\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tinnerDimension = me.width;\r\n\t\t\t\tpixel = reverse ? me.right : me.left;\r\n\t\t\t} else {\r\n\t\t\t\tinnerDimension = me.height;\r\n\t\t\t\tsign *= -1; // invert, since the upper-left corner of the canvas is at pixel (0, 0)\r\n\t\t\t\tpixel = reverse ? me.top : me.bottom;\r\n\t\t\t}\r\n\t\t\tif (value !== start) {\r\n\t\t\t\tif (start === 0) { // include zero tick\r\n\t\t\t\t\toffset = helpers.getValueOrDefault(\r\n\t\t\t\t\t\tme.options.ticks.fontSize,\r\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\r\n\t\t\t\t\t);\r\n\t\t\t\t\tinnerDimension -= offset;\r\n\t\t\t\t\tstart = firstTickValue;\r\n\t\t\t\t}\r\n\t\t\t\tif (value !== 0) {\r\n\t\t\t\t\toffset += innerDimension / (log10(end) - log10(start)) * (log10(value) - log10(start));\r\n\t\t\t\t}\r\n\t\t\t\tpixel += sign * offset;\r\n\t\t\t}\r\n\t\t\treturn pixel;\r\n\t\t},\r\n\t\tgetValueForPixel: function(pixel) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar reverse = me.options.ticks.reverse;\r\n\t\t\tvar log10 = helpers.log10;\r\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\r\n\t\t\tvar innerDimension, start, end, value;\r\n\r\n\t\t\tif (reverse) {\r\n\t\t\t\tstart = me.end;\r\n\t\t\t\tend = me.start;\r\n\t\t\t} else {\r\n\t\t\t\tstart = me.start;\r\n\t\t\t\tend = me.end;\r\n\t\t\t}\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tinnerDimension = me.width;\r\n\t\t\t\tvalue = reverse ? me.right - pixel : pixel - me.left;\r\n\t\t\t} else {\r\n\t\t\t\tinnerDimension = me.height;\r\n\t\t\t\tvalue = reverse ? pixel - me.top : me.bottom - pixel;\r\n\t\t\t}\r\n\t\t\tif (value !== start) {\r\n\t\t\t\tif (start === 0) { // include zero tick\r\n\t\t\t\t\tvar offset = helpers.getValueOrDefault(\r\n\t\t\t\t\t\tme.options.ticks.fontSize,\r\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\r\n\t\t\t\t\t);\r\n\t\t\t\t\tvalue -= offset;\r\n\t\t\t\t\tinnerDimension -= offset;\r\n\t\t\t\t\tstart = firstTickValue;\r\n\t\t\t\t}\r\n\t\t\t\tvalue *= log10(end) - log10(start);\r\n\t\t\t\tvalue /= innerDimension;\r\n\t\t\t\tvalue = Math.pow(10, log10(start) + value);\r\n\t\t\t}\r\n\t\t\treturn value;\r\n\t\t}\r\n\t});\r\n\r\n\tscaleService.registerScaleType('logarithmic', LogarithmicScale, defaultConfig);\r\n};\r\n\r\n},{\"33\":33,\"34\":34,\"35\":35,\"46\":46}],58:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar scaleService = require(34);\r\nvar Ticks = require(35);\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tvar globalDefaults = defaults.global;\r\n\r\n\tvar defaultConfig = {\r\n\t\tdisplay: true,\r\n\r\n\t\t// Boolean - Whether to animate scaling the chart from the centre\r\n\t\tanimate: true,\r\n\t\tposition: 'chartArea',\r\n\r\n\t\tangleLines: {\r\n\t\t\tdisplay: true,\r\n\t\t\tcolor: 'rgba(0, 0, 0, 0.1)',\r\n\t\t\tlineWidth: 1\r\n\t\t},\r\n\r\n\t\tgridLines: {\r\n\t\t\tcircular: false\r\n\t\t},\r\n\r\n\t\t// label settings\r\n\t\tticks: {\r\n\t\t\t// Boolean - Show a backdrop to the scale label\r\n\t\t\tshowLabelBackdrop: true,\r\n\r\n\t\t\t// String - The colour of the label backdrop\r\n\t\t\tbackdropColor: 'rgba(255,255,255,0.75)',\r\n\r\n\t\t\t// Number - The backdrop padding above & below the label in pixels\r\n\t\t\tbackdropPaddingY: 2,\r\n\r\n\t\t\t// Number - The backdrop padding to the side of the label in pixels\r\n\t\t\tbackdropPaddingX: 2,\r\n\r\n\t\t\tcallback: Ticks.formatters.linear\r\n\t\t},\r\n\r\n\t\tpointLabels: {\r\n\t\t\t// Boolean - if true, show point labels\r\n\t\t\tdisplay: true,\r\n\r\n\t\t\t// Number - Point label font size in pixels\r\n\t\t\tfontSize: 10,\r\n\r\n\t\t\t// Function - Used to convert point labels\r\n\t\t\tcallback: function(label) {\r\n\t\t\t\treturn label;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tfunction getValueCount(scale) {\r\n\t\tvar opts = scale.options;\r\n\t\treturn opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0;\r\n\t}\r\n\r\n\tfunction getPointLabelFontOptions(scale) {\r\n\t\tvar pointLabelOptions = scale.options.pointLabels;\r\n\t\tvar fontSize = helpers.valueOrDefault(pointLabelOptions.fontSize, globalDefaults.defaultFontSize);\r\n\t\tvar fontStyle = helpers.valueOrDefault(pointLabelOptions.fontStyle, globalDefaults.defaultFontStyle);\r\n\t\tvar fontFamily = helpers.valueOrDefault(pointLabelOptions.fontFamily, globalDefaults.defaultFontFamily);\r\n\t\tvar font = helpers.fontString(fontSize, fontStyle, fontFamily);\r\n\r\n\t\treturn {\r\n\t\t\tsize: fontSize,\r\n\t\t\tstyle: fontStyle,\r\n\t\t\tfamily: fontFamily,\r\n\t\t\tfont: font\r\n\t\t};\r\n\t}\r\n\r\n\tfunction measureLabelSize(ctx, fontSize, label) {\r\n\t\tif (helpers.isArray(label)) {\r\n\t\t\treturn {\r\n\t\t\t\tw: helpers.longestText(ctx, ctx.font, label),\r\n\t\t\t\th: (label.length * fontSize) + ((label.length - 1) * 1.5 * fontSize)\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tw: ctx.measureText(label).width,\r\n\t\t\th: fontSize\r\n\t\t};\r\n\t}\r\n\r\n\tfunction determineLimits(angle, pos, size, min, max) {\r\n\t\tif (angle === min || angle === max) {\r\n\t\t\treturn {\r\n\t\t\t\tstart: pos - (size / 2),\r\n\t\t\t\tend: pos + (size / 2)\r\n\t\t\t};\r\n\t\t} else if (angle < min || angle > max) {\r\n\t\t\treturn {\r\n\t\t\t\tstart: pos - size - 5,\r\n\t\t\t\tend: pos\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tstart: pos,\r\n\t\t\tend: pos + size + 5\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Helper function to fit a radial linear scale with point labels\r\n\t */\r\n\tfunction fitWithPointLabels(scale) {\r\n\t\t/*\r\n\t\t * Right, this is really confusing and there is a lot of maths going on here\r\n\t\t * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\r\n\t\t *\r\n\t\t * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\r\n\t\t *\r\n\t\t * Solution:\r\n\t\t *\r\n\t\t * We assume the radius of the polygon is half the size of the canvas at first\r\n\t\t * at each index we check if the text overlaps.\r\n\t\t *\r\n\t\t * Where it does, we store that angle and that index.\r\n\t\t *\r\n\t\t * After finding the largest index and angle we calculate how much we need to remove\r\n\t\t * from the shape radius to move the point inwards by that x.\r\n\t\t *\r\n\t\t * We average the left and right distances to get the maximum shape radius that can fit in the box\r\n\t\t * along with labels.\r\n\t\t *\r\n\t\t * Once we have that, we can find the centre point for the chart, by taking the x text protrusion\r\n\t\t * on each side, removing that from the size, halving it and adding the left x protrusion width.\r\n\t\t *\r\n\t\t * This will mean we have a shape fitted to the canvas, as large as it can be with the labels\r\n\t\t * and position it in the most space efficient manner\r\n\t\t *\r\n\t\t * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\r\n\t\t */\r\n\r\n\t\tvar plFont = getPointLabelFontOptions(scale);\r\n\r\n\t\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\r\n\t\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\r\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\r\n\t\tvar furthestLimits = {\r\n\t\t\tr: scale.width,\r\n\t\t\tl: 0,\r\n\t\t\tt: scale.height,\r\n\t\t\tb: 0\r\n\t\t};\r\n\t\tvar furthestAngles = {};\r\n\t\tvar i, textSize, pointPosition;\r\n\r\n\t\tscale.ctx.font = plFont.font;\r\n\t\tscale._pointLabelSizes = [];\r\n\r\n\t\tvar valueCount = getValueCount(scale);\r\n\t\tfor (i = 0; i < valueCount; i++) {\r\n\t\t\tpointPosition = scale.getPointPosition(i, largestPossibleRadius);\r\n\t\t\ttextSize = measureLabelSize(scale.ctx, plFont.size, scale.pointLabels[i] || '');\r\n\t\t\tscale._pointLabelSizes[i] = textSize;\r\n\r\n\t\t\t// Add quarter circle to make degree 0 mean top of circle\r\n\t\t\tvar angleRadians = scale.getIndexAngle(i);\r\n\t\t\tvar angle = helpers.toDegrees(angleRadians) % 360;\r\n\t\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\r\n\t\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\r\n\r\n\t\t\tif (hLimits.start < furthestLimits.l) {\r\n\t\t\t\tfurthestLimits.l = hLimits.start;\r\n\t\t\t\tfurthestAngles.l = angleRadians;\r\n\t\t\t}\r\n\r\n\t\t\tif (hLimits.end > furthestLimits.r) {\r\n\t\t\t\tfurthestLimits.r = hLimits.end;\r\n\t\t\t\tfurthestAngles.r = angleRadians;\r\n\t\t\t}\r\n\r\n\t\t\tif (vLimits.start < furthestLimits.t) {\r\n\t\t\t\tfurthestLimits.t = vLimits.start;\r\n\t\t\t\tfurthestAngles.t = angleRadians;\r\n\t\t\t}\r\n\r\n\t\t\tif (vLimits.end > furthestLimits.b) {\r\n\t\t\t\tfurthestLimits.b = vLimits.end;\r\n\t\t\t\tfurthestAngles.b = angleRadians;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tscale.setReductions(largestPossibleRadius, furthestLimits, furthestAngles);\r\n\t}\r\n\r\n\t/**\r\n\t * Helper function to fit a radial linear scale with no point labels\r\n\t */\r\n\tfunction fit(scale) {\r\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\r\n\t\tscale.drawingArea = Math.round(largestPossibleRadius);\r\n\t\tscale.setCenterPoint(0, 0, 0, 0);\r\n\t}\r\n\r\n\tfunction getTextAlignForAngle(angle) {\r\n\t\tif (angle === 0 || angle === 180) {\r\n\t\t\treturn 'center';\r\n\t\t} else if (angle < 180) {\r\n\t\t\treturn 'left';\r\n\t\t}\r\n\r\n\t\treturn 'right';\r\n\t}\r\n\r\n\tfunction fillText(ctx, text, position, fontSize) {\r\n\t\tif (helpers.isArray(text)) {\r\n\t\t\tvar y = position.y;\r\n\t\t\tvar spacing = 1.5 * fontSize;\r\n\r\n\t\t\tfor (var i = 0; i < text.length; ++i) {\r\n\t\t\t\tctx.fillText(text[i], position.x, y);\r\n\t\t\t\ty += spacing;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tctx.fillText(text, position.x, position.y);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\r\n\t\tif (angle === 90 || angle === 270) {\r\n\t\t\tposition.y -= (textSize.h / 2);\r\n\t\t} else if (angle > 270 || angle < 90) {\r\n\t\t\tposition.y -= textSize.h;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction drawPointLabels(scale) {\r\n\t\tvar ctx = scale.ctx;\r\n\t\tvar opts = scale.options;\r\n\t\tvar angleLineOpts = opts.angleLines;\r\n\t\tvar pointLabelOpts = opts.pointLabels;\r\n\r\n\t\tctx.lineWidth = angleLineOpts.lineWidth;\r\n\t\tctx.strokeStyle = angleLineOpts.color;\r\n\r\n\t\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\r\n\r\n\t\t// Point Label Font\r\n\t\tvar plFont = getPointLabelFontOptions(scale);\r\n\r\n\t\tctx.textBaseline = 'top';\r\n\r\n\t\tfor (var i = getValueCount(scale) - 1; i >= 0; i--) {\r\n\t\t\tif (angleLineOpts.display) {\r\n\t\t\t\tvar outerPosition = scale.getPointPosition(i, outerDistance);\r\n\t\t\t\tctx.beginPath();\r\n\t\t\t\tctx.moveTo(scale.xCenter, scale.yCenter);\r\n\t\t\t\tctx.lineTo(outerPosition.x, outerPosition.y);\r\n\t\t\t\tctx.stroke();\r\n\t\t\t\tctx.closePath();\r\n\t\t\t}\r\n\r\n\t\t\tif (pointLabelOpts.display) {\r\n\t\t\t\t// Extra 3px out for some label spacing\r\n\t\t\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + 5);\r\n\r\n\t\t\t\t// Keep this in loop since we may support array properties here\r\n\t\t\t\tvar pointLabelFontColor = helpers.valueAtIndexOrDefault(pointLabelOpts.fontColor, i, globalDefaults.defaultFontColor);\r\n\t\t\t\tctx.font = plFont.font;\r\n\t\t\t\tctx.fillStyle = pointLabelFontColor;\r\n\r\n\t\t\t\tvar angleRadians = scale.getIndexAngle(i);\r\n\t\t\t\tvar angle = helpers.toDegrees(angleRadians);\r\n\t\t\t\tctx.textAlign = getTextAlignForAngle(angle);\r\n\t\t\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\r\n\t\t\t\tfillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\r\n\t\tvar ctx = scale.ctx;\r\n\t\tctx.strokeStyle = helpers.valueAtIndexOrDefault(gridLineOpts.color, index - 1);\r\n\t\tctx.lineWidth = helpers.valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1);\r\n\r\n\t\tif (scale.options.gridLines.circular) {\r\n\t\t\t// Draw circular arcs between the points\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.stroke();\r\n\t\t} else {\r\n\t\t\t// Draw straight lines connecting each index\r\n\t\t\tvar valueCount = getValueCount(scale);\r\n\r\n\t\t\tif (valueCount === 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tctx.beginPath();\r\n\t\t\tvar pointPosition = scale.getPointPosition(0, radius);\r\n\t\t\tctx.moveTo(pointPosition.x, pointPosition.y);\r\n\r\n\t\t\tfor (var i = 1; i < valueCount; i++) {\r\n\t\t\t\tpointPosition = scale.getPointPosition(i, radius);\r\n\t\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\r\n\t\t\t}\r\n\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction numberOrZero(param) {\r\n\t\treturn helpers.isNumber(param) ? param : 0;\r\n\t}\r\n\r\n\tvar LinearRadialScale = Chart.LinearScaleBase.extend({\r\n\t\tsetDimensions: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\t\t\t// Set the unconstrained dimension before label rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.height = me.maxHeight;\r\n\t\t\tme.xCenter = Math.round(me.width / 2);\r\n\t\t\tme.yCenter = Math.round(me.height / 2);\r\n\r\n\t\t\tvar minSize = helpers.min([me.height, me.width]);\r\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\r\n\t\t\tme.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2);\r\n\t\t},\r\n\t\tdetermineDataLimits: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar min = Number.POSITIVE_INFINITY;\r\n\t\t\tvar max = Number.NEGATIVE_INFINITY;\r\n\r\n\t\t\thelpers.each(chart.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\r\n\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmin = Math.min(value, min);\r\n\t\t\t\t\t\tmax = Math.max(value, max);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\r\n\t\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\r\n\r\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\r\n\t\t\tme.handleTickRangeOptions();\r\n\t\t},\r\n\t\tgetTickLimit: function() {\r\n\t\t\tvar tickOpts = this.options.ticks;\r\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\r\n\t\t\treturn Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize)));\r\n\t\t},\r\n\t\tconvertTicksToLabels: function() {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tChart.LinearScaleBase.prototype.convertTicksToLabels.call(me);\r\n\r\n\t\t\t// Point labels\r\n\t\t\tme.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me);\r\n\t\t},\r\n\t\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t\t},\r\n\t\tfit: function() {\r\n\t\t\tif (this.options.pointLabels.display) {\r\n\t\t\t\tfitWithPointLabels(this);\r\n\t\t\t} else {\r\n\t\t\t\tfit(this);\r\n\t\t\t}\r\n\t\t},\r\n\t\t/**\r\n\t\t * Set radius reductions and determine new radius and center point\r\n\t\t * @private\r\n\t\t */\r\n\t\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\r\n\t\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\r\n\t\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\r\n\t\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - me.height, 0) / Math.cos(furthestAngles.b);\r\n\r\n\t\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\r\n\t\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\r\n\t\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\r\n\t\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\r\n\r\n\t\t\tme.drawingArea = Math.min(\r\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\r\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\r\n\t\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\r\n\t\t},\r\n\t\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar maxRight = me.width - rightMovement - me.drawingArea;\r\n\t\t\tvar maxLeft = leftMovement + me.drawingArea;\r\n\t\t\tvar maxTop = topMovement + me.drawingArea;\r\n\t\t\tvar maxBottom = me.height - bottomMovement - me.drawingArea;\r\n\r\n\t\t\tme.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left);\r\n\t\t\tme.yCenter = Math.round(((maxTop + maxBottom) / 2) + me.top);\r\n\t\t},\r\n\r\n\t\tgetIndexAngle: function(index) {\r\n\t\t\tvar angleMultiplier = (Math.PI * 2) / getValueCount(this);\r\n\t\t\tvar startAngle = this.chart.options && this.chart.options.startAngle ?\r\n\t\t\t\tthis.chart.options.startAngle :\r\n\t\t\t\t0;\r\n\r\n\t\t\tvar startAngleRadians = startAngle * Math.PI * 2 / 360;\r\n\r\n\t\t\t// Start from the top instead of right, so remove a quarter of the circle\r\n\t\t\treturn index * angleMultiplier + startAngleRadians;\r\n\t\t},\r\n\t\tgetDistanceFromCenterForValue: function(value) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (value === null) {\r\n\t\t\t\treturn 0; // null always in center\r\n\t\t\t}\r\n\r\n\t\t\t// Take into account half font size + the yPadding of the top value\r\n\t\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\r\n\t\t\tif (me.options.ticks.reverse) {\r\n\t\t\t\treturn (me.max - value) * scalingFactor;\r\n\t\t\t}\r\n\t\t\treturn (value - me.min) * scalingFactor;\r\n\t\t},\r\n\t\tgetPointPosition: function(index, distanceFromCenter) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\r\n\t\t\treturn {\r\n\t\t\t\tx: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter,\r\n\t\t\t\ty: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter\r\n\t\t\t};\r\n\t\t},\r\n\t\tgetPointPositionForValue: function(index, value) {\r\n\t\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\r\n\t\t},\r\n\r\n\t\tgetBasePosition: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar min = me.min;\r\n\t\t\tvar max = me.max;\r\n\r\n\t\t\treturn me.getPointPositionForValue(0,\r\n\t\t\t\tme.beginAtZero ? 0 :\r\n\t\t\t\tmin < 0 && max < 0 ? max :\r\n\t\t\t\tmin > 0 && max > 0 ? min :\r\n\t\t\t\t0);\r\n\t\t},\r\n\r\n\t\tdraw: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar gridLineOpts = opts.gridLines;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\r\n\t\t\tif (opts.display) {\r\n\t\t\t\tvar ctx = me.ctx;\r\n\t\t\t\tvar startAngle = this.getIndexAngle(0);\r\n\r\n\t\t\t\t// Tick Font\r\n\t\t\t\tvar tickFontSize = valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\r\n\t\t\t\tvar tickFontStyle = valueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle);\r\n\t\t\t\tvar tickFontFamily = valueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily);\r\n\t\t\t\tvar tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);\r\n\r\n\t\t\t\thelpers.each(me.ticks, function(label, index) {\r\n\t\t\t\t\t// Don't draw a centre value (if it is minimum)\r\n\t\t\t\t\tif (index > 0 || tickOpts.reverse) {\r\n\t\t\t\t\t\tvar yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\r\n\r\n\t\t\t\t\t\t// Draw circular lines around the scale\r\n\t\t\t\t\t\tif (gridLineOpts.display && index !== 0) {\r\n\t\t\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, yCenterOffset, index);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (tickOpts.display) {\r\n\t\t\t\t\t\t\tvar tickFontColor = valueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor);\r\n\t\t\t\t\t\t\tctx.font = tickLabelFont;\r\n\r\n\t\t\t\t\t\t\tctx.save();\r\n\t\t\t\t\t\t\tctx.translate(me.xCenter, me.yCenter);\r\n\t\t\t\t\t\t\tctx.rotate(startAngle);\r\n\r\n\t\t\t\t\t\t\tif (tickOpts.showLabelBackdrop) {\r\n\t\t\t\t\t\t\t\tvar labelWidth = ctx.measureText(label).width;\r\n\t\t\t\t\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\r\n\t\t\t\t\t\t\t\tctx.fillRect(\r\n\t\t\t\t\t\t\t\t\t-labelWidth / 2 - tickOpts.backdropPaddingX,\r\n\t\t\t\t\t\t\t\t\t-yCenterOffset - tickFontSize / 2 - tickOpts.backdropPaddingY,\r\n\t\t\t\t\t\t\t\t\tlabelWidth + tickOpts.backdropPaddingX * 2,\r\n\t\t\t\t\t\t\t\t\ttickFontSize + tickOpts.backdropPaddingY * 2\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tctx.textAlign = 'center';\r\n\t\t\t\t\t\t\tctx.textBaseline = 'middle';\r\n\t\t\t\t\t\t\tctx.fillStyle = tickFontColor;\r\n\t\t\t\t\t\t\tctx.fillText(label, 0, -yCenterOffset);\r\n\t\t\t\t\t\t\tctx.restore();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (opts.angleLines.display || opts.pointLabels.display) {\r\n\t\t\t\t\tdrawPointLabels(me);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tscaleService.registerScaleType('radialLinear', LinearRadialScale, defaultConfig);\r\n};\r\n\r\n},{\"26\":26,\"34\":34,\"35\":35,\"46\":46}],59:[function(require,module,exports){\r\n/* global window: false */\r\n'use strict';\r\n\r\nvar moment = require(1);\r\nmoment = typeof moment === 'function' ? moment : window.moment;\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar Scale = require(33);\r\nvar scaleService = require(34);\r\n\r\n// Integer constants are from the ES6 spec.\r\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\r\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\r\n\r\nvar INTERVALS = {\r\n\tmillisecond: {\r\n\t\tcommon: true,\r\n\t\tsize: 1,\r\n\t\tsteps: [1, 2, 5, 10, 20, 50, 100, 250, 500]\r\n\t},\r\n\tsecond: {\r\n\t\tcommon: true,\r\n\t\tsize: 1000,\r\n\t\tsteps: [1, 2, 5, 10, 15, 30]\r\n\t},\r\n\tminute: {\r\n\t\tcommon: true,\r\n\t\tsize: 60000,\r\n\t\tsteps: [1, 2, 5, 10, 15, 30]\r\n\t},\r\n\thour: {\r\n\t\tcommon: true,\r\n\t\tsize: 3600000,\r\n\t\tsteps: [1, 2, 3, 6, 12]\r\n\t},\r\n\tday: {\r\n\t\tcommon: true,\r\n\t\tsize: 86400000,\r\n\t\tsteps: [1, 2, 5]\r\n\t},\r\n\tweek: {\r\n\t\tcommon: false,\r\n\t\tsize: 604800000,\r\n\t\tsteps: [1, 2, 3, 4]\r\n\t},\r\n\tmonth: {\r\n\t\tcommon: true,\r\n\t\tsize: 2.628e9,\r\n\t\tsteps: [1, 2, 3]\r\n\t},\r\n\tquarter: {\r\n\t\tcommon: false,\r\n\t\tsize: 7.884e9,\r\n\t\tsteps: [1, 2, 3, 4]\r\n\t},\r\n\tyear: {\r\n\t\tcommon: true,\r\n\t\tsize: 3.154e10\r\n\t}\r\n};\r\n\r\nvar UNITS = Object.keys(INTERVALS);\r\n\r\nfunction sorter(a, b) {\r\n\treturn a - b;\r\n}\r\n\r\nfunction arrayUnique(items) {\r\n\tvar hash = {};\r\n\tvar out = [];\r\n\tvar i, ilen, item;\r\n\r\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\titem = items[i];\r\n\t\tif (!hash[item]) {\r\n\t\t\thash[item] = true;\r\n\t\t\tout.push(item);\r\n\t\t}\r\n\t}\r\n\r\n\treturn out;\r\n}\r\n\r\n/**\r\n * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\r\n * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\r\n * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\r\n * extremity (left + width or top + height). Note that it would be more optimized to directly\r\n * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\r\n * to create the lookup table. The table ALWAYS contains at least two items: min and max.\r\n *\r\n * @param {Number[]} timestamps - timestamps sorted from lowest to highest.\r\n * @param {String} distribution - If 'linear', timestamps will be spread linearly along the min\r\n * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\r\n * If 'series', timestamps will be positioned at the same distance from each other. In this\r\n * case, only timestamps that break the time linearity are registered, meaning that in the\r\n * best case, all timestamps are linear, the table contains only min and max.\r\n */\r\nfunction buildLookupTable(timestamps, min, max, distribution) {\r\n\tif (distribution === 'linear' || !timestamps.length) {\r\n\t\treturn [\r\n\t\t\t{time: min, pos: 0},\r\n\t\t\t{time: max, pos: 1}\r\n\t\t];\r\n\t}\r\n\r\n\tvar table = [];\r\n\tvar items = [min];\r\n\tvar i, ilen, prev, curr, next;\r\n\r\n\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\r\n\t\tcurr = timestamps[i];\r\n\t\tif (curr > min && curr < max) {\r\n\t\t\titems.push(curr);\r\n\t\t}\r\n\t}\r\n\r\n\titems.push(max);\r\n\r\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\tnext = items[i + 1];\r\n\t\tprev = items[i - 1];\r\n\t\tcurr = items[i];\r\n\r\n\t\t// only add points that breaks the scale linearity\r\n\t\tif (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\r\n\t\t\ttable.push({time: curr, pos: i / (ilen - 1)});\r\n\t\t}\r\n\t}\r\n\r\n\treturn table;\r\n}\r\n\r\n// @see adapted from http://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\r\nfunction lookup(table, key, value) {\r\n\tvar lo = 0;\r\n\tvar hi = table.length - 1;\r\n\tvar mid, i0, i1;\r\n\r\n\twhile (lo >= 0 && lo <= hi) {\r\n\t\tmid = (lo + hi) >> 1;\r\n\t\ti0 = table[mid - 1] || null;\r\n\t\ti1 = table[mid];\r\n\r\n\t\tif (!i0) {\r\n\t\t\t// given value is outside table (before first item)\r\n\t\t\treturn {lo: null, hi: i1};\r\n\t\t} else if (i1[key] < value) {\r\n\t\t\tlo = mid + 1;\r\n\t\t} else if (i0[key] > value) {\r\n\t\t\thi = mid - 1;\r\n\t\t} else {\r\n\t\t\treturn {lo: i0, hi: i1};\r\n\t\t}\r\n\t}\r\n\r\n\t// given value is outside table (after last item)\r\n\treturn {lo: i1, hi: null};\r\n}\r\n\r\n/**\r\n * Linearly interpolates the given source `value` using the table items `skey` values and\r\n * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\r\n * returns the position for a timestamp equal to 42. If value is out of bounds, values at\r\n * index [0, 1] or [n - 1, n] are used for the interpolation.\r\n */\r\nfunction interpolate(table, skey, sval, tkey) {\r\n\tvar range = lookup(table, skey, sval);\r\n\r\n\t// Note: the lookup table ALWAYS contains at least 2 items (min and max)\r\n\tvar prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\r\n\tvar next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\r\n\r\n\tvar span = next[skey] - prev[skey];\r\n\tvar ratio = span ? (sval - prev[skey]) / span : 0;\r\n\tvar offset = (next[tkey] - prev[tkey]) * ratio;\r\n\r\n\treturn prev[tkey] + offset;\r\n}\r\n\r\n/**\r\n * Convert the given value to a moment object using the given time options.\r\n * @see http://momentjs.com/docs/#/parsing/\r\n */\r\nfunction momentify(value, options) {\r\n\tvar parser = options.parser;\r\n\tvar format = options.parser || options.format;\r\n\r\n\tif (typeof parser === 'function') {\r\n\t\treturn parser(value);\r\n\t}\r\n\r\n\tif (typeof value === 'string' && typeof format === 'string') {\r\n\t\treturn moment(value, format);\r\n\t}\r\n\r\n\tif (!(value instanceof moment)) {\r\n\t\tvalue = moment(value);\r\n\t}\r\n\r\n\tif (value.isValid()) {\r\n\t\treturn value;\r\n\t}\r\n\r\n\t// Labels are in an incompatible moment format and no `parser` has been provided.\r\n\t// The user might still use the deprecated `format` option to convert his inputs.\r\n\tif (typeof format === 'function') {\r\n\t\treturn format(value);\r\n\t}\r\n\r\n\treturn value;\r\n}\r\n\r\nfunction parse(input, scale) {\r\n\tif (helpers.isNullOrUndef(input)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar options = scale.options.time;\r\n\tvar value = momentify(scale.getRightValue(input), options);\r\n\tif (!value.isValid()) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (options.round) {\r\n\t\tvalue.startOf(options.round);\r\n\t}\r\n\r\n\treturn value.valueOf();\r\n}\r\n\r\n/**\r\n * Returns the number of unit to skip to be able to display up to `capacity` number of ticks\r\n * in `unit` for the given `min` / `max` range and respecting the interval steps constraints.\r\n */\r\nfunction determineStepSize(min, max, unit, capacity) {\r\n\tvar range = max - min;\r\n\tvar interval = INTERVALS[unit];\r\n\tvar milliseconds = interval.size;\r\n\tvar steps = interval.steps;\r\n\tvar i, ilen, factor;\r\n\r\n\tif (!steps) {\r\n\t\treturn Math.ceil(range / (capacity * milliseconds));\r\n\t}\r\n\r\n\tfor (i = 0, ilen = steps.length; i < ilen; ++i) {\r\n\t\tfactor = steps[i];\r\n\t\tif (Math.ceil(range / (milliseconds * factor)) <= capacity) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\treturn factor;\r\n}\r\n\r\n/**\r\n * Figures out what unit results in an appropriate number of auto-generated ticks\r\n */\r\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\r\n\tvar ilen = UNITS.length;\r\n\tvar i, interval, factor;\r\n\r\n\tfor (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\r\n\t\tinterval = INTERVALS[UNITS[i]];\r\n\t\tfactor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER;\r\n\r\n\t\tif (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\r\n\t\t\treturn UNITS[i];\r\n\t\t}\r\n\t}\r\n\r\n\treturn UNITS[ilen - 1];\r\n}\r\n\r\n/**\r\n * Figures out what unit to format a set of ticks with\r\n */\r\nfunction determineUnitForFormatting(ticks, minUnit, min, max) {\r\n\tvar duration = moment.duration(moment(max).diff(moment(min)));\r\n\tvar ilen = UNITS.length;\r\n\tvar i, unit;\r\n\r\n\tfor (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) {\r\n\t\tunit = UNITS[i];\r\n\t\tif (INTERVALS[unit].common && duration.as(unit) >= ticks.length) {\r\n\t\t\treturn unit;\r\n\t\t}\r\n\t}\r\n\r\n\treturn UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\r\n}\r\n\r\nfunction determineMajorUnit(unit) {\r\n\tfor (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\r\n\t\tif (INTERVALS[UNITS[i]].common) {\r\n\t\t\treturn UNITS[i];\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Generates a maximum of `capacity` timestamps between min and max, rounded to the\r\n * `minor` unit, aligned on the `major` unit and using the given scale time `options`.\r\n * Important: this method can return ticks outside the min and max range, it's the\r\n * responsibility of the calling code to clamp values if needed.\r\n */\r\nfunction generate(min, max, capacity, options) {\r\n\tvar timeOpts = options.time;\r\n\tvar minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\r\n\tvar major = determineMajorUnit(minor);\r\n\tvar stepSize = helpers.valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize);\r\n\tvar weekday = minor === 'week' ? timeOpts.isoWeekday : false;\r\n\tvar majorTicksEnabled = options.ticks.major.enabled;\r\n\tvar interval = INTERVALS[minor];\r\n\tvar first = moment(min);\r\n\tvar last = moment(max);\r\n\tvar ticks = [];\r\n\tvar time;\r\n\r\n\tif (!stepSize) {\r\n\t\tstepSize = determineStepSize(min, max, minor, capacity);\r\n\t}\r\n\r\n\t// For 'week' unit, handle the first day of week option\r\n\tif (weekday) {\r\n\t\tfirst = first.isoWeekday(weekday);\r\n\t\tlast = last.isoWeekday(weekday);\r\n\t}\r\n\r\n\t// Align first/last ticks on unit\r\n\tfirst = first.startOf(weekday ? 'day' : minor);\r\n\tlast = last.startOf(weekday ? 'day' : minor);\r\n\r\n\t// Make sure that the last tick include max\r\n\tif (last < max) {\r\n\t\tlast.add(1, minor);\r\n\t}\r\n\r\n\ttime = moment(first);\r\n\r\n\tif (majorTicksEnabled && major && !weekday && !timeOpts.round) {\r\n\t\t// Align the first tick on the previous `minor` unit aligned on the `major` unit:\r\n\t\t// we first aligned time on the previous `major` unit then add the number of full\r\n\t\t// stepSize there is between first and the previous major time.\r\n\t\ttime.startOf(major);\r\n\t\ttime.add(~~((first - time) / (interval.size * stepSize)) * stepSize, minor);\r\n\t}\r\n\r\n\tfor (; time < last; time.add(stepSize, minor)) {\r\n\t\tticks.push(+time);\r\n\t}\r\n\r\n\tticks.push(+time);\r\n\r\n\treturn ticks;\r\n}\r\n\r\n/**\r\n * Returns the right and left offsets from edges in the form of {left, right}.\r\n * Offsets are added when the `offset` option is true.\r\n */\r\nfunction computeOffsets(table, ticks, min, max, options) {\r\n\tvar left = 0;\r\n\tvar right = 0;\r\n\tvar upper, lower;\r\n\r\n\tif (options.offset && ticks.length) {\r\n\t\tif (!options.time.min) {\r\n\t\t\tupper = ticks.length > 1 ? ticks[1] : max;\r\n\t\t\tlower = ticks[0];\r\n\t\t\tleft = (\r\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\r\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\r\n\t\t\t) / 2;\r\n\t\t}\r\n\t\tif (!options.time.max) {\r\n\t\t\tupper = ticks[ticks.length - 1];\r\n\t\t\tlower = ticks.length > 1 ? ticks[ticks.length - 2] : min;\r\n\t\t\tright = (\r\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\r\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\r\n\t\t\t) / 2;\r\n\t\t}\r\n\t}\r\n\r\n\treturn {left: left, right: right};\r\n}\r\n\r\nfunction ticksFromTimestamps(values, majorUnit) {\r\n\tvar ticks = [];\r\n\tvar i, ilen, value, major;\r\n\r\n\tfor (i = 0, ilen = values.length; i < ilen; ++i) {\r\n\t\tvalue = values[i];\r\n\t\tmajor = majorUnit ? value === +moment(value).startOf(majorUnit) : false;\r\n\r\n\t\tticks.push({\r\n\t\t\tvalue: value,\r\n\t\t\tmajor: major\r\n\t\t});\r\n\t}\r\n\r\n\treturn ticks;\r\n}\r\n\r\nfunction determineLabelFormat(data, timeOpts) {\r\n\tvar i, momentDate, hasTime;\r\n\tvar ilen = data.length;\r\n\r\n\t// find the label with the most parts (milliseconds, minutes, etc.)\r\n\t// format all labels with the same level of detail as the most specific label\r\n\tfor (i = 0; i < ilen; i++) {\r\n\t\tmomentDate = momentify(data[i], timeOpts);\r\n\t\tif (momentDate.millisecond() !== 0) {\r\n\t\t\treturn 'MMM D, YYYY h:mm:ss.SSS a';\r\n\t\t}\r\n\t\tif (momentDate.second() !== 0 || momentDate.minute() !== 0 || momentDate.hour() !== 0) {\r\n\t\t\thasTime = true;\r\n\t\t}\r\n\t}\r\n\tif (hasTime) {\r\n\t\treturn 'MMM D, YYYY h:mm:ss a';\r\n\t}\r\n\treturn 'MMM D, YYYY';\r\n}\r\n\r\nmodule.exports = function() {\r\n\r\n\tvar defaultConfig = {\r\n\t\tposition: 'bottom',\r\n\r\n\t\t/**\r\n\t\t * Data distribution along the scale:\r\n\t\t * - 'linear': data are spread according to their time (distances can vary),\r\n\t\t * - 'series': data are spread at the same distance from each other.\r\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\r\n\t\t * @since 2.7.0\r\n\t\t */\r\n\t\tdistribution: 'linear',\r\n\r\n\t\t/**\r\n\t\t * Scale boundary strategy (bypassed by min/max time options)\r\n\t\t * - `data`: make sure data are fully visible, ticks outside are removed\r\n\t\t * - `ticks`: make sure ticks are fully visible, data outside are truncated\r\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4556\r\n\t\t * @since 2.7.0\r\n\t\t */\r\n\t\tbounds: 'data',\r\n\r\n\t\ttime: {\r\n\t\t\tparser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\r\n\t\t\tformat: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/\r\n\t\t\tunit: false, // false == automatic or override with week, month, year, etc.\r\n\t\t\tround: false, // none, or override with week, month, year, etc.\r\n\t\t\tdisplayFormat: false, // DEPRECATED\r\n\t\t\tisoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/\r\n\t\t\tminUnit: 'millisecond',\r\n\r\n\t\t\t// defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/\r\n\t\t\tdisplayFormats: {\r\n\t\t\t\tmillisecond: 'h:mm:ss.SSS a', // 11:20:01.123 AM,\r\n\t\t\t\tsecond: 'h:mm:ss a', // 11:20:01 AM\r\n\t\t\t\tminute: 'h:mm a', // 11:20 AM\r\n\t\t\t\thour: 'hA', // 5PM\r\n\t\t\t\tday: 'MMM D', // Sep 4\r\n\t\t\t\tweek: 'll', // Week 46, or maybe \"[W]WW - YYYY\" ?\r\n\t\t\t\tmonth: 'MMM YYYY', // Sept 2015\r\n\t\t\t\tquarter: '[Q]Q - YYYY', // Q3\r\n\t\t\t\tyear: 'YYYY' // 2015\r\n\t\t\t},\r\n\t\t},\r\n\t\tticks: {\r\n\t\t\tautoSkip: false,\r\n\r\n\t\t\t/**\r\n\t\t\t * Ticks generation input values:\r\n\t\t\t * - 'auto': generates \"optimal\" ticks based on scale size and time options.\r\n\t\t\t * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\r\n\t\t\t * - 'labels': generates ticks from user given `data.labels` values ONLY.\r\n\t\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\r\n\t\t\t * @since 2.7.0\r\n\t\t\t */\r\n\t\t\tsource: 'auto',\r\n\r\n\t\t\tmajor: {\r\n\t\t\t\tenabled: false\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tvar TimeScale = Scale.extend({\r\n\t\tinitialize: function() {\r\n\t\t\tif (!moment) {\r\n\t\t\t\tthrow new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com');\r\n\t\t\t}\r\n\r\n\t\t\tthis.mergeTicksOptions();\r\n\r\n\t\t\tScale.prototype.initialize.call(this);\r\n\t\t},\r\n\r\n\t\tupdate: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = me.options;\r\n\r\n\t\t\t// DEPRECATIONS: output a message only one time per update\r\n\t\t\tif (options.time && options.time.format) {\r\n\t\t\t\tconsole.warn('options.time.format is deprecated and replaced by options.time.parser.');\r\n\t\t\t}\r\n\r\n\t\t\treturn Scale.prototype.update.apply(me, arguments);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Allows data to be referenced via 't' attribute\r\n\t\t */\r\n\t\tgetRightValue: function(rawValue) {\r\n\t\t\tif (rawValue && rawValue.t !== undefined) {\r\n\t\t\t\trawValue = rawValue.t;\r\n\t\t\t}\r\n\t\t\treturn Scale.prototype.getRightValue.call(this, rawValue);\r\n\t\t},\r\n\r\n\t\tdetermineDataLimits: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar timeOpts = me.options.time;\r\n\t\t\tvar unit = timeOpts.unit || 'day';\r\n\t\t\tvar min = MAX_INTEGER;\r\n\t\t\tvar max = MIN_INTEGER;\r\n\t\t\tvar timestamps = [];\r\n\t\t\tvar datasets = [];\r\n\t\t\tvar labels = [];\r\n\t\t\tvar i, j, ilen, jlen, data, timestamp;\r\n\r\n\t\t\t// Convert labels to timestamps\r\n\t\t\tfor (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) {\r\n\t\t\t\tlabels.push(parse(chart.data.labels[i], me));\r\n\t\t\t}\r\n\r\n\t\t\t// Convert data to timestamps\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\t\tdata = chart.data.datasets[i].data;\r\n\r\n\t\t\t\t\t// Let's consider that all data have the same format.\r\n\t\t\t\t\tif (helpers.isObject(data[0])) {\r\n\t\t\t\t\t\tdatasets[i] = [];\r\n\r\n\t\t\t\t\t\tfor (j = 0, jlen = data.length; j < jlen; ++j) {\r\n\t\t\t\t\t\t\ttimestamp = parse(data[j], me);\r\n\t\t\t\t\t\t\ttimestamps.push(timestamp);\r\n\t\t\t\t\t\t\tdatasets[i][j] = timestamp;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttimestamps.push.apply(timestamps, labels);\r\n\t\t\t\t\t\tdatasets[i] = labels.slice(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdatasets[i] = [];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (labels.length) {\r\n\t\t\t\t// Sort labels **after** data have been converted\r\n\t\t\t\tlabels = arrayUnique(labels).sort(sorter);\r\n\t\t\t\tmin = Math.min(min, labels[0]);\r\n\t\t\t\tmax = Math.max(max, labels[labels.length - 1]);\r\n\t\t\t}\r\n\r\n\t\t\tif (timestamps.length) {\r\n\t\t\t\ttimestamps = arrayUnique(timestamps).sort(sorter);\r\n\t\t\t\tmin = Math.min(min, timestamps[0]);\r\n\t\t\t\tmax = Math.max(max, timestamps[timestamps.length - 1]);\r\n\t\t\t}\r\n\r\n\t\t\tmin = parse(timeOpts.min, me) || min;\r\n\t\t\tmax = parse(timeOpts.max, me) || max;\r\n\r\n\t\t\t// In case there is no valid min/max, set limits based on unit time option\r\n\t\t\tmin = min === MAX_INTEGER ? +moment().startOf(unit) : min;\r\n\t\t\tmax = max === MIN_INTEGER ? +moment().endOf(unit) + 1 : max;\r\n\r\n\t\t\t// Make sure that max is strictly higher than min (required by the lookup table)\r\n\t\t\tme.min = Math.min(min, max);\r\n\t\t\tme.max = Math.max(min + 1, max);\r\n\r\n\t\t\t// PRIVATE\r\n\t\t\tme._horizontal = me.isHorizontal();\r\n\t\t\tme._table = [];\r\n\t\t\tme._timestamps = {\r\n\t\t\t\tdata: timestamps,\r\n\t\t\t\tdatasets: datasets,\r\n\t\t\t\tlabels: labels\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tbuildTicks: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar min = me.min;\r\n\t\t\tvar max = me.max;\r\n\t\t\tvar options = me.options;\r\n\t\t\tvar timeOpts = options.time;\r\n\t\t\tvar timestamps = [];\r\n\t\t\tvar ticks = [];\r\n\t\t\tvar i, ilen, timestamp;\r\n\r\n\t\t\tswitch (options.ticks.source) {\r\n\t\t\tcase 'data':\r\n\t\t\t\ttimestamps = me._timestamps.data;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'labels':\r\n\t\t\t\ttimestamps = me._timestamps.labels;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'auto':\r\n\t\t\tdefault:\r\n\t\t\t\ttimestamps = generate(min, max, me.getLabelCapacity(min), options);\r\n\t\t\t}\r\n\r\n\t\t\tif (options.bounds === 'ticks' && timestamps.length) {\r\n\t\t\t\tmin = timestamps[0];\r\n\t\t\t\tmax = timestamps[timestamps.length - 1];\r\n\t\t\t}\r\n\r\n\t\t\t// Enforce limits with user min/max options\r\n\t\t\tmin = parse(timeOpts.min, me) || min;\r\n\t\t\tmax = parse(timeOpts.max, me) || max;\r\n\r\n\t\t\t// Remove ticks outside the min/max range\r\n\t\t\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\r\n\t\t\t\ttimestamp = timestamps[i];\r\n\t\t\t\tif (timestamp >= min && timestamp <= max) {\r\n\t\t\t\t\tticks.push(timestamp);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tme.min = min;\r\n\t\t\tme.max = max;\r\n\r\n\t\t\t// PRIVATE\r\n\t\t\tme._unit = timeOpts.unit || determineUnitForFormatting(ticks, timeOpts.minUnit, me.min, me.max);\r\n\t\t\tme._majorUnit = determineMajorUnit(me._unit);\r\n\t\t\tme._table = buildLookupTable(me._timestamps.data, min, max, options.distribution);\r\n\t\t\tme._offsets = computeOffsets(me._table, ticks, min, max, options);\r\n\t\t\tme._labelFormat = determineLabelFormat(me._timestamps.data, timeOpts);\r\n\r\n\t\t\treturn ticksFromTimestamps(ticks, me._majorUnit);\r\n\t\t},\r\n\r\n\t\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar data = me.chart.data;\r\n\t\t\tvar timeOpts = me.options.time;\r\n\t\t\tvar label = data.labels && index < data.labels.length ? data.labels[index] : '';\r\n\t\t\tvar value = data.datasets[datasetIndex].data[index];\r\n\r\n\t\t\tif (helpers.isObject(value)) {\r\n\t\t\t\tlabel = me.getRightValue(value);\r\n\t\t\t}\r\n\t\t\tif (timeOpts.tooltipFormat) {\r\n\t\t\t\treturn momentify(label, timeOpts).format(timeOpts.tooltipFormat);\r\n\t\t\t}\r\n\t\t\tif (typeof label === 'string') {\r\n\t\t\t\treturn label;\r\n\t\t\t}\r\n\r\n\t\t\treturn momentify(label, timeOpts).format(me._labelFormat);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Function to format an individual tick mark\r\n\t\t * @private\r\n\t\t */\r\n\t\ttickFormatFunction: function(tick, index, ticks, formatOverride) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = me.options;\r\n\t\t\tvar time = tick.valueOf();\r\n\t\t\tvar formats = options.time.displayFormats;\r\n\t\t\tvar minorFormat = formats[me._unit];\r\n\t\t\tvar majorUnit = me._majorUnit;\r\n\t\t\tvar majorFormat = formats[majorUnit];\r\n\t\t\tvar majorTime = tick.clone().startOf(majorUnit).valueOf();\r\n\t\t\tvar majorTickOpts = options.ticks.major;\r\n\t\t\tvar major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime;\r\n\t\t\tvar label = tick.format(formatOverride ? formatOverride : major ? majorFormat : minorFormat);\r\n\t\t\tvar tickOpts = major ? majorTickOpts : options.ticks.minor;\r\n\t\t\tvar formatter = helpers.valueOrDefault(tickOpts.callback, tickOpts.userCallback);\r\n\r\n\t\t\treturn formatter ? formatter(label, index, ticks) : label;\r\n\t\t},\r\n\r\n\t\tconvertTicksToLabels: function(ticks) {\r\n\t\t\tvar labels = [];\r\n\t\t\tvar i, ilen;\r\n\r\n\t\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\t\t\tlabels.push(this.tickFormatFunction(moment(ticks[i].value), i, ticks));\r\n\t\t\t}\r\n\r\n\t\t\treturn labels;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetPixelForOffset: function(time) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar size = me._horizontal ? me.width : me.height;\r\n\t\t\tvar start = me._horizontal ? me.left : me.top;\r\n\t\t\tvar pos = interpolate(me._table, 'time', time, 'pos');\r\n\r\n\t\t\treturn start + size * (me._offsets.left + pos) / (me._offsets.left + 1 + me._offsets.right);\r\n\t\t},\r\n\r\n\t\tgetPixelForValue: function(value, index, datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar time = null;\r\n\r\n\t\t\tif (index !== undefined && datasetIndex !== undefined) {\r\n\t\t\t\ttime = me._timestamps.datasets[datasetIndex][index];\r\n\t\t\t}\r\n\r\n\t\t\tif (time === null) {\r\n\t\t\t\ttime = parse(value, me);\r\n\t\t\t}\r\n\r\n\t\t\tif (time !== null) {\r\n\t\t\t\treturn me.getPixelForOffset(time);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetPixelForTick: function(index) {\r\n\t\t\tvar ticks = this.getTicks();\r\n\t\t\treturn index >= 0 && index < ticks.length ?\r\n\t\t\t\tthis.getPixelForOffset(ticks[index].value) :\r\n\t\t\t\tnull;\r\n\t\t},\r\n\r\n\t\tgetValueForPixel: function(pixel) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar size = me._horizontal ? me.width : me.height;\r\n\t\t\tvar start = me._horizontal ? me.left : me.top;\r\n\t\t\tvar pos = (size ? (pixel - start) / size : 0) * (me._offsets.left + 1 + me._offsets.left) - me._offsets.right;\r\n\t\t\tvar time = interpolate(me._table, 'pos', pos, 'time');\r\n\r\n\t\t\treturn moment(time);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Crude approximation of what the label width might be\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetLabelWidth: function(label) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar ticksOpts = me.options.ticks;\r\n\t\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\r\n\t\t\tvar angle = helpers.toRadians(ticksOpts.maxRotation);\r\n\t\t\tvar cosRotation = Math.cos(angle);\r\n\t\t\tvar sinRotation = Math.sin(angle);\r\n\t\t\tvar tickFontSize = helpers.valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize);\r\n\r\n\t\t\treturn (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetLabelCapacity: function(exampleTime) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tvar formatOverride = me.options.time.displayFormats.millisecond;\t// Pick the longest format for guestimation\r\n\r\n\t\t\tvar exampleLabel = me.tickFormatFunction(moment(exampleTime), 0, [], formatOverride);\r\n\t\t\tvar tickLabelWidth = me.getLabelWidth(exampleLabel);\r\n\t\t\tvar innerWidth = me.isHorizontal() ? me.width : me.height;\r\n\r\n\t\t\tvar capacity = Math.floor(innerWidth / tickLabelWidth);\r\n\t\t\treturn capacity > 0 ? capacity : 1;\r\n\t\t}\r\n\t});\r\n\r\n\tscaleService.registerScaleType('time', TimeScale, defaultConfig);\r\n};\r\n\r\n},{\"1\":1,\"26\":26,\"33\":33,\"34\":34,\"46\":46}]},{},[7])(7)\r\n});\r\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","var $ = require('../internals/export');\n\nvar log = Math.log;\nvar LOG10E = Math.LOG10E;\n\n// `Math.log10` method\n// https://tc39.github.io/ecma262/#sec-math.log10\n$({ target: 'Math', stat: true }, {\n log10: function log10(x) {\n return log(x) * LOG10E;\n }\n});\n","var $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\n// `Math.sign` method\n// https://tc39.github.io/ecma262/#sec-math.sign\n$({ target: 'Math', stat: true }, {\n sign: sign\n});\n","// `Math.sign` method implementation\n// https://tc39.github.io/ecma262/#sec-math.sign\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","var $ = require('../internals/export');\n\n// `Number.EPSILON` constant\n// https://tc39.github.io/ecma262/#sec-number.epsilon\n$({ target: 'Number', stat: true }, {\n EPSILON: Math.pow(2, -52)\n});\n","/*!\r\n * chartjs-plugin-datalabels v0.7.0\r\n * https://chartjs-plugin-datalabels.netlify.com\r\n * (c) 2019 Chart.js Contributors\r\n * Released under the MIT license\r\n */\r\n(function (global, factory) {\r\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('chart.js')) :\r\ntypeof define === 'function' && define.amd ? define(['chart.js'], factory) :\r\n(global = global || self, global.ChartDataLabels = factory(global.Chart));\r\n}(this, function (Chart) { 'use strict';\r\n\r\nChart = Chart && Chart.hasOwnProperty('default') ? Chart['default'] : Chart;\r\n\r\nvar helpers = Chart.helpers;\r\n\r\nvar devicePixelRatio = (function() {\r\n\tif (typeof window !== 'undefined') {\r\n\t\tif (window.devicePixelRatio) {\r\n\t\t\treturn window.devicePixelRatio;\r\n\t\t}\r\n\r\n\t\t// devicePixelRatio is undefined on IE10\r\n\t\t// https://stackoverflow.com/a/20204180/8837887\r\n\t\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/85\r\n\t\tvar screen = window.screen;\r\n\t\tif (screen) {\r\n\t\t\treturn (screen.deviceXDPI || 1) / (screen.logicalXDPI || 1);\r\n\t\t}\r\n\t}\r\n\r\n\treturn 1;\r\n}());\r\n\r\nvar utils = {\r\n\t// @todo move this in Chart.helpers.toTextLines\r\n\ttoTextLines: function(inputs) {\r\n\t\tvar lines = [];\r\n\t\tvar input;\r\n\r\n\t\tinputs = [].concat(inputs);\r\n\t\twhile (inputs.length) {\r\n\t\t\tinput = inputs.pop();\r\n\t\t\tif (typeof input === 'string') {\r\n\t\t\t\tlines.unshift.apply(lines, input.split('\\n'));\r\n\t\t\t} else if (Array.isArray(input)) {\r\n\t\t\t\tinputs.push.apply(inputs, input);\r\n\t\t\t} else if (!helpers.isNullOrUndef(inputs)) {\r\n\t\t\t\tlines.unshift('' + input);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn lines;\r\n\t},\r\n\r\n\t// @todo move this method in Chart.helpers.canvas.toFont (deprecates helpers.fontString)\r\n\t// @see https://developer.mozilla.org/en-US/docs/Web/CSS/font\r\n\ttoFontString: function(font) {\r\n\t\tif (!font || helpers.isNullOrUndef(font.size) || helpers.isNullOrUndef(font.family)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn (font.style ? font.style + ' ' : '')\r\n\t\t\t+ (font.weight ? font.weight + ' ' : '')\r\n\t\t\t+ font.size + 'px '\r\n\t\t\t+ font.family;\r\n\t},\r\n\r\n\t// @todo move this in Chart.helpers.canvas.textSize\r\n\t// @todo cache calls of measureText if font doesn't change?!\r\n\ttextSize: function(ctx, lines, font) {\r\n\t\tvar items = [].concat(lines);\r\n\t\tvar ilen = items.length;\r\n\t\tvar prev = ctx.font;\r\n\t\tvar width = 0;\r\n\t\tvar i;\r\n\r\n\t\tctx.font = font.string;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\twidth = Math.max(ctx.measureText(items[i]).width, width);\r\n\t\t}\r\n\r\n\t\tctx.font = prev;\r\n\r\n\t\treturn {\r\n\t\t\theight: ilen * font.lineHeight,\r\n\t\t\twidth: width\r\n\t\t};\r\n\t},\r\n\r\n\t// @todo move this method in Chart.helpers.options.toFont\r\n\tparseFont: function(value) {\r\n\t\tvar global = Chart.defaults.global;\r\n\t\tvar size = helpers.valueOrDefault(value.size, global.defaultFontSize);\r\n\t\tvar font = {\r\n\t\t\tfamily: helpers.valueOrDefault(value.family, global.defaultFontFamily),\r\n\t\t\tlineHeight: helpers.options.toLineHeight(value.lineHeight, size),\r\n\t\t\tsize: size,\r\n\t\t\tstyle: helpers.valueOrDefault(value.style, global.defaultFontStyle),\r\n\t\t\tweight: helpers.valueOrDefault(value.weight, null),\r\n\t\t\tstring: ''\r\n\t\t};\r\n\r\n\t\tfont.string = utils.toFontString(font);\r\n\t\treturn font;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns value bounded by min and max. This is equivalent to max(min, min(value, max)).\r\n\t * @todo move this method in Chart.helpers.bound\r\n\t * https://doc.qt.io/qt-5/qtglobal.html#qBound\r\n\t */\r\n\tbound: function(min, value, max) {\r\n\t\treturn Math.max(min, Math.min(value, max));\r\n\t},\r\n\r\n\t/**\r\n\t * Returns an array of pair [value, state] where state is:\r\n\t * * -1: value is only in a0 (removed)\r\n\t * * 1: value is only in a1 (added)\r\n\t */\r\n\tarrayDiff: function(a0, a1) {\r\n\t\tvar prev = a0.slice();\r\n\t\tvar updates = [];\r\n\t\tvar i, j, ilen, v;\r\n\r\n\t\tfor (i = 0, ilen = a1.length; i < ilen; ++i) {\r\n\t\t\tv = a1[i];\r\n\t\t\tj = prev.indexOf(v);\r\n\r\n\t\t\tif (j === -1) {\r\n\t\t\t\tupdates.push([v, 1]);\r\n\t\t\t} else {\r\n\t\t\t\tprev.splice(j, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = prev.length; i < ilen; ++i) {\r\n\t\t\tupdates.push([prev[i], -1]);\r\n\t\t}\r\n\r\n\t\treturn updates;\r\n\t},\r\n\r\n\t/**\r\n\t * https://github.com/chartjs/chartjs-plugin-datalabels/issues/70\r\n\t */\r\n\trasterize: function(v) {\r\n\t\treturn Math.round(v * devicePixelRatio) / devicePixelRatio;\r\n\t}\r\n};\r\n\r\nfunction orient(point, origin) {\r\n\tvar x0 = origin.x;\r\n\tvar y0 = origin.y;\r\n\r\n\tif (x0 === null) {\r\n\t\treturn {x: 0, y: -1};\r\n\t}\r\n\tif (y0 === null) {\r\n\t\treturn {x: 1, y: 0};\r\n\t}\r\n\r\n\tvar dx = point.x - x0;\r\n\tvar dy = point.y - y0;\r\n\tvar ln = Math.sqrt(dx * dx + dy * dy);\r\n\r\n\treturn {\r\n\t\tx: ln ? dx / ln : 0,\r\n\t\ty: ln ? dy / ln : -1\r\n\t};\r\n}\r\n\r\nfunction aligned(x, y, vx, vy, align) {\r\n\tswitch (align) {\r\n\tcase 'center':\r\n\t\tvx = vy = 0;\r\n\t\tbreak;\r\n\tcase 'bottom':\r\n\t\tvx = 0;\r\n\t\tvy = 1;\r\n\t\tbreak;\r\n\tcase 'right':\r\n\t\tvx = 1;\r\n\t\tvy = 0;\r\n\t\tbreak;\r\n\tcase 'left':\r\n\t\tvx = -1;\r\n\t\tvy = 0;\r\n\t\tbreak;\r\n\tcase 'top':\r\n\t\tvx = 0;\r\n\t\tvy = -1;\r\n\t\tbreak;\r\n\tcase 'start':\r\n\t\tvx = -vx;\r\n\t\tvy = -vy;\r\n\t\tbreak;\r\n\tcase 'end':\r\n\t\t// keep natural orientation\r\n\t\tbreak;\r\n\tdefault:\r\n\t\t// clockwise rotation (in degree)\r\n\t\talign *= (Math.PI / 180);\r\n\t\tvx = Math.cos(align);\r\n\t\tvy = Math.sin(align);\r\n\t\tbreak;\r\n\t}\r\n\r\n\treturn {\r\n\t\tx: x,\r\n\t\ty: y,\r\n\t\tvx: vx,\r\n\t\tvy: vy\r\n\t};\r\n}\r\n\r\n// Line clipping (Cohen–Sutherland algorithm)\r\n// https://en.wikipedia.org/wiki/Cohen–Sutherland_algorithm\r\n\r\nvar R_INSIDE = 0;\r\nvar R_LEFT = 1;\r\nvar R_RIGHT = 2;\r\nvar R_BOTTOM = 4;\r\nvar R_TOP = 8;\r\n\r\nfunction region(x, y, rect) {\r\n\tvar res = R_INSIDE;\r\n\r\n\tif (x < rect.left) {\r\n\t\tres |= R_LEFT;\r\n\t} else if (x > rect.right) {\r\n\t\tres |= R_RIGHT;\r\n\t}\r\n\tif (y < rect.top) {\r\n\t\tres |= R_TOP;\r\n\t} else if (y > rect.bottom) {\r\n\t\tres |= R_BOTTOM;\r\n\t}\r\n\r\n\treturn res;\r\n}\r\n\r\nfunction clipped(segment, area) {\r\n\tvar x0 = segment.x0;\r\n\tvar y0 = segment.y0;\r\n\tvar x1 = segment.x1;\r\n\tvar y1 = segment.y1;\r\n\tvar r0 = region(x0, y0, area);\r\n\tvar r1 = region(x1, y1, area);\r\n\tvar r, x, y;\r\n\r\n\t// eslint-disable-next-line no-constant-condition\r\n\twhile (true) {\r\n\t\tif (!(r0 | r1) || (r0 & r1)) {\r\n\t\t\t// both points inside or on the same side: no clipping\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\t// at least one point is outside\r\n\t\tr = r0 || r1;\r\n\r\n\t\tif (r & R_TOP) {\r\n\t\t\tx = x0 + (x1 - x0) * (area.top - y0) / (y1 - y0);\r\n\t\t\ty = area.top;\r\n\t\t} else if (r & R_BOTTOM) {\r\n\t\t\tx = x0 + (x1 - x0) * (area.bottom - y0) / (y1 - y0);\r\n\t\t\ty = area.bottom;\r\n\t\t} else if (r & R_RIGHT) {\r\n\t\t\ty = y0 + (y1 - y0) * (area.right - x0) / (x1 - x0);\r\n\t\t\tx = area.right;\r\n\t\t} else if (r & R_LEFT) {\r\n\t\t\ty = y0 + (y1 - y0) * (area.left - x0) / (x1 - x0);\r\n\t\t\tx = area.left;\r\n\t\t}\r\n\r\n\t\tif (r === r0) {\r\n\t\t\tx0 = x;\r\n\t\t\ty0 = y;\r\n\t\t\tr0 = region(x0, y0, area);\r\n\t\t} else {\r\n\t\t\tx1 = x;\r\n\t\t\ty1 = y;\r\n\t\t\tr1 = region(x1, y1, area);\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tx0: x0,\r\n\t\tx1: x1,\r\n\t\ty0: y0,\r\n\t\ty1: y1\r\n\t};\r\n}\r\n\r\nfunction compute(range, config) {\r\n\tvar anchor = config.anchor;\r\n\tvar segment = range;\r\n\tvar x, y;\r\n\r\n\tif (config.clamp) {\r\n\t\tsegment = clipped(segment, config.area);\r\n\t}\r\n\r\n\tif (anchor === 'start') {\r\n\t\tx = segment.x0;\r\n\t\ty = segment.y0;\r\n\t} else if (anchor === 'end') {\r\n\t\tx = segment.x1;\r\n\t\ty = segment.y1;\r\n\t} else {\r\n\t\tx = (segment.x0 + segment.x1) / 2;\r\n\t\ty = (segment.y0 + segment.y1) / 2;\r\n\t}\r\n\r\n\treturn aligned(x, y, range.vx, range.vy, config.align);\r\n}\r\n\r\nvar positioners = {\r\n\tarc: function(vm, config) {\r\n\t\tvar angle = (vm.startAngle + vm.endAngle) / 2;\r\n\t\tvar vx = Math.cos(angle);\r\n\t\tvar vy = Math.sin(angle);\r\n\t\tvar r0 = vm.innerRadius;\r\n\t\tvar r1 = vm.outerRadius;\r\n\r\n\t\treturn compute({\r\n\t\t\tx0: vm.x + vx * r0,\r\n\t\t\ty0: vm.y + vy * r0,\r\n\t\t\tx1: vm.x + vx * r1,\r\n\t\t\ty1: vm.y + vy * r1,\r\n\t\t\tvx: vx,\r\n\t\t\tvy: vy\r\n\t\t}, config);\r\n\t},\r\n\r\n\tpoint: function(vm, config) {\r\n\t\tvar v = orient(vm, config.origin);\r\n\t\tvar rx = v.x * vm.radius;\r\n\t\tvar ry = v.y * vm.radius;\r\n\r\n\t\treturn compute({\r\n\t\t\tx0: vm.x - rx,\r\n\t\t\ty0: vm.y - ry,\r\n\t\t\tx1: vm.x + rx,\r\n\t\t\ty1: vm.y + ry,\r\n\t\t\tvx: v.x,\r\n\t\t\tvy: v.y\r\n\t\t}, config);\r\n\t},\r\n\r\n\trect: function(vm, config) {\r\n\t\tvar v = orient(vm, config.origin);\r\n\t\tvar x = vm.x;\r\n\t\tvar y = vm.y;\r\n\t\tvar sx = 0;\r\n\t\tvar sy = 0;\r\n\r\n\t\tif (vm.horizontal) {\r\n\t\t\tx = Math.min(vm.x, vm.base);\r\n\t\t\tsx = Math.abs(vm.base - vm.x);\r\n\t\t} else {\r\n\t\t\ty = Math.min(vm.y, vm.base);\r\n\t\t\tsy = Math.abs(vm.base - vm.y);\r\n\t\t}\r\n\r\n\t\treturn compute({\r\n\t\t\tx0: x,\r\n\t\t\ty0: y + sy,\r\n\t\t\tx1: x + sx,\r\n\t\t\ty1: y,\r\n\t\t\tvx: v.x,\r\n\t\t\tvy: v.y\r\n\t\t}, config);\r\n\t},\r\n\r\n\tfallback: function(vm, config) {\r\n\t\tvar v = orient(vm, config.origin);\r\n\r\n\t\treturn compute({\r\n\t\t\tx0: vm.x,\r\n\t\t\ty0: vm.y,\r\n\t\t\tx1: vm.x,\r\n\t\t\ty1: vm.y,\r\n\t\t\tvx: v.x,\r\n\t\t\tvy: v.y\r\n\t\t}, config);\r\n\t}\r\n};\r\n\r\nvar helpers$1 = Chart.helpers;\r\nvar rasterize = utils.rasterize;\r\n\r\nfunction boundingRects(model) {\r\n\tvar borderWidth = model.borderWidth || 0;\r\n\tvar padding = model.padding;\r\n\tvar th = model.size.height;\r\n\tvar tw = model.size.width;\r\n\tvar tx = -tw / 2;\r\n\tvar ty = -th / 2;\r\n\r\n\treturn {\r\n\t\tframe: {\r\n\t\t\tx: tx - padding.left - borderWidth,\r\n\t\t\ty: ty - padding.top - borderWidth,\r\n\t\t\tw: tw + padding.width + borderWidth * 2,\r\n\t\t\th: th + padding.height + borderWidth * 2\r\n\t\t},\r\n\t\ttext: {\r\n\t\t\tx: tx,\r\n\t\t\ty: ty,\r\n\t\t\tw: tw,\r\n\t\t\th: th\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction getScaleOrigin(el) {\r\n\tvar horizontal = el._model.horizontal;\r\n\tvar scale = el._scale || (horizontal && el._xScale) || el._yScale;\r\n\r\n\tif (!scale) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (scale.xCenter !== undefined && scale.yCenter !== undefined) {\r\n\t\treturn {x: scale.xCenter, y: scale.yCenter};\r\n\t}\r\n\r\n\tvar pixel = scale.getBasePixel();\r\n\treturn horizontal ?\r\n\t\t{x: pixel, y: null} :\r\n\t\t{x: null, y: pixel};\r\n}\r\n\r\nfunction getPositioner(el) {\r\n\tif (el instanceof Chart.elements.Arc) {\r\n\t\treturn positioners.arc;\r\n\t}\r\n\tif (el instanceof Chart.elements.Point) {\r\n\t\treturn positioners.point;\r\n\t}\r\n\tif (el instanceof Chart.elements.Rectangle) {\r\n\t\treturn positioners.rect;\r\n\t}\r\n\treturn positioners.fallback;\r\n}\r\n\r\nfunction drawFrame(ctx, rect, model) {\r\n\tvar bgColor = model.backgroundColor;\r\n\tvar borderColor = model.borderColor;\r\n\tvar borderWidth = model.borderWidth;\r\n\r\n\tif (!bgColor && (!borderColor || !borderWidth)) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\r\n\thelpers$1.canvas.roundedRect(\r\n\t\tctx,\r\n\t\trasterize(rect.x) + borderWidth / 2,\r\n\t\trasterize(rect.y) + borderWidth / 2,\r\n\t\trasterize(rect.w) - borderWidth,\r\n\t\trasterize(rect.h) - borderWidth,\r\n\t\tmodel.borderRadius);\r\n\r\n\tctx.closePath();\r\n\r\n\tif (bgColor) {\r\n\t\tctx.fillStyle = bgColor;\r\n\t\tctx.fill();\r\n\t}\r\n\r\n\tif (borderColor && borderWidth) {\r\n\t\tctx.strokeStyle = borderColor;\r\n\t\tctx.lineWidth = borderWidth;\r\n\t\tctx.lineJoin = 'miter';\r\n\t\tctx.stroke();\r\n\t}\r\n}\r\n\r\nfunction textGeometry(rect, align, font) {\r\n\tvar h = font.lineHeight;\r\n\tvar w = rect.w;\r\n\tvar x = rect.x;\r\n\tvar y = rect.y + h / 2;\r\n\r\n\tif (align === 'center') {\r\n\t\tx += w / 2;\r\n\t} else if (align === 'end' || align === 'right') {\r\n\t\tx += w;\r\n\t}\r\n\r\n\treturn {\r\n\t\th: h,\r\n\t\tw: w,\r\n\t\tx: x,\r\n\t\ty: y\r\n\t};\r\n}\r\n\r\nfunction drawTextLine(ctx, text, cfg) {\r\n\tvar shadow = ctx.shadowBlur;\r\n\tvar stroked = cfg.stroked;\r\n\tvar x = rasterize(cfg.x);\r\n\tvar y = rasterize(cfg.y);\r\n\tvar w = rasterize(cfg.w);\r\n\r\n\tif (stroked) {\r\n\t\tctx.strokeText(text, x, y, w);\r\n\t}\r\n\r\n\tif (cfg.filled) {\r\n\t\tif (shadow && stroked) {\r\n\t\t\t// Prevent drawing shadow on both the text stroke and fill, so\r\n\t\t\t// if the text is stroked, remove the shadow for the text fill.\r\n\t\t\tctx.shadowBlur = 0;\r\n\t\t}\r\n\r\n\t\tctx.fillText(text, x, y, w);\r\n\r\n\t\tif (shadow && stroked) {\r\n\t\t\tctx.shadowBlur = shadow;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction drawText(ctx, lines, rect, model) {\r\n\tvar align = model.textAlign;\r\n\tvar color = model.color;\r\n\tvar filled = !!color;\r\n\tvar font = model.font;\r\n\tvar ilen = lines.length;\r\n\tvar strokeColor = model.textStrokeColor;\r\n\tvar strokeWidth = model.textStrokeWidth;\r\n\tvar stroked = strokeColor && strokeWidth;\r\n\tvar i;\r\n\r\n\tif (!ilen || (!filled && !stroked)) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// Adjust coordinates based on text alignment and line height\r\n\trect = textGeometry(rect, align, font);\r\n\r\n\tctx.font = font.string;\r\n\tctx.textAlign = align;\r\n\tctx.textBaseline = 'middle';\r\n\tctx.shadowBlur = model.textShadowBlur;\r\n\tctx.shadowColor = model.textShadowColor;\r\n\r\n\tif (filled) {\r\n\t\tctx.fillStyle = color;\r\n\t}\r\n\tif (stroked) {\r\n\t\tctx.lineJoin = 'round';\r\n\t\tctx.lineWidth = strokeWidth;\r\n\t\tctx.strokeStyle = strokeColor;\r\n\t}\r\n\r\n\tfor (i = 0, ilen = lines.length; i < ilen; ++i) {\r\n\t\tdrawTextLine(ctx, lines[i], {\r\n\t\t\tstroked: stroked,\r\n\t\t\tfilled: filled,\r\n\t\t\tw: rect.w,\r\n\t\t\tx: rect.x,\r\n\t\t\ty: rect.y + rect.h * i\r\n\t\t});\r\n\t}\r\n}\r\n\r\nvar Label = function(config, ctx, el, index) {\r\n\tvar me = this;\r\n\r\n\tme._config = config;\r\n\tme._index = index;\r\n\tme._model = null;\r\n\tme._rects = null;\r\n\tme._ctx = ctx;\r\n\tme._el = el;\r\n};\r\n\r\nhelpers$1.extend(Label.prototype, {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_modelize: function(display, lines, config, context) {\r\n\t\tvar me = this;\r\n\t\tvar index = me._index;\r\n\t\tvar resolve = helpers$1.options.resolve;\r\n\t\tvar font = utils.parseFont(resolve([config.font, {}], context, index));\r\n\t\tvar color = resolve([config.color, Chart.defaults.global.defaultFontColor], context, index);\r\n\r\n\t\treturn {\r\n\t\t\talign: resolve([config.align, 'center'], context, index),\r\n\t\t\tanchor: resolve([config.anchor, 'center'], context, index),\r\n\t\t\tarea: context.chart.chartArea,\r\n\t\t\tbackgroundColor: resolve([config.backgroundColor, null], context, index),\r\n\t\t\tborderColor: resolve([config.borderColor, null], context, index),\r\n\t\t\tborderRadius: resolve([config.borderRadius, 0], context, index),\r\n\t\t\tborderWidth: resolve([config.borderWidth, 0], context, index),\r\n\t\t\tclamp: resolve([config.clamp, false], context, index),\r\n\t\t\tclip: resolve([config.clip, false], context, index),\r\n\t\t\tcolor: color,\r\n\t\t\tdisplay: display,\r\n\t\t\tfont: font,\r\n\t\t\tlines: lines,\r\n\t\t\toffset: resolve([config.offset, 0], context, index),\r\n\t\t\topacity: resolve([config.opacity, 1], context, index),\r\n\t\t\torigin: getScaleOrigin(me._el),\r\n\t\t\tpadding: helpers$1.options.toPadding(resolve([config.padding, 0], context, index)),\r\n\t\t\tpositioner: getPositioner(me._el),\r\n\t\t\trotation: resolve([config.rotation, 0], context, index) * (Math.PI / 180),\r\n\t\t\tsize: utils.textSize(me._ctx, lines, font),\r\n\t\t\ttextAlign: resolve([config.textAlign, 'start'], context, index),\r\n\t\t\ttextShadowBlur: resolve([config.textShadowBlur, 0], context, index),\r\n\t\t\ttextShadowColor: resolve([config.textShadowColor, color], context, index),\r\n\t\t\ttextStrokeColor: resolve([config.textStrokeColor, color], context, index),\r\n\t\t\ttextStrokeWidth: resolve([config.textStrokeWidth, 0], context, index)\r\n\t\t};\r\n\t},\r\n\r\n\tupdate: function(context) {\r\n\t\tvar me = this;\r\n\t\tvar model = null;\r\n\t\tvar rects = null;\r\n\t\tvar index = me._index;\r\n\t\tvar config = me._config;\r\n\t\tvar value, label, lines;\r\n\r\n\t\t// We first resolve the display option (separately) to avoid computing\r\n\t\t// other options in case the label is hidden (i.e. display: false).\r\n\t\tvar display = helpers$1.options.resolve([config.display, true], context, index);\r\n\r\n\t\tif (display) {\r\n\t\t\tvalue = context.dataset.data[index];\r\n\t\t\tlabel = helpers$1.valueOrDefault(helpers$1.callback(config.formatter, [value, context]), value);\r\n\t\t\tlines = helpers$1.isNullOrUndef(label) ? [] : utils.toTextLines(label);\r\n\r\n\t\t\tif (lines.length) {\r\n\t\t\t\tmodel = me._modelize(display, lines, config, context);\r\n\t\t\t\trects = boundingRects(model);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme._model = model;\r\n\t\tme._rects = rects;\r\n\t},\r\n\r\n\tgeometry: function() {\r\n\t\treturn this._rects ? this._rects.frame : {};\r\n\t},\r\n\r\n\trotation: function() {\r\n\t\treturn this._model ? this._model.rotation : 0;\r\n\t},\r\n\r\n\tvisible: function() {\r\n\t\treturn this._model && this._model.opacity;\r\n\t},\r\n\r\n\tmodel: function() {\r\n\t\treturn this._model;\r\n\t},\r\n\r\n\tdraw: function(chart, center) {\r\n\t\tvar me = this;\r\n\t\tvar ctx = chart.ctx;\r\n\t\tvar model = me._model;\r\n\t\tvar rects = me._rects;\r\n\t\tvar area;\r\n\r\n\t\tif (!this.visible()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\r\n\t\tif (model.clip) {\r\n\t\t\tarea = model.area;\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.rect(\r\n\t\t\t\tarea.left,\r\n\t\t\t\tarea.top,\r\n\t\t\t\tarea.right - area.left,\r\n\t\t\t\tarea.bottom - area.top);\r\n\t\t\tctx.clip();\r\n\t\t}\r\n\r\n\t\tctx.globalAlpha = utils.bound(0, model.opacity, 1);\r\n\t\tctx.translate(rasterize(center.x), rasterize(center.y));\r\n\t\tctx.rotate(model.rotation);\r\n\r\n\t\tdrawFrame(ctx, rects.frame, model);\r\n\t\tdrawText(ctx, model.lines, rects.text, model);\r\n\r\n\t\tctx.restore();\r\n\t}\r\n});\r\n\r\nvar helpers$2 = Chart.helpers;\r\n\r\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; // eslint-disable-line es/no-number-minsafeinteger\r\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; // eslint-disable-line es/no-number-maxsafeinteger\r\n\r\nfunction rotated(point, center, angle) {\r\n\tvar cos = Math.cos(angle);\r\n\tvar sin = Math.sin(angle);\r\n\tvar cx = center.x;\r\n\tvar cy = center.y;\r\n\r\n\treturn {\r\n\t\tx: cx + cos * (point.x - cx) - sin * (point.y - cy),\r\n\t\ty: cy + sin * (point.x - cx) + cos * (point.y - cy)\r\n\t};\r\n}\r\n\r\nfunction projected(points, axis) {\r\n\tvar min = MAX_INTEGER;\r\n\tvar max = MIN_INTEGER;\r\n\tvar origin = axis.origin;\r\n\tvar i, pt, vx, vy, dp;\r\n\r\n\tfor (i = 0; i < points.length; ++i) {\r\n\t\tpt = points[i];\r\n\t\tvx = pt.x - origin.x;\r\n\t\tvy = pt.y - origin.y;\r\n\t\tdp = axis.vx * vx + axis.vy * vy;\r\n\t\tmin = Math.min(min, dp);\r\n\t\tmax = Math.max(max, dp);\r\n\t}\r\n\r\n\treturn {\r\n\t\tmin: min,\r\n\t\tmax: max\r\n\t};\r\n}\r\n\r\nfunction toAxis(p0, p1) {\r\n\tvar vx = p1.x - p0.x;\r\n\tvar vy = p1.y - p0.y;\r\n\tvar ln = Math.sqrt(vx * vx + vy * vy);\r\n\r\n\treturn {\r\n\t\tvx: (p1.x - p0.x) / ln,\r\n\t\tvy: (p1.y - p0.y) / ln,\r\n\t\torigin: p0,\r\n\t\tln: ln\r\n\t};\r\n}\r\n\r\nvar HitBox = function() {\r\n\tthis._rotation = 0;\r\n\tthis._rect = {\r\n\t\tx: 0,\r\n\t\ty: 0,\r\n\t\tw: 0,\r\n\t\th: 0\r\n\t};\r\n};\r\n\r\nhelpers$2.extend(HitBox.prototype, {\r\n\tcenter: function() {\r\n\t\tvar r = this._rect;\r\n\t\treturn {\r\n\t\t\tx: r.x + r.w / 2,\r\n\t\t\ty: r.y + r.h / 2\r\n\t\t};\r\n\t},\r\n\r\n\tupdate: function(center, rect, rotation) {\r\n\t\tthis._rotation = rotation;\r\n\t\tthis._rect = {\r\n\t\t\tx: rect.x + center.x,\r\n\t\t\ty: rect.y + center.y,\r\n\t\t\tw: rect.w,\r\n\t\t\th: rect.h\r\n\t\t};\r\n\t},\r\n\r\n\tcontains: function(point) {\r\n\t\tvar me = this;\r\n\t\tvar margin = 1;\r\n\t\tvar rect = me._rect;\r\n\r\n\t\tpoint = rotated(point, me.center(), -me._rotation);\r\n\r\n\t\treturn !(point.x < rect.x - margin\r\n\t\t\t|| point.y < rect.y - margin\r\n\t\t\t|| point.x > rect.x + rect.w + margin * 2\r\n\t\t\t|| point.y > rect.y + rect.h + margin * 2);\r\n\t},\r\n\r\n\t// Separating Axis Theorem\r\n\t// https://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169\r\n\tintersects: function(other) {\r\n\t\tvar r0 = this._points();\r\n\t\tvar r1 = other._points();\r\n\t\tvar axes = [\r\n\t\t\ttoAxis(r0[0], r0[1]),\r\n\t\t\ttoAxis(r0[0], r0[3])\r\n\t\t];\r\n\t\tvar i, pr0, pr1;\r\n\r\n\t\tif (this._rotation !== other._rotation) {\r\n\t\t\t// Only separate with r1 axis if the rotation is different,\r\n\t\t\t// else it's enough to separate r0 and r1 with r0 axis only!\r\n\t\t\taxes.push(\r\n\t\t\t\ttoAxis(r1[0], r1[1]),\r\n\t\t\t\ttoAxis(r1[0], r1[3])\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < axes.length; ++i) {\r\n\t\t\tpr0 = projected(r0, axes[i]);\r\n\t\t\tpr1 = projected(r1, axes[i]);\r\n\r\n\t\t\tif (pr0.max < pr1.min || pr1.max < pr0.min) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_points: function() {\r\n\t\tvar me = this;\r\n\t\tvar rect = me._rect;\r\n\t\tvar angle = me._rotation;\r\n\t\tvar center = me.center();\r\n\r\n\t\treturn [\r\n\t\t\trotated({x: rect.x, y: rect.y}, center, angle),\r\n\t\t\trotated({x: rect.x + rect.w, y: rect.y}, center, angle),\r\n\t\t\trotated({x: rect.x + rect.w, y: rect.y + rect.h}, center, angle),\r\n\t\t\trotated({x: rect.x, y: rect.y + rect.h}, center, angle)\r\n\t\t];\r\n\t}\r\n});\r\n\r\nfunction coordinates(view, model, geometry) {\r\n\tvar point = model.positioner(view, model);\r\n\tvar vx = point.vx;\r\n\tvar vy = point.vy;\r\n\r\n\tif (!vx && !vy) {\r\n\t\t// if aligned center, we don't want to offset the center point\r\n\t\treturn {x: point.x, y: point.y};\r\n\t}\r\n\r\n\tvar w = geometry.w;\r\n\tvar h = geometry.h;\r\n\r\n\t// take in account the label rotation\r\n\tvar rotation = model.rotation;\r\n\tvar dx = Math.abs(w / 2 * Math.cos(rotation)) + Math.abs(h / 2 * Math.sin(rotation));\r\n\tvar dy = Math.abs(w / 2 * Math.sin(rotation)) + Math.abs(h / 2 * Math.cos(rotation));\r\n\r\n\t// scale the unit vector (vx, vy) to get at least dx or dy equal to\r\n\t// w or h respectively (else we would calculate the distance to the\r\n\t// ellipse inscribed in the bounding rect)\r\n\tvar vs = 1 / Math.max(Math.abs(vx), Math.abs(vy));\r\n\tdx *= vx * vs;\r\n\tdy *= vy * vs;\r\n\r\n\t// finally, include the explicit offset\r\n\tdx += model.offset * vx;\r\n\tdy += model.offset * vy;\r\n\r\n\treturn {\r\n\t\tx: point.x + dx,\r\n\t\ty: point.y + dy\r\n\t};\r\n}\r\n\r\nfunction collide(labels, collider) {\r\n\tvar i, j, s0, s1;\r\n\r\n\t// IMPORTANT Iterate in the reverse order since items at the end of the\r\n\t// list have an higher weight/priority and thus should be less impacted\r\n\t// by the overlapping strategy.\r\n\r\n\tfor (i = labels.length - 1; i >= 0; --i) {\r\n\t\ts0 = labels[i].$layout;\r\n\r\n\t\tfor (j = i - 1; j >= 0 && s0._visible; --j) {\r\n\t\t\ts1 = labels[j].$layout;\r\n\r\n\t\t\tif (s1._visible && s0._box.intersects(s1._box)) {\r\n\t\t\t\tcollider(s0, s1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn labels;\r\n}\r\n\r\nfunction compute$1(labels) {\r\n\tvar i, ilen, label, state, geometry, center;\r\n\r\n\t// Initialize labels for overlap detection\r\n\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\r\n\t\tlabel = labels[i];\r\n\t\tstate = label.$layout;\r\n\r\n\t\tif (state._visible) {\r\n\t\t\tgeometry = label.geometry();\r\n\t\t\tcenter = coordinates(label._el._model, label.model(), geometry);\r\n\t\t\tstate._box.update(center, geometry, label.rotation());\r\n\t\t}\r\n\t}\r\n\r\n\t// Auto hide overlapping labels\r\n\treturn collide(labels, function(s0, s1) {\r\n\t\tvar h0 = s0._hidable;\r\n\t\tvar h1 = s1._hidable;\r\n\r\n\t\tif ((h0 && h1) || h1) {\r\n\t\t\ts1._visible = false;\r\n\t\t} else if (h0) {\r\n\t\t\ts0._visible = false;\r\n\t\t}\r\n\t});\r\n}\r\n\r\nvar layout = {\r\n\tprepare: function(datasets) {\r\n\t\tvar labels = [];\r\n\t\tvar i, j, ilen, jlen, label;\r\n\r\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\r\n\t\t\tfor (j = 0, jlen = datasets[i].length; j < jlen; ++j) {\r\n\t\t\t\tlabel = datasets[i][j];\r\n\t\t\t\tlabels.push(label);\r\n\t\t\t\tlabel.$layout = {\r\n\t\t\t\t\t_box: new HitBox(),\r\n\t\t\t\t\t_hidable: false,\r\n\t\t\t\t\t_visible: true,\r\n\t\t\t\t\t_set: i,\r\n\t\t\t\t\t_idx: j\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// TODO New `z` option: labels with a higher z-index are drawn\r\n\t\t// of top of the ones with a lower index. Lowest z-index labels\r\n\t\t// are also discarded first when hiding overlapping labels.\r\n\t\tlabels.sort(function(a, b) {\r\n\t\t\tvar sa = a.$layout;\r\n\t\t\tvar sb = b.$layout;\r\n\r\n\t\t\treturn sa._idx === sb._idx\r\n\t\t\t\t? sb._set - sa._set\r\n\t\t\t\t: sb._idx - sa._idx;\r\n\t\t});\r\n\r\n\t\tthis.update(labels);\r\n\r\n\t\treturn labels;\r\n\t},\r\n\r\n\tupdate: function(labels) {\r\n\t\tvar dirty = false;\r\n\t\tvar i, ilen, label, model, state;\r\n\r\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\r\n\t\t\tlabel = labels[i];\r\n\t\t\tmodel = label.model();\r\n\t\t\tstate = label.$layout;\r\n\t\t\tstate._hidable = model && model.display === 'auto';\r\n\t\t\tstate._visible = label.visible();\r\n\t\t\tdirty |= state._hidable;\r\n\t\t}\r\n\r\n\t\tif (dirty) {\r\n\t\t\tcompute$1(labels);\r\n\t\t}\r\n\t},\r\n\r\n\tlookup: function(labels, point) {\r\n\t\tvar i, state;\r\n\r\n\t\t// IMPORTANT Iterate in the reverse order since items at the end of\r\n\t\t// the list have an higher z-index, thus should be picked first.\r\n\r\n\t\tfor (i = labels.length - 1; i >= 0; --i) {\r\n\t\t\tstate = labels[i].$layout;\r\n\r\n\t\t\tif (state && state._visible && state._box.contains(point)) {\r\n\t\t\t\treturn labels[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\tdraw: function(chart, labels) {\r\n\t\tvar i, ilen, label, state, geometry, center;\r\n\r\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\r\n\t\t\tlabel = labels[i];\r\n\t\t\tstate = label.$layout;\r\n\r\n\t\t\tif (state._visible) {\r\n\t\t\t\tgeometry = label.geometry();\r\n\t\t\t\tcenter = coordinates(label._el._view, label.model(), geometry);\r\n\t\t\t\tstate._box.update(center, geometry, label.rotation());\r\n\t\t\t\tlabel.draw(chart, center);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar helpers$3 = Chart.helpers;\r\n\r\nvar formatter = function(value) {\r\n\tif (helpers$3.isNullOrUndef(value)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar label = value;\r\n\tvar keys, klen, k;\r\n\tif (helpers$3.isObject(value)) {\r\n\t\tif (!helpers$3.isNullOrUndef(value.label)) {\r\n\t\t\tlabel = value.label;\r\n\t\t} else if (!helpers$3.isNullOrUndef(value.r)) {\r\n\t\t\tlabel = value.r;\r\n\t\t} else {\r\n\t\t\tlabel = '';\r\n\t\t\tkeys = Object.keys(value);\r\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\r\n\t\t\t\tlabel += (k !== 0 ? ', ' : '') + keys[k] + ': ' + value[keys[k]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn '' + label;\r\n};\r\n\r\n/**\r\n * IMPORTANT: make sure to also update tests and TypeScript definition\r\n * files (`/test/specs/defaults.spec.js` and `/types/options.d.ts`)\r\n */\r\n\r\nvar defaults = {\r\n\talign: 'center',\r\n\tanchor: 'center',\r\n\tbackgroundColor: null,\r\n\tborderColor: null,\r\n\tborderRadius: 0,\r\n\tborderWidth: 0,\r\n\tclamp: false,\r\n\tclip: false,\r\n\tcolor: undefined,\r\n\tdisplay: true,\r\n\tfont: {\r\n\t\tfamily: undefined,\r\n\t\tlineHeight: 1.2,\r\n\t\tsize: undefined,\r\n\t\tstyle: undefined,\r\n\t\tweight: null\r\n\t},\r\n\tformatter: formatter,\r\n\tlabels: undefined,\r\n\tlisteners: {},\r\n\toffset: 4,\r\n\topacity: 1,\r\n\tpadding: {\r\n\t\ttop: 4,\r\n\t\tright: 4,\r\n\t\tbottom: 4,\r\n\t\tleft: 4\r\n\t},\r\n\trotation: 0,\r\n\ttextAlign: 'start',\r\n\ttextStrokeColor: undefined,\r\n\ttextStrokeWidth: 0,\r\n\ttextShadowBlur: 0,\r\n\ttextShadowColor: undefined\r\n};\r\n\r\n/**\r\n * @see https://github.com/chartjs/Chart.js/issues/4176\r\n */\r\n\r\nvar helpers$4 = Chart.helpers;\r\nvar EXPANDO_KEY = '$datalabels';\r\nvar DEFAULT_KEY = '$default';\r\n\r\nfunction configure(dataset, options) {\r\n\tvar override = dataset.datalabels;\r\n\tvar listeners = {};\r\n\tvar configs = [];\r\n\tvar labels, keys;\r\n\r\n\tif (override === false) {\r\n\t\treturn null;\r\n\t}\r\n\tif (override === true) {\r\n\t\toverride = {};\r\n\t}\r\n\r\n\toptions = helpers$4.merge({}, [options, override]);\r\n\tlabels = options.labels || {};\r\n\tkeys = Object.keys(labels);\r\n\tdelete options.labels;\r\n\r\n\tif (keys.length) {\r\n\t\tkeys.forEach(function(key) {\r\n\t\t\tif (labels[key]) {\r\n\t\t\t\tconfigs.push(helpers$4.merge({}, [\r\n\t\t\t\t\toptions,\r\n\t\t\t\t\tlabels[key],\r\n\t\t\t\t\t{_key: key}\r\n\t\t\t\t]));\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\t// Default label if no \"named\" label defined.\r\n\t\tconfigs.push(options);\r\n\t}\r\n\r\n\t// listeners: {: {: }}\r\n\tlisteners = configs.reduce(function(target, config) {\r\n\t\thelpers$4.each(config.listeners || {}, function(fn, event) {\r\n\t\t\ttarget[event] = target[event] || {};\r\n\t\t\ttarget[event][config._key || DEFAULT_KEY] = fn;\r\n\t\t});\r\n\r\n\t\tdelete config.listeners;\r\n\t\treturn target;\r\n\t}, {});\r\n\r\n\treturn {\r\n\t\tlabels: configs,\r\n\t\tlisteners: listeners\r\n\t};\r\n}\r\n\r\nfunction dispatchEvent(chart, listeners, label) {\r\n\tif (!listeners) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar context = label.$context;\r\n\tvar groups = label.$groups;\r\n\tvar callback;\r\n\r\n\tif (!listeners[groups._set]) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tcallback = listeners[groups._set][groups._key];\r\n\tif (!callback) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (helpers$4.callback(callback, [context]) === true) {\r\n\t\t// Users are allowed to tweak the given context by injecting values that can be\r\n\t\t// used in scriptable options to display labels differently based on the current\r\n\t\t// event (e.g. highlight an hovered label). That's why we update the label with\r\n\t\t// the output context and schedule a new chart render by setting it dirty.\r\n\t\tchart[EXPANDO_KEY]._dirty = true;\r\n\t\tlabel.update(context);\r\n\t}\r\n}\r\n\r\nfunction dispatchMoveEvents(chart, listeners, previous, label) {\r\n\tvar enter, leave;\r\n\r\n\tif (!previous && !label) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (!previous) {\r\n\t\tenter = true;\r\n\t} else if (!label) {\r\n\t\tleave = true;\r\n\t} else if (previous !== label) {\r\n\t\tleave = enter = true;\r\n\t}\r\n\r\n\tif (leave) {\r\n\t\tdispatchEvent(chart, listeners.leave, previous);\r\n\t}\r\n\tif (enter) {\r\n\t\tdispatchEvent(chart, listeners.enter, label);\r\n\t}\r\n}\r\n\r\nfunction handleMoveEvents(chart, event) {\r\n\tvar expando = chart[EXPANDO_KEY];\r\n\tvar listeners = expando._listeners;\r\n\tvar previous, label;\r\n\r\n\tif (!listeners.enter && !listeners.leave) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (event.type === 'mousemove') {\r\n\t\tlabel = layout.lookup(expando._labels, event);\r\n\t} else if (event.type !== 'mouseout') {\r\n\t\treturn;\r\n\t}\r\n\r\n\tprevious = expando._hovered;\r\n\texpando._hovered = label;\r\n\tdispatchMoveEvents(chart, listeners, previous, label);\r\n}\r\n\r\nfunction handleClickEvents(chart, event) {\r\n\tvar expando = chart[EXPANDO_KEY];\r\n\tvar handlers = expando._listeners.click;\r\n\tvar label = handlers && layout.lookup(expando._labels, event);\r\n\tif (label) {\r\n\t\tdispatchEvent(chart, handlers, label);\r\n\t}\r\n}\r\n\r\n// https://github.com/chartjs/chartjs-plugin-datalabels/issues/108\r\nfunction invalidate(chart) {\r\n\tif (chart.animating) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// `chart.animating` can be `false` even if there is animation in progress,\r\n\t// so let's iterate all animations to find if there is one for the `chart`.\r\n\tvar animations = Chart.animationService.animations;\r\n\tfor (var i = 0, ilen = animations.length; i < ilen; ++i) {\r\n\t\tif (animations[i].chart === chart) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t// No render scheduled: trigger a \"lazy\" render that can be canceled in case\r\n\t// of hover interactions. The 1ms duration is a workaround to make sure an\r\n\t// animation is created so the controller can stop it before any transition.\r\n\tchart.render({duration: 1, lazy: true});\r\n}\r\n\r\nChart.defaults.global.plugins.datalabels = defaults;\r\n\r\nvar plugin = {\r\n\tid: 'datalabels',\r\n\r\n\tbeforeInit: function(chart) {\r\n\t\tchart[EXPANDO_KEY] = {\r\n\t\t\t_actives: []\r\n\t\t};\r\n\t},\r\n\r\n\tbeforeUpdate: function(chart) {\r\n\t\tvar expando = chart[EXPANDO_KEY];\r\n\t\texpando._listened = false;\r\n\t\texpando._listeners = {}; // {: {: {: }}}\r\n\t\texpando._datasets = []; // per dataset labels: [Label[]]\r\n\t\texpando._labels = []; // layouted labels: Label[]\r\n\t},\r\n\r\n\tafterDatasetUpdate: function(chart, args, options) {\r\n\t\tvar datasetIndex = args.index;\r\n\t\tvar expando = chart[EXPANDO_KEY];\r\n\t\tvar labels = expando._datasets[datasetIndex] = [];\r\n\t\tvar visible = chart.isDatasetVisible(datasetIndex);\r\n\t\tvar dataset = chart.data.datasets[datasetIndex];\r\n\t\tvar config = configure(dataset, options);\r\n\t\tvar elements = args.meta.data || [];\r\n\t\tvar ctx = chart.ctx;\r\n\t\tvar i, j, ilen, jlen, cfg, key, el, label;\r\n\r\n\t\tctx.save();\r\n\r\n\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\r\n\t\t\tel = elements[i];\r\n\t\t\tel[EXPANDO_KEY] = [];\r\n\r\n\t\t\tif (visible && el && !el.hidden && !el._model.skip) {\r\n\t\t\t\tfor (j = 0, jlen = config.labels.length; j < jlen; ++j) {\r\n\t\t\t\t\tcfg = config.labels[j];\r\n\t\t\t\t\tkey = cfg._key;\r\n\r\n\t\t\t\t\tlabel = new Label(cfg, ctx, el, i);\r\n\t\t\t\t\tlabel.$groups = {\r\n\t\t\t\t\t\t_set: datasetIndex,\r\n\t\t\t\t\t\t_key: key || DEFAULT_KEY\r\n\t\t\t\t\t};\r\n\t\t\t\t\tlabel.$context = {\r\n\t\t\t\t\t\tactive: false,\r\n\t\t\t\t\t\tchart: chart,\r\n\t\t\t\t\t\tdataIndex: i,\r\n\t\t\t\t\t\tdataset: dataset,\r\n\t\t\t\t\t\tdatasetIndex: datasetIndex\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tlabel.update(label.$context);\r\n\t\t\t\t\tel[EXPANDO_KEY].push(label);\r\n\t\t\t\t\tlabels.push(label);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tctx.restore();\r\n\r\n\t\t// Store listeners at the chart level and per event type to optimize\r\n\t\t// cases where no listeners are registered for a specific event.\r\n\t\thelpers$4.merge(expando._listeners, config.listeners, {\r\n\t\t\tmerger: function(event, target, source) {\r\n\t\t\t\ttarget[event] = target[event] || {};\r\n\t\t\t\ttarget[event][args.index] = source[event];\r\n\t\t\t\texpando._listened = true;\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tafterUpdate: function(chart, options) {\r\n\t\tchart[EXPANDO_KEY]._labels = layout.prepare(\r\n\t\t\tchart[EXPANDO_KEY]._datasets,\r\n\t\t\toptions);\r\n\t},\r\n\r\n\t// Draw labels on top of all dataset elements\r\n\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/29\r\n\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/32\r\n\tafterDatasetsDraw: function(chart) {\r\n\t\tlayout.draw(chart, chart[EXPANDO_KEY]._labels);\r\n\t},\r\n\r\n\tbeforeEvent: function(chart, event) {\r\n\t\t// If there is no listener registered for this chart, `listened` will be false,\r\n\t\t// meaning we can immediately ignore the incoming event and avoid useless extra\r\n\t\t// computation for users who don't implement label interactions.\r\n\t\tif (chart[EXPANDO_KEY]._listened) {\r\n\t\t\tswitch (event.type) {\r\n\t\t\tcase 'mousemove':\r\n\t\t\tcase 'mouseout':\r\n\t\t\t\thandleMoveEvents(chart, event);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'click':\r\n\t\t\t\thandleClickEvents(chart, event);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tafterEvent: function(chart) {\r\n\t\tvar expando = chart[EXPANDO_KEY];\r\n\t\tvar previous = expando._actives;\r\n\t\tvar actives = expando._actives = chart.lastActive || []; // public API?!\r\n\t\tvar updates = utils.arrayDiff(previous, actives);\r\n\t\tvar i, ilen, j, jlen, update, label, labels;\r\n\r\n\t\tfor (i = 0, ilen = updates.length; i < ilen; ++i) {\r\n\t\t\tupdate = updates[i];\r\n\t\t\tif (update[1]) {\r\n\t\t\t\tlabels = update[0][EXPANDO_KEY] || [];\r\n\t\t\t\tfor (j = 0, jlen = labels.length; j < jlen; ++j) {\r\n\t\t\t\t\tlabel = labels[j];\r\n\t\t\t\t\tlabel.$context.active = (update[1] === 1);\r\n\t\t\t\t\tlabel.update(label.$context);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (expando._dirty || updates.length) {\r\n\t\t\tlayout.update(expando._labels);\r\n\t\t\tinvalidate(chart);\r\n\t\t}\r\n\r\n\t\tdelete expando._dirty;\r\n\t}\r\n};\r\n\r\n// TODO Remove at version 1, we shouldn't automatically register plugins.\r\n// https://github.com/chartjs/chartjs-plugin-datalabels/issues/42\r\nChart.plugins.unregister(plugin);\r\nreturn plugin;\r\n\r\n}));\r\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/forced-string-html-method');\n\n// `String.prototype.anchor` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.anchor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, {\n anchor: function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n }\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar quot = /\"/g;\n\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\n// https://tc39.github.io/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = String(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n","module.exports = chart;","/*! PhotoSwipe - v4.1.1 - 2015-12-24\r\n * http://photoswipe.com\r\n * Copyright (c) 2015 Dmitry Semenov; */\r\n! function (a, b) {\r\n \"function\" == typeof define && define.amd ? define(b) : \"object\" == typeof exports ? module.exports = b() : window.PhotoSwipe = b()\r\n}(this, function () {\r\n \"use strict\";\r\n var a = function (a, b, c, d) {\r\n var e = {\r\n features: null,\r\n bind: function (a, b, c, d) {\r\n var e = (d ? \"remove\" : \"add\") + \"EventListener\";\r\n b = b.split(\" \");\r\n for (var f = 0; f < b.length; f++) b[f] && a[e](b[f], c, !1)\r\n },\r\n isArray: function (a) {\r\n return a instanceof Array\r\n },\r\n createEl: function (a, b) {\r\n var c = document.createElement(b || \"div\");\r\n return a && (c.className = a), c\r\n },\r\n getScrollY: function () {\r\n var a = window.pageYOffset;\r\n return void 0 !== a ? a : document.documentElement.scrollTop\r\n },\r\n unbind: function (a, b, c) {\r\n e.bind(a, b, c, !0)\r\n },\r\n removeClass: function (a, b) {\r\n var c = new RegExp(\"(\\\\s|^)\" + b + \"(\\\\s|$)\");\r\n a.className = a.className.replace(c, \" \").replace(/^\\s\\s*/, \"\").replace(/\\s\\s*$/, \"\")\r\n },\r\n addClass: function (a, b) {\r\n e.hasClass(a, b) || (a.className += (a.className ? \" \" : \"\") + b)\r\n },\r\n hasClass: function (a, b) {\r\n return a.className && new RegExp(\"(^|\\\\s)\" + b + \"(\\\\s|$)\").test(a.className)\r\n },\r\n getChildByClass: function (a, b) {\r\n for (var c = a.firstChild; c;) {\r\n if (e.hasClass(c, b)) return c;\r\n c = c.nextSibling\r\n }\r\n },\r\n arraySearch: function (a, b, c) {\r\n for (var d = a.length; d--;)\r\n if (a[d][c] === b) return d;\r\n return -1\r\n },\r\n extend: function (a, b, c) {\r\n for (var d in b)\r\n if (b.hasOwnProperty(d)) {\r\n if (c && a.hasOwnProperty(d)) continue;\r\n a[d] = b[d]\r\n }\r\n },\r\n easing: {\r\n sine: {\r\n out: function (a) {\r\n return Math.sin(a * (Math.PI / 2))\r\n },\r\n inOut: function (a) {\r\n return -(Math.cos(Math.PI * a) - 1) / 2\r\n }\r\n },\r\n cubic: {\r\n out: function (a) {\r\n return --a * a * a + 1\r\n }\r\n }\r\n },\r\n detectFeatures: function () {\r\n if (e.features) return e.features;\r\n var a = e.createEl(),\r\n b = a.style,\r\n c = \"\",\r\n d = {};\r\n if (d.oldIE = document.all && !document.addEventListener, d.touch = \"ontouchstart\" in window, window.requestAnimationFrame && (d.raf = window.requestAnimationFrame, d.caf = window.cancelAnimationFrame), d.pointerEvent = navigator.pointerEnabled || navigator.msPointerEnabled, !d.pointerEvent) {\r\n var f = navigator.userAgent;\r\n if (/iP(hone|od)/.test(navigator.platform)) {\r\n var g = navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\r\n g && g.length > 0 && (g = parseInt(g[1], 10), g >= 1 && 8 > g && (d.isOldIOSPhone = !0))\r\n }\r\n var h = f.match(/Android\\s([0-9\\.]*)/),\r\n i = h ? h[1] : 0;\r\n i = parseFloat(i), i >= 1 && (4.4 > i && (d.isOldAndroid = !0), d.androidVersion = i), d.isMobileOpera = /opera mini|opera mobi/i.test(f)\r\n }\r\n for (var j, k, l = [\"transform\", \"perspective\", \"animationName\"], m = [\"\", \"webkit\", \"Moz\", \"ms\", \"O\"], n = 0; 4 > n; n++) {\r\n c = m[n];\r\n for (var o = 0; 3 > o; o++) j = l[o], k = c + (c ? j.charAt(0).toUpperCase() + j.slice(1) : j), !d[j] && k in b && (d[j] = k);\r\n c && !d.raf && (c = c.toLowerCase(), d.raf = window[c + \"RequestAnimationFrame\"], d.raf && (d.caf = window[c + \"CancelAnimationFrame\"] || window[c + \"CancelRequestAnimationFrame\"]))\r\n }\r\n if (!d.raf) {\r\n var p = 0;\r\n d.raf = function (a) {\r\n var b = (new Date).getTime(),\r\n c = Math.max(0, 16 - (b - p)),\r\n d = window.setTimeout(function () {\r\n a(b + c)\r\n }, c);\r\n return p = b + c, d\r\n }, d.caf = function (a) {\r\n clearTimeout(a)\r\n }\r\n }\r\n return d.svg = !!document.createElementNS && !!document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\").createSVGRect, e.features = d, d\r\n }\r\n };\r\n e.detectFeatures(), e.features.oldIE && (e.bind = function (a, b, c, d) {\r\n b = b.split(\" \");\r\n for (var e, f = (d ? \"detach\" : \"attach\") + \"Event\", g = function () {\r\n c.handleEvent.call(c)\r\n }, h = 0; h < b.length; h++)\r\n if (e = b[h])\r\n if (\"object\" == typeof c && c.handleEvent) {\r\n if (d) {\r\n if (!c[\"oldIE\" + e]) return !1\r\n } else c[\"oldIE\" + e] = g;\r\n a[f](\"on\" + e, c[\"oldIE\" + e])\r\n } else a[f](\"on\" + e, c)\r\n });\r\n var f = this,\r\n g = 25,\r\n h = 3,\r\n i = {\r\n allowPanToNext: !0,\r\n spacing: .12,\r\n bgOpacity: 1,\r\n mouseUsed: !1,\r\n loop: !0,\r\n pinchToClose: !0,\r\n closeOnScroll: !0,\r\n closeOnVerticalDrag: !0,\r\n verticalDragRange: .75,\r\n hideAnimationDuration: 333,\r\n showAnimationDuration: 333,\r\n showHideOpacity: !1,\r\n focus: !0,\r\n escKey: !0,\r\n arrowKeys: !0,\r\n mainScrollEndFriction: .35,\r\n panEndFriction: .35,\r\n isClickableElement: function (a) {\r\n return \"A\" === a.tagName\r\n },\r\n getDoubleTapZoom: function (a, b) {\r\n return a ? 1 : b.initialZoomLevel < .7 ? 1 : 1.33\r\n },\r\n maxSpreadZoom: 1.33,\r\n modal: !0,\r\n scaleMode: \"fit\"\r\n };\r\n e.extend(i, d);\r\n var j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _, aa, ba, ca, da, ea, fa, ga, ha, ia, ja, ka, la = function () {\r\n return {\r\n x: 0,\r\n y: 0\r\n }\r\n },\r\n ma = la(),\r\n na = la(),\r\n oa = la(),\r\n pa = {},\r\n qa = 0,\r\n ra = {},\r\n sa = la(),\r\n ta = 0,\r\n ua = !0,\r\n va = [],\r\n wa = {},\r\n xa = !1,\r\n ya = function (a, b) {\r\n e.extend(f, b.publicMethods), va.push(a)\r\n },\r\n za = function (a) {\r\n var b = _b();\r\n return a > b - 1 ? a - b : 0 > a ? b + a : a\r\n },\r\n Aa = {},\r\n Ba = function (a, b) {\r\n return Aa[a] || (Aa[a] = []), Aa[a].push(b)\r\n },\r\n Ca = function (a) {\r\n var b = Aa[a];\r\n if (b) {\r\n var c = Array.prototype.slice.call(arguments);\r\n c.shift();\r\n for (var d = 0; d < b.length; d++) b[d].apply(f, c)\r\n }\r\n },\r\n Da = function () {\r\n return (new Date).getTime()\r\n },\r\n Ea = function (a) {\r\n ia = a, f.bg.style.opacity = a * i.bgOpacity\r\n },\r\n Fa = function (a, b, c, d, e) {\r\n (!xa || e && e !== f.currItem) && (d /= e ? e.fitRatio : f.currItem.fitRatio), a[E] = u + b + \"px, \" + c + \"px\" + v + \" scale(\" + d + \")\"\r\n },\r\n Ga = function (a) {\r\n da && (a && (s > f.currItem.fitRatio ? xa || (lc(f.currItem, !1, !0), xa = !0) : xa && (lc(f.currItem), xa = !1)), Fa(da, oa.x, oa.y, s))\r\n },\r\n Ha = function (a) {\r\n a.container && Fa(a.container.style, a.initialPosition.x, a.initialPosition.y, a.initialZoomLevel, a)\r\n },\r\n Ia = function (a, b) {\r\n b[E] = u + a + \"px, 0px\" + v\r\n },\r\n Ja = function (a, b) {\r\n if (!i.loop && b) {\r\n var c = m + (sa.x * qa - a) / sa.x,\r\n d = Math.round(a - sb.x);\r\n (0 > c && d > 0 || c >= _b() - 1 && 0 > d) && (a = sb.x + d * i.mainScrollEndFriction)\r\n }\r\n sb.x = a, Ia(a, n)\r\n },\r\n Ka = function (a, b) {\r\n var c = tb[a] - ra[a];\r\n return na[a] + ma[a] + c - c * (b / t)\r\n },\r\n La = function (a, b) {\r\n a.x = b.x, a.y = b.y, b.id && (a.id = b.id)\r\n },\r\n Ma = function (a) {\r\n a.x = Math.round(a.x), a.y = Math.round(a.y)\r\n },\r\n Na = null,\r\n Oa = function () {\r\n Na && (e.unbind(document, \"mousemove\", Oa), e.addClass(a, \"pswp--has_mouse\"), i.mouseUsed = !0, Ca(\"mouseUsed\")), Na = setTimeout(function () {\r\n Na = null\r\n }, 100)\r\n },\r\n Pa = function () {\r\n e.bind(document, \"keydown\", f), N.transform && e.bind(f.scrollWrap, \"click\", f), i.mouseUsed || e.bind(document, \"mousemove\", Oa), e.bind(window, \"resize scroll\", f), Ca(\"bindEvents\")\r\n },\r\n Qa = function () {\r\n e.unbind(window, \"resize\", f), e.unbind(window, \"scroll\", r.scroll), e.unbind(document, \"keydown\", f), e.unbind(document, \"mousemove\", Oa), N.transform && e.unbind(f.scrollWrap, \"click\", f), U && e.unbind(window, p, f), Ca(\"unbindEvents\")\r\n },\r\n Ra = function (a, b) {\r\n var c = hc(f.currItem, pa, a);\r\n return b && (ca = c), c\r\n },\r\n Sa = function (a) {\r\n return a || (a = f.currItem), a.initialZoomLevel\r\n },\r\n Ta = function (a) {\r\n return a || (a = f.currItem), a.w > 0 ? i.maxSpreadZoom : 1\r\n },\r\n Ua = function (a, b, c, d) {\r\n return d === f.currItem.initialZoomLevel ? (c[a] = f.currItem.initialPosition[a], !0) : (c[a] = Ka(a, d), c[a] > b.min[a] ? (c[a] = b.min[a], !0) : c[a] < b.max[a] ? (c[a] = b.max[a], !0) : !1)\r\n },\r\n Va = function () {\r\n if (E) {\r\n var b = N.perspective && !G;\r\n return u = \"translate\" + (b ? \"3d(\" : \"(\"), void(v = N.perspective ? \", 0px)\" : \")\")\r\n }\r\n E = \"left\", e.addClass(a, \"pswp--ie\"), Ia = function (a, b) {\r\n b.left = a + \"px\"\r\n }, Ha = function (a) {\r\n var b = a.fitRatio > 1 ? 1 : a.fitRatio,\r\n c = a.container.style,\r\n d = b * a.w,\r\n e = b * a.h;\r\n c.width = d + \"px\", c.height = e + \"px\", c.left = a.initialPosition.x + \"px\", c.top = a.initialPosition.y + \"px\"\r\n }, Ga = function () {\r\n if (da) {\r\n var a = da,\r\n b = f.currItem,\r\n c = b.fitRatio > 1 ? 1 : b.fitRatio,\r\n d = c * b.w,\r\n e = c * b.h;\r\n a.width = d + \"px\", a.height = e + \"px\", a.left = oa.x + \"px\", a.top = oa.y + \"px\"\r\n }\r\n }\r\n },\r\n Wa = function (a) {\r\n var b = \"\";\r\n i.escKey && 27 === a.keyCode ? b = \"close\" : i.arrowKeys && (37 === a.keyCode ? b = \"prev\" : 39 === a.keyCode && (b = \"next\")), b && (a.ctrlKey || a.altKey || a.shiftKey || a.metaKey || (a.preventDefault ? a.preventDefault() : a.returnValue = !1, f[b]()))\r\n },\r\n Xa = function (a) {\r\n a && (X || W || ea || S) && (a.preventDefault(), a.stopPropagation())\r\n },\r\n Ya = function () {\r\n f.setScrollOffset(0, e.getScrollY())\r\n },\r\n Za = {},\r\n $a = 0,\r\n _a = function (a) {\r\n Za[a] && (Za[a].raf && I(Za[a].raf), $a--, delete Za[a])\r\n },\r\n ab = function (a) {\r\n Za[a] && _a(a), Za[a] || ($a++, Za[a] = {})\r\n },\r\n bb = function () {\r\n for (var a in Za) Za.hasOwnProperty(a) && _a(a)\r\n },\r\n cb = function (a, b, c, d, e, f, g) {\r\n var h, i = Da();\r\n ab(a);\r\n var j = function () {\r\n if (Za[a]) {\r\n if (h = Da() - i, h >= d) return _a(a), f(c), void(g && g());\r\n f((c - b) * e(h / d) + b), Za[a].raf = H(j)\r\n }\r\n };\r\n j()\r\n },\r\n db = {\r\n shout: Ca,\r\n listen: Ba,\r\n viewportSize: pa,\r\n options: i,\r\n isMainScrollAnimating: function () {\r\n return ea\r\n },\r\n getZoomLevel: function () {\r\n return s\r\n },\r\n getCurrentIndex: function () {\r\n return m\r\n },\r\n isDragging: function () {\r\n return U\r\n },\r\n isZooming: function () {\r\n return _\r\n },\r\n setScrollOffset: function (a, b) {\r\n ra.x = a, M = ra.y = b, Ca(\"updateScrollOffset\", ra)\r\n },\r\n applyZoomPan: function (a, b, c, d) {\r\n oa.x = b, oa.y = c, s = a, Ga(d)\r\n },\r\n init: function () {\r\n if (!j && !k) {\r\n var c;\r\n f.framework = e, f.template = a, f.bg = e.getChildByClass(a, \"pswp__bg\"), J = a.className, j = !0, N = e.detectFeatures(), H = N.raf, I = N.caf, E = N.transform, L = N.oldIE, f.scrollWrap = e.getChildByClass(a, \"pswp__scroll-wrap\"), f.container = e.getChildByClass(f.scrollWrap, \"pswp__container\"), n = f.container.style, f.itemHolders = y = [{\r\n el: f.container.children[0],\r\n wrap: 0,\r\n index: -1\r\n }, {\r\n el: f.container.children[1],\r\n wrap: 0,\r\n index: -1\r\n }, {\r\n el: f.container.children[2],\r\n wrap: 0,\r\n index: -1\r\n }], y[0].el.style.display = y[2].el.style.display = \"none\", Va(), r = {\r\n resize: f.updateSize,\r\n scroll: Ya,\r\n keydown: Wa,\r\n click: Xa\r\n };\r\n var d = N.isOldIOSPhone || N.isOldAndroid || N.isMobileOpera;\r\n for (N.animationName && N.transform && !d || (i.showAnimationDuration = i.hideAnimationDuration = 0), c = 0; c < va.length; c++) f[\"init\" + va[c]]();\r\n if (b) {\r\n var g = f.ui = new b(f, e);\r\n g.init()\r\n }\r\n Ca(\"firstUpdate\"), m = m || i.index || 0, (isNaN(m) || 0 > m || m >= _b()) && (m = 0), f.currItem = $b(m), (N.isOldIOSPhone || N.isOldAndroid) && (ua = !1), a.setAttribute(\"aria-hidden\", \"false\"), i.modal && (ua ? a.style.position = \"fixed\" : (a.style.position = \"absolute\", a.style.top = e.getScrollY() + \"px\")), void 0 === M && (Ca(\"initialLayout\"), M = K = e.getScrollY());\r\n var l = \"pswp--open \";\r\n for (i.mainClass && (l += i.mainClass + \" \"), i.showHideOpacity && (l += \"pswp--animate_opacity \"), l += G ? \"pswp--touch\" : \"pswp--notouch\", l += N.animationName ? \" pswp--css_animation\" : \"\", l += N.svg ? \" pswp--svg\" : \"\", e.addClass(a, l), f.updateSize(), o = -1, ta = null, c = 0; h > c; c++) Ia((c + o) * sa.x, y[c].el.style);\r\n L || e.bind(f.scrollWrap, q, f), Ba(\"initialZoomInEnd\", function () {\r\n f.setContent(y[0], m - 1), f.setContent(y[2], m + 1), y[0].el.style.display = y[2].el.style.display = \"block\", i.focus && a.focus(), Pa()\r\n }), f.setContent(y[1], m), f.updateCurrItem(), Ca(\"afterInit\"), ua || (w = setInterval(function () {\r\n $a || U || _ || s !== f.currItem.initialZoomLevel || f.updateSize()\r\n }, 1e3)), e.addClass(a, \"pswp--visible\")\r\n }\r\n },\r\n close: function () {\r\n j && (j = !1, k = !0, Ca(\"close\"), Qa(), bc(f.currItem, null, !0, f.destroy))\r\n },\r\n destroy: function () {\r\n Ca(\"destroy\"), Wb && clearTimeout(Wb), a.setAttribute(\"aria-hidden\", \"true\"), a.className = J, w && clearInterval(w), e.unbind(f.scrollWrap, q, f), e.unbind(window, \"scroll\", f), yb(), bb(), Aa = null\r\n },\r\n panTo: function (a, b, c) {\r\n c || (a > ca.min.x ? a = ca.min.x : a < ca.max.x && (a = ca.max.x), b > ca.min.y ? b = ca.min.y : b < ca.max.y && (b = ca.max.y)), oa.x = a, oa.y = b, Ga()\r\n },\r\n handleEvent: function (a) {\r\n a = a || window.event, r[a.type] && r[a.type](a)\r\n },\r\n goTo: function (a) {\r\n a = za(a);\r\n var b = a - m;\r\n ta = b, m = a, f.currItem = $b(m), qa -= b, Ja(sa.x * qa), bb(), ea = !1, f.updateCurrItem()\r\n },\r\n next: function () {\r\n f.goTo(m + 1)\r\n },\r\n prev: function () {\r\n f.goTo(m - 1)\r\n },\r\n updateCurrZoomItem: function (a) {\r\n if (a && Ca(\"beforeChange\", 0), y[1].el.children.length) {\r\n var b = y[1].el.children[0];\r\n da = e.hasClass(b, \"pswp__zoom-wrap\") ? b.style : null\r\n } else da = null;\r\n ca = f.currItem.bounds, t = s = f.currItem.initialZoomLevel, oa.x = ca.center.x, oa.y = ca.center.y, a && Ca(\"afterChange\")\r\n },\r\n invalidateCurrItems: function () {\r\n x = !0;\r\n for (var a = 0; h > a; a++) y[a].item && (y[a].item.needsUpdate = !0)\r\n },\r\n updateCurrItem: function (a) {\r\n if (0 !== ta) {\r\n var b, c = Math.abs(ta);\r\n if (!(a && 2 > c)) {\r\n f.currItem = $b(m), xa = !1, Ca(\"beforeChange\", ta), c >= h && (o += ta + (ta > 0 ? -h : h), c = h);\r\n for (var d = 0; c > d; d++) ta > 0 ? (b = y.shift(), y[h - 1] = b, o++, Ia((o + 2) * sa.x, b.el.style), f.setContent(b, m - c + d + 1 + 1)) : (b = y.pop(), y.unshift(b), o--, Ia(o * sa.x, b.el.style), f.setContent(b, m + c - d - 1 - 1));\r\n if (da && 1 === Math.abs(ta)) {\r\n var e = $b(z);\r\n e.initialZoomLevel !== s && (hc(e, pa), lc(e), Ha(e))\r\n }\r\n ta = 0, f.updateCurrZoomItem(), z = m, Ca(\"afterChange\")\r\n }\r\n }\r\n },\r\n updateSize: function (b) {\r\n if (!ua && i.modal) {\r\n var c = e.getScrollY();\r\n if (M !== c && (a.style.top = c + \"px\", M = c), !b && wa.x === window.innerWidth && wa.y === window.innerHeight) return;\r\n wa.x = window.innerWidth, wa.y = window.innerHeight, a.style.height = wa.y + \"px\"\r\n }\r\n if (pa.x = f.scrollWrap.clientWidth, pa.y = f.scrollWrap.clientHeight, Ya(), sa.x = pa.x + Math.round(pa.x * i.spacing), sa.y = pa.y, Ja(sa.x * qa), Ca(\"beforeResize\"), void 0 !== o) {\r\n for (var d, g, j, k = 0; h > k; k++) d = y[k], Ia((k + o) * sa.x, d.el.style), j = m + k - 1, i.loop && _b() > 2 && (j = za(j)), g = $b(j), g && (x || g.needsUpdate || !g.bounds) ? (f.cleanSlide(g), f.setContent(d, j), 1 === k && (f.currItem = g, f.updateCurrZoomItem(!0)), g.needsUpdate = !1) : -1 === d.index && j >= 0 && f.setContent(d, j), g && g.container && (hc(g, pa), lc(g), Ha(g));\r\n x = !1\r\n }\r\n t = s = f.currItem.initialZoomLevel, ca = f.currItem.bounds, ca && (oa.x = ca.center.x, oa.y = ca.center.y, Ga(!0)), Ca(\"resize\")\r\n },\r\n zoomTo: function (a, b, c, d, f) {\r\n b && (t = s, tb.x = Math.abs(b.x) - oa.x, tb.y = Math.abs(b.y) - oa.y, La(na, oa));\r\n var g = Ra(a, !1),\r\n h = {};\r\n Ua(\"x\", g, h, a), Ua(\"y\", g, h, a);\r\n var i = s,\r\n j = {\r\n x: oa.x,\r\n y: oa.y\r\n };\r\n Ma(h);\r\n var k = function (b) {\r\n 1 === b ? (s = a, oa.x = h.x, oa.y = h.y) : (s = (a - i) * b + i, oa.x = (h.x - j.x) * b + j.x, oa.y = (h.y - j.y) * b + j.y), f && f(b), Ga(1 === b)\r\n };\r\n c ? cb(\"customZoomTo\", 0, 1, c, d || e.easing.sine.inOut, k) : k(1)\r\n }\r\n },\r\n eb = 30,\r\n fb = 10,\r\n gb = {},\r\n hb = {},\r\n ib = {},\r\n jb = {},\r\n kb = {},\r\n lb = [],\r\n mb = {},\r\n nb = [],\r\n ob = {},\r\n pb = 0,\r\n qb = la(),\r\n rb = 0,\r\n sb = la(),\r\n tb = la(),\r\n ub = la(),\r\n vb = function (a, b) {\r\n return a.x === b.x && a.y === b.y\r\n },\r\n wb = function (a, b) {\r\n return Math.abs(a.x - b.x) < g && Math.abs(a.y - b.y) < g\r\n },\r\n xb = function (a, b) {\r\n return ob.x = Math.abs(a.x - b.x), ob.y = Math.abs(a.y - b.y), Math.sqrt(ob.x * ob.x + ob.y * ob.y)\r\n },\r\n yb = function () {\r\n Y && (I(Y), Y = null)\r\n },\r\n zb = function () {\r\n U && (Y = H(zb), Pb())\r\n },\r\n Ab = function () {\r\n return !(\"fit\" === i.scaleMode && s === f.currItem.initialZoomLevel)\r\n },\r\n Bb = function (a, b) {\r\n return a && a !== document ? a.getAttribute(\"class\") && a.getAttribute(\"class\").indexOf(\"pswp__scroll-wrap\") > -1 ? !1 : b(a) ? a : Bb(a.parentNode, b) : !1\r\n },\r\n Cb = {},\r\n Db = function (a, b) {\r\n return Cb.prevent = !Bb(a.target, i.isClickableElement), Ca(\"preventDragEvent\", a, b, Cb), Cb.prevent\r\n },\r\n Eb = function (a, b) {\r\n return b.x = a.pageX, b.y = a.pageY, b.id = a.identifier, b\r\n },\r\n Fb = function (a, b, c) {\r\n c.x = .5 * (a.x + b.x), c.y = .5 * (a.y + b.y)\r\n },\r\n Gb = function (a, b, c) {\r\n if (a - P > 50) {\r\n var d = nb.length > 2 ? nb.shift() : {};\r\n d.x = b, d.y = c, nb.push(d), P = a\r\n }\r\n },\r\n Hb = function () {\r\n var a = oa.y - f.currItem.initialPosition.y;\r\n return 1 - Math.abs(a / (pa.y / 2))\r\n },\r\n Ib = {},\r\n Jb = {},\r\n Kb = [],\r\n Lb = function (a) {\r\n for (; Kb.length > 0;) Kb.pop();\r\n return F ? (ka = 0, lb.forEach(function (a) {\r\n 0 === ka ? Kb[0] = a : 1 === ka && (Kb[1] = a), ka++\r\n })) : a.type.indexOf(\"touch\") > -1 ? a.touches && a.touches.length > 0 && (Kb[0] = Eb(a.touches[0], Ib), a.touches.length > 1 && (Kb[1] = Eb(a.touches[1], Jb))) : (Ib.x = a.pageX, Ib.y = a.pageY, Ib.id = \"\", Kb[0] = Ib), Kb\r\n },\r\n Mb = function (a, b) {\r\n var c, d, e, g, h = 0,\r\n j = oa[a] + b[a],\r\n k = b[a] > 0,\r\n l = sb.x + b.x,\r\n m = sb.x - mb.x;\r\n return c = j > ca.min[a] || j < ca.max[a] ? i.panEndFriction : 1, j = oa[a] + b[a] * c, !i.allowPanToNext && s !== f.currItem.initialZoomLevel || (da ? \"h\" !== fa || \"x\" !== a || W || (k ? (j > ca.min[a] && (c = i.panEndFriction, h = ca.min[a] - j, d = ca.min[a] - na[a]), (0 >= d || 0 > m) && _b() > 1 ? (g = l, 0 > m && l > mb.x && (g = mb.x)) : ca.min.x !== ca.max.x && (e = j)) : (j < ca.max[a] && (c = i.panEndFriction, h = j - ca.max[a], d = na[a] - ca.max[a]), (0 >= d || m > 0) && _b() > 1 ? (g = l, m > 0 && l < mb.x && (g = mb.x)) : ca.min.x !== ca.max.x && (e = j))) : g = l, \"x\" !== a) ? void(ea || Z || s > f.currItem.fitRatio && (oa[a] += b[a] * c)) : (void 0 !== g && (Ja(g, !0), Z = g === mb.x ? !1 : !0), ca.min.x !== ca.max.x && (void 0 !== e ? oa.x = e : Z || (oa.x += b.x * c)), void 0 !== g)\r\n },\r\n Nb = function (a) {\r\n if (!(\"mousedown\" === a.type && a.button > 0)) {\r\n if (Zb) return void a.preventDefault();\r\n if (!T || \"mousedown\" !== a.type) {\r\n if (Db(a, !0) && a.preventDefault(), Ca(\"pointerDown\"), F) {\r\n var b = e.arraySearch(lb, a.pointerId, \"id\");\r\n 0 > b && (b = lb.length), lb[b] = {\r\n x: a.pageX,\r\n y: a.pageY,\r\n id: a.pointerId\r\n }\r\n }\r\n var c = Lb(a),\r\n d = c.length;\r\n $ = null, bb(), U && 1 !== d || (U = ga = !0, e.bind(window, p, f), R = ja = ha = S = Z = X = V = W = !1, fa = null, Ca(\"firstTouchStart\", c), La(na, oa), ma.x = ma.y = 0, La(jb, c[0]), La(kb, jb), mb.x = sa.x * qa, nb = [{\r\n x: jb.x,\r\n y: jb.y\r\n }], P = O = Da(), Ra(s, !0), yb(), zb()), !_ && d > 1 && !ea && !Z && (t = s, W = !1, _ = V = !0, ma.y = ma.x = 0, La(na, oa), La(gb, c[0]), La(hb, c[1]), Fb(gb, hb, ub), tb.x = Math.abs(ub.x) - oa.x, tb.y = Math.abs(ub.y) - oa.y, aa = ba = xb(gb, hb))\r\n }\r\n }\r\n },\r\n Ob = function (a) {\r\n if (a.preventDefault(), F) {\r\n var b = e.arraySearch(lb, a.pointerId, \"id\");\r\n if (b > -1) {\r\n var c = lb[b];\r\n c.x = a.pageX, c.y = a.pageY\r\n }\r\n }\r\n if (U) {\r\n var d = Lb(a);\r\n if (fa || X || _) $ = d;\r\n else if (sb.x !== sa.x * qa) fa = \"h\";\r\n else {\r\n var f = Math.abs(d[0].x - jb.x) - Math.abs(d[0].y - jb.y);\r\n Math.abs(f) >= fb && (fa = f > 0 ? \"h\" : \"v\", $ = d)\r\n }\r\n }\r\n },\r\n Pb = function () {\r\n if ($) {\r\n var a = $.length;\r\n if (0 !== a)\r\n if (La(gb, $[0]), ib.x = gb.x - jb.x, ib.y = gb.y - jb.y, _ && a > 1) {\r\n if (jb.x = gb.x, jb.y = gb.y, !ib.x && !ib.y && vb($[1], hb)) return;\r\n La(hb, $[1]), W || (W = !0, Ca(\"zoomGestureStarted\"));\r\n var b = xb(gb, hb),\r\n c = Ub(b);\r\n c > f.currItem.initialZoomLevel + f.currItem.initialZoomLevel / 15 && (ja = !0);\r\n var d = 1,\r\n e = Sa(),\r\n g = Ta();\r\n if (e > c)\r\n if (i.pinchToClose && !ja && t <= f.currItem.initialZoomLevel) {\r\n var h = e - c,\r\n j = 1 - h / (e / 1.2);\r\n Ea(j), Ca(\"onPinchClose\", j), ha = !0\r\n } else d = (e - c) / e, d > 1 && (d = 1), c = e - d * (e / 3);\r\n else c > g && (d = (c - g) / (6 * e), d > 1 && (d = 1), c = g + d * e);\r\n 0 > d && (d = 0), aa = b, Fb(gb, hb, qb), ma.x += qb.x - ub.x, ma.y += qb.y - ub.y, La(ub, qb), oa.x = Ka(\"x\", c), oa.y = Ka(\"y\", c), R = c > s, s = c, Ga()\r\n } else {\r\n if (!fa) return;\r\n if (ga && (ga = !1, Math.abs(ib.x) >= fb && (ib.x -= $[0].x - kb.x), Math.abs(ib.y) >= fb && (ib.y -= $[0].y - kb.y)), jb.x = gb.x, jb.y = gb.y, 0 === ib.x && 0 === ib.y) return;\r\n if (\"v\" === fa && i.closeOnVerticalDrag && !Ab()) {\r\n ma.y += ib.y, oa.y += ib.y;\r\n var k = Hb();\r\n return S = !0, Ca(\"onVerticalDrag\", k), Ea(k), void Ga()\r\n }\r\n Gb(Da(), gb.x, gb.y), X = !0, ca = f.currItem.bounds;\r\n var l = Mb(\"x\", ib);\r\n l || (Mb(\"y\", ib), Ma(oa), Ga())\r\n }\r\n }\r\n },\r\n Qb = function (a) {\r\n if (N.isOldAndroid) {\r\n if (T && \"mouseup\" === a.type) return;\r\n a.type.indexOf(\"touch\") > -1 && (clearTimeout(T), T = setTimeout(function () {\r\n T = 0\r\n }, 600))\r\n }\r\n Ca(\"pointerUp\"), Db(a, !1) && a.preventDefault();\r\n var b;\r\n if (F) {\r\n var c = e.arraySearch(lb, a.pointerId, \"id\");\r\n if (c > -1)\r\n if (b = lb.splice(c, 1)[0], navigator.pointerEnabled) b.type = a.pointerType || \"mouse\";\r\n else {\r\n var d = {\r\n 4: \"mouse\",\r\n 2: \"touch\",\r\n 3: \"pen\"\r\n };\r\n b.type = d[a.pointerType], b.type || (b.type = a.pointerType || \"mouse\")\r\n }\r\n }\r\n var g, h = Lb(a),\r\n j = h.length;\r\n if (\"mouseup\" === a.type && (j = 0), 2 === j) return $ = null, !0;\r\n 1 === j && La(kb, h[0]), 0 !== j || fa || ea || (b || (\"mouseup\" === a.type ? b = {\r\n x: a.pageX,\r\n y: a.pageY,\r\n type: \"mouse\"\r\n } : a.changedTouches && a.changedTouches[0] && (b = {\r\n x: a.changedTouches[0].pageX,\r\n y: a.changedTouches[0].pageY,\r\n type: \"touch\"\r\n })), Ca(\"touchRelease\", a, b));\r\n var k = -1;\r\n if (0 === j && (U = !1, e.unbind(window, p, f), yb(), _ ? k = 0 : -1 !== rb && (k = Da() - rb)), rb = 1 === j ? Da() : -1, g = -1 !== k && 150 > k ? \"zoom\" : \"swipe\", _ && 2 > j && (_ = !1, 1 === j && (g = \"zoomPointerUp\"), Ca(\"zoomGestureEnded\")), $ = null, X || W || ea || S)\r\n if (bb(), Q || (Q = Rb()), Q.calculateSwipeSpeed(\"x\"), S) {\r\n var l = Hb();\r\n if (l < i.verticalDragRange) f.close();\r\n else {\r\n var m = oa.y,\r\n n = ia;\r\n cb(\"verticalDrag\", 0, 1, 300, e.easing.cubic.out, function (a) {\r\n oa.y = (f.currItem.initialPosition.y - m) * a + m, Ea((1 - n) * a + n), Ga()\r\n }), Ca(\"onVerticalDrag\", 1)\r\n }\r\n } else {\r\n if ((Z || ea) && 0 === j) {\r\n var o = Tb(g, Q);\r\n if (o) return;\r\n g = \"zoomPointerUp\"\r\n }\r\n if (!ea) return \"swipe\" !== g ? void Vb() : void(!Z && s > f.currItem.fitRatio && Sb(Q))\r\n }\r\n },\r\n Rb = function () {\r\n var a, b, c = {\r\n lastFlickOffset: {},\r\n lastFlickDist: {},\r\n lastFlickSpeed: {},\r\n slowDownRatio: {},\r\n slowDownRatioReverse: {},\r\n speedDecelerationRatio: {},\r\n speedDecelerationRatioAbs: {},\r\n distanceOffset: {},\r\n backAnimDestination: {},\r\n backAnimStarted: {},\r\n calculateSwipeSpeed: function (d) {\r\n nb.length > 1 ? (a = Da() - P + 50, b = nb[nb.length - 2][d]) : (a = Da() - O, b = kb[d]), c.lastFlickOffset[d] = jb[d] - b, c.lastFlickDist[d] = Math.abs(c.lastFlickOffset[d]), c.lastFlickDist[d] > 20 ? c.lastFlickSpeed[d] = c.lastFlickOffset[d] / a : c.lastFlickSpeed[d] = 0, Math.abs(c.lastFlickSpeed[d]) < .1 && (c.lastFlickSpeed[d] = 0), c.slowDownRatio[d] = .95, c.slowDownRatioReverse[d] = 1 - c.slowDownRatio[d], c.speedDecelerationRatio[d] = 1\r\n },\r\n calculateOverBoundsAnimOffset: function (a, b) {\r\n c.backAnimStarted[a] || (oa[a] > ca.min[a] ? c.backAnimDestination[a] = ca.min[a] : oa[a] < ca.max[a] && (c.backAnimDestination[a] = ca.max[a]), void 0 !== c.backAnimDestination[a] && (c.slowDownRatio[a] = .7, c.slowDownRatioReverse[a] = 1 - c.slowDownRatio[a], c.speedDecelerationRatioAbs[a] < .05 && (c.lastFlickSpeed[a] = 0, c.backAnimStarted[a] = !0, cb(\"bounceZoomPan\" + a, oa[a], c.backAnimDestination[a], b || 300, e.easing.sine.out, function (b) {\r\n oa[a] = b, Ga()\r\n }))))\r\n },\r\n calculateAnimOffset: function (a) {\r\n c.backAnimStarted[a] || (c.speedDecelerationRatio[a] = c.speedDecelerationRatio[a] * (c.slowDownRatio[a] + c.slowDownRatioReverse[a] - c.slowDownRatioReverse[a] * c.timeDiff / 10), c.speedDecelerationRatioAbs[a] = Math.abs(c.lastFlickSpeed[a] * c.speedDecelerationRatio[a]), c.distanceOffset[a] = c.lastFlickSpeed[a] * c.speedDecelerationRatio[a] * c.timeDiff, oa[a] += c.distanceOffset[a])\r\n },\r\n panAnimLoop: function () {\r\n return Za.zoomPan && (Za.zoomPan.raf = H(c.panAnimLoop), c.now = Da(), c.timeDiff = c.now - c.lastNow, c.lastNow = c.now, c.calculateAnimOffset(\"x\"), c.calculateAnimOffset(\"y\"), Ga(), c.calculateOverBoundsAnimOffset(\"x\"), c.calculateOverBoundsAnimOffset(\"y\"), c.speedDecelerationRatioAbs.x < .05 && c.speedDecelerationRatioAbs.y < .05) ? (oa.x = Math.round(oa.x), oa.y = Math.round(oa.y), Ga(), void _a(\"zoomPan\")) : void 0\r\n }\r\n };\r\n return c\r\n },\r\n Sb = function (a) {\r\n return a.calculateSwipeSpeed(\"y\"), ca = f.currItem.bounds, a.backAnimDestination = {}, a.backAnimStarted = {}, Math.abs(a.lastFlickSpeed.x) <= .05 && Math.abs(a.lastFlickSpeed.y) <= .05 ? (a.speedDecelerationRatioAbs.x = a.speedDecelerationRatioAbs.y = 0, a.calculateOverBoundsAnimOffset(\"x\"), a.calculateOverBoundsAnimOffset(\"y\"), !0) : (ab(\"zoomPan\"), a.lastNow = Da(), void a.panAnimLoop())\r\n },\r\n Tb = function (a, b) {\r\n var c;\r\n ea || (pb = m);\r\n var d;\r\n if (\"swipe\" === a) {\r\n var g = jb.x - kb.x,\r\n h = b.lastFlickDist.x < 10;\r\n g > eb && (h || b.lastFlickOffset.x > 20) ? d = -1 : -eb > g && (h || b.lastFlickOffset.x < -20) && (d = 1)\r\n }\r\n var j;\r\n d && (m += d, 0 > m ? (m = i.loop ? _b() - 1 : 0, j = !0) : m >= _b() && (m = i.loop ? 0 : _b() - 1, j = !0), (!j || i.loop) && (ta += d, qa -= d, c = !0));\r\n var k, l = sa.x * qa,\r\n n = Math.abs(l - sb.x);\r\n return c || l > sb.x == b.lastFlickSpeed.x > 0 ? (k = Math.abs(b.lastFlickSpeed.x) > 0 ? n / Math.abs(b.lastFlickSpeed.x) : 333, k = Math.min(k, 400), k = Math.max(k, 250)) : k = 333, pb === m && (c = !1), ea = !0, Ca(\"mainScrollAnimStart\"), cb(\"mainScroll\", sb.x, l, k, e.easing.cubic.out, Ja, function () {\r\n bb(), ea = !1, pb = -1, (c || pb !== m) && f.updateCurrItem(), Ca(\"mainScrollAnimComplete\")\r\n }), c && f.updateCurrItem(!0), c\r\n },\r\n Ub = function (a) {\r\n return 1 / ba * a * t\r\n },\r\n Vb = function () {\r\n var a = s,\r\n b = Sa(),\r\n c = Ta();\r\n b > s ? a = b : s > c && (a = c);\r\n var d, g = 1,\r\n h = ia;\r\n return ha && !R && !ja && b > s ? (f.close(), !0) : (ha && (d = function (a) {\r\n Ea((g - h) * a + h)\r\n }), f.zoomTo(a, 0, 200, e.easing.cubic.out, d), !0)\r\n };\r\n ya(\"Gestures\", {\r\n publicMethods: {\r\n initGestures: function () {\r\n var a = function (a, b, c, d, e) {\r\n A = a + b, B = a + c, C = a + d, D = e ? a + e : \"\"\r\n };\r\n F = N.pointerEvent, F && N.touch && (N.touch = !1), F ? navigator.pointerEnabled ? a(\"pointer\", \"down\", \"move\", \"up\", \"cancel\") : a(\"MSPointer\", \"Down\", \"Move\", \"Up\", \"Cancel\") : N.touch ? (a(\"touch\", \"start\", \"move\", \"end\", \"cancel\"), G = !0) : a(\"mouse\", \"down\", \"move\", \"up\"), p = B + \" \" + C + \" \" + D, q = A, F && !G && (G = navigator.maxTouchPoints > 1 || navigator.msMaxTouchPoints > 1), f.likelyTouchDevice = G, r[A] = Nb, r[B] = Ob, r[C] = Qb, D && (r[D] = r[C]), N.touch && (q += \" mousedown\", p += \" mousemove mouseup\", r.mousedown = r[A], r.mousemove = r[B], r.mouseup = r[C]), G || (i.allowPanToNext = !1)\r\n }\r\n }\r\n });\r\n var Wb, Xb, Yb, Zb, $b, _b, ac, bc = function (b, c, d, g) {\r\n Wb && clearTimeout(Wb), Zb = !0, Yb = !0;\r\n var h;\r\n b.initialLayout ? (h = b.initialLayout, b.initialLayout = null) : h = i.getThumbBoundsFn && i.getThumbBoundsFn(m);\r\n var j = d ? i.hideAnimationDuration : i.showAnimationDuration,\r\n k = function () {\r\n _a(\"initialZoom\"), d ? (f.template.removeAttribute(\"style\"), f.bg.removeAttribute(\"style\")) : (Ea(1), c && (c.style.display = \"block\"), e.addClass(a, \"pswp--animated-in\"), Ca(\"initialZoom\" + (d ? \"OutEnd\" : \"InEnd\"))), g && g(), Zb = !1\r\n };\r\n if (!j || !h || void 0 === h.x) return Ca(\"initialZoom\" + (d ? \"Out\" : \"In\")), s = b.initialZoomLevel, La(oa, b.initialPosition), Ga(), a.style.opacity = d ? 0 : 1, Ea(1), void(j ? setTimeout(function () {\r\n k()\r\n }, j) : k());\r\n var n = function () {\r\n var c = l,\r\n g = !f.currItem.src || f.currItem.loadError || i.showHideOpacity;\r\n b.miniImg && (b.miniImg.style.webkitBackfaceVisibility = \"hidden\"), d || (s = h.w / b.w, oa.x = h.x, oa.y = h.y - K, f[g ? \"template\" : \"bg\"].style.opacity = .001, Ga()), ab(\"initialZoom\"), d && !c && e.removeClass(a, \"pswp--animated-in\"), g && (d ? e[(c ? \"remove\" : \"add\") + \"Class\"](a, \"pswp--animate_opacity\") : setTimeout(function () {\r\n e.addClass(a, \"pswp--animate_opacity\")\r\n }, 30)), Wb = setTimeout(function () {\r\n if (Ca(\"initialZoom\" + (d ? \"Out\" : \"In\")), d) {\r\n var f = h.w / b.w,\r\n i = {\r\n x: oa.x,\r\n y: oa.y\r\n },\r\n l = s,\r\n m = ia,\r\n n = function (b) {\r\n 1 === b ? (s = f, oa.x = h.x, oa.y = h.y - M) : (s = (f - l) * b + l, oa.x = (h.x - i.x) * b + i.x, oa.y = (h.y - M - i.y) * b + i.y), Ga(), g ? a.style.opacity = 1 - b : Ea(m - b * m)\r\n };\r\n c ? cb(\"initialZoom\", 0, 1, j, e.easing.cubic.out, n, k) : (n(1), Wb = setTimeout(k, j + 20))\r\n } else s = b.initialZoomLevel, La(oa, b.initialPosition), Ga(), Ea(1), g ? a.style.opacity = 1 : Ea(1), Wb = setTimeout(k, j + 20)\r\n }, d ? 25 : 90)\r\n };\r\n n()\r\n },\r\n cc = {},\r\n dc = [],\r\n ec = {\r\n index: 0,\r\n errorMsg: '
      The image could not be loaded.
      ',\r\n forceProgressiveLoading: !1,\r\n preload: [1, 1],\r\n getNumItemsFn: function () {\r\n return Xb.length\r\n }\r\n },\r\n fc = function () {\r\n return {\r\n center: {\r\n x: 0,\r\n y: 0\r\n },\r\n max: {\r\n x: 0,\r\n y: 0\r\n },\r\n min: {\r\n x: 0,\r\n y: 0\r\n }\r\n }\r\n },\r\n gc = function (a, b, c) {\r\n var d = a.bounds;\r\n d.center.x = Math.round((cc.x - b) / 2), d.center.y = Math.round((cc.y - c) / 2) + a.vGap.top, d.max.x = b > cc.x ? Math.round(cc.x - b) : d.center.x, d.max.y = c > cc.y ? Math.round(cc.y - c) + a.vGap.top : d.center.y, d.min.x = b > cc.x ? 0 : d.center.x, d.min.y = c > cc.y ? a.vGap.top : d.center.y\r\n },\r\n hc = function (a, b, c) {\r\n if (a.src && !a.loadError) {\r\n var d = !c;\r\n if (d && (a.vGap || (a.vGap = {\r\n top: 0,\r\n bottom: 0\r\n }), Ca(\"parseVerticalMargin\", a)), cc.x = b.x, cc.y = b.y - a.vGap.top - a.vGap.bottom, d) {\r\n var e = cc.x / a.w,\r\n f = cc.y / a.h;\r\n a.fitRatio = f > e ? e : f;\r\n var g = i.scaleMode;\r\n \"orig\" === g ? c = 1 : \"fit\" === g && (c = a.fitRatio), c > 1 && (c = 1), a.initialZoomLevel = c, a.bounds || (a.bounds = fc())\r\n }\r\n if (!c) return;\r\n return gc(a, a.w * c, a.h * c), d && c === a.initialZoomLevel && (a.initialPosition = a.bounds.center), a.bounds\r\n }\r\n return a.w = a.h = 0, a.initialZoomLevel = a.fitRatio = 1, a.bounds = fc(), a.initialPosition = a.bounds.center, a.bounds\r\n },\r\n ic = function (a, b, c, d, e, g) {\r\n b.loadError || d && (b.imageAppended = !0, lc(b, d, b === f.currItem && xa), c.appendChild(d), g && setTimeout(function () {\r\n b && b.loaded && b.placeholder && (b.placeholder.style.display = \"none\", b.placeholder = null)\r\n }, 500))\r\n },\r\n jc = function (a) {\r\n a.loading = !0, a.loaded = !1;\r\n var b = a.img = e.createEl(\"pswp__img\", \"img\"),\r\n c = function () {\r\n a.loading = !1, a.loaded = !0, a.loadComplete ? a.loadComplete(a) : a.img = null, b.onload = b.onerror = null, b = null\r\n };\r\n return b.onload = c, b.onerror = function () {\r\n a.loadError = !0, c()\r\n }, b.src = a.src, b\r\n },\r\n kc = function (a, b) {\r\n return a.src && a.loadError && a.container ? (b && (a.container.innerHTML = \"\"), a.container.innerHTML = i.errorMsg.replace(\"%url%\", a.src), !0) : void 0\r\n },\r\n lc = function (a, b, c) {\r\n if (a.src) {\r\n b || (b = a.container.lastChild);\r\n var d = c ? a.w : Math.round(a.w * a.fitRatio),\r\n e = c ? a.h : Math.round(a.h * a.fitRatio);\r\n a.placeholder && !a.loaded && (a.placeholder.style.width = d + \"px\", a.placeholder.style.height = e + \"px\"), b.style.width = d + \"px\", b.style.height = e + \"px\"\r\n }\r\n },\r\n mc = function () {\r\n if (dc.length) {\r\n for (var a, b = 0; b < dc.length; b++) a = dc[b], a.holder.index === a.index && ic(a.index, a.item, a.baseDiv, a.img, !1, a.clearPlaceholder);\r\n dc = []\r\n }\r\n };\r\n ya(\"Controller\", {\r\n publicMethods: {\r\n lazyLoadItem: function (a) {\r\n a = za(a);\r\n var b = $b(a);\r\n b && (!b.loaded && !b.loading || x) && (Ca(\"gettingData\", a, b), b.src && jc(b))\r\n },\r\n initController: function () {\r\n e.extend(i, ec, !0), f.items = Xb = c, $b = f.getItemAt, _b = i.getNumItemsFn, ac = i.loop, _b() < 3 && (i.loop = !1), Ba(\"beforeChange\", function (a) {\r\n var b, c = i.preload,\r\n d = null === a ? !0 : a >= 0,\r\n e = Math.min(c[0], _b()),\r\n g = Math.min(c[1], _b());\r\n for (b = 1;\r\n (d ? g : e) >= b; b++) f.lazyLoadItem(m + b);\r\n for (b = 1;\r\n (d ? e : g) >= b; b++) f.lazyLoadItem(m - b)\r\n }), Ba(\"initialLayout\", function () {\r\n f.currItem.initialLayout = i.getThumbBoundsFn && i.getThumbBoundsFn(m)\r\n }), Ba(\"mainScrollAnimComplete\", mc), Ba(\"initialZoomInEnd\", mc), Ba(\"destroy\", function () {\r\n for (var a, b = 0; b < Xb.length; b++) a = Xb[b], a.container && (a.container = null), a.placeholder && (a.placeholder = null), a.img && (a.img = null), a.preloader && (a.preloader = null), a.loadError && (a.loaded = a.loadError = !1);\r\n dc = null\r\n })\r\n },\r\n getItemAt: function (a) {\r\n return a >= 0 && void 0 !== Xb[a] ? Xb[a] : !1\r\n },\r\n allowProgressiveImg: function () {\r\n return i.forceProgressiveLoading || !G || i.mouseUsed || screen.width > 1200\r\n },\r\n setContent: function (a, b) {\r\n i.loop && (b = za(b));\r\n var c = f.getItemAt(a.index);\r\n c && (c.container = null);\r\n var d, g = f.getItemAt(b);\r\n if (!g) return void(a.el.innerHTML = \"\");\r\n Ca(\"gettingData\", b, g), a.index = b, a.item = g;\r\n var h = g.container = e.createEl(\"pswp__zoom-wrap\");\r\n if (!g.src && g.html && (g.html.tagName ? h.appendChild(g.html) : h.innerHTML = g.html), kc(g), hc(g, pa), !g.src || g.loadError || g.loaded) g.src && !g.loadError && (d = e.createEl(\"pswp__img\", \"img\"), d.style.opacity = 1, d.src = g.src, lc(g, d), ic(b, g, h, d, !0));\r\n else {\r\n if (g.loadComplete = function (c) {\r\n if (j) {\r\n if (a && a.index === b) {\r\n if (kc(c, !0)) return c.loadComplete = c.img = null, hc(c, pa), Ha(c), void(a.index === m && f.updateCurrZoomItem());\r\n c.imageAppended ? !Zb && c.placeholder && (c.placeholder.style.display = \"none\", c.placeholder = null) : N.transform && (ea || Zb) ? dc.push({\r\n item: c,\r\n baseDiv: h,\r\n img: c.img,\r\n index: b,\r\n holder: a,\r\n clearPlaceholder: !0\r\n }) : ic(b, c, h, c.img, ea || Zb, !0)\r\n }\r\n c.loadComplete = null, c.img = null, Ca(\"imageLoadComplete\", b, c)\r\n }\r\n }, e.features.transform) {\r\n var k = \"pswp__img pswp__img--placeholder\";\r\n k += g.msrc ? \"\" : \" pswp__img--placeholder--blank\";\r\n var l = e.createEl(k, g.msrc ? \"img\" : \"\");\r\n g.msrc && (l.src = g.msrc), lc(g, l), h.appendChild(l), g.placeholder = l\r\n }\r\n g.loading || jc(g), f.allowProgressiveImg() && (!Yb && N.transform ? dc.push({\r\n item: g,\r\n baseDiv: h,\r\n img: g.img,\r\n index: b,\r\n holder: a\r\n }) : ic(b, g, h, g.img, !0, !0))\r\n }\r\n Yb || b !== m ? Ha(g) : (da = h.style, bc(g, d || g.img)), a.el.innerHTML = \"\", a.el.appendChild(h)\r\n },\r\n cleanSlide: function (a) {\r\n a.img && (a.img.onload = a.img.onerror = null), a.loaded = a.loading = a.img = a.imageAppended = !1\r\n }\r\n }\r\n });\r\n var nc, oc = {},\r\n pc = function (a, b, c) {\r\n var d = document.createEvent(\"CustomEvent\"),\r\n e = {\r\n origEvent: a,\r\n target: a.target,\r\n releasePoint: b,\r\n pointerType: c || \"touch\"\r\n };\r\n d.initCustomEvent(\"pswpTap\", !0, !0, e), a.target.dispatchEvent(d)\r\n };\r\n ya(\"Tap\", {\r\n publicMethods: {\r\n initTap: function () {\r\n Ba(\"firstTouchStart\", f.onTapStart), Ba(\"touchRelease\", f.onTapRelease), Ba(\"destroy\", function () {\r\n oc = {}, nc = null\r\n })\r\n },\r\n onTapStart: function (a) {\r\n a.length > 1 && (clearTimeout(nc), nc = null)\r\n },\r\n onTapRelease: function (a, b) {\r\n if (b && !X && !V && !$a) {\r\n var c = b;\r\n if (nc && (clearTimeout(nc), nc = null, wb(c, oc))) return void Ca(\"doubleTap\", c);\r\n if (\"mouse\" === b.type) return void pc(a, b, \"mouse\");\r\n var d = a.target.tagName.toUpperCase();\r\n if (\"BUTTON\" === d || e.hasClass(a.target, \"pswp__single-tap\")) return void pc(a, b);\r\n La(oc, c), nc = setTimeout(function () {\r\n pc(a, b), nc = null\r\n }, 300)\r\n }\r\n }\r\n }\r\n });\r\n var qc;\r\n ya(\"DesktopZoom\", {\r\n publicMethods: {\r\n initDesktopZoom: function () {\r\n L || (G ? Ba(\"mouseUsed\", function () {\r\n f.setupDesktopZoom()\r\n }) : f.setupDesktopZoom(!0))\r\n },\r\n setupDesktopZoom: function (b) {\r\n qc = {};\r\n var c = \"wheel mousewheel DOMMouseScroll\";\r\n Ba(\"bindEvents\", function () {\r\n e.bind(a, c, f.handleMouseWheel)\r\n }), Ba(\"unbindEvents\", function () {\r\n qc && e.unbind(a, c, f.handleMouseWheel)\r\n }), f.mouseZoomedIn = !1;\r\n var d, g = function () {\r\n f.mouseZoomedIn && (e.removeClass(a, \"pswp--zoomed-in\"), f.mouseZoomedIn = !1), 1 > s ? e.addClass(a, \"pswp--zoom-allowed\") : e.removeClass(a, \"pswp--zoom-allowed\"), h()\r\n },\r\n h = function () {\r\n d && (e.removeClass(a, \"pswp--dragging\"), d = !1)\r\n };\r\n Ba(\"resize\", g), Ba(\"afterChange\", g), Ba(\"pointerDown\", function () {\r\n f.mouseZoomedIn && (d = !0, e.addClass(a, \"pswp--dragging\"))\r\n }), Ba(\"pointerUp\", h), b || g()\r\n },\r\n handleMouseWheel: function (a) {\r\n if (s <= f.currItem.fitRatio) return i.modal && (!i.closeOnScroll || $a || U ? a.preventDefault() : E && Math.abs(a.deltaY) > 2 && (l = !0, f.close())), !0;\r\n if (a.stopPropagation(), qc.x = 0, \"deltaX\" in a) 1 === a.deltaMode ? (qc.x = 18 * a.deltaX, qc.y = 18 * a.deltaY) : (qc.x = a.deltaX, qc.y = a.deltaY);\r\n else if (\"wheelDelta\" in a) a.wheelDeltaX && (qc.x = -.16 * a.wheelDeltaX), a.wheelDeltaY ? qc.y = -.16 * a.wheelDeltaY : qc.y = -.16 * a.wheelDelta;\r\n else {\r\n if (!(\"detail\" in a)) return;\r\n qc.y = a.detail\r\n }\r\n Ra(s, !0);\r\n var b = oa.x - qc.x,\r\n c = oa.y - qc.y;\r\n (i.modal || b <= ca.min.x && b >= ca.max.x && c <= ca.min.y && c >= ca.max.y) && a.preventDefault(), f.panTo(b, c)\r\n },\r\n toggleDesktopZoom: function (b) {\r\n b = b || {\r\n x: pa.x / 2 + ra.x,\r\n y: pa.y / 2 + ra.y\r\n };\r\n var c = i.getDoubleTapZoom(!0, f.currItem),\r\n d = s === c;\r\n f.mouseZoomedIn = !d, f.zoomTo(d ? f.currItem.initialZoomLevel : c, b, 333), e[(d ? \"remove\" : \"add\") + \"Class\"](a, \"pswp--zoomed-in\")\r\n }\r\n }\r\n });\r\n var rc, sc, tc, uc, vc, wc, xc, yc, zc, Ac, Bc, Cc, Dc = {\r\n history: !0,\r\n galleryUID: 1\r\n },\r\n Ec = function () {\r\n return Bc.hash.substring(1)\r\n },\r\n Fc = function () {\r\n rc && clearTimeout(rc), tc && clearTimeout(tc)\r\n },\r\n Gc = function () {\r\n var a = Ec(),\r\n b = {};\r\n if (a.length < 5) return b;\r\n var c, d = a.split(\"&\");\r\n for (c = 0; c < d.length; c++)\r\n if (d[c]) {\r\n var e = d[c].split(\"=\");\r\n e.length < 2 || (b[e[0]] = e[1])\r\n }\r\n if (i.galleryPIDs) {\r\n var f = b.pid;\r\n for (b.pid = 0, c = 0; c < Xb.length; c++)\r\n if (Xb[c].pid === f) {\r\n b.pid = c;\r\n break\r\n }\r\n } else b.pid = parseInt(b.pid, 10) - 1;\r\n return b.pid < 0 && (b.pid = 0), b\r\n },\r\n Hc = function () {\r\n if (tc && clearTimeout(tc), $a || U) return void(tc = setTimeout(Hc, 500));\r\n uc ? clearTimeout(sc) : uc = !0;\r\n var a = m + 1,\r\n b = $b(m);\r\n b.hasOwnProperty(\"pid\") && (a = b.pid);\r\n var c = xc + \"&gid=\" + i.galleryUID + \"&pid=\" + a;\r\n yc || -1 === Bc.hash.indexOf(c) && (Ac = !0);\r\n var d = Bc.href.split(\"#\")[0] + \"#\" + c;\r\n Cc ? \"#\" + c !== window.location.hash && history[yc ? \"replaceState\" : \"pushState\"](\"\", document.title, d) : yc ? Bc.replace(d) : Bc.hash = c, yc = !0, sc = setTimeout(function () {\r\n uc = !1\r\n }, 60)\r\n };\r\n ya(\"History\", {\r\n publicMethods: {\r\n initHistory: function () {\r\n if (e.extend(i, Dc, !0), i.history) {\r\n Bc = window.location, Ac = !1, zc = !1, yc = !1, xc = Ec(), Cc = \"pushState\" in history, xc.indexOf(\"gid=\") > -1 && (xc = xc.split(\"&gid=\")[0], xc = xc.split(\"?gid=\")[0]), Ba(\"afterChange\", f.updateURL), Ba(\"unbindEvents\", function () {\r\n e.unbind(window, \"hashchange\", f.onHashChange)\r\n });\r\n var a = function () {\r\n wc = !0, zc || (Ac ? history.back() : xc ? Bc.hash = xc : Cc ? history.pushState(\"\", document.title, Bc.pathname + Bc.search) : Bc.hash = \"\"), Fc()\r\n };\r\n Ba(\"unbindEvents\", function () {\r\n l && a()\r\n }), Ba(\"destroy\", function () {\r\n wc || a()\r\n }), Ba(\"firstUpdate\", function () {\r\n m = Gc().pid\r\n });\r\n var b = xc.indexOf(\"pid=\");\r\n b > -1 && (xc = xc.substring(0, b), \"&\" === xc.slice(-1) && (xc = xc.slice(0, -1))), setTimeout(function () {\r\n j && e.bind(window, \"hashchange\", f.onHashChange)\r\n }, 40)\r\n }\r\n },\r\n onHashChange: function () {\r\n return Ec() === xc ? (zc = !0, void f.close()) : void(uc || (vc = !0, f.goTo(Gc().pid), vc = !1))\r\n },\r\n updateURL: function () {\r\n Fc(), vc || (yc ? rc = setTimeout(Hc, 800) : Hc())\r\n }\r\n }\r\n }), e.extend(f, db)\r\n };\r\n return a\r\n});\r\n\r\n/*! PhotoSwipe Default UI - 4.1.1 - 2015-12-24\r\n * http://photoswipe.com\r\n * Copyright (c) 2015 Dmitry Semenov; */\r\n! function (a, b) {\r\n \"function\" == typeof define && define.amd ? define(b) : \"object\" == typeof exports ? module.exports = b() : window.PhotoSwipeUI_Default = b()\r\n}(this, function () {\r\n \"use strict\";\r\n var a = function (a, b) {\r\n var c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v = this,\r\n w = !1,\r\n x = !0,\r\n y = !0,\r\n z = {\r\n barsSize: {\r\n top: 44,\r\n bottom: \"auto\"\r\n },\r\n closeElClasses: [\"item\", \"caption\", \"zoom-wrap\", \"ui\", \"top-bar\"],\r\n timeToIdle: 4e3,\r\n timeToIdleOutside: 1e3,\r\n loadingIndicatorDelay: 1e3,\r\n addCaptionHTMLFn: function (a, b) {\r\n return a.title ? (b.children[0].innerHTML = a.title, !0) : (b.children[0].innerHTML = \"\", !1)\r\n },\r\n closeEl: !0,\r\n captionEl: !0,\r\n fullscreenEl: !0,\r\n zoomEl: !0,\r\n shareEl: !0,\r\n counterEl: !0,\r\n arrowEl: !0,\r\n preloaderEl: !0,\r\n tapToClose: !1,\r\n tapToToggleControls: !0,\r\n clickToCloseNonZoomable: !0,\r\n shareButtons: [{\r\n id: \"facebook\",\r\n label: \"Share on Facebook\",\r\n url: \"https://www.facebook.com/sharer/sharer.php?u={{url}}\"\r\n }, {\r\n id: \"twitter\",\r\n label: \"Tweet\",\r\n url: \"https://twitter.com/intent/tweet?text={{text}}&url={{url}}\"\r\n }, {\r\n id: \"pinterest\",\r\n label: \"Pin it\",\r\n url: \"http://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}\"\r\n }, {\r\n id: \"download\",\r\n label: \"Download image\",\r\n url: \"{{raw_image_url}}\",\r\n download: !0\r\n }],\r\n getImageURLForShare: function () {\r\n return a.currItem.src || \"\"\r\n },\r\n getPageURLForShare: function () {\r\n return window.location.href\r\n },\r\n getTextForShare: function () {\r\n return a.currItem.title || \"\"\r\n },\r\n indexIndicatorSep: \" / \",\r\n fitControlsWidth: 1200\r\n },\r\n A = function (a) {\r\n if (r) return !0;\r\n a = a || window.event, q.timeToIdle && q.mouseUsed && !k && K();\r\n for (var c, d, e = a.target || a.srcElement, f = e.getAttribute(\"class\") || \"\", g = 0; g < S.length; g++) c = S[g], c.onTap && f.indexOf(\"pswp__\" + c.name) > -1 && (c.onTap(), d = !0);\r\n if (d) {\r\n a.stopPropagation && a.stopPropagation(), r = !0;\r\n var h = b.features.isOldAndroid ? 600 : 30;\r\n s = setTimeout(function () {\r\n r = !1\r\n }, h)\r\n }\r\n },\r\n B = function () {\r\n return !a.likelyTouchDevice || q.mouseUsed || screen.width > q.fitControlsWidth\r\n },\r\n C = function (a, c, d) {\r\n b[(d ? \"add\" : \"remove\") + \"Class\"](a, \"pswp__\" + c)\r\n },\r\n D = function () {\r\n var a = 1 === q.getNumItemsFn();\r\n a !== p && (C(d, \"ui--one-slide\", a), p = a)\r\n },\r\n E = function () {\r\n C(i, \"share-modal--hidden\", y)\r\n },\r\n F = function () {\r\n return y = !y, y ? (b.removeClass(i, \"pswp__share-modal--fade-in\"), setTimeout(function () {\r\n y && E()\r\n }, 300)) : (E(), setTimeout(function () {\r\n y || b.addClass(i, \"pswp__share-modal--fade-in\")\r\n }, 30)), y || H(), !1\r\n },\r\n G = function (b) {\r\n b = b || window.event;\r\n var c = b.target || b.srcElement;\r\n return a.shout(\"shareLinkClick\", b, c), c.href ? c.hasAttribute(\"download\") ? !0 : (window.open(c.href, \"pswp_share\", \"scrollbars=yes,resizable=yes,toolbar=no,location=yes,width=550,height=420,top=100,left=\" + (window.screen ? Math.round(screen.width / 2 - 275) : 100)), y || F(), !1) : !1\r\n },\r\n H = function () {\r\n for (var a, b, c, d, e, f = \"\", g = 0; g < q.shareButtons.length; g++) a = q.shareButtons[g], c = q.getImageURLForShare(a), d = q.getPageURLForShare(a), e = q.getTextForShare(a), b = a.url.replace(\"{{url}}\", encodeURIComponent(d)).replace(\"{{image_url}}\", encodeURIComponent(c)).replace(\"{{raw_image_url}}\", c).replace(\"{{text}}\", encodeURIComponent(e)), f += '\", q.parseShareButtonOut && (f = q.parseShareButtonOut(a, f));\r\n i.children[0].innerHTML = f, i.children[0].onclick = G\r\n },\r\n I = function (a) {\r\n for (var c = 0; c < q.closeElClasses.length; c++)\r\n if (b.hasClass(a, \"pswp__\" + q.closeElClasses[c])) return !0\r\n },\r\n J = 0,\r\n K = function () {\r\n clearTimeout(u), J = 0, k && v.setIdle(!1)\r\n },\r\n L = function (a) {\r\n a = a ? a : window.event;\r\n var b = a.relatedTarget || a.toElement;\r\n b && \"HTML\" !== b.nodeName || (clearTimeout(u), u = setTimeout(function () {\r\n v.setIdle(!0)\r\n }, q.timeToIdleOutside))\r\n },\r\n M = function () {\r\n q.fullscreenEl && !b.features.isOldAndroid && (c || (c = v.getFullscreenAPI()), c ? (b.bind(document, c.eventK, v.updateFullscreen), v.updateFullscreen(), b.addClass(a.template, \"pswp--supports-fs\")) : b.removeClass(a.template, \"pswp--supports-fs\"))\r\n },\r\n N = function () {\r\n q.preloaderEl && (O(!0), l(\"beforeChange\", function () {\r\n clearTimeout(o), o = setTimeout(function () {\r\n a.currItem && a.currItem.loading ? (!a.allowProgressiveImg() || a.currItem.img && !a.currItem.img.naturalWidth) && O(!1) : O(!0)\r\n }, q.loadingIndicatorDelay)\r\n }), l(\"imageLoadComplete\", function (b, c) {\r\n a.currItem === c && O(!0)\r\n }))\r\n },\r\n O = function (a) {\r\n n !== a && (C(m, \"preloader--active\", !a), n = a)\r\n },\r\n P = function (a) {\r\n var c = a.vGap;\r\n if (B()) {\r\n var g = q.barsSize;\r\n if (q.captionEl && \"auto\" === g.bottom)\r\n if (f || (f = b.createEl(\"pswp__caption pswp__caption--fake\"), f.appendChild(b.createEl(\"pswp__caption__center\")), d.insertBefore(f, e), b.addClass(d, \"pswp__ui--fit\")), q.addCaptionHTMLFn(a, f, !0)) {\r\n var h = f.clientHeight;\r\n c.bottom = parseInt(h, 10) || 44\r\n } else c.bottom = g.top;\r\n else c.bottom = \"auto\" === g.bottom ? 0 : g.bottom;\r\n c.top = g.top\r\n } else c.top = c.bottom = 0\r\n },\r\n Q = function () {\r\n q.timeToIdle && l(\"mouseUsed\", function () {\r\n b.bind(document, \"mousemove\", K), b.bind(document, \"mouseout\", L), t = setInterval(function () {\r\n J++, 2 === J && v.setIdle(!0)\r\n }, q.timeToIdle / 2)\r\n })\r\n },\r\n R = function () {\r\n l(\"onVerticalDrag\", function (a) {\r\n x && .95 > a ? v.hideControls() : !x && a >= .95 && v.showControls()\r\n });\r\n var a;\r\n l(\"onPinchClose\", function (b) {\r\n x && .9 > b ? (v.hideControls(), a = !0) : a && !x && b > .9 && v.showControls()\r\n }), l(\"zoomGestureEnded\", function () {\r\n a = !1, a && !x && v.showControls()\r\n })\r\n },\r\n S = [{\r\n name: \"caption\",\r\n option: \"captionEl\",\r\n onInit: function (a) {\r\n e = a\r\n }\r\n }, {\r\n name: \"share-modal\",\r\n option: \"shareEl\",\r\n onInit: function (a) {\r\n i = a\r\n },\r\n onTap: function () {\r\n F()\r\n }\r\n }, {\r\n name: \"button--share\",\r\n option: \"shareEl\",\r\n onInit: function (a) {\r\n h = a\r\n },\r\n onTap: function () {\r\n F()\r\n }\r\n }, {\r\n name: \"button--zoom\",\r\n option: \"zoomEl\",\r\n onTap: a.toggleDesktopZoom\r\n }, {\r\n name: \"counter\",\r\n option: \"counterEl\",\r\n onInit: function (a) {\r\n g = a\r\n }\r\n }, {\r\n name: \"button--close\",\r\n option: \"closeEl\",\r\n onTap: a.close\r\n }, {\r\n name: \"button--arrow--left\",\r\n option: \"arrowEl\",\r\n onTap: a.prev\r\n }, {\r\n name: \"button--arrow--right\",\r\n option: \"arrowEl\",\r\n onTap: a.next\r\n }, {\r\n name: \"button--fs\",\r\n option: \"fullscreenEl\",\r\n onTap: function () {\r\n c.isFullscreen() ? c.exit() : c.enter()\r\n }\r\n }, {\r\n name: \"preloader\",\r\n option: \"preloaderEl\",\r\n onInit: function (a) {\r\n m = a\r\n }\r\n }],\r\n T = function () {\r\n var a, c, e, f = function (d) {\r\n if (d)\r\n for (var f = d.length, g = 0; f > g; g++) {\r\n a = d[g], c = a.className;\r\n for (var h = 0; h < S.length; h++) e = S[h], c.indexOf(\"pswp__\" + e.name) > -1 && (q[e.option] ? (b.removeClass(a, \"pswp__element--disabled\"), e.onInit && e.onInit(a)) : b.addClass(a, \"pswp__element--disabled\"))\r\n }\r\n };\r\n f(d.children);\r\n var g = b.getChildByClass(d, \"pswp__top-bar\");\r\n g && f(g.children)\r\n };\r\n v.init = function () {\r\n b.extend(a.options, z, !0), q = a.options, d = b.getChildByClass(a.scrollWrap, \"pswp__ui\"), l = a.listen, R(), l(\"beforeChange\", v.update), l(\"doubleTap\", function (b) {\r\n var c = a.currItem.initialZoomLevel;\r\n a.getZoomLevel() !== c ? a.zoomTo(c, b, 333) : a.zoomTo(q.getDoubleTapZoom(!1, a.currItem), b, 333)\r\n }), l(\"preventDragEvent\", function (a, b, c) {\r\n var d = a.target || a.srcElement;\r\n d && d.getAttribute(\"class\") && a.type.indexOf(\"mouse\") > -1 && (d.getAttribute(\"class\").indexOf(\"__caption\") > 0 || /(SMALL|STRONG|EM)/i.test(d.tagName)) && (c.prevent = !1)\r\n }), l(\"bindEvents\", function () {\r\n b.bind(d, \"pswpTap click\", A), b.bind(a.scrollWrap, \"pswpTap\", v.onGlobalTap), a.likelyTouchDevice || b.bind(a.scrollWrap, \"mouseover\", v.onMouseOver)\r\n }), l(\"unbindEvents\", function () {\r\n y || F(), t && clearInterval(t), b.unbind(document, \"mouseout\", L), b.unbind(document, \"mousemove\", K), b.unbind(d, \"pswpTap click\", A), b.unbind(a.scrollWrap, \"pswpTap\", v.onGlobalTap), b.unbind(a.scrollWrap, \"mouseover\", v.onMouseOver), c && (b.unbind(document, c.eventK, v.updateFullscreen), c.isFullscreen() && (q.hideAnimationDuration = 0, c.exit()), c = null)\r\n }), l(\"destroy\", function () {\r\n q.captionEl && (f && d.removeChild(f), b.removeClass(e, \"pswp__caption--empty\")), i && (i.children[0].onclick = null), b.removeClass(d, \"pswp__ui--over-close\"), b.addClass(d, \"pswp__ui--hidden\"), v.setIdle(!1)\r\n }), q.showAnimationDuration || b.removeClass(d, \"pswp__ui--hidden\"), l(\"initialZoomIn\", function () {\r\n q.showAnimationDuration && b.removeClass(d, \"pswp__ui--hidden\")\r\n }), l(\"initialZoomOut\", function () {\r\n b.addClass(d, \"pswp__ui--hidden\")\r\n }), l(\"parseVerticalMargin\", P), T(), q.shareEl && h && i && (y = !0), D(), Q(), M(), N()\r\n }, v.setIdle = function (a) {\r\n k = a, C(d, \"ui--idle\", a)\r\n }, v.update = function () {\r\n x && a.currItem ? (v.updateIndexIndicator(), q.captionEl && (q.addCaptionHTMLFn(a.currItem, e), C(e, \"caption--empty\", !a.currItem.title)), w = !0) : w = !1, y || F(), D()\r\n }, v.updateFullscreen = function (d) {\r\n d && setTimeout(function () {\r\n a.setScrollOffset(0, b.getScrollY())\r\n }, 50), b[(c.isFullscreen() ? \"add\" : \"remove\") + \"Class\"](a.template, \"pswp--fs\")\r\n }, v.updateIndexIndicator = function () {\r\n q.counterEl && (g.innerHTML = a.getCurrentIndex() + 1 + q.indexIndicatorSep + q.getNumItemsFn())\r\n }, v.onGlobalTap = function (c) {\r\n c = c || window.event;\r\n var d = c.target || c.srcElement;\r\n if (!r)\r\n if (c.detail && \"mouse\" === c.detail.pointerType) {\r\n if (I(d)) return void a.close();\r\n b.hasClass(d, \"pswp__img\") && (1 === a.getZoomLevel() && a.getZoomLevel() <= a.currItem.fitRatio ? q.clickToCloseNonZoomable && a.close() : a.toggleDesktopZoom(c.detail.releasePoint))\r\n } else if (q.tapToToggleControls && (x ? v.hideControls() : v.showControls()), q.tapToClose && (b.hasClass(d, \"pswp__img\") || I(d))) return void a.close()\r\n }, v.onMouseOver = function (a) {\r\n a = a || window.event;\r\n var b = a.target || a.srcElement;\r\n C(d, \"ui--over-close\", I(b))\r\n }, v.hideControls = function () {\r\n b.addClass(d, \"pswp__ui--hidden\"), x = !1\r\n }, v.showControls = function () {\r\n x = !0, w || v.update(), b.removeClass(d, \"pswp__ui--hidden\")\r\n }, v.supportsFullscreen = function () {\r\n var a = document;\r\n return !!(a.exitFullscreen || a.mozCancelFullScreen || a.webkitExitFullscreen || a.msExitFullscreen)\r\n }, v.getFullscreenAPI = function () {\r\n var b, c = document.documentElement,\r\n d = \"fullscreenchange\";\r\n return c.requestFullscreen ? b = {\r\n enterK: \"requestFullscreen\",\r\n exitK: \"exitFullscreen\",\r\n elementK: \"fullscreenElement\",\r\n eventK: d\r\n } : c.mozRequestFullScreen ? b = {\r\n enterK: \"mozRequestFullScreen\",\r\n exitK: \"mozCancelFullScreen\",\r\n elementK: \"mozFullScreenElement\",\r\n eventK: \"moz\" + d\r\n } : c.webkitRequestFullscreen ? b = {\r\n enterK: \"webkitRequestFullscreen\",\r\n exitK: \"webkitExitFullscreen\",\r\n elementK: \"webkitFullscreenElement\",\r\n eventK: \"webkit\" + d\r\n } : c.msRequestFullscreen && (b = {\r\n enterK: \"msRequestFullscreen\",\r\n exitK: \"msExitFullscreen\",\r\n elementK: \"msFullscreenElement\",\r\n eventK: \"MSFullscreenChange\"\r\n }), b && (b.enter = function () {\r\n return j = q.closeOnScroll, q.closeOnScroll = !1, \"webkitRequestFullscreen\" !== this.enterK ? a.template[this.enterK]() : void a.template[this.enterK](Element.ALLOW_KEYBOARD_INPUT)\r\n }, b.exit = function () {\r\n return q.closeOnScroll = j, document[this.exitK]()\r\n }, b.isFullscreen = function () {\r\n return document[this.elementK]\r\n }), b\r\n }\r\n };\r\n return a\r\n});\r\n\r\nvar initPhotoSwipeFromDOM = function (gallerySelector) {\r\n\r\n // parse slide data (url, title, size ...) from DOM elements \r\n // (children of gallerySelector)\r\n var parseThumbnailElements = function (el) {\r\n var thumbElements = el.childNodes,\r\n numNodes = thumbElements.length,\r\n items = [],\r\n figureEl,\r\n linkEl,\r\n size,\r\n item;\r\n\r\n for (var i = 0; i < numNodes; i++) {\r\n\r\n figureEl = thumbElements[i]; //
      element\r\n\r\n // include only element nodes \r\n if (figureEl.nodeType !== 1) {\r\n continue;\r\n }\r\n\r\n linkEl = figureEl.children[0]; // element\r\n\r\n size = linkEl.getAttribute('data-size').split('x');\r\n\r\n // create slide object\r\n item = {\r\n src: linkEl.getAttribute('href'),\r\n w: parseInt(size[0], 10),\r\n h: parseInt(size[1], 10)\r\n };\r\n\r\n\r\n\r\n if (figureEl.children.length > 1) {\r\n //
      content\r\n item.title = figureEl.children[1].innerHTML;\r\n }\r\n\r\n if (linkEl.children.length > 0) {\r\n // thumbnail element, retrieving thumbnail url\r\n item.msrc = linkEl.children[0].getAttribute('src');\r\n }\r\n\r\n item.el = figureEl; // save link to element for getThumbBoundsFn\r\n items.push(item);\r\n }\r\n\r\n return items;\r\n };\r\n\r\n // find nearest parent element\r\n var closest = function closest(el, fn) {\r\n return el && (fn(el) ? el : closest(el.parentNode, fn));\r\n };\r\n\r\n // triggers when user clicks on thumbnail\r\n var onThumbnailsClick = function (e) {\r\n e = e || window.event;\r\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\r\n\r\n var eTarget = e.target || e.srcElement;\r\n\r\n // find root element of slide\r\n var clickedListItem = closest(eTarget, function (el) {\r\n return (el.tagName && el.tagName.toUpperCase() === 'FIGURE');\r\n });\r\n\r\n if (!clickedListItem) {\r\n return;\r\n }\r\n\r\n // find index of clicked item by looping through all child nodes\r\n // alternatively, you may define index via data- attribute\r\n var clickedGallery = clickedListItem.parentNode,\r\n childNodes = clickedListItem.parentNode.childNodes,\r\n numChildNodes = childNodes.length,\r\n nodeIndex = 0,\r\n index;\r\n\r\n for (var i = 0; i < numChildNodes; i++) {\r\n if (childNodes[i].nodeType !== 1) {\r\n continue;\r\n }\r\n\r\n if (childNodes[i] === clickedListItem) {\r\n index = nodeIndex;\r\n break;\r\n }\r\n nodeIndex++;\r\n }\r\n\r\n\r\n\r\n if (index >= 0) {\r\n // open PhotoSwipe if valid index found\r\n openPhotoSwipe(index, clickedGallery);\r\n }\r\n return false;\r\n };\r\n\r\n // parse picture index and gallery index from URL (#&pid=1&gid=2)\r\n var photoswipeParseHash = function () {\r\n var hash = window.location.hash.substring(1),\r\n params = {};\r\n\r\n if (hash.length < 5) {\r\n return params;\r\n }\r\n\r\n var vars = hash.split('&');\r\n for (var i = 0; i < vars.length; i++) {\r\n if (!vars[i]) {\r\n continue;\r\n }\r\n var pair = vars[i].split('=');\r\n if (pair.length < 2) {\r\n continue;\r\n }\r\n params[pair[0]] = pair[1];\r\n }\r\n\r\n if (params.gid) {\r\n params.gid = parseInt(params.gid, 10);\r\n }\r\n\r\n return params;\r\n };\r\n\r\n var openPhotoSwipe = function (index, galleryElement, disableAnimation, fromURL) {\r\n var pswpElement = document.querySelectorAll('.pswp')[0],\r\n gallery,\r\n options,\r\n items;\r\n\r\n items = parseThumbnailElements(galleryElement);\r\n\r\n // define options (if needed)\r\n options = {\r\n\r\n // define gallery index (for URL)\r\n galleryUID: galleryElement.getAttribute('data-pswp-uid'),\r\n\r\n getThumbBoundsFn: function (index) {\r\n // See Options -> getThumbBoundsFn section of documentation for more info\r\n var thumbnail = items[index].el.getElementsByTagName('img')[0], // find thumbnail\r\n pageYScroll = window.pageYOffset || document.documentElement.scrollTop,\r\n rect = thumbnail.getBoundingClientRect();\r\n\r\n return {\r\n x: rect.left,\r\n y: rect.top + pageYScroll,\r\n w: rect.width\r\n };\r\n }\r\n\r\n };\r\n\r\n // PhotoSwipe opened from URL\r\n if (fromURL) {\r\n if (options.galleryPIDs) {\r\n // parse real index when custom PIDs are used \r\n // http://photoswipe.com/documentation/faq.html#custom-pid-in-url\r\n for (var j = 0; j < items.length; j++) {\r\n if (items[j].pid == index) {\r\n options.index = j;\r\n break;\r\n }\r\n }\r\n } else {\r\n // in URL indexes start from 1\r\n options.index = parseInt(index, 10) - 1;\r\n }\r\n } else {\r\n options.index = parseInt(index, 10);\r\n }\r\n\r\n // exit if index not found\r\n if (isNaN(options.index)) {\r\n return;\r\n }\r\n\r\n if (disableAnimation) {\r\n options.showAnimationDuration = 0;\r\n }\r\n\r\n // Pass data to PhotoSwipe and initialize it\r\n gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options);\r\n gallery.init();\r\n };\r\n\r\n // loop through all gallery elements and bind events\r\n var galleryElements = document.querySelectorAll(gallerySelector);\r\n\r\n for (var i = 0, l = galleryElements.length; i < l; i++) {\r\n galleryElements[i].setAttribute('data-pswp-uid', i + 1);\r\n galleryElements[i].onclick = onThumbnailsClick;\r\n }\r\n\r\n // Parse URL and open gallery if it contains #&pid=3&gid=1\r\n var hashData = photoswipeParseHash();\r\n if (hashData.pid && hashData.gid) {\r\n openPhotoSwipe(hashData.pid, galleryElements[hashData.gid - 1], true, true);\r\n }\r\n};\r\n\r\n// execute above function\r\ninitPhotoSwipeFromDOM('.mdb-lightbox');","/*!\r\n * Date picker for pickadate.js v3.6.3\r\n * http://amsul.github.io/pickadate.js/date.htm\r\n */\r\n\r\n(function (factory) {\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd)\r\n define(['picker', 'jquery'], factory)\r\n\r\n // Node.js/browserify.\r\n else if (typeof exports == 'object')\r\n module.exports = factory(require('./picker.js'), require('jquery'))\r\n\r\n // Browser globals.\r\n else factory(Picker, jQuery)\r\n\r\n}(function (Picker, $) {\r\n\r\n\r\n /**\r\n * Globals and constants\r\n */\r\n var DAYS_IN_WEEK = 7,\r\n WEEKS_IN_CALENDAR = 6,\r\n _ = Picker._\r\n\r\n\r\n\r\n /**\r\n * The date picker constructor\r\n */\r\n function DatePicker(picker, settings) {\r\n\r\n var calendar = this,\r\n element = picker.$node[0],\r\n elementValue = element.value,\r\n elementDataValue = picker.$node.data('value'),\r\n valueString = elementDataValue || elementValue,\r\n formatString = elementDataValue ? settings.formatSubmit : settings.format,\r\n isRTL = function () {\r\n\r\n return element.currentStyle ?\r\n\r\n // For IE.\r\n element.currentStyle.direction == 'rtl' :\r\n\r\n // For normal browsers.\r\n getComputedStyle(picker.$root[0]).direction == 'rtl'\r\n }\r\n\r\n calendar.settings = settings\r\n calendar.$node = picker.$node\r\n\r\n // The queue of methods that will be used to build item objects.\r\n calendar.queue = {\r\n min: 'measure create',\r\n max: 'measure create',\r\n now: 'now create',\r\n select: 'parse create validate',\r\n highlight: 'parse navigate create validate',\r\n view: 'parse create validate viewset',\r\n disable: 'deactivate',\r\n enable: 'activate'\r\n }\r\n\r\n // The component's item object.\r\n calendar.item = {}\r\n\r\n calendar.item.clear = null\r\n calendar.item.disable = (settings.disable || []).slice(0)\r\n calendar.item.enable = -(function (collectionDisabled) {\r\n return collectionDisabled[0] === true ? collectionDisabled.shift() : -1\r\n })(calendar.item.disable)\r\n\r\n calendar.\r\n set('min', settings.min).\r\n set('max', settings.max).\r\n set('now')\r\n\r\n // When there’s a value, set the `select`, which in turn\r\n // also sets the `highlight` and `view`.\r\n if (valueString) {\r\n calendar.set('select', valueString, {\r\n format: formatString,\r\n defaultValue: true\r\n })\r\n }\r\n\r\n // If there’s no value, default to highlighting “today”.\r\n else {\r\n calendar.\r\n set('select', null).\r\n set('highlight', calendar.item.now)\r\n }\r\n\r\n\r\n // The keycode to movement mapping.\r\n calendar.key = {\r\n 40: 7, // Down\r\n 38: -7, // Up\r\n 39: function () {\r\n return isRTL() ? -1 : 1\r\n }, // Right\r\n 37: function () {\r\n return isRTL() ? 1 : -1\r\n }, // Left\r\n go: function (timeChange) {\r\n var highlightedObject = calendar.item.highlight,\r\n targetDate = new Date(highlightedObject.year, highlightedObject.month, highlightedObject.date + timeChange)\r\n calendar.set(\r\n 'highlight',\r\n targetDate, {\r\n interval: timeChange\r\n }\r\n )\r\n this.render()\r\n }\r\n }\r\n\r\n\r\n // Bind some picker events.\r\n picker.\r\n on('render', function () {\r\n picker.$root.find('.' + settings.klass.selectMonth).on('change', function () {\r\n var value = this.value\r\n if (value) {\r\n picker.set('highlight', [picker.get('view').year, value, picker.get('highlight').date])\r\n picker.$root.find('.' + settings.klass.selectMonth).trigger('focus')\r\n }\r\n })\r\n picker.$root.find('.' + settings.klass.selectYear).on('change', function () {\r\n var value = this.value\r\n if (value) {\r\n picker.set('highlight', [value, picker.get('view').month, picker.get('highlight').date])\r\n picker.$root.find('.' + settings.klass.selectYear).trigger('focus')\r\n }\r\n })\r\n }, 1).\r\n on('open', function () {\r\n var includeToday = ''\r\n if (calendar.disabled(calendar.get('now'))) {\r\n includeToday = ':not(.' + settings.klass.buttonToday + ')'\r\n }\r\n picker.$root.find('button' + includeToday + ', select').attr('disabled', false)\r\n }, 1).\r\n on('close', function () {\r\n picker.$root.find('button, select').attr('disabled', true)\r\n }, 1)\r\n\r\n } //DatePicker\r\n\r\n\r\n /**\r\n * Set a datepicker item object.\r\n */\r\n DatePicker.prototype.set = function (type, value, options) {\r\n\r\n var calendar = this,\r\n calendarItem = calendar.item\r\n\r\n // If the value is `null` just set it immediately.\r\n if (value === null) {\r\n if (type == 'clear') type = 'select'\r\n calendarItem[type] = value\r\n return calendar\r\n }\r\n\r\n // Otherwise go through the queue of methods, and invoke the functions.\r\n // Update this as the time unit, and set the final value as this item.\r\n // * In the case of `enable`, keep the queue but set `disable` instead.\r\n // And in the case of `flip`, keep the queue but set `enable` instead.\r\n calendarItem[(type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type)] = calendar.queue[type].split(' ').map(function (method) {\r\n value = calendar[method](type, value, options)\r\n return value\r\n }).pop()\r\n\r\n // Check if we need to cascade through more updates.\r\n if (type == 'select') {\r\n calendar.set('highlight', calendarItem.select, options)\r\n } else if (type == 'highlight') {\r\n calendar.set('view', calendarItem.highlight, options)\r\n } else if (type.match(/^(flip|min|max|disable|enable)$/)) {\r\n if (calendarItem.select && calendar.disabled(calendarItem.select)) {\r\n calendar.set('select', calendarItem.select, options)\r\n }\r\n if (calendarItem.highlight && calendar.disabled(calendarItem.highlight)) {\r\n calendar.set('highlight', calendarItem.highlight, options)\r\n }\r\n }\r\n\r\n return calendar\r\n } //DatePicker.prototype.set\r\n\r\n\r\n /**\r\n * Get a datepicker item object.\r\n */\r\n DatePicker.prototype.get = function (type) {\r\n return this.item[type]\r\n } //DatePicker.prototype.get\r\n\r\n\r\n /**\r\n * Create a picker date object.\r\n */\r\n DatePicker.prototype.create = function (type, value, options) {\r\n\r\n var isInfiniteValue,\r\n calendar = this\r\n\r\n // If there’s no value, use the type as the value.\r\n value = value === undefined ? type : value\r\n\r\n\r\n // If it’s infinity, update the value.\r\n if (value == -Infinity || value == Infinity) {\r\n isInfiniteValue = value\r\n }\r\n\r\n // If it’s an object, use the native date object.\r\n else if ($.isPlainObject(value) && _.isInteger(value.pick)) {\r\n value = value.obj\r\n }\r\n\r\n // If it’s an array, convert it into a date and make sure\r\n // that it’s a valid date – otherwise default to today.\r\n else if ($.isArray(value)) {\r\n value = new Date(value[0], value[1], value[2])\r\n value = _.isDate(value) ? value : calendar.create().obj\r\n }\r\n\r\n // If it’s a number or date object, make a normalized date.\r\n else if (_.isInteger(value) || _.isDate(value)) {\r\n value = calendar.normalize(new Date(value), options)\r\n }\r\n\r\n // If it’s a literal true or any other case, set it to now.\r\n else /*if ( value === true )*/ {\r\n value = calendar.now(type, value, options)\r\n }\r\n\r\n // Return the compiled object.\r\n return {\r\n year: isInfiniteValue || value.getFullYear(),\r\n month: isInfiniteValue || value.getMonth(),\r\n date: isInfiniteValue || value.getDate(),\r\n day: isInfiniteValue || value.getDay(),\r\n obj: isInfiniteValue || value,\r\n pick: isInfiniteValue || value.getTime()\r\n }\r\n } //DatePicker.prototype.create\r\n\r\n\r\n /**\r\n * Create a range limit object using an array, date object,\r\n * literal “true”, or integer relative to another time.\r\n */\r\n DatePicker.prototype.createRange = function (from, to) {\r\n\r\n var calendar = this,\r\n createDate = function (date) {\r\n if (date === true || $.isArray(date) || _.isDate(date)) {\r\n return calendar.create(date)\r\n }\r\n return date\r\n }\r\n\r\n // Create objects if possible.\r\n if (!_.isInteger(from)) {\r\n from = createDate(from)\r\n }\r\n if (!_.isInteger(to)) {\r\n to = createDate(to)\r\n }\r\n\r\n // Create relative dates.\r\n if (_.isInteger(from) && $.isPlainObject(to)) {\r\n from = [to.year, to.month, to.date + from];\r\n } else if (_.isInteger(to) && $.isPlainObject(from)) {\r\n to = [from.year, from.month, from.date + to];\r\n }\r\n\r\n return {\r\n from: createDate(from),\r\n to: createDate(to)\r\n }\r\n } //DatePicker.prototype.createRange\r\n\r\n\r\n /**\r\n * Check if a date unit falls within a date range object.\r\n */\r\n DatePicker.prototype.withinRange = function (range, dateUnit) {\r\n range = this.createRange(range.from, range.to)\r\n return dateUnit.pick >= range.from.pick && dateUnit.pick <= range.to.pick\r\n }\r\n\r\n\r\n /**\r\n * Check if two date range objects overlap.\r\n */\r\n DatePicker.prototype.overlapRanges = function (one, two) {\r\n\r\n var calendar = this\r\n\r\n // Convert the ranges into comparable dates.\r\n one = calendar.createRange(one.from, one.to)\r\n two = calendar.createRange(two.from, two.to)\r\n\r\n return calendar.withinRange(one, two.from) || calendar.withinRange(one, two.to) ||\r\n calendar.withinRange(two, one.from) || calendar.withinRange(two, one.to)\r\n }\r\n\r\n\r\n /**\r\n * Get the date today.\r\n */\r\n DatePicker.prototype.now = function (type, value, options) {\r\n value = new Date()\r\n if (options && options.rel) {\r\n value.setDate(value.getDate() + options.rel)\r\n }\r\n return this.normalize(value, options)\r\n }\r\n\r\n\r\n /**\r\n * Navigate to next/prev month.\r\n */\r\n DatePicker.prototype.navigate = function (type, value, options) {\r\n\r\n var targetDateObject,\r\n targetYear,\r\n targetMonth,\r\n targetDate,\r\n isTargetArray = $.isArray(value),\r\n isTargetObject = $.isPlainObject(value),\r\n viewsetObject = this.item.view\r\n /*,\r\n safety = 100*/\r\n\r\n\r\n if (isTargetArray || isTargetObject) {\r\n\r\n if (isTargetObject) {\r\n targetYear = value.year\r\n targetMonth = value.month\r\n targetDate = value.date\r\n } else {\r\n targetYear = +value[0]\r\n targetMonth = +value[1]\r\n targetDate = +value[2]\r\n }\r\n\r\n // If we’re navigating months but the view is in a different\r\n // month, navigate to the view’s year and month.\r\n if (options && options.nav && viewsetObject && viewsetObject.month !== targetMonth) {\r\n targetYear = viewsetObject.year\r\n targetMonth = viewsetObject.month\r\n }\r\n\r\n // Figure out the expected target year and month.\r\n targetDateObject = new Date(targetYear, targetMonth + (options && options.nav ? options.nav : 0), 1)\r\n targetYear = targetDateObject.getFullYear()\r\n targetMonth = targetDateObject.getMonth()\r\n\r\n // If the month we’re going to doesn’t have enough days,\r\n // keep decreasing the date until we reach the month’s last date.\r\n while ( /*safety &&*/ new Date(targetYear, targetMonth, targetDate).getMonth() !== targetMonth) {\r\n targetDate -= 1\r\n /*safety -= 1\r\n if ( !safety ) {\r\n throw 'Fell into an infinite loop while navigating to ' + new Date( targetYear, targetMonth, targetDate ) + '.'\r\n }*/\r\n }\r\n\r\n value = [targetYear, targetMonth, targetDate]\r\n }\r\n\r\n return value\r\n } //DatePicker.prototype.navigate\r\n\r\n\r\n /**\r\n * Normalize a date by setting the hours to midnight.\r\n */\r\n DatePicker.prototype.normalize = function (value /*, options*/ ) {\r\n value.setHours(0, 0, 0, 0)\r\n return value\r\n }\r\n\r\n\r\n /**\r\n * Measure the range of dates.\r\n */\r\n DatePicker.prototype.measure = function (type, value /*, options*/ ) {\r\n\r\n var calendar = this\r\n\r\n // If it's an integer, get a date relative to today.\r\n if (_.isInteger(value)) {\r\n value = calendar.now(type, value, {\r\n rel: value\r\n })\r\n }\r\n\r\n // If it’s anything false-y, remove the limits.\r\n else if (!value) {\r\n value = type == 'min' ? -Infinity : Infinity\r\n }\r\n\r\n // If it’s a string, parse it.\r\n else if (typeof value == 'string') {\r\n value = calendar.parse(type, value)\r\n }\r\n\r\n return value\r\n } ///DatePicker.prototype.measure\r\n\r\n\r\n /**\r\n * Create a viewset object based on navigation.\r\n */\r\n DatePicker.prototype.viewset = function (type, dateObject /*, options*/ ) {\r\n return this.create([dateObject.year, dateObject.month, 1])\r\n }\r\n\r\n\r\n /**\r\n * Validate a date as enabled and shift if needed.\r\n */\r\n DatePicker.prototype.validate = function (type, dateObject, options) {\r\n\r\n var calendar = this,\r\n\r\n // Keep a reference to the original date.\r\n originalDateObject = dateObject,\r\n\r\n // Make sure we have an interval.\r\n interval = options && options.interval ? options.interval : 1,\r\n\r\n // Check if the calendar enabled dates are inverted.\r\n isFlippedBase = calendar.item.enable === -1,\r\n\r\n // Check if we have any enabled dates after/before now.\r\n hasEnabledBeforeTarget, hasEnabledAfterTarget,\r\n\r\n // The min & max limits.\r\n minLimitObject = calendar.item.min,\r\n maxLimitObject = calendar.item.max,\r\n\r\n // Check if we’ve reached the limit during shifting.\r\n reachedMin, reachedMax,\r\n\r\n // Check if the calendar is inverted and at least one weekday is enabled.\r\n hasEnabledWeekdays = isFlippedBase && calendar.item.disable.filter(function (value) {\r\n\r\n // If there’s a date, check where it is relative to the target.\r\n if ($.isArray(value)) {\r\n var dateTime = calendar.create(value).pick\r\n if (dateTime < dateObject.pick) hasEnabledBeforeTarget = true\r\n else if (dateTime > dateObject.pick) hasEnabledAfterTarget = true\r\n }\r\n\r\n // Return only integers for enabled weekdays.\r\n return _.isInteger(value)\r\n }).length\r\n /*,\r\n\r\n safety = 100*/\r\n\r\n\r\n\r\n // Cases to validate for:\r\n // [1] Not inverted and date disabled.\r\n // [2] Inverted and some dates enabled.\r\n // [3] Not inverted and out of range.\r\n //\r\n // Cases to **not** validate for:\r\n // • Navigating months.\r\n // • Not inverted and date enabled.\r\n // • Inverted and all dates disabled.\r\n // • ..and anything else.\r\n if (!options || (!options.nav && !options.defaultValue))\r\n if (\r\n /* 1 */\r\n (!isFlippedBase && calendar.disabled(dateObject)) ||\r\n /* 2 */\r\n (isFlippedBase && calendar.disabled(dateObject) && (hasEnabledWeekdays || hasEnabledBeforeTarget || hasEnabledAfterTarget)) ||\r\n /* 3 */\r\n (!isFlippedBase && (dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick))\r\n ) {\r\n\r\n\r\n // When inverted, flip the direction if there aren’t any enabled weekdays\r\n // and there are no enabled dates in the direction of the interval.\r\n if (isFlippedBase && !hasEnabledWeekdays && ((!hasEnabledAfterTarget && interval > 0) || (!hasEnabledBeforeTarget && interval < 0))) {\r\n interval *= -1\r\n }\r\n\r\n\r\n // Keep looping until we reach an enabled date.\r\n while ( /*safety &&*/ calendar.disabled(dateObject)) {\r\n\r\n /*safety -= 1\r\n if ( !safety ) {\r\n throw 'Fell into an infinite loop while validating ' + dateObject.obj + '.'\r\n }*/\r\n\r\n\r\n // If we’ve looped into the next/prev month with a large interval, return to the original date and flatten the interval.\r\n if (Math.abs(interval) > 1 && (dateObject.month < originalDateObject.month || dateObject.month > originalDateObject.month)) {\r\n dateObject = originalDateObject\r\n interval = interval > 0 ? 1 : -1\r\n }\r\n\r\n\r\n // If we’ve reached the min/max limit, reverse the direction, flatten the interval and set it to the limit.\r\n if (dateObject.pick <= minLimitObject.pick) {\r\n reachedMin = true\r\n interval = 1\r\n dateObject = calendar.create([\r\n minLimitObject.year,\r\n minLimitObject.month,\r\n minLimitObject.date + (dateObject.pick === minLimitObject.pick ? 0 : -1)\r\n ])\r\n } else if (dateObject.pick >= maxLimitObject.pick) {\r\n reachedMax = true\r\n interval = -1\r\n dateObject = calendar.create([\r\n maxLimitObject.year,\r\n maxLimitObject.month,\r\n maxLimitObject.date + (dateObject.pick === maxLimitObject.pick ? 0 : 1)\r\n ])\r\n }\r\n\r\n\r\n // If we’ve reached both limits, just break out of the loop.\r\n if (reachedMin && reachedMax) {\r\n break\r\n }\r\n\r\n\r\n // Finally, create the shifted date using the interval and keep looping.\r\n dateObject = calendar.create([dateObject.year, dateObject.month, dateObject.date + interval])\r\n }\r\n\r\n } //endif\r\n\r\n\r\n // Return the date object settled on.\r\n return dateObject\r\n } //DatePicker.prototype.validate\r\n\r\n\r\n /**\r\n * Check if a date is disabled.\r\n */\r\n DatePicker.prototype.disabled = function (dateToVerify) {\r\n\r\n var\r\n calendar = this,\r\n\r\n // Filter through the disabled dates to check if this is one.\r\n isDisabledMatch = calendar.item.disable.filter(function (dateToDisable) {\r\n\r\n // If the date is a number, match the weekday with 0index and `firstDay` check.\r\n if (_.isInteger(dateToDisable)) {\r\n return dateToVerify.day === (calendar.settings.firstDay ? dateToDisable : dateToDisable - 1) % 7\r\n }\r\n\r\n // If it’s an array or a native JS date, create and match the exact date.\r\n if ($.isArray(dateToDisable) || _.isDate(dateToDisable)) {\r\n return dateToVerify.pick === calendar.create(dateToDisable).pick\r\n }\r\n\r\n // If it’s an object, match a date within the “from” and “to” range.\r\n if ($.isPlainObject(dateToDisable)) {\r\n return calendar.withinRange(dateToDisable, dateToVerify)\r\n }\r\n })\r\n\r\n // If this date matches a disabled date, confirm it’s not inverted.\r\n isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function (dateToDisable) {\r\n return $.isArray(dateToDisable) && dateToDisable[3] == 'inverted' ||\r\n $.isPlainObject(dateToDisable) && dateToDisable.inverted\r\n }).length\r\n\r\n // Check the calendar “enabled” flag and respectively flip the\r\n // disabled state. Then also check if it’s beyond the min/max limits.\r\n return calendar.item.enable === -1 ? !isDisabledMatch : isDisabledMatch ||\r\n dateToVerify.pick < calendar.item.min.pick ||\r\n dateToVerify.pick > calendar.item.max.pick\r\n\r\n } //DatePicker.prototype.disabled\r\n\r\n\r\n /**\r\n * Parse a string into a usable type.\r\n */\r\n DatePicker.prototype.parse = function (type, value, options) {\r\n\r\n var calendar = this,\r\n parsingObject = {}\r\n\r\n // If it’s already parsed, we’re good.\r\n if (!value || typeof value != 'string') {\r\n return value\r\n }\r\n\r\n // We need a `.format` to parse the value with.\r\n if (!(options && options.format)) {\r\n options = options || {}\r\n options.format = calendar.settings.format\r\n }\r\n\r\n // Convert the format into an array and then map through it.\r\n calendar.formats.toArray(options.format).map(function (label) {\r\n\r\n var\r\n // Grab the formatting label.\r\n formattingLabel = calendar.formats[label],\r\n\r\n // The format length is from the formatting label function or the\r\n // label length without the escaping exclamation (!) mark.\r\n formatLength = formattingLabel ? _.trigger(formattingLabel, calendar, [value, parsingObject]) : label.replace(/^!/, '').length\r\n\r\n // If there's a format label, split the value up to the format length.\r\n // Then add it to the parsing object with appropriate label.\r\n if (formattingLabel) {\r\n parsingObject[label] = value.substr(0, formatLength)\r\n }\r\n\r\n // Update the value as the substring from format length to end.\r\n value = value.substr(formatLength)\r\n })\r\n\r\n // Compensate for month 0index.\r\n return [\r\n parsingObject.yyyy || parsingObject.yy,\r\n +(parsingObject.mm || parsingObject.m) - 1,\r\n parsingObject.dd || parsingObject.d\r\n ]\r\n } //DatePicker.prototype.parse\r\n\r\n\r\n /**\r\n * Various formats to display the object in.\r\n */\r\n DatePicker.prototype.formats = (function () {\r\n\r\n // Return the length of the first word in a collection.\r\n function getWordLengthFromCollection(string, collection, dateObject) {\r\n\r\n // Grab the first word from the string.\r\n // Regex pattern from http://stackoverflow.com/q/150033\r\n var word = string.match(/[^\\x00-\\x7F]+|\\w+/)[0]\r\n\r\n // If there's no month index, add it to the date object\r\n if (!dateObject.mm && !dateObject.m) {\r\n dateObject.m = collection.indexOf(word) + 1\r\n }\r\n\r\n // Return the length of the word.\r\n return word.length\r\n }\r\n\r\n // Get the length of the first word in a string.\r\n function getFirstWordLength(string) {\r\n return string.match(/\\w+/)[0].length\r\n }\r\n\r\n return {\r\n\r\n d: function (string, dateObject) {\r\n\r\n // If there's string, then get the digits length.\r\n // Otherwise return the selected date.\r\n return string ? _.digits(string) : dateObject.date\r\n },\r\n dd: function (string, dateObject) {\r\n\r\n // If there's a string, then the length is always 2.\r\n // Otherwise return the selected date with a leading zero.\r\n return string ? 2 : _.lead(dateObject.date)\r\n },\r\n ddd: function (string, dateObject) {\r\n\r\n // If there's a string, then get the length of the first word.\r\n // Otherwise return the short selected weekday.\r\n return string ? getFirstWordLength(string) : this.settings.weekdaysShort[dateObject.day]\r\n },\r\n dddd: function (string, dateObject) {\r\n\r\n // If there's a string, then get the length of the first word.\r\n // Otherwise return the full selected weekday.\r\n return string ? getFirstWordLength(string) : this.settings.weekdaysFull[dateObject.day]\r\n },\r\n m: function (string, dateObject) {\r\n\r\n // If there's a string, then get the length of the digits\r\n // Otherwise return the selected month with 0index compensation.\r\n return string ? _.digits(string) : dateObject.month + 1\r\n },\r\n mm: function (string, dateObject) {\r\n\r\n // If there's a string, then the length is always 2.\r\n // Otherwise return the selected month with 0index and leading zero.\r\n return string ? 2 : _.lead(dateObject.month + 1)\r\n },\r\n mmm: function (string, dateObject) {\r\n\r\n var collection = this.settings.monthsShort\r\n\r\n // If there's a string, get length of the relevant month from the short\r\n // months collection. Otherwise return the selected month from that collection.\r\n return string ? getWordLengthFromCollection(string, collection, dateObject) : collection[dateObject.month]\r\n },\r\n mmmm: function (string, dateObject) {\r\n\r\n var collection = this.settings.monthsFull\r\n\r\n // If there's a string, get length of the relevant month from the full\r\n // months collection. Otherwise return the selected month from that collection.\r\n return string ? getWordLengthFromCollection(string, collection, dateObject) : collection[dateObject.month]\r\n },\r\n yy: function (string, dateObject) {\r\n\r\n // If there's a string, then the length is always 2.\r\n // Otherwise return the selected year by slicing out the first 2 digits.\r\n return string ? 2 : ('' + dateObject.year).slice(2)\r\n },\r\n yyyy: function (string, dateObject) {\r\n\r\n // If there's a string, then the length is always 4.\r\n // Otherwise return the selected year.\r\n return string ? 4 : dateObject.year\r\n },\r\n\r\n // Create an array by splitting the formatting string passed.\r\n toArray: function (formatString) {\r\n return formatString.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g)\r\n },\r\n\r\n // Format an object into a string using the formatting options.\r\n toString: function (formatString, itemObject) {\r\n var calendar = this\r\n return calendar.formats.toArray(formatString).map(function (label) {\r\n return _.trigger(calendar.formats[label], calendar, [0, itemObject]) || label.replace(/^!/, '')\r\n }).join('')\r\n }\r\n }\r\n })() //DatePicker.prototype.formats\r\n\r\n\r\n\r\n\r\n /**\r\n * Check if two date units are the exact.\r\n */\r\n DatePicker.prototype.isDateExact = function (one, two) {\r\n\r\n var calendar = this\r\n\r\n // When we’re working with weekdays, do a direct comparison.\r\n if (\r\n (_.isInteger(one) && _.isInteger(two)) ||\r\n (typeof one == 'boolean' && typeof two == 'boolean')\r\n ) {\r\n return one === two\r\n }\r\n\r\n // When we’re working with date representations, compare the “pick” value.\r\n if (\r\n (_.isDate(one) || $.isArray(one)) &&\r\n (_.isDate(two) || $.isArray(two))\r\n ) {\r\n return calendar.create(one).pick === calendar.create(two).pick\r\n }\r\n\r\n // When we’re working with range objects, compare the “from” and “to”.\r\n if ($.isPlainObject(one) && $.isPlainObject(two)) {\r\n return calendar.isDateExact(one.from, two.from) && calendar.isDateExact(one.to, two.to)\r\n }\r\n\r\n return false\r\n }\r\n\r\n\r\n /**\r\n * Check if two date units overlap.\r\n */\r\n DatePicker.prototype.isDateOverlap = function (one, two) {\r\n\r\n var calendar = this,\r\n firstDay = calendar.settings.firstDay ? 1 : 0\r\n\r\n // When we’re working with a weekday index, compare the days.\r\n if (_.isInteger(one) && (_.isDate(two) || $.isArray(two))) {\r\n one = one % 7 + firstDay\r\n return one === calendar.create(two).day + 1\r\n }\r\n if (_.isInteger(two) && (_.isDate(one) || $.isArray(one))) {\r\n two = two % 7 + firstDay\r\n return two === calendar.create(one).day + 1\r\n }\r\n\r\n // When we’re working with range objects, check if the ranges overlap.\r\n if ($.isPlainObject(one) && $.isPlainObject(two)) {\r\n return calendar.overlapRanges(one, two)\r\n }\r\n\r\n return false\r\n }\r\n\r\n\r\n /**\r\n * Flip the “enabled” state.\r\n */\r\n DatePicker.prototype.flipEnable = function (val) {\r\n var itemObject = this.item\r\n itemObject.enable = val || (itemObject.enable == -1 ? 1 : -1)\r\n }\r\n\r\n\r\n /**\r\n * Mark a collection of dates as “disabled”.\r\n */\r\n DatePicker.prototype.deactivate = function (type, datesToDisable) {\r\n\r\n var calendar = this,\r\n disabledItems = calendar.item.disable.slice(0)\r\n\r\n\r\n // If we’re flipping, that’s all we need to do.\r\n if (datesToDisable == 'flip') {\r\n calendar.flipEnable()\r\n } else if (datesToDisable === false) {\r\n calendar.flipEnable(1)\r\n disabledItems = []\r\n } else if (datesToDisable === true) {\r\n calendar.flipEnable(-1)\r\n disabledItems = []\r\n }\r\n\r\n // Otherwise go through the dates to disable.\r\n else {\r\n\r\n datesToDisable.map(function (unitToDisable) {\r\n\r\n var matchFound\r\n\r\n // When we have disabled items, check for matches.\r\n // If something is matched, immediately break out.\r\n for (var index = 0; index < disabledItems.length; index += 1) {\r\n if (calendar.isDateExact(unitToDisable, disabledItems[index])) {\r\n matchFound = true\r\n break\r\n }\r\n }\r\n\r\n // If nothing was found, add the validated unit to the collection.\r\n if (!matchFound) {\r\n if (\r\n _.isInteger(unitToDisable) ||\r\n _.isDate(unitToDisable) ||\r\n $.isArray(unitToDisable) ||\r\n ($.isPlainObject(unitToDisable) && unitToDisable.from && unitToDisable.to)\r\n ) {\r\n disabledItems.push(unitToDisable)\r\n }\r\n }\r\n })\r\n }\r\n\r\n // Return the updated collection.\r\n return disabledItems\r\n } //DatePicker.prototype.deactivate\r\n\r\n\r\n /**\r\n * Mark a collection of dates as “enabled”.\r\n */\r\n DatePicker.prototype.activate = function (type, datesToEnable) {\r\n\r\n var calendar = this,\r\n disabledItems = calendar.item.disable,\r\n disabledItemsCount = disabledItems.length\r\n\r\n // If we’re flipping, that’s all we need to do.\r\n if (datesToEnable == 'flip') {\r\n calendar.flipEnable()\r\n } else if (datesToEnable === true) {\r\n calendar.flipEnable(1)\r\n disabledItems = []\r\n } else if (datesToEnable === false) {\r\n calendar.flipEnable(-1)\r\n disabledItems = []\r\n }\r\n\r\n // Otherwise go through the disabled dates.\r\n else {\r\n\r\n datesToEnable.map(function (unitToEnable) {\r\n\r\n var matchFound,\r\n disabledUnit,\r\n index,\r\n isExactRange\r\n\r\n // Go through the disabled items and try to find a match.\r\n for (index = 0; index < disabledItemsCount; index += 1) {\r\n\r\n disabledUnit = disabledItems[index]\r\n\r\n // When an exact match is found, remove it from the collection.\r\n if (calendar.isDateExact(disabledUnit, unitToEnable)) {\r\n matchFound = disabledItems[index] = null\r\n isExactRange = true\r\n break\r\n }\r\n\r\n // When an overlapped match is found, add the “inverted” state to it.\r\n else if (calendar.isDateOverlap(disabledUnit, unitToEnable)) {\r\n if ($.isPlainObject(unitToEnable)) {\r\n unitToEnable.inverted = true\r\n matchFound = unitToEnable\r\n } else if ($.isArray(unitToEnable)) {\r\n matchFound = unitToEnable\r\n if (!matchFound[3]) matchFound.push('inverted')\r\n } else if (_.isDate(unitToEnable)) {\r\n matchFound = [unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted']\r\n }\r\n break\r\n }\r\n }\r\n\r\n // If a match was found, remove a previous duplicate entry.\r\n if (matchFound)\r\n for (index = 0; index < disabledItemsCount; index += 1) {\r\n if (calendar.isDateExact(disabledItems[index], unitToEnable)) {\r\n disabledItems[index] = null\r\n break\r\n }\r\n }\r\n\r\n // In the event that we’re dealing with an exact range of dates,\r\n // make sure there are no “inverted” dates because of it.\r\n if (isExactRange)\r\n for (index = 0; index < disabledItemsCount; index += 1) {\r\n if (calendar.isDateOverlap(disabledItems[index], unitToEnable)) {\r\n disabledItems[index] = null\r\n break\r\n }\r\n }\r\n\r\n // If something is still matched, add it into the collection.\r\n if (matchFound) {\r\n disabledItems.push(matchFound)\r\n }\r\n })\r\n }\r\n\r\n // Return the updated collection.\r\n return disabledItems.filter(function (val) {\r\n return val != null\r\n })\r\n } //DatePicker.prototype.activate\r\n\r\n\r\n /**\r\n * Create a string for the nodes in the picker.\r\n */\r\n DatePicker.prototype.nodes = function (isOpen) {\r\n\r\n var\r\n calendar = this,\r\n settings = calendar.settings,\r\n calendarItem = calendar.item,\r\n nowObject = calendarItem.now,\r\n selectedObject = calendarItem.select,\r\n highlightedObject = calendarItem.highlight,\r\n viewsetObject = calendarItem.view,\r\n disabledCollection = calendarItem.disable,\r\n minLimitObject = calendarItem.min,\r\n maxLimitObject = calendarItem.max,\r\n\r\n\r\n // Create the calendar table head using a copy of weekday labels collection.\r\n // * We do a copy so we don't mutate the original array.\r\n tableHead = (function (collection, fullCollection) {\r\n\r\n // If the first day should be Monday, move Sunday to the end.\r\n if (settings.firstDay) {\r\n collection.push(collection.shift())\r\n fullCollection.push(fullCollection.shift())\r\n }\r\n\r\n // Create and return the table head group.\r\n return _.node(\r\n 'thead',\r\n _.node(\r\n 'tr',\r\n _.group({\r\n min: 0,\r\n max: DAYS_IN_WEEK - 1,\r\n i: 1,\r\n node: 'th',\r\n item: function (counter) {\r\n return [\r\n collection[counter],\r\n settings.klass.weekdays,\r\n 'scope=col title=\"' + fullCollection[counter] + '\"'\r\n ]\r\n }\r\n })\r\n )\r\n ) //endreturn\r\n })((settings.showWeekdaysFull ? settings.weekdaysFull : settings.weekdaysShort).slice(0), settings.weekdaysFull.slice(0)), //tableHead\r\n\r\n\r\n // Create the nav for next/prev month.\r\n createMonthNav = function (next) {\r\n\r\n // Otherwise, return the created month tag.\r\n return _.node(\r\n 'button',\r\n ' ',\r\n settings.klass['nav' + (next ? 'Next' : 'Prev')] + (\r\n\r\n // If the focused month is outside the range, disabled the button.\r\n (next && viewsetObject.year >= maxLimitObject.year && viewsetObject.month >= maxLimitObject.month) ||\r\n (!next && viewsetObject.year <= minLimitObject.year && viewsetObject.month <= minLimitObject.month) ?\r\n ' ' + settings.klass.navDisabled : ''\r\n ),\r\n 'data-nav=' + (next || -1) + ' ' +\r\n _.ariaAttr({\r\n role: 'button',\r\n\r\n controls: calendar.$node[0].id + '_table'\r\n }) + ' ' +\r\n 'title=\"' + (next ? settings.labelMonthNext : settings.labelMonthPrev) + '\"'\r\n ) //endreturn\r\n }, //createMonthNav\r\n\r\n\r\n // Create the month label.\r\n createMonthLabel = function () {\r\n\r\n var monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull\r\n\r\n // If there are months to select, add a dropdown menu.\r\n if (settings.selectMonths) {\r\n\r\n return _.node('select',\r\n _.group({\r\n min: 0,\r\n max: 11,\r\n i: 1,\r\n node: 'option',\r\n item: function (loopedMonth) {\r\n\r\n return [\r\n\r\n // The looped month and no classes.\r\n monthsCollection[loopedMonth], 0,\r\n\r\n // Set the value and selected index.\r\n 'value=' + loopedMonth +\r\n (viewsetObject.month == loopedMonth ? ' selected' : '') +\r\n (\r\n (\r\n (viewsetObject.year == minLimitObject.year && loopedMonth < minLimitObject.month) ||\r\n (viewsetObject.year == maxLimitObject.year && loopedMonth > maxLimitObject.month)\r\n ) ?\r\n ' disabled' : ''\r\n )\r\n ]\r\n }\r\n }),\r\n settings.klass.selectMonth,\r\n (isOpen ? '' : 'disabled') + ' ' +\r\n _.ariaAttr({\r\n controls: calendar.$node[0].id + '_table'\r\n }) + ' ' +\r\n 'title=\"' + settings.labelMonthSelect + '\"'\r\n )\r\n }\r\n\r\n // If there's a need for a month selector\r\n return _.node('div', monthsCollection[viewsetObject.month], settings.klass.month)\r\n }, //createMonthLabel\r\n\r\n\r\n // Create the year label.\r\n createYearLabel = function () {\r\n\r\n var focusedYear = viewsetObject.year,\r\n\r\n // If years selector is set to a literal \"true\", set it to 5. Otherwise\r\n // divide in half to get half before and half after focused year.\r\n numberYears = settings.selectYears === true ? 5 : ~~(settings.selectYears / 2)\r\n\r\n // If there are years to select, add a dropdown menu.\r\n if (numberYears) {\r\n\r\n var\r\n minYear = minLimitObject.year,\r\n maxYear = maxLimitObject.year,\r\n lowestYear = focusedYear - numberYears,\r\n highestYear = focusedYear + numberYears\r\n\r\n // If the min year is greater than the lowest year, increase the highest year\r\n // by the difference and set the lowest year to the min year.\r\n if (minYear > lowestYear) {\r\n highestYear += minYear - lowestYear\r\n lowestYear = minYear\r\n }\r\n\r\n // If the max year is less than the highest year, decrease the lowest year\r\n // by the lower of the two: available and needed years. Then set the\r\n // highest year to the max year.\r\n if (maxYear < highestYear) {\r\n\r\n var availableYears = lowestYear - minYear,\r\n neededYears = highestYear - maxYear\r\n\r\n lowestYear -= availableYears > neededYears ? neededYears : availableYears\r\n highestYear = maxYear\r\n }\r\n\r\n return _.node('select',\r\n _.group({\r\n min: lowestYear,\r\n max: highestYear,\r\n i: 1,\r\n node: 'option',\r\n item: function (loopedYear) {\r\n return [\r\n\r\n // The looped year and no classes.\r\n loopedYear, 0,\r\n\r\n // Set the value and selected index.\r\n 'value=' + loopedYear + (focusedYear == loopedYear ? ' selected' : '')\r\n ]\r\n }\r\n }),\r\n settings.klass.selectYear,\r\n (isOpen ? '' : 'disabled') + ' ' + _.ariaAttr({\r\n controls: calendar.$node[0].id + '_table'\r\n }) + ' ' +\r\n 'title=\"' + settings.labelYearSelect + '\"'\r\n )\r\n }\r\n\r\n // Otherwise just return the year focused\r\n return _.node('div', focusedYear, settings.klass.year)\r\n } //createYearLabel\r\n\r\n\r\n // Create and return the entire calendar.\r\n return _.node(\r\n 'div',\r\n (settings.selectYears ? createYearLabel() + createMonthLabel() : createMonthLabel() + createYearLabel()) +\r\n createMonthNav() + createMonthNav(1),\r\n settings.klass.header\r\n ) + _.node(\r\n 'table',\r\n tableHead +\r\n _.node(\r\n 'tbody',\r\n _.group({\r\n min: 0,\r\n max: WEEKS_IN_CALENDAR - 1,\r\n i: 1,\r\n node: 'tr',\r\n item: function (rowCounter) {\r\n\r\n // If Monday is the first day and the month starts on Sunday, shift the date back a week.\r\n var shiftDateBy = settings.firstDay && calendar.create([viewsetObject.year, viewsetObject.month, 1]).day === 0 ? -7 : 0\r\n\r\n return [\r\n _.group({\r\n min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, // Add 1 for weekday 0index\r\n max: function () {\r\n return this.min + DAYS_IN_WEEK - 1\r\n },\r\n i: 1,\r\n node: 'td',\r\n item: function (targetDate) {\r\n\r\n // Convert the time date from a relative date to a target date.\r\n targetDate = calendar.create([viewsetObject.year, viewsetObject.month, targetDate + (settings.firstDay ? 1 : 0)])\r\n\r\n var isSelected = selectedObject && selectedObject.pick == targetDate.pick,\r\n isHighlighted = highlightedObject && highlightedObject.pick == targetDate.pick,\r\n isDisabled = disabledCollection && calendar.disabled(targetDate) || targetDate.pick < minLimitObject.pick || targetDate.pick > maxLimitObject.pick,\r\n formattedDate = _.trigger(calendar.formats.toString, calendar, [settings.format, targetDate])\r\n\r\n return [\r\n _.node(\r\n 'div',\r\n targetDate.date,\r\n (function (klasses) {\r\n\r\n // Add the `infocus` or `outfocus` classes based on month in view.\r\n klasses.push(viewsetObject.month == targetDate.month ? settings.klass.infocus : settings.klass.outfocus)\r\n\r\n // Add the `today` class if needed.\r\n if (nowObject.pick == targetDate.pick) {\r\n klasses.push(settings.klass.now)\r\n }\r\n\r\n // Add the `selected` class if something's selected and the time matches.\r\n if (isSelected) {\r\n klasses.push(settings.klass.selected)\r\n }\r\n\r\n // Add the `highlighted` class if something's highlighted and the time matches.\r\n if (isHighlighted) {\r\n klasses.push(settings.klass.highlighted)\r\n }\r\n\r\n // Add the `disabled` class if something's disabled and the object matches.\r\n if (isDisabled) {\r\n klasses.push(settings.klass.disabled)\r\n }\r\n\r\n return klasses.join(' ')\r\n })([settings.klass.day]),\r\n 'data-pick=' + targetDate.pick + ' ' + _.ariaAttr({\r\n role: 'gridcell',\r\n label: formattedDate,\r\n selected: isSelected && calendar.$node.val() === formattedDate ? true : null,\r\n activedescendant: isHighlighted ? true : null,\r\n disabled: isDisabled ? true : null\r\n })\r\n ),\r\n '',\r\n _.ariaAttr({\r\n role: 'presentation'\r\n })\r\n ] //endreturn\r\n }\r\n })\r\n ] //endreturn\r\n }\r\n })\r\n ),\r\n settings.klass.table,\r\n 'id=\"' + calendar.$node[0].id + '_table' + '\" ' + _.ariaAttr({\r\n role: 'grid',\r\n controls: calendar.$node[0].id,\r\n readonly: true\r\n })\r\n ) +\r\n\r\n // * For Firefox forms to submit, make sure to set the buttons’ `type` attributes as “button”.\r\n _.node(\r\n 'div',\r\n _.node('button', settings.today, settings.klass.buttonToday,\r\n 'type=button data-pick=' + nowObject.pick +\r\n (isOpen && !calendar.disabled(nowObject) ? '' : ' disabled') + ' ' +\r\n _.ariaAttr({\r\n controls: calendar.$node[0].id\r\n })) +\r\n _.node('button', settings.clear, settings.klass.buttonClear,\r\n 'type=button data-clear=1' +\r\n (isOpen ? '' : ' disabled') + ' ' +\r\n _.ariaAttr({\r\n controls: calendar.$node[0].id\r\n })) +\r\n _.node('button', settings.close, settings.klass.buttonClose,\r\n 'type=button data-close=true ' +\r\n (isOpen ? '' : ' disabled') + ' ' +\r\n _.ariaAttr({\r\n controls: calendar.$node[0].id\r\n })),\r\n settings.klass.footer\r\n ) //endreturn\r\n } //DatePicker.prototype.nodes\r\n\r\n\r\n\r\n\r\n /**\r\n * The date picker defaults.\r\n */\r\n DatePicker.defaults = (function (prefix) {\r\n\r\n return {\r\n\r\n // The title label to use for the month nav buttons\r\n labelMonthNext: 'Next month',\r\n labelMonthPrev: 'Previous month',\r\n\r\n // The title label to use for the dropdown selectors\r\n labelMonthSelect: 'Select a month',\r\n labelYearSelect: 'Select a year',\r\n\r\n // Months and weekdays\r\n monthsFull: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\r\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\r\n weekdaysFull: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\r\n weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\r\n\r\n // Today and clear\r\n today: 'Today',\r\n clear: 'Clear',\r\n close: 'Close',\r\n\r\n // Picker close behavior\r\n closeOnSelect: true,\r\n closeOnClear: true,\r\n\r\n // Update input value on select/clear\r\n updateInput: true,\r\n\r\n // The format to show on the `input` element\r\n format: 'd mmmm, yyyy',\r\n\r\n // Classes\r\n klass: {\r\n\r\n table: prefix + 'table',\r\n\r\n header: prefix + 'header',\r\n\r\n navPrev: prefix + 'nav--prev btn btn-flat',\r\n navNext: prefix + 'nav--next btn btn-flat',\r\n navDisabled: prefix + 'nav--disabled',\r\n\r\n month: prefix + 'month',\r\n year: prefix + 'year',\r\n\r\n selectMonth: prefix + 'select--month',\r\n selectYear: prefix + 'select--year',\r\n\r\n weekdays: prefix + 'weekday',\r\n\r\n day: prefix + 'day',\r\n disabled: prefix + 'day--disabled',\r\n selected: prefix + 'day--selected',\r\n highlighted: prefix + 'day--highlighted',\r\n now: prefix + 'day--today',\r\n infocus: prefix + 'day--infocus',\r\n outfocus: prefix + 'day--outfocus',\r\n\r\n footer: prefix + 'footer',\r\n\r\n buttonClear: prefix + 'button--clear',\r\n buttonToday: prefix + 'button--today',\r\n buttonClose: prefix + 'button--close'\r\n }\r\n }\r\n })(Picker.klasses().picker + '__')\r\n\r\n\r\n\r\n\r\n\r\n /**\r\n * Extend the picker to add the date picker.\r\n */\r\n Picker.extend('pickadate', DatePicker)\r\n\r\n\r\n}));\r\n\r\n$.extend($.fn.pickadate.defaults, {\r\n selectMonths: true, // Creates a dropdown to control month\r\n selectYears: 15, // Creates a dropdown of 15 years to control year,\r\n\r\n onRender: function () {\r\n var $pickerInstance = this.$root;\r\n\r\n var year = this.get('highlight', 'yyyy');\r\n var day = this.get('highlight', 'dd');\r\n var month = this.get('highlight', 'mmm');\r\n var labeldayFirstThreeLetters = this.get('highlight', 'dddd').slice(0, 3);\r\n var monthFirstUC = month.charAt(0).toUpperCase() + month.slice(1)\r\n\r\n $pickerInstance.find('.picker__header').prepend('
      ' + labeldayFirstThreeLetters + ',
      ' + monthFirstUC + '
      ' + day + '
      ' + year + '
      ');\r\n }\r\n});\r\n\r\n$('.picker-opener').on('click', function (event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n const elementOpenData = event.target.dataset.open;\r\n const $input = $(`#${elementOpenData}`).pickadate();\r\n const picker = $input.pickadate('picker');\r\n\r\n picker.open();\r\n});","!function($){var apiParams={set:{colors:1,values:1,backgroundColor:1,scaleColors:1,normalizeFunction:1,focus:1},get:{selectedRegions:1,selectedMarkers:1,mapObject:1,regionName:1}};$.fn.vectorMap=function(options){var map,methodName,map=this.children(\".jvectormap-container\").data(\"mapObject\");if(\"addMap\"===options)jvm.Map.maps[arguments[1]]=arguments[2];else{if((\"set\"===options||\"get\"===options)&&apiParams[options][arguments[1]])return methodName=arguments[1].charAt(0).toUpperCase()+arguments[1].substr(1),map[options+methodName].apply(map,Array.prototype.slice.call(arguments,2));options=options||{},options.container=this,map=new jvm.Map(options)}return this}}(jQuery),function(factory){\"function\"==typeof define&&define.amd?define([\"jquery\"],factory):\"object\"==typeof exports?module.exports=factory:factory(jQuery)}(function($){function handler(event){var orgEvent=event||window.event,args=slice.call(arguments,1),delta=0,deltaX=0,deltaY=0,absDelta=0;if(event=$.event.fix(orgEvent),event.type=\"mousewheel\",\"detail\"in orgEvent&&(deltaY=-1*orgEvent.detail),\"wheelDelta\"in orgEvent&&(deltaY=orgEvent.wheelDelta),\"wheelDeltaY\"in orgEvent&&(deltaY=orgEvent.wheelDeltaY),\"wheelDeltaX\"in orgEvent&&(deltaX=-1*orgEvent.wheelDeltaX),\"axis\"in orgEvent&&orgEvent.axis===orgEvent.HORIZONTAL_AXIS&&(deltaX=-1*deltaY,deltaY=0),delta=0===deltaY?deltaX:deltaY,\"deltaY\"in orgEvent&&(deltaY=-1*orgEvent.deltaY,delta=deltaY),\"deltaX\"in orgEvent&&(deltaX=orgEvent.deltaX,0===deltaY&&(delta=-1*deltaX)),0!==deltaY||0!==deltaX){if(1===orgEvent.deltaMode){var lineHeight=$.data(this,\"mousewheel-line-height\");delta*=lineHeight,deltaY*=lineHeight,deltaX*=lineHeight}else if(2===orgEvent.deltaMode){var pageHeight=$.data(this,\"mousewheel-page-height\");delta*=pageHeight,deltaY*=pageHeight,deltaX*=pageHeight}return absDelta=Math.max(Math.abs(deltaY),Math.abs(deltaX)),(!lowestDelta||lowestDelta>absDelta)&&(lowestDelta=absDelta,shouldAdjustOldDeltas(orgEvent,absDelta)&&(lowestDelta/=40)),shouldAdjustOldDeltas(orgEvent,absDelta)&&(delta/=40,deltaX/=40,deltaY/=40),delta=Math[delta>=1?\"floor\":\"ceil\"](delta/lowestDelta),deltaX=Math[deltaX>=1?\"floor\":\"ceil\"](deltaX/lowestDelta),deltaY=Math[deltaY>=1?\"floor\":\"ceil\"](deltaY/lowestDelta),event.deltaX=deltaX,event.deltaY=deltaY,event.deltaFactor=lowestDelta,event.deltaMode=0,args.unshift(event,delta,deltaX,deltaY),nullLowestDeltaTimeout&&clearTimeout(nullLowestDeltaTimeout),nullLowestDeltaTimeout=setTimeout(nullLowestDelta,200),($.event.dispatch||$.event.handle).apply(this,args)}}function nullLowestDelta(){lowestDelta=null}function shouldAdjustOldDeltas(orgEvent,absDelta){return special.settings.adjustOldDeltas&&\"mousewheel\"===orgEvent.type&&absDelta%120===0}var nullLowestDeltaTimeout,lowestDelta,toFix=[\"wheel\",\"mousewheel\",\"DOMMouseScroll\",\"MozMousePixelScroll\"],toBind=\"onwheel\"in document||document.documentMode>=9?[\"wheel\"]:[\"mousewheel\",\"DomMouseScroll\",\"MozMousePixelScroll\"],slice=Array.prototype.slice;if($.event.fixHooks)for(var i=toFix.length;i;)$.event.fixHooks[toFix[--i]]=$.event.mouseHooks;var special=$.event.special.mousewheel={version:\"3.1.9\",setup:function(){if(this.addEventListener)for(var i=toBind.length;i;)this.addEventListener(toBind[--i],handler,!1);else this.onmousewheel=handler;$.data(this,\"mousewheel-line-height\",special.getLineHeight(this)),$.data(this,\"mousewheel-page-height\",special.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var i=toBind.length;i;)this.removeEventListener(toBind[--i],handler,!1);else this.onmousewheel=null},getLineHeight:function(elem){return parseInt($(elem)[\"offsetParent\"in $.fn?\"offsetParent\":\"parent\"]().css(\"fontSize\"),10)},getPageHeight:function(elem){return $(elem).height()},settings:{adjustOldDeltas:!0}};$.fn.extend({mousewheel:function(fn){return fn?this.bind(\"mousewheel\",fn):this.trigger(\"mousewheel\")},unmousewheel:function(fn){return this.unbind(\"mousewheel\",fn)}})});var jvm={inherits:function(child,parent){function temp(){}temp.prototype=parent.prototype,child.prototype=new temp,child.prototype.constructor=child,child.parentClass=parent},mixin:function(target,source){var prop;for(prop in source.prototype)source.prototype.hasOwnProperty(prop)&&(target.prototype[prop]=source.prototype[prop])},min:function(values){var i,min=Number.MAX_VALUE;if(values instanceof Array)for(i=0;imax&&(max=values[i]);else for(i in values)values[i]>max&&(max=values[i]);return max},keys:function(object){var key,keys=[];for(key in object)keys.push(key);return keys},values:function(object){var key,i,values=[];for(i=0;i\");return img.error(function(){deferred.reject()}).load(function(){deferred.resolve(img)}),img.attr(\"src\",url),deferred},isImageUrl:function(s){return/\\.\\w{3,4}$/.test(s)}};jvm.$=jQuery,Array.prototype.indexOf||(Array.prototype.indexOf=function(searchElement,fromIndex){var k;if(null==this)throw new TypeError('\"this\" is null or not defined');var O=Object(this),len=O.length>>>0;if(0===len)return-1;var n=+fromIndex||0;if(1/0===Math.abs(n)&&(n=0),n>=len)return-1;for(k=Math.max(n>=0?n:len-Math.abs(n),0);len>k;){if(k in O&&O[k]===searchElement)return k;k++}return-1}),jvm.AbstractElement=function(name,config){this.node=this.createElement(name),this.name=name,this.properties={},config&&this.set(config)},jvm.AbstractElement.prototype.set=function(property,value){var key;if(\"object\"==typeof property)for(key in property)this.properties[key]=property[key],this.applyAttr(key,property[key]);else this.properties[property]=value,this.applyAttr(property,value)},jvm.AbstractElement.prototype.get=function(property){return this.properties[property]},jvm.AbstractElement.prototype.applyAttr=function(property,value){this.node.setAttribute(property,value)},jvm.AbstractElement.prototype.remove=function(){jvm.$(this.node).remove()},jvm.AbstractCanvasElement=function(container,width,height){this.container=container,this.setSize(width,height),this.rootElement=new jvm[this.classPrefix+\"GroupElement\"],this.node.appendChild(this.rootElement.node),this.container.appendChild(this.node)},jvm.AbstractCanvasElement.prototype.add=function(element,group){group=group||this.rootElement,group.add(element),element.canvas=this},jvm.AbstractCanvasElement.prototype.addPath=function(config,style,group){var el=new jvm[this.classPrefix+\"PathElement\"](config,style);return this.add(el,group),el},jvm.AbstractCanvasElement.prototype.addCircle=function(config,style,group){var el=new jvm[this.classPrefix+\"CircleElement\"](config,style);return this.add(el,group),el},jvm.AbstractCanvasElement.prototype.addImage=function(config,style,group){var el=new jvm[this.classPrefix+\"ImageElement\"](config,style);return this.add(el,group),el},jvm.AbstractCanvasElement.prototype.addText=function(config,style,group){var el=new jvm[this.classPrefix+\"TextElement\"](config,style);return this.add(el,group),el},jvm.AbstractCanvasElement.prototype.addGroup=function(parentGroup){var el=new jvm[this.classPrefix+\"GroupElement\"];return parentGroup?parentGroup.node.appendChild(el.node):this.node.appendChild(el.node),el.canvas=this,el},jvm.AbstractShapeElement=function(name,config,style){this.style=style||{},this.style.current=this.style.current||{},this.isHovered=!1,this.isSelected=!1,this.updateStyle()},jvm.AbstractShapeElement.prototype.setStyle=function(property,value){var styles={};\"object\"==typeof property?styles=property:styles[property]=value,jvm.$.extend(this.style.current,styles),this.updateStyle()},jvm.AbstractShapeElement.prototype.updateStyle=function(){var attrs={};jvm.AbstractShapeElement.mergeStyles(attrs,this.style.initial),jvm.AbstractShapeElement.mergeStyles(attrs,this.style.current),this.isHovered&&jvm.AbstractShapeElement.mergeStyles(attrs,this.style.hover),this.isSelected&&(jvm.AbstractShapeElement.mergeStyles(attrs,this.style.selected),this.isHovered&&jvm.AbstractShapeElement.mergeStyles(attrs,this.style.selectedHover)),this.set(attrs)},jvm.AbstractShapeElement.mergeStyles=function(styles,newStyles){var key;newStyles=newStyles||{};for(key in newStyles)null===newStyles[key]?delete styles[key]:styles[key]=newStyles[key]},jvm.SVGElement=function(){jvm.SVGElement.parentClass.apply(this,arguments)},jvm.inherits(jvm.SVGElement,jvm.AbstractElement),jvm.SVGElement.svgns=\"http://www.w3.org/2000/svg\",jvm.SVGElement.prototype.createElement=function(tagName){return document.createElementNS(jvm.SVGElement.svgns,tagName)},jvm.SVGElement.prototype.addClass=function(className){this.node.setAttribute(\"class\",className)},jvm.SVGElement.prototype.getElementCtr=function(ctr){return jvm[\"SVG\"+ctr]},jvm.SVGElement.prototype.getBBox=function(){return this.node.getBBox()},jvm.SVGGroupElement=function(){jvm.SVGGroupElement.parentClass.call(this,\"g\")},jvm.inherits(jvm.SVGGroupElement,jvm.SVGElement),jvm.SVGGroupElement.prototype.add=function(element){this.node.appendChild(element.node)},jvm.SVGCanvasElement=function(){this.classPrefix=\"SVG\",jvm.SVGCanvasElement.parentClass.call(this,\"svg\"),this.defsElement=new jvm.SVGElement(\"defs\"),this.node.appendChild(this.defsElement.node),jvm.AbstractCanvasElement.apply(this,arguments)},jvm.inherits(jvm.SVGCanvasElement,jvm.SVGElement),jvm.mixin(jvm.SVGCanvasElement,jvm.AbstractCanvasElement),jvm.SVGCanvasElement.prototype.setSize=function(width,height){this.width=width,this.height=height,this.node.setAttribute(\"width\",width),this.node.setAttribute(\"height\",height)},jvm.SVGCanvasElement.prototype.applyTransformParams=function(scale,transX,transY){this.scale=scale,this.transX=transX,this.transY=transY,this.rootElement.node.setAttribute(\"transform\",\"scale(\"+scale+\") translate(\"+transX+\", \"+transY+\")\")},jvm.SVGShapeElement=function(name,config){jvm.SVGShapeElement.parentClass.call(this,name,config),jvm.AbstractShapeElement.apply(this,arguments)},jvm.inherits(jvm.SVGShapeElement,jvm.SVGElement),jvm.mixin(jvm.SVGShapeElement,jvm.AbstractShapeElement),jvm.SVGShapeElement.prototype.applyAttr=function(attr,value){var patternEl,imageEl,that=this;\"fill\"===attr&&jvm.isImageUrl(value)?jvm.SVGShapeElement.images[value]?this.applyAttr(\"fill\",\"url(#image\"+jvm.SVGShapeElement.images[value]+\")\"):jvm.whenImageLoaded(value).then(function(img){imageEl=new jvm.SVGElement(\"image\"),imageEl.node.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",value),imageEl.applyAttr(\"x\",\"0\"),imageEl.applyAttr(\"y\",\"0\"),imageEl.applyAttr(\"width\",img[0].width),imageEl.applyAttr(\"height\",img[0].height),patternEl=new jvm.SVGElement(\"pattern\"),patternEl.applyAttr(\"id\",\"image\"+jvm.SVGShapeElement.imageCounter),patternEl.applyAttr(\"x\",0),patternEl.applyAttr(\"y\",0),patternEl.applyAttr(\"width\",img[0].width/2),patternEl.applyAttr(\"height\",img[0].height/2),patternEl.applyAttr(\"viewBox\",\"0 0 \"+img[0].width+\" \"+img[0].height),patternEl.applyAttr(\"patternUnits\",\"userSpaceOnUse\"),patternEl.node.appendChild(imageEl.node),that.canvas.defsElement.node.appendChild(patternEl.node),jvm.SVGShapeElement.images[value]=jvm.SVGShapeElement.imageCounter++,that.applyAttr(\"fill\",\"url(#image\"+jvm.SVGShapeElement.images[value]+\")\")}):jvm.SVGShapeElement.parentClass.prototype.applyAttr.apply(this,arguments)},jvm.SVGShapeElement.imageCounter=1,jvm.SVGShapeElement.images={},jvm.SVGPathElement=function(config,style){jvm.SVGPathElement.parentClass.call(this,\"path\",config,style),this.node.setAttribute(\"fill-rule\",\"evenodd\")},jvm.inherits(jvm.SVGPathElement,jvm.SVGShapeElement),jvm.SVGCircleElement=function(config,style){jvm.SVGCircleElement.parentClass.call(this,\"circle\",config,style)},jvm.inherits(jvm.SVGCircleElement,jvm.SVGShapeElement),jvm.SVGImageElement=function(config,style){jvm.SVGImageElement.parentClass.call(this,\"image\",config,style)},jvm.inherits(jvm.SVGImageElement,jvm.SVGShapeElement),jvm.SVGImageElement.prototype.applyAttr=function(attr,value){var that=this;\"image\"==attr?jvm.whenImageLoaded(value).then(function(img){that.node.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",value),that.width=img[0].width,that.height=img[0].height,that.applyAttr(\"width\",that.width),that.applyAttr(\"height\",that.height),that.applyAttr(\"x\",that.cx-that.width/2),that.applyAttr(\"y\",that.cy-that.height/2),jvm.$(that.node).trigger(\"imageloaded\",[img])}):\"cx\"==attr?(this.cx=value,this.width&&this.applyAttr(\"x\",value-this.width/2)):\"cy\"==attr?(this.cy=value,this.height&&this.applyAttr(\"y\",value-this.height/2)):jvm.SVGImageElement.parentClass.prototype.applyAttr.apply(this,arguments)},jvm.SVGTextElement=function(config,style){jvm.SVGTextElement.parentClass.call(this,\"text\",config,style)},jvm.inherits(jvm.SVGTextElement,jvm.SVGShapeElement),jvm.SVGTextElement.prototype.applyAttr=function(attr,value){\"text\"===attr?this.node.textContent=value:jvm.SVGTextElement.parentClass.prototype.applyAttr.apply(this,arguments)},jvm.VMLElement=function(){jvm.VMLElement.VMLInitialized||jvm.VMLElement.initializeVML(),jvm.VMLElement.parentClass.apply(this,arguments)},jvm.inherits(jvm.VMLElement,jvm.AbstractElement),jvm.VMLElement.VMLInitialized=!1,jvm.VMLElement.initializeVML=function(){try{document.namespaces.rvml||document.namespaces.add(\"rvml\",\"urn:schemas-microsoft-com:vml\"),jvm.VMLElement.prototype.createElement=function(tagName){return document.createElement(\"')}}catch(e){jvm.VMLElement.prototype.createElement=function(tagName){return document.createElement(\"<\"+tagName+' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"rvml\">')}}document.createStyleSheet().addRule(\".rvml\",\"behavior:url(#default#VML)\"),jvm.VMLElement.VMLInitialized=!0},jvm.VMLElement.prototype.getElementCtr=function(ctr){return jvm[\"VML\"+ctr]},jvm.VMLElement.prototype.addClass=function(className){jvm.$(this.node).addClass(className)},jvm.VMLElement.prototype.applyAttr=function(attr,value){this.node[attr]=value},jvm.VMLElement.prototype.getBBox=function(){var node=jvm.$(this.node);return{x:node.position().left/this.canvas.scale,y:node.position().top/this.canvas.scale,width:node.width()/this.canvas.scale,height:node.height()/this.canvas.scale}},jvm.VMLGroupElement=function(){jvm.VMLGroupElement.parentClass.call(this,\"group\"),this.node.style.left=\"0px\",this.node.style.top=\"0px\",this.node.coordorigin=\"0 0\"},jvm.inherits(jvm.VMLGroupElement,jvm.VMLElement),jvm.VMLGroupElement.prototype.add=function(element){this.node.appendChild(element.node)},jvm.VMLCanvasElement=function(){this.classPrefix=\"VML\",jvm.VMLCanvasElement.parentClass.call(this,\"group\"),jvm.AbstractCanvasElement.apply(this,arguments),this.node.style.position=\"absolute\"},jvm.inherits(jvm.VMLCanvasElement,jvm.VMLElement),jvm.mixin(jvm.VMLCanvasElement,jvm.AbstractCanvasElement),jvm.VMLCanvasElement.prototype.setSize=function(width,height){var paths,groups,i,l;if(this.width=width,this.height=height,this.node.style.width=width+\"px\",this.node.style.height=height+\"px\",this.node.coordsize=width+\" \"+height,this.node.coordorigin=\"0 0\",this.rootElement){for(paths=this.rootElement.node.getElementsByTagName(\"shape\"),i=0,l=paths.length;l>i;i++)paths[i].coordsize=width+\" \"+height,paths[i].style.width=width+\"px\",paths[i].style.height=height+\"px\";for(groups=this.node.getElementsByTagName(\"group\"),i=0,l=groups.length;l>i;i++)groups[i].coordsize=width+\" \"+height,groups[i].style.width=width+\"px\",groups[i].style.height=height+\"px\"}},jvm.VMLCanvasElement.prototype.applyTransformParams=function(scale,transX,transY){this.scale=scale,this.transX=transX,this.transY=transY,this.rootElement.node.coordorigin=this.width-transX-this.width/100+\",\"+(this.height-transY-this.height/100),this.rootElement.node.coordsize=this.width/scale+\",\"+this.height/scale},jvm.VMLShapeElement=function(name,config){jvm.VMLShapeElement.parentClass.call(this,name,config),this.fillElement=new jvm.VMLElement(\"fill\"),this.strokeElement=new jvm.VMLElement(\"stroke\"),this.node.appendChild(this.fillElement.node),this.node.appendChild(this.strokeElement.node),this.node.stroked=!1,jvm.AbstractShapeElement.apply(this,arguments)},jvm.inherits(jvm.VMLShapeElement,jvm.VMLElement),jvm.mixin(jvm.VMLShapeElement,jvm.AbstractShapeElement),jvm.VMLShapeElement.prototype.applyAttr=function(attr,value){switch(attr){case\"fill\":this.node.fillcolor=value;break;case\"fill-opacity\":this.fillElement.node.opacity=Math.round(100*value)+\"%\";break;case\"stroke\":this.node.stroked=\"none\"===value?!1:!0,this.node.strokecolor=value;break;case\"stroke-opacity\":this.strokeElement.node.opacity=Math.round(100*value)+\"%\";break;case\"stroke-width\":this.node.stroked=0===parseInt(value,10)?!1:!0,this.node.strokeweight=value;break;case\"d\":this.node.path=jvm.VMLPathElement.pathSvgToVml(value);break;default:jvm.VMLShapeElement.parentClass.prototype.applyAttr.apply(this,arguments)}},jvm.VMLPathElement=function(config,style){var scale=new jvm.VMLElement(\"skew\");jvm.VMLPathElement.parentClass.call(this,\"shape\",config,style),this.node.coordorigin=\"0 0\",scale.node.on=!0,scale.node.matrix=\"0.01,0,0,0.01,0,0\",scale.node.offset=\"0,0\",this.node.appendChild(scale.node)},jvm.inherits(jvm.VMLPathElement,jvm.VMLShapeElement),jvm.VMLPathElement.prototype.applyAttr=function(attr,value){\"d\"===attr?this.node.path=jvm.VMLPathElement.pathSvgToVml(value):jvm.VMLShapeElement.prototype.applyAttr.call(this,attr,value)},jvm.VMLPathElement.pathSvgToVml=function(path){var ctrlx,ctrly,cx=0,cy=0;return path=path.replace(/(-?\\d+)e(-?\\d+)/g,\"0\"),path.replace(/([MmLlHhVvCcSs])\\s*((?:-?\\d*(?:\\.\\d+)?\\s*,?\\s*)+)/g,function(segment,letter,coords){coords=coords.replace(/(\\d)-/g,\"$1,-\").replace(/^\\s+/g,\"\").replace(/\\s+$/g,\"\").replace(/\\s+/g,\",\").split(\",\"),coords[0]||coords.shift();for(var i=0,l=coords.length;l>i;i++)coords[i]=Math.round(100*coords[i]);switch(letter){case\"m\":return cx+=coords[0],cy+=coords[1],\"t\"+coords.join(\",\");case\"M\":return cx=coords[0],cy=coords[1],\"m\"+coords.join(\",\");case\"l\":return cx+=coords[0],cy+=coords[1],\"r\"+coords.join(\",\");case\"L\":return cx=coords[0],cy=coords[1],\"l\"+coords.join(\",\");case\"h\":return cx+=coords[0],\"r\"+coords[0]+\",0\";case\"H\":return cx=coords[0],\"l\"+cx+\",\"+cy;case\"v\":return cy+=coords[0],\"r0,\"+coords[0];case\"V\":return cy=coords[0],\"l\"+cx+\",\"+cy;case\"c\":return ctrlx=cx+coords[coords.length-4],ctrly=cy+coords[coords.length-3],cx+=coords[coords.length-2],cy+=coords[coords.length-1],\"v\"+coords.join(\",\");case\"C\":return ctrlx=coords[coords.length-4],ctrly=coords[coords.length-3],cx=coords[coords.length-2],cy=coords[coords.length-1],\"c\"+coords.join(\",\");case\"s\":return coords.unshift(cy-ctrly),coords.unshift(cx-ctrlx),ctrlx=cx+coords[coords.length-4],ctrly=cy+coords[coords.length-3],cx+=coords[coords.length-2],cy+=coords[coords.length-1],\"v\"+coords.join(\",\");case\"S\":return coords.unshift(cy+cy-ctrly),coords.unshift(cx+cx-ctrlx),ctrlx=coords[coords.length-4],ctrly=coords[coords.length-3],cx=coords[coords.length-2],cy=coords[coords.length-1],\"c\"+coords.join(\",\")}return\"\"}).replace(/z/g,\"e\")},jvm.VMLCircleElement=function(config,style){jvm.VMLCircleElement.parentClass.call(this,\"oval\",config,style)},jvm.inherits(jvm.VMLCircleElement,jvm.VMLShapeElement),jvm.VMLCircleElement.prototype.applyAttr=function(attr,value){switch(attr){case\"r\":this.node.style.width=2*value+\"px\",this.node.style.height=2*value+\"px\",this.applyAttr(\"cx\",this.get(\"cx\")||0),this.applyAttr(\"cy\",this.get(\"cy\")||0);break;case\"cx\":if(!value)return;this.node.style.left=value-(this.get(\"r\")||0)+\"px\";break;case\"cy\":if(!value)return;this.node.style.top=value-(this.get(\"r\")||0)+\"px\";break;default:jvm.VMLCircleElement.parentClass.prototype.applyAttr.call(this,attr,value)}},jvm.VectorCanvas=function(container,width,height){return this.mode=window.SVGAngle?\"svg\":\"vml\",this.impl=\"svg\"==this.mode?new jvm.SVGCanvasElement(container,width,height):new jvm.VMLCanvasElement(container,width,height),this.impl.mode=this.mode,this.impl},jvm.SimpleScale=function(scale){this.scale=scale},jvm.SimpleScale.prototype.getValue=function(value){return value},jvm.OrdinalScale=function(scale){this.scale=scale},jvm.OrdinalScale.prototype.getValue=function(value){return this.scale[value]},jvm.OrdinalScale.prototype.getTicks=function(){var key,ticks=[];for(key in this.scale)ticks.push({label:key,value:this.scale[key]});return ticks},jvm.NumericScale=function(scale,normalizeFunction,minValue,maxValue){this.scale=[],normalizeFunction=normalizeFunction||\"linear\",scale&&this.setScale(scale),normalizeFunction&&this.setNormalizeFunction(normalizeFunction),\"undefined\"!=typeof minValue&&this.setMin(minValue),\"undefined\"!=typeof maxValue&&this.setMax(maxValue)},jvm.NumericScale.prototype={setMin:function(min){this.clearMinValue=min,this.minValue=\"function\"==typeof this.normalize?this.normalize(min):min},setMax:function(max){this.clearMaxValue=max,this.maxValue=\"function\"==typeof this.normalize?this.normalize(max):max},setScale:function(scale){var i;for(this.scale=[],i=0;i=0;)value-=lengthes[i],i++;return value=this.vectorToNum(i==this.scale.length-1?this.scale[i]:this.vectorAdd(this.scale[i],this.vectorMult(this.vectorSubtract(this.scale[i+1],this.scale[i]),value/lengthes[i])))},vectorToNum:function(vector){var i,num=0;for(i=0;i=err?step*=10:.35>=err?step*=5:.75>=err&&(step*=2),extent[0]=Math.floor(extent[0]/step)*step,extent[1]=Math.ceil(extent[1]/step)*step,tick=extent[0];tick<=extent[1];)v=tick==extent[0]?this.clearMinValue:tick==extent[1]?this.clearMaxValue:tick,ticks.push({label:tick,value:this.getValue(v)}),tick+=step;return ticks}},jvm.ColorScale=function(){jvm.ColorScale.parentClass.apply(this,arguments)},jvm.inherits(jvm.ColorScale,jvm.NumericScale),jvm.ColorScale.prototype.setScale=function(scale){var i;for(i=0;i\"),this.body.addClass(\"jvectormap-legend\"),this.params.cssClass&&this.body.addClass(this.params.cssClass),params.vertical?this.map.legendCntVertical.append(this.body):this.map.legendCntHorizontal.append(this.body),this.render()},jvm.Legend.prototype.render=function(){var i,tick,sample,label,ticks=this.series.scale.getTicks(),inner=jvm.$(\"
      \").addClass(\"jvectormap-legend-inner\");for(this.body.html(\"\"),this.params.title&&this.body.append(jvm.$(\"
      \").addClass(\"jvectormap-legend-title\").html(this.params.title)),this.body.append(inner),i=0;i\").addClass(\"jvectormap-legend-tick\"),sample=jvm.$(\"
      \").addClass(\"jvectormap-legend-tick-sample\"),this.series.params.attribute){case\"fill\":jvm.isImageUrl(ticks[i].value)?sample.css(\"background\",\"url(\"+ticks[i].value+\")\"):sample.css(\"background\",ticks[i].value);break;case\"stroke\":sample.css(\"background\",ticks[i].value);break;case\"image\":sample.css(\"background\",\"url(\"+ticks[i].value+\") no-repeat center center\");break;case\"r\":jvm.$(\"
      \").css({\"border-radius\":ticks[i].value,border:this.map.params.markerStyle.initial[\"stroke-width\"]+\"px \"+this.map.params.markerStyle.initial.stroke+\" solid\",width:2*ticks[i].value+\"px\",height:2*ticks[i].value+\"px\",background:this.map.params.markerStyle.initial.fill}).appendTo(sample)}tick.append(sample),label=ticks[i].label,this.params.labelRender&&(label=this.params.labelRender(label)),tick.append(jvm.$(\"
      \"+label+\"
      \").addClass(\"jvectormap-legend-tick-text\")),inner.append(tick)}inner.append(jvm.$(\"
      \").css(\"clear\",\"both\"))},jvm.DataSeries=function(params,elements,map){var scaleConstructor;params=params||{},params.attribute=params.attribute||\"fill\",this.elements=elements,this.params=params,this.map=map,params.attributes&&this.setAttributes(params.attributes),jvm.$.isArray(params.scale)?(scaleConstructor=\"fill\"===params.attribute||\"stroke\"===params.attribute?jvm.ColorScale:jvm.NumericScale,this.scale=new scaleConstructor(params.scale,params.normalizeFunction,params.min,params.max)):this.scale=params.scale?new jvm.OrdinalScale(params.scale):new jvm.SimpleScale(params.scale),this.values=params.values||{},this.setValues(this.values),this.params.legend&&(this.legend=new jvm.Legend($.extend({map:this.map,series:this},this.params.legend)))},jvm.DataSeries.prototype={setAttributes:function(key,attr){var code,attrs=key;if(\"string\"==typeof key)this.elements[key]&&this.elements[key].setStyle(this.params.attribute,attr);else for(code in attrs)this.elements[code]&&this.elements[code].element.setStyle(this.params.attribute,attrs[code])},setValues:function(values){var val,cc,max=-Number.MAX_VALUE,min=Number.MAX_VALUE,attrs={};if(this.scale instanceof jvm.OrdinalScale||this.scale instanceof jvm.SimpleScale)for(cc in values)attrs[cc]=values[cc]?this.scale.getValue(values[cc]):this.elements[cc].element.style.initial[this.params.attribute];else{if(\"undefined\"==typeof this.params.min||\"undefined\"==typeof this.params.max)for(cc in values)val=parseFloat(values[cc]),val>max&&(max=val),min>val&&(min=val);\"undefined\"==typeof this.params.min?(this.scale.setMin(min),this.params.min=min):this.scale.setMin(this.params.min),\"undefined\"==typeof this.params.max?(this.scale.setMax(max),this.params.max=max):this.scale.setMax(this.params.max);for(cc in values)\"indexOf\"!=cc&&(val=parseFloat(values[cc]),attrs[cc]=isNaN(val)?this.elements[cc].element.style.initial[this.params.attribute]:this.scale.getValue(val))}this.setAttributes(attrs),jvm.$.extend(this.values,values)},clear:function(){var key,attrs={};for(key in this.values)this.elements[key]&&(attrs[key]=this.elements[key].element.shape.style.initial[this.params.attribute]);this.setAttributes(attrs),this.values={}},setScale:function(scale){this.scale.setScale(scale),this.values&&this.setValues(this.values)},setNormalizeFunction:function(f){this.scale.setNormalizeFunction(f),this.values&&this.setValues(this.values)}},jvm.Proj={degRad:180/Math.PI,radDeg:Math.PI/180,radius:6381372,sgn:function(n){return n>0?1:0>n?-1:n},mill:function(lat,lng,c){return{x:this.radius*(lng-c)*this.radDeg,y:-this.radius*Math.log(Math.tan((45+.4*lat)*this.radDeg))/.8}},mill_inv:function(x,y,c){return{lat:(2.5*Math.atan(Math.exp(.8*y/this.radius))-5*Math.PI/8)*this.degRad,lng:(c*this.radDeg+x/this.radius)*this.degRad}},merc:function(lat,lng,c){return{x:this.radius*(lng-c)*this.radDeg,y:-this.radius*Math.log(Math.tan(Math.PI/4+lat*Math.PI/360))}},merc_inv:function(x,y,c){return{lat:(2*Math.atan(Math.exp(y/this.radius))-Math.PI/2)*this.degRad,lng:(c*this.radDeg+x/this.radius)*this.degRad}},aea:function(lat,lng,c){var fi0=0,lambda0=c*this.radDeg,fi1=29.5*this.radDeg,fi2=45.5*this.radDeg,fi=lat*this.radDeg,lambda=lng*this.radDeg,n=(Math.sin(fi1)+Math.sin(fi2))/2,C=Math.cos(fi1)*Math.cos(fi1)+2*n*Math.sin(fi1),theta=n*(lambda-lambda0),ro=Math.sqrt(C-2*n*Math.sin(fi))/n,ro0=Math.sqrt(C-2*n*Math.sin(fi0))/n;return{x:ro*Math.sin(theta)*this.radius,y:-(ro0-ro*Math.cos(theta))*this.radius}},aea_inv:function(xCoord,yCoord,c){var x=xCoord/this.radius,y=yCoord/this.radius,fi0=0,lambda0=c*this.radDeg,fi1=29.5*this.radDeg,fi2=45.5*this.radDeg,n=(Math.sin(fi1)+Math.sin(fi2))/2,C=Math.cos(fi1)*Math.cos(fi1)+2*n*Math.sin(fi1),ro0=Math.sqrt(C-2*n*Math.sin(fi0))/n,ro=Math.sqrt(x*x+(ro0-y)*(ro0-y)),theta=Math.atan(x/(ro0-y));return{lat:Math.asin((C-ro*ro*n*n)/(2*n))*this.degRad,lng:(lambda0+theta/n)*this.degRad}},lcc:function(lat,lng,c){var fi0=0,lambda0=c*this.radDeg,lambda=lng*this.radDeg,fi1=33*this.radDeg,fi2=45*this.radDeg,fi=lat*this.radDeg,n=Math.log(Math.cos(fi1)*(1/Math.cos(fi2)))/Math.log(Math.tan(Math.PI/4+fi2/2)*(1/Math.tan(Math.PI/4+fi1/2))),F=Math.cos(fi1)*Math.pow(Math.tan(Math.PI/4+fi1/2),n)/n,ro=F*Math.pow(1/Math.tan(Math.PI/4+fi/2),n),ro0=F*Math.pow(1/Math.tan(Math.PI/4+fi0/2),n);return{x:ro*Math.sin(n*(lambda-lambda0))*this.radius,y:-(ro0-ro*Math.cos(n*(lambda-lambda0)))*this.radius}},lcc_inv:function(xCoord,yCoord,c){var x=xCoord/this.radius,y=yCoord/this.radius,fi0=0,lambda0=c*this.radDeg,fi1=33*this.radDeg,fi2=45*this.radDeg,n=Math.log(Math.cos(fi1)*(1/Math.cos(fi2)))/Math.log(Math.tan(Math.PI/4+fi2/2)*(1/Math.tan(Math.PI/4+fi1/2))),F=Math.cos(fi1)*Math.pow(Math.tan(Math.PI/4+fi1/2),n)/n,ro0=F*Math.pow(1/Math.tan(Math.PI/4+fi0/2),n),ro=this.sgn(n)*Math.sqrt(x*x+(ro0-y)*(ro0-y)),theta=Math.atan(x/(ro0-y));return{lat:(2*Math.atan(Math.pow(F/ro,1/n))-Math.PI/2)*this.degRad,lng:(lambda0+theta/n)*this.degRad}}},jvm.MapObject=function(){},jvm.MapObject.prototype.getLabelText=function(key){var text;return text=this.config.label?\"function\"==typeof this.config.label.render?this.config.label.render(key):key:null},jvm.MapObject.prototype.getLabelOffsets=function(key){var offsets;return this.config.label&&(\"function\"==typeof this.config.label.offsets?offsets=this.config.label.offsets(key):\"object\"==typeof this.config.label.offsets&&(offsets=this.config.label.offsets[key])),offsets||[0,0]},jvm.MapObject.prototype.setHovered=function(isHovered){this.isHovered!==isHovered&&(this.isHovered=isHovered,this.shape.isHovered=isHovered,this.shape.updateStyle(),this.label&&(this.label.isHovered=isHovered,this.label.updateStyle()))},jvm.MapObject.prototype.setSelected=function(isSelected){this.isSelected!==isSelected&&(this.isSelected=isSelected,this.shape.isSelected=isSelected,this.shape.updateStyle(),this.label&&(this.label.isSelected=isSelected,this.label.updateStyle()),jvm.$(this.shape).trigger(\"selected\",[isSelected]))},jvm.MapObject.prototype.setStyle=function(){this.shape.setStyle.apply(this.shape,arguments)},jvm.MapObject.prototype.remove=function(){this.shape.remove(),this.label&&this.label.remove()},jvm.Region=function(config){var bbox,text,offsets;this.config=config,this.map=this.config.map,this.shape=config.canvas.addPath({d:config.path,\"data-code\":config.code},config.style,config.canvas.rootElement),this.shape.addClass(\"jvectormap-region jvectormap-element\"),bbox=this.shape.getBBox(),text=this.getLabelText(config.code),this.config.label&&text&&(offsets=this.getLabelOffsets(config.code),this.labelX=bbox.x+bbox.width/2+offsets[0],this.labelY=bbox.y+bbox.height/2+offsets[1],this.label=config.canvas.addText({text:text,\"text-anchor\":\"middle\",\"alignment-baseline\":\"central\",x:this.labelX,y:this.labelY,\"data-code\":config.code},config.labelStyle,config.labelsGroup),this.label.addClass(\"jvectormap-region jvectormap-element\"))\r\n},jvm.inherits(jvm.Region,jvm.MapObject),jvm.Region.prototype.updateLabelPosition=function(){this.label&&this.label.set({x:this.labelX*this.map.scale+this.map.transX*this.map.scale,y:this.labelY*this.map.scale+this.map.transY*this.map.scale})},jvm.Marker=function(config){var text;this.config=config,this.map=this.config.map,this.isImage=!!this.config.style.initial.image,this.createShape(),text=this.getLabelText(config.index),this.config.label&&text&&(this.offsets=this.getLabelOffsets(config.index),this.labelX=config.cx/this.map.scale-this.map.transX,this.labelY=config.cy/this.map.scale-this.map.transY,this.label=config.canvas.addText({text:text,\"data-index\":config.index,dy:\"0.6ex\",x:this.labelX,y:this.labelY},config.labelStyle,config.labelsGroup),this.label.addClass(\"jvectormap-marker jvectormap-element\"))},jvm.inherits(jvm.Marker,jvm.MapObject),jvm.Marker.prototype.createShape=function(){var that=this;this.shape&&this.shape.remove(),this.shape=this.config.canvas[this.isImage?\"addImage\":\"addCircle\"]({\"data-index\":this.config.index,cx:this.config.cx,cy:this.config.cy},this.config.style,this.config.group),this.shape.addClass(\"jvectormap-marker jvectormap-element\"),this.isImage&&jvm.$(this.shape.node).on(\"imageloaded\",function(){that.updateLabelPosition()})},jvm.Marker.prototype.updateLabelPosition=function(){this.label&&this.label.set({x:this.labelX*this.map.scale+this.offsets[0]+this.map.transX*this.map.scale+5+(this.isImage?(this.shape.width||0)/2:this.shape.properties.r),y:this.labelY*this.map.scale+this.map.transY*this.map.scale+this.offsets[1]})},jvm.Marker.prototype.setStyle=function(property){var isImage;jvm.Marker.parentClass.prototype.setStyle.apply(this,arguments),\"r\"===property&&this.updateLabelPosition(),isImage=!!this.shape.get(\"image\"),isImage!=this.isImage&&(this.isImage=isImage,this.config.style=jvm.$.extend(!0,{},this.shape.style),this.createShape())},jvm.Map=function(params){var e,map=this;if(this.params=jvm.$.extend(!0,{},jvm.Map.defaultParams,params),!jvm.Map.maps[this.params.map])throw new Error(\"Attempt to use map which was not loaded: \"+this.params.map);this.mapData=jvm.Map.maps[this.params.map],this.markers={},this.regions={},this.regionsColors={},this.regionsData={},this.container=jvm.$(\"
      \").addClass(\"jvectormap-container\"),this.params.container&&this.params.container.append(this.container),this.container.data(\"mapObject\",this),this.defaultWidth=this.mapData.width,this.defaultHeight=this.mapData.height,this.setBackgroundColor(this.params.backgroundColor),this.onResize=function(){map.updateSize()},jvm.$(window).resize(this.onResize);for(e in jvm.Map.apiEvents)this.params[e]&&this.container.bind(jvm.Map.apiEvents[e]+\".jvectormap\",this.params[e]);this.canvas=new jvm.VectorCanvas(this.container[0],this.width,this.height),this.params.bindTouchEvents&&(\"ontouchstart\"in window||window.DocumentTouch&&document instanceof DocumentTouch?this.bindContainerTouchEvents():window.MSGesture&&this.bindContainerPointerEvents()),this.bindContainerEvents(),this.bindElementEvents(),this.createTip(),this.params.zoomButtons&&this.bindZoomButtons(),this.createRegions(),this.createMarkers(this.params.markers||{}),this.updateSize(),this.params.focusOn&&(\"string\"==typeof this.params.focusOn?this.params.focusOn={region:this.params.focusOn}:jvm.$.isArray(this.params.focusOn)&&(this.params.focusOn={regions:this.params.focusOn}),this.setFocus(this.params.focusOn)),this.params.selectedRegions&&this.setSelectedRegions(this.params.selectedRegions),this.params.selectedMarkers&&this.setSelectedMarkers(this.params.selectedMarkers),this.legendCntHorizontal=jvm.$(\"
      \").addClass(\"jvectormap-legend-cnt jvectormap-legend-cnt-h\"),this.legendCntVertical=jvm.$(\"
      \").addClass(\"jvectormap-legend-cnt jvectormap-legend-cnt-v\"),this.container.append(this.legendCntHorizontal),this.container.append(this.legendCntVertical),this.params.series&&this.createSeries()},jvm.Map.prototype={transX:0,transY:0,scale:1,baseTransX:0,baseTransY:0,baseScale:1,width:0,height:0,setBackgroundColor:function(backgroundColor){this.container.css(\"background-color\",backgroundColor)},resize:function(){var curBaseScale=this.baseScale;this.width/this.height>this.defaultWidth/this.defaultHeight?(this.baseScale=this.height/this.defaultHeight,this.baseTransX=Math.abs(this.width-this.defaultWidth*this.baseScale)/(2*this.baseScale)):(this.baseScale=this.width/this.defaultWidth,this.baseTransY=Math.abs(this.height-this.defaultHeight*this.baseScale)/(2*this.baseScale)),this.scale*=this.baseScale/curBaseScale,this.transX*=this.baseScale/curBaseScale,this.transY*=this.baseScale/curBaseScale},updateSize:function(){this.width=this.container.width(),this.height=this.container.height(),this.resize(),this.canvas.setSize(this.width,this.height),this.applyTransform()},reset:function(){var key,i;for(key in this.series)for(i=0;imaxTransY?this.transY=maxTransY:this.transYmaxTransX?this.transX=maxTransX:this.transXtouches[1].pageX?touches[1].pageX+(touches[0].pageX-touches[1].pageX)/2:touches[0].pageX+(touches[1].pageX-touches[0].pageX)/2,centerTouchY=touches[0].pageY>touches[1].pageY?touches[1].pageY+(touches[0].pageY-touches[1].pageY)/2:touches[0].pageY+(touches[1].pageY-touches[0].pageY)/2,centerTouchX-=offset.left,centerTouchY-=offset.top,touchStartScale=map.scale,touchStartDistance=Math.sqrt(Math.pow(touches[0].pageX-touches[1].pageX,2)+Math.pow(touches[0].pageY-touches[1].pageY,2)))),lastTouchesLength=touches.length};jvm.$(this.container).bind(\"touchstart\",handleTouchEvent),jvm.$(this.container).bind(\"touchmove\",handleTouchEvent)},bindContainerPointerEvents:function(){var map=this,gesture=new MSGesture,element=this.container[0],handlePointerDownEvent=function(e){gesture.addPointer(e.pointerId)},handleGestureEvent=function(e){var transXOld,transYOld;(0!=e.translationX||0!=e.translationY)&&(transXOld=map.transX,transYOld=map.transY,map.transX+=e.translationX/map.scale,map.transY+=e.translationY/map.scale,map.applyTransform(),map.tip.hide(),(transXOld!=map.transX||transYOld!=map.transY)&&e.preventDefault()),1!=e.scale&&(map.setScale(map.scale*e.scale,e.offsetX,e.offsetY),map.tip.hide(),e.preventDefault())};gesture.target=element,element.addEventListener(\"MSGestureChange\",handleGestureEvent,!1),element.addEventListener(\"pointerdown\",handlePointerDownEvent,!1)},bindElementEvents:function(){var pageX,pageY,mouseMoved,map=this;this.container.mousemove(function(e){Math.abs(pageX-e.pageX)+Math.abs(pageY-e.pageY)>2&&(mouseMoved=!0)}),this.container.delegate(\"[class~='jvectormap-element']\",\"mouseover mouseout\",function(e){var baseVal=jvm.$(this).attr(\"class\").baseVal||jvm.$(this).attr(\"class\"),type=-1===baseVal.indexOf(\"jvectormap-region\")?\"marker\":\"region\",code=jvm.$(this).attr(\"region\"==type?\"data-code\":\"data-index\"),element=\"region\"==type?map.regions[code].element:map.markers[code].element,tipText=\"region\"==type?map.mapData.paths[code].name:map.markers[code].config.name||\"\",tipShowEvent=jvm.$.Event(type+\"TipShow.jvectormap\"),overEvent=jvm.$.Event(type+\"Over.jvectormap\");\"mouseover\"==e.type?(map.container.trigger(overEvent,[code]),overEvent.isDefaultPrevented()||element.setHovered(!0),map.tip.text(tipText),map.container.trigger(tipShowEvent,[map.tip,code]),tipShowEvent.isDefaultPrevented()||(map.tip.show(),map.tipWidth=map.tip.width(),map.tipHeight=map.tip.height())):(element.setHovered(!1),map.tip.hide(),map.container.trigger(type+\"Out.jvectormap\",[code]))}),this.container.delegate(\"[class~='jvectormap-element']\",\"mousedown\",function(e){pageX=e.pageX,pageY=e.pageY,mouseMoved=!1}),this.container.delegate(\"[class~='jvectormap-element']\",\"mouseup\",function(){var baseVal=jvm.$(this).attr(\"class\").baseVal?jvm.$(this).attr(\"class\").baseVal:jvm.$(this).attr(\"class\"),type=-1===baseVal.indexOf(\"jvectormap-region\")?\"marker\":\"region\",code=jvm.$(this).attr(\"region\"==type?\"data-code\":\"data-index\"),clickEvent=jvm.$.Event(type+\"Click.jvectormap\"),element=\"region\"==type?map.regions[code].element:map.markers[code].element;mouseMoved||(map.container.trigger(clickEvent,[code]),(\"region\"===type&&map.params.regionsSelectable||\"marker\"===type&&map.params.markersSelectable)&&(clickEvent.isDefaultPrevented()||(map.params[type+\"sSelectableOne\"]&&map.clearSelected(type+\"s\"),element.setSelected(!element.isSelected))))})},bindZoomButtons:function(){var map=this;jvm.$(\"
      \").addClass(\"jvectormap-zoomin\").text(\"+\").appendTo(this.container),jvm.$(\"
      \").addClass(\"jvectormap-zoomout\").html(\"−\").appendTo(this.container),this.container.find(\".jvectormap-zoomin\").click(function(){map.setScale(map.scale*map.params.zoomStep,map.width/2,map.height/2,!1,map.params.zoomAnimate)}),this.container.find(\".jvectormap-zoomout\").click(function(){map.setScale(map.scale/map.params.zoomStep,map.width/2,map.height/2,!1,map.params.zoomAnimate)})},createTip:function(){var map=this;this.tip=jvm.$(\"
      \").addClass(\"jvectormap-tip\").appendTo(jvm.$(\"body\")),this.container.mousemove(function(e){var left=e.pageX-15-map.tipWidth,top=e.pageY-15-map.tipHeight;5>left&&(left=e.pageX+15),5>top&&(top=e.pageY+15),map.tip.css({left:left,top:top})})},setScale:function(scale,anchorX,anchorY,isCentered,animate){var interval,scaleStart,scaleDiff,transXStart,transXDiff,transYStart,transYDiff,transX,transY,viewportChangeEvent=jvm.$.Event(\"zoom.jvectormap\"),that=this,i=0,count=Math.abs(Math.round(60*(scale-this.scale)/Math.max(scale,this.scale))),deferred=new jvm.$.Deferred;return scale>this.params.zoomMax*this.baseScale?scale=this.params.zoomMax*this.baseScale:scale0?(scaleStart=this.scale,scaleDiff=(scale-scaleStart)/count,transXStart=this.transX*this.scale,transYStart=this.transY*this.scale,transXDiff=(transX*scale-transXStart)/count,transYDiff=(transY*scale-transYStart)/count,interval=setInterval(function(){i+=1,that.scale=scaleStart+scaleDiff*i,that.transX=(transXStart+transXDiff*i)/that.scale,that.transY=(transYStart+transYDiff*i)/that.scale,that.applyTransform(),i==count&&(clearInterval(interval),that.container.trigger(viewportChangeEvent,[scale/that.baseScale]),deferred.resolve())},10)):(this.transX=transX,this.transY=transY,this.scale=scale,this.applyTransform(),this.container.trigger(viewportChangeEvent,[scale/this.baseScale]),deferred.resolve()),deferred},setFocus:function(config){var bbox,itemBbox,newBbox,codes,i,point;if(config=config||{},config.region?codes=[config.region]:config.regions&&(codes=config.regions),codes){for(i=0;ilng&&(lng+=360),point=jvm.Proj[proj.type](lat,lng,centralMeridian),inset=this.getInsetForPoint(point.x,point.y),inset?(bbox=inset.bbox,point.x=(point.x-bbox[0].x)/(bbox[1].x-bbox[0].x)*inset.width*this.scale,point.y=(point.y-bbox[0].y)/(bbox[1].y-bbox[0].y)*inset.height*this.scale,{x:point.x+this.transX*this.scale+inset.left*this.scale,y:point.y+this.transY*this.scale+inset.top*this.scale}):!1},pointToLatLng:function(x,y){var i,inset,bbox,nx,ny,proj=jvm.Map.maps[this.params.map].projection,centralMeridian=proj.centralMeridian,insets=jvm.Map.maps[this.params.map].insets;for(i=0;ibbox[0].x&&nxbbox[0].y&&nybbox[0].x&&xbbox[0].y&&y\").addClass(\"jvectormap-goback\").text(\"Back\").appendTo(this.params.container),this.backButton.hide(),this.backButton.click(function(){that.goBack()}),this.spinner=jvm.$(\"
      \").addClass(\"jvectormap-spinner\").appendTo(this.params.container),this.spinner.hide()},jvm.MultiMap.prototype={addMap:function(name,config){var cnt=jvm.$(\"
      \").css({width:\"100%\",height:\"100%\"});return this.params.container.append(cnt),this.maps[name]=new jvm.Map(jvm.$.extend(config,{container:cnt})),this.params.maxLevel>config.multiMapLevel&&this.maps[name].container.on(\"regionClick.jvectormap\",{scope:this},function(e,code){var multimap=e.data.scope,mapName=multimap.params.mapNameByCode(code,multimap);multimap.drillDownPromise&&\"pending\"===multimap.drillDownPromise.state()||multimap.drillDown(mapName,code)}),this.maps[name]},downloadMap:function(code){var that=this,deferred=jvm.$.Deferred();return this.mapsLoaded[code]?deferred.resolve():jvm.$.get(this.params.mapUrlByCode(code,this)).then(function(){that.mapsLoaded[code]=!0,deferred.resolve()},function(){deferred.reject()}),deferred},drillDown:function(name,code){var currentMap=this.history[this.history.length-1],that=this,focusPromise=currentMap.setFocus({region:code,animate:!0}),downloadPromise=this.downloadMap(code);focusPromise.then(function(){\"pending\"===downloadPromise.state()&&that.spinner.show()}),downloadPromise.always(function(){that.spinner.hide()}),this.drillDownPromise=jvm.$.when(downloadPromise,focusPromise),this.drillDownPromise.then(function(){currentMap.params.container.hide(),that.maps[name]?that.maps[name].params.container.show():that.addMap(name,{map:name,multiMapLevel:currentMap.params.multiMapLevel+1}),that.history.push(that.maps[name]),that.backButton.show()})},goBack:function(){var currentMap=this.history.pop(),prevMap=this.history[this.history.length-1],that=this;currentMap.setFocus({scale:1,x:.5,y:.5,animate:!0}).then(function(){currentMap.params.container.hide(),prevMap.params.container.show(),prevMap.updateSize(),1===that.history.length&&that.backButton.hide(),prevMap.setFocus({scale:1,x:.5,y:.5,animate:!0})})}},jvm.MultiMap.defaultParams={mapNameByCode:function(code,multiMap){return code.toLowerCase()+\"_\"+multiMap.defaultProjection+\"_en\"},mapUrlByCode:function(code,multiMap){return\"jquery-jvectormap-data-\"+code.toLowerCase()+\"-\"+multiMap.defaultProjection+\"-en.js\"}};","jQuery.fn.vectorMap('addMap', 'world_mill_en',{\"insets\": [{\"width\": 900, \"top\": 0, \"height\": 440.70631074413296, \"bbox\": [{\"y\": -12671671.123330014, \"x\": -20004297.151525836}, {\"y\": 6930392.025135122, \"x\": 20026572.39474939}], \"left\": 0}], \"paths\": {\"BD\": {\"path\": \"M651.84,230.21l-0.6,-2.0l-1.36,-1.71l-2.31,-0.11l-0.41,0.48l0.2,0.94l-0.53,0.99l-0.72,-0.36l-0.68,0.35l-1.2,-0.36l-0.37,-2.0l-0.81,-1.86l0.39,-1.46l-0.22,-0.47l-1.14,-0.53l0.29,-0.5l1.48,-0.94l0.03,-0.65l-1.55,-1.22l0.55,-1.14l1.61,0.94l1.04,0.15l0.18,1.54l0.34,0.35l5.64,0.63l-0.84,1.64l-1.22,0.34l-0.77,1.51l0.07,0.47l1.37,1.37l0.67,-0.19l0.42,-1.39l1.21,3.84l-0.03,1.21l-0.33,-0.15l-0.4,0.28Z\", \"name\": \"Bangladesh\"}, \"BE\": {\"path\": \"M429.29,144.05l1.91,0.24l2.1,-0.63l2.63,1.99l-0.21,1.66l-0.69,0.4l-0.18,1.2l-1.66,-1.13l-1.39,0.15l-2.73,-2.7l-1.17,-0.18l-0.16,-0.52l1.54,-0.5Z\", \"name\": \"Belgium\"}, \"BF\": {\"path\": \"M421.42,247.64l-0.11,0.95l0.34,1.16l1.4,1.71l0.07,1.1l0.32,0.37l2.55,0.51l-0.04,1.28l-0.38,0.53l-1.07,0.21l-0.72,1.18l-0.63,0.21l-3.22,-0.25l-0.94,0.39l-5.4,-0.05l-0.39,0.38l0.16,2.73l-1.23,-0.43l-1.17,0.1l-0.89,0.57l-2.27,-1.72l-0.13,-1.11l0.61,-0.96l0.02,-0.93l1.87,-1.98l0.44,-1.81l0.43,-0.39l1.28,0.26l1.05,-0.52l0.47,-0.73l1.84,-1.09l0.55,-0.83l2.2,-1.0l1.15,-0.3l0.72,0.45l1.13,-0.01Z\", \"name\": \"Burkina Faso\"}, \"BG\": {\"path\": \"M491.65,168.18l-0.86,0.88l-0.91,2.17l0.48,1.34l-1.6,-0.24l-2.55,0.95l-0.28,1.51l-1.8,0.22l-2.0,-1.0l-1.92,0.79l-1.42,-0.07l-0.15,-1.63l-1.05,-0.97l0.0,-0.8l1.2,-1.57l0.01,-0.56l-1.14,-1.23l-0.05,-0.94l0.88,0.97l0.88,-0.2l1.91,0.47l3.68,0.16l1.42,-0.81l2.72,-0.66l2.55,1.24Z\", \"name\": \"Bulgaria\"}, \"BA\": {\"path\": \"M463.49,163.65l2.1,0.5l1.72,-0.03l1.52,0.68l-0.36,0.78l0.08,0.45l1.04,1.02l-0.25,0.98l-1.81,1.15l-0.38,1.38l-1.67,-0.87l-0.89,-1.2l-2.11,-1.83l-1.63,-2.22l0.23,-0.57l0.48,0.38l0.55,-0.06l0.43,-0.51l0.94,-0.06Z\", \"name\": \"Bosnia and Herz.\"}, \"BN\": {\"path\": \"M707.48,273.58l0.68,-0.65l1.41,-0.91l-0.15,1.63l-0.81,-0.05l-0.61,0.58l-0.53,-0.6Z\", \"name\": \"Brunei\"}, \"BO\": {\"path\": \"M263.83,340.69l-3.09,-0.23l-0.38,0.23l-0.7,1.52l-1.31,-1.53l-3.28,-0.64l-2.37,2.4l-1.31,0.26l-0.88,-3.26l-1.3,-2.86l0.74,-2.37l-0.13,-0.43l-1.2,-1.01l-0.37,-1.89l-1.08,-1.55l1.45,-2.56l-0.96,-2.33l0.47,-1.06l-0.34,-0.73l0.91,-1.32l0.16,-3.84l0.5,-1.18l-1.81,-3.41l2.46,0.07l0.8,-0.85l3.4,-1.91l2.66,-0.35l-0.19,1.38l0.3,1.07l-0.05,1.97l2.72,2.27l2.88,0.49l0.89,0.86l1.79,0.58l0.98,0.7l1.71,0.05l1.17,0.61l0.6,2.7l-0.7,0.54l0.96,2.99l0.37,0.28l4.3,0.1l-0.25,1.2l0.27,1.02l1.43,0.9l0.5,1.35l-0.41,1.86l-0.65,1.08l0.12,1.35l-2.69,-1.65l-2.4,-0.03l-4.36,0.76l-1.49,2.5l-0.11,1.52l-0.75,2.37Z\", \"name\": \"Bolivia\"}, \"JP\": {\"path\": \"M781.12,166.87l1.81,0.68l1.62,-0.97l0.39,2.42l-3.35,0.75l-2.23,2.88l-3.63,-1.9l-0.56,0.2l-1.26,3.05l-2.16,0.03l-0.29,-2.51l1.08,-2.03l2.45,-0.16l0.37,-0.33l1.25,-5.94l2.47,2.71l2.03,1.12ZM773.56,187.34l-0.91,2.22l0.37,1.52l-1.14,1.75l-3.02,1.26l-4.58,0.27l-3.34,3.01l-1.25,-0.8l-0.09,-1.9l-0.46,-0.38l-4.35,0.62l-3.0,1.32l-2.85,0.05l-0.37,0.27l0.13,0.44l2.32,1.89l-1.54,4.34l-1.26,0.9l-0.79,-0.7l0.56,-2.27l-0.21,-0.45l-1.47,-0.75l-0.74,-1.4l2.12,-0.84l1.26,-1.7l2.45,-1.42l1.83,-1.91l4.78,-0.81l2.6,0.57l0.44,-0.21l2.39,-4.66l1.29,1.06l0.5,0.01l5.1,-4.02l1.69,-3.73l-0.38,-3.4l0.9,-1.61l2.14,-0.44l1.23,3.72l-0.07,2.18l-2.23,2.84l-0.04,3.16ZM757.78,196.26l0.19,0.56l-1.01,1.21l-1.16,-0.68l-1.28,0.65l-0.69,1.45l-1.02,-0.5l0.01,-0.93l1.14,-1.38l1.57,0.14l0.85,-0.98l1.4,0.46Z\", \"name\": \"Japan\"}, \"BI\": {\"path\": \"M495.45,295.49l-1.08,-2.99l1.14,-0.11l0.64,-1.19l0.76,0.09l0.65,1.83l-2.1,2.36Z\", \"name\": \"Burundi\"}, \"BJ\": {\"path\": \"M429.57,255.75l-0.05,0.8l0.5,1.34l-0.42,0.86l0.17,0.79l-1.81,2.12l-0.57,1.76l-0.08,5.42l-1.41,0.2l-0.48,-1.36l0.11,-5.71l-0.52,-0.7l-0.2,-1.35l-1.48,-1.48l0.21,-0.9l0.89,-0.43l0.42,-0.92l1.27,-0.36l1.22,-1.34l0.61,-0.0l1.62,1.24Z\", \"name\": \"Benin\"}, \"BT\": {\"path\": \"M650.32,213.86l0.84,0.71l-0.12,1.1l-3.76,-0.11l-1.57,0.4l-1.93,-0.87l1.48,-1.96l1.13,-0.57l1.63,0.57l1.33,0.08l0.99,0.65Z\", \"name\": \"Bhutan\"}, \"JM\": {\"path\": \"M228.38,239.28l-0.8,0.4l-2.26,-1.06l0.84,-0.23l2.14,0.3l1.17,0.56l-1.08,0.03Z\", \"name\": \"Jamaica\"}, \"BW\": {\"path\": \"M483.92,330.07l2.27,4.01l2.83,2.86l0.96,0.31l0.78,2.43l2.13,0.61l1.02,0.76l-3.0,1.64l-2.32,2.02l-1.54,2.69l-1.52,0.45l-0.64,1.94l-1.34,0.52l-1.85,-0.12l-1.21,-0.74l-1.35,-0.3l-1.22,0.62l-0.75,1.37l-2.31,1.9l-1.4,0.21l-0.35,-0.59l0.16,-1.75l-1.48,-2.54l-0.62,-0.43l-0.0,-7.1l2.08,-0.08l0.39,-0.4l0.07,-8.9l5.19,-0.93l0.8,0.89l0.51,0.07l1.5,-0.95l2.21,-0.49Z\", \"name\": \"Botswana\"}, \"BR\": {\"path\": \"M259.98,275.05l3.24,0.7l0.65,-0.53l4.55,-1.32l1.08,-1.06l-0.02,-0.63l0.55,-0.05l0.28,0.28l-0.26,0.87l0.22,0.48l0.73,0.32l0.4,0.81l-0.62,0.86l-0.4,2.13l0.82,2.56l1.69,1.43l1.43,0.2l3.17,-1.68l3.18,0.3l0.65,-0.75l-0.27,-0.92l1.9,-0.09l2.39,0.99l1.06,-0.61l0.84,0.78l1.2,-0.18l1.18,-1.06l0.84,-1.94l1.36,-2.11l0.37,-0.05l1.89,5.45l1.33,0.59l0.05,1.28l-1.77,1.94l0.02,0.56l1.02,0.87l4.07,0.36l0.08,2.16l0.66,0.29l1.74,-1.5l6.97,2.32l1.02,1.22l-0.35,1.18l0.49,0.5l2.81,-0.74l4.77,1.3l3.75,-0.08l3.57,2.0l3.29,2.86l1.93,0.72l2.12,0.12l0.71,0.62l1.21,4.51l-0.95,3.98l-4.72,5.06l-1.64,2.92l-1.72,2.05l-0.8,0.3l-0.72,2.03l0.18,4.75l-0.94,5.53l-0.81,1.13l-0.43,3.36l-2.55,3.5l-0.4,2.51l-1.86,1.04l-0.67,1.53l-2.54,0.01l-3.94,1.01l-1.83,1.2l-2.87,0.82l-3.03,2.19l-2.2,2.83l-0.36,2.0l0.4,1.58l-0.44,2.6l-0.51,1.2l-1.77,1.54l-2.75,4.78l-3.83,3.42l-1.24,2.74l-1.18,1.15l-0.36,-0.83l0.95,-1.14l0.01,-0.5l-1.52,-1.97l-4.56,-3.32l-1.03,-0.0l-2.38,-2.02l-0.81,-0.0l5.34,-5.45l3.77,-2.58l0.22,-2.46l-1.35,-1.81l-0.91,0.07l0.58,-2.33l0.01,-1.54l-1.11,-0.83l-1.75,0.3l-0.44,-3.11l-0.52,-0.95l-1.88,-0.88l-1.24,0.47l-2.17,-0.41l0.15,-3.21l-0.62,-1.34l0.66,-0.73l-0.22,-1.34l0.66,-1.13l0.44,-2.04l-0.61,-1.83l-1.4,-0.86l-0.2,-0.75l0.34,-1.39l-0.38,-0.5l-4.52,-0.1l-0.72,-2.22l0.59,-0.42l-0.03,-1.1l-0.5,-0.87l-0.32,-1.7l-1.45,-0.76l-1.63,-0.02l-1.05,-0.72l-1.6,-0.48l-1.13,-0.99l-2.69,-0.4l-2.47,-2.06l0.13,-4.35l-0.45,-0.45l-3.46,0.5l-3.44,1.94l-0.6,0.74l-2.9,-0.17l-1.47,0.42l-0.72,-0.18l0.15,-3.52l-0.63,-0.34l-1.94,1.41l-1.87,-0.06l-0.83,-1.18l-1.37,-0.26l0.21,-1.01l-1.35,-1.49l-0.88,-1.91l0.56,-0.6l-0.0,-0.81l1.29,-0.62l0.22,-0.43l-0.22,-1.19l0.61,-0.91l0.15,-0.99l2.65,-1.58l1.99,-0.47l0.42,-0.36l2.06,0.11l0.42,-0.33l1.19,-8.0l-0.41,-1.56l-1.1,-1.0l0.01,-1.33l1.91,-0.42l0.08,-0.96l-0.33,-0.43l-1.14,-0.2l-0.02,-0.83l4.47,0.05l0.82,-0.67l0.82,1.81l0.8,0.07l1.15,1.1l2.26,-0.05l0.71,-0.83l2.78,-0.96l0.48,-1.13l1.6,-0.64l0.24,-0.47l-0.48,-0.82l-1.83,-0.19l-0.36,-3.22Z\", \"name\": \"Brazil\"}, \"BS\": {\"path\": \"M226.4,223.87l-0.48,-1.15l-0.84,-0.75l0.36,-1.11l0.95,1.95l0.01,1.06ZM225.56,216.43l-1.87,0.29l-0.04,-0.22l0.74,-0.14l1.17,0.06Z\", \"name\": \"Bahamas\"}, \"BY\": {\"path\": \"M493.84,128.32l0.29,0.7l0.49,0.23l1.19,-0.38l2.09,0.72l0.19,1.26l-0.45,1.24l1.57,2.26l0.89,0.59l0.17,0.81l1.58,0.56l0.4,0.5l-0.53,0.41l-1.87,-0.11l-0.73,0.38l-0.13,0.52l1.04,2.74l-1.91,0.26l-0.89,0.99l-0.11,1.18l-2.73,-0.04l-0.53,-0.62l-0.52,-0.08l-0.75,0.46l-0.91,-0.42l-1.92,-0.07l-2.75,-0.79l-2.6,-0.28l-2.0,0.07l-1.5,0.92l-0.67,0.07l-0.08,-1.22l-0.59,-1.19l1.36,-0.88l0.01,-1.35l-0.7,-1.41l-0.07,-1.0l2.16,-0.02l2.72,-1.3l0.75,-2.04l1.91,-1.04l0.2,-0.41l-0.19,-1.25l3.8,-1.78l2.3,0.77Z\", \"name\": \"Belarus\"}, \"BZ\": {\"path\": \"M198.03,244.38l0.1,-4.49l0.69,-0.06l0.74,-1.3l0.34,0.28l-0.4,1.3l0.17,0.58l-0.34,2.25l-1.3,1.42Z\", \"name\": \"Belize\"}, \"RU\": {\"path\": \"M491.55,115.25l2.55,-1.85l-0.01,-0.65l-2.2,-1.5l7.32,-6.76l1.03,-2.11l-0.13,-0.49l-3.46,-2.52l0.86,-2.7l-2.11,-2.81l1.56,-3.67l-2.77,-4.52l2.15,-2.99l-0.08,-0.55l-3.65,-2.73l0.3,-2.54l1.81,-0.37l4.26,-1.77l2.42,-1.45l4.06,2.61l6.79,1.04l9.34,4.85l1.78,1.88l0.14,2.46l-2.55,2.02l-3.9,1.06l-11.07,-3.14l-2.06,0.53l-0.13,0.7l3.94,2.94l0.31,5.86l0.26,0.36l5.14,2.24l0.58,-0.29l0.32,-1.94l-1.35,-1.78l1.13,-1.09l6.13,2.42l2.11,-0.98l0.18,-0.56l-1.51,-2.67l5.41,-3.76l2.07,0.22l2.26,1.41l0.57,-0.16l1.46,-2.87l-0.05,-0.44l-1.92,-2.32l1.12,-2.32l-1.32,-2.27l5.87,1.16l1.04,1.75l-2.59,0.43l-0.33,0.4l0.02,2.36l2.46,1.83l3.87,-0.91l0.86,-2.8l13.69,-5.65l0.99,0.11l-1.92,2.06l0.23,0.67l3.11,0.45l2.0,-1.48l4.56,-0.12l3.64,-1.73l2.65,2.44l0.56,-0.01l2.85,-2.88l-0.01,-0.57l-2.35,-2.29l0.9,-1.01l7.14,1.3l3.41,1.36l9.05,4.97l0.51,-0.11l1.67,-2.27l-0.05,-0.53l-2.43,-2.21l-0.06,-0.78l-0.34,-0.36l-2.52,-0.36l0.64,-1.93l-1.32,-3.46l-0.06,-1.21l4.48,-4.06l1.69,-4.29l1.6,-0.81l6.23,1.18l0.44,2.21l-2.29,3.64l0.06,0.5l1.47,1.39l0.76,3.0l-0.56,6.03l2.69,2.82l-0.96,2.57l-4.86,5.95l0.23,0.64l2.86,0.61l0.42,-0.17l0.93,-1.4l2.64,-1.03l0.87,-2.24l2.09,-1.96l0.07,-0.5l-1.36,-2.28l1.09,-2.69l-0.32,-0.55l-2.47,-0.33l-0.5,-2.06l1.94,-4.38l-0.06,-0.42l-2.96,-3.4l4.12,-2.88l0.16,-0.4l-0.51,-2.93l0.54,-0.05l1.13,2.25l-0.96,4.35l0.27,0.47l2.68,0.84l0.5,-0.51l-1.02,-2.99l3.79,-1.66l5.01,-0.24l4.53,2.61l0.48,-0.06l0.07,-0.48l-2.18,-3.82l-0.23,-4.67l3.98,-0.9l5.97,0.21l5.49,-0.64l0.27,-0.65l-1.83,-2.31l2.56,-2.9l2.87,-0.17l4.8,-2.47l6.54,-0.67l1.03,-1.42l6.25,-0.45l2.32,1.11l5.53,-2.7l4.5,0.08l0.39,-0.28l0.66,-2.15l2.26,-2.12l5.69,-2.11l3.21,1.29l-2.46,0.94l-0.25,0.42l0.34,0.35l5.41,0.77l0.61,2.33l0.58,0.25l2.2,-1.22l7.13,0.07l5.51,2.47l1.79,1.72l-0.53,2.24l-9.16,4.15l-1.97,1.52l0.16,0.71l6.77,1.91l2.16,-0.78l1.13,2.74l0.67,0.11l1.01,-1.15l3.81,-0.73l7.7,0.77l0.54,1.99l0.36,0.29l10.47,0.71l0.43,-0.38l0.13,-3.23l4.87,0.78l3.95,-0.02l3.83,2.4l1.03,2.71l-1.35,1.79l0.02,0.5l3.15,3.64l4.07,1.96l0.53,-0.18l2.23,-4.47l3.95,1.93l4.16,-1.21l4.73,1.39l2.05,-1.26l3.94,0.62l0.43,-0.55l-1.68,-4.02l2.89,-1.8l22.31,3.03l2.16,2.75l6.55,3.51l10.29,-0.81l4.82,0.73l1.85,1.66l-0.29,3.08l0.25,0.41l3.08,1.26l3.56,-0.88l4.35,-0.11l4.8,0.87l4.57,-0.47l4.23,3.79l0.43,0.07l3.1,-1.4l0.16,-0.6l-1.88,-2.62l0.85,-1.52l7.71,1.21l5.22,-0.26l7.09,2.09l9.59,5.22l6.35,4.11l-0.2,2.38l1.88,1.41l0.6,-0.42l-0.48,-2.53l6.15,0.57l4.4,3.51l-1.97,1.43l-4.0,0.41l-0.36,0.39l-0.06,3.79l-0.74,0.62l-2.07,-0.11l-1.91,-1.39l-3.14,-1.11l-0.78,-1.85l-2.72,-0.68l-2.63,0.49l-1.04,-1.1l0.46,-1.31l-0.5,-0.51l-3.0,0.98l-0.22,0.58l0.99,1.7l-1.21,1.48l-3.04,1.68l-3.12,-0.28l-0.4,0.23l0.09,0.46l2.2,2.09l1.46,3.2l1.15,1.1l0.24,1.33l-0.42,0.67l-4.63,-0.77l-6.96,2.9l-2.19,0.44l-7.6,5.06l-0.84,1.45l-3.61,-2.37l-6.24,2.82l-0.94,-1.15l-0.53,-0.08l-2.28,1.52l-3.2,-0.49l-0.44,0.27l-0.78,2.37l-3.05,3.78l0.09,1.47l0.29,0.36l2.54,0.72l-0.29,4.53l-1.97,0.11l-0.35,0.26l-1.07,2.94l0.8,1.45l-3.91,1.58l-1.05,3.95l-3.48,0.77l-0.3,0.3l-0.72,3.29l-3.09,2.65l-0.7,-1.74l-2.44,-12.44l1.16,-4.71l2.04,-2.06l0.22,-1.64l3.8,-0.86l4.46,-4.61l4.28,-3.81l4.48,-3.01l2.17,-5.63l-0.42,-0.54l-3.04,0.33l-1.77,3.31l-5.86,3.86l-1.86,-4.25l-0.45,-0.23l-6.46,1.3l-6.47,6.44l-0.01,0.55l1.58,1.74l-8.24,1.17l0.15,-2.2l-0.34,-0.42l-3.89,-0.56l-3.25,1.81l-7.62,-0.62l-8.45,1.19l-17.71,15.41l0.22,0.7l3.74,0.41l1.36,2.17l2.43,0.76l1.88,-1.68l2.4,0.2l3.4,3.54l0.08,2.6l-1.95,3.42l-0.21,3.9l-1.1,5.06l-3.71,4.54l-0.87,2.21l-8.29,8.89l-3.19,1.7l-1.32,0.03l-1.45,-1.36l-0.49,-0.04l-2.27,1.5l0.41,-3.65l-0.59,-2.47l1.75,-0.89l2.91,0.53l0.42,-0.2l1.68,-3.03l0.87,-3.46l0.97,-1.18l1.32,-2.88l-0.45,-0.56l-4.14,0.95l-2.19,1.25l-3.41,-0.0l-1.06,-2.93l-2.97,-2.3l-4.28,-1.06l-1.75,-5.07l-2.66,-5.01l-2.29,-1.29l-3.75,-1.01l-3.44,0.08l-3.18,0.62l-2.24,1.77l0.05,0.66l1.18,0.69l0.02,1.43l-1.33,1.05l-2.26,3.51l-0.04,1.43l-3.16,1.84l-2.82,-1.16l-3.01,0.23l-1.35,-1.07l-1.5,-0.35l-3.9,2.31l-3.22,0.52l-2.27,0.79l-3.05,-0.51l-2.21,0.03l-1.48,-1.6l-2.6,-1.63l-2.63,-0.43l-5.46,1.01l-3.23,-1.25l-0.72,-2.57l-5.2,-1.24l-2.75,-1.36l-0.5,0.12l-2.59,3.45l0.84,2.1l-2.06,1.93l-3.41,-0.77l-2.42,-0.12l-1.83,-1.54l-2.53,-0.05l-2.42,-0.98l-3.86,1.57l-4.72,2.78l-3.3,0.75l-1.55,-1.92l-3.0,0.41l-1.11,-1.33l-1.62,-0.59l-1.31,-1.94l-1.38,-0.6l-3.7,0.79l-3.31,-1.83l-0.51,0.11l-0.99,1.29l-5.29,-8.05l-2.96,-2.48l0.65,-0.77l0.01,-0.51l-0.5,-0.11l-6.2,3.21l-1.84,0.15l0.15,-1.39l-0.26,-0.42l-3.22,-1.17l-2.46,0.7l-0.69,-3.16l-0.32,-0.31l-4.5,-0.75l-2.47,1.47l-6.19,1.27l-1.29,0.86l-9.51,1.3l-1.15,1.17l-0.03,0.53l1.47,1.9l-1.89,0.69l-0.22,0.56l0.31,0.6l-2.11,1.44l0.03,0.68l3.75,2.12l-0.39,0.98l-3.23,-0.13l-0.86,0.86l-3.09,-1.59l-3.97,0.07l-2.66,1.35l-8.32,-3.56l-4.07,0.06l-5.39,3.68l-0.39,2.0l-2.03,-1.5l-0.59,0.13l-2.0,3.59l0.57,0.93l-1.28,2.16l0.06,0.48l2.13,2.17l1.95,0.04l1.37,1.82l-0.23,1.46l0.25,0.43l0.83,0.33l-0.8,1.31l-2.49,0.62l-2.49,3.2l0.0,0.49l2.17,2.78l-0.15,2.18l2.5,3.24l-1.58,1.59l-0.7,-0.13l-1.63,-1.72l-2.29,-0.84l-0.94,-1.31l-2.34,-0.63l-1.48,0.4l-0.43,-0.47l-3.51,-1.48l-5.76,-1.01l-0.45,0.19l-2.89,-2.34l-2.9,-1.2l-1.53,-1.29l1.29,-0.43l2.08,-2.61l-0.05,-0.55l-0.89,-0.79l3.05,-1.06l0.27,-0.42l-0.07,-0.69l-0.49,-0.35l-1.73,0.39l0.04,-0.68l1.04,-0.72l2.66,-0.48l0.4,-1.32l-0.5,-1.6l0.92,-1.54l0.03,-1.17l-0.29,-0.37l-3.69,-1.06l-1.41,0.02l-1.42,-1.41l-2.19,0.38l-2.77,-1.01l-0.03,-0.59l-0.89,-1.43l-2.0,-0.32l-0.11,-0.54l0.49,-0.53l0.01,-0.53l-1.6,-1.9l-3.58,0.02l-0.88,0.73l-0.46,-0.07l-1.0,-2.79l2.22,-0.02l0.97,-0.74l0.07,-0.57l-0.9,-1.04l-1.35,-0.48l-0.11,-0.7l-0.95,-0.58l-1.38,-1.99l0.46,-0.98l-0.51,-1.96l-2.45,-0.84l-1.21,0.3l-0.46,-0.76l-2.46,-0.83l-0.72,-1.87l-0.21,-1.69l-0.99,-0.85l0.85,-1.17l-0.7,-3.21l1.66,-1.97l-0.16,-0.79ZM749.2,170.72l-0.6,0.4l-0.13,0.16l-0.01,-0.51l0.74,-0.05ZM874.85,67.94l-5.63,0.48l-0.26,-0.84l3.15,-1.89l1.94,0.01l3.19,1.16l-2.39,1.09ZM797.39,48.49l-2.0,1.36l-3.8,-0.42l-4.25,-1.8l0.35,-0.97l9.69,1.83ZM783.67,46.12l-1.63,3.09l-8.98,-0.13l-4.09,1.14l-4.54,-2.97l1.16,-3.01l3.05,-0.89l6.5,0.22l8.54,2.56ZM778.2,134.98l-0.56,-0.9l0.27,-0.12l0.29,1.01ZM778.34,135.48l0.94,3.53l-0.05,3.38l1.05,3.39l2.18,5.0l-2.89,-0.83l-0.49,0.26l-1.54,4.65l2.42,3.5l-0.04,1.13l-1.24,-1.24l-0.61,0.06l-1.09,1.61l-0.28,-1.61l0.27,-3.1l-0.28,-3.4l0.58,-2.47l0.11,-4.39l-1.46,-3.36l0.21,-4.32l2.15,-1.46l0.07,-0.34ZM771.95,56.61l1.76,-1.42l2.89,-0.42l3.28,1.71l0.14,0.6l-3.27,0.03l-4.81,-0.5ZM683.76,31.09l-13.01,1.93l4.03,-6.35l1.82,-0.56l1.73,0.34l5.99,2.98l-0.56,1.66ZM670.85,27.93l-5.08,0.64l-6.86,-1.57l-3.99,-2.05l-2.1,-4.16l-2.6,-0.87l5.72,-3.5l5.2,-1.28l4.69,2.85l5.59,5.4l-0.56,4.53ZM564.15,68.94l-0.64,0.17l-7.85,-0.57l-0.86,-2.04l-4.28,-1.17l-0.28,-1.94l2.27,-0.89l0.25,-0.39l-0.08,-2.38l4.81,-3.97l-0.15,-0.7l-1.47,-0.38l5.3,-3.81l0.15,-0.44l-0.58,-1.94l5.28,-2.51l8.21,-3.27l8.28,-0.96l4.35,-1.94l4.6,-0.64l1.36,1.61l-1.34,1.28l-16.43,4.94l-7.97,4.88l-7.74,9.63l0.66,4.14l4.16,3.27ZM548.81,18.48l-5.5,1.18l-0.58,1.02l-2.59,0.84l-2.13,-1.07l1.12,-1.42l-0.3,-0.65l-2.33,-0.07l1.68,-0.36l3.47,-0.06l0.42,1.29l0.66,0.16l1.38,-1.34l2.15,-0.88l2.94,1.01l-0.39,0.36ZM477.37,133.15l-4.08,0.05l-2.56,-0.32l0.33,-0.87l3.17,-1.03l3.24,0.96l-0.09,1.23Z\", \"name\": \"Russia\"}, \"RW\": {\"path\": \"M497.0,288.25l0.71,1.01l-0.11,1.09l-1.63,0.03l-1.04,1.39l-0.83,-0.11l0.51,-1.2l0.08,-1.34l0.42,-0.41l0.7,0.14l1.19,-0.61Z\", \"name\": \"Rwanda\"}, \"RS\": {\"path\": \"M469.4,163.99l0.42,-0.5l-0.01,-0.52l-1.15,-1.63l1.43,-0.62l1.33,0.12l1.17,1.06l0.46,1.13l1.34,0.64l0.35,1.35l1.46,0.9l0.76,-0.29l0.2,0.69l-0.48,0.78l0.22,1.12l1.05,1.22l-0.77,0.8l-0.37,1.52l-1.21,0.08l0.24,-0.64l-0.39,-0.54l-2.08,-1.64l-0.9,0.05l-0.48,0.94l-2.12,-1.37l0.53,-1.6l-1.11,-1.37l0.51,-1.1l-0.41,-0.57Z\", \"name\": \"Serbia\"}, \"LT\": {\"path\": \"M486.93,129.3l0.17,1.12l-1.81,0.98l-0.72,2.02l-2.47,1.18l-2.1,-0.02l-0.73,-1.05l-1.06,-0.3l-0.09,-1.87l-3.56,-1.13l-0.43,-2.36l2.48,-0.94l4.12,0.22l2.25,-0.31l0.52,0.69l1.24,0.21l2.19,1.56Z\", \"name\": \"Lithuania\"}, \"LU\": {\"path\": \"M436.08,149.45l-0.48,-0.07l0.3,-1.28l0.27,0.4l-0.09,0.96Z\", \"name\": \"Luxembourg\"}, \"LR\": {\"path\": \"M399.36,265.97l0.18,1.54l-0.48,0.99l0.08,0.47l2.47,1.8l-0.33,2.8l-2.65,-1.13l-5.78,-4.61l0.58,-1.32l2.1,-2.33l0.86,-0.22l0.77,1.14l-0.14,0.85l0.59,0.87l1.0,0.14l0.76,-0.99Z\", \"name\": \"Liberia\"}, \"RO\": {\"path\": \"M487.53,154.23l0.6,0.24l2.87,3.98l-0.17,2.69l0.45,1.42l1.32,0.81l1.35,-0.42l0.76,0.36l0.02,0.31l-0.83,0.45l-0.59,-0.22l-0.54,0.3l-0.62,3.3l-1.0,-0.22l-2.07,-1.13l-2.95,0.71l-1.25,0.76l-3.51,-0.15l-1.89,-0.47l-0.87,0.16l-0.82,-1.3l0.29,-0.26l-0.06,-0.64l-1.09,-0.34l-0.56,0.5l-1.05,-0.64l-0.39,-1.39l-1.36,-0.65l-0.35,-1.0l-0.83,-0.75l1.54,-0.54l2.66,-4.21l2.4,-1.24l2.96,0.34l1.48,0.73l0.79,-0.45l1.78,-0.3l0.75,-0.74l0.79,0.0Z\", \"name\": \"Romania\"}, \"GW\": {\"path\": \"M386.23,253.6l-0.29,0.84l0.15,0.6l-2.21,0.59l-0.86,0.96l-1.04,-0.83l-1.09,-0.23l-0.54,-1.06l-0.66,-0.49l2.41,-0.48l4.13,0.1Z\", \"name\": \"Guinea-Bissau\"}, \"GT\": {\"path\": \"M195.08,249.77l-2.48,-0.37l-1.03,-0.45l-1.14,-0.89l0.3,-0.99l-0.24,-0.68l0.96,-1.66l2.98,-0.01l0.4,-0.37l-0.19,-1.28l-1.67,-1.4l0.51,-0.4l0.0,-1.05l3.85,0.02l-0.21,4.53l0.4,0.43l1.46,0.38l-1.48,0.98l-0.35,0.7l0.12,0.57l-2.2,1.96Z\", \"name\": \"Guatemala\"}, \"GR\": {\"path\": \"M487.07,174.59l-0.59,1.43l-0.37,0.21l-2.84,-0.35l-3.03,0.77l-0.18,0.68l1.28,1.23l-0.61,0.23l-1.14,0.0l-1.2,-1.39l-0.63,0.03l-0.53,1.01l0.56,1.76l1.03,1.19l-0.56,0.38l-0.05,0.62l2.52,2.12l0.02,0.87l-1.78,-0.59l-0.48,0.56l0.5,1.0l-1.07,0.2l-0.3,0.53l0.75,2.01l-0.98,0.02l-1.84,-1.12l-1.37,-4.2l-2.21,-2.95l-0.11,-0.56l1.04,-1.28l0.2,-0.95l0.85,-0.66l0.03,-0.46l1.32,-0.21l1.01,-0.64l1.22,0.05l0.65,-0.56l2.26,-0.0l1.82,-0.75l1.85,1.0l2.28,-0.28l0.35,-0.39l0.01,-0.77l0.34,0.22ZM480.49,192.16l0.58,0.4l-0.68,-0.12l0.11,-0.28ZM482.52,192.82l2.51,0.06l0.24,0.32l-1.99,0.13l-0.77,-0.51Z\", \"name\": \"Greece\"}, \"GQ\": {\"path\": \"M448.79,279.62l0.02,2.22l-4.09,0.0l0.69,-2.27l3.38,0.05Z\", \"name\": \"Eq. Guinea\"}, \"GY\": {\"path\": \"M277.42,270.07l-0.32,1.83l-1.32,0.57l-0.23,0.46l-0.28,2.0l1.11,1.82l0.83,0.19l0.32,1.25l1.13,1.62l-1.21,-0.19l-1.08,0.71l-1.77,0.5l-0.44,0.46l-0.86,-0.09l-1.32,-1.01l-0.77,-2.27l0.36,-1.9l0.68,-1.23l-0.57,-1.17l-0.74,-0.43l0.12,-1.16l-0.9,-0.69l-1.1,0.09l-1.31,-1.48l0.53,-0.72l-0.04,-0.84l1.99,-0.86l0.05,-0.59l-0.71,-0.78l0.14,-0.57l1.66,-1.24l1.36,0.77l1.41,1.49l0.06,1.15l0.37,0.38l0.8,0.05l2.06,1.86Z\", \"name\": \"Guyana\"}, \"GE\": {\"path\": \"M521.71,168.93l5.29,0.89l4.07,2.01l1.41,-0.44l2.07,0.56l0.68,1.1l1.07,0.55l-0.12,0.59l0.98,1.29l-1.01,-0.13l-1.81,-0.83l-0.94,0.47l-3.23,0.43l-2.29,-1.39l-2.33,0.05l0.21,-0.97l-0.76,-2.26l-1.45,-1.12l-1.43,-0.39l-0.41,-0.42Z\", \"name\": \"Georgia\"}, \"GB\": {\"path\": \"M412.61,118.72l-2.19,3.22l-0.0,0.45l5.13,-0.3l-0.53,2.37l-2.2,3.12l0.29,0.63l2.37,0.21l2.33,4.3l1.76,0.69l2.2,5.12l2.94,0.77l-0.23,1.62l-1.15,0.88l-0.1,0.52l0.82,1.42l-1.86,1.43l-3.3,-0.02l-4.12,0.87l-1.04,-0.58l-0.47,0.06l-1.51,1.41l-2.12,-0.34l-1.86,1.18l-0.6,-0.29l3.19,-3.0l2.16,-0.69l0.28,-0.41l-0.34,-0.36l-3.73,-0.53l-0.4,-0.76l2.2,-0.87l0.17,-0.61l-1.26,-1.67l0.36,-1.7l3.38,0.28l0.43,-0.33l0.37,-1.99l-1.79,-2.49l-3.11,-0.72l-0.38,-0.59l0.79,-1.35l-0.04,-0.46l-0.82,-0.97l-0.61,0.01l-0.68,0.84l-0.1,-2.34l-1.23,-1.88l0.85,-3.47l1.77,-2.68l1.85,0.26l2.17,-0.22ZM406.26,132.86l-1.01,1.77l-1.57,-0.59l-1.16,0.01l0.37,-1.54l-0.39,-1.39l1.45,-0.1l2.3,1.84Z\", \"name\": \"United Kingdom\"}, \"GA\": {\"path\": \"M453.24,279.52l-0.08,0.98l0.7,1.29l2.36,0.24l-0.98,2.63l1.18,1.79l0.25,1.78l-0.29,1.52l-0.6,0.93l-1.84,-0.09l-1.23,-1.11l-0.66,0.23l-0.15,0.84l-1.42,0.26l-1.02,0.7l-0.11,0.52l0.77,1.35l-1.34,0.97l-3.94,-4.3l-1.44,-2.45l0.06,-0.6l0.54,-0.81l1.05,-3.46l4.17,-0.07l0.4,-0.4l-0.02,-2.66l2.39,0.21l1.25,-0.27Z\", \"name\": \"Gabon\"}, \"GN\": {\"path\": \"M391.8,254.11l0.47,0.8l1.11,-0.32l0.98,0.7l1.07,0.2l2.26,-1.22l0.64,0.44l1.13,1.56l-0.48,1.4l0.8,0.3l-0.08,0.48l0.46,0.68l-0.35,1.36l1.05,2.61l-1.0,0.69l0.03,1.41l-0.72,-0.06l-1.08,1.0l-0.24,-0.27l0.07,-1.11l-1.05,-1.54l-1.79,0.21l-0.35,-2.01l-1.6,-2.18l-2.0,-0.0l-1.31,0.54l-1.95,2.18l-1.86,-2.19l-1.2,-0.78l-0.3,-1.11l-0.8,-0.85l0.65,-0.72l0.81,-0.03l1.64,-0.8l0.23,-1.87l2.67,0.64l0.89,-0.3l1.21,0.15Z\", \"name\": \"Guinea\"}, \"GM\": {\"path\": \"M379.31,251.39l0.1,-0.35l2.43,-0.07l0.74,-0.61l0.51,-0.03l0.77,0.49l-1.03,-0.3l-1.87,0.9l-1.65,-0.04ZM384.03,250.91l0.91,0.05l0.75,-0.24l-0.59,0.31l-1.08,-0.13Z\", \"name\": \"Gambia\"}, \"GL\": {\"path\": \"M353.02,1.2l14.69,4.67l-3.68,1.89l-22.97,0.86l-0.36,0.27l0.12,0.43l1.55,1.18l8.79,-0.66l7.48,2.07l4.86,-1.77l1.66,1.73l-2.53,3.19l-0.01,0.48l0.46,0.15l6.35,-2.2l12.06,-2.31l7.24,1.13l1.09,1.99l-9.79,4.01l-1.44,1.32l-7.87,0.98l-0.35,0.41l0.38,0.38l5.07,0.24l-2.53,3.58l-2.07,3.81l0.08,6.05l2.57,3.11l-3.22,0.2l-4.12,1.66l-0.05,0.72l4.45,2.65l0.51,3.75l-2.3,0.4l-0.25,0.64l2.79,3.69l-4.82,0.31l-0.36,0.29l0.16,0.44l2.62,1.8l-0.59,1.22l-3.3,0.7l-3.45,0.01l-0.29,0.68l3.03,3.12l0.02,1.34l-4.4,-1.73l-1.72,1.35l0.15,0.66l3.31,1.15l3.13,2.71l0.81,3.16l-3.85,0.75l-4.89,-4.26l-0.47,-0.03l-0.17,0.44l0.79,2.86l-2.71,2.21l-0.13,0.44l0.37,0.27l8.73,0.34l-12.32,6.64l-7.24,1.48l-2.94,0.08l-2.69,1.75l-3.43,4.41l-5.24,2.84l-1.73,0.18l-7.12,2.1l-2.15,2.52l-0.13,2.99l-1.19,2.45l-4.01,3.09l-0.14,0.44l0.97,2.9l-2.28,6.48l-3.1,0.2l-3.83,-3.07l-4.86,-0.02l-2.25,-1.93l-1.7,-3.79l-4.3,-4.84l-1.21,-2.49l-0.44,-3.8l-3.32,-3.63l0.84,-2.86l-1.56,-1.7l2.28,-4.6l3.83,-1.74l1.03,-1.96l0.52,-3.47l-0.59,-0.41l-4.17,2.21l-2.07,0.58l-2.72,-1.28l-0.15,-2.71l0.85,-2.09l2.01,-0.06l5.06,1.2l0.46,-0.23l-0.14,-0.49l-6.54,-4.47l-2.67,0.55l-1.58,-0.86l2.56,-4.01l-0.03,-0.48l-1.5,-1.74l-4.98,-8.5l-3.13,-1.96l0.03,-1.88l-0.24,-0.37l-6.85,-3.02l-5.36,-0.38l-12.7,0.58l-2.78,-1.57l-3.66,-2.77l5.73,-1.45l5.0,-0.28l0.38,-0.38l-0.35,-0.41l-10.67,-1.38l-5.3,-2.06l0.25,-1.54l18.41,-5.26l1.22,-2.27l-0.25,-0.55l-6.14,-1.86l1.68,-1.77l8.55,-4.03l3.59,-0.63l0.3,-0.54l-0.88,-2.27l5.47,-1.47l7.65,-0.95l7.55,-0.05l3.04,1.85l6.48,-3.27l5.81,2.22l3.56,0.5l5.16,1.94l0.5,-0.21l-0.17,-0.52l-5.71,-3.13l0.28,-2.13l8.12,-3.6l8.7,0.28l3.35,-2.34l8.71,-0.6l19.93,0.8Z\", \"name\": \"Greenland\"}, \"KW\": {\"path\": \"M540.81,207.91l0.37,0.86l-0.17,0.76l0.6,1.53l-0.95,0.04l-0.82,-1.28l-1.57,-0.18l1.31,-1.88l1.22,0.17Z\", \"name\": \"Kuwait\"}, \"GH\": {\"path\": \"M420.53,257.51l-0.01,0.72l0.96,1.2l0.24,3.73l0.59,0.95l-0.51,2.1l0.19,1.41l1.02,2.21l-6.97,2.84l-1.8,-0.57l0.04,-0.89l-1.02,-2.04l0.61,-2.65l1.07,-2.32l-0.96,-6.47l5.01,0.07l0.94,-0.39l0.61,0.11Z\", \"name\": \"Ghana\"}, \"OM\": {\"path\": \"M568.09,230.93l-0.91,1.67l-1.22,0.04l-0.6,0.76l-0.41,1.51l0.27,1.58l-1.16,0.05l-1.56,0.97l-0.76,1.74l-1.62,0.05l-0.98,0.65l-0.17,1.15l-0.89,0.52l-1.49,-0.18l-2.4,0.94l-2.47,-5.4l7.35,-2.71l1.67,-5.23l-1.12,-2.09l0.05,-0.83l0.67,-1.0l0.07,-1.05l0.9,-0.42l-0.05,-2.07l0.7,-0.01l1.0,1.62l1.51,1.08l3.3,0.84l1.73,2.29l0.81,0.37l-1.23,2.35l-0.99,0.79Z\", \"name\": \"Oman\"}, \"_2\": {\"path\": \"M531.15,258.94l1.51,0.12l5.13,-0.95l5.3,-1.48l-0.01,4.4l-2.67,3.39l-1.85,0.01l-8.04,-2.94l-2.55,-3.17l1.12,-1.71l2.04,2.34Z\", \"name\": \"Somaliland\"}, \"_1\": {\"path\": \"M472.77,172.64l-1.08,-1.29l0.96,-0.77l0.29,-0.83l1.98,1.64l-0.36,0.67l-1.79,0.58Z\", \"name\": \"Kosovo\"}, \"_0\": {\"path\": \"M504.91,192.87l0.34,0.01l0.27,-0.07l-0.29,0.26l-0.31,-0.2Z\", \"name\": \"N. Cyprus\"}, \"JO\": {\"path\": \"M518.64,201.38l-5.14,1.56l-0.19,0.65l2.16,2.39l-0.89,1.14l-1.71,0.34l-1.71,1.8l-2.34,-0.37l1.21,-4.32l0.56,-4.07l2.8,0.94l4.46,-2.71l0.79,2.66Z\", \"name\": \"Jordan\"}, \"HR\": {\"path\": \"M455.59,162.84l1.09,0.07l-0.82,0.94l-0.27,-1.01ZM456.96,162.92l0.62,-0.41l1.73,0.45l0.42,-0.4l-0.01,-0.59l0.86,-0.52l0.2,-1.05l1.63,-0.68l2.57,1.68l2.07,0.6l0.87,-0.31l1.05,1.57l-0.52,0.63l-1.05,-0.56l-1.68,0.04l-2.1,-0.5l-1.29,0.06l-0.57,0.49l-0.59,-0.47l-0.62,0.16l-0.46,1.7l1.79,2.42l2.79,2.75l-1.18,-0.87l-2.21,-0.87l-1.67,-1.78l0.13,-0.63l-1.05,-1.19l-0.32,-1.27l-1.42,-0.43Z\", \"name\": \"Croatia\"}, \"HT\": {\"path\": \"M237.05,238.38l-1.16,0.43l-0.91,-0.55l0.05,-0.2l2.02,0.31ZM237.53,238.43l1.06,0.12l-0.05,0.01l-1.01,-0.12ZM239.25,238.45l0.79,-0.51l0.06,-0.62l-1.02,-1.0l0.02,-0.82l-0.3,-0.4l-0.93,-0.32l3.16,0.45l0.02,1.84l-0.48,0.34l-0.08,0.58l0.54,0.72l-1.78,-0.26Z\", \"name\": \"Haiti\"}, \"HU\": {\"path\": \"M462.08,157.89l0.65,-1.59l-0.09,-0.44l0.64,-0.0l0.39,-0.34l0.1,-0.69l1.75,0.87l2.32,-0.37l0.43,-0.66l3.49,-0.78l0.69,-0.78l0.57,-0.14l2.57,0.93l0.67,-0.23l1.03,0.65l0.08,0.37l-1.42,0.71l-2.59,4.14l-1.8,0.53l-1.68,-0.1l-2.74,1.23l-1.85,-0.54l-2.54,-1.66l-0.66,-1.1Z\", \"name\": \"Hungary\"}, \"HN\": {\"path\": \"M199.6,249.52l-1.7,-1.21l0.06,-0.94l3.04,-2.14l2.37,0.28l1.27,-0.09l1.1,-0.52l1.3,0.28l1.14,-0.25l1.38,0.37l2.23,1.37l-2.36,0.93l-1.23,-0.39l-0.88,1.3l-1.28,0.99l-0.98,-0.22l-0.42,0.52l-0.96,0.05l-0.36,0.41l0.04,0.88l-0.52,0.6l-0.3,0.04l-0.3,-0.55l-0.66,-0.31l0.11,-0.67l-0.48,-0.65l-0.87,-0.26l-0.73,0.2Z\", \"name\": \"Honduras\"}, \"PR\": {\"path\": \"M256.17,238.73l-0.26,0.27l-2.83,0.05l-0.07,-0.55l1.95,-0.1l1.22,0.33Z\", \"name\": \"Puerto Rico\"}, \"PS\": {\"path\": \"M509.21,203.07l0.1,-0.06l-0.02,0.03l-0.09,0.03ZM509.36,202.91l-0.02,-0.63l-0.33,-0.16l0.31,-1.09l0.24,0.1l-0.2,1.78Z\", \"name\": \"Palestine\"}, \"PT\": {\"path\": \"M401.84,187.38l-0.64,0.47l-1.13,-0.35l-0.91,0.17l0.28,-1.78l-0.24,-1.78l-1.25,-0.56l-0.45,-0.84l0.17,-1.66l1.01,-1.18l0.69,-2.92l-0.04,-1.39l-0.59,-1.9l1.3,-0.85l0.84,1.35l3.1,-0.3l0.46,0.99l-1.05,0.94l-0.03,2.16l-0.41,0.57l-0.08,1.1l-0.79,0.18l-0.26,0.59l0.91,1.6l-0.63,1.75l0.76,1.09l-1.1,1.52l0.07,1.05Z\", \"name\": \"Portugal\"}, \"PY\": {\"path\": \"M274.9,336.12l0.74,1.52l-0.16,3.45l0.32,0.41l2.64,0.5l1.11,-0.47l1.4,0.59l0.36,0.6l0.53,3.42l1.27,0.4l0.98,-0.38l0.51,0.27l-0.0,1.18l-1.21,5.32l-2.09,1.9l-1.8,0.4l-4.71,-0.98l2.2,-3.63l-0.32,-1.5l-2.78,-1.28l-3.03,-1.94l-2.07,-0.44l-4.34,-4.06l0.91,-2.9l0.08,-1.42l1.07,-2.04l4.13,-0.72l2.18,0.03l2.05,1.17l0.03,0.59Z\", \"name\": \"Paraguay\"}, \"PA\": {\"path\": \"M213.8,263.68l0.26,-1.52l-0.36,-0.26l-0.01,-0.49l0.44,-0.1l0.93,1.4l1.26,0.03l0.77,0.49l1.38,-0.23l2.51,-1.11l0.86,-0.72l3.45,0.85l1.4,1.18l0.41,1.74l-0.21,0.34l-0.53,-0.12l-0.47,0.29l-0.16,0.6l-0.68,-1.28l0.45,-0.49l-0.19,-0.66l-0.47,-0.13l-0.54,-0.84l-1.5,-0.75l-1.1,0.16l-0.75,0.99l-1.62,0.84l-0.18,0.96l0.85,0.97l-0.58,0.45l-0.69,0.08l-0.34,-1.18l-1.27,0.03l-0.71,-1.05l-2.59,-0.46Z\", \"name\": \"Panama\"}, \"PG\": {\"path\": \"M808.58,298.86l2.54,2.56l-0.13,0.26l-0.33,0.12l-0.87,-0.78l-1.22,-2.16ZM801.41,293.04l0.5,0.29l0.26,0.27l-0.49,-0.35l-0.27,-0.21ZM803.17,294.58l0.59,0.5l0.08,1.06l-0.29,-0.91l-0.38,-0.65ZM796.68,298.41l0.52,0.75l1.43,-0.19l2.27,-1.81l-0.01,-1.43l1.12,0.16l-0.04,1.1l-0.7,1.28l-1.12,0.18l-0.62,0.79l-2.46,1.11l-1.17,-0.0l-3.08,-1.25l3.41,0.0l0.45,-0.68ZM789.15,303.55l2.31,1.8l1.59,2.61l1.34,0.13l-0.06,0.66l0.31,0.43l1.06,0.24l0.06,0.65l2.25,1.05l-1.22,0.13l-0.72,-0.63l-4.56,-0.65l-3.22,-2.87l-1.49,-2.34l-3.27,-1.1l-2.38,0.72l-1.59,0.86l-0.2,0.42l0.27,1.55l-1.55,0.68l-1.36,-0.4l-2.21,-0.09l-0.08,-15.41l8.39,2.93l2.95,2.4l0.6,1.64l4.02,1.49l0.31,0.68l-1.76,0.21l-0.33,0.52l0.55,1.68Z\", \"name\": \"Papua New Guinea\"}, \"PE\": {\"path\": \"M244.96,295.21l-1.26,-0.07l-0.57,0.42l-1.93,0.45l-2.98,1.75l-0.36,1.36l-0.58,0.8l0.12,1.37l-1.24,0.59l-0.22,1.22l-0.62,0.84l1.04,2.27l1.28,1.44l-0.41,0.84l0.32,0.57l1.48,0.13l1.16,1.37l2.21,0.07l1.63,-1.08l-0.13,3.02l0.3,0.4l1.14,0.29l1.31,-0.34l1.9,3.59l-0.48,0.85l-0.17,3.85l-0.94,1.59l0.35,0.75l-0.47,1.07l0.98,1.97l-2.1,3.82l-0.98,0.5l-2.17,-1.28l-0.39,-1.16l-4.95,-2.58l-4.46,-2.79l-1.84,-1.51l-0.91,-1.84l0.3,-0.96l-2.11,-3.33l-4.82,-9.68l-1.04,-1.2l-0.87,-1.94l-3.4,-2.48l0.58,-1.18l-1.13,-2.23l0.66,-1.49l1.45,-1.15l-0.6,0.98l0.07,0.92l0.47,0.36l1.74,0.03l0.97,1.17l0.54,0.07l1.42,-1.03l0.6,-1.84l1.42,-2.02l3.04,-1.04l2.73,-2.62l0.86,-1.74l-0.1,-1.87l1.44,1.02l0.9,1.25l1.06,0.59l1.7,2.73l1.86,0.31l1.45,-0.61l0.96,0.39l1.36,-0.19l1.45,0.89l-1.4,2.21l0.31,0.61l0.59,0.05l0.47,0.5Z\", \"name\": \"Peru\"}, \"PK\": {\"path\": \"M615.09,192.34l-1.83,1.81l-2.6,0.39l-3.73,-0.68l-1.58,1.33l-0.09,0.42l1.77,4.39l1.7,1.23l-1.69,1.27l-0.12,2.14l-2.33,2.64l-1.6,2.8l-2.46,2.67l-3.03,-0.07l-2.76,2.83l0.05,0.6l1.5,1.11l0.26,1.9l1.44,1.5l0.37,1.68l-5.01,-0.01l-1.78,1.7l-1.42,-0.52l-0.76,-1.87l-2.27,-2.15l-11.61,0.86l0.71,-2.34l3.43,-1.32l0.25,-0.44l-0.21,-1.24l-1.2,-0.65l-0.28,-2.46l-2.29,-1.14l-1.28,-1.94l2.82,0.94l2.62,-0.38l1.42,0.33l0.76,-0.56l1.71,0.19l3.25,-1.14l0.27,-0.36l0.08,-2.19l1.18,-1.32l1.68,0.0l0.58,-0.82l1.6,-0.3l1.19,0.16l0.98,-0.78l0.02,-1.88l0.93,-1.47l1.48,-0.66l0.19,-0.55l-0.66,-1.25l2.04,-0.11l0.69,-1.01l-0.02,-1.16l1.11,-1.06l-0.17,-1.78l-0.49,-1.03l1.15,-0.98l5.42,-0.91l2.6,-0.82l1.6,1.16l0.97,2.34l3.45,0.97Z\", \"name\": \"Pakistan\"}, \"PH\": {\"path\": \"M737.01,263.84l0.39,2.97l-0.44,1.18l-0.55,-1.53l-0.67,-0.14l-1.17,1.28l0.65,2.09l-0.42,0.69l-2.48,-1.23l-0.57,-1.49l0.65,-1.03l-0.1,-0.54l-1.59,-1.19l-0.56,0.08l-0.65,0.87l-1.23,0.0l-1.58,0.97l0.83,-1.8l2.56,-1.42l0.65,0.84l0.45,0.13l1.9,-0.69l0.56,-1.11l1.5,-0.06l0.38,-0.43l-0.09,-1.19l1.21,0.71l0.36,2.02ZM733.59,256.58l0.05,0.75l0.08,0.26l-0.8,-0.42l-0.18,-0.71l0.85,0.12ZM734.08,256.1l-0.12,-1.12l-1.0,-1.27l1.36,0.03l0.53,0.73l0.51,2.04l-1.27,-0.4ZM733.76,257.68l0.38,0.98l-0.32,0.15l-0.07,-1.13ZM724.65,238.43l1.46,0.7l0.72,-0.31l-0.32,1.17l0.79,1.71l-0.57,1.84l-1.53,1.04l-0.39,2.25l0.56,2.04l1.63,0.57l1.16,-0.27l2.71,1.23l-0.19,1.08l0.76,0.84l-0.08,0.36l-1.4,-0.9l-0.88,-1.27l-0.66,0.0l-0.38,0.55l-1.6,-1.31l-2.15,0.36l-0.87,-0.39l0.07,-0.61l0.66,-0.55l-0.01,-0.62l-0.75,-0.59l-0.72,0.44l-0.74,-0.87l-0.39,-2.49l0.32,0.27l0.66,-0.28l0.26,-3.97l0.7,-2.02l1.14,0.0ZM731.03,258.87l-0.88,0.85l-1.19,1.94l-1.05,-1.19l0.93,-1.1l0.32,-1.47l0.52,-0.06l-0.27,1.15l0.22,0.45l0.49,-0.12l1.0,-1.32l-0.08,0.85ZM726.83,255.78l0.83,0.38l1.17,-0.0l-0.02,0.48l-2.0,1.4l0.03,-2.26ZM724.81,252.09l-0.38,1.27l-1.42,-1.95l1.2,0.05l0.6,0.63ZM716.55,261.82l1.1,-0.95l0.03,-0.03l-0.28,0.36l-0.85,0.61ZM719.22,259.06l0.04,-0.06l0.8,-1.53l0.16,0.75l-1.0,0.84Z\", \"name\": \"Philippines\"}, \"PL\": {\"path\": \"M468.44,149.42l-1.11,-1.54l-1.86,-0.33l-0.48,-1.05l-1.72,-0.37l-0.65,0.69l-0.72,-0.36l0.11,-0.61l-0.33,-0.46l-1.75,-0.27l-1.04,-0.93l-0.94,-1.94l0.16,-1.22l-0.62,-1.8l-0.78,-1.07l0.57,-1.04l-0.48,-1.43l1.41,-0.83l6.91,-2.71l2.14,0.5l0.52,0.91l5.51,0.44l4.55,-0.05l1.07,0.31l0.48,0.84l0.15,1.58l0.65,1.2l-0.01,0.99l-1.27,0.58l-0.19,0.54l0.73,1.48l0.08,1.55l1.2,2.76l-0.17,0.58l-1.23,0.44l-2.27,2.72l0.18,0.95l-1.97,-1.03l-1.98,0.4l-1.36,-0.28l-1.24,0.58l-1.07,-0.97l-1.16,0.24Z\", \"name\": \"Poland\"}, \"ZM\": {\"path\": \"M481.47,313.3l0.39,0.31l2.52,0.14l0.99,1.17l2.01,0.35l1.4,-0.64l0.69,1.17l1.78,0.33l1.84,2.35l2.23,0.18l0.4,-0.43l-0.21,-2.74l-0.62,-0.3l-0.48,0.32l-1.98,-1.17l0.72,-5.29l-0.51,-1.18l0.57,-1.3l3.68,-0.62l0.26,0.63l1.21,0.63l0.9,-0.22l2.16,0.67l1.33,0.71l1.07,1.02l0.56,1.87l-0.88,2.7l0.43,2.09l-0.73,0.87l-0.76,2.37l0.59,0.68l-6.6,1.83l-0.29,0.44l0.19,1.45l-1.68,0.35l-1.43,1.02l-0.38,0.87l-0.87,0.26l-3.48,3.69l-4.16,-0.53l-1.52,-1.0l-1.77,-0.13l-1.83,0.52l-3.04,-3.4l0.11,-7.59l4.82,0.03l0.39,-0.49l-0.18,-0.76l0.33,-0.83l-0.4,-1.36l0.24,-1.05Z\", \"name\": \"Zambia\"}, \"EH\": {\"path\": \"M384.42,230.28l0.25,-0.79l1.06,-1.29l0.8,-3.51l3.38,-2.78l0.7,-1.81l0.06,4.84l-1.98,0.2l-0.94,1.59l0.39,3.56l-3.7,-0.01ZM392.01,218.1l0.7,-1.8l1.77,-0.24l2.09,0.34l0.95,-0.62l1.28,-0.07l-0.0,2.51l-6.79,-0.12Z\", \"name\": \"W. Sahara\"}, \"EE\": {\"path\": \"M485.71,115.04l2.64,0.6l2.56,0.11l-1.6,1.91l0.61,3.54l-0.81,0.87l-1.78,-0.01l-3.22,-1.76l-1.8,0.45l0.21,-1.53l-0.58,-0.41l-0.69,0.34l-1.26,-1.03l-0.17,-1.63l2.83,-0.92l3.05,-0.52Z\", \"name\": \"Estonia\"}, \"EG\": {\"path\": \"M492.06,205.03l1.46,0.42l2.95,-1.64l2.04,-0.21l1.53,0.3l0.59,1.19l0.69,0.04l0.41,-0.64l1.81,0.58l1.95,0.16l1.04,-0.51l1.42,4.08l-2.03,4.54l-1.66,-1.77l-1.76,-3.85l-0.64,-0.12l-0.36,0.67l1.04,2.88l3.44,6.95l1.78,3.04l2.03,2.65l-0.36,0.53l0.23,2.01l2.7,2.19l-28.41,0.0l0.0,-18.96l-0.73,-2.2l0.59,-1.56l-0.32,-1.26l0.68,-0.99l3.06,-0.04l4.82,1.52Z\", \"name\": \"Egypt\"}, \"ZA\": {\"path\": \"M467.14,373.21l-0.13,-1.96l-0.68,-1.56l0.7,-0.68l-0.13,-2.33l-4.56,-8.19l0.77,-0.86l0.6,0.45l0.69,1.31l2.83,0.72l1.5,-0.26l2.24,-1.39l0.19,-9.55l1.35,2.3l-0.21,1.5l0.61,1.2l0.4,0.19l1.79,-0.27l2.6,-2.07l0.69,-1.32l0.96,-0.48l2.19,1.04l2.04,0.13l1.77,-0.65l0.85,-2.12l1.38,-0.33l1.59,-2.76l2.15,-1.89l3.41,-1.87l2.0,0.45l1.02,-0.28l0.99,0.2l1.75,5.29l-0.38,3.25l-0.81,-0.23l-1.0,0.46l-0.87,1.68l-0.05,1.16l1.97,1.84l1.47,-0.29l0.69,-1.18l1.09,0.01l-0.76,3.69l-0.58,1.09l-2.2,1.79l-3.17,4.76l-2.8,2.83l-3.57,2.88l-2.53,1.05l-1.22,0.14l-0.51,0.7l-1.18,-0.32l-1.39,0.5l-2.59,-0.52l-1.61,0.33l-1.18,-0.11l-2.55,1.1l-2.1,0.44l-1.6,1.07l-0.85,0.05l-0.93,-0.89l-0.93,-0.15l-0.97,-1.13l-0.25,0.05ZM491.45,364.19l0.62,-0.93l1.48,-0.59l1.18,-2.19l-0.07,-0.49l-1.99,-1.69l-1.66,0.56l-1.43,1.14l-1.34,1.73l0.02,0.51l1.88,2.11l1.31,-0.16Z\", \"name\": \"South Africa\"}, \"EC\": {\"path\": \"M231.86,285.53l0.29,1.59l-0.69,1.45l-2.61,2.51l-3.13,1.11l-1.53,2.18l-0.49,1.68l-1.0,0.73l-1.02,-1.11l-1.78,-0.16l0.67,-1.15l-0.24,-0.86l1.25,-2.13l-0.54,-1.09l-0.67,-0.08l-0.72,0.87l-0.87,-0.64l0.35,-0.69l-0.36,-1.96l0.81,-0.51l0.45,-1.51l0.92,-1.57l-0.07,-0.97l2.65,-1.33l2.75,1.35l0.77,1.05l2.12,0.35l0.76,-0.32l1.96,1.21Z\", \"name\": \"Ecuador\"}, \"AL\": {\"path\": \"M470.32,171.8l0.74,0.03l0.92,0.89l-0.17,1.95l0.36,1.28l1.01,0.82l-1.82,2.83l-0.19,-0.61l-1.25,-0.89l-0.18,-1.2l0.53,-2.82l-0.54,-1.47l0.6,-0.83Z\", \"name\": \"Albania\"}, \"AO\": {\"path\": \"M461.55,300.03l1.26,3.15l1.94,2.36l2.47,-0.53l1.25,0.32l0.44,-0.18l0.93,-1.92l1.31,-0.08l0.41,-0.44l0.47,-0.0l-0.1,0.41l0.39,0.49l2.65,-0.02l0.03,1.19l0.48,1.01l-0.34,1.52l0.18,1.55l0.83,1.04l-0.13,2.85l0.54,0.39l3.96,-0.41l-0.1,1.79l0.39,1.05l-0.24,1.43l-4.7,-0.03l-0.4,0.39l-0.12,8.13l2.92,3.49l-3.83,0.88l-5.89,-0.36l-1.88,-1.24l-10.47,0.22l-1.3,-1.01l-1.85,-0.16l-2.4,0.77l-0.15,-1.06l0.33,-2.16l1.0,-3.45l1.35,-3.2l2.24,-2.8l0.33,-2.06l-0.13,-1.53l-0.8,-1.08l-1.21,-2.87l0.87,-1.62l-1.27,-4.12l-1.17,-1.53l2.47,-0.63l7.03,0.03ZM451.71,298.87l-0.47,-1.25l1.25,-1.11l0.32,0.3l-0.99,1.03l-0.12,1.03Z\", \"name\": \"Angola\"}, \"KZ\": {\"path\": \"M552.8,172.89l0.46,-1.27l-0.48,-1.05l-2.96,-1.19l-1.06,-2.58l-1.37,-0.87l-0.03,-0.3l1.95,0.23l0.45,-0.38l0.08,-1.96l1.75,-0.41l2.1,0.45l0.48,-0.33l0.45,-3.04l-0.45,-2.09l-0.41,-0.31l-2.42,0.15l-2.36,-0.73l-2.87,1.37l-2.17,0.61l-0.85,-0.34l0.13,-1.61l-1.6,-2.12l-2.02,-0.08l-1.78,-1.82l1.29,-2.18l-0.57,-0.95l1.62,-2.91l2.21,1.63l0.63,-0.27l0.29,-2.22l4.92,-3.43l3.71,-0.08l8.4,3.6l2.92,-1.36l3.77,-0.06l3.11,1.66l0.51,-0.11l0.6,-0.81l3.31,0.13l0.39,-0.25l0.63,-1.57l-0.17,-0.5l-3.5,-1.98l1.87,-1.27l-0.13,-1.03l1.98,-0.72l0.18,-0.62l-1.59,-2.06l0.81,-0.82l9.23,-1.18l1.33,-0.88l6.18,-1.26l2.26,-1.42l4.08,0.68l0.73,3.33l0.51,0.3l2.48,-0.8l2.79,1.02l-0.17,1.56l0.43,0.44l2.55,-0.24l4.89,-2.53l0.03,0.32l3.15,2.61l5.56,8.47l0.65,0.02l1.12,-1.46l3.15,1.74l3.76,-0.78l1.15,0.49l1.14,1.8l1.84,0.76l0.99,1.29l3.35,-0.25l1.02,1.52l-1.6,1.81l-1.93,0.28l-0.34,0.38l-0.11,3.05l-1.13,1.16l-4.75,-1.0l-0.46,0.27l-1.76,5.47l-1.1,0.59l-4.91,1.23l-0.27,0.54l2.1,4.97l-1.37,0.63l-0.23,0.41l0.13,1.13l-0.88,-0.25l-1.42,-1.13l-7.89,-0.4l-0.92,0.31l-3.73,-1.22l-1.42,0.63l-0.53,1.66l-3.72,-0.94l-1.85,0.43l-0.76,1.4l-4.65,2.62l-1.13,2.08l-0.44,0.01l-0.92,-1.4l-2.87,-0.09l-0.45,-2.14l-0.38,-0.32l-0.8,-0.01l0.0,-2.96l-3.0,-2.22l-7.31,0.58l-2.35,-2.68l-6.71,-3.69l-6.45,1.83l-0.29,0.39l0.1,10.85l-0.7,0.08l-1.62,-2.17l-1.83,-0.96l-3.11,0.59l-0.64,0.51Z\", \"name\": \"Kazakhstan\"}, \"ET\": {\"path\": \"M516.04,247.79l1.1,0.84l1.63,-0.45l0.68,0.47l1.63,0.03l2.01,0.94l1.73,1.66l1.64,2.07l-1.52,2.04l0.16,1.72l0.39,0.38l2.05,0.0l-0.36,1.03l2.86,3.58l8.32,3.08l1.31,0.02l-6.32,6.75l-3.1,0.11l-2.36,1.77l-1.47,0.04l-0.86,0.79l-1.38,-0.0l-1.32,-0.81l-2.29,1.05l-0.76,0.98l-3.29,-0.41l-3.07,-2.07l-1.8,-0.07l-0.62,-0.6l0.0,-1.24l-0.28,-0.38l-1.15,-0.37l-1.4,-2.59l-1.19,-0.68l-0.47,-1.0l-1.27,-1.23l-1.16,-0.22l0.43,-0.72l1.45,-0.28l0.41,-0.95l-0.03,-2.21l0.68,-2.44l1.05,-0.63l1.43,-3.06l1.57,-1.37l1.02,-2.51l0.35,-1.88l2.52,0.46l0.44,-0.24l0.58,-1.43Z\", \"name\": \"Ethiopia\"}, \"ZW\": {\"path\": \"M498.91,341.09l-1.11,-0.22l-0.92,0.28l-2.09,-0.44l-1.5,-1.11l-1.89,-0.43l-0.62,-1.4l-0.01,-0.84l-0.3,-0.38l-0.97,-0.25l-2.71,-2.74l-1.92,-3.32l3.83,0.45l3.73,-3.82l1.08,-0.44l0.26,-0.77l1.25,-0.9l1.41,-0.26l0.5,0.89l1.99,-0.05l1.72,1.17l1.11,0.17l1.05,0.66l0.01,2.99l-0.59,3.76l0.38,0.86l-0.23,1.23l-0.39,0.35l-0.63,1.81l-2.43,2.75Z\", \"name\": \"Zimbabwe\"}, \"ES\": {\"path\": \"M416.0,169.21l1.07,1.17l4.61,1.38l1.06,-0.57l2.6,1.26l2.71,-0.3l0.09,1.12l-2.14,1.8l-3.11,0.61l-0.31,0.31l-0.2,0.89l-1.54,1.69l-0.97,2.4l0.84,1.74l-1.32,1.27l-0.48,1.68l-1.88,0.65l-1.66,2.07l-5.36,-0.01l-1.79,1.08l-0.89,0.98l-0.88,-0.17l-0.79,-0.82l-0.68,-1.59l-2.37,-0.63l-0.11,-0.5l1.21,-1.82l-0.77,-1.13l0.61,-1.68l-0.76,-1.62l0.87,-0.49l0.09,-1.25l0.42,-0.6l0.03,-2.11l0.99,-0.69l0.13,-0.5l-1.03,-1.73l-1.46,-0.11l-0.61,0.38l-1.06,0.0l-0.52,-1.23l-0.53,-0.21l-1.32,0.67l-0.01,-1.49l-0.75,-0.96l3.03,-1.88l2.99,0.53l3.32,-0.02l2.63,0.51l6.01,-0.06Z\", \"name\": \"Spain\"}, \"ER\": {\"path\": \"M520.38,246.23l3.42,2.43l3.5,3.77l0.84,0.54l-0.95,-0.01l-3.51,-3.89l-2.33,-1.15l-1.73,-0.07l-0.91,-0.51l-1.26,0.51l-1.34,-1.02l-0.61,0.17l-0.66,1.61l-2.35,-0.43l-0.17,-0.67l1.29,-5.29l0.61,-0.61l1.95,-0.53l0.87,-1.01l1.17,2.41l0.68,2.33l1.49,1.43Z\", \"name\": \"Eritrea\"}, \"ME\": {\"path\": \"M468.91,172.53l-1.22,-1.02l0.47,-1.81l0.89,-0.72l2.26,1.51l-0.5,0.57l-0.75,-0.27l-1.14,1.73Z\", \"name\": \"Montenegro\"}, \"MD\": {\"path\": \"M488.41,153.73l1.4,-0.27l1.72,0.93l1.07,0.15l0.85,0.65l-0.14,0.84l0.96,0.85l1.12,2.47l-1.15,-0.07l-0.66,-0.41l-0.52,0.25l-0.09,0.86l-1.08,1.89l-0.27,-0.86l0.25,-1.34l-0.16,-1.6l-3.29,-4.34Z\", \"name\": \"Moldova\"}, \"MG\": {\"path\": \"M545.91,319.14l0.4,3.03l0.62,1.21l-0.21,1.02l-0.57,-0.8l-0.69,-0.01l-0.47,0.76l0.41,2.12l-0.18,0.87l-0.73,0.78l-0.15,2.14l-4.71,15.2l-1.06,2.88l-3.92,1.64l-3.12,-1.49l-0.6,-1.21l-0.19,-2.4l-0.86,-2.05l-0.21,-1.77l0.38,-1.62l1.21,-0.75l0.01,-0.76l1.19,-2.04l0.23,-1.66l-1.06,-2.99l-0.19,-2.21l0.81,-1.33l0.32,-1.46l4.63,-1.22l3.44,-3.0l0.85,-1.4l-0.08,-0.7l0.78,-0.04l1.38,-1.77l0.13,-1.64l0.45,-0.61l1.16,1.69l0.59,1.6Z\", \"name\": \"Madagascar\"}, \"MA\": {\"path\": \"M378.78,230.02l0.06,-0.59l0.92,-0.73l0.82,-1.37l-0.09,-1.04l0.79,-1.7l1.31,-1.58l0.96,-0.59l0.66,-1.55l0.09,-1.47l0.81,-1.48l1.72,-1.07l1.55,-2.69l1.16,-0.96l2.44,-0.39l1.94,-1.82l1.31,-0.78l2.09,-2.28l-0.51,-3.65l1.24,-3.7l1.5,-1.75l4.46,-2.57l2.37,-4.47l1.44,0.01l1.68,1.21l2.32,-0.19l3.47,0.65l0.8,1.54l0.16,1.71l0.86,2.96l0.56,0.59l-0.26,0.61l-3.05,0.44l-1.26,1.05l-1.33,0.22l-0.33,0.37l-0.09,1.78l-2.68,1.0l-1.07,1.42l-4.47,1.13l-4.04,2.01l-0.54,4.64l-1.15,0.06l-0.92,0.61l-1.96,-0.35l-2.42,0.54l-0.74,1.9l-0.86,0.4l-1.14,3.26l-3.53,3.01l-0.8,3.55l-0.96,1.1l-0.29,0.82l-4.95,0.18Z\", \"name\": \"Morocco\"}, \"UZ\": {\"path\": \"M598.64,172.75l-1.63,1.52l0.06,0.64l1.85,1.12l1.97,-0.64l2.21,1.17l-2.52,1.68l-2.59,-0.22l-0.18,-0.41l0.46,-1.23l-0.45,-0.53l-3.35,0.69l-2.1,3.51l-1.87,-0.12l-1.03,1.51l0.22,0.55l1.64,0.62l0.46,1.83l-1.19,2.49l-2.66,-0.53l0.05,-1.36l-0.26,-0.39l-3.3,-1.23l-2.56,-1.4l-4.4,-3.34l-1.34,-3.14l-1.08,-0.6l-2.58,0.13l-0.69,-0.44l-0.47,-2.52l-3.37,-1.6l-0.43,0.05l-2.07,1.72l-2.1,1.01l-0.21,0.47l0.28,1.01l-1.91,0.03l-0.09,-10.5l5.99,-1.7l6.19,3.54l2.71,2.84l7.05,-0.67l2.71,2.01l-0.17,2.81l0.39,0.42l0.9,0.02l0.44,2.14l0.38,0.32l2.94,0.09l0.95,1.42l1.28,-0.24l1.05,-2.04l4.43,-2.5Z\", \"name\": \"Uzbekistan\"}, \"MM\": {\"path\": \"M673.9,230.21l-1.97,1.57l-0.57,0.96l-1.4,0.6l-1.36,1.05l-1.99,0.36l-1.08,2.66l-0.91,0.4l-0.19,0.55l1.21,2.27l2.52,3.43l-0.79,1.91l-0.74,0.41l-0.17,0.52l0.65,1.37l1.61,1.95l0.25,2.58l0.9,2.13l-1.92,3.57l0.68,-2.25l-0.81,-1.74l0.19,-2.65l-1.05,-1.53l-1.24,-6.17l-1.12,-2.26l-0.6,-0.13l-4.34,3.02l-2.39,-0.65l0.77,-2.84l-0.52,-2.61l-1.91,-2.96l0.25,-0.75l-0.29,-0.51l-1.33,-0.3l-1.61,-1.93l-0.1,-1.3l0.82,-0.24l0.04,-1.64l1.02,-0.52l0.21,-0.45l-0.23,-0.95l0.54,-0.96l0.08,-2.22l1.46,0.45l0.47,-0.2l1.12,-2.19l0.16,-1.35l1.33,-2.16l-0.0,-1.52l2.89,-1.66l1.63,0.44l0.5,-0.44l-0.17,-1.4l0.64,-0.36l0.08,-1.04l0.77,-0.11l0.71,1.35l1.06,0.69l-0.03,3.86l-2.38,2.37l-0.3,3.15l0.46,0.43l2.28,-0.38l0.51,2.08l1.47,0.67l-0.6,1.8l0.19,0.48l2.97,1.48l1.64,-0.55l0.02,0.32Z\", \"name\": \"Myanmar\"}, \"ML\": {\"path\": \"M392.61,254.08l-0.19,-2.37l-0.99,-0.87l-0.44,-1.3l-0.09,-1.28l0.81,-0.58l0.35,-1.24l2.37,0.65l1.31,-0.47l0.86,0.15l0.66,-0.56l9.83,-0.04l0.38,-0.28l0.56,-1.8l-0.44,-0.65l-2.35,-21.95l3.27,-0.04l16.7,11.38l0.74,1.31l2.5,1.09l0.02,1.38l0.44,0.39l2.34,-0.21l0.01,5.38l-1.28,1.61l-0.26,1.49l-5.31,0.57l-1.07,0.92l-2.9,0.1l-0.86,-0.48l-1.38,0.36l-2.4,1.08l-0.6,0.87l-1.85,1.09l-0.43,0.7l-0.79,0.39l-1.44,-0.21l-0.81,0.84l-0.34,1.64l-1.91,2.02l-0.06,1.03l-0.67,1.22l0.13,1.16l-0.97,0.39l-0.23,-0.64l-0.52,-0.24l-1.35,0.4l-0.34,0.55l-2.69,-0.28l-0.37,-0.35l-0.02,-0.9l-0.65,-0.35l0.45,-0.64l-0.03,-0.53l-2.12,-2.44l-0.76,-0.01l-2.0,1.16l-0.78,-0.15l-0.8,-0.67l-1.21,0.23Z\", \"name\": \"Mali\"}, \"MN\": {\"path\": \"M676.61,146.48l3.81,1.68l5.67,-1.0l2.37,0.41l2.34,1.5l1.79,1.75l2.29,-0.03l3.12,0.52l2.47,-0.81l3.41,-0.59l3.53,-2.21l1.25,0.29l1.53,1.13l2.27,-0.21l-2.66,5.01l0.64,1.68l0.47,0.21l1.32,-0.38l2.38,0.48l2.02,-1.11l1.76,0.89l2.06,2.02l-0.13,0.53l-1.72,-0.29l-3.77,0.46l-1.88,0.99l-1.76,1.99l-3.71,1.17l-2.45,1.6l-3.83,-0.87l-0.41,0.17l-1.31,1.99l1.04,2.24l-1.52,0.9l-1.74,1.57l-2.79,1.02l-3.78,0.13l-4.05,1.05l-2.77,1.52l-1.16,-0.85l-2.94,0.0l-3.62,-1.79l-2.58,-0.49l-3.4,0.41l-5.12,-0.67l-2.63,0.06l-1.31,-1.6l-1.4,-3.0l-1.48,-0.33l-3.13,-1.94l-6.16,-0.93l-0.71,-1.06l0.86,-3.82l-1.93,-2.71l-3.5,-1.18l-1.95,-1.58l-0.5,-1.72l2.34,-0.52l4.75,-2.8l3.62,-1.47l2.18,0.97l2.46,0.05l1.81,1.53l2.46,0.12l3.95,0.71l2.43,-2.28l0.08,-0.48l-0.9,-1.72l2.24,-2.98l2.62,1.27l4.94,1.17l0.43,2.24Z\", \"name\": \"Mongolia\"}, \"MK\": {\"path\": \"M472.8,173.98l0.49,-0.71l3.57,-0.71l1.0,0.77l0.13,1.45l-0.65,0.53l-1.15,-0.05l-1.12,0.67l-1.39,0.22l-0.79,-0.55l-0.29,-1.03l0.19,-0.6Z\", \"name\": \"Macedonia\"}, \"MW\": {\"path\": \"M505.5,309.31l0.85,1.95l0.15,2.86l-0.69,1.65l0.71,1.8l0.06,1.28l0.49,0.64l0.07,1.06l0.4,0.55l0.8,-0.23l0.55,0.61l0.69,-0.21l0.34,0.6l0.19,2.94l-1.04,0.62l-0.54,1.25l-1.11,-1.08l-0.16,-1.56l0.51,-1.31l-0.32,-1.3l-0.99,-0.65l-0.82,0.12l-2.36,-1.64l0.63,-1.96l0.82,-1.18l-0.46,-2.01l0.9,-2.86l-0.94,-2.51l0.96,0.18l0.29,0.4Z\", \"name\": \"Malawi\"}, \"MR\": {\"path\": \"M407.36,220.66l-2.58,0.03l-0.39,0.44l2.42,22.56l0.36,0.43l-0.39,1.24l-9.75,0.04l-0.56,0.53l-0.91,-0.11l-1.27,0.45l-1.61,-0.66l-0.97,0.03l-0.36,0.29l-0.38,1.35l-0.42,0.23l-2.93,-3.4l-2.96,-1.52l-1.62,-0.03l-1.27,0.54l-1.12,-0.2l-0.65,0.4l-0.08,-0.49l0.68,-1.29l0.31,-2.43l-0.57,-3.91l0.23,-1.21l-0.69,-1.5l-1.15,-1.02l0.25,-0.39l9.58,0.02l0.4,-0.45l-0.46,-3.68l0.47,-1.04l2.12,-0.21l0.36,-0.4l-0.08,-6.4l7.81,0.13l0.41,-0.4l0.01,-3.31l7.76,5.35Z\", \"name\": \"Mauritania\"}, \"UG\": {\"path\": \"M498.55,276.32l0.7,-0.46l1.65,0.5l1.96,-0.57l1.7,0.01l1.45,-0.98l0.91,1.33l1.33,3.95l-2.57,4.03l-1.46,-0.4l-2.54,0.91l-1.37,1.61l-0.01,0.81l-2.42,-0.01l-2.26,1.01l-0.17,-1.59l0.58,-1.04l0.14,-1.94l1.37,-2.28l1.78,-1.58l-0.17,-0.65l-0.72,-0.24l0.13,-2.43Z\", \"name\": \"Uganda\"}, \"MY\": {\"path\": \"M717.47,273.46l-1.39,0.65l-2.12,-0.41l-2.88,-0.0l-0.38,0.28l-0.84,2.75l-0.99,0.96l-1.21,3.29l-1.73,0.45l-2.45,-0.68l-1.39,0.31l-1.33,1.15l-1.59,-0.14l-1.41,0.44l-1.44,-1.19l-0.18,-0.73l1.34,0.53l1.93,-0.47l0.75,-2.22l4.02,-1.03l2.75,-3.21l0.82,0.94l0.64,-0.05l0.4,-0.65l0.96,0.06l0.42,-0.36l0.24,-2.68l1.81,-1.64l1.21,-1.86l0.63,-0.01l1.07,1.05l0.34,1.28l3.44,1.35l-0.06,0.35l-1.37,0.1l-0.35,0.54l0.32,0.88ZM673.68,269.59l0.17,1.09l0.47,0.33l1.65,-0.3l0.87,-0.94l1.61,1.52l0.98,1.56l-0.12,2.81l0.41,2.29l0.95,0.9l0.88,2.44l-1.27,0.12l-5.1,-3.67l-0.34,-1.29l-1.37,-1.59l-0.33,-1.97l-0.88,-1.4l0.25,-1.68l-0.46,-1.05l1.63,0.84Z\", \"name\": \"Malaysia\"}, \"MX\": {\"path\": \"M133.12,200.41l0.2,0.47l9.63,3.33l6.96,-0.02l0.4,-0.4l0.0,-0.74l3.77,0.0l3.55,2.93l1.39,2.83l1.52,1.04l2.08,0.82l0.47,-0.14l1.46,-2.0l1.73,-0.04l1.59,0.98l2.05,3.35l1.47,1.56l1.26,3.14l2.18,1.02l2.26,0.58l-1.18,3.72l-0.42,5.04l1.79,4.89l1.62,1.89l0.61,1.52l1.2,1.42l2.55,0.66l1.37,1.1l7.54,-1.89l1.86,-1.3l1.14,-4.3l4.1,-1.21l3.57,-0.11l0.32,0.3l-0.06,0.94l-1.26,1.45l-0.67,1.71l0.38,0.7l-0.72,2.27l-0.49,-0.3l-1.0,0.08l-1.0,1.39l-0.47,-0.11l-0.53,0.47l-4.26,-0.02l-0.4,0.4l-0.0,1.06l-1.1,0.26l0.1,0.44l1.82,1.44l0.56,0.91l-3.19,0.21l-1.21,2.09l0.24,0.72l-0.2,0.44l-2.24,-2.18l-1.45,-0.93l-2.22,-0.69l-1.52,0.22l-3.07,1.16l-10.55,-3.85l-2.86,-1.96l-3.78,-0.92l-1.08,-1.19l-2.62,-1.43l-1.18,-1.54l-0.38,-0.81l0.66,-0.63l-0.18,-0.53l0.52,-0.76l0.01,-0.91l-2.0,-3.82l-2.21,-2.63l-2.53,-2.09l-1.19,-1.62l-2.2,-1.17l-0.3,-0.43l0.34,-1.48l-0.21,-0.45l-1.23,-0.6l-1.36,-1.2l-0.59,-1.78l-1.54,-0.47l-2.44,-2.55l-0.16,-0.9l-1.33,-2.03l-0.84,-1.99l-0.16,-1.33l-1.81,-1.1l-0.97,0.05l-1.31,-0.7l-0.57,0.22l-0.4,1.12l0.72,3.77l3.51,3.89l0.28,0.78l0.53,0.26l0.41,1.43l1.33,1.73l1.58,1.41l0.8,2.39l1.43,2.41l0.13,1.32l0.37,0.36l1.04,0.08l1.67,2.28l-0.85,0.76l-0.66,-1.51l-1.68,-1.54l-2.91,-1.87l0.06,-1.82l-0.54,-1.68l-2.91,-2.03l-0.55,0.09l-1.95,-1.1l-0.88,-0.94l0.68,-0.08l0.93,-1.01l0.08,-1.78l-1.93,-1.94l-1.46,-0.77l-3.75,-7.56l4.88,-0.42Z\", \"name\": \"Mexico\"}, \"VU\": {\"path\": \"M839.04,322.8l0.22,1.14l-0.44,0.03l-0.2,-1.45l0.42,0.27Z\", \"name\": \"Vanuatu\"}, \"FR\": {\"path\": \"M444.48,172.62l-0.64,1.78l-0.58,-0.31l-0.49,-1.72l0.4,-0.89l1.0,-0.72l0.3,1.85ZM429.64,147.1l1.78,1.58l1.46,-0.13l2.1,1.42l1.35,0.27l1.23,0.83l3.04,0.5l-1.03,1.85l-0.3,2.12l-0.41,0.32l-0.95,-0.24l-0.5,0.43l0.06,0.61l-1.81,1.92l-0.04,1.42l0.55,0.38l0.88,-0.36l0.61,0.97l-0.03,1.0l0.57,0.91l-0.75,1.09l0.65,2.39l1.27,0.57l-0.18,0.82l-2.01,1.53l-4.77,-0.8l-3.82,1.0l-0.53,1.85l-2.49,0.34l-2.71,-1.31l-1.16,0.57l-4.31,-1.29l-0.72,-0.86l1.19,-1.78l0.39,-6.45l-2.58,-3.3l-1.9,-1.66l-3.72,-1.23l-0.19,-1.72l2.81,-0.61l4.12,0.81l0.47,-0.48l-0.6,-2.77l1.94,0.95l5.83,-2.54l0.92,-2.74l1.6,-0.49l0.24,0.78l1.36,0.33l1.05,1.19ZM289.01,278.39l-0.81,0.8l-0.78,0.12l-0.5,-0.66l-0.56,-0.1l-0.91,0.6l-0.46,-0.22l1.09,-2.96l-0.96,-1.77l-0.17,-1.49l1.07,-1.77l2.32,0.75l2.51,2.01l0.3,0.74l-2.14,3.96Z\", \"name\": \"France\"}, \"FI\": {\"path\": \"M492.17,76.39l-0.23,3.5l3.52,2.63l-2.08,2.88l-0.02,0.44l2.8,4.56l-1.59,3.31l2.16,3.24l-0.94,2.39l0.14,0.47l3.44,2.51l-0.77,1.62l-7.52,6.95l-4.5,0.31l-4.38,1.37l-3.8,0.74l-1.44,-1.96l-2.17,-1.11l0.5,-3.66l-1.16,-3.33l1.09,-2.08l2.21,-2.42l5.67,-4.32l1.64,-0.83l0.21,-0.42l-0.46,-2.02l-3.38,-1.89l-0.75,-1.43l-0.22,-6.74l-6.79,-4.8l0.8,-0.62l2.54,2.12l3.46,-0.12l3.0,0.96l2.51,-2.11l1.17,-3.08l3.55,-1.38l2.76,1.53l-0.95,2.79Z\", \"name\": \"Finland\"}, \"FJ\": {\"path\": \"M871.53,326.34l-2.8,1.05l-0.08,-0.23l2.97,-1.21l-0.1,0.39ZM867.58,329.25l0.43,0.37l-0.27,0.88l-1.24,0.28l-1.04,-0.24l-0.14,-0.66l0.63,-0.58l0.92,0.26l0.7,-0.31Z\", \"name\": \"Fiji\"}, \"FK\": {\"path\": \"M274.36,425.85l1.44,1.08l-0.47,0.73l-3.0,0.89l-0.96,-1.0l-0.52,-0.05l-1.83,1.29l-0.73,-0.88l2.46,-1.64l1.93,0.76l1.67,-1.19Z\", \"name\": \"Falkland Is.\"}, \"NI\": {\"path\": \"M202.33,252.67l0.81,-0.18l1.03,-1.02l-0.04,-0.88l0.68,-0.0l0.63,-0.54l0.97,0.22l1.53,-1.26l0.58,-0.99l1.17,0.34l2.41,-0.94l0.13,1.32l-0.81,1.94l0.1,2.74l-0.36,0.37l-0.11,1.75l-0.47,0.81l0.18,1.14l-1.73,-0.85l-0.71,0.27l-1.47,-0.6l-0.52,0.16l-4.01,-3.81Z\", \"name\": \"Nicaragua\"}, \"NL\": {\"path\": \"M430.31,143.39l0.6,-0.5l2.13,-4.8l3.2,-1.33l1.74,0.08l0.33,0.8l-0.59,2.92l-0.5,0.99l-1.26,0.0l-0.4,0.45l0.33,2.7l-2.2,-1.78l-2.62,0.58l-0.75,-0.11Z\", \"name\": \"Netherlands\"}, \"NO\": {\"path\": \"M491.44,67.41l6.8,2.89l-2.29,0.86l-0.15,0.65l2.33,2.38l-4.98,1.79l0.84,-2.45l-0.18,-0.48l-3.55,-1.8l-3.89,1.52l-1.42,3.38l-2.12,1.72l-2.64,-1.0l-3.11,0.21l-2.66,-2.22l-0.5,-0.01l-1.41,1.1l-1.44,0.17l-0.35,0.35l-0.32,2.47l-4.32,-0.64l-0.44,0.29l-0.58,2.11l-2.45,0.2l-4.15,7.68l-3.88,5.76l0.78,1.62l-0.64,1.16l-2.24,-0.06l-0.38,0.24l-1.66,3.89l0.15,5.17l1.57,2.04l-0.78,4.16l-2.02,2.48l-0.85,1.63l-1.3,-1.75l-0.58,-0.07l-4.87,4.19l-3.1,0.79l-3.16,-1.7l-0.85,-3.77l-0.77,-8.55l2.14,-2.31l6.55,-3.27l5.02,-4.17l10.63,-13.84l10.98,-8.7l5.35,-1.91l4.34,0.12l3.69,-3.64l4.49,0.19l4.37,-0.89ZM484.55,20.04l4.26,1.75l-3.1,2.55l-7.1,0.65l-7.08,-0.9l-0.37,-1.31l-0.37,-0.29l-3.44,-0.1l-2.08,-2.0l6.87,-1.44l3.9,1.31l2.39,-1.64l6.13,1.4ZM481.69,33.93l-4.45,1.74l-3.54,-0.99l1.12,-0.9l0.05,-0.58l-1.06,-1.22l4.22,-0.89l1.09,1.97l2.57,0.87ZM466.44,24.04l7.43,3.77l-5.41,1.86l-1.58,4.08l-2.26,1.2l-1.12,4.11l-2.61,0.18l-4.79,-2.86l1.84,-1.54l-0.1,-0.68l-3.69,-1.53l-4.77,-4.51l-1.73,-3.89l6.11,-1.82l1.54,1.92l3.57,-0.08l1.2,-1.96l3.32,-0.18l3.05,1.92Z\", \"name\": \"Norway\"}, \"NA\": {\"path\": \"M474.26,330.66l-0.97,0.04l-0.38,0.4l-0.07,8.9l-2.09,0.08l-0.39,0.4l-0.0,17.42l-1.98,1.23l-1.17,0.17l-2.44,-0.66l-0.48,-1.13l-0.99,-0.74l-0.54,0.05l-0.9,1.01l-1.53,-1.68l-0.93,-1.88l-1.99,-8.56l-0.06,-3.12l-0.33,-1.52l-2.3,-3.34l-1.91,-4.83l-1.96,-2.43l-0.12,-1.57l2.33,-0.79l1.43,0.07l1.81,1.13l10.23,-0.25l1.84,1.23l5.87,0.35ZM474.66,330.64l6.51,-1.6l1.9,0.39l-1.69,0.4l-1.31,0.83l-1.12,-0.94l-4.29,0.92Z\", \"name\": \"Namibia\"}, \"NC\": {\"path\": \"M838.78,341.24l-0.33,0.22l-2.9,-1.75l-3.26,-3.37l1.65,0.83l4.85,4.07Z\", \"name\": \"New Caledonia\"}, \"NE\": {\"path\": \"M454.75,226.53l1.33,1.37l0.48,0.07l1.27,-0.7l0.53,3.52l0.94,0.83l0.17,0.92l0.81,0.69l-0.44,0.95l-0.96,5.26l-0.13,3.22l-3.04,2.31l-1.22,3.57l1.02,1.24l-0.0,1.46l0.39,0.4l1.13,0.04l-0.9,1.25l-1.47,-2.42l-0.86,-0.29l-2.09,1.37l-1.74,-0.67l-1.45,-0.17l-0.85,0.35l-1.36,-0.07l-1.64,1.09l-1.06,0.05l-2.94,-1.28l-1.44,0.59l-1.01,-0.03l-0.97,-0.94l-2.7,-0.98l-2.69,0.3l-0.87,0.64l-0.47,1.6l-0.75,1.16l-0.12,1.53l-1.57,-1.1l-1.31,0.24l0.03,-0.81l-0.32,-0.41l-2.59,-0.52l-0.15,-1.16l-1.35,-1.6l-0.29,-1.0l0.13,-0.84l1.29,-0.08l1.08,-0.92l3.31,-0.22l2.22,-0.41l0.32,-0.34l0.2,-1.47l1.39,-1.88l-0.01,-5.66l3.36,-1.12l7.24,-5.12l8.42,-4.92l3.69,1.06Z\", \"name\": \"Niger\"}, \"NG\": {\"path\": \"M456.32,253.89l0.64,0.65l-0.28,1.04l-2.11,2.01l-2.03,5.18l-1.37,1.16l-1.15,3.18l-1.33,0.66l-1.46,-0.97l-1.21,0.16l-1.38,1.36l-0.91,0.24l-1.79,4.06l-2.33,0.81l-1.11,-0.07l-0.86,0.5l-1.71,-0.05l-1.19,-1.39l-0.89,-1.89l-1.77,-1.66l-3.95,-0.08l0.07,-5.21l0.42,-1.43l1.95,-2.3l-0.14,-0.91l0.43,-1.18l-0.53,-1.41l0.25,-2.92l0.72,-1.07l0.32,-1.34l0.46,-0.39l2.47,-0.28l2.34,0.89l1.15,1.02l1.28,0.04l1.22,-0.58l3.03,1.27l1.49,-0.14l1.36,-1.0l1.33,0.07l0.82,-0.35l3.45,0.8l1.82,-1.32l1.84,2.67l0.66,0.16Z\", \"name\": \"Nigeria\"}, \"NZ\": {\"path\": \"M857.8,379.65l1.86,3.12l0.44,0.18l0.3,-0.38l0.03,-1.23l0.38,0.27l0.57,2.31l2.02,0.94l1.81,0.27l1.57,-1.06l0.7,0.18l-1.15,3.59l-1.98,0.11l-0.74,1.2l0.2,1.11l-2.42,3.98l-1.49,0.92l-1.04,-0.85l1.21,-2.05l-0.81,-2.01l-2.63,-1.25l0.04,-0.57l1.82,-1.19l0.43,-2.34l-0.16,-2.03l-0.95,-1.82l-0.06,-0.72l-3.11,-3.64l-0.79,-1.52l1.56,1.45l1.76,0.66l0.65,2.34ZM853.83,393.59l0.57,1.24l0.59,0.16l1.42,-0.97l0.46,0.79l0.0,1.03l-2.47,3.48l-1.26,1.2l-0.06,0.5l0.55,0.87l-1.41,0.07l-2.33,1.38l-2.03,5.02l-3.02,2.16l-2.06,-0.06l-1.71,-1.04l-2.47,-0.2l-0.27,-0.73l1.22,-2.1l3.05,-2.94l1.62,-0.59l4.02,-2.82l1.57,-1.67l1.07,-2.16l0.88,-0.7l0.48,-1.75l1.24,-0.97l0.35,0.79Z\", \"name\": \"New Zealand\"}, \"NP\": {\"path\": \"M641.14,213.62l0.01,3.19l-1.74,0.04l-4.8,-0.86l-1.58,-1.39l-3.37,-0.34l-7.65,-3.7l0.8,-2.09l2.33,-1.7l1.77,0.75l2.49,1.76l1.38,0.41l0.99,1.35l1.9,0.52l1.99,1.17l5.49,0.9Z\", \"name\": \"Nepal\"}, \"CI\": {\"path\": \"M407.4,259.27l0.86,0.42l0.56,0.9l1.13,0.53l1.19,-0.61l0.97,-0.08l1.42,0.54l0.6,3.24l-1.03,2.08l-0.65,2.84l1.06,2.33l-0.06,0.53l-2.54,-0.47l-1.66,0.03l-3.06,0.46l-4.11,1.6l0.32,-3.06l-1.18,-1.31l-1.32,-0.66l0.42,-0.85l-0.2,-1.4l0.5,-0.67l0.01,-1.59l0.84,-0.32l0.26,-0.5l-1.15,-3.01l0.12,-0.5l0.51,-0.25l0.66,0.31l1.93,0.02l0.67,-0.71l0.71,-0.14l0.25,0.69l0.57,0.22l1.4,-0.61Z\", \"name\": \"C\\u00c3\\u00b4te d'Ivoire\"}, \"CH\": {\"path\": \"M444.62,156.35l-0.29,0.87l0.18,0.53l1.13,0.58l1.0,0.1l-0.1,0.65l-0.79,0.38l-1.72,-0.37l-0.45,0.23l-0.45,1.04l-0.75,0.06l-0.84,-0.4l-1.32,1.0l-0.96,0.12l-0.88,-0.55l-0.81,-1.3l-0.49,-0.16l-0.63,0.26l0.02,-0.65l1.71,-1.66l0.1,-0.56l0.93,0.08l0.58,-0.46l1.99,0.02l0.66,-0.61l2.19,0.79Z\", \"name\": \"Switzerland\"}, \"CO\": {\"path\": \"M242.07,254.93l-1.7,0.59l-0.59,1.18l-1.7,1.69l-0.38,1.93l-0.67,1.43l0.31,0.57l1.03,0.13l0.25,0.9l0.57,0.64l-0.04,2.34l1.64,1.42l3.16,-0.24l1.26,0.28l1.67,2.06l0.41,0.13l4.09,-0.39l0.45,0.22l-0.92,1.95l-0.2,1.8l0.52,1.83l0.75,1.05l-1.12,1.1l0.07,0.63l0.84,0.51l0.74,1.29l-0.39,-0.45l-0.59,-0.01l-0.71,0.74l-4.71,-0.05l-0.4,0.41l0.03,1.57l0.33,0.39l1.11,0.2l-1.68,0.4l-0.29,0.38l-0.01,1.82l1.16,1.14l0.34,1.25l-1.05,7.05l-1.04,-0.87l1.26,-1.99l-0.13,-0.56l-2.18,-1.23l-1.38,0.2l-1.14,-0.38l-1.27,0.61l-1.55,-0.26l-1.38,-2.46l-1.23,-0.75l-0.85,-1.2l-1.67,-1.19l-0.86,0.13l-2.11,-1.32l-1.01,0.31l-1.8,-0.29l-0.52,-0.91l-3.09,-1.68l0.77,-0.52l-0.1,-1.12l0.41,-0.64l1.34,-0.32l2.0,-2.88l-0.11,-0.57l-0.66,-0.43l0.39,-1.38l-0.52,-2.1l0.49,-0.83l-0.4,-2.13l-0.97,-1.35l0.17,-0.66l0.86,-0.08l0.47,-0.75l-0.46,-1.63l1.41,-0.07l1.8,-1.69l0.93,-0.24l0.3,-0.38l0.45,-2.76l1.22,-1.0l1.44,-0.04l0.45,-0.5l1.91,0.12l2.93,-1.84l1.15,-1.14l0.91,0.46l-0.25,0.45Z\", \"name\": \"Colombia\"}, \"CN\": {\"path\": \"M740.23,148.97l4.57,1.3l2.8,2.17l0.98,2.9l0.38,0.27l3.8,0.0l2.32,-1.28l3.29,-0.75l-0.96,2.09l-1.02,1.28l-0.85,3.4l-1.52,2.73l-2.76,-0.5l-2.4,1.13l-0.21,0.45l0.64,2.57l-0.32,3.2l-0.94,0.06l-0.37,0.89l-0.91,-1.01l-0.64,0.07l-0.92,1.57l-3.73,1.25l-0.26,0.48l0.26,1.06l-1.5,-0.08l-1.09,-0.86l-0.56,0.06l-1.67,2.06l-2.7,1.56l-2.03,1.88l-3.4,0.83l-1.93,1.4l-1.15,0.34l0.33,-0.7l-0.41,-0.89l1.79,-1.79l0.02,-0.54l-1.32,-1.56l-0.48,-0.1l-2.24,1.09l-2.83,2.06l-1.51,1.83l-2.28,0.13l-1.55,1.49l-0.04,0.5l1.32,1.97l2.0,0.58l0.31,1.35l1.98,0.84l3.0,-1.96l2.0,1.02l1.49,0.11l0.22,0.83l-3.37,0.86l-1.12,1.48l-2.5,1.52l-1.29,1.99l0.14,0.56l2.57,1.48l0.97,2.7l3.17,4.63l-0.03,1.66l-1.35,0.65l-0.2,0.51l0.6,1.47l1.4,0.91l-0.89,3.82l-1.43,0.38l-3.85,6.44l-2.27,3.11l-6.78,4.57l-2.73,0.29l-1.45,1.04l-0.62,-0.61l-0.55,-0.01l-1.36,1.25l-3.39,1.27l-2.61,0.4l-1.1,2.79l-0.81,0.09l-0.49,-1.42l0.5,-0.85l-0.25,-0.59l-3.36,-0.84l-1.3,0.4l-2.31,-0.62l-0.94,-0.84l0.33,-1.28l-0.3,-0.49l-2.19,-0.46l-1.13,-0.93l-0.47,-0.02l-2.06,1.36l-4.29,0.28l-2.76,1.05l-0.28,0.43l0.32,2.53l-0.59,-0.03l-0.19,-1.34l-0.55,-0.34l-1.68,0.7l-2.46,-1.23l0.62,-1.87l-0.26,-0.51l-1.37,-0.44l-0.54,-2.22l-0.45,-0.3l-2.13,0.35l0.24,-2.48l2.39,-2.4l0.03,-4.31l-1.19,-0.92l-0.78,-1.49l-0.41,-0.21l-1.41,0.19l-1.98,-0.3l0.46,-1.07l-1.17,-1.7l-0.55,-0.11l-1.63,1.05l-2.25,-0.57l-2.89,1.73l-2.25,1.98l-1.75,0.29l-1.17,-0.71l-3.31,-0.65l-1.48,0.79l-1.04,1.27l-0.12,-1.17l-0.54,-0.34l-1.44,0.54l-5.55,-0.86l-1.98,-1.16l-1.89,-0.54l-0.99,-1.35l-1.34,-0.37l-2.55,-1.79l-2.01,-0.84l-1.21,0.56l-5.57,-3.45l-0.53,-2.31l1.19,0.25l0.48,-0.37l0.08,-1.42l-0.98,-1.56l0.15,-2.44l-2.69,-3.32l-4.12,-1.23l-0.67,-2.0l-1.92,-1.48l-0.38,-0.7l-0.51,-3.01l-1.52,-0.66l-0.7,0.13l-0.48,-2.05l0.55,-0.51l-0.09,-0.82l2.03,-1.19l1.6,-0.54l2.56,0.38l0.42,-0.22l0.85,-1.7l3.0,-0.33l1.1,-1.26l4.05,-1.77l0.39,-0.91l-0.17,-1.44l1.45,-0.67l0.2,-0.52l-2.07,-4.9l4.51,-1.12l1.37,-0.73l1.89,-5.51l4.98,0.86l1.51,-1.7l0.11,-2.87l1.99,-0.38l1.83,-2.06l0.49,-0.13l0.68,2.08l2.23,1.77l3.44,1.16l1.55,2.29l-0.92,3.49l0.96,1.67l6.54,1.13l2.95,1.87l1.47,0.35l1.06,2.62l1.53,1.91l3.05,0.08l5.14,0.67l3.37,-0.41l2.36,0.43l3.65,1.8l3.06,0.04l1.45,0.88l2.87,-1.59l3.95,-1.02l3.83,-0.14l3.06,-1.14l1.77,-1.6l1.72,-1.01l0.17,-0.49l-1.1,-2.05l1.02,-1.54l4.02,0.8l2.45,-1.61l3.76,-1.19l1.96,-2.13l1.63,-0.83l3.51,-0.4l1.92,0.34l0.46,-0.3l0.17,-1.5l-2.27,-2.22l-2.11,-1.09l-2.18,1.11l-2.32,-0.47l-1.29,0.32l-0.4,-0.82l2.73,-5.16l3.02,1.06l3.53,-2.06l0.18,-1.68l2.16,-3.35l1.49,-1.35l-0.03,-1.85l-1.07,-0.85l1.54,-1.26l2.98,-0.59l3.23,-0.09l3.64,0.99l2.04,1.16l3.29,6.71l0.92,3.19ZM696.92,237.31l-1.87,1.08l-1.63,-0.64l-0.06,-1.79l1.03,-0.98l2.58,-0.69l1.16,0.05l0.3,0.54l-0.98,1.06l-0.53,1.37Z\", \"name\": \"China\"}, \"CM\": {\"path\": \"M457.92,257.49l1.05,1.91l-1.4,0.16l-1.05,-0.23l-0.45,0.22l-0.54,1.19l0.08,0.45l1.48,1.47l1.05,0.45l1.01,2.46l-1.52,2.99l-0.68,0.68l-0.13,3.69l2.38,3.84l1.09,0.8l0.24,2.48l-3.67,-1.14l-11.27,-0.13l0.23,-1.79l-0.98,-1.66l-1.19,-0.54l-0.44,-0.97l-0.6,-0.42l1.71,-4.27l0.75,-0.13l1.38,-1.36l0.65,-0.03l1.71,0.99l1.93,-1.12l1.14,-3.18l1.38,-1.17l2.0,-5.14l2.17,-2.13l0.3,-1.64l-0.86,-0.88l0.03,-0.33l0.94,1.28l0.07,3.22Z\", \"name\": \"Cameroon\"}, \"CL\": {\"path\": \"M246.5,429.18l-3.14,1.83l-0.57,3.16l-0.64,0.05l-2.68,-1.06l-2.82,-2.33l-3.04,-1.89l-0.69,-1.85l0.63,-2.14l-1.21,-2.11l-0.31,-5.37l1.01,-2.91l2.57,-2.38l-0.18,-0.68l-3.16,-0.77l2.05,-2.47l0.77,-4.65l2.32,0.9l0.54,-0.29l1.31,-6.31l-0.22,-0.44l-1.68,-0.8l-0.56,0.28l-0.7,3.36l-0.81,-0.22l1.56,-9.41l1.15,-2.24l-0.71,-2.82l-0.18,-2.84l1.01,-0.33l3.26,-9.14l1.07,-4.22l-0.56,-4.21l0.74,-2.34l-0.29,-3.27l1.46,-3.34l2.04,-16.59l-0.66,-7.76l1.03,-0.53l0.54,-0.9l0.79,1.14l0.32,1.78l1.25,1.16l-0.69,2.55l1.33,2.9l0.97,3.59l0.46,0.29l1.5,-0.3l0.11,0.23l-0.76,2.44l-2.57,1.23l-0.23,0.37l0.08,4.33l-0.46,0.77l0.56,1.21l-1.58,1.51l-1.68,2.62l-0.89,2.47l0.2,2.7l-1.48,2.73l1.12,5.09l0.64,0.61l-0.01,2.29l-1.38,2.68l0.01,2.4l-1.89,2.04l0.02,2.75l0.69,2.57l-1.43,1.13l-1.26,5.68l0.39,3.51l-0.97,0.89l0.58,3.5l1.02,1.14l-0.65,1.02l0.15,0.57l1.0,0.53l0.16,0.69l-1.03,0.85l0.26,1.75l-0.89,4.03l-1.31,2.66l0.24,1.75l-0.71,1.83l-1.99,1.7l0.3,3.67l0.88,1.19l1.58,0.01l0.01,2.21l1.04,1.95l5.98,0.63ZM248.69,430.79l0.0,7.33l0.4,0.4l3.52,0.05l-0.44,0.75l-1.94,0.98l-2.49,-0.37l-1.88,-1.06l-2.55,-0.49l-5.59,-3.71l-2.38,-2.63l4.1,2.48l3.32,1.23l0.45,-0.12l1.29,-1.57l0.83,-2.32l2.05,-1.24l1.31,0.29Z\", \"name\": \"Chile\"}, \"CA\": {\"path\": \"M280.06,145.6l-1.67,2.88l0.07,0.49l0.5,0.04l1.46,-0.98l1.0,0.42l-0.56,0.72l0.17,0.62l2.22,0.89l1.35,-0.71l1.95,0.78l-0.66,2.01l0.5,0.51l1.32,-0.42l0.98,3.17l-0.91,2.41l-0.8,0.08l-1.23,-0.45l0.47,-2.25l-0.89,-0.83l-0.48,0.06l-2.78,2.63l-0.34,-0.02l1.02,-0.85l-0.14,-0.69l-2.4,-0.77l-7.4,0.08l-0.17,-0.41l1.3,-0.94l0.02,-0.64l-0.73,-0.58l1.85,-1.74l2.57,-5.16l1.47,-1.79l1.99,-1.05l0.46,0.06l-1.53,2.45ZM68.32,74.16l4.13,0.95l4.02,2.14l2.61,0.4l2.47,-1.89l2.88,-1.31l3.85,0.48l3.71,-1.94l3.82,-1.04l1.56,1.68l0.49,0.08l1.87,-1.04l0.65,-1.98l1.24,0.35l4.16,3.94l0.54,0.01l2.75,-2.49l0.26,2.59l0.49,0.35l3.08,-0.73l1.04,-1.27l2.73,0.23l3.83,1.86l5.86,1.61l3.47,0.75l2.44,-0.26l2.73,1.78l-2.98,1.81l-0.19,0.41l0.31,0.32l4.53,0.92l6.87,-0.5l2.0,-0.69l2.49,2.39l0.53,0.02l2.72,-2.16l-0.02,-0.64l-2.16,-1.54l1.15,-1.06l4.83,-0.61l1.84,0.95l2.48,2.31l3.01,-0.23l4.55,1.92l3.85,-0.67l3.61,0.1l0.41,-0.44l-0.25,-2.36l1.79,-0.61l3.49,1.32l-0.01,3.77l0.31,0.39l0.45,-0.22l1.48,-3.16l1.74,0.1l0.41,-0.3l1.13,-4.37l-2.78,-3.11l-2.8,-1.74l0.19,-4.64l2.71,-3.07l2.98,0.67l2.41,1.95l3.19,4.8l-1.99,1.97l0.21,0.68l4.33,0.84l-0.01,4.15l0.25,0.37l0.44,-0.09l3.07,-3.15l2.54,2.39l-0.61,3.33l2.42,2.88l0.61,0.0l2.61,-3.08l1.88,-3.82l0.17,-4.58l6.72,0.94l3.13,2.04l0.13,1.82l-1.76,2.19l-0.01,0.49l1.66,2.16l-0.26,1.71l-4.68,2.8l-3.28,0.61l-2.47,-1.2l-0.55,0.23l-0.73,2.04l-2.38,3.43l-0.74,1.77l-2.74,2.57l-3.44,0.25l-2.21,1.78l-0.28,2.53l-2.82,0.55l-3.12,3.22l-2.72,4.31l-1.03,3.17l-0.14,4.31l0.33,0.41l3.44,0.57l2.24,5.95l0.45,0.23l3.4,-0.69l4.52,1.51l2.43,1.31l1.91,1.73l3.1,0.96l2.62,1.46l6.6,0.54l-0.35,2.74l0.81,3.53l1.81,3.78l3.83,3.3l0.45,0.04l2.1,-1.28l1.37,-3.69l-1.31,-5.38l-1.45,-1.58l3.57,-1.47l2.84,-2.46l1.52,-2.8l-0.25,-2.55l-1.7,-3.07l-2.85,-2.61l2.8,-3.95l-1.08,-3.37l-0.79,-5.67l1.36,-0.7l6.76,1.41l2.12,-0.96l5.12,3.36l1.05,1.61l4.08,0.26l-0.06,2.87l0.83,4.7l0.3,0.32l2.16,0.54l1.73,2.06l0.5,0.09l3.63,-2.03l2.52,-4.19l1.26,-1.32l7.6,11.72l-0.92,2.04l0.16,0.51l3.3,1.97l2.22,1.98l4.1,0.98l1.43,0.99l0.95,2.79l2.1,0.68l0.84,1.08l0.17,3.45l-3.37,2.26l-4.22,1.24l-3.06,2.63l-4.06,0.51l-5.35,-0.69l-6.39,0.2l-2.3,2.41l-3.26,1.51l-6.47,7.15l-0.06,0.48l0.44,0.19l2.13,-0.52l4.17,-4.24l5.12,-2.62l3.52,-0.3l1.69,1.21l-2.12,2.21l0.81,3.47l1.02,2.61l3.47,1.6l4.14,-0.45l2.15,-2.8l0.26,1.48l1.14,0.8l-2.56,1.69l-5.5,1.82l-2.54,1.27l-2.74,2.15l-1.4,-0.16l-0.07,-2.01l4.14,-2.44l0.18,-0.45l-0.39,-0.29l-6.63,0.45l-1.39,-1.49l-0.14,-4.43l-1.11,-0.91l-1.82,0.39l-0.66,-0.66l-0.6,0.03l-1.91,2.39l-0.82,2.52l-0.8,1.27l-1.67,0.56l-0.46,0.76l-8.31,0.07l-1.21,0.62l-2.35,1.97l-0.71,-0.14l-1.37,0.96l-1.12,-0.48l-4.74,1.26l-0.9,1.17l0.21,0.62l1.73,0.3l-1.81,0.31l-1.85,0.81l-2.11,-0.13l-2.95,1.78l-0.69,-0.09l1.39,-2.1l1.73,-1.21l0.1,-2.29l1.16,-1.99l0.49,0.53l2.03,0.42l1.2,-1.16l0.02,-0.47l-2.66,-3.51l-2.28,-0.61l-5.64,-0.71l-0.4,-0.57l-0.79,0.13l0.2,-0.41l-0.22,-0.55l-0.68,-0.26l0.19,-1.26l-0.78,-0.73l0.31,-0.64l-0.29,-0.57l-2.6,-0.44l-0.75,-1.63l-0.94,-0.66l-4.31,-0.65l-1.13,1.19l-1.48,0.59l-0.85,1.06l-2.83,-0.76l-2.09,0.39l-2.39,-0.97l-4.24,-0.7l-0.57,-0.4l-0.41,-1.63l-0.4,-0.3l-0.85,0.02l-0.39,0.4l-0.01,0.85l-69.13,-0.01l-6.51,-4.52l-4.5,-1.38l-1.26,-2.66l0.33,-1.93l-0.23,-0.43l-3.01,-1.35l-0.55,-2.77l-2.89,-2.38l-0.04,-1.45l1.39,-1.83l-0.28,-2.55l-4.16,-2.2l-4.07,-6.6l-4.02,-3.22l-1.3,-1.88l-0.5,-0.13l-2.51,1.21l-2.23,1.87l-3.85,-3.88l-2.44,-1.04l-2.22,-0.13l0.03,-37.49ZM260.37,148.65l3.04,0.76l2.26,1.2l-3.78,-0.95l-1.53,-1.01ZM249.4,3.81l6.68,0.49l5.32,0.79l4.26,1.57l-0.07,1.1l-5.85,2.53l-6.02,1.21l-2.39,1.39l-0.18,0.45l0.39,0.29l4.01,-0.02l-4.65,2.82l-4.2,1.74l-4.19,4.59l-5.03,0.92l-1.67,1.15l-7.47,0.59l-0.37,0.37l0.32,0.42l2.41,0.49l-0.81,0.47l-0.12,0.59l1.83,2.41l-2.02,1.59l-3.81,1.51l-1.32,2.16l-3.38,1.53l-0.22,0.48l0.35,1.19l0.4,0.29l3.88,-0.18l0.03,0.61l-6.33,2.95l-6.41,-1.4l-7.43,0.79l-3.72,-0.62l-4.4,-0.25l-0.23,-1.83l4.29,-1.11l0.28,-0.51l-1.1,-3.45l1.0,-0.25l6.58,2.28l0.47,-0.16l-0.05,-0.49l-3.41,-3.45l-3.58,-0.98l1.48,-1.55l4.34,-1.29l0.97,-2.19l-0.16,-0.48l-3.42,-2.13l-0.81,-2.26l6.2,0.22l2.24,0.58l3.91,-2.1l0.2,-0.43l-0.35,-0.32l-5.64,-0.67l-8.73,0.36l-4.26,-1.9l-2.12,-2.4l-2.78,-1.66l-0.41,-1.52l3.31,-1.03l2.93,-0.2l4.91,-0.99l3.7,-2.27l2.87,0.3l2.62,1.67l0.56,-0.14l1.82,-3.2l3.13,-0.94l4.44,-0.69l7.53,-0.26l1.48,0.67l7.19,-1.06l10.8,0.79ZM203.85,57.54l0.01,0.42l1.97,2.97l0.68,-0.02l2.24,-3.72l5.95,-1.86l4.01,4.64l-0.35,2.91l0.5,0.43l4.95,-1.36l2.32,-1.8l5.31,2.28l3.27,2.11l0.3,1.84l0.48,0.33l4.42,-0.99l2.64,2.87l5.97,1.77l2.06,1.72l2.11,3.71l-4.19,1.86l-0.01,0.73l5.9,2.83l3.94,0.94l3.78,3.95l3.46,0.25l-0.63,2.37l-4.11,4.47l-2.76,-1.56l-3.9,-3.94l-3.59,0.41l-0.33,0.34l-0.19,2.72l2.63,2.38l3.42,1.89l0.94,0.97l1.55,3.75l-0.7,2.29l-2.74,-0.92l-6.25,-3.15l-0.51,0.13l0.05,0.52l6.07,5.69l0.18,0.59l-6.09,-1.39l-5.31,-2.24l-2.63,-1.66l0.6,-0.77l-0.12,-0.6l-7.39,-4.01l-0.59,0.37l0.03,0.79l-6.73,0.6l-1.69,-1.1l1.36,-2.46l4.51,-0.07l5.15,-0.52l0.31,-0.6l-0.74,-1.3l0.78,-1.84l3.21,-4.05l-0.67,-2.35l-1.11,-1.6l-3.84,-2.1l-4.35,-1.28l0.91,-0.63l0.06,-0.61l-2.65,-2.75l-2.34,-0.36l-1.89,-1.46l-0.53,0.03l-1.24,1.23l-4.36,0.55l-9.04,-0.99l-9.26,-1.98l-1.6,-1.22l2.22,-1.77l0.13,-0.44l-0.38,-0.27l-3.22,-0.02l-0.72,-4.25l1.83,-4.04l2.42,-1.85l5.5,-1.1l-1.39,2.35ZM261.19,159.33l2.07,0.61l1.44,-0.04l-1.15,0.63l-2.94,-1.23l-0.4,-0.68l0.36,-0.37l0.61,1.07ZM230.83,84.39l-2.37,0.18l-0.49,-1.63l0.93,-2.09l1.94,-0.51l1.62,0.99l0.02,1.52l-1.66,1.54ZM229.43,58.25l0.11,0.65l-4.87,-0.21l-2.72,0.62l-3.1,-2.57l0.08,-1.26l0.86,-0.23l5.57,0.51l4.08,2.5ZM222.0,105.02l-0.72,1.49l-0.63,-0.19l-0.48,-0.84l0.81,-0.99l0.65,0.05l0.37,0.46ZM183.74,38.32l2.9,1.7l4.79,-0.01l1.84,1.46l-0.49,1.68l0.23,0.48l2.82,1.14l1.76,1.26l7.01,0.65l4.1,-1.1l5.03,-0.43l3.93,0.35l2.48,1.77l0.46,1.7l-1.3,1.1l-3.56,1.01l-3.23,-0.59l-7.17,0.76l-5.09,0.09l-3.99,-0.6l-6.42,-1.54l-0.79,-2.51l-0.3,-2.49l-2.64,-2.5l-5.32,-0.72l-2.52,-1.4l0.68,-1.57l4.78,0.31ZM207.38,91.35l0.4,1.56l0.56,0.26l1.06,-0.52l1.32,0.96l5.42,2.57l0.2,1.68l0.46,0.35l1.68,-0.28l1.15,0.85l-1.55,0.87l-3.61,-0.88l-1.32,-1.69l-0.57,-0.06l-2.45,2.1l-3.12,1.79l-0.7,-1.87l-0.42,-0.26l-2.16,0.24l1.39,-1.39l0.32,-3.14l0.76,-3.35l1.18,0.22ZM215.49,102.6l-2.67,1.95l-1.4,-0.07l-0.3,-0.58l1.53,-1.48l2.84,0.18ZM202.7,24.12l2.53,1.59l-2.87,1.4l-4.53,4.05l-4.25,0.38l-5.03,-0.68l-2.45,-2.04l0.03,-1.62l1.82,-1.37l0.14,-0.45l-0.38,-0.27l-4.45,0.04l-2.59,-1.76l-1.41,-2.29l1.57,-2.32l1.62,-1.66l2.44,-0.39l0.25,-0.65l-0.6,-0.74l4.86,-0.25l3.24,3.11l8.16,2.3l1.9,3.61ZM187.47,59.2l-2.76,3.49l-2.38,-0.15l-1.44,-3.84l0.04,-2.2l1.19,-1.88l2.3,-1.23l5.07,0.17l4.11,1.02l-3.24,3.72l-2.88,0.89ZM186.07,48.79l-1.08,1.53l-3.34,-0.34l-2.56,-1.1l1.03,-1.75l3.25,-1.23l1.95,1.58l0.75,1.3ZM185.71,35.32l-5.3,-0.2l-0.32,-0.71l4.31,0.07l1.3,0.84ZM180.68,32.48l-3.34,1.0l-1.79,-1.1l-0.98,-1.87l-0.15,-1.73l4.1,0.53l2.67,1.7l-0.51,1.47ZM180.9,76.31l-1.1,1.08l-3.13,-1.23l-2.12,0.43l-2.71,-1.57l1.72,-1.09l1.55,-1.72l3.81,1.9l1.98,2.2ZM169.74,54.87l2.96,0.97l4.17,-0.57l0.41,0.88l-2.14,2.11l0.09,0.64l3.55,1.92l-0.4,3.72l-3.79,1.65l-2.17,-0.35l-1.72,-1.74l-6.02,-3.5l0.03,-0.85l4.68,0.54l0.4,-0.21l-0.05,-0.45l-2.48,-2.81l2.46,-1.95ZM174.45,40.74l1.37,1.73l0.07,2.44l-1.05,3.45l-3.79,0.47l-2.32,-0.69l0.05,-2.64l-0.44,-0.41l-3.68,0.35l-0.12,-3.1l2.45,0.1l3.67,-1.73l3.41,0.29l0.37,-0.26ZM170.05,31.55l0.67,1.56l-3.33,-0.49l-4.22,-1.77l-4.35,-0.16l1.4,-0.94l-0.06,-0.7l-2.81,-1.23l-0.12,-1.39l4.39,0.68l6.62,1.98l1.81,2.47ZM134.5,58.13l-1.02,1.82l0.45,0.58l5.4,-1.39l3.33,2.29l0.49,-0.03l2.6,-2.23l1.94,1.32l2.0,4.5l0.7,0.06l1.3,-2.29l-1.63,-4.46l1.69,-0.54l2.31,0.71l2.65,1.81l2.49,7.92l8.48,4.27l-0.19,1.35l-3.79,0.33l-0.26,0.67l1.4,1.49l-0.58,1.1l-4.23,-0.64l-4.43,-1.19l-3.0,0.28l-4.66,1.47l-10.52,1.04l-1.43,-2.02l-3.42,-1.2l-2.21,0.43l-2.51,-2.86l4.84,-1.05l3.6,0.19l3.27,-0.78l0.31,-0.39l-0.31,-0.39l-4.84,-1.06l-8.79,0.27l-0.85,-1.07l5.26,-1.66l0.27,-0.45l-0.4,-0.34l-3.8,0.06l-3.81,-1.06l1.81,-3.01l1.66,-1.79l6.48,-2.81l1.97,0.71ZM158.7,56.61l-1.7,2.44l-3.2,-2.75l0.37,-0.3l3.11,-0.18l1.42,0.79ZM149.61,42.73l1.01,1.89l0.5,0.18l2.14,-0.82l2.23,0.19l0.36,2.04l-1.33,2.09l-8.28,0.76l-6.35,2.15l-3.41,0.1l-0.19,-0.96l4.9,-2.08l0.23,-0.46l-0.41,-0.31l-11.25,0.59l-2.89,-0.74l3.04,-4.44l2.14,-1.32l6.81,1.69l4.58,3.06l4.37,0.39l0.36,-0.63l-3.36,-4.6l1.85,-1.53l2.18,0.51l0.77,2.26ZM144.76,34.41l-4.36,1.44l-3.0,-1.4l1.46,-1.24l3.47,-0.52l2.96,0.71l-0.52,1.01ZM145.13,29.83l-1.9,0.66l-3.67,-0.0l2.27,-1.61l3.3,0.95ZM118.92,65.79l-6.03,2.02l-1.33,-1.9l-5.38,-2.28l2.59,-5.05l2.16,-3.14l-0.02,-0.48l-1.97,-2.41l7.64,-0.7l3.6,1.02l6.3,0.27l4.42,2.95l-2.53,0.98l-6.24,3.43l-3.1,3.28l-0.11,2.01ZM129.54,35.53l-0.28,3.37l-1.72,1.62l-2.33,0.28l-4.61,2.19l-3.86,0.76l-2.64,-0.87l3.72,-3.4l5.01,-3.34l3.72,0.07l3.0,-0.67ZM111.09,152.69l-0.67,0.24l-3.85,-1.37l-0.83,-1.17l-2.12,-1.07l-0.66,-1.02l-2.4,-0.55l-0.74,-1.71l6.02,1.45l2.0,2.55l2.52,1.39l0.73,1.27ZM87.8,134.64l0.89,0.29l1.86,-0.21l-0.65,3.34l1.69,2.33l-1.31,-1.33l-0.99,-1.62l-1.17,-0.98l-0.33,-1.82Z\", \"name\": \"Canada\"}, \"CG\": {\"path\": \"M466.72,276.48l-0.1,1.03l-1.25,2.97l-0.19,3.62l-0.46,1.78l-0.23,0.63l-1.61,1.19l-1.21,1.39l-1.09,2.43l0.04,2.09l-3.25,3.24l-0.5,-0.24l-0.5,-0.83l-1.36,-0.02l-0.98,0.89l-1.68,-0.99l-1.54,1.24l-1.52,-1.96l1.57,-1.14l0.11,-0.52l-0.77,-1.35l2.1,-0.66l0.39,-0.73l1.05,0.82l2.21,0.11l1.12,-1.37l0.37,-1.81l-0.27,-2.09l-1.13,-1.5l1.0,-2.69l-0.13,-0.45l-0.92,-0.58l-1.6,0.17l-0.51,-0.94l0.1,-0.61l2.75,0.09l3.97,1.24l0.51,-0.33l0.17,-1.28l1.24,-2.21l1.28,-1.14l2.76,0.49Z\", \"name\": \"Congo\"}, \"CF\": {\"path\": \"M461.16,278.2l-0.26,-1.19l-1.09,-0.77l-0.84,-1.17l-0.29,-1.0l-1.04,-1.15l0.08,-3.43l0.58,-0.49l1.16,-2.35l1.85,-0.17l0.61,-0.62l0.97,0.58l3.15,-0.96l2.48,-1.92l0.02,-0.96l2.81,0.02l2.36,-1.17l1.93,-2.85l1.16,-0.93l1.11,-0.3l0.27,0.86l1.34,1.47l-0.39,2.01l0.3,1.01l4.01,2.75l0.17,0.93l2.63,2.31l0.6,1.44l2.08,1.4l-3.84,-0.21l-1.94,0.88l-1.23,-0.49l-2.67,1.2l-1.29,-0.18l-0.51,0.36l-0.6,1.22l-3.35,-0.65l-1.57,-0.91l-2.42,-0.83l-1.45,0.91l-0.97,1.27l-0.26,1.56l-3.22,-0.43l-1.49,1.33l-0.94,1.62Z\", \"name\": \"Central African Rep.\"}, \"CD\": {\"path\": \"M487.01,272.38l2.34,-0.14l1.35,1.84l1.34,0.45l0.86,-0.39l1.21,0.12l1.07,-0.41l0.54,0.89l2.04,1.54l-0.14,2.72l0.7,0.54l-1.38,1.13l-1.53,2.54l-0.17,2.05l-0.59,1.08l-0.02,1.72l-0.72,0.84l-0.66,3.01l0.63,1.32l-0.44,4.26l0.64,1.47l-0.37,1.22l0.86,1.8l1.53,1.41l0.3,1.26l0.44,0.5l-4.08,0.75l-0.92,1.81l0.51,1.34l-0.74,5.43l0.17,0.38l2.45,1.46l0.54,-0.1l0.12,1.62l-1.28,-0.01l-1.85,-2.35l-1.94,-0.45l-0.48,-1.13l-0.55,-0.2l-1.41,0.74l-1.71,-0.3l-1.01,-1.18l-2.49,-0.19l-0.44,-0.77l-1.98,-0.21l-2.88,0.36l0.11,-2.41l-0.85,-1.13l-0.16,-1.36l0.32,-1.73l-0.46,-0.89l-0.04,-1.49l-0.4,-0.39l-2.53,0.02l0.1,-0.41l-0.39,-0.49l-1.28,0.01l-0.43,0.45l-1.62,0.32l-0.83,1.79l-1.09,-0.28l-2.4,0.52l-1.37,-1.91l-1.3,-3.3l-0.38,-0.27l-7.39,-0.03l-2.46,0.42l0.5,-0.45l0.37,-1.47l0.66,-0.38l0.92,0.08l0.73,-0.82l0.87,0.02l0.31,0.68l1.4,0.36l3.59,-3.63l0.01,-2.23l1.02,-2.29l2.69,-2.39l0.43,-0.99l0.49,-1.96l0.17,-3.51l1.25,-2.95l0.36,-3.14l0.86,-1.13l1.1,-0.66l3.57,1.73l3.65,0.73l0.46,-0.21l0.8,-1.46l1.24,0.19l2.61,-1.17l0.81,0.44l1.04,-0.03l0.59,-0.66l0.7,-0.16l1.81,0.25Z\", \"name\": \"Dem. Rep. Congo\"}, \"CZ\": {\"path\": \"M458.46,144.88l1.22,1.01l1.47,0.23l0.13,0.93l1.36,0.68l0.54,-0.2l0.24,-0.55l1.15,0.25l0.53,1.09l1.68,0.18l0.6,0.84l-1.04,0.73l-0.96,1.28l-1.6,0.17l-0.55,0.56l-1.04,-0.46l-1.05,0.15l-2.12,-0.96l-1.05,0.34l-1.2,1.12l-1.56,-0.87l-2.57,-2.1l-0.53,-1.88l4.7,-2.52l0.71,0.26l0.9,-0.28Z\", \"name\": \"Czech Rep.\"}, \"CY\": {\"path\": \"M504.36,193.47l0.43,0.28l-1.28,0.57l-0.92,-0.28l-0.24,-0.46l2.01,-0.13Z\", \"name\": \"Cyprus\"}, \"CR\": {\"path\": \"M211.34,258.05l0.48,0.99l1.6,1.6l-0.54,0.45l0.29,1.42l-0.25,1.19l-1.09,-0.59l-0.05,-1.25l-2.46,-1.42l-0.28,-0.77l-0.66,-0.45l-0.45,-0.0l-0.11,1.04l-1.32,-0.95l0.31,-1.3l-0.36,-0.6l0.31,-0.27l1.42,0.58l1.29,-0.14l0.56,0.56l0.74,0.17l0.55,-0.27Z\", \"name\": \"Costa Rica\"}, \"CU\": {\"path\": \"M221.21,227.25l1.27,1.02l2.19,-0.28l4.43,3.33l2.08,0.43l-0.1,0.38l0.36,0.5l1.75,0.1l1.48,0.84l-3.11,0.51l-4.15,-0.03l0.77,-0.67l-0.04,-0.64l-1.2,-0.74l-1.49,-0.16l-0.7,-0.61l-0.56,-1.4l-0.4,-0.25l-1.34,0.1l-2.2,-0.66l-0.88,-0.58l-3.18,-0.4l-0.27,-0.16l0.58,-0.74l-0.36,-0.29l-2.72,-0.05l-1.7,1.29l-0.91,0.03l-0.61,0.69l-1.01,0.22l1.11,-1.29l1.01,-0.52l3.69,-1.01l3.98,0.21l2.21,0.84Z\", \"name\": \"Cuba\"}, \"SZ\": {\"path\": \"M500.35,351.36l0.5,2.04l-0.38,0.89l-1.05,0.21l-1.23,-1.2l-0.02,-0.64l0.83,-1.57l1.34,0.27Z\", \"name\": \"Swaziland\"}, \"SY\": {\"path\": \"M511.0,199.79l0.05,-1.33l0.54,-1.36l1.28,-0.99l0.13,-0.45l-0.41,-1.11l-1.14,-0.36l-0.19,-1.74l0.52,-1.0l1.29,-1.21l0.2,-1.18l0.59,0.23l2.62,-0.76l1.36,0.52l2.06,-0.01l2.95,-1.08l3.25,-0.26l-0.67,0.94l-1.28,0.66l-0.21,0.4l0.23,2.01l-0.88,3.19l-10.15,5.73l-2.15,-0.85Z\", \"name\": \"Syria\"}, \"KG\": {\"path\": \"M621.35,172.32l-3.87,1.69l-0.96,1.18l-3.04,0.34l-1.13,1.86l-2.36,-0.35l-1.99,0.63l-2.39,1.4l0.06,0.95l-0.4,0.37l-4.52,0.43l-3.02,-0.93l-2.37,0.17l0.11,-0.79l2.32,0.42l1.13,-0.88l1.99,0.2l3.21,-2.14l-0.03,-0.69l-2.97,-1.57l-1.94,0.65l-1.22,-0.74l1.71,-1.58l-0.12,-0.67l-0.36,-0.15l0.32,-0.77l1.36,-0.35l4.02,1.02l0.49,-0.3l0.35,-1.59l1.09,-0.48l3.42,1.22l1.11,-0.31l7.64,0.39l1.16,1.0l1.23,0.39Z\", \"name\": \"Kyrgyzstan\"}, \"KE\": {\"path\": \"M506.26,284.69l1.87,-2.56l0.93,-2.15l-1.38,-4.08l-1.06,-1.6l2.82,-2.75l0.79,0.26l0.12,1.41l0.86,0.83l1.9,0.11l3.28,2.13l3.57,0.44l1.05,-1.12l1.96,-0.9l0.82,0.68l1.16,0.09l-1.78,2.45l0.03,9.12l1.3,1.94l-1.37,0.78l-0.67,1.03l-1.08,0.46l-0.34,1.67l-0.81,1.07l-0.45,1.55l-0.68,0.56l-3.2,-2.23l-0.35,-1.58l-8.86,-4.98l0.14,-1.6l-0.57,-1.04Z\", \"name\": \"Kenya\"}, \"SS\": {\"path\": \"M481.71,263.34l1.07,-0.72l1.2,-3.18l1.36,-0.26l1.61,1.99l0.87,0.34l1.1,-0.41l1.5,0.07l0.57,0.53l2.49,0.0l0.44,-0.63l1.07,-0.4l0.45,-0.84l0.59,-0.33l1.9,1.33l1.6,-0.2l2.83,-3.33l-0.32,-2.21l1.59,-0.52l-0.24,1.6l0.3,1.83l1.35,1.18l0.2,1.87l0.35,0.41l0.02,1.53l-0.23,0.47l-1.42,0.25l-0.85,1.44l0.3,0.6l1.4,0.16l1.11,1.08l0.59,1.13l1.03,0.53l1.28,2.36l-4.41,3.98l-1.74,0.01l-1.89,0.55l-1.47,-0.52l-1.15,0.57l-2.96,-2.62l-1.3,0.49l-1.06,-0.15l-0.79,0.39l-0.82,-0.22l-1.8,-2.7l-1.91,-1.1l-0.66,-1.5l-2.62,-2.32l-0.18,-0.94l-2.37,-1.6Z\", \"name\": \"S. Sudan\"}, \"SR\": {\"path\": \"M283.12,270.19l2.1,0.53l-1.08,1.95l0.2,1.72l0.93,1.49l-0.59,2.03l-0.43,0.71l-1.12,-0.42l-1.32,0.22l-0.93,-0.2l-0.46,0.26l-0.25,0.73l0.33,0.7l-0.89,-0.13l-1.39,-1.97l-0.31,-1.34l-0.97,-0.31l-0.89,-1.47l0.35,-1.61l1.45,-0.82l0.33,-1.87l2.61,0.44l0.57,-0.47l1.75,-0.16Z\", \"name\": \"Suriname\"}, \"KH\": {\"path\": \"M689.52,249.39l0.49,1.45l-0.28,2.74l-4.0,1.86l-0.16,0.6l0.68,0.95l-2.06,0.17l-2.05,0.97l-1.82,-0.32l-2.12,-3.7l-0.55,-2.85l1.4,-1.85l3.02,-0.45l2.23,0.35l2.01,0.98l0.51,-0.14l0.95,-1.48l1.74,0.74Z\", \"name\": \"Cambodia\"}, \"SV\": {\"path\": \"M195.8,250.13l1.4,-1.19l2.24,1.45l0.98,-0.27l0.44,0.2l-0.27,1.05l-1.14,-0.03l-3.64,-1.21Z\", \"name\": \"El Salvador\"}, \"SK\": {\"path\": \"M476.82,151.17l-1.14,1.9l-2.73,-0.92l-0.82,0.2l-0.74,0.8l-3.46,0.73l-0.47,0.69l-1.76,0.33l-1.88,-1.0l-0.18,-0.81l0.38,-0.75l1.87,-0.32l1.74,-1.89l0.83,0.16l0.79,-0.34l1.51,1.04l1.34,-0.63l1.25,0.3l1.65,-0.42l1.81,0.95Z\", \"name\": \"Slovakia\"}, \"KR\": {\"path\": \"M737.51,185.84l0.98,-0.1l0.87,-1.17l2.69,-0.32l0.33,-0.29l1.76,2.79l0.58,1.76l0.02,3.12l-0.8,1.32l-2.21,0.55l-1.93,1.13l-1.8,0.19l-0.2,-1.1l0.43,-2.28l-0.95,-2.56l1.43,-0.37l0.23,-0.62l-1.43,-2.06Z\", \"name\": \"Korea\"}, \"SI\": {\"path\": \"M456.18,162.07l-0.51,-1.32l0.18,-1.05l1.69,0.2l1.42,-0.71l2.09,-0.07l0.62,-0.51l0.21,0.47l-1.61,0.67l-0.44,1.34l-0.66,0.24l-0.26,0.82l-1.22,-0.49l-0.84,0.46l-0.69,-0.04Z\", \"name\": \"Slovenia\"}, \"KP\": {\"path\": \"M736.77,185.16l-0.92,-0.42l-0.88,0.62l-1.21,-0.88l0.96,-1.15l0.59,-2.59l-0.46,-0.74l-2.09,-0.77l1.64,-1.52l2.72,-1.58l1.58,-1.91l1.11,0.78l2.17,0.11l0.41,-0.5l-0.3,-1.22l3.52,-1.18l0.94,-1.4l0.98,1.08l-2.19,2.18l0.01,2.14l-1.06,0.54l-1.41,1.4l-1.7,0.52l-1.25,1.09l-0.14,1.98l0.94,0.45l1.15,1.04l-0.13,0.26l-2.6,0.29l-1.13,1.29l-1.22,0.08Z\", \"name\": \"Dem. Rep. Korea\"}, \"SO\": {\"path\": \"M525.13,288.48l-1.13,-1.57l-0.03,-8.86l2.66,-3.38l1.67,-0.13l2.13,-1.69l3.41,-0.23l7.08,-7.55l2.91,-3.69l0.08,-4.82l2.98,-0.67l1.24,-0.86l0.45,-0.0l-0.2,3.0l-1.21,3.62l-2.73,5.97l-2.13,3.65l-5.03,6.16l-8.56,6.4l-2.78,3.08l-0.8,1.56Z\", \"name\": \"Somalia\"}, \"SN\": {\"path\": \"M390.09,248.21l0.12,1.55l0.49,1.46l0.96,0.82l0.05,1.28l-1.26,-0.19l-0.75,0.33l-1.84,-0.61l-5.84,-0.13l-2.54,0.51l-0.22,-1.03l1.77,0.04l2.01,-0.91l1.03,0.48l1.09,0.04l1.29,-0.62l0.14,-0.58l-0.51,-0.74l-1.81,0.25l-1.13,-0.63l-0.79,0.04l-0.72,0.61l-2.31,0.06l-0.92,-1.77l-0.81,-0.64l0.64,-0.35l2.46,-3.74l1.04,0.19l1.38,-0.56l1.19,-0.02l2.72,1.37l3.03,3.48Z\", \"name\": \"Senegal\"}, \"SL\": {\"path\": \"M394.46,264.11l-1.73,1.98l-0.58,1.33l-2.07,-1.06l-1.22,-1.26l-0.65,-2.39l1.16,-0.96l0.67,-1.17l1.21,-0.52l1.66,0.0l1.03,1.64l0.52,2.41Z\", \"name\": \"Sierra Leone\"}, \"SB\": {\"path\": \"M826.69,311.6l-0.61,0.09l-0.2,-0.33l0.37,0.15l0.44,0.09ZM824.18,307.38l-0.26,-0.3l-0.31,-0.91l0.03,0.0l0.54,1.21ZM823.04,309.33l-1.66,-0.22l-0.2,-0.52l1.16,0.28l0.69,0.46ZM819.28,304.68l1.14,0.65l0.02,0.03l-0.81,-0.44l-0.35,-0.23Z\", \"name\": \"Solomon Is.\"}, \"SA\": {\"path\": \"M537.53,210.34l2.0,0.24l0.9,1.32l1.49,-0.06l0.87,2.08l1.29,0.76l0.51,0.99l1.56,1.03l-0.1,1.9l0.32,0.9l1.58,2.47l0.76,0.53l0.7,-0.04l1.68,4.23l7.53,1.33l0.51,-0.29l0.77,1.25l-1.55,4.87l-7.29,2.52l-7.3,1.03l-2.34,1.17l-1.88,2.74l-0.76,0.28l-0.82,-0.78l-0.91,0.12l-2.88,-0.51l-3.51,0.25l-0.86,-0.56l-0.57,0.15l-0.66,1.27l0.16,1.11l-0.43,0.32l-0.93,-1.4l-0.33,-1.16l-1.23,-0.88l-1.27,-2.06l-0.78,-2.22l-1.73,-1.79l-1.14,-0.48l-1.54,-2.31l-0.21,-3.41l-1.44,-2.93l-1.27,-1.16l-1.33,-0.57l-1.31,-3.37l-0.77,-0.67l-0.97,-1.97l-2.8,-4.03l-1.06,-0.17l0.37,-1.96l0.2,-0.72l2.74,0.3l1.08,-0.84l0.6,-0.94l1.74,-0.35l0.65,-1.03l0.71,-0.4l0.1,-0.62l-2.06,-2.28l4.39,-1.22l0.48,-0.37l2.77,0.69l3.66,1.9l7.03,5.5l4.87,0.3Z\", \"name\": \"Saudi Arabia\"}, \"SE\": {\"path\": \"M480.22,89.3l-4.03,1.17l-2.43,2.86l0.26,2.57l-8.77,6.64l-1.78,5.79l1.78,2.68l2.22,1.96l-2.07,3.77l-2.72,1.13l-0.95,6.04l-1.29,3.01l-2.74,-0.31l-0.4,0.22l-1.31,2.59l-2.34,0.13l-0.75,-3.09l-2.08,-4.03l-1.83,-4.96l1.0,-1.93l2.14,-2.7l0.83,-4.45l-1.6,-2.17l-0.15,-4.94l1.48,-3.39l2.58,-0.15l0.87,-1.59l-0.78,-1.57l3.76,-5.59l4.04,-7.48l2.17,0.01l0.39,-0.29l0.57,-2.07l4.37,0.64l0.46,-0.34l0.33,-2.56l1.1,-0.13l6.94,4.87l0.06,6.32l0.66,1.36Z\", \"name\": \"Sweden\"}, \"SD\": {\"path\": \"M505.98,259.4l-0.34,-0.77l-1.17,-0.9l-0.26,-1.61l0.29,-1.81l-0.34,-0.46l-1.16,-0.17l-0.54,0.59l-1.23,0.11l-0.28,0.65l0.53,0.65l0.17,1.22l-2.44,3.0l-0.96,0.19l-2.39,-1.4l-0.95,0.52l-0.38,0.78l-1.11,0.41l-0.29,0.5l-1.94,0.0l-0.54,-0.52l-1.81,-0.09l-0.95,0.4l-2.45,-2.35l-2.07,0.54l-0.73,1.26l-0.6,2.1l-1.25,0.58l-0.75,-0.62l0.27,-2.65l-1.48,-1.78l-0.22,-1.48l-0.92,-0.96l-0.02,-1.29l-0.57,-1.16l-0.68,-0.16l0.69,-1.29l-0.18,-1.14l0.65,-0.62l0.03,-0.55l-0.36,-0.41l1.55,-2.97l1.91,0.16l0.43,-0.4l-0.1,-10.94l2.49,-0.01l0.4,-0.4l-0.0,-4.82l29.02,0.0l0.64,2.04l-0.49,0.66l0.36,2.69l0.93,3.16l2.12,1.55l-0.89,1.04l-1.72,0.39l-0.98,0.9l-1.43,5.65l0.24,1.15l-0.38,2.06l-0.96,2.38l-1.53,1.31l-1.32,2.91l-1.22,0.86l-0.37,1.34Z\", \"name\": \"Sudan\"}, \"DO\": {\"path\": \"M241.8,239.2l0.05,-0.65l-0.46,-0.73l0.42,-0.44l0.19,-1.0l-0.09,-1.53l1.66,0.01l1.99,0.63l0.33,0.67l1.28,0.19l0.33,0.76l1.0,0.08l0.8,0.62l-0.45,0.51l-1.13,-0.47l-1.88,-0.01l-1.27,0.59l-0.75,-0.55l-1.01,0.54l-0.79,1.4l-0.23,-0.61Z\", \"name\": \"Dominican Rep.\"}, \"DJ\": {\"path\": \"M528.43,256.18l-0.45,0.66l-0.58,-0.25l-1.51,0.13l-0.18,-1.01l1.45,-1.95l0.83,0.17l0.77,-0.44l0.2,1.0l-1.2,0.51l-0.06,0.7l0.73,0.47Z\", \"name\": \"Djibouti\"}, \"DK\": {\"path\": \"M452.28,129.07l-1.19,2.24l-2.13,-1.6l-0.23,-0.95l2.98,-0.95l0.57,1.26ZM447.74,126.31l-0.26,0.57l-0.88,-0.07l-1.8,2.53l0.48,1.69l-1.09,0.36l-1.61,-0.39l-0.89,-1.69l-0.07,-3.43l0.96,-1.73l2.02,-0.2l1.09,-1.07l1.33,-0.67l-0.05,1.06l-0.73,1.41l0.3,1.0l1.2,0.64Z\", \"name\": \"Denmark\"}, \"DE\": {\"path\": \"M453.14,155.55l-0.55,-0.36l-1.2,-0.1l-1.87,0.57l-2.13,-0.13l-0.56,0.63l-0.86,-0.6l-0.96,0.09l-2.57,-0.93l-0.85,0.67l-1.47,-0.02l0.24,-1.75l1.23,-2.14l-0.28,-0.59l-3.52,-0.58l-0.92,-0.66l0.12,-1.2l-0.48,-0.88l0.27,-2.17l-0.37,-3.03l1.41,-0.22l0.63,-1.26l0.66,-3.19l-0.41,-1.18l0.26,-0.39l1.66,-0.15l0.33,0.54l0.62,0.07l1.7,-1.69l-0.54,-3.02l1.37,0.33l1.31,-0.37l0.31,1.18l2.25,0.71l-0.02,0.92l0.5,0.4l2.55,-0.65l1.34,-0.87l2.57,1.24l1.06,0.98l0.48,1.44l-0.57,0.74l-0.0,0.48l0.87,1.15l0.57,1.64l-0.14,1.29l0.82,1.7l-1.5,-0.07l-0.56,0.57l-4.47,2.15l-0.22,0.54l0.68,2.26l2.58,2.16l-0.66,1.11l-0.79,0.36l-0.23,0.43l0.32,1.87Z\", \"name\": \"Germany\"}, \"YE\": {\"path\": \"M528.27,246.72l0.26,-0.42l-0.22,-1.01l0.19,-1.5l0.92,-0.69l-0.07,-1.35l0.39,-0.75l1.01,0.47l3.34,-0.27l3.76,0.41l0.95,0.81l1.36,-0.58l1.74,-2.62l2.18,-1.09l6.86,-0.94l2.48,5.41l-1.64,0.76l-0.56,1.9l-6.23,2.16l-2.29,1.8l-1.93,0.05l-1.41,1.02l-4.24,0.74l-1.72,1.49l-3.28,0.19l-0.52,-1.18l0.02,-1.51l-1.34,-3.29Z\", \"name\": \"Yemen\"}, \"AT\": {\"path\": \"M462.89,152.8l0.04,2.25l-1.07,0.0l-0.33,0.63l0.36,0.51l-1.04,2.13l-2.02,0.07l-1.33,0.7l-5.29,-0.99l-0.47,-0.93l-0.44,-0.21l-2.47,0.55l-0.42,0.51l-3.18,-0.81l0.43,-0.91l1.12,0.78l0.6,-0.17l0.25,-0.58l1.93,0.12l1.86,-0.56l1.0,0.08l0.68,0.57l0.62,-0.15l0.26,-0.77l-0.3,-1.78l0.8,-0.44l0.68,-1.15l1.52,0.85l0.47,-0.06l1.34,-1.25l0.64,-0.17l1.81,0.92l1.28,-0.11l0.7,0.37Z\", \"name\": \"Austria\"}, \"DZ\": {\"path\": \"M441.46,188.44l-0.32,1.07l0.39,2.64l-0.54,2.16l-1.58,1.82l0.37,2.39l1.91,1.55l0.18,0.8l1.42,1.03l1.84,7.23l0.12,1.16l-0.57,5.0l0.2,1.51l-0.87,0.99l-0.02,0.51l1.41,1.86l0.14,1.2l0.89,1.48l0.5,0.16l0.98,-0.41l1.73,1.08l0.82,1.23l-8.22,4.81l-7.23,5.11l-3.43,1.13l-2.3,0.21l-0.28,-1.59l-2.56,-1.09l-0.67,-1.25l-26.12,-17.86l0.01,-3.47l3.77,-1.88l2.44,-0.41l2.12,-0.75l1.08,-1.42l2.81,-1.05l0.35,-2.08l1.33,-0.29l1.04,-0.94l3.47,-0.69l0.46,-1.08l-0.1,-0.45l-0.58,-0.52l-0.82,-2.81l-0.19,-1.83l-0.78,-1.49l2.03,-1.31l2.63,-0.48l1.7,-1.22l2.31,-0.84l8.24,-0.73l1.49,0.38l2.28,-1.1l2.46,-0.02l0.92,0.6l1.35,-0.05Z\", \"name\": \"Algeria\"}, \"US\": {\"path\": \"M892.72,99.2l1.31,0.53l1.41,-0.37l1.89,0.98l1.89,0.42l-1.32,0.58l-2.9,-1.53l-2.08,0.22l-0.26,-0.15l0.07,-0.67ZM183.22,150.47l0.37,1.47l1.12,0.85l4.23,0.7l2.39,0.98l2.17,-0.38l1.85,0.5l-1.55,0.65l-3.49,2.61l-0.16,0.77l0.5,0.39l2.33,-0.61l1.77,1.02l5.15,-2.4l-0.31,0.65l0.25,0.56l1.36,0.38l1.71,1.16l4.7,-0.88l0.67,0.85l1.31,0.21l0.58,0.58l-1.34,0.17l-2.18,-0.32l-3.6,0.89l-2.71,3.25l0.35,0.9l0.59,-0.0l0.55,-0.6l-1.36,4.65l0.29,3.09l0.67,1.58l0.61,0.45l1.77,-0.44l1.6,-1.96l0.14,-2.21l-0.82,-1.96l0.11,-1.13l1.19,-2.37l0.44,-0.33l0.48,0.75l0.4,-0.29l0.4,-1.37l0.6,-0.47l0.24,-0.8l1.69,0.49l1.65,1.08l-0.03,2.37l-1.27,1.13l-0.0,1.13l0.87,0.36l1.66,-1.29l0.5,0.17l0.5,2.6l-2.49,3.75l0.17,0.61l1.54,0.62l1.48,0.17l1.92,-0.44l4.72,-2.15l2.16,-1.8l-0.05,-1.24l0.75,-0.22l3.92,0.36l2.12,-1.05l0.21,-0.4l-0.28,-1.48l3.27,-2.4l8.32,-0.02l0.56,-0.82l1.9,-0.77l0.93,-1.51l0.74,-2.37l1.58,-1.98l0.92,0.62l1.47,-0.47l0.8,0.66l-0.0,4.09l1.96,2.6l-2.34,1.31l-5.37,2.09l-1.83,2.72l0.02,1.79l0.83,1.59l0.54,0.23l-6.19,0.94l-2.2,0.89l-0.23,0.48l0.45,0.29l2.99,-0.46l-2.19,0.56l-1.13,0.0l-0.15,-0.32l-0.48,0.08l-0.76,0.82l0.22,0.67l0.32,0.06l-0.41,1.62l-1.27,1.58l-1.48,-1.07l-0.49,-0.04l-0.16,0.46l0.52,1.58l0.61,0.59l0.03,0.79l-0.95,1.38l-1.21,-1.22l-0.27,-2.27l-0.35,-0.35l-0.42,0.25l-0.48,1.27l0.33,1.41l-0.97,-0.27l-0.48,0.24l0.18,0.5l1.52,0.83l0.1,2.52l0.79,0.51l0.52,3.42l-1.42,1.88l-2.47,0.8l-1.71,1.66l-1.31,0.25l-1.27,1.03l-0.43,0.99l-2.69,1.78l-2.64,3.03l-0.45,2.12l0.45,2.08l0.85,2.38l1.09,1.9l0.04,1.2l1.16,3.06l-0.18,2.69l-0.55,1.43l-0.47,0.21l-0.89,-0.23l-0.49,-1.18l-0.87,-0.56l-2.75,-5.16l0.48,-1.68l-0.72,-1.78l-2.01,-2.38l-1.12,-0.53l-2.72,1.18l-1.47,-1.35l-1.57,-0.68l-2.99,0.31l-2.17,-0.3l-2.0,0.19l-1.15,0.46l-0.19,0.58l0.39,0.63l0.14,1.34l-0.84,-0.2l-0.84,0.46l-1.58,-0.07l-2.08,-1.44l-2.09,0.33l-1.91,-0.62l-3.73,0.84l-2.39,2.07l-2.54,1.22l-1.45,1.41l-0.61,1.38l0.34,3.71l-0.29,0.02l-3.5,-1.33l-1.25,-3.11l-1.44,-1.5l-2.24,-3.56l-1.76,-1.09l-2.27,-0.01l-1.71,2.07l-1.76,-0.69l-1.16,-0.74l-1.52,-2.98l-3.93,-3.16l-4.34,-0.0l-0.4,0.4l-0.0,0.74l-6.5,0.02l-9.02,-3.14l-0.34,-0.71l-5.7,0.49l-0.43,-1.29l-1.62,-1.61l-1.14,-0.38l-0.55,-0.88l-1.28,-0.13l-1.01,-0.77l-2.22,-0.27l-0.43,-0.3l-0.36,-1.58l-2.4,-2.83l-2.01,-3.85l-0.06,-0.9l-2.92,-3.26l-0.33,-2.29l-1.3,-1.66l0.52,-2.37l-0.09,-2.57l-0.78,-2.3l0.95,-2.82l0.61,-5.68l-0.47,-4.27l-1.46,-4.08l3.19,0.79l1.26,2.83l0.69,0.08l0.69,-1.14l-1.1,-4.79l68.76,-0.0l0.4,-0.4l0.14,-0.86ZM32.44,67.52l1.73,1.97l0.55,0.05l0.99,-0.79l3.65,0.24l-0.09,0.62l0.32,0.45l3.83,0.77l2.61,-0.43l5.19,1.4l4.84,0.43l1.89,0.57l3.42,-0.7l6.14,1.87l-0.03,38.06l0.38,0.4l2.39,0.11l2.31,0.98l3.9,3.99l0.55,0.04l2.4,-2.03l2.16,-1.04l1.2,1.71l3.95,3.14l4.09,6.63l4.2,2.29l0.06,1.83l-1.02,1.23l-1.16,-1.08l-2.04,-1.03l-0.67,-2.89l-3.28,-3.03l-1.65,-3.57l-6.35,-0.32l-2.82,-1.01l-5.26,-3.85l-6.77,-2.04l-3.53,0.3l-4.81,-1.69l-3.25,-1.63l-2.78,0.8l-0.28,0.46l0.44,2.21l-3.91,0.96l-2.26,1.27l-2.3,0.65l-0.27,-1.65l1.05,-3.42l2.49,-1.09l0.16,-0.6l-0.69,-0.96l-0.55,-0.1l-3.19,2.12l-1.78,2.56l-3.55,2.61l-0.04,0.61l1.56,1.52l-2.07,2.29l-5.11,2.57l-0.77,1.66l-3.76,1.77l-0.92,1.73l-2.69,1.38l-1.81,-0.22l-6.95,3.32l-3.97,0.91l4.85,-2.5l2.59,-1.86l3.26,-0.52l1.19,-1.4l3.42,-2.1l2.59,-2.27l0.42,-2.68l1.23,-2.1l-0.04,-0.46l-0.45,-0.11l-2.68,1.03l-0.63,-0.49l-0.53,0.03l-1.05,1.04l-1.36,-1.54l-0.66,0.08l-0.32,0.62l-0.58,-1.14l-0.56,-0.16l-2.41,1.42l-1.07,-0.0l-0.17,-1.75l0.3,-1.71l-1.61,-1.33l-3.41,0.59l-1.96,-1.63l-1.57,-0.84l-0.15,-2.21l-1.7,-1.43l0.82,-1.88l1.99,-2.12l0.88,-1.92l1.71,-0.24l2.04,0.51l1.87,-1.77l1.91,0.25l1.91,-1.23l0.17,-0.43l-0.47,-1.82l-1.07,-0.7l1.39,-1.17l0.12,-0.45l-0.39,-0.26l-1.65,0.07l-2.66,0.88l-0.75,0.78l-1.92,-0.8l-3.46,0.44l-3.44,-0.91l-1.06,-1.61l-2.65,-1.99l2.91,-1.43l5.5,-2.0l1.52,0.0l-0.26,1.62l0.41,0.46l5.29,-0.16l0.3,-0.65l-2.03,-2.59l-3.14,-1.68l-1.79,-2.12l-2.4,-1.83l-3.09,-1.24l1.04,-1.69l4.23,-0.14l3.36,-2.07l0.73,-2.27l2.39,-1.99l2.42,-0.52l4.65,-1.97l2.46,0.23l3.71,-2.35l3.5,0.89ZM37.6,123.41l-2.25,1.23l-0.95,-0.69l-0.29,-1.24l3.21,-1.63l1.42,0.21l0.67,0.7l-1.8,1.42ZM31.06,234.03l0.98,0.47l0.74,0.87l-1.77,1.07l-0.44,-1.53l0.49,-0.89ZM29.34,232.07l0.18,0.05l0.08,0.05l-0.16,0.03l-0.11,-0.14ZM25.16,230.17l0.05,-0.03l0.18,0.22l-0.13,-0.01l-0.1,-0.18ZM5.89,113.26l-1.08,0.41l-2.21,-1.12l1.53,-0.4l1.62,0.28l0.14,0.83Z\", \"name\": \"United States\"}, \"LV\": {\"path\": \"M489.16,122.85l0.96,0.66l0.22,1.65l0.68,1.76l-3.65,1.7l-2.23,-1.58l-1.29,-0.26l-0.68,-0.77l-2.42,0.34l-4.16,-0.23l-2.47,0.9l0.06,-1.98l1.13,-2.06l1.95,-1.02l2.12,2.58l2.01,-0.07l0.38,-0.33l0.44,-2.52l1.76,-0.53l3.06,1.7l2.15,0.07Z\", \"name\": \"Latvia\"}, \"UY\": {\"path\": \"M286.85,372.74l-0.92,1.5l-2.59,1.44l-1.69,-0.52l-1.42,0.26l-2.39,-1.19l-1.52,0.08l-1.27,-1.3l0.16,-1.5l0.56,-0.79l-0.02,-2.73l1.21,-4.74l1.19,-0.21l2.37,2.0l1.08,0.03l4.36,3.17l1.22,1.6l-0.96,1.5l0.61,1.4Z\", \"name\": \"Uruguay\"}, \"LB\": {\"path\": \"M510.37,198.01l-0.88,0.51l1.82,-3.54l0.62,0.08l0.22,0.61l-1.13,0.88l-0.65,1.47Z\", \"name\": \"Lebanon\"}, \"LA\": {\"path\": \"M689.54,248.53l-1.76,-0.74l-0.49,0.15l-0.94,1.46l-1.32,-0.64l0.62,-0.98l0.11,-2.17l-2.04,-2.42l-0.25,-2.65l-1.9,-2.1l-2.15,-0.31l-0.78,0.91l-1.12,0.06l-1.05,-0.4l-2.06,1.2l-0.04,-1.59l0.61,-2.68l-0.36,-0.49l-1.35,-0.1l-0.11,-1.23l-0.96,-0.88l1.96,-1.89l0.39,0.36l1.33,0.07l0.42,-0.45l-0.34,-2.66l0.7,-0.21l1.28,1.81l1.11,2.35l0.36,0.23l2.82,0.02l0.71,1.67l-1.39,0.65l-0.72,0.93l0.13,0.6l2.91,1.51l3.6,5.25l1.88,1.78l0.56,1.62l-0.35,1.96Z\", \"name\": \"Lao PDR\"}, \"TW\": {\"path\": \"M724.01,226.68l-0.74,1.48l-0.9,-1.52l-0.25,-1.74l1.38,-2.44l1.73,-1.74l0.64,0.44l-1.85,5.52Z\", \"name\": \"Taiwan\"}, \"TT\": {\"path\": \"M266.64,259.32l0.28,-1.16l1.13,-0.22l-0.06,1.2l-1.35,0.18Z\", \"name\": \"Trinidad and Tobago\"}, \"TR\": {\"path\": \"M513.21,175.47l3.64,1.17l3.05,-0.44l2.1,0.26l3.11,-1.56l2.46,-0.13l2.19,1.33l0.33,0.82l-0.22,1.33l0.25,0.44l2.28,1.13l-1.17,0.57l-0.21,0.45l0.75,3.2l-0.41,1.16l1.13,1.92l-0.55,0.22l-0.9,-0.67l-2.91,-0.37l-1.24,0.46l-4.23,0.41l-2.81,1.05l-1.91,0.01l-1.52,-0.53l-2.58,0.75l-0.66,-0.45l-0.62,0.3l-0.12,1.45l-0.89,0.84l-0.47,-0.67l0.79,-1.3l-0.41,-0.2l-1.43,0.23l-2.0,-0.63l-2.02,1.65l-3.51,0.3l-2.13,-1.53l-2.7,-0.1l-0.86,1.24l-1.38,0.27l-2.29,-1.44l-2.71,-0.01l-1.37,-2.65l-1.68,-1.52l1.07,-1.99l-0.09,-0.49l-1.27,-1.12l2.37,-2.41l3.7,-0.11l1.28,-2.24l4.49,0.37l3.21,-1.97l2.81,-0.82l3.99,-0.06l4.29,2.07ZM488.79,176.72l-1.72,1.31l-0.5,-0.88l1.37,-2.57l-0.7,-0.85l1.7,-0.63l1.8,0.34l0.46,1.17l1.76,0.78l-2.87,0.32l-1.3,1.01Z\", \"name\": \"Turkey\"}, \"LK\": {\"path\": \"M624.16,268.99l-1.82,0.48l-0.99,-1.67l-0.42,-3.46l0.95,-3.43l1.21,0.98l2.26,4.19l-0.34,2.33l-0.85,0.58Z\", \"name\": \"Sri Lanka\"}, \"TN\": {\"path\": \"M448.1,188.24l-1.0,1.27l-0.02,1.32l0.84,0.88l-0.28,2.09l-1.53,1.32l-0.12,0.42l0.48,1.54l1.42,0.32l0.53,1.11l0.9,0.52l-0.11,1.67l-3.54,2.64l-0.1,2.38l-0.58,0.3l-0.96,-4.45l-1.54,-1.25l-0.16,-0.78l-1.92,-1.56l-0.18,-1.76l1.51,-1.62l0.59,-2.34l-0.38,-2.78l0.42,-1.21l2.45,-1.05l1.29,0.26l-0.06,1.11l0.58,0.38l1.47,-0.73Z\", \"name\": \"Tunisia\"}, \"TL\": {\"path\": \"M734.55,307.93l-0.1,-0.97l4.5,-0.86l-2.82,1.28l-1.59,0.55Z\", \"name\": \"Timor-Leste\"}, \"TM\": {\"path\": \"M553.03,173.76l-0.04,0.34l-0.09,-0.22l0.13,-0.12ZM555.87,172.66l0.45,-0.1l1.48,0.74l2.06,2.43l4.07,-0.18l0.38,-0.51l-0.32,-1.19l1.92,-0.94l1.91,-1.59l2.94,1.39l0.43,2.47l1.19,0.67l2.58,-0.13l0.62,0.4l1.32,3.12l4.54,3.44l2.67,1.45l3.06,1.14l-0.04,1.05l-1.33,-0.75l-0.59,0.19l-0.32,0.84l-2.2,0.81l-0.46,2.13l-1.21,0.74l-1.91,0.42l-0.73,1.33l-1.56,0.31l-2.22,-0.94l-0.2,-2.17l-0.38,-0.36l-1.73,-0.09l-2.76,-2.46l-2.14,-0.4l-2.84,-1.48l-1.78,-0.27l-1.24,0.53l-1.57,-0.08l-2.0,1.69l-1.7,0.43l-0.36,-1.58l0.36,-2.98l-0.22,-0.4l-1.65,-0.84l0.54,-1.69l-0.34,-0.52l-1.22,-0.13l0.36,-1.64l2.22,0.59l2.2,-0.95l0.12,-0.65l-1.77,-1.74l-0.66,-1.57Z\", \"name\": \"Turkmenistan\"}, \"TJ\": {\"path\": \"M597.75,178.82l-2.54,-0.44l-0.47,0.34l-0.24,1.7l0.43,0.45l2.64,-0.22l3.18,0.95l4.39,-0.41l0.56,2.37l0.52,0.29l0.67,-0.24l1.11,0.49l0.21,2.13l-3.76,-0.21l-1.8,1.32l-1.76,0.74l-0.61,-0.58l0.21,-2.23l-0.64,-0.49l-0.07,-0.93l-1.36,-0.66l-0.45,0.07l-1.08,1.01l-0.55,1.48l-1.31,-0.05l-0.95,1.16l-0.9,-0.35l-1.86,0.74l1.26,-2.83l-0.54,-2.17l-1.67,-0.82l0.33,-0.66l2.18,-0.04l1.19,-1.63l0.76,-1.79l2.43,-0.5l-0.26,1.0l0.73,1.05Z\", \"name\": \"Tajikistan\"}, \"LS\": {\"path\": \"M491.06,363.48l-0.49,0.15l-1.49,-1.67l1.1,-1.43l2.19,-1.44l1.51,1.27l-0.98,1.82l-1.23,0.38l-0.62,0.93Z\", \"name\": \"Lesotho\"}, \"TH\": {\"path\": \"M670.27,255.86l-1.41,3.87l0.15,2.0l0.38,0.36l1.38,0.07l0.9,2.04l0.55,2.34l1.4,1.44l1.61,0.38l0.96,0.97l-0.5,0.64l-1.1,0.2l-0.34,-1.18l-2.04,-1.1l-0.63,0.23l-0.63,-0.62l-0.48,-1.3l-2.56,-2.63l-0.73,0.41l0.95,-3.89l2.16,-4.22ZM670.67,254.77l-0.92,-2.18l-0.26,-2.61l-2.14,-3.06l0.71,-0.49l0.89,-2.59l-3.61,-5.45l0.87,-0.51l1.05,-2.58l1.74,-0.18l2.6,-1.59l0.76,0.56l0.13,1.39l0.37,0.36l1.23,0.09l-0.51,2.28l0.05,2.42l0.6,0.34l2.43,-1.42l0.77,0.39l1.47,-0.07l0.71,-0.88l1.48,0.14l1.71,1.88l0.25,2.65l1.92,2.11l-0.1,1.89l-0.61,0.86l-2.22,-0.33l-3.5,0.64l-1.6,2.12l0.36,2.58l-1.51,-0.79l-1.84,-0.01l0.28,-1.52l-0.4,-0.47l-2.21,0.01l-0.4,0.37l-0.19,2.74l-0.34,0.93Z\", \"name\": \"Thailand\"}, \"TF\": {\"path\": \"M596.68,420.38l-3.2,0.18l-0.05,-1.26l0.39,-1.41l1.3,0.78l2.08,0.35l-0.52,1.36Z\", \"name\": \"Fr. S. Antarctic Lands\"}, \"TG\": {\"path\": \"M422.7,257.63l-0.09,1.23l1.53,1.52l0.08,1.09l0.5,0.65l-0.11,5.62l0.49,1.47l-1.31,0.35l-1.02,-2.13l-0.18,-1.12l0.53,-2.19l-0.63,-1.16l-0.22,-3.68l-1.01,-1.4l0.07,-0.28l1.37,0.03Z\", \"name\": \"Togo\"}, \"TD\": {\"path\": \"M480.25,235.49l0.12,9.57l-2.1,0.05l-1.14,1.89l-0.69,1.63l0.34,0.73l-0.66,0.91l0.24,0.89l-0.86,1.95l0.45,0.5l0.6,-0.1l0.34,0.64l0.03,1.38l0.9,1.04l-1.45,0.43l-1.27,1.03l-1.83,2.76l-2.16,1.07l-2.31,-0.15l-0.86,0.25l-0.26,0.49l0.17,0.61l-2.11,1.68l-2.85,0.87l-1.09,-0.57l-0.73,0.66l-1.12,0.1l-1.1,-3.12l-1.25,-0.64l-1.22,-1.22l0.29,-0.64l3.01,0.04l0.35,-0.6l-1.3,-2.2l-0.08,-3.31l-0.97,-1.66l0.22,-1.04l-0.38,-0.48l-1.22,-0.04l0.0,-1.25l-0.98,-1.07l0.96,-3.01l3.25,-2.65l0.13,-3.33l0.95,-5.18l0.52,-1.07l-0.1,-0.48l-0.91,-0.78l-0.2,-0.96l-0.8,-0.58l-0.55,-3.65l2.1,-1.2l19.57,9.83Z\", \"name\": \"Chad\"}, \"LY\": {\"path\": \"M483.48,203.15l-0.75,1.1l0.29,1.39l-0.6,1.83l0.73,2.14l0.0,24.12l-2.48,0.01l-0.41,0.85l-19.41,-9.76l-4.41,2.28l-1.37,-1.33l-3.82,-1.1l-1.14,-1.65l-1.98,-1.23l-1.22,0.32l-0.66,-1.11l-0.17,-1.26l-1.28,-1.69l0.87,-1.19l-0.07,-4.34l0.43,-2.27l-0.86,-3.45l1.13,-0.76l0.22,-1.16l-0.2,-1.03l3.48,-2.61l0.29,-1.94l2.45,0.8l1.18,-0.21l1.98,0.44l3.15,1.18l1.37,2.54l5.72,1.67l2.64,1.35l1.61,-0.72l1.29,-1.34l-0.44,-2.34l0.66,-1.13l1.67,-1.21l1.57,-0.35l3.14,0.53l1.08,1.28l3.99,0.78l0.36,0.54Z\", \"name\": \"Libya\"}, \"AE\": {\"path\": \"M550.76,223.97l1.88,-0.4l3.84,0.02l4.78,-4.75l0.19,0.36l0.26,1.58l-0.81,0.01l-0.39,0.35l-0.08,2.04l-0.81,0.63l-0.01,0.96l-0.66,0.99l-0.39,1.41l-7.08,-1.25l-0.7,-1.96Z\", \"name\": \"United Arab Emirates\"}, \"VE\": {\"path\": \"M240.68,256.69l0.53,0.75l-0.02,1.06l-1.07,1.78l0.95,2.0l0.42,0.22l1.4,-0.44l0.56,-1.83l-0.77,-1.17l-0.1,-1.47l2.82,-0.93l0.26,-0.49l-0.28,-0.96l0.3,-0.28l0.66,1.31l1.96,0.26l1.4,1.22l0.08,0.68l0.39,0.35l4.81,-0.22l1.49,1.11l1.92,0.31l1.67,-0.84l0.22,-0.6l3.44,-0.14l-0.17,0.55l0.86,1.19l2.19,0.35l1.67,1.1l0.37,1.86l0.41,0.32l1.55,0.17l-1.66,1.35l-0.22,0.92l0.65,0.97l-1.67,0.54l-0.3,0.4l0.04,0.99l-0.56,0.57l-0.01,0.55l1.85,2.27l-0.66,0.69l-4.47,1.29l-0.72,0.54l-3.69,-0.9l-0.71,0.27l-0.02,0.7l0.91,0.53l-0.08,1.54l0.35,1.58l0.35,0.31l1.66,0.17l-1.3,0.52l-0.48,1.13l-2.68,0.91l-0.6,0.77l-1.57,0.13l-1.17,-1.13l-0.8,-2.52l-1.25,-1.26l1.02,-1.23l-1.29,-2.95l0.18,-1.62l1.0,-2.21l-0.2,-0.49l-1.14,-0.46l-4.02,0.36l-1.82,-2.1l-1.57,-0.33l-2.99,0.22l-1.06,-0.97l0.25,-1.23l-0.2,-1.01l-0.59,-0.69l-0.29,-1.06l-1.08,-0.39l0.78,-2.79l1.9,-2.11Z\", \"name\": \"Venezuela\"}, \"AF\": {\"path\": \"M600.7,188.88l-1.57,1.3l-0.1,0.48l0.8,2.31l-1.09,1.04l-0.03,1.27l-0.48,0.71l-2.16,-0.08l-0.37,0.59l0.78,1.48l-1.38,0.69l-1.06,1.69l0.06,1.7l-0.65,0.52l-0.91,-0.21l-1.91,0.36l-0.48,0.77l-1.88,0.13l-1.4,1.56l-0.18,2.32l-2.91,1.02l-1.65,-0.23l-0.71,0.55l-1.41,-0.3l-2.41,0.39l-3.52,-1.17l1.96,-2.35l-0.21,-1.78l-0.3,-0.34l-1.63,-0.4l-0.19,-1.58l-0.75,-2.03l0.95,-1.36l-0.19,-0.6l-0.73,-0.28l1.47,-4.8l2.14,0.9l2.12,-0.36l0.74,-1.34l1.77,-0.39l1.54,-0.92l0.63,-2.31l1.87,-0.5l0.49,-0.81l0.94,0.56l2.13,0.11l2.55,0.92l1.95,-0.83l0.65,0.43l0.56,-0.13l0.69,-1.12l1.57,-0.08l0.72,-1.66l0.79,-0.74l0.8,0.39l-0.17,0.56l0.71,0.58l-0.08,2.39l1.11,0.95ZM601.37,188.71l1.73,-0.71l1.43,-1.18l4.03,0.35l-2.23,0.74l-4.95,0.8Z\", \"name\": \"Afghanistan\"}, \"IQ\": {\"path\": \"M530.82,187.47l0.79,0.66l1.26,-0.28l1.46,3.08l1.63,0.94l0.14,1.23l-1.22,1.05l-0.53,2.52l1.73,2.67l3.12,1.62l1.15,1.88l-0.38,1.85l0.39,0.48l0.41,-0.0l0.02,1.07l0.76,0.94l-2.47,-0.1l-1.71,2.44l-4.31,-0.2l-7.02,-5.48l-3.73,-1.94l-2.88,-0.73l-0.85,-2.87l5.45,-3.02l0.95,-3.43l-0.19,-1.96l1.27,-0.7l1.22,-1.7l0.87,-0.36l2.69,0.34Z\", \"name\": \"Iraq\"}, \"IS\": {\"path\": \"M384.14,88.06l-0.37,2.61l2.54,2.51l-2.9,2.75l-9.19,3.4l-9.25,-1.66l1.7,-1.22l-0.1,-0.7l-4.05,-1.47l2.96,-0.53l0.33,-0.43l-0.11,-1.2l-0.33,-0.36l-4.67,-0.85l1.28,-2.04l3.45,-0.56l3.77,2.72l0.44,0.02l3.64,-2.16l3.3,1.08l3.98,-2.16l3.58,0.26Z\", \"name\": \"Iceland\"}, \"IR\": {\"path\": \"M533.43,187.16l-1.27,-2.15l0.42,-0.98l-0.71,-3.04l1.03,-0.5l0.33,0.83l1.26,1.35l2.05,0.51l1.11,-0.16l2.89,-2.11l0.62,-0.14l0.39,0.46l-0.72,1.2l0.06,0.49l1.56,1.53l0.65,0.04l0.67,1.81l2.56,0.83l1.87,1.48l3.69,0.49l3.91,-0.76l0.47,-0.73l2.17,-0.6l1.66,-1.54l1.51,0.08l1.18,-0.53l1.59,0.24l2.83,1.48l1.88,0.3l2.77,2.47l1.77,0.18l0.18,1.99l-1.68,5.49l0.24,0.5l0.61,0.23l-0.82,1.48l0.8,2.18l0.19,1.71l0.3,0.34l1.63,0.4l0.15,1.32l-2.15,2.35l-0.01,0.53l2.21,3.03l2.34,1.24l0.06,2.14l1.24,0.72l0.11,0.69l-3.31,1.27l-1.08,3.03l-9.68,-1.68l-0.99,-3.05l-1.43,-0.73l-2.17,0.46l-2.47,1.26l-2.83,-0.82l-2.46,-2.02l-2.41,-0.8l-3.42,-6.06l-0.48,-0.2l-1.18,0.39l-1.44,-0.82l-0.5,0.08l-0.65,0.74l-0.97,-1.01l-0.02,-1.31l-0.71,-0.39l0.26,-1.81l-1.29,-2.11l-3.13,-1.63l-1.58,-2.43l0.5,-1.9l1.31,-1.26l-0.19,-1.66l-1.74,-1.1l-1.57,-3.3Z\", \"name\": \"Iran\"}, \"AM\": {\"path\": \"M536.99,182.33l-0.28,0.03l-1.23,-2.13l-0.93,0.01l-0.62,-0.66l-0.69,-0.07l-0.96,-0.81l-1.56,-0.62l0.19,-1.12l-0.26,-0.79l2.72,-0.36l1.09,1.01l-0.17,0.92l1.02,0.78l-0.47,0.62l0.08,0.56l2.04,1.23l0.04,1.4Z\", \"name\": \"Armenia\"}, \"IT\": {\"path\": \"M451.59,158.63l3.48,0.94l-0.21,1.17l0.3,0.83l-1.49,-0.24l-2.04,1.1l-0.21,0.39l0.13,1.45l-0.25,1.12l0.82,1.57l2.39,1.63l1.31,2.54l2.79,2.43l2.05,0.08l0.21,0.23l-0.39,0.33l0.09,0.67l4.05,1.97l2.17,1.76l-0.16,0.36l-1.17,-1.08l-2.18,-0.49l-0.44,0.2l-1.05,1.91l0.14,0.54l1.57,0.95l-0.19,0.98l-1.06,0.33l-1.25,2.34l-0.37,0.08l0.0,-0.33l1.0,-2.45l-1.73,-3.17l-1.12,-0.51l-0.88,-1.33l-1.51,-0.51l-1.27,-1.25l-1.75,-0.18l-4.12,-3.21l-1.62,-1.65l-1.03,-3.19l-3.53,-1.36l-1.3,0.51l-1.69,1.41l0.16,-0.72l-0.28,-0.47l-1.14,-0.33l-0.53,-1.96l0.72,-0.78l0.04,-0.48l-0.65,-1.17l0.8,0.39l1.4,-0.23l1.11,-0.84l0.52,0.35l1.19,-0.1l0.75,-1.2l1.53,0.33l1.36,-0.56l0.35,-1.14l1.08,0.32l0.68,-0.64l1.98,-0.44l0.42,0.82ZM459.19,184.75l-0.65,1.65l0.32,1.05l-0.31,0.89l-1.5,-0.85l-4.5,-1.67l0.19,-0.82l2.67,0.23l3.78,-0.48ZM443.93,176.05l1.18,1.66l-0.3,3.32l-1.06,-0.01l-0.77,0.73l-0.53,-0.44l-0.1,-3.37l-0.39,-1.22l1.04,0.01l0.92,-0.68Z\", \"name\": \"Italy\"}, \"VN\": {\"path\": \"M690.56,230.25l-2.7,1.82l-2.09,2.46l-0.63,1.95l4.31,6.45l2.32,1.65l1.43,1.94l1.11,4.59l-0.32,4.24l-1.93,1.54l-2.84,1.61l-2.11,2.15l-2.73,2.06l-0.59,-1.05l0.63,-1.53l-0.13,-0.47l-1.34,-1.04l1.51,-0.71l2.55,-0.18l0.3,-0.63l-0.82,-1.14l4.0,-2.07l0.31,-3.05l-0.57,-1.77l0.42,-2.66l-0.73,-1.97l-1.86,-1.76l-3.63,-5.29l-2.72,-1.46l0.36,-0.47l1.5,-0.64l0.21,-0.52l-0.97,-2.27l-0.37,-0.24l-2.83,-0.02l-2.24,-3.9l0.83,-0.4l4.39,-0.29l2.06,-1.31l1.15,0.89l1.88,0.4l-0.17,1.51l1.35,1.16l1.67,0.45Z\", \"name\": \"Vietnam\"}, \"AR\": {\"path\": \"M249.29,428.93l-2.33,-0.52l-5.83,-0.43l-0.89,-1.66l0.05,-2.37l-0.45,-0.4l-1.43,0.18l-0.67,-0.91l-0.2,-3.13l1.88,-1.47l0.79,-2.04l-0.25,-1.7l1.3,-2.68l0.91,-4.15l-0.22,-1.69l0.85,-0.45l0.2,-0.44l-0.27,-1.16l-0.98,-0.68l0.59,-0.92l-0.05,-0.5l-1.04,-1.07l-0.52,-3.1l0.97,-0.86l-0.42,-3.58l1.2,-5.43l1.38,-0.98l0.16,-0.43l-0.75,-2.79l-0.01,-2.43l1.78,-1.75l0.06,-2.57l1.43,-2.85l0.01,-2.58l-0.69,-0.74l-1.09,-4.52l1.47,-2.7l-0.18,-2.79l0.85,-2.35l1.59,-2.46l1.73,-1.64l0.05,-0.52l-0.6,-0.84l0.44,-0.85l-0.07,-4.19l2.7,-1.44l0.86,-2.75l-0.21,-0.71l1.76,-2.01l2.9,0.57l1.38,1.78l0.68,-0.08l0.87,-1.87l2.39,0.09l4.95,4.77l2.17,0.49l3.0,1.92l2.47,1.0l0.25,0.82l-2.37,3.93l0.23,0.59l5.39,1.16l2.12,-0.44l2.45,-2.16l0.5,-2.38l0.76,-0.31l0.98,1.2l-0.04,1.8l-3.67,2.51l-2.85,2.66l-3.43,3.88l-1.3,5.07l0.01,2.72l-0.54,0.73l-0.36,3.28l3.14,2.64l-0.16,2.11l1.4,1.11l-0.1,1.09l-2.29,3.52l-3.55,1.49l-4.92,0.6l-2.71,-0.29l-0.43,0.51l0.5,1.65l-0.49,2.1l0.38,1.42l-1.19,0.83l-2.36,0.38l-2.3,-1.04l-1.38,0.83l0.41,3.64l1.69,0.91l1.4,-0.71l0.36,0.76l-2.04,0.86l-2.01,1.89l-0.97,4.63l-2.34,0.1l-2.09,1.78l-0.61,2.75l2.46,2.31l2.17,0.63l-0.7,2.32l-2.83,1.73l-1.73,3.86l-2.17,1.22l-1.16,1.67l0.75,3.76l1.04,1.28ZM256.71,438.88l-2.0,0.15l-1.4,-1.22l-3.82,-0.1l-0.0,-5.83l1.6,3.05l3.26,2.07l3.08,0.78l-0.71,1.1Z\", \"name\": \"Argentina\"}, \"AU\": {\"path\": \"M705.8,353.26l0.26,0.04l0.17,-0.47l-0.48,-1.42l0.92,1.11l0.45,0.15l0.27,-0.39l-0.1,-1.56l-1.98,-3.63l1.09,-3.31l-0.24,-1.57l0.34,-0.62l0.38,1.06l0.43,-0.19l0.99,-1.7l1.91,-0.83l1.29,-1.15l1.81,-0.91l0.96,-0.17l0.92,0.26l1.92,-0.95l1.47,-0.28l1.03,-0.8l1.43,0.04l2.78,-0.84l1.36,-1.15l0.71,-1.45l1.41,-1.26l0.3,-2.58l1.27,-1.59l0.78,1.65l0.54,0.19l1.07,-0.51l0.15,-0.6l-0.73,-1.0l0.45,-0.71l0.78,0.39l0.58,-0.3l0.28,-1.82l1.87,-2.14l1.12,-0.39l0.28,-0.58l0.62,0.17l0.53,-0.73l1.87,-0.57l1.65,1.05l1.35,1.48l3.39,0.38l0.43,-0.54l-0.46,-1.23l1.05,-1.79l1.04,-0.61l0.14,-0.55l-0.25,-0.41l0.88,-1.17l1.31,-0.77l1.3,0.27l2.1,-0.48l0.31,-0.4l-0.05,-1.3l-0.92,-0.77l1.48,0.56l1.41,1.07l2.11,0.65l0.81,-0.2l1.4,0.7l1.69,-0.66l0.8,0.19l0.64,-0.33l0.71,0.77l-1.33,1.94l-0.71,0.07l-0.35,0.51l0.24,0.86l-1.52,2.35l0.12,1.05l2.15,1.65l1.97,0.85l3.04,2.36l1.97,0.65l0.55,0.88l2.72,0.85l1.84,-1.1l2.07,-5.97l-0.42,-3.59l0.3,-1.73l0.47,-0.87l-0.31,-0.68l1.09,-3.28l0.46,-0.47l0.4,0.71l0.16,1.51l0.65,0.52l0.16,1.04l0.85,1.21l0.12,2.38l0.9,2.0l0.57,0.18l1.3,-0.78l1.69,1.7l-0.2,1.08l0.53,2.2l0.39,1.3l0.68,0.48l0.6,1.95l-0.19,1.48l0.81,1.76l6.01,3.69l-0.11,0.76l1.38,1.58l0.95,2.77l0.58,0.22l0.72,-0.41l0.8,0.9l0.61,0.01l0.46,2.41l4.81,4.71l0.66,2.02l-0.07,3.31l1.14,2.2l-0.13,2.24l-1.1,3.68l0.03,1.64l-0.47,1.89l-1.05,2.4l-1.9,1.47l-1.72,3.51l-2.38,6.09l-0.24,2.82l-1.14,0.8l-2.85,0.15l-2.31,1.19l-2.51,2.25l-3.09,-1.57l0.3,-1.15l-0.54,-0.47l-1.5,0.63l-2.01,1.94l-7.12,-2.18l-1.48,-1.63l-1.14,-3.74l-1.45,-1.26l-1.81,-0.26l0.56,-1.18l-0.61,-2.1l-0.72,-0.1l-1.14,1.82l-0.9,0.21l0.63,-0.82l0.36,-1.55l0.92,-1.31l-0.13,-2.34l-0.7,-0.22l-2.0,2.34l-1.51,0.93l-0.94,2.01l-1.35,-0.81l-0.02,-1.52l-1.57,-2.04l-1.09,-0.88l0.24,-0.33l-0.14,-0.59l-3.21,-1.69l-1.83,-0.12l-2.54,-1.35l-4.58,0.28l-6.02,1.9l-2.53,-0.13l-2.62,1.41l-2.13,0.63l-1.49,2.6l-3.49,0.31l-2.29,-0.5l-3.48,0.43l-1.6,1.47l-0.81,-0.04l-2.37,1.63l-3.26,-0.1l-3.72,-2.21l0.04,-1.05l1.19,-0.46l0.49,-0.89l0.21,-2.97l-0.28,-1.64l-1.34,-2.86l-0.38,-1.47l0.05,-1.72l-0.95,-1.7l-0.18,-0.97l-1.01,-0.99l-0.29,-1.98l-1.13,-1.75ZM784.92,393.44l2.65,1.02l3.23,-0.96l1.09,0.14l0.15,3.06l-0.85,1.13l-0.17,1.63l-0.87,-0.24l-1.57,1.91l-1.68,-0.18l-1.4,-2.36l-0.37,-2.04l-1.39,-2.51l0.04,-0.8l1.15,0.18Z\", \"name\": \"Australia\"}, \"IL\": {\"path\": \"M507.76,203.05l0.4,-0.78l0.18,0.4l-0.33,1.03l0.52,0.44l0.68,-0.22l-0.86,3.6l-1.16,-3.32l0.59,-0.74l-0.03,-0.41ZM508.73,200.34l0.37,-1.02l0.64,0.0l0.52,-0.51l-0.49,1.53l-0.56,-0.24l-0.48,0.23Z\", \"name\": \"Israel\"}, \"IN\": {\"path\": \"M623.34,207.03l-1.24,1.04l-0.97,2.55l0.22,0.51l8.04,3.87l3.42,0.37l1.57,1.38l4.92,0.88l2.18,-0.04l0.38,-0.3l0.29,-1.24l-0.32,-1.64l0.14,-0.87l0.82,-0.31l0.45,2.48l2.28,1.02l1.77,-0.38l4.14,0.1l0.38,-0.36l0.18,-1.66l-0.5,-0.65l1.37,-0.29l2.25,-1.99l2.7,-1.62l1.93,0.62l1.8,-0.98l0.79,1.14l-0.68,0.91l0.26,0.63l2.42,0.36l0.09,0.47l-0.83,0.75l0.13,1.07l-1.52,-0.29l-3.24,1.86l-0.13,1.78l-1.32,2.14l-0.18,1.39l-0.93,1.82l-1.64,-0.5l-0.52,0.37l-0.09,2.63l-0.56,1.11l0.19,0.81l-0.53,0.27l-1.18,-3.73l-1.08,-0.27l-0.38,0.31l-0.24,1.0l-0.66,-0.66l0.54,-1.06l1.22,-0.34l1.15,-2.25l-0.24,-0.56l-1.57,-0.47l-4.34,-0.28l-0.18,-1.56l-0.35,-0.35l-1.11,-0.12l-1.91,-1.12l-0.56,0.17l-0.88,1.82l0.11,0.49l1.36,1.07l-1.09,0.69l-0.69,1.11l0.18,0.56l1.24,0.57l-0.32,1.54l0.85,1.94l0.36,2.01l-0.22,0.59l-4.58,0.52l-0.33,0.42l0.13,1.8l-1.17,1.36l-3.65,1.81l-2.79,3.03l-4.32,3.28l-0.18,1.27l-4.65,1.79l-0.77,2.16l0.64,5.3l-1.06,2.49l-0.01,3.94l-1.24,0.28l-1.14,1.93l0.39,0.84l-1.68,0.53l-1.04,1.83l-0.65,0.47l-2.06,-2.05l-2.1,-6.02l-2.2,-3.64l-1.05,-4.75l-2.29,-3.57l-1.76,-8.2l0.01,-3.11l-0.49,-2.53l-0.55,-0.29l-3.53,1.52l-1.53,-0.27l-2.86,-2.77l0.85,-0.67l0.08,-0.55l-0.74,-1.03l-2.67,-2.06l1.24,-1.32l5.34,0.01l0.39,-0.49l-0.5,-2.29l-1.42,-1.46l-0.27,-1.93l-1.43,-1.2l2.31,-2.37l3.05,0.06l2.62,-2.85l1.6,-2.81l2.4,-2.73l0.07,-2.04l1.97,-1.48l-0.02,-0.65l-1.93,-1.31l-0.82,-1.78l-0.8,-2.21l0.9,-0.89l3.59,0.65l2.92,-0.42l2.33,-2.19l2.31,2.85l-0.24,2.13l0.99,1.59l-0.05,0.82l-1.34,-0.28l-0.47,0.48l0.7,3.06l2.62,1.99l2.99,1.65Z\", \"name\": \"India\"}, \"TZ\": {\"path\": \"M495.56,296.42l2.8,-3.12l-0.02,-0.81l-0.64,-1.3l0.68,-0.52l0.14,-1.47l-0.76,-1.25l0.31,-0.11l2.26,0.03l-0.51,2.76l0.76,1.3l0.5,0.12l1.05,-0.53l1.19,-0.12l0.61,0.24l1.43,-0.62l0.1,-0.67l-0.71,-0.62l1.57,-1.7l8.65,4.86l0.32,1.53l3.34,2.33l-1.05,2.8l0.13,1.61l1.63,1.12l-0.6,1.76l-0.01,2.33l1.89,4.03l0.57,0.43l-1.46,1.08l-2.61,0.94l-1.43,-0.04l-1.06,0.77l-2.29,0.36l-2.87,-0.68l-0.83,0.07l-0.63,-0.75l-0.31,-2.78l-1.32,-1.35l-3.25,-0.77l-3.96,-1.58l-1.18,-2.41l-0.32,-1.75l-1.76,-1.49l0.42,-1.05l-0.44,-0.89l0.08,-0.96l-0.46,-0.58l0.06,-0.56Z\", \"name\": \"Tanzania\"}, \"AZ\": {\"path\": \"M539.29,175.73l1.33,0.32l1.94,-1.8l2.3,3.34l1.43,0.43l-1.26,0.15l-0.35,0.32l-0.8,3.14l-0.99,0.96l0.05,1.11l-1.26,-1.13l0.7,-1.18l-0.04,-0.47l-0.74,-0.86l-1.48,0.15l-2.34,1.71l-0.03,-1.27l-2.03,-1.35l0.47,-0.62l-0.08,-0.56l-1.03,-0.79l0.29,-0.43l-0.14,-0.58l-1.13,-0.86l1.89,0.68l1.69,0.06l0.37,-0.87l-0.81,-1.37l0.42,0.06l1.63,1.72ZM533.78,180.57l0.61,0.46l0.69,-0.0l0.59,1.15l-0.68,-0.15l-1.21,-1.45Z\", \"name\": \"Azerbaijan\"}, \"IE\": {\"path\": \"M405.08,135.42l0.35,2.06l-1.75,2.78l-4.22,1.88l-2.84,-0.4l1.73,-3.0l-1.18,-3.53l4.6,-3.74l0.32,1.15l-0.49,1.74l0.4,0.51l1.47,-0.04l1.6,0.6Z\", \"name\": \"Ireland\"}, \"ID\": {\"path\": \"M756.47,287.89l0.69,4.01l2.79,1.78l0.51,-0.1l2.04,-2.59l2.71,-1.43l2.05,-0.0l3.9,1.73l2.46,0.45l0.08,15.12l-1.75,-1.54l-2.54,-0.51l-0.88,0.71l-2.32,0.06l0.69,-1.33l1.45,-0.64l0.23,-0.46l-0.65,-2.74l-1.24,-2.21l-5.04,-2.29l-2.09,-0.23l-3.68,-2.27l-0.55,0.13l-0.65,1.07l-0.52,0.12l-0.55,-1.89l-1.21,-0.78l1.84,-0.62l1.72,0.05l0.39,-0.52l-0.21,-0.66l-0.38,-0.28l-3.45,-0.0l-1.13,-1.48l-2.1,-0.43l-0.52,-0.6l2.69,-0.48l1.28,-0.78l3.66,0.94l0.3,0.71ZM757.91,300.34l-0.62,0.82l-0.1,-0.8l0.59,-1.12l0.13,1.1ZM747.38,292.98l0.34,0.72l-1.22,-0.57l-4.68,-0.1l0.27,-0.62l2.78,-0.09l2.52,0.67ZM741.05,285.25l-0.67,-2.88l0.64,-2.01l0.41,0.86l1.21,0.18l0.16,0.7l-0.1,1.68l-0.84,-0.16l-0.46,0.3l-0.34,1.34ZM739.05,293.5l-0.5,0.44l-1.34,-0.36l-0.17,-0.37l1.73,-0.08l0.27,0.36ZM721.45,284.51l-0.19,1.97l2.24,2.23l0.54,0.02l1.27,-1.07l2.75,-0.5l-0.9,1.21l-2.11,0.93l-0.16,0.6l2.22,3.01l-0.3,1.07l1.36,1.74l-2.26,0.85l-0.28,-0.31l0.12,-1.19l-1.64,-1.34l0.17,-2.23l-0.56,-0.39l-1.67,0.76l-0.23,0.39l0.3,6.17l-1.1,0.25l-0.69,-0.47l0.64,-2.21l-0.39,-2.42l-0.39,-0.34l-0.8,-0.01l-0.58,-1.29l0.98,-1.6l0.35,-1.96l1.32,-3.87ZM728.59,296.27l0.38,0.49l-0.02,1.28l-0.88,0.49l-0.53,-0.47l1.04,-1.79ZM729.04,286.98l0.27,-0.05l-0.02,0.13l-0.24,-0.08ZM721.68,284.05l0.16,-0.32l1.89,-1.65l1.83,0.68l3.16,0.35l2.94,-0.1l2.39,-1.66l-1.73,2.13l-1.66,0.43l-2.41,-0.48l-4.17,0.13l-2.39,0.51ZM730.55,310.47l1.11,-1.93l2.03,-0.82l0.08,0.62l-1.45,1.67l-1.77,0.46ZM728.12,305.88l-0.1,0.38l-3.46,0.66l-2.91,-0.27l-0.0,-0.25l1.54,-0.41l1.66,0.73l1.67,-0.19l1.61,-0.65ZM722.9,310.24l-0.64,0.03l-2.26,-1.2l1.11,-0.24l1.78,1.41ZM716.26,305.77l0.88,0.51l1.28,-0.17l0.2,0.35l-4.65,0.73l0.39,-0.67l1.15,-0.02l0.75,-0.73ZM711.66,293.84l-0.38,-0.16l-2.54,1.01l-1.12,-1.44l-1.69,-0.13l-1.16,-0.75l-3.04,0.77l-1.1,-1.15l-3.31,-0.11l-0.35,-3.05l-1.35,-0.95l-1.11,-1.98l-0.33,-2.06l0.27,-2.14l0.9,-1.01l0.37,1.15l2.09,1.49l1.53,-0.48l1.82,0.08l1.38,-1.19l1.0,-0.18l2.28,0.67l2.26,-0.53l1.52,-3.64l1.01,-0.99l0.78,-2.57l4.1,0.3l-1.11,1.77l0.02,0.46l1.7,2.2l-0.23,1.39l2.07,1.71l-2.33,0.42l-0.88,1.9l0.1,2.05l-2.4,1.9l-0.06,2.45l-0.7,2.79ZM692.58,302.03l0.35,0.26l4.8,0.25l0.78,-0.97l4.17,1.09l1.13,1.68l3.69,0.45l2.13,1.04l-1.8,0.6l-2.77,-0.99l-4.8,-0.12l-5.24,-1.41l-1.84,-0.25l-1.11,0.3l-4.26,-0.97l-0.7,-1.14l-1.59,-0.13l1.18,-1.65l2.74,0.13l2.87,1.13l0.26,0.68ZM685.53,299.17l-2.22,0.04l-2.06,-2.03l-3.15,-2.01l-2.93,-3.51l-3.11,-5.33l-2.2,-2.12l-1.64,-4.06l-2.32,-1.69l-1.27,-2.07l-1.96,-1.5l-2.51,-2.65l-0.11,-0.66l4.81,0.53l2.15,2.38l3.31,2.74l2.35,2.66l2.7,0.17l1.95,1.59l1.54,2.17l1.59,0.95l-0.84,1.71l0.15,0.52l1.44,0.87l0.79,0.1l0.4,1.58l0.87,1.4l1.96,0.39l1.0,1.31l-0.6,3.01l-0.09,3.5Z\", \"name\": \"Indonesia\"}, \"UA\": {\"path\": \"M492.5,162.44l1.28,-2.49l1.82,0.19l0.66,-0.23l0.09,-0.71l-0.25,-0.75l-0.79,-0.72l-0.33,-1.21l-0.86,-0.62l-0.02,-1.19l-1.13,-0.86l-1.15,-0.19l-2.04,-1.0l-1.66,0.32l-0.66,0.47l-0.92,-0.0l-0.84,0.78l-2.48,0.7l-1.18,-0.71l-3.07,-0.36l-0.89,0.43l-0.24,-0.55l-1.11,-0.7l0.35,-0.93l1.26,-1.02l-0.54,-1.23l2.04,-2.43l1.4,-0.62l0.25,-1.19l-1.04,-2.39l0.83,-0.13l1.28,-0.84l1.8,-0.07l2.47,0.26l2.86,0.81l1.88,0.06l0.86,0.44l1.04,-0.41l0.77,0.66l2.18,-0.15l0.92,0.3l0.52,-0.34l0.15,-1.53l0.56,-0.54l2.85,-0.05l0.84,-0.72l3.04,-0.18l1.23,1.46l-0.48,0.77l0.21,1.03l0.36,0.32l1.8,0.14l0.93,2.08l3.18,1.15l1.94,-0.45l1.67,1.49l1.4,-0.03l3.35,0.96l0.02,0.54l-0.96,1.59l0.47,1.97l-0.26,0.7l-2.36,0.28l-1.29,0.89l-0.23,1.38l-1.83,0.27l-1.58,0.97l-2.41,0.21l-2.16,1.17l-0.21,0.38l0.34,2.26l1.23,0.75l2.13,-0.08l-0.14,0.31l-2.65,0.53l-3.23,1.69l-0.87,-0.39l0.42,-1.1l-0.25,-0.52l-2.21,-0.73l2.35,-1.06l0.12,-0.65l-0.93,-0.82l-3.62,-0.74l-0.13,-0.89l-0.46,-0.34l-2.61,0.59l-0.91,1.69l-1.71,2.04l-0.86,-0.4l-1.62,0.27Z\", \"name\": \"Ukraine\"}, \"QA\": {\"path\": \"M549.33,221.64l-0.76,-0.23l-0.14,-1.64l0.84,-1.29l0.47,0.52l0.04,1.34l-0.45,1.3Z\", \"name\": \"Qatar\"}, \"MZ\": {\"path\": \"M508.58,318.75l-0.34,-2.57l0.51,-2.05l3.55,0.63l2.5,-0.38l1.02,-0.76l1.49,0.01l2.74,-0.98l1.66,-1.2l0.5,9.24l0.41,1.23l-0.68,1.67l-0.93,1.71l-1.5,1.5l-5.16,2.28l-2.78,2.73l-1.02,0.53l-1.71,1.8l-0.98,0.57l-0.35,2.41l1.16,1.94l0.49,2.17l0.43,0.31l-0.06,2.06l-0.39,1.17l0.5,0.72l-0.25,0.73l-0.92,0.83l-5.12,2.39l-1.22,1.36l0.21,1.13l0.58,0.39l-0.11,0.72l-1.22,-0.01l-0.73,-2.97l0.42,-3.09l-1.78,-5.37l2.49,-2.81l0.69,-1.89l0.44,-0.43l0.28,-1.53l-0.39,-0.93l0.59,-3.65l-0.01,-3.26l-1.49,-1.16l-1.2,-0.22l-1.74,-1.17l-1.92,0.01l-0.29,-2.08l7.06,-1.96l1.28,1.09l0.89,-0.1l0.67,0.44l0.1,0.73l-0.51,1.29l0.19,1.81l1.75,1.83l0.65,-0.13l0.71,-1.65l1.17,-0.86l-0.26,-3.47l-1.05,-1.85l-1.04,-0.94Z\", \"name\": \"Mozambique\"}}, \"height\": 440.70631074413296, \"projection\": {\"type\": \"mill\", \"centralMeridian\": 11.5}, \"width\": 900.0});","/*!\r\n * Name : Just Another Parallax [Jarallax]\r\n * Version : 1.10.4\r\n * Author : nK \r\n * GitHub : https://github.com/nk-o/jarallax\r\n */\r\n/******/ (function(modules) { // webpackBootstrap\r\n/******/ \t// The module cache\r\n/******/ \tvar installedModules = {};\r\n/******/\r\n/******/ \t// The require function\r\n/******/ \tfunction __webpack_require__(moduleId) {\r\n/******/\r\n/******/ \t\t// Check if module is in cache\r\n/******/ \t\tif(installedModules[moduleId]) {\r\n/******/ \t\t\treturn installedModules[moduleId].exports;\r\n/******/ \t\t}\r\n/******/ \t\t// Create a new module (and put it into the cache)\r\n/******/ \t\tvar module = installedModules[moduleId] = {\r\n/******/ \t\t\ti: moduleId,\r\n/******/ \t\t\tl: false,\r\n/******/ \t\t\texports: {}\r\n/******/ \t\t};\r\n/******/\r\n/******/ \t\t// Execute the module function\r\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\r\n/******/\r\n/******/ \t\t// Flag the module as loaded\r\n/******/ \t\tmodule.l = true;\r\n/******/\r\n/******/ \t\t// Return the exports of the module\r\n/******/ \t\treturn module.exports;\r\n/******/ \t}\r\n/******/\r\n/******/\r\n/******/ \t// expose the modules object (__webpack_modules__)\r\n/******/ \t__webpack_require__.m = modules;\r\n/******/\r\n/******/ \t// expose the module cache\r\n/******/ \t__webpack_require__.c = installedModules;\r\n/******/\r\n/******/ \t// define getter function for harmony exports\r\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\r\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\r\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\r\n/******/ \t\t}\r\n/******/ \t};\r\n/******/\r\n/******/ \t// define __esModule on exports\r\n/******/ \t__webpack_require__.r = function(exports) {\r\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\r\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\r\n/******/ \t\t}\r\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\r\n/******/ \t};\r\n/******/\r\n/******/ \t// create a fake namespace object\r\n/******/ \t// mode & 1: value is a module id, require it\r\n/******/ \t// mode & 2: merge all properties of value into the ns\r\n/******/ \t// mode & 4: return value when already ns object\r\n/******/ \t// mode & 8|1: behave like require\r\n/******/ \t__webpack_require__.t = function(value, mode) {\r\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\r\n/******/ \t\tif(mode & 8) return value;\r\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\r\n/******/ \t\tvar ns = Object.create(null);\r\n/******/ \t\t__webpack_require__.r(ns);\r\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\r\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));\r\n/******/ \t\treturn ns;\r\n/******/ \t};\r\n/******/\r\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\r\n/******/ \t__webpack_require__.n = function(module) {\r\n/******/ \t\tvar getter = module && module.__esModule ?\r\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\r\n/******/ \t\t\tfunction getModuleExports() { return module; };\r\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\r\n/******/ \t\treturn getter;\r\n/******/ \t};\r\n/******/\r\n/******/ \t// Object.prototype.hasOwnProperty.call\r\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\r\n/******/\r\n/******/ \t// __webpack_public_path__\r\n/******/ \t__webpack_require__.p = \"\";\r\n/******/\r\n/******/\r\n/******/ \t// Load entry module and return exports\r\n/******/ \treturn __webpack_require__(__webpack_require__.s = 11);\r\n/******/ })\r\n/************************************************************************/\r\n/******/ ([\r\n/* 0 */,\r\n/* 1 */,\r\n/* 2 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nmodule.exports = function (callback) {\r\n\r\n\tif (document.readyState === 'complete' || document.readyState === 'interactive') {\r\n\t\t// Already ready or interactive, execute callback\r\n\t\tcallback.call();\r\n\t} else if (document.attachEvent) {\r\n\t\t// Old browsers\r\n\t\tdocument.attachEvent('onreadystatechange', function () {\r\n\t\t\tif (document.readyState === 'interactive') callback.call();\r\n\t\t});\r\n\t} else if (document.addEventListener) {\r\n\t\t// Modern browsers\r\n\t\tdocument.addEventListener('DOMContentLoaded', callback);\r\n\t}\r\n};\r\n\r\n/***/ }),\r\n/* 3 */,\r\n/* 4 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n/* WEBPACK VAR INJECTION */(function(global) {\r\n\r\nvar win;\r\n\r\nif (typeof window !== \"undefined\") {\r\n win = window;\r\n} else if (typeof global !== \"undefined\") {\r\n win = global;\r\n} else if (typeof self !== \"undefined\") {\r\n win = self;\r\n} else {\r\n win = {};\r\n}\r\n\r\nmodule.exports = win;\r\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(5)))\r\n\r\n/***/ }),\r\n/* 5 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\r\n\r\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = function () {\r\n\treturn this;\r\n}();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\r\n/***/ }),\r\n/* 6 */,\r\n/* 7 */,\r\n/* 8 */,\r\n/* 9 */,\r\n/* 10 */,\r\n/* 11 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\nmodule.exports = __webpack_require__(12);\r\n\r\n\r\n/***/ }),\r\n/* 12 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\r\n\r\nvar _liteReady = __webpack_require__(2);\r\n\r\nvar _liteReady2 = _interopRequireDefault(_liteReady);\r\n\r\nvar _global = __webpack_require__(4);\r\n\r\nvar _jarallax = __webpack_require__(13);\r\n\r\nvar _jarallax2 = _interopRequireDefault(_jarallax);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\n// no conflict\r\nvar oldPlugin = _global.window.jarallax;\r\n_global.window.jarallax = _jarallax2.default;\r\n_global.window.jarallax.noConflict = function () {\r\n _global.window.jarallax = oldPlugin;\r\n return this;\r\n};\r\n\r\n// jQuery support\r\nif (typeof _global.jQuery !== 'undefined') {\r\n var jQueryPlugin = function jQueryPlugin() {\r\n var args = arguments || [];\r\n Array.prototype.unshift.call(args, this);\r\n var res = _jarallax2.default.apply(_global.window, args);\r\n return (typeof res === 'undefined' ? 'undefined' : _typeof(res)) !== 'object' ? res : this;\r\n };\r\n jQueryPlugin.constructor = _jarallax2.default.constructor;\r\n\r\n // no conflict\r\n var oldJqPlugin = _global.jQuery.fn.jarallax;\r\n _global.jQuery.fn.jarallax = jQueryPlugin;\r\n _global.jQuery.fn.jarallax.noConflict = function () {\r\n _global.jQuery.fn.jarallax = oldJqPlugin;\r\n return this;\r\n };\r\n}\r\n\r\n// data-jarallax initialization\r\n(0, _liteReady2.default)(function () {\r\n (0, _jarallax2.default)(document.querySelectorAll('[data-jarallax]'));\r\n});\r\n\r\n/***/ }),\r\n/* 13 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n/* WEBPACK VAR INJECTION */(function(global) {\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\r\n\r\nvar _liteReady = __webpack_require__(2);\r\n\r\nvar _liteReady2 = _interopRequireDefault(_liteReady);\r\n\r\nvar _rafl = __webpack_require__(14);\r\n\r\nvar _rafl2 = _interopRequireDefault(_rafl);\r\n\r\nvar _global = __webpack_require__(4);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar isIE = navigator.userAgent.indexOf('MSIE ') > -1 || navigator.userAgent.indexOf('Trident/') > -1 || navigator.userAgent.indexOf('Edge/') > -1;\r\n\r\nvar supportTransform = function () {\r\n var prefixes = 'transform WebkitTransform MozTransform'.split(' ');\r\n var div = document.createElement('div');\r\n for (var i = 0; i < prefixes.length; i++) {\r\n if (div && div.style[prefixes[i]] !== undefined) {\r\n return prefixes[i];\r\n }\r\n }\r\n return false;\r\n}();\r\n\r\n// Window data\r\nvar wndW = void 0;\r\nvar wndH = void 0;\r\nvar wndY = void 0;\r\nvar forceResizeParallax = false;\r\nvar forceScrollParallax = false;\r\nfunction updateWndVars(e) {\r\n wndW = _global.window.innerWidth || document.documentElement.clientWidth;\r\n wndH = _global.window.innerHeight || document.documentElement.clientHeight;\r\n if ((typeof e === 'undefined' ? 'undefined' : _typeof(e)) === 'object' && (e.type === 'load' || e.type === 'dom-loaded')) {\r\n forceResizeParallax = true;\r\n }\r\n}\r\nupdateWndVars();\r\n_global.window.addEventListener('resize', updateWndVars);\r\n_global.window.addEventListener('orientationchange', updateWndVars);\r\n_global.window.addEventListener('load', updateWndVars);\r\n(0, _liteReady2.default)(function () {\r\n updateWndVars({\r\n type: 'dom-loaded'\r\n });\r\n});\r\n\r\n// list with all jarallax instances\r\n// need to render all in one scroll/resize event\r\nvar jarallaxList = [];\r\n\r\n// Animate if changed window size or scrolled page\r\nvar oldPageData = false;\r\nfunction updateParallax() {\r\n if (!jarallaxList.length) {\r\n return;\r\n }\r\n\r\n if (_global.window.pageYOffset !== undefined) {\r\n wndY = _global.window.pageYOffset;\r\n } else {\r\n wndY = (document.documentElement || document.body.parentNode || document.body).scrollTop;\r\n }\r\n\r\n var isResized = forceResizeParallax || !oldPageData || oldPageData.width !== wndW || oldPageData.height !== wndH;\r\n var isScrolled = forceScrollParallax || isResized || !oldPageData || oldPageData.y !== wndY;\r\n\r\n forceResizeParallax = false;\r\n forceScrollParallax = false;\r\n\r\n if (isResized || isScrolled) {\r\n jarallaxList.forEach(function (item) {\r\n if (isResized) {\r\n item.onResize();\r\n }\r\n if (isScrolled) {\r\n item.onScroll();\r\n }\r\n });\r\n\r\n oldPageData = {\r\n width: wndW,\r\n height: wndH,\r\n y: wndY\r\n };\r\n }\r\n\r\n (0, _rafl2.default)(updateParallax);\r\n}\r\n\r\n// ResizeObserver\r\nvar resizeObserver = global.ResizeObserver ? new global.ResizeObserver(function (entry) {\r\n if (entry && entry.length) {\r\n (0, _rafl2.default)(function () {\r\n entry.forEach(function (item) {\r\n if (item.target && item.target.jarallax) {\r\n if (!forceResizeParallax) {\r\n item.target.jarallax.onResize();\r\n }\r\n forceScrollParallax = true;\r\n }\r\n });\r\n });\r\n }\r\n}) : false;\r\n\r\nvar instanceID = 0;\r\n\r\n// Jarallax class\r\n\r\nvar Jarallax = function () {\r\n function Jarallax(item, userOptions) {\r\n _classCallCheck(this, Jarallax);\r\n\r\n var self = this;\r\n\r\n self.instanceID = instanceID++;\r\n\r\n self.$item = item;\r\n\r\n self.defaults = {\r\n type: 'scroll', // type of parallax: scroll, scale, opacity, scale-opacity, scroll-opacity\r\n speed: 0.5, // supported value from -1 to 2\r\n imgSrc: null,\r\n imgElement: '.jarallax-img',\r\n imgSize: 'cover',\r\n imgPosition: '50% 50%',\r\n imgRepeat: 'no-repeat', // supported only for background, not for tag\r\n keepImg: false, // keep tag in it's default place\r\n elementInViewport: null,\r\n zIndex: -100,\r\n disableParallax: false,\r\n disableVideo: false,\r\n automaticResize: true, // use ResizeObserver to recalculate position and size of parallax image\r\n\r\n // video\r\n videoSrc: null,\r\n videoStartTime: 0,\r\n videoEndTime: 0,\r\n videoVolume: 0,\r\n videoPlayOnlyVisible: true,\r\n\r\n // events\r\n onScroll: null, // function(calculations) {}\r\n onInit: null, // function() {}\r\n onDestroy: null, // function() {}\r\n onCoverImage: null // function() {}\r\n };\r\n\r\n // DEPRECATED: old data-options\r\n var deprecatedDataAttribute = self.$item.getAttribute('data-jarallax');\r\n var oldDataOptions = JSON.parse(deprecatedDataAttribute || '{}');\r\n if (deprecatedDataAttribute) {\r\n // eslint-disable-next-line no-console\r\n console.warn('Detected usage of deprecated data-jarallax JSON options, you should use pure data-attribute options. See info here - https://github.com/nk-o/jarallax/issues/53');\r\n }\r\n\r\n // prepare data-options\r\n var dataOptions = self.$item.dataset || {};\r\n var pureDataOptions = {};\r\n Object.keys(dataOptions).forEach(function (key) {\r\n var loweCaseOption = key.substr(0, 1).toLowerCase() + key.substr(1);\r\n if (loweCaseOption && typeof self.defaults[loweCaseOption] !== 'undefined') {\r\n pureDataOptions[loweCaseOption] = dataOptions[key];\r\n }\r\n });\r\n\r\n self.options = self.extend({}, self.defaults, oldDataOptions, pureDataOptions, userOptions);\r\n self.pureOptions = self.extend({}, self.options);\r\n\r\n // prepare 'true' and 'false' strings to boolean\r\n Object.keys(self.options).forEach(function (key) {\r\n if (self.options[key] === 'true') {\r\n self.options[key] = true;\r\n } else if (self.options[key] === 'false') {\r\n self.options[key] = false;\r\n }\r\n });\r\n\r\n // fix speed option [-1.0, 2.0]\r\n self.options.speed = Math.min(2, Math.max(-1, parseFloat(self.options.speed)));\r\n\r\n // deprecated noAndroid and noIos options\r\n if (self.options.noAndroid || self.options.noIos) {\r\n // eslint-disable-next-line no-console\r\n console.warn('Detected usage of deprecated noAndroid or noIos options, you should use disableParallax option. See info here - https://github.com/nk-o/jarallax/#disable-on-mobile-devices');\r\n\r\n // prepare fallback if disableParallax option is not used\r\n if (!self.options.disableParallax) {\r\n if (self.options.noIos && self.options.noAndroid) {\r\n self.options.disableParallax = /iPad|iPhone|iPod|Android/;\r\n } else if (self.options.noIos) {\r\n self.options.disableParallax = /iPad|iPhone|iPod/;\r\n } else if (self.options.noAndroid) {\r\n self.options.disableParallax = /Android/;\r\n }\r\n }\r\n }\r\n\r\n // prepare disableParallax callback\r\n if (typeof self.options.disableParallax === 'string') {\r\n self.options.disableParallax = new RegExp(self.options.disableParallax);\r\n }\r\n if (self.options.disableParallax instanceof RegExp) {\r\n var disableParallaxRegexp = self.options.disableParallax;\r\n self.options.disableParallax = function () {\r\n return disableParallaxRegexp.test(navigator.userAgent);\r\n };\r\n }\r\n if (typeof self.options.disableParallax !== 'function') {\r\n self.options.disableParallax = function () {\r\n return false;\r\n };\r\n }\r\n\r\n // prepare disableVideo callback\r\n if (typeof self.options.disableVideo === 'string') {\r\n self.options.disableVideo = new RegExp(self.options.disableVideo);\r\n }\r\n if (self.options.disableVideo instanceof RegExp) {\r\n var disableVideoRegexp = self.options.disableVideo;\r\n self.options.disableVideo = function () {\r\n return disableVideoRegexp.test(navigator.userAgent);\r\n };\r\n }\r\n if (typeof self.options.disableVideo !== 'function') {\r\n self.options.disableVideo = function () {\r\n return false;\r\n };\r\n }\r\n\r\n // custom element to check if parallax in viewport\r\n var elementInVP = self.options.elementInViewport;\r\n // get first item from array\r\n if (elementInVP && (typeof elementInVP === 'undefined' ? 'undefined' : _typeof(elementInVP)) === 'object' && typeof elementInVP.length !== 'undefined') {\r\n var _elementInVP = elementInVP;\r\n\r\n var _elementInVP2 = _slicedToArray(_elementInVP, 1);\r\n\r\n elementInVP = _elementInVP2[0];\r\n }\r\n // check if dom element\r\n if (!(elementInVP instanceof Element)) {\r\n elementInVP = null;\r\n }\r\n self.options.elementInViewport = elementInVP;\r\n\r\n self.image = {\r\n src: self.options.imgSrc || null,\r\n $container: null,\r\n useImgTag: false,\r\n\r\n // position fixed is needed for the most of browsers because absolute position have glitches\r\n // on MacOS with smooth scroll there is a huge lags with absolute position - https://github.com/nk-o/jarallax/issues/75\r\n // on mobile devices better scrolled with absolute position\r\n position: /iPad|iPhone|iPod|Android/.test(navigator.userAgent) ? 'absolute' : 'fixed'\r\n };\r\n\r\n if (self.initImg() && self.canInitParallax()) {\r\n self.init();\r\n }\r\n }\r\n\r\n // add styles to element\r\n\r\n\r\n _createClass(Jarallax, [{\r\n key: 'css',\r\n value: function css(el, styles) {\r\n if (typeof styles === 'string') {\r\n return _global.window.getComputedStyle(el).getPropertyValue(styles);\r\n }\r\n\r\n // add transform property with vendor prefix\r\n if (styles.transform && supportTransform) {\r\n styles[supportTransform] = styles.transform;\r\n }\r\n\r\n Object.keys(styles).forEach(function (key) {\r\n el.style[key] = styles[key];\r\n });\r\n return el;\r\n }\r\n\r\n // Extend like jQuery.extend\r\n\r\n }, {\r\n key: 'extend',\r\n value: function extend(out) {\r\n var _arguments = arguments;\r\n\r\n out = out || {};\r\n Object.keys(arguments).forEach(function (i) {\r\n if (!_arguments[i]) {\r\n return;\r\n }\r\n Object.keys(_arguments[i]).forEach(function (key) {\r\n out[key] = _arguments[i][key];\r\n });\r\n });\r\n return out;\r\n }\r\n\r\n // get window size and scroll position. Useful for extensions\r\n\r\n }, {\r\n key: 'getWindowData',\r\n value: function getWindowData() {\r\n return {\r\n width: wndW,\r\n height: wndH,\r\n y: wndY\r\n };\r\n }\r\n\r\n // Jarallax functions\r\n\r\n }, {\r\n key: 'initImg',\r\n value: function initImg() {\r\n var self = this;\r\n\r\n // find image element\r\n var $imgElement = self.options.imgElement;\r\n if ($imgElement && typeof $imgElement === 'string') {\r\n $imgElement = self.$item.querySelector($imgElement);\r\n }\r\n // check if dom element\r\n if (!($imgElement instanceof Element)) {\r\n $imgElement = null;\r\n }\r\n\r\n if ($imgElement) {\r\n if (self.options.keepImg) {\r\n self.image.$item = $imgElement.cloneNode(true);\r\n } else {\r\n self.image.$item = $imgElement;\r\n self.image.$itemParent = $imgElement.parentNode;\r\n }\r\n self.image.useImgTag = true;\r\n }\r\n\r\n // true if there is img tag\r\n if (self.image.$item) {\r\n return true;\r\n }\r\n\r\n // get image src\r\n if (self.image.src === null) {\r\n self.image.src = self.css(self.$item, 'background-image').replace(/^url\\(['\"]?/g, '').replace(/['\"]?\\)$/g, '');\r\n }\r\n return !(!self.image.src || self.image.src === 'none');\r\n }\r\n }, {\r\n key: 'canInitParallax',\r\n value: function canInitParallax() {\r\n return supportTransform && !this.options.disableParallax();\r\n }\r\n }, {\r\n key: 'init',\r\n value: function init() {\r\n var self = this;\r\n var containerStyles = {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n overflow: 'hidden',\r\n pointerEvents: 'none'\r\n };\r\n var imageStyles = {};\r\n\r\n if (!self.options.keepImg) {\r\n // save default user styles\r\n var curStyle = self.$item.getAttribute('style');\r\n if (curStyle) {\r\n self.$item.setAttribute('data-jarallax-original-styles', curStyle);\r\n }\r\n if (self.image.useImgTag) {\r\n var curImgStyle = self.image.$item.getAttribute('style');\r\n if (curImgStyle) {\r\n self.image.$item.setAttribute('data-jarallax-original-styles', curImgStyle);\r\n }\r\n }\r\n }\r\n\r\n // set relative position and z-index to the parent\r\n if (self.css(self.$item, 'position') === 'static') {\r\n self.css(self.$item, {\r\n position: 'relative'\r\n });\r\n }\r\n if (self.css(self.$item, 'z-index') === 'auto') {\r\n self.css(self.$item, {\r\n zIndex: 0\r\n });\r\n }\r\n\r\n // container for parallax image\r\n self.image.$container = document.createElement('div');\r\n self.css(self.image.$container, containerStyles);\r\n self.css(self.image.$container, {\r\n 'z-index': self.options.zIndex\r\n });\r\n\r\n // fix for IE https://github.com/nk-o/jarallax/issues/110\r\n if (isIE) {\r\n self.css(self.image.$container, {\r\n opacity: 0.9999\r\n });\r\n }\r\n\r\n self.image.$container.setAttribute('id', 'jarallax-container-' + self.instanceID);\r\n self.$item.appendChild(self.image.$container);\r\n\r\n // use img tag\r\n if (self.image.useImgTag) {\r\n imageStyles = self.extend({\r\n 'object-fit': self.options.imgSize,\r\n 'object-position': self.options.imgPosition,\r\n // support for plugin https://github.com/bfred-it/object-fit-images\r\n 'font-family': 'object-fit: ' + self.options.imgSize + '; object-position: ' + self.options.imgPosition + ';',\r\n 'max-width': 'none'\r\n }, containerStyles, imageStyles);\r\n\r\n // use div with background image\r\n } else {\r\n self.image.$item = document.createElement('div');\r\n if (self.image.src) {\r\n imageStyles = self.extend({\r\n 'background-position': self.options.imgPosition,\r\n 'background-size': self.options.imgSize,\r\n 'background-repeat': self.options.imgRepeat,\r\n 'background-image': 'url(\"' + self.image.src + '\")'\r\n }, containerStyles, imageStyles);\r\n }\r\n }\r\n\r\n if (self.options.type === 'opacity' || self.options.type === 'scale' || self.options.type === 'scale-opacity' || self.options.speed === 1) {\r\n self.image.position = 'absolute';\r\n }\r\n\r\n // check if one of parents have transform style (without this check, scroll transform will be inverted if used parallax with position fixed)\r\n // discussion - https://github.com/nk-o/jarallax/issues/9\r\n if (self.image.position === 'fixed') {\r\n var parentWithTransform = 0;\r\n var $itemParents = self.$item;\r\n while ($itemParents !== null && $itemParents !== document && parentWithTransform === 0) {\r\n var parentTransform = self.css($itemParents, '-webkit-transform') || self.css($itemParents, '-moz-transform') || self.css($itemParents, 'transform');\r\n if (parentTransform && parentTransform !== 'none') {\r\n parentWithTransform = 1;\r\n self.image.position = 'absolute';\r\n }\r\n $itemParents = $itemParents.parentNode;\r\n }\r\n }\r\n\r\n // add position to parallax block\r\n imageStyles.position = self.image.position;\r\n\r\n // insert parallax image\r\n self.css(self.image.$item, imageStyles);\r\n self.image.$container.appendChild(self.image.$item);\r\n\r\n // set initial position and size\r\n self.onResize();\r\n self.onScroll(true);\r\n\r\n // ResizeObserver\r\n if (self.options.automaticResize && resizeObserver) {\r\n resizeObserver.observe(self.$item);\r\n }\r\n\r\n // call onInit event\r\n if (self.options.onInit) {\r\n self.options.onInit.call(self);\r\n }\r\n\r\n // remove default user background\r\n if (self.css(self.$item, 'background-image') !== 'none') {\r\n self.css(self.$item, {\r\n 'background-image': 'none'\r\n });\r\n }\r\n\r\n self.addToParallaxList();\r\n }\r\n\r\n // add to parallax instances list\r\n\r\n }, {\r\n key: 'addToParallaxList',\r\n value: function addToParallaxList() {\r\n jarallaxList.push(this);\r\n\r\n if (jarallaxList.length === 1) {\r\n updateParallax();\r\n }\r\n }\r\n\r\n // remove from parallax instances list\r\n\r\n }, {\r\n key: 'removeFromParallaxList',\r\n value: function removeFromParallaxList() {\r\n var self = this;\r\n\r\n jarallaxList.forEach(function (item, key) {\r\n if (item.instanceID === self.instanceID) {\r\n jarallaxList.splice(key, 1);\r\n }\r\n });\r\n }\r\n }, {\r\n key: 'destroy',\r\n value: function destroy() {\r\n var self = this;\r\n\r\n self.removeFromParallaxList();\r\n\r\n // return styles on container as before jarallax init\r\n var originalStylesTag = self.$item.getAttribute('data-jarallax-original-styles');\r\n self.$item.removeAttribute('data-jarallax-original-styles');\r\n // null occurs if there is no style tag before jarallax init\r\n if (!originalStylesTag) {\r\n self.$item.removeAttribute('style');\r\n } else {\r\n self.$item.setAttribute('style', originalStylesTag);\r\n }\r\n\r\n if (self.image.useImgTag) {\r\n // return styles on img tag as before jarallax init\r\n var originalStylesImgTag = self.image.$item.getAttribute('data-jarallax-original-styles');\r\n self.image.$item.removeAttribute('data-jarallax-original-styles');\r\n // null occurs if there is no style tag before jarallax init\r\n if (!originalStylesImgTag) {\r\n self.image.$item.removeAttribute('style');\r\n } else {\r\n self.image.$item.setAttribute('style', originalStylesTag);\r\n }\r\n\r\n // move img tag to its default position\r\n if (self.image.$itemParent) {\r\n self.image.$itemParent.appendChild(self.image.$item);\r\n }\r\n }\r\n\r\n // remove additional dom elements\r\n if (self.$clipStyles) {\r\n self.$clipStyles.parentNode.removeChild(self.$clipStyles);\r\n }\r\n if (self.image.$container) {\r\n self.image.$container.parentNode.removeChild(self.image.$container);\r\n }\r\n\r\n // call onDestroy event\r\n if (self.options.onDestroy) {\r\n self.options.onDestroy.call(self);\r\n }\r\n\r\n // delete jarallax from item\r\n delete self.$item.jarallax;\r\n }\r\n\r\n // it will remove some image overlapping\r\n // overlapping occur due to an image position fixed inside absolute position element\r\n\r\n }, {\r\n key: 'clipContainer',\r\n value: function clipContainer() {\r\n // needed only when background in fixed position\r\n if (this.image.position !== 'fixed') {\r\n return;\r\n }\r\n\r\n var self = this;\r\n var rect = self.image.$container.getBoundingClientRect();\r\n var width = rect.width,\r\n height = rect.height;\r\n\r\n\r\n if (!self.$clipStyles) {\r\n self.$clipStyles = document.createElement('style');\r\n self.$clipStyles.setAttribute('type', 'text/css');\r\n self.$clipStyles.setAttribute('id', 'jarallax-clip-' + self.instanceID);\r\n var head = document.head || document.getElementsByTagName('head')[0];\r\n head.appendChild(self.$clipStyles);\r\n }\r\n\r\n var styles = '#jarallax-container-' + self.instanceID + ' {\\n clip: rect(0 ' + width + 'px ' + height + 'px 0);\\n clip: rect(0, ' + width + 'px, ' + height + 'px, 0);\\n }';\r\n\r\n // add clip styles inline (this method need for support IE8 and less browsers)\r\n if (self.$clipStyles.styleSheet) {\r\n self.$clipStyles.styleSheet.cssText = styles;\r\n } else {\r\n self.$clipStyles.innerHTML = styles;\r\n }\r\n }\r\n }, {\r\n key: 'coverImage',\r\n value: function coverImage() {\r\n var self = this;\r\n\r\n var rect = self.image.$container.getBoundingClientRect();\r\n var contH = rect.height;\r\n var speed = self.options.speed;\r\n\r\n var isScroll = self.options.type === 'scroll' || self.options.type === 'scroll-opacity';\r\n var scrollDist = 0;\r\n var resultH = contH;\r\n var resultMT = 0;\r\n\r\n // scroll parallax\r\n if (isScroll) {\r\n // scroll distance and height for image\r\n if (speed < 0) {\r\n scrollDist = speed * Math.max(contH, wndH);\r\n } else {\r\n scrollDist = speed * (contH + wndH);\r\n }\r\n\r\n // size for scroll parallax\r\n if (speed > 1) {\r\n resultH = Math.abs(scrollDist - wndH);\r\n } else if (speed < 0) {\r\n resultH = scrollDist / speed + Math.abs(scrollDist);\r\n } else {\r\n resultH += Math.abs(wndH - contH) * (1 - speed);\r\n }\r\n\r\n scrollDist /= 2;\r\n }\r\n\r\n // store scroll distance\r\n self.parallaxScrollDistance = scrollDist;\r\n\r\n // vertical center\r\n if (isScroll) {\r\n resultMT = (wndH - resultH) / 2;\r\n } else {\r\n resultMT = (contH - resultH) / 2;\r\n }\r\n\r\n // apply result to item\r\n self.css(self.image.$item, {\r\n height: resultH + 'px',\r\n marginTop: resultMT + 'px',\r\n left: self.image.position === 'fixed' ? rect.left + 'px' : '0',\r\n width: rect.width + 'px'\r\n });\r\n\r\n // call onCoverImage event\r\n if (self.options.onCoverImage) {\r\n self.options.onCoverImage.call(self);\r\n }\r\n\r\n // return some useful data. Used in the video cover function\r\n return {\r\n image: {\r\n height: resultH,\r\n marginTop: resultMT\r\n },\r\n container: rect\r\n };\r\n }\r\n }, {\r\n key: 'isVisible',\r\n value: function isVisible() {\r\n return this.isElementInViewport || false;\r\n }\r\n }, {\r\n key: 'onScroll',\r\n value: function onScroll(force) {\r\n var self = this;\r\n\r\n var rect = self.$item.getBoundingClientRect();\r\n var contT = rect.top;\r\n var contH = rect.height;\r\n var styles = {};\r\n\r\n // check if in viewport\r\n var viewportRect = rect;\r\n if (self.options.elementInViewport) {\r\n viewportRect = self.options.elementInViewport.getBoundingClientRect();\r\n }\r\n self.isElementInViewport = viewportRect.bottom >= 0 && viewportRect.right >= 0 && viewportRect.top <= wndH && viewportRect.left <= wndW;\r\n\r\n // stop calculations if item is not in viewport\r\n if (force ? false : !self.isElementInViewport) {\r\n return;\r\n }\r\n\r\n // calculate parallax helping variables\r\n var beforeTop = Math.max(0, contT);\r\n var beforeTopEnd = Math.max(0, contH + contT);\r\n var afterTop = Math.max(0, -contT);\r\n var beforeBottom = Math.max(0, contT + contH - wndH);\r\n var beforeBottomEnd = Math.max(0, contH - (contT + contH - wndH));\r\n var afterBottom = Math.max(0, -contT + wndH - contH);\r\n var fromViewportCenter = 1 - 2 * (wndH - contT) / (wndH + contH);\r\n\r\n // calculate on how percent of section is visible\r\n var visiblePercent = 1;\r\n if (contH < wndH) {\r\n visiblePercent = 1 - (afterTop || beforeBottom) / contH;\r\n } else if (beforeTopEnd <= wndH) {\r\n visiblePercent = beforeTopEnd / wndH;\r\n } else if (beforeBottomEnd <= wndH) {\r\n visiblePercent = beforeBottomEnd / wndH;\r\n }\r\n\r\n // opacity\r\n if (self.options.type === 'opacity' || self.options.type === 'scale-opacity' || self.options.type === 'scroll-opacity') {\r\n styles.transform = 'translate3d(0,0,0)';\r\n styles.opacity = visiblePercent;\r\n }\r\n\r\n // scale\r\n if (self.options.type === 'scale' || self.options.type === 'scale-opacity') {\r\n var scale = 1;\r\n if (self.options.speed < 0) {\r\n scale -= self.options.speed * visiblePercent;\r\n } else {\r\n scale += self.options.speed * (1 - visiblePercent);\r\n }\r\n styles.transform = 'scale(' + scale + ') translate3d(0,0,0)';\r\n }\r\n\r\n // scroll\r\n if (self.options.type === 'scroll' || self.options.type === 'scroll-opacity') {\r\n var positionY = self.parallaxScrollDistance * fromViewportCenter;\r\n\r\n // fix if parallax block in absolute position\r\n if (self.image.position === 'absolute') {\r\n positionY -= contT;\r\n }\r\n\r\n styles.transform = 'translate3d(0,' + positionY + 'px,0)';\r\n }\r\n\r\n self.css(self.image.$item, styles);\r\n\r\n // call onScroll event\r\n if (self.options.onScroll) {\r\n self.options.onScroll.call(self, {\r\n section: rect,\r\n\r\n beforeTop: beforeTop,\r\n beforeTopEnd: beforeTopEnd,\r\n afterTop: afterTop,\r\n beforeBottom: beforeBottom,\r\n beforeBottomEnd: beforeBottomEnd,\r\n afterBottom: afterBottom,\r\n\r\n visiblePercent: visiblePercent,\r\n fromViewportCenter: fromViewportCenter\r\n });\r\n }\r\n }\r\n }, {\r\n key: 'onResize',\r\n value: function onResize() {\r\n this.coverImage();\r\n this.clipContainer();\r\n }\r\n }]);\r\n\r\n return Jarallax;\r\n}();\r\n\r\n// global definition\r\n\r\n\r\nvar plugin = function plugin(items) {\r\n // check for dom element\r\n // thanks: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\r\n if ((typeof HTMLElement === 'undefined' ? 'undefined' : _typeof(HTMLElement)) === 'object' ? items instanceof HTMLElement : items && (typeof items === 'undefined' ? 'undefined' : _typeof(items)) === 'object' && items !== null && items.nodeType === 1 && typeof items.nodeName === 'string') {\r\n items = [items];\r\n }\r\n\r\n var options = arguments[1];\r\n var args = Array.prototype.slice.call(arguments, 2);\r\n var len = items.length;\r\n var k = 0;\r\n var ret = void 0;\r\n\r\n for (k; k < len; k++) {\r\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object' || typeof options === 'undefined') {\r\n if (!items[k].jarallax) {\r\n items[k].jarallax = new Jarallax(items[k], options);\r\n }\r\n } else if (items[k].jarallax) {\r\n // eslint-disable-next-line prefer-spread\r\n ret = items[k].jarallax[options].apply(items[k].jarallax, args);\r\n }\r\n if (typeof ret !== 'undefined') {\r\n return ret;\r\n }\r\n }\r\n\r\n return items;\r\n};\r\nplugin.constructor = Jarallax;\r\n\r\nexports.default = plugin;\r\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(5)))\r\n\r\n/***/ }),\r\n/* 14 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nvar global = __webpack_require__(4);\r\n\r\n/**\r\n * `requestAnimationFrame()`\r\n */\r\n\r\nvar request = global.requestAnimationFrame || global.webkitRequestAnimationFrame || global.mozRequestAnimationFrame || fallback;\r\n\r\nvar prev = +new Date();\r\nfunction fallback(fn) {\r\n var curr = +new Date();\r\n var ms = Math.max(0, 16 - (curr - prev));\r\n var req = setTimeout(fn, ms);\r\n return prev = curr, req;\r\n}\r\n\r\n/**\r\n * `cancelAnimationFrame()`\r\n */\r\n\r\nvar cancel = global.cancelAnimationFrame || global.webkitCancelAnimationFrame || global.mozCancelAnimationFrame || clearTimeout;\r\n\r\nif (Function.prototype.bind) {\r\n request = request.bind(global);\r\n cancel = cancel.bind(global);\r\n}\r\n\r\nexports = module.exports = request;\r\nexports.cancel = cancel;\r\n\r\n/***/ })\r\n/******/ ]);\r\n","/*!\r\n * Name : Video Background Extension for Jarallax\r\n * Version : 1.0.1\r\n * Author : nK \r\n * GitHub : https://github.com/nk-o/jarallax\r\n */\r\n/******/ (function(modules) { // webpackBootstrap\r\n/******/ \t// The module cache\r\n/******/ \tvar installedModules = {};\r\n/******/\r\n/******/ \t// The require function\r\n/******/ \tfunction __webpack_require__(moduleId) {\r\n/******/\r\n/******/ \t\t// Check if module is in cache\r\n/******/ \t\tif(installedModules[moduleId]) {\r\n/******/ \t\t\treturn installedModules[moduleId].exports;\r\n/******/ \t\t}\r\n/******/ \t\t// Create a new module (and put it into the cache)\r\n/******/ \t\tvar module = installedModules[moduleId] = {\r\n/******/ \t\t\ti: moduleId,\r\n/******/ \t\t\tl: false,\r\n/******/ \t\t\texports: {}\r\n/******/ \t\t};\r\n/******/\r\n/******/ \t\t// Execute the module function\r\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\r\n/******/\r\n/******/ \t\t// Flag the module as loaded\r\n/******/ \t\tmodule.l = true;\r\n/******/\r\n/******/ \t\t// Return the exports of the module\r\n/******/ \t\treturn module.exports;\r\n/******/ \t}\r\n/******/\r\n/******/\r\n/******/ \t// expose the modules object (__webpack_modules__)\r\n/******/ \t__webpack_require__.m = modules;\r\n/******/\r\n/******/ \t// expose the module cache\r\n/******/ \t__webpack_require__.c = installedModules;\r\n/******/\r\n/******/ \t// define getter function for harmony exports\r\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\r\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\r\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\r\n/******/ \t\t}\r\n/******/ \t};\r\n/******/\r\n/******/ \t// define __esModule on exports\r\n/******/ \t__webpack_require__.r = function(exports) {\r\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\r\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\r\n/******/ \t\t}\r\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\r\n/******/ \t};\r\n/******/\r\n/******/ \t// create a fake namespace object\r\n/******/ \t// mode & 1: value is a module id, require it\r\n/******/ \t// mode & 2: merge all properties of value into the ns\r\n/******/ \t// mode & 4: return value when already ns object\r\n/******/ \t// mode & 8|1: behave like require\r\n/******/ \t__webpack_require__.t = function(value, mode) {\r\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\r\n/******/ \t\tif(mode & 8) return value;\r\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\r\n/******/ \t\tvar ns = Object.create(null);\r\n/******/ \t\t__webpack_require__.r(ns);\r\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\r\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));\r\n/******/ \t\treturn ns;\r\n/******/ \t};\r\n/******/\r\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\r\n/******/ \t__webpack_require__.n = function(module) {\r\n/******/ \t\tvar getter = module && module.__esModule ?\r\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\r\n/******/ \t\t\tfunction getModuleExports() { return module; };\r\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\r\n/******/ \t\treturn getter;\r\n/******/ \t};\r\n/******/\r\n/******/ \t// Object.prototype.hasOwnProperty.call\r\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\r\n/******/\r\n/******/ \t// __webpack_public_path__\r\n/******/ \t__webpack_require__.p = \"\";\r\n/******/\r\n/******/\r\n/******/ \t// Load entry module and return exports\r\n/******/ \treturn __webpack_require__(__webpack_require__.s = 6);\r\n/******/ })\r\n/************************************************************************/\r\n/******/ ([\r\n/* 0 */,\r\n/* 1 */,\r\n/* 2 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nmodule.exports = function (callback) {\r\n\r\n\tif (document.readyState === 'complete' || document.readyState === 'interactive') {\r\n\t\t// Already ready or interactive, execute callback\r\n\t\tcallback.call();\r\n\t} else if (document.attachEvent) {\r\n\t\t// Old browsers\r\n\t\tdocument.attachEvent('onreadystatechange', function () {\r\n\t\t\tif (document.readyState === 'interactive') callback.call();\r\n\t\t});\r\n\t} else if (document.addEventListener) {\r\n\t\t// Modern browsers\r\n\t\tdocument.addEventListener('DOMContentLoaded', callback);\r\n\t}\r\n};\r\n\r\n/***/ }),\r\n/* 3 */,\r\n/* 4 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n/* WEBPACK VAR INJECTION */(function(global) {\r\n\r\nvar win;\r\n\r\nif (typeof window !== \"undefined\") {\r\n win = window;\r\n} else if (typeof global !== \"undefined\") {\r\n win = global;\r\n} else if (typeof self !== \"undefined\") {\r\n win = self;\r\n} else {\r\n win = {};\r\n}\r\n\r\nmodule.exports = win;\r\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(5)))\r\n\r\n/***/ }),\r\n/* 5 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\r\n\r\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = function () {\r\n\treturn this;\r\n}();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\r\n/***/ }),\r\n/* 6 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\nmodule.exports = __webpack_require__(7);\r\n\r\n\r\n/***/ }),\r\n/* 7 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nvar _videoWorker = __webpack_require__(8);\r\n\r\nvar _videoWorker2 = _interopRequireDefault(_videoWorker);\r\n\r\nvar _global = __webpack_require__(4);\r\n\r\nvar _global2 = _interopRequireDefault(_global);\r\n\r\nvar _liteReady = __webpack_require__(2);\r\n\r\nvar _liteReady2 = _interopRequireDefault(_liteReady);\r\n\r\nvar _jarallaxVideo = __webpack_require__(10);\r\n\r\nvar _jarallaxVideo2 = _interopRequireDefault(_jarallaxVideo);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\n// add video worker globally to fallback jarallax < 1.10 versions\r\n_global2.default.VideoWorker = _global2.default.VideoWorker || _videoWorker2.default;\r\n\r\n(0, _jarallaxVideo2.default)();\r\n\r\n// data-jarallax-video initialization\r\n(0, _liteReady2.default)(function () {\r\n if (typeof jarallax !== 'undefined') {\r\n jarallax(document.querySelectorAll('[data-jarallax-video]'));\r\n }\r\n});\r\n\r\n/***/ }),\r\n/* 8 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nmodule.exports = __webpack_require__(9);\r\n\r\n/***/ }),\r\n/* 9 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\n// Deferred\r\n// thanks http://stackoverflow.com/questions/18096715/implement-deferred-object-without-using-jquery\r\nfunction Deferred() {\r\n this._done = [];\r\n this._fail = [];\r\n}\r\nDeferred.prototype = {\r\n execute: function execute(list, args) {\r\n var i = list.length;\r\n args = Array.prototype.slice.call(args);\r\n while (i--) {\r\n list[i].apply(null, args);\r\n }\r\n },\r\n resolve: function resolve() {\r\n this.execute(this._done, arguments);\r\n },\r\n reject: function reject() {\r\n this.execute(this._fail, arguments);\r\n },\r\n done: function done(callback) {\r\n this._done.push(callback);\r\n },\r\n fail: function fail(callback) {\r\n this._fail.push(callback);\r\n }\r\n};\r\n\r\nvar ID = 0;\r\nvar YoutubeAPIadded = 0;\r\nvar VimeoAPIadded = 0;\r\nvar loadingYoutubePlayer = 0;\r\nvar loadingVimeoPlayer = 0;\r\nvar loadingYoutubeDefer = new Deferred();\r\nvar loadingVimeoDefer = new Deferred();\r\n\r\nvar VideoWorker = function () {\r\n function VideoWorker(url, options) {\r\n _classCallCheck(this, VideoWorker);\r\n\r\n var self = this;\r\n\r\n self.url = url;\r\n\r\n self.options_default = {\r\n autoplay: false,\r\n loop: false,\r\n mute: false,\r\n volume: 100,\r\n showContols: true,\r\n\r\n // start / end video time in seconds\r\n startTime: 0,\r\n endTime: 0\r\n };\r\n\r\n self.options = self.extend({}, self.options_default, options);\r\n\r\n // check URL\r\n self.videoID = self.parseURL(url);\r\n\r\n // init\r\n if (self.videoID) {\r\n self.ID = ID++;\r\n self.loadAPI();\r\n self.init();\r\n }\r\n }\r\n\r\n // Extend like jQuery.extend\r\n\r\n\r\n _createClass(VideoWorker, [{\r\n key: 'extend',\r\n value: function extend(out) {\r\n var _arguments = arguments;\r\n\r\n out = out || {};\r\n Object.keys(arguments).forEach(function (i) {\r\n if (!_arguments[i]) {\r\n return;\r\n }\r\n Object.keys(_arguments[i]).forEach(function (key) {\r\n out[key] = _arguments[i][key];\r\n });\r\n });\r\n return out;\r\n }\r\n }, {\r\n key: 'parseURL',\r\n value: function parseURL(url) {\r\n // parse youtube ID\r\n function getYoutubeID(ytUrl) {\r\n // eslint-disable-next-line no-useless-escape\r\n var regExp = /.*(?:youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=)([^#\\&\\?]*).*/;\r\n var match = ytUrl.match(regExp);\r\n return match && match[1].length === 11 ? match[1] : false;\r\n }\r\n\r\n // parse vimeo ID\r\n function getVimeoID(vmUrl) {\r\n // eslint-disable-next-line no-useless-escape\r\n var regExp = /https?:\\/\\/(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^\\/]*)\\/videos\\/|album\\/(\\d+)\\/video\\/|video\\/|)(\\d+)(?:$|\\/|\\?)/;\r\n var match = vmUrl.match(regExp);\r\n return match && match[3] ? match[3] : false;\r\n }\r\n\r\n // parse local string\r\n function getLocalVideos(locUrl) {\r\n // eslint-disable-next-line no-useless-escape\r\n var videoFormats = locUrl.split(/,(?=mp4\\:|webm\\:|ogv\\:|ogg\\:)/);\r\n var result = {};\r\n var ready = 0;\r\n videoFormats.forEach(function (val) {\r\n // eslint-disable-next-line no-useless-escape\r\n var match = val.match(/^(mp4|webm|ogv|ogg)\\:(.*)/);\r\n if (match && match[1] && match[2]) {\r\n // eslint-disable-next-line prefer-destructuring\r\n result[match[1] === 'ogv' ? 'ogg' : match[1]] = match[2];\r\n ready = 1;\r\n }\r\n });\r\n return ready ? result : false;\r\n }\r\n\r\n var Youtube = getYoutubeID(url);\r\n var Vimeo = getVimeoID(url);\r\n var Local = getLocalVideos(url);\r\n\r\n if (Youtube) {\r\n this.type = 'youtube';\r\n return Youtube;\r\n } else if (Vimeo) {\r\n this.type = 'vimeo';\r\n return Vimeo;\r\n } else if (Local) {\r\n this.type = 'local';\r\n return Local;\r\n }\r\n\r\n return false;\r\n }\r\n }, {\r\n key: 'isValid',\r\n value: function isValid() {\r\n return !!this.videoID;\r\n }\r\n\r\n // events\r\n\r\n }, {\r\n key: 'on',\r\n value: function on(name, callback) {\r\n this.userEventsList = this.userEventsList || [];\r\n\r\n // add new callback in events list\r\n (this.userEventsList[name] || (this.userEventsList[name] = [])).push(callback);\r\n }\r\n }, {\r\n key: 'off',\r\n value: function off(name, callback) {\r\n var _this = this;\r\n\r\n if (!this.userEventsList || !this.userEventsList[name]) {\r\n return;\r\n }\r\n\r\n if (!callback) {\r\n delete this.userEventsList[name];\r\n } else {\r\n this.userEventsList[name].forEach(function (val, key) {\r\n if (val === callback) {\r\n _this.userEventsList[name][key] = false;\r\n }\r\n });\r\n }\r\n }\r\n }, {\r\n key: 'fire',\r\n value: function fire(name) {\r\n var _this2 = this;\r\n\r\n var args = [].slice.call(arguments, 1);\r\n if (this.userEventsList && typeof this.userEventsList[name] !== 'undefined') {\r\n this.userEventsList[name].forEach(function (val) {\r\n // call with all arguments\r\n if (val) {\r\n val.apply(_this2, args);\r\n }\r\n });\r\n }\r\n }\r\n }, {\r\n key: 'play',\r\n value: function play(start) {\r\n var self = this;\r\n if (!self.player) {\r\n return;\r\n }\r\n\r\n if (self.type === 'youtube' && self.player.playVideo) {\r\n if (typeof start !== 'undefined') {\r\n self.player.seekTo(start || 0);\r\n }\r\n if (YT.PlayerState.PLAYING !== self.player.getPlayerState()) {\r\n self.player.playVideo();\r\n }\r\n }\r\n\r\n if (self.type === 'vimeo') {\r\n if (typeof start !== 'undefined') {\r\n self.player.setCurrentTime(start);\r\n }\r\n self.player.getPaused().then(function (paused) {\r\n if (paused) {\r\n self.player.play();\r\n }\r\n });\r\n }\r\n\r\n if (self.type === 'local') {\r\n if (typeof start !== 'undefined') {\r\n self.player.currentTime = start;\r\n }\r\n if (self.player.paused) {\r\n self.player.play();\r\n }\r\n }\r\n }\r\n }, {\r\n key: 'pause',\r\n value: function pause() {\r\n var self = this;\r\n if (!self.player) {\r\n return;\r\n }\r\n\r\n if (self.type === 'youtube' && self.player.pauseVideo) {\r\n if (YT.PlayerState.PLAYING === self.player.getPlayerState()) {\r\n self.player.pauseVideo();\r\n }\r\n }\r\n\r\n if (self.type === 'vimeo') {\r\n self.player.getPaused().then(function (paused) {\r\n if (!paused) {\r\n self.player.pause();\r\n }\r\n });\r\n }\r\n\r\n if (self.type === 'local') {\r\n if (!self.player.paused) {\r\n self.player.pause();\r\n }\r\n }\r\n }\r\n }, {\r\n key: 'mute',\r\n value: function mute() {\r\n var self = this;\r\n if (!self.player) {\r\n return;\r\n }\r\n\r\n if (self.type === 'youtube' && self.player.mute) {\r\n self.player.mute();\r\n }\r\n\r\n if (self.type === 'vimeo' && self.player.setVolume) {\r\n self.player.setVolume(0);\r\n }\r\n\r\n if (self.type === 'local') {\r\n self.$video.muted = true;\r\n }\r\n }\r\n }, {\r\n key: 'unmute',\r\n value: function unmute() {\r\n var self = this;\r\n if (!self.player) {\r\n return;\r\n }\r\n\r\n if (self.type === 'youtube' && self.player.mute) {\r\n self.player.unMute();\r\n }\r\n\r\n if (self.type === 'vimeo' && self.player.setVolume) {\r\n self.player.setVolume(self.options.volume);\r\n }\r\n\r\n if (self.type === 'local') {\r\n self.$video.muted = false;\r\n }\r\n }\r\n }, {\r\n key: 'setVolume',\r\n value: function setVolume() {\r\n var volume = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\r\n\r\n var self = this;\r\n if (!self.player || !volume) {\r\n return;\r\n }\r\n\r\n if (self.type === 'youtube' && self.player.setVolume) {\r\n self.player.setVolume(volume);\r\n }\r\n\r\n if (self.type === 'vimeo' && self.player.setVolume) {\r\n self.player.setVolume(volume);\r\n }\r\n\r\n if (self.type === 'local') {\r\n self.$video.volume = volume / 100;\r\n }\r\n }\r\n }, {\r\n key: 'getVolume',\r\n value: function getVolume(callback) {\r\n var self = this;\r\n if (!self.player) {\r\n callback(false);\r\n return;\r\n }\r\n\r\n if (self.type === 'youtube' && self.player.getVolume) {\r\n callback(self.player.getVolume());\r\n }\r\n\r\n if (self.type === 'vimeo' && self.player.getVolume) {\r\n self.player.getVolume().then(function (volume) {\r\n callback(volume);\r\n });\r\n }\r\n\r\n if (self.type === 'local') {\r\n callback(self.$video.volume * 100);\r\n }\r\n }\r\n }, {\r\n key: 'getMuted',\r\n value: function getMuted(callback) {\r\n var self = this;\r\n if (!self.player) {\r\n callback(null);\r\n return;\r\n }\r\n\r\n if (self.type === 'youtube' && self.player.isMuted) {\r\n callback(self.player.isMuted());\r\n }\r\n\r\n if (self.type === 'vimeo' && self.player.getVolume) {\r\n self.player.getVolume().then(function (volume) {\r\n callback(!!volume);\r\n });\r\n }\r\n\r\n if (self.type === 'local') {\r\n callback(self.$video.muted);\r\n }\r\n }\r\n }, {\r\n key: 'getImageURL',\r\n value: function getImageURL(callback) {\r\n var self = this;\r\n\r\n if (self.videoImage) {\r\n callback(self.videoImage);\r\n return;\r\n }\r\n\r\n if (self.type === 'youtube') {\r\n var availableSizes = ['maxresdefault', 'sddefault', 'hqdefault', '0'];\r\n var step = 0;\r\n\r\n var tempImg = new Image();\r\n tempImg.onload = function () {\r\n // if no thumbnail, youtube add their own image with width = 120px\r\n if ((this.naturalWidth || this.width) !== 120 || step === availableSizes.length - 1) {\r\n // ok\r\n self.videoImage = 'https://img.youtube.com/vi/' + self.videoID + '/' + availableSizes[step] + '.jpg';\r\n callback(self.videoImage);\r\n } else {\r\n // try another size\r\n step++;\r\n this.src = 'https://img.youtube.com/vi/' + self.videoID + '/' + availableSizes[step] + '.jpg';\r\n }\r\n };\r\n tempImg.src = 'https://img.youtube.com/vi/' + self.videoID + '/' + availableSizes[step] + '.jpg';\r\n }\r\n\r\n if (self.type === 'vimeo') {\r\n var request = new XMLHttpRequest();\r\n request.open('GET', 'https://vimeo.com/api/v2/video/' + self.videoID + '.json', true);\r\n request.onreadystatechange = function () {\r\n if (this.readyState === 4) {\r\n if (this.status >= 200 && this.status < 400) {\r\n // Success!\r\n var response = JSON.parse(this.responseText);\r\n self.videoImage = response[0].thumbnail_large;\r\n callback(self.videoImage);\r\n } else {\r\n // Error :(\r\n }\r\n }\r\n };\r\n request.send();\r\n request = null;\r\n }\r\n }\r\n\r\n // fallback to the old version.\r\n\r\n }, {\r\n key: 'getIframe',\r\n value: function getIframe(callback) {\r\n this.getVideo(callback);\r\n }\r\n }, {\r\n key: 'getVideo',\r\n value: function getVideo(callback) {\r\n var self = this;\r\n\r\n // return generated video block\r\n if (self.$video) {\r\n callback(self.$video);\r\n return;\r\n }\r\n\r\n // generate new video block\r\n self.onAPIready(function () {\r\n var hiddenDiv = void 0;\r\n if (!self.$video) {\r\n hiddenDiv = document.createElement('div');\r\n hiddenDiv.style.display = 'none';\r\n }\r\n\r\n // Youtube\r\n if (self.type === 'youtube') {\r\n self.playerOptions = {};\r\n self.playerOptions.videoId = self.videoID;\r\n self.playerOptions.playerVars = {\r\n autohide: 1,\r\n rel: 0,\r\n autoplay: 0,\r\n // autoplay enable on mobile devices\r\n playsinline: 1\r\n };\r\n\r\n // hide controls\r\n if (!self.options.showContols) {\r\n self.playerOptions.playerVars.iv_load_policy = 3;\r\n self.playerOptions.playerVars.modestbranding = 1;\r\n self.playerOptions.playerVars.controls = 0;\r\n self.playerOptions.playerVars.showinfo = 0;\r\n self.playerOptions.playerVars.disablekb = 1;\r\n }\r\n\r\n // events\r\n var ytStarted = void 0;\r\n var ytProgressInterval = void 0;\r\n self.playerOptions.events = {\r\n onReady: function onReady(e) {\r\n // mute\r\n if (self.options.mute) {\r\n e.target.mute();\r\n } else if (self.options.volume) {\r\n e.target.setVolume(self.options.volume);\r\n }\r\n\r\n // autoplay\r\n if (self.options.autoplay) {\r\n self.play(self.options.startTime);\r\n }\r\n self.fire('ready', e);\r\n\r\n // volumechange\r\n setInterval(function () {\r\n self.getVolume(function (volume) {\r\n if (self.options.volume !== volume) {\r\n self.options.volume = volume;\r\n self.fire('volumechange', e);\r\n }\r\n });\r\n }, 150);\r\n },\r\n onStateChange: function onStateChange(e) {\r\n // loop\r\n if (self.options.loop && e.data === YT.PlayerState.ENDED) {\r\n self.play(self.options.startTime);\r\n }\r\n if (!ytStarted && e.data === YT.PlayerState.PLAYING) {\r\n ytStarted = 1;\r\n self.fire('started', e);\r\n }\r\n if (e.data === YT.PlayerState.PLAYING) {\r\n self.fire('play', e);\r\n }\r\n if (e.data === YT.PlayerState.PAUSED) {\r\n self.fire('pause', e);\r\n }\r\n if (e.data === YT.PlayerState.ENDED) {\r\n self.fire('ended', e);\r\n }\r\n\r\n // progress check\r\n if (e.data === YT.PlayerState.PLAYING) {\r\n ytProgressInterval = setInterval(function () {\r\n self.fire('timeupdate', e);\r\n\r\n // check for end of video and play again or stop\r\n if (self.options.endTime && self.player.getCurrentTime() >= self.options.endTime) {\r\n if (self.options.loop) {\r\n self.play(self.options.startTime);\r\n } else {\r\n self.pause();\r\n }\r\n }\r\n }, 150);\r\n } else {\r\n clearInterval(ytProgressInterval);\r\n }\r\n }\r\n };\r\n\r\n var firstInit = !self.$video;\r\n if (firstInit) {\r\n var div = document.createElement('div');\r\n div.setAttribute('id', self.playerID);\r\n hiddenDiv.appendChild(div);\r\n document.body.appendChild(hiddenDiv);\r\n }\r\n self.player = self.player || new window.YT.Player(self.playerID, self.playerOptions);\r\n if (firstInit) {\r\n self.$video = document.getElementById(self.playerID);\r\n\r\n // get video width and height\r\n self.videoWidth = parseInt(self.$video.getAttribute('width'), 10) || 1280;\r\n self.videoHeight = parseInt(self.$video.getAttribute('height'), 10) || 720;\r\n }\r\n }\r\n\r\n // Vimeo\r\n if (self.type === 'vimeo') {\r\n self.playerOptions = '';\r\n\r\n self.playerOptions += 'player_id=' + self.playerID;\r\n self.playerOptions += '&autopause=0';\r\n self.playerOptions += '&transparent=0';\r\n\r\n // hide controls\r\n if (!self.options.showContols) {\r\n self.playerOptions += '&badge=0&byline=0&portrait=0&title=0';\r\n }\r\n\r\n // autoplay\r\n self.playerOptions += '&autoplay=' + (self.options.autoplay ? '1' : '0');\r\n\r\n // loop\r\n self.playerOptions += '&loop=' + (self.options.loop ? 1 : 0);\r\n\r\n if (!self.$video) {\r\n self.$video = document.createElement('iframe');\r\n self.$video.setAttribute('id', self.playerID);\r\n self.$video.setAttribute('src', 'https://player.vimeo.com/video/' + self.videoID + '?' + self.playerOptions);\r\n self.$video.setAttribute('frameborder', '0');\r\n hiddenDiv.appendChild(self.$video);\r\n document.body.appendChild(hiddenDiv);\r\n }\r\n\r\n self.player = self.player || new Vimeo.Player(self.$video);\r\n\r\n // get video width and height\r\n self.player.getVideoWidth().then(function (width) {\r\n self.videoWidth = width || 1280;\r\n });\r\n self.player.getVideoHeight().then(function (height) {\r\n self.videoHeight = height || 720;\r\n });\r\n\r\n // set current time for autoplay\r\n if (self.options.startTime && self.options.autoplay) {\r\n self.player.setCurrentTime(self.options.startTime);\r\n }\r\n\r\n // mute\r\n if (self.options.mute) {\r\n self.player.setVolume(0);\r\n } else if (self.options.volume) {\r\n self.player.setVolume(self.options.volume);\r\n }\r\n\r\n var vmStarted = void 0;\r\n self.player.on('timeupdate', function (e) {\r\n if (!vmStarted) {\r\n self.fire('started', e);\r\n vmStarted = 1;\r\n }\r\n\r\n self.fire('timeupdate', e);\r\n\r\n // check for end of video and play again or stop\r\n if (self.options.endTime) {\r\n if (self.options.endTime && e.seconds >= self.options.endTime) {\r\n if (self.options.loop) {\r\n self.play(self.options.startTime);\r\n } else {\r\n self.pause();\r\n }\r\n }\r\n }\r\n });\r\n self.player.on('play', function (e) {\r\n self.fire('play', e);\r\n\r\n // check for the start time and start with it\r\n if (self.options.startTime && e.seconds === 0) {\r\n self.play(self.options.startTime);\r\n }\r\n });\r\n self.player.on('pause', function (e) {\r\n self.fire('pause', e);\r\n });\r\n self.player.on('ended', function (e) {\r\n self.fire('ended', e);\r\n });\r\n self.player.on('loaded', function (e) {\r\n self.fire('ready', e);\r\n });\r\n self.player.on('volumechange', function (e) {\r\n self.fire('volumechange', e);\r\n });\r\n }\r\n\r\n // Local\r\n function addSourceToLocal(element, src, type) {\r\n var source = document.createElement('source');\r\n source.src = src;\r\n source.type = type;\r\n element.appendChild(source);\r\n }\r\n if (self.type === 'local') {\r\n if (!self.$video) {\r\n self.$video = document.createElement('video');\r\n\r\n // show controls\r\n if (self.options.showContols) {\r\n self.$video.controls = true;\r\n }\r\n\r\n // mute\r\n if (self.options.mute) {\r\n self.$video.muted = true;\r\n } else if (self.$video.volume) {\r\n self.$video.volume = self.options.volume / 100;\r\n }\r\n\r\n // loop\r\n if (self.options.loop) {\r\n self.$video.loop = true;\r\n }\r\n\r\n // autoplay enable on mobile devices\r\n self.$video.setAttribute('playsinline', '');\r\n self.$video.setAttribute('webkit-playsinline', '');\r\n\r\n self.$video.setAttribute('id', self.playerID);\r\n hiddenDiv.appendChild(self.$video);\r\n document.body.appendChild(hiddenDiv);\r\n\r\n Object.keys(self.videoID).forEach(function (key) {\r\n addSourceToLocal(self.$video, self.videoID[key], 'video/' + key);\r\n });\r\n }\r\n\r\n self.player = self.player || self.$video;\r\n\r\n var locStarted = void 0;\r\n self.player.addEventListener('playing', function (e) {\r\n if (!locStarted) {\r\n self.fire('started', e);\r\n }\r\n locStarted = 1;\r\n });\r\n self.player.addEventListener('timeupdate', function (e) {\r\n self.fire('timeupdate', e);\r\n\r\n // check for end of video and play again or stop\r\n if (self.options.endTime) {\r\n if (self.options.endTime && this.currentTime >= self.options.endTime) {\r\n if (self.options.loop) {\r\n self.play(self.options.startTime);\r\n } else {\r\n self.pause();\r\n }\r\n }\r\n }\r\n });\r\n self.player.addEventListener('play', function (e) {\r\n self.fire('play', e);\r\n });\r\n self.player.addEventListener('pause', function (e) {\r\n self.fire('pause', e);\r\n });\r\n self.player.addEventListener('ended', function (e) {\r\n self.fire('ended', e);\r\n });\r\n self.player.addEventListener('loadedmetadata', function () {\r\n // get video width and height\r\n self.videoWidth = this.videoWidth || 1280;\r\n self.videoHeight = this.videoHeight || 720;\r\n\r\n self.fire('ready');\r\n\r\n // autoplay\r\n if (self.options.autoplay) {\r\n self.play(self.options.startTime);\r\n }\r\n });\r\n self.player.addEventListener('volumechange', function (e) {\r\n self.getVolume(function (volume) {\r\n self.options.volume = volume;\r\n });\r\n self.fire('volumechange', e);\r\n });\r\n }\r\n\r\n callback(self.$video);\r\n });\r\n }\r\n }, {\r\n key: 'init',\r\n value: function init() {\r\n var self = this;\r\n\r\n self.playerID = 'VideoWorker-' + self.ID;\r\n }\r\n }, {\r\n key: 'loadAPI',\r\n value: function loadAPI() {\r\n var self = this;\r\n\r\n if (YoutubeAPIadded && VimeoAPIadded) {\r\n return;\r\n }\r\n\r\n var src = '';\r\n\r\n // load Youtube API\r\n if (self.type === 'youtube' && !YoutubeAPIadded) {\r\n YoutubeAPIadded = 1;\r\n src = 'https://www.youtube.com/iframe_api';\r\n }\r\n\r\n // load Vimeo API\r\n if (self.type === 'vimeo' && !VimeoAPIadded) {\r\n VimeoAPIadded = 1;\r\n src = 'https://player.vimeo.com/api/player.js';\r\n }\r\n\r\n if (!src) {\r\n return;\r\n }\r\n\r\n // add script in head section\r\n var tag = document.createElement('script');\r\n var head = document.getElementsByTagName('head')[0];\r\n tag.src = src;\r\n\r\n head.appendChild(tag);\r\n\r\n head = null;\r\n tag = null;\r\n }\r\n }, {\r\n key: 'onAPIready',\r\n value: function onAPIready(callback) {\r\n var self = this;\r\n\r\n // Youtube\r\n if (self.type === 'youtube') {\r\n // Listen for global YT player callback\r\n if ((typeof YT === 'undefined' || YT.loaded === 0) && !loadingYoutubePlayer) {\r\n // Prevents Ready event from being called twice\r\n loadingYoutubePlayer = 1;\r\n\r\n // Creates deferred so, other players know when to wait.\r\n window.onYouTubeIframeAPIReady = function () {\r\n window.onYouTubeIframeAPIReady = null;\r\n loadingYoutubeDefer.resolve('done');\r\n callback();\r\n };\r\n } else if ((typeof YT === 'undefined' ? 'undefined' : _typeof(YT)) === 'object' && YT.loaded === 1) {\r\n callback();\r\n } else {\r\n loadingYoutubeDefer.done(function () {\r\n callback();\r\n });\r\n }\r\n }\r\n\r\n // Vimeo\r\n if (self.type === 'vimeo') {\r\n if (typeof Vimeo === 'undefined' && !loadingVimeoPlayer) {\r\n loadingVimeoPlayer = 1;\r\n var vimeoInterval = setInterval(function () {\r\n if (typeof Vimeo !== 'undefined') {\r\n clearInterval(vimeoInterval);\r\n loadingVimeoDefer.resolve('done');\r\n callback();\r\n }\r\n }, 20);\r\n } else if (typeof Vimeo !== 'undefined') {\r\n callback();\r\n } else {\r\n loadingVimeoDefer.done(function () {\r\n callback();\r\n });\r\n }\r\n }\r\n\r\n // Local\r\n if (self.type === 'local') {\r\n callback();\r\n }\r\n }\r\n }]);\r\n\r\n return VideoWorker;\r\n}();\r\n\r\nexports.default = VideoWorker;\r\n\r\n/***/ }),\r\n/* 10 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.default = jarallaxVideo;\r\n\r\nvar _videoWorker = __webpack_require__(8);\r\n\r\nvar _videoWorker2 = _interopRequireDefault(_videoWorker);\r\n\r\nvar _global = __webpack_require__(4);\r\n\r\nvar _global2 = _interopRequireDefault(_global);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nfunction jarallaxVideo() {\r\n var jarallax = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _global2.default.jarallax;\r\n\r\n if (typeof jarallax === 'undefined') {\r\n return;\r\n }\r\n\r\n var Jarallax = jarallax.constructor;\r\n\r\n // append video after init Jarallax\r\n var defInit = Jarallax.prototype.init;\r\n Jarallax.prototype.init = function () {\r\n var self = this;\r\n\r\n defInit.apply(self);\r\n\r\n if (self.video && !self.options.disableVideo()) {\r\n self.video.getVideo(function (video) {\r\n var $parent = video.parentNode;\r\n self.css(video, {\r\n position: self.image.position,\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n width: '100%',\r\n height: '100%',\r\n maxWidth: 'none',\r\n maxHeight: 'none',\r\n margin: 0,\r\n zIndex: -1\r\n });\r\n self.$video = video;\r\n self.image.$container.appendChild(video);\r\n\r\n // remove parent video element (created by VideoWorker)\r\n $parent.parentNode.removeChild($parent);\r\n });\r\n }\r\n };\r\n\r\n // cover video\r\n var defCoverImage = Jarallax.prototype.coverImage;\r\n Jarallax.prototype.coverImage = function () {\r\n var self = this;\r\n var imageData = defCoverImage.apply(self);\r\n var node = self.image.$item ? self.image.$item.nodeName : false;\r\n\r\n if (imageData && self.video && node && (node === 'IFRAME' || node === 'VIDEO')) {\r\n var h = imageData.image.height;\r\n var w = h * self.image.width / self.image.height;\r\n var ml = (imageData.container.width - w) / 2;\r\n var mt = imageData.image.marginTop;\r\n\r\n if (imageData.container.width > w) {\r\n w = imageData.container.width;\r\n h = w * self.image.height / self.image.width;\r\n ml = 0;\r\n mt += (imageData.image.height - h) / 2;\r\n }\r\n\r\n // add video height over than need to hide controls\r\n if (node === 'IFRAME') {\r\n h += 400;\r\n mt -= 200;\r\n }\r\n\r\n self.css(self.$video, {\r\n width: w + 'px',\r\n marginLeft: ml + 'px',\r\n height: h + 'px',\r\n marginTop: mt + 'px'\r\n });\r\n }\r\n\r\n return imageData;\r\n };\r\n\r\n // init video\r\n var defInitImg = Jarallax.prototype.initImg;\r\n Jarallax.prototype.initImg = function () {\r\n var self = this;\r\n var defaultResult = defInitImg.apply(self);\r\n\r\n if (!self.options.videoSrc) {\r\n self.options.videoSrc = self.$item.getAttribute('data-jarallax-video') || null;\r\n }\r\n\r\n if (self.options.videoSrc) {\r\n self.defaultInitImgResult = defaultResult;\r\n return true;\r\n }\r\n\r\n return defaultResult;\r\n };\r\n\r\n var defCanInitParallax = Jarallax.prototype.canInitParallax;\r\n Jarallax.prototype.canInitParallax = function () {\r\n var self = this;\r\n var defaultResult = defCanInitParallax.apply(self);\r\n\r\n if (!self.options.videoSrc) {\r\n return defaultResult;\r\n }\r\n\r\n var video = new _videoWorker2.default(self.options.videoSrc, {\r\n autoplay: true,\r\n loop: true,\r\n showContols: false,\r\n startTime: self.options.videoStartTime || 0,\r\n endTime: self.options.videoEndTime || 0,\r\n mute: self.options.videoVolume ? 0 : 1,\r\n volume: self.options.videoVolume || 0\r\n });\r\n\r\n if (video.isValid()) {\r\n // if parallax will not be inited, we can add thumbnail on background.\r\n if (!defaultResult) {\r\n if (!self.defaultInitImgResult) {\r\n video.getImageURL(function (url) {\r\n // save default user styles\r\n var curStyle = self.$item.getAttribute('style');\r\n if (curStyle) {\r\n self.$item.setAttribute('data-jarallax-original-styles', curStyle);\r\n }\r\n\r\n // set new background\r\n self.css(self.$item, {\r\n 'background-image': 'url(\"' + url + '\")',\r\n 'background-position': 'center',\r\n 'background-size': 'cover'\r\n });\r\n });\r\n }\r\n\r\n // init video\r\n } else {\r\n video.on('ready', function () {\r\n if (self.options.videoPlayOnlyVisible) {\r\n var oldOnScroll = self.onScroll;\r\n self.onScroll = function () {\r\n oldOnScroll.apply(self);\r\n if (self.isVisible()) {\r\n video.play();\r\n } else {\r\n video.pause();\r\n }\r\n };\r\n } else {\r\n video.play();\r\n }\r\n });\r\n\r\n video.on('started', function () {\r\n self.image.$default_item = self.image.$item;\r\n self.image.$item = self.$video;\r\n\r\n // set video width and height\r\n self.image.width = self.video.videoWidth || 1280;\r\n self.image.height = self.video.videoHeight || 720;\r\n self.options.imgWidth = self.image.width;\r\n self.options.imgHeight = self.image.height;\r\n self.coverImage();\r\n self.clipContainer();\r\n self.onScroll();\r\n\r\n // hide image\r\n if (self.image.$default_item) {\r\n self.image.$default_item.style.display = 'none';\r\n }\r\n });\r\n\r\n self.video = video;\r\n\r\n // set image if not exists\r\n if (!self.defaultInitImgResult) {\r\n if (video.type !== 'local') {\r\n video.getImageURL(function (url) {\r\n self.image.src = url;\r\n self.init();\r\n });\r\n\r\n return false;\r\n }\r\n\r\n // set empty image on local video if not defined\r\n self.image.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return defaultResult;\r\n };\r\n\r\n // Destroy video parallax\r\n var defDestroy = Jarallax.prototype.destroy;\r\n Jarallax.prototype.destroy = function () {\r\n var self = this;\r\n\r\n if (self.image.$default_item) {\r\n self.image.$item = self.image.$default_item;\r\n delete self.image.$default_item;\r\n }\r\n\r\n defDestroy.apply(self);\r\n };\r\n}\r\n\r\n/***/ })\r\n/******/ ]);","/*! npm.im/object-fit-images 3.2.4 */\r\nvar objectFitImages = (function () {\r\n'use strict';\r\n\r\nvar OFI = 'bfred-it:object-fit-images';\r\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-.\\w\\s%]+)/g;\r\nvar testImg = typeof Image === 'undefined' ? {style: {'object-position': 1}} : new Image();\r\nvar supportsObjectFit = 'object-fit' in testImg.style;\r\nvar supportsObjectPosition = 'object-position' in testImg.style;\r\nvar supportsOFI = 'background-size' in testImg.style;\r\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\r\nvar nativeGetAttribute = testImg.getAttribute;\r\nvar nativeSetAttribute = testImg.setAttribute;\r\nvar autoModeEnabled = false;\r\n\r\nfunction createPlaceholder(w, h) {\r\n\treturn (\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" + w + \"' height='\" + h + \"'%3E%3C/svg%3E\");\r\n}\r\n\r\nfunction polyfillCurrentSrc(el) {\r\n\tif (el.srcset && !supportsCurrentSrc && window.picturefill) {\r\n\t\tvar pf = window.picturefill._;\r\n\t\t// parse srcset with picturefill where currentSrc isn't available\r\n\t\tif (!el[pf.ns] || !el[pf.ns].evaled) {\r\n\t\t\t// force synchronous srcset parsing\r\n\t\t\tpf.fillImg(el, {reselect: true});\r\n\t\t}\r\n\r\n\t\tif (!el[pf.ns].curSrc) {\r\n\t\t\t// force picturefill to parse srcset\r\n\t\t\tel[pf.ns].supported = false;\r\n\t\t\tpf.fillImg(el, {reselect: true});\r\n\t\t}\r\n\r\n\t\t// retrieve parsed currentSrc, if any\r\n\t\tel.currentSrc = el[pf.ns].curSrc || el.src;\r\n\t}\r\n}\r\n\r\nfunction getStyle(el) {\r\n\tvar style = getComputedStyle(el).fontFamily;\r\n\tvar parsed;\r\n\tvar props = {};\r\n\twhile ((parsed = propRegex.exec(style)) !== null) {\r\n\t\tprops[parsed[1]] = parsed[2];\r\n\t}\r\n\treturn props;\r\n}\r\n\r\nfunction setPlaceholder(img, width, height) {\r\n\t// Default: fill width, no height\r\n\tvar placeholder = createPlaceholder(width || 1, height || 0);\r\n\r\n\t// Only set placeholder if it's different\r\n\tif (nativeGetAttribute.call(img, 'src') !== placeholder) {\r\n\t\tnativeSetAttribute.call(img, 'src', placeholder);\r\n\t}\r\n}\r\n\r\nfunction onImageReady(img, callback) {\r\n\t// naturalWidth is only available when the image headers are loaded,\r\n\t// this loop will poll it every 100ms.\r\n\tif (img.naturalWidth) {\r\n\t\tcallback(img);\r\n\t} else {\r\n\t\tsetTimeout(onImageReady, 100, img, callback);\r\n\t}\r\n}\r\n\r\nfunction fixOne(el) {\r\n\tvar style = getStyle(el);\r\n\tvar ofi = el[OFI];\r\n\tstyle['object-fit'] = style['object-fit'] || 'fill'; // default value\r\n\r\n\t// Avoid running where unnecessary, unless OFI had already done its deed\r\n\tif (!ofi.img) {\r\n\t\t// fill is the default behavior so no action is necessary\r\n\t\tif (style['object-fit'] === 'fill') {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Where object-fit is supported and object-position isn't (Safari < 10)\r\n\t\tif (\r\n\t\t\t!ofi.skipTest && // unless user wants to apply regardless of browser support\r\n\t\t\tsupportsObjectFit && // if browser already supports object-fit\r\n\t\t\t!style['object-position'] // unless object-position is used\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t// keep a clone in memory while resetting the original to a blank\r\n\tif (!ofi.img) {\r\n\t\tofi.img = new Image(el.width, el.height);\r\n\t\tofi.img.srcset = nativeGetAttribute.call(el, \"data-ofi-srcset\") || el.srcset;\r\n\t\tofi.img.src = nativeGetAttribute.call(el, \"data-ofi-src\") || el.src;\r\n\r\n\t\t// preserve for any future cloneNode calls\r\n\t\t// https://github.com/bfred-it/object-fit-images/issues/53\r\n\t\tnativeSetAttribute.call(el, \"data-ofi-src\", el.src);\r\n\t\tif (el.srcset) {\r\n\t\t\tnativeSetAttribute.call(el, \"data-ofi-srcset\", el.srcset);\r\n\t\t}\r\n\r\n\t\tsetPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height);\r\n\r\n\t\t// remove srcset because it overrides src\r\n\t\tif (el.srcset) {\r\n\t\t\tel.srcset = '';\r\n\t\t}\r\n\t\ttry {\r\n\t\t\tkeepSrcUsable(el);\r\n\t\t} catch (err) {\r\n\t\t\tif (window.console) {\r\n\t\t\t\tconsole.warn('https://bit.ly/ofi-old-browser');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpolyfillCurrentSrc(ofi.img);\r\n\r\n\tel.style.backgroundImage = \"url(\\\"\" + ((ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"')) + \"\\\")\";\r\n\tel.style.backgroundPosition = style['object-position'] || 'center';\r\n\tel.style.backgroundRepeat = 'no-repeat';\r\n\tel.style.backgroundOrigin = 'content-box';\r\n\r\n\tif (/scale-down/.test(style['object-fit'])) {\r\n\t\tonImageReady(ofi.img, function () {\r\n\t\t\tif (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {\r\n\t\t\t\tel.style.backgroundSize = 'contain';\r\n\t\t\t} else {\r\n\t\t\t\tel.style.backgroundSize = 'auto';\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\tel.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\r\n\t}\r\n\r\n\tonImageReady(ofi.img, function (img) {\r\n\t\tsetPlaceholder(el, img.naturalWidth, img.naturalHeight);\r\n\t});\r\n}\r\n\r\nfunction keepSrcUsable(el) {\r\n\tvar descriptors = {\r\n\t\tget: function get(prop) {\r\n\t\t\treturn el[OFI].img[prop ? prop : 'src'];\r\n\t\t},\r\n\t\tset: function set(value, prop) {\r\n\t\t\tel[OFI].img[prop ? prop : 'src'] = value;\r\n\t\t\tnativeSetAttribute.call(el, (\"data-ofi-\" + prop), value); // preserve for any future cloneNode\r\n\t\t\tfixOne(el);\r\n\t\t\treturn value;\r\n\t\t}\r\n\t};\r\n\tObject.defineProperty(el, 'src', descriptors);\r\n\tObject.defineProperty(el, 'currentSrc', {\r\n\t\tget: function () { return descriptors.get('currentSrc'); }\r\n\t});\r\n\tObject.defineProperty(el, 'srcset', {\r\n\t\tget: function () { return descriptors.get('srcset'); },\r\n\t\tset: function (ss) { return descriptors.set(ss, 'srcset'); }\r\n\t});\r\n}\r\n\r\nfunction hijackAttributes() {\r\n\tfunction getOfiImageMaybe(el, name) {\r\n\t\treturn el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;\r\n\t}\r\n\tif (!supportsObjectPosition) {\r\n\t\tHTMLImageElement.prototype.getAttribute = function (name) {\r\n\t\t\treturn nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\r\n\t\t};\r\n\r\n\t\tHTMLImageElement.prototype.setAttribute = function (name, value) {\r\n\t\t\treturn nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));\r\n\t\t};\r\n\t}\r\n}\r\n\r\nfunction fix(imgs, opts) {\r\n\tvar startAutoMode = !autoModeEnabled && !imgs;\r\n\topts = opts || {};\r\n\timgs = imgs || 'img';\r\n\r\n\tif ((supportsObjectPosition && !opts.skipTest) || !supportsOFI) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// use imgs as a selector or just select all images\r\n\tif (imgs === 'img') {\r\n\t\timgs = document.getElementsByTagName('img');\r\n\t} else if (typeof imgs === 'string') {\r\n\t\timgs = document.querySelectorAll(imgs);\r\n\t} else if (!('length' in imgs)) {\r\n\t\timgs = [imgs];\r\n\t}\r\n\r\n\t// apply fix to all\r\n\tfor (var i = 0; i < imgs.length; i++) {\r\n\t\timgs[i][OFI] = imgs[i][OFI] || {\r\n\t\t\tskipTest: opts.skipTest\r\n\t\t};\r\n\t\tfixOne(imgs[i]);\r\n\t}\r\n\r\n\tif (startAutoMode) {\r\n\t\tdocument.body.addEventListener('load', function (e) {\r\n\t\t\tif (e.target.tagName === 'IMG') {\r\n\t\t\t\tfix(e.target, {\r\n\t\t\t\t\tskipTest: opts.skipTest\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}, true);\r\n\t\tautoModeEnabled = true;\r\n\t\timgs = 'img'; // reset to a generic selector for watchMQ\r\n\t}\r\n\r\n\t// if requested, watch media queries for object-fit change\r\n\tif (opts.watchMQ) {\r\n\t\twindow.addEventListener('resize', fix.bind(null, imgs, {\r\n\t\t\tskipTest: opts.skipTest\r\n\t\t}));\r\n\t}\r\n}\r\n\r\nfix.supportsObjectFit = supportsObjectFit;\r\nfix.supportsObjectPosition = supportsObjectPosition;\r\n\r\nhijackAttributes();\r\n\r\nreturn fix;\r\n\r\n}());\r\n","/*!\r\n * ClockPicker v0.0.7 (http://weareoutman.github.io/clockpicker/)\r\n * Copyright 2014 Wang Shenwei.\r\n * Licensed under MIT (https://github.com/weareoutman/clockpicker/blob/gh-pages/LICENSE)\r\n *\r\n * Further modified\r\n * Copyright 2015 Ching Yaw Hao.\r\n */\r\n\r\n;(function(){\r\n\tvar $ = window.jQuery,\r\n\t\t\t$win = $(window),\r\n\t\t\t$doc = $(document);\r\n\r\n\t// Can I use inline svg ?\r\n\tvar svgNS = 'http://www.w3.org/2000/svg',\r\n\t\t svgSupported = 'SVGAngle' in window && (function() {\r\n\t\t\t var supported,\r\n\t\t\t\tel = document.createElement('div');\r\n\t\t\t\tel.innerHTML = '';\r\n\t\t\t\tsupported = (el.firstChild && el.firstChild.namespaceURI) == svgNS;\r\n\t\t\t\tel.innerHTML = '';\r\n\t\t\t\treturn supported;\r\n\t\t\t})();\r\n\r\n\t// Can I use transition ?\r\n\tvar transitionSupported = (function() {\r\n\t\tvar style = document.createElement('div').style;\r\n\t\treturn 'transition' in style ||\r\n\t\t\t\t\t 'WebkitTransition' in style ||\r\n\t\t\t\t 'MozTransition' in style ||\r\n\t\t\t\t\t 'msTransition' in style ||\r\n\t\t\t\t\t 'OTransition' in style;\r\n\t})();\r\n\r\n\t// Listen touch events in touch screen device, instead of mouse events in desktop.\r\n\tvar touchSupported = 'ontouchstart' in window,\r\n\t\t\tmousedownEvent = 'mousedown' + ( touchSupported ? ' touchstart' : ''),\r\n\t\t\tmousemoveEvent = 'mousemove.clockpicker' + ( touchSupported ? ' touchmove.clockpicker' : ''),\r\n\t\t\tmouseupEvent = 'mouseup.clockpicker' + ( touchSupported ? ' touchend.clockpicker' : '');\r\n\r\n\t// Vibrate the device if supported\r\n\tvar vibrate = navigator.vibrate ? 'vibrate' : navigator.webkitVibrate ? 'webkitVibrate' : null;\r\n\r\n\tfunction createSvgElement(name) {\r\n\t\treturn document.createElementNS(svgNS, name);\r\n\t}\r\n\r\n function debounce(func, wait, immediate) {\r\n var timeout;\r\n return function() {\r\n var context = this, args = arguments;\r\n var later = function() {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n var callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n}\r\n\r\n\tfunction leadingZero(num) {\r\n\t\treturn (num < 10 ? '0' : '') + num;\r\n\t}\r\n\r\n\t// Get a unique id\r\n\tvar idCounter = 0;\r\n\tfunction uniqueId(prefix) {\r\n\t\tvar id = ++idCounter + '';\r\n\t\treturn prefix ? prefix + id : id;\r\n\t}\r\n\r\n\t// Clock size\r\n\tvar dialRadius = 135,\r\n\t\t\touterRadius = 110,\r\n\t\t\t// innerRadius = 80 on 12 hour clock\r\n\t\t\tinnerRadius = 80,\r\n\t\t\ttickRadius = 20,\r\n\t\t\tdiameter = dialRadius * 2,\r\n\t\t\tduration = transitionSupported ? 350 : 1;\r\n\r\n\t// Popover template\r\n\tvar tpl = [\r\n\t\t'
      ',\r\n\t\t\t'
      ',\r\n\t\t\t\t'
      ',\r\n\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t\t\t'',\r\n\t\t\t\t\t\t\t\t\t\t':',\r\n\t\t\t\t\t\t\t\t\t\t'',\r\n\t\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t'
      ',\r\n\t\t\t\t'
      ',\r\n\t\t\t'
      ',\r\n\t\t'
      '\r\n\t].join('');\r\n\r\n\t// ClockPicker\r\n\tfunction ClockPicker(element, options) {\r\n\t\tvar popover = $(tpl),\r\n\t\t\t\tplate = popover.find('.clockpicker-plate'),\r\n\t\t\t\tholder = popover.find('.picker__holder'),\r\n\t\t\t\thoursView = popover.find('.clockpicker-hours'),\r\n\t\t\t\tminutesView = popover.find('.clockpicker-minutes'),\r\n\t\t\t\tamPmBlock = popover.find('.clockpicker-am-pm-block'),\r\n\t\t\t\tisInput = element.prop('tagName') === 'INPUT',\r\n input = isInput ? element : element.find('input'),\r\n isHTML5 = input.prop('type') === 'time',\r\n\t\t\t\tlabel = $(\"label[for=\" + input.attr(\"id\") + \"]\"),\r\n\t\t\t\tself = this,\r\n\t\t\t\ttimer;\r\n\r\n\t\tthis.id = uniqueId('cp');\r\n\t\tthis.element = element;\r\n\t\tthis.holder = holder;\r\n\t\tthis.options = options;\r\n\t\tthis.isAppended = false;\r\n\t\tthis.isShown = false;\r\n\t\tthis.currentView = 'hours';\r\n\t\tthis.isInput = isInput;\r\n\t\tthis.input = input;\r\n\t\tthis.label = label;\r\n\t\tthis.popover = popover;\r\n\t\tthis.plate = plate;\r\n\t\tthis.hoursView = hoursView;\r\n\t\tthis.minutesView = minutesView;\r\n\t\tthis.amPmBlock = amPmBlock;\r\n\t\tthis.spanHours = popover.find('.clockpicker-span-hours');\r\n\t\tthis.spanMinutes = popover.find('.clockpicker-span-minutes');\r\n\t\tthis.spanAmPm = popover.find('.clockpicker-span-am-pm');\r\n\t\tthis.footer = popover.find('.picker__footer');\r\n\t\tthis.amOrPm = \"\";\r\n\t\tthis.isTwelvehour = options.twelvehour;\r\n\t\tthis.minTime = 0;\r\n this.maxTime = 0;\r\n this.minMinutes = 0;\r\n this.maxMinutes = 59;\r\n this.minHours = 0;\r\n this.maxHours = 23;\r\n this.isInvalidTimeScope = false;\r\n\r\n const parseTimeOptions = (scope) => {\r\n const time = scope + 'Time';\r\n this[time] = options[scope].split(':');\r\n \r\n // user can set using am/pm. Convert 12h clock settings to 24h clock settings \r\n if (this[time][1].length === 4) {\r\n const period = this[time][1].replace(/\\d+/g, '').toUpperCase();\r\n this[time][1] = this[time][1].replace(/\\D+/g, '');\r\n if (period === 'PM') \r\n this[time][0] = parseInt(this[time][0]) + 12\r\n }\r\n \r\n if (this[time].length !== 2)\r\n this[time] = null;\r\n else {\r\n for (let i = 0; i < this[time].length; i++) {\r\n this[time][i] = +this[time][i];\r\n }\r\n }\r\n }\r\n\r\n // Parse minTime Option\r\n if (options.min) {\r\n parseTimeOptions('min');\r\n this.minMinutes = this.minTime[1];\r\n this.minHours = this.minTime[0];\r\n }\r\n\r\n // Parse maxTime Option\r\n if (options.max) {\r\n parseTimeOptions('max');\r\n\r\n // Ensure that max is after min, if not remove the max it's invalid\r\n if ((this.minHours > this.maxHours) || (this.minHours === this.maxHours && this.minMinutes >= this.maxMinutes)) {\r\n this.maxTime = 0;\r\n } else {\r\n this.maxMinutes = this.maxTime[1];\r\n this.maxHours = this.maxTime[0];\r\n }\r\n }\r\n\r\n\t\t// Setup for for 12 hour clock if option is selected\r\n\t\tif (options.twelvehour) {\r\n\t\t\tvar amPmButtonsTemplate = [\r\n\t\t\t\t'
      ',\r\n\t\t\t\t\t'',\r\n\t\t\t\t\t'',\r\n\t\t\t\t'
      '\r\n\t\t\t].join('');\r\n\r\n\t\t\tvar amPmButtons = $(amPmButtonsTemplate);\r\n \r\n const togglePeriod = (period) => {\r\n let previsiousPeriod = 'pm';\r\n\r\n if (period === 'PM')\r\n previsiousPeriod = 'am';\r\n \r\n self.amOrPm = period;\r\n self.amPmBlock.children(`.${previsiousPeriod}-button`).removeClass('active');\r\n self.amPmBlock.children(`.${period.toLowerCase()}-button`).addClass('active');\r\n self.spanAmPm.empty().append(period);\r\n\r\n this.disableOutOfRangeElements();\r\n\t\t\t}\r\n\r\n\t\t\tif (!options.ampmclickable) {\r\n\t\t\t\t$('').on(\"click\", function() {\r\n togglePeriod('AM');\r\n\t\t\t\t}).appendTo(this.amPmBlock);\r\n\t\t\t\t$('').on(\"click\", function() {\r\n togglePeriod('PM');\r\n\t\t\t\t}).appendTo(this.amPmBlock);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.spanAmPm.empty();\r\n\t\t\t\t$('
      AM
      ').on(\"click\", function() {\r\n\t\t\t\t\tself.spanAmPm.children('#click-am').addClass(\"text-primary\");\r\n\t\t\t\t\tself.spanAmPm.children('#click-pm').removeClass(\"text-primary\");\r\n\t\t\t\t\tself.amOrPm = \"AM\";\r\n\t\t\t\t}).appendTo(this.spanAmPm);\r\n\t\t\t\t$('
      PM
      ').on(\"click\", function() {\r\n\t\t\t\t\tself.spanAmPm.children('#click-pm').addClass(\"text-primary\");\r\n\t\t\t\t\tself.spanAmPm.children('#click-am').removeClass(\"text-primary\");\r\n\t\t\t\t\tself.amOrPm = 'PM';\r\n\t\t\t\t}).appendTo(this.spanAmPm);\r\n }\r\n }\r\n \r\n\r\n\t\tif(options.darktheme)\r\n\t\t\tpopover.addClass('darktheme');\r\n\r\n\t\t\t// If autoclose is not setted, append a button\r\n\t\t$('').click($.proxy(this.done, this)).appendTo(this.footer);\r\n\r\n\t\t$('').click($.proxy(this.clearInput, this)).appendTo(this.footer);\r\n\t\tthis.spanHours.click($.proxy(this.toggleView, this, 'hours'));\r\n\t\tthis.spanMinutes.click($.proxy(this.toggleView, this, 'minutes'));\r\n\r\n\t\t// Show or toggle\r\n\t\tinput.on('click.clockpicker', debounce( $.proxy(this.show, this), 100));\r\n\r\n\t\t// Build ticks\r\n\t\tvar tickTpl = $('
      '),\r\n\t\t\t\ti, tick, radian, radius;\r\n\r\n\t\t// Hours view\r\n if (options.twelvehour) {\r\n for (i = 0; i < 12; i += options.hourstep) {\r\n tick = tickTpl.clone();\r\n radian = i / 6 * Math.PI;\r\n radius = outerRadius;\r\n tick.css('font-size', '140%');\r\n tick.css({\r\n left: dialRadius + Math.sin(radian) * radius - tickRadius,\r\n top: dialRadius - Math.cos(radian) * radius - tickRadius\r\n });\r\n tick.html(i === 0 ? 12 : i);\r\n hoursView.append(tick);\r\n tick.on(mousedownEvent, mousedown);\r\n this.disableOutOfRangeElements();\r\n }\r\n\t\t} else {\r\n for (i = 0; i < 24; i += options.hourstep) {\r\n tick = tickTpl.clone();\r\n radian = i / 6 * Math.PI;\r\n var inner = i > 0 && i < 13;\r\n radius = inner ? innerRadius : outerRadius;\r\n tick.css({\r\n left: dialRadius + Math.sin(radian) * radius - tickRadius,\r\n top: dialRadius - Math.cos(radian) * radius - tickRadius\r\n });\r\n if (inner) {\r\n tick.css('font-size', '120%');\r\n }\r\n tick.html(i === 0 ? '00' : i);\r\n hoursView.append(tick);\r\n tick.on(mousedownEvent, mousedown);\r\n this.disableOutOfRangeElements();\r\n }\r\n\t\t}\r\n\r\n // Minutes view\r\n var incrementValue = Math.max(options.minutestep, 5);\r\n for (i = 0; i < 60; i += incrementValue) {\r\n for (i = 0; i < 60; i += 5) {\r\n tick = tickTpl.clone();\r\n radian = i / 30 * Math.PI;\r\n tick.css({\r\n left: dialRadius + Math.sin(radian) * outerRadius - tickRadius,\r\n top: dialRadius - Math.cos(radian) * outerRadius - tickRadius\r\n });\r\n tick.css('font-size', '140%');\r\n tick.html(leadingZero(i));\r\n minutesView.append(tick);\r\n tick.on(mousedownEvent, mousedown);\r\n }\r\n }\r\n\t\t\r\n\t\t// Clicking on minutes view space\r\n\t\tplate.on(mousedownEvent, function(e) {\r\n\t\t\tif ($(e.target).closest('.clockpicker-tick').length === 0)\r\n\t\t\t\tmousedown(e, true);\r\n\t\t});\r\n\r\n\t\t// Mousedown or touchstart\r\n\t\tfunction mousedown(e, space) {\r\n\t\t\tvar offset = plate.offset(),\r\n\t\t\t\t\tisTouch = /^touch/.test(e.type),\r\n\t\t\t\t\tx0 = offset.left + dialRadius,\r\n\t\t\t\t\ty0 = offset.top + dialRadius,\r\n\t\t\t\t\tdx = (isTouch ? e.originalEvent.touches[0] : e).pageX - x0,\r\n\t\t\t\t\tdy = (isTouch ? e.originalEvent.touches[0] : e).pageY - y0,\r\n\t\t\t\t\tz = Math.sqrt(dx * dx + dy * dy),\r\n\t\t\t\t\tmoved = false;\r\n\r\n\t\t\t// When clicking on minutes view space, check the mouse position\r\n\t\t\tif (space && (z < outerRadius - tickRadius || z > outerRadius + tickRadius))\r\n\t\t\t\treturn;\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\t// Set cursor style of body after 200ms\r\n\t\t\tvar movingTimer = setTimeout(function(){\r\n\t\t\t\tself.popover.addClass('clockpicker-moving');\r\n\t\t\t}, 200);\r\n\r\n\t\t\t// Place the canvas to top\r\n\t\t\tif (svgSupported)\r\n\t\t\t\tplate.append(self.canvas);\r\n\r\n\t\t\t// Clock\r\n\t\t\tself.setHand(dx, dy, !space, true);\r\n\r\n\t\t\t// Mousemove on document\r\n\t\t\t$doc.off(mousemoveEvent).on(mousemoveEvent, function(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tvar isTouch = /^touch/.test(e.type),\r\n\t\t\t\t\t\tx = (isTouch ? e.originalEvent.touches[0] : e).pageX - x0,\r\n\t\t\t\t\t\ty = (isTouch ? e.originalEvent.touches[0] : e).pageY - y0;\r\n\t\t\t\tif (! moved && x === dx && y === dy)\r\n\t\t\t\t\t// Clicking in chrome on windows will trigger a mousemove event\r\n\t\t\t\t\treturn;\r\n\t\t\t\tmoved = true;\r\n\t\t\t\tself.setHand(x, y, false, true);\r\n\t\t\t});\r\n\r\n\t\t\t// Mouseup on document\r\n\t\t\t$doc.off(mouseupEvent).on(mouseupEvent, function(e) {\r\n\t\t\t\t$doc.off(mouseupEvent);\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tvar isTouch = /^touch/.test(e.type),\r\n\t\t\t\t\t\tx = (isTouch ? e.originalEvent.changedTouches[0] : e).pageX - x0,\r\n\t\t\t\t\t\ty = (isTouch ? e.originalEvent.changedTouches[0] : e).pageY - y0;\r\n\t\t\t\tif ((space || moved) && x === dx && y === dy)\r\n self.setHand(x, y);\r\n \r\n let {hours, minutes, amOrPm, maxHours, minHours, maxMinutes, minMinutes} = self;\r\n \r\n if (amOrPm === 'PM') {\r\n if (minHours < 12)\r\n minHours = 0;\r\n if (minHours > 12)\r\n minHours -= 12;\r\n if (maxHours > 12)\r\n maxHours -= 12; \r\n }\r\n\r\n // dont toggleView if selected time out of scope\r\n if (self.isInvalidTimeScope) {\r\n self.isInvalidTimeScope = false;\r\n e.stopPropagation();\r\n }\r\n else if (self.currentView === 'hours')\r\n self.toggleView('minutes', duration / 2);\r\n else if (self.currentView != 'hours' && options.autoclose) {\r\n self.minutesView.addClass('clockpicker-dial-out');\r\n setTimeout(function(){\r\n self.done();\r\n }, duration / 2);\r\n self.currentHours = 0\r\n } \r\n\r\n\t\t\t\tplate.prepend(canvas);\r\n\r\n\t\t\t\t// Reset cursor style of body\r\n\t\t\t\tclearTimeout(movingTimer);\r\n\t\t\t\tself.popover.removeClass('clockpicker-moving');\r\n\r\n\t\t\t\t// Unbind mousemove event\r\n\t\t\t\t$doc.off(mousemoveEvent);\r\n });\r\n self.disableOutOfRangeElements();\r\n\t\t}\r\n\r\n\t\tif (svgSupported) {\r\n\t\t\t// Draw clock hands and others\r\n\t\t\tvar canvas = popover.find('.clockpicker-canvas'),\r\n\t\t\t\t\tsvg = createSvgElement('svg');\r\n\t\t\tsvg.setAttribute('class', 'clockpicker-svg');\r\n\t\t\tsvg.setAttribute('width', diameter);\r\n\t\t\tsvg.setAttribute('height', diameter);\r\n\t\t\tvar g = createSvgElement('g');\r\n\t\t\tg.setAttribute('transform', 'translate(' + dialRadius + ',' + dialRadius + ')');\r\n\t\t\tvar bearing = createSvgElement('circle');\r\n\t\t\tbearing.setAttribute('class', 'clockpicker-canvas-bearing');\r\n\t\t\tbearing.setAttribute('cx', 0);\r\n\t\t\tbearing.setAttribute('cy', 0);\r\n\t\t\tbearing.setAttribute('r', 2);\r\n\t\t\tvar hand = createSvgElement('line');\r\n\t\t\thand.setAttribute('x1', 0);\r\n hand.setAttribute('y1', 0);\r\n\t\t\tvar bg = createSvgElement('circle');\r\n\t\t\tbg.setAttribute('class', 'clockpicker-canvas-bg');\r\n\t\t\tbg.setAttribute('r', tickRadius);\r\n\t\t\tvar fg = createSvgElement('circle');\r\n\t\t\tfg.setAttribute('class', 'clockpicker-canvas-fg');\r\n\t\t\tfg.setAttribute('r', 5);\r\n\t\t\tg.appendChild(hand);\r\n\t\t\tg.appendChild(bg);\r\n\t\t\tg.appendChild(fg);\r\n\t\t\tg.appendChild(bearing);\r\n\t\t\tsvg.appendChild(g);\r\n\t\t\tcanvas.append(svg);\r\n\r\n\t\t\tthis.hand = hand;\r\n\t\t\tthis.bg = bg;\r\n\t\t\tthis.fg = fg;\r\n\t\t\tthis.bearing = bearing;\r\n\t\t\tthis.g = g;\r\n\t\t\tthis.canvas = canvas;\r\n\t\t}\r\n\r\n\t\traiseCallback(this.options.init);\r\n\t}\r\n\r\n\tfunction raiseCallback(callbackFunction) {\r\n\t\tif(callbackFunction && typeof callbackFunction === \"function\")\r\n\t\t\tcallbackFunction();\r\n\t}\r\n\r\n\t// Default options\r\n\tClockPicker.DEFAULTS = {\r\n\t\t'default': '', // default time, 'now' or '13:14' e.g.\r\n\t\tfromnow: 0, // set default time to * milliseconds from now (using with default = 'now')\r\n donetext: 'Done', // done button text\r\n cleartext: 'Clear', // clear button text\r\n\t\tautoclose: false, // auto close when minute is selected\r\n\t\tampmclickable: false, // set am/pm button on itself\r\n\t\tdarktheme: false,\t\t\t // set to dark theme\r\n\t\ttwelvehour: false, // change to 12 hour AM/PM clock from 24 hour\r\n vibrate: true, // vibrate the device when dragging clock hand\r\n hourstep: 1, // allow to multi increment the hour\r\n minutestep: 1, // allow to multi increment the minute\r\n\t\tampmSubmit: false, // allow submit with AM and PM buttons instead of the minute selection/picker\r\n\t\tcontainer: 'body', \t\t // set the container selector\r\n\t};\r\n\r\n\t// Show or hide popover\r\n\tClockPicker.prototype.toggle = function() {\r\n\t\tthis[this.isShown ? 'hide' : 'show']();\r\n\t};\r\n\r\n\t// Set popover position\r\n\tClockPicker.prototype.locate = function() {\r\n\t\tvar element = this.element,\r\n\t\t\t\tpopover = $(this.options.container).append(this.popover),\r\n\t\t\t\toffset = element.offset(),\r\n\t\t\t\twidth = element.outerWidth(),\r\n\t\t\t\theight = element.outerHeight(),\r\n\t\t\t\talign = this.options.align,\r\n\t\t\t\tself = this;\r\n\r\n\t\tthis.popover.show();\r\n };\r\n\r\n // The input can be changed by the user\r\n // So before we can use this.hours/this.minutes we must update it\r\n ClockPicker.prototype.parseInputValue = function(){\r\n var value = this.input.prop('value') || this.options['default'] || '';\r\n\r\n if (value === 'now') {\r\n value = new Date(+ new Date() + this.options.fromnow);\r\n }\r\n if (value instanceof Date) {\r\n value = value.getHours() + ':' + value.getMinutes();\r\n }\r\n\r\n value = value.split(':');\r\n\r\n // Minutes can have AM/PM that needs to be removed\r\n this.hours = + value[0] || 0;\r\n this.minutes = + (value[1] + '').replace(/\\D/g, '') || 0;\r\n\r\n this.hours = Math.round(this.hours / this.options.hourstep) * this.options.hourstep;\r\n this.minutes = Math.round(this.minutes / this.options.minutestep) * this.options.minutestep;\r\n\r\n if (this.options.twelvehour) {\r\n var period = (value[1] + '').replace(/\\d+/g, '').toLowerCase();\r\n this.amOrPm = this.hours > 12 || period === 'pm' ? 'PM' : 'AM';\r\n }\r\n };\r\n\r\n\t// Show popover\r\n\tClockPicker.prototype.show = function(e){\r\n\t\t// Not show again\r\n\t\tif (this.isShown) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\traiseCallback(this.options.beforeShow);\r\n\t\t$(':input').each(function() {\r\n\t\t\t$(this).attr('tabindex', -1);\r\n\t\t})\r\n\t\tvar self = this;\r\n\t\t// Initialize\r\n\t\tthis.input.blur();\r\n\t\tthis.popover.addClass('picker--opened');\r\n\t\tthis.input.addClass('picker__input picker__input--active');\r\n\t\t$(document.body).css('overflow', 'hidden');\r\n\t\tif (!this.isAppended) {\r\n\t\t\t// Append popover to body\r\n\t\t\tthis.popover.insertAfter(this.input);\r\n\t\t\tif(this.options.twelvehour) {\r\n\t\t\t\tthis.amOrPm = 'AM';\r\n\t\t\t\tif(!this.options.ampmclickable) {\r\n\t\t\t\t\tthis.amPmBlock.children('.pm-button').removeClass('active');\r\n\t\t\t\t\tthis.amPmBlock.children('.am-button').addClass('active');\r\n\t\t\t\t\tthis.spanAmPm.empty().append('PM');\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.spanAmPm.children('#click-am').addClass(\"text-primary\");\r\n\t\t\t\t\tthis.spanAmPm.children('#click-pm').removeClass(\"text-primary\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Reset position when resize\r\n\t\t\t$win.on('resize.clockpicker' + this.id, function() {\r\n\t\t\t\tif (self.isShown) {\r\n\t\t\t\t\tself.locate();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.isAppended = true;\r\n\t\t}\r\n\t\t// Get the time\r\n this.parseInputValue();\r\n\r\n if (this.hours === 0) {\r\n this.hours = this.minHours;\r\n }\r\n\r\n\t\tthis.spanHours.html(leadingZero(this.hours));\r\n this.spanMinutes.html(leadingZero(this.minutes));\r\n\r\n if (this.options.twelvehour) {\r\n this.spanAmPm.empty().append(this.amOrPm);\r\n }\r\n this.disableOutOfRangeElements();\r\n\t\t// Toggle to hours view\r\n\t\tthis.toggleView('hours');\r\n\t\t// Set position\r\n\t\tthis.locate();\r\n\t\tthis.isShown = true;\r\n\t\t// Hide when clicking or tabbing on any element except the clock and input\r\n\t\t$doc.on('click.clockpicker.' + this.id + ' focusin.clockpicker.' + this.id, debounce(function(e) {\r\n\t\t\tvar target = $(e.target);\r\n\t\t\tif (target.closest(self.popover.find('.picker__wrap')).length === 0 && target.closest(self.input).length === 0)\r\n\t\t\t\tself.hide();\r\n\t\t}, 100));\r\n\t\t// Hide when ESC is pressed\r\n\t\t$doc.on('keyup.clockpicker.' + this.id, debounce( function(e){\r\n\t\t\tif (e.keyCode === 27)\r\n\t\t\t\tself.hide();\r\n\t\t},100));\r\n\t\traiseCallback(this.options.afterShow);\r\n\t};\r\n\t// Hide popover\r\n\tClockPicker.prototype.hide = function() {\r\n\t\traiseCallback(this.options.beforeHide);\r\n\t\tthis.input.removeClass('picker__input picker__input--active');\r\n\t\tthis.popover.removeClass('picker--opened');\r\n\t\t$(document.body).css('overflow', 'visible');\r\n\t\tthis.isShown = false;\r\n\t\t$(':input').each(function(index) {\r\n\t\t\t$(this).attr('tabindex', index + 1);\r\n\t\t});\r\n\t\t// Unbinding events on document\r\n\t\t$doc.off('click.clockpicker.' + this.id + ' focusin.clockpicker.' + this.id);\r\n\t\t$doc.off('keyup.clockpicker.' + this.id);\r\n\t\tthis.popover.hide();\r\n\t\traiseCallback(this.options.afterHide);\r\n };\r\n // set invalid or disable some elements if needed\r\n ClockPicker.prototype.disableOutOfRangeElements = function() {\r\n let {hours, minutes, currentView, isTwelvehour, amOrPm, maxHours, minHours, maxMinutes, minMinutes} = this;\r\n const $hoursTick = $('.clockpicker-hours').children(),\r\n $minutesTick = $('.clockpicker-minutes').children(),\r\n $amBtn = $('.am-button'),\r\n $pmBtn = $('.pm-button'),\r\n $doneBtn = $('.done-button');\r\n\r\n // disable am/pm switch btn when time is out of allow range for am/pm period\r\n if (isTwelvehour && currentView === 'minutes') {\r\n $doneBtn.removeClass('grey-text disabled');\r\n if (amOrPm === 'AM' && !(hours + 12 <= maxHours))\r\n $pmBtn.addClass('disabled');\r\n else if (amOrPm === 'PM' && !(hours >= minHours))\r\n $amBtn.addClass('disabled');\r\n } \r\n\r\n // min and max hours is in 24h format, conver to 12h format if needed\r\n if (isTwelvehour && amOrPm === 'PM') {\r\n if (minHours < 12)\r\n minHours = 0;\r\n\r\n if (minHours > 12)\r\n minHours -= 12;\r\n \r\n if (maxHours > 12)\r\n maxHours -= 12; \r\n }\r\n\r\n // disable done btn when time is out of allow range \r\n if (isTwelvehour && currentView === 'hours') {\r\n $amBtn.removeClass('disabled');\r\n $pmBtn.removeClass('disabled');\r\n\r\n if (amOrPm === 'AM' && (!(hours >= minHours) || !(hours <= maxHours))) {\r\n $doneBtn.addClass('grey-text disabled');\r\n } else if (amOrPm === 'PM' && (!(hours >= minHours) || !(hours <= maxHours))) {\r\n $doneBtn.addClass('grey-text disabled');\r\n } else {\r\n $doneBtn.removeClass('grey-text disabled');\r\n }\r\n }\r\n\r\n // disable done btn when time is out of allow range \r\n if (currentView === 'minutes') {\r\n if ((hours === minHours && minutes < minMinutes) || (hours === maxHours && minutes > maxMinutes))\r\n $doneBtn.addClass('grey-text disabled');\r\n else\r\n $doneBtn.removeClass('grey-text disabled');\r\n }\r\n\r\n // set invalid if hours is out of allow range\r\n if (currentView === 'hours') {\r\n $hoursTick.each((index, el) => {\r\n let hours = el.innerHTML;\r\n \r\n if (this.isTwelvehour && hours == 12)\r\n hours = 0;\r\n \r\n if (hours > maxHours || hours < minHours)\r\n $(el).addClass('grey-text disabled');\r\n else\r\n $(el).removeClass('grey-text disabled');\r\n });\r\n }\r\n\r\n // set invalid if minutes is out of allow range\r\n if (currentView === 'minutes') {\r\n $minutesTick.each((index, el) => {\r\n if (minHours == hours && el.innerHTML < minMinutes)\r\n $(el).addClass('grey-text disabled');\r\n else if (maxHours == hours && el.innerHTML > maxMinutes)\r\n $(el).addClass('grey-text disabled');\r\n else\r\n $(el).removeClass('grey-text disabled');\r\n });\r\n }\r\n }\r\n\r\n\t// Toggle to hours or minutes view\r\n\tClockPicker.prototype.toggleView = function(view, delay) {\r\n\t\tvar raiseAfterHourSelect = false;\r\n\t\tif (view === 'minutes' && $(this.hoursView).css(\"visibility\") === \"visible\") {\r\n\t\t\traiseCallback(this.options.beforeHourSelect);\r\n\t\t\traiseAfterHourSelect = true;\r\n\t\t}\r\n\t\tvar isHours = view === 'hours',\r\n\t\t\t\tnextView = isHours ? this.hoursView : this.minutesView,\r\n\t\t\t\thideView = isHours ? this.minutesView : this.hoursView;\r\n this.currentView = view;\r\n \r\n\t\tthis.spanHours.toggleClass('text-primary', isHours);\r\n this.spanMinutes.toggleClass('text-primary', ! isHours);\r\n \r\n\t\t// Let's make transitions\r\n\t\thideView.addClass('clockpicker-dial-out');\r\n nextView.css('visibility', 'visible').removeClass('clockpicker-dial-out');\r\n \r\n\t\t// Reset clock hand\r\n\t\tthis.resetClock(delay);\r\n\r\n\t\t// After transitions ended\r\n\t\tclearTimeout(this.toggleViewTimer);\r\n\t\tthis.toggleViewTimer = setTimeout(function() {\r\n\t\t\thideView.css('visibility', 'hidden');\r\n\t\t}, duration);\r\n\r\n this.disableOutOfRangeElements();\r\n\r\n\t\tif (raiseAfterHourSelect)\r\n\t\t\traiseCallback(this.options.afterHourSelect);\r\n\t};\r\n\r\n\t// Reset clock hand\r\n\tClockPicker.prototype.resetClock = function(delay) {\r\n\t\tvar view = this.currentView,\r\n\t\t\t\tvalue = this[view],\r\n\t\t\t\tisHours = view === 'hours',\r\n\t\t\t\tunit = Math.PI / (isHours ? 6 : 30),\r\n\t\t\t\tradian = value * unit,\r\n\t\t\t\tradius = isHours && value > 0 && value < 13 ? innerRadius : outerRadius,\r\n\t\t\t\tx = Math.sin(radian) * radius,\r\n\t\t\t\ty = - Math.cos(radian) * radius,\r\n\t\t\t\tself = this;\r\n\r\n\t\tif(svgSupported && delay) {\r\n\t\t\tself.canvas.addClass('clockpicker-canvas-out');\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tself.canvas.removeClass('clockpicker-canvas-out');\r\n\t\t\t\tself.setHand(x, y);\r\n\t\t\t}, delay);\r\n\t\t} else\r\n\t\t\tthis.setHand(x, y);\r\n\t};\r\n\r\n\t// Set clock hand to (x, y)\r\n\tClockPicker.prototype.setHand = function(x, y, roundBy5, dragging) {\r\n\t\tvar radian = Math.atan2(x, - y),\r\n\t\t\t\tisHours = this.currentView === 'hours',\r\n\t\t\t\tz = Math.sqrt(x * x + y * y),\r\n\t\t\t\toptions = this.options,\r\n\t\t\t\tinner = isHours && z < (outerRadius + innerRadius) / 2,\r\n\t\t\t\tradius = inner ? innerRadius : outerRadius,\r\n\t\t\t\tunit,\r\n value;\r\n\r\n // Calculate the unit\r\n if (isHours) {\r\n unit = options.hourstep / 6 * Math.PI\r\n } else {\r\n unit = options.minutestep / 30 * Math.PI\r\n }\r\n\r\n\t\tif (options.twelvehour)\r\n\t\t\tradius = outerRadius;\r\n\r\n\t\t// Radian should in range [0, 2PI]\r\n\t\tif (radian < 0)\r\n\t\t\tradian = Math.PI * 2 + radian;\r\n\r\n\t\t// Get the round value\r\n value = Math.round(radian / unit);\r\n\r\n\t\t// Get the round radian\r\n\t\tradian = value * unit;\r\n\t\t// Correct the hours or minutes\r\n if (isHours) {\r\n value *= options.hourstep;\r\n if (! options.twelvehour && (!inner)==(value>0)) {\r\n value += 12;\r\n }\r\n if (options.twelvehour && value === 0) {\r\n value = 12;\r\n }\r\n if (value === 24) {\r\n value = 0;\r\n\t\t\t}\r\n } else {\r\n value *= options.minutestep;\r\n if (value === 60) {\r\n value = 0;\r\n }\r\n }\r\n // disable action when out of allow range\r\n let { minHours, maxHours, minMinutes, maxMinutes, amOrPm } = this;\r\n\r\n if (isHours) {\r\n let hours = value; \r\n\r\n if (this.amOrPm === 'PM') {\r\n if (minHours < 12)\r\n minHours = 0;\r\n if (minHours > 12)\r\n minHours -= 12;\r\n if (maxHours > 12)\r\n maxHours -= 12;\r\n }\r\n \r\n if (this.isTwelvehour && hours == 12)\r\n hours = 0;\r\n\r\n if (hours < minHours || hours > maxHours){\r\n this.isInvalidTimeScope = true;\r\n return;\r\n }\r\n\r\n if (this.isTwelvehour && hours === 12) {\r\n this.isInvalidTimeScope = true;\r\n return;\r\n }\r\n } else {\r\n let { hours } = this;\r\n\r\n if (amOrPm === 'PM')\r\n hours += 12;\r\n\r\n if ((hours == minHours && value < minMinutes) || (hours == maxHours && value > maxMinutes)) {\r\n this.isInvalidTimeScope = true;\r\n return;\r\n }\r\n\t\t}\r\n\r\n\t\tif (isHours)\r\n\t\t\tthis.fg.setAttribute('class', 'clockpicker-canvas-fg');\r\n\t\telse {\r\n\t\t\tif (value % 5 == 0)\r\n\t\t\t\tthis.fg.setAttribute('class', 'clockpicker-canvas-fg');\r\n\t\t\telse\r\n\t\t\t\tthis.fg.setAttribute('class', 'clockpicker-canvas-fg active');\r\n\t\t}\r\n\r\n\t\t// Once hours or minutes changed, vibrate the device\r\n\t\tif (this[this.currentView] !== value)\r\n\t\t\tif (vibrate && this.options.vibrate)\r\n\t\t\t\t// Do not vibrate too frequently\r\n\t\t\t\tif (! this.vibrateTimer) {\r\n\t\t\t\t\tnavigator[vibrate](10);\r\n\t\t\t\t\tthis.vibrateTimer = setTimeout($.proxy(function(){\r\n\t\t\t\t\t\tthis.vibrateTimer = null;\r\n\t\t\t\t\t}, this), 100);\r\n }\r\n\t\tthis[this.currentView] = value;\r\n\t\tthis[isHours ? 'spanHours' : 'spanMinutes'].html(leadingZero(value));\r\n\r\n\t\t// If svg is not supported, just add an active class to the tick\r\n\t\tif (! svgSupported) {\r\n\t\t\tthis[isHours ? 'hoursView' : 'minutesView'].find('.clockpicker-tick').each(function(){\r\n\t\t\t\tvar tick = $(this);\r\n\t\t\t\ttick.toggleClass('active', value === + tick.html());\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Place clock hand at the top when dragging\r\n\t\tif (dragging || (! isHours && value % 5)) {\r\n\t\t\tthis.g.insertBefore(this.hand, this.bearing);\r\n\t\t\tthis.g.insertBefore(this.bg, this.fg);\r\n\t\t\tthis.bg.setAttribute('class', 'clockpicker-canvas-bg clockpicker-canvas-bg-trans');\r\n\t\t} else {\r\n\t\t\t// Or place it at the bottom\r\n\t\t\tthis.g.insertBefore(this.hand, this.bg);\r\n\t\t\tthis.g.insertBefore(this.fg, this.bg);\r\n\t\t\tthis.bg.setAttribute('class', 'clockpicker-canvas-bg');\r\n\t\t}\r\n\r\n\t\t// Set clock hand and others' position\r\n var cx = Math.sin(radian) * radius,\r\n cy = - Math.cos(radian) * radius;\r\n this.hand.setAttribute('x2', cx);\r\n this.hand.setAttribute('y2', cy);\r\n this.bg.setAttribute('cx', cx);\r\n this.bg.setAttribute('cy', cy);\r\n this.fg.setAttribute('cx', cx);\r\n this.fg.setAttribute('cy', cy);\r\n };\r\n\r\n \t// Clear clock text\r\n ClockPicker.prototype.clearInput = function() {\r\n\t\tthis.input.val('');\r\n\t\tthis.hide();\r\n\r\n\t\tif(this.options.afterDone && typeof this.options.afterDone === 'function')\r\n\t\t\tthis.options.afterDone(this.input, null);\r\n\t};\r\n\r\n // Allow user to get time as Date object\r\n ClockPicker.prototype.getTime = function(callback) {\r\n this.parseInputValue();\r\n\r\n var hours = this.hours;\r\n if (this.options.twelvehour && hours < 12 && this.amOrPm === 'PM') {\r\n hours += 12;\r\n }\r\n\r\n var selectedTime = new Date();\r\n selectedTime.setMinutes(this.minutes)\r\n selectedTime.setHours(hours);\r\n selectedTime.setSeconds(0);\r\n\r\n return callback && callback.apply(this.element, selectedTime) || selectedTime;\r\n }\r\n\r\n\t// Hours and minutes are selected\r\n\tClockPicker.prototype.done = function() {\r\n\t\traiseCallback(this.options.beforeDone);\r\n\t\tthis.hide();\r\n\t\tthis.label.addClass('active');\r\n\r\n\t\tvar last = this.input.prop('value'),\r\n outHours = this.hours,\r\n value = ':' + leadingZero(this.minutes);\r\n\r\n if (this.isHTML5 && this.options.twelvehour) {\r\n if (this.hours < 12 && this.amOrPm === 'PM') {\r\n outHours += 12;\r\n }\r\n if (this.hours === 12 && this.amOrPm === 'AM') {\r\n outHours = 0;\r\n }\r\n }\r\n\r\n value = leadingZero(outHours) + value;\r\n\r\n if (!this.isHTML5 && this.options.twelvehour) {\r\n value = value + this.amOrPm;\r\n }\r\n\r\n\t\tthis.input.prop('value', value);\r\n\t\tif(value !== last) {\r\n\t\t\tthis.input.trigger('change');\r\n\t\t\tif(!this.isInput)\r\n\t\t\t\tthis.element.trigger('change');\r\n\t\t}\r\n\r\n\t\tif(this.options.autoclose)\r\n\t\t\tthis.input.trigger('blur');\r\n\r\n\t\traiseCallback(this.options.afterDone);\r\n\t};\r\n\r\n\t// Remove clockpicker from input\r\n\tClockPicker.prototype.remove = function() {\r\n\t\tthis.element.removeData('clockpicker');\r\n\t\tthis.input.off('focus.clockpicker click.clockpicker');\r\n\t\tif (this.isShown)\r\n\t\t\tthis.hide();\r\n\t\tif (this.isAppended) {\r\n\t\t\t$win.off('resize.clockpicker' + this.id);\r\n\t\t\tthis.popover.remove();\r\n\t\t}\r\n\t};\r\n\r\n\t// Extends $.fn.clockpicker\r\n\t$.fn.pickatime = function(option){\r\n\t\tvar args = Array.prototype.slice.call(arguments, 1);\r\n\t\tfunction handleClockPickerRequest(){\r\n\t\t\tvar $this = $(this),\r\n\t\t\t\t\tdata = $this.data('clockpicker');\r\n\t\t\tif (!data) {\r\n\t\t\t\tvar options = $.extend({}, ClockPicker.DEFAULTS, $this.data(), typeof option == 'object' && option);\r\n\t\t\t\t$this.data('clockpicker', new ClockPicker($this, options));\r\n\t\t\t} else {\r\n\t\t\t\t// Manual operations. show, hide, remove, e.g.\r\n\t\t\t\tif (typeof data[option] === 'function')\r\n\t\t\t\t\tdata[option].apply(data, args);\r\n\t\t\t}\r\n }\r\n // If we explicitly do a call on a single element then we can return the value (if needed)\r\n // This allows us, for example, to return the value of getTime\r\n if (this.length == 1) {\r\n var returnValue = handleClockPickerRequest.apply(this[0]);\r\n\r\n // If we do not have any return value then return the object itself so you can chain\r\n return returnValue !== undefined ? returnValue : this;\r\n }\r\n\r\n // If we do have a list then we do not care about return values\r\n return this.each(handleClockPickerRequest);\r\n\t};\r\n\t\r\n\t$('.time-picker-opener').on('click', e => {\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\r\n\t\tconst openElementData = e.target.dataset.open;\r\n\t\tconst $picker = $(`#${openElementData}`).pickatime('picker');\r\n\t\t$picker.data('clockpicker').show();\r\n\t});\r\n}());\r\n","jQuery(($) => {\r\n\r\n $.fn.dateTimePicker = function(delimiter = ', ') {\r\n\r\n const $this = $(this)[0];\r\n\r\n let result = $(`.picker-opener[data-open='${$this.dataset.open}']`);\r\n const $timePicker = $(`.timepicker[data-open='${$this.dataset.open}']`);\r\n const $datePicker = $(`#${$this.dataset.open}`);\r\n\r\n $datePicker.pickadate({\r\n onClose: function () {\r\n\r\n const input = $timePicker.pickatime({\r\n afterHide: () => {\r\n $timePicker.trigger(\"change\");\r\n }\r\n });\r\n const picker = input.pickatime('picker');\r\n picker.data('clockpicker').show();\r\n },\r\n format: 'yyyy/mm/dd',\r\n formatSubmit: 'yyyy/mm/dd',\r\n });\r\n\r\n $datePicker.on('change', () => {\r\n let timeValue = $timePicker.val();\r\n let dateValue = $datePicker.val();\r\n result[0].value = `${dateValue}${timeValue !=='' && dateValue !=='' ? delimiter : ''}${timeValue}`;\r\n });\r\n\r\n $timePicker.on('change', () => {\r\n let timeValue = $timePicker.val();\r\n let dateValue = $datePicker.val();\r\n result[0].value = `${dateValue}${timeValue !=='' && dateValue !=='' ? delimiter : ''}${timeValue}`;\r\n });\r\n\r\n };\r\n\r\n});\r\n"],"sourceRoot":""}